I wrote a new He I D3 script, now that I understand a bit better the quirks of the scripting.
# Script to create a pleasing He I D3 Sun, # from enhancing the weak signal of helium # by applying continuum subtraction etc. # The author fo this script checked these results # against the He I 10830 raw reconstructions, # noting that even imaging, with a CMOS, at 1100nm # is rather challenging, and the match between # this He I D3 concept, and the raw reconstruction # of He I 10830 was found to be decent. # # Adjust the values below # The distance between Na I D2 and He I D3, # in a SHG700, at 2um pixel size, is about -142.8 # Pure coincidence, this is also the distance, # in a stock Sol'Ex, between Fe I 5884 and # He I D3, at 2um pixel size He_offset_px = -142.8 kontinuum_ofHe_offset_px = He_offset_px + 9 # For most spectroheliographs, the values below # need no adjustment He_context_px = 1 He_step_px = 1 kontinuum_ofHe_context_px = 4 kontinuum_ofHe_step_px = 1 kontL = kontinuum_ofHe_offset_px - kontinuum_ofHe_context_px kontR = kontinuum_ofHe_offset_px + kontinuum_ofHe_context_px HeL = He_offset_px - He_context_px HeR = He_offset_px + He_context_px 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)) HeRaw1 = min(autocrop2(range(HeL,HeR,He_step_px))) HeProm1 = max(autocrop2(range(HeL-1,HeR+1,He_step_px))) kontinuum_ofHe = avg(autocrop2(range(kontL,kontR, kontinuum_ofHe_step_px))) deltaHe2 = fix_banding(HeRaw1 - kontinuum_ofHe, fixBanding1, fixBanding2) divida = fix_banding(HeProm1 / kontinuum_ofHe, fixBanding1, fixBanding2) HeLog = pow(log(log(HeRaw1, 2), 2), 8) dividaBlur = blur(blur(blur(blur(blur(divida))))) dividaBlurM = dividaBlur * HeLog - kontinuum_ofHe*0.9 deltaHe2Blur = blur(blur(blur(deltaHe2))) HeLogMulDelta1 = HeLog * pow(deltaHe2Blur, 4) masterOutput = HeRaw1 +9 * linear_stretch(HeRaw1) -8 * linear_stretch(pow(kontinuum_ofHe, 1/2)) -1 * linear_stretch(pow(kontinuum_ofHe, 3)) +25 * linear_stretch(HeRaw1*pow(deltaHe2Blur, 3)) +15 * linear_stretch(HeRaw1*pow(deltaHe2Blur, 2)) +20 * linear_stretch(HeLogMulDelta1) +30 * linear_stretch(dividaBlurM) dividaRot = rotate_rad(linear_stretch(divida), angleP) dividaBlurM1 = linear_stretch(dividaBlurM) HeRawLog = HeLog HeLogMulDelta = HeLogMulDelta1 [outputs] HeRawRot = rotate_rad(linear_stretch(HeRaw1), angleP) kontinuumOfHeRot = rotate_rad(linear_stretch(kontinuum_ofHe), angleP) deltaHe2Rot = rotate_rad(linear_stretch(deltaHe2), angleP) HeSomething3 = rotate_rad(linear_stretch(masterOutput), angleP)
