Hydrogen Epsilon-Prime, extracted from the Epsilon-Raw and an adjacent context for continuum

Since Google is no longer our friend[1], thus finding the things we are looking for has become harder and harder[2], I decided to assemble a few things that help me tame JSol’Ex.

JSol’Ex Repo: https://github.com/melix/astro4j

JSol’Ex downloads: https://melix.github.io/astro4j/latest/en/jsolex.html

Help/Docs (at ImageMath): https://melix.github.io/astro4j/latest/fr/jsolex.html#imagemath

Extracting the Hydrogen Epsilon line, like it was He I D3, simple version (where, relative to CaH, epsilon is at +25px)


[outputs]
epsilon = min(range(23,27,1))
kontinuum2 = avg(range(14,18,1))
delta2 = fix_banding(epsilon – kontinuum2, 100, 50)
prime_stretched2 = linear_stretch(epsilon * delta2 + delta2)
prime_rot2 = rotate_rad(prime_stretched2, angleP)

A verbose and more complex version of the epsilon script:


So a little bit more context


epsilonLineIsAtPixelShift = 25
epsilonContext = 2

kontinuumLineIsAtPixelShift = 0.64 * epsilonLineIsAtPixelShift
kontinuumContext = 2

epsilonRangeLeft = epsilonLineIsAtPixelShift – epsilonContext
epsilonRangeRight = epsilonLineIsAtPixelShift + epsilonContext

kontinuumRangeLeft = kontinuumLineIsAtPixelShift – kontinuumContext
kontinuumRangeRight = kontinuumLineIsAtPixelShift + kontinuumContext

[outputs]
epsilon = min(range(epsilonRangeLeft,epsilonRangeRight,1))
kontinuum2 = avg(range(kontinuumRangeLeft,kontinuumRangeRight,1))
delta2 = fix_banding(epsilon – kontinuum2, 100, 50)
epsilonPrime = epsilon * delta2 + delta2
epsilonPrimeLinear = linear_stretch(epsilonPrime)
epsilonPrimeAsinh = asinh_stretch(epsilonPrimeLinear, blackPoint, 100)
epsilonPrimeLinearRotated = rotate_rad(epsilonPrimeLinear, angleP)
epsilonPrimeAsinhRotated = rotate_rad(epsilonPrimeAsinh, angleP)
epsilonPrimeLinearAsinhAvgRotated = avg(epsilonPrimeAsinhRotated, epsilonPrimeLinearRotated)
kontinuum2LinearRotated = rotate_rad(linear_stretch(kontinuum2), angleP)

Then a Magnesium script I cooked up, with and without banding correction, as a blend of the two could be more useful than the individual frames.


[outputs]
rawMg = min(range(-1, 1))
rawMgB = fix_banding(rawMg, 100, 50)
rawMgBL = linear_stretch(rawMgB)
rawMgBLRot = rotate_rad(rawMgBL, angleP)

rawMgL = linear_stretch(rawMg)
rawMgLRot = rotate_rad(rawMgL, angleP)

Some Helium jokes


He_offset = -142.8
He_context = 1
He_step = 1

kontinuum_offset = -10
kontinuum_context = 3
kontinuum_step = 1

kontL = kontinuum_offset – kontinuum_context
kontR = kontinuum_offset + kontinuum_context

HeL = He_offset – He_context
HeR = He_offset + He_context

[outputs]

HeRaw = min(range(HeL,HeR,He_step))
kontinuum = avg(range(kontL,kontR,kontinuum_step))
kontinuumLinearRotated = rotate_rad(linear_stretch(kontinuum), angleP)
delta2 = fix_banding(HeRaw – kontinuum, 100, 50)
HeLog = linear_stretch(log(HeRaw, 2))
HeLogHeRaw = linear_stretch(pow(HeLog + HeRaw, 1.2))
HeMul = linear_stretch(HeLogHeRaw * delta2)
HeMin = min(HeLogHeRaw, HeMul)
HePrime = linear_stretch(HeLog + HeMin + linear_stretch(pow(HeMin,4)) + linear_stretch(pow(HeRaw,2)) + HeLogHeRaw)
HePrimeRot = rotate_rad(HePrime, angleP)
HePrimeRotP = linear_stretch(pow(HePrimeRot, 1.1))
HePrimeRotFinal = linear_stretch(avg(HePrimeRotP, HePrimeRot))

A more complex helium „joke”, of which the „something3” is rather pleasing.

He_offset = -142.8
He_context = 1
He_step = 1

kontinuum_offset = He_offset + 9
kontinuum_context = 3
kontinuum_step = 1

kontL = kontinuum_offset – kontinuum_context
kontR = kontinuum_offset + kontinuum_context

HeL = He_offset – He_context
HeR = He_offset + He_context

fixBanding1 = 100
fixBanding2 = 50

lineZero = min(autocrop2(range(-1, 1)))
lineZeroB = fix_banding(lineZero, fixBanding1, fixBanding2)
lineZeroBL = linear_stretch(lineZeroB)
lineZeroL = linear_stretch(lineZero)
lineZeroBLSQ = linear_stretch(pow(lineZeroB, 2))

[outputs]

HeRaw = min(autocrop2(range(HeL,HeR,He_step)))
HeRawRot = rotate_rad(linear_stretch(HeRaw), angleP)
kontinuum = avg(autocrop2(range(kontL,kontR,kontinuum_step)))
kontinuumLinearRotated = rotate_rad(linear_stretch(kontinuum), angleP)
delta2 = fix_banding(HeRaw – kontinuum, fixBanding1, fixBanding2)
HeLog = linear_stretch(log(HeRaw, 2))
HeLogRot = rotate_rad(HeLog, angleP)
HeLogHeRaw = linear_stretch(pow(HeLog + HeRaw, 1.2))
HeLogHeRawRot = rotate_rad(HeLogHeRaw, angleP)
HeMul = linear_stretch(HeLogHeRaw * pow(delta2, 1.5))
HeMin = min(HeLogHeRaw, HeMul)
HePrime = linear_stretch(HeLog + HeMin + linear_stretch(pow(HeMin,4)) + linear_stretch(pow(HeRaw,2)) + HeLogHeRaw)
HePrimeRot = rotate_rad(HePrime, angleP)
HePrimeRotP = linear_stretch(pow(HePrimeRot, 1.1))
HePrimeRotFinalPow1 = linear_stretch(avg(HePrimeRotP, HePrimeRot))
HePrimeRotFinalPow2 = linear_stretch(pow(avg(HePrimeRotP, HePrimeRot), 2))
HePrimeRotFinalPow3 = linear_stretch(pow(avg(HePrimeRotP, HePrimeRot), 3))
HePrimeRotFinalPow3PlusLog = linear_stretch(HeLogRot + HePrimeRotFinalPow3)
HePrimeRFP3PlusLog = max(HePrimeRotFinalPow1, HePrimeRotFinalPow3PlusLog)
HePrimeRFP3PlusLogSq = linear_stretch(pow(HePrimeRFP3PlusLog, 1.4))

 

lineZeroLRot = rotate_rad(lineZeroL, angleP)
lineZeroBLRot = rotate_rad(lineZeroBL, angleP)
lineZeroBLRotSQ = rotate_rad(lineZeroBLSQ, angleP)

delta2Rot = rotate_rad(linear_stretch(delta2), angleP)
HeMulRot = rotate_rad(HeMul, angleP)
HeMulNRot = linear_stretch(HeRawRot * HeMulRot)
HePrimeRFP3PlusLogSqPlusHeMulNRot = linear_stretch(HeRawRot * HeMulRot + HePrimeRFP3PlusLogSq)

HeSomething = linear_stretch(HeLogHeRawRot + HeMulNRot – kontinuumLinearRotated/1.5)
HeSomething2 = linear_stretch(HeSomething*2 + HePrimeRotP + HeLogRot/1.5 – rotate_rad(kontinuum/8, angleP))
HeSomething3 = avg(HeSomething, HeSomething2)

 

 

[1],[2]

https://www.reddit.com/r/google/comments/si5itm/what_happened_to_google_search_it_has_become/
https://en.wikipedia.org/wiki/Enshittification

and no, I am not going to use some Microsoft abomination masquerading as a search engine.