Mar 28 2026 APP 2.0.0-beta40 will be released in 7 days.
It did take a long time to have the work finished on this and it will have a major performance boost of 30-50% over 2.0.0-beta39 from calibration to integration. We extensively optimized many critical parts of APP. All has been tested to guarantee correct optimizations. Drizzle and image resampling is much faster for instance, those modules have been completely rewritten. Much less memory usage. LNC 2.0 will be released which works much better and faster than LNC in it's current state. And more, all will be added to the release notes in the coming weeks...
Update on the 2.0.0 release & the full manual
We are getting close to the 2.0.0 stable release and the full manual. The manual will soon become available on the website and also in PDF format. Both versions will be identical and once released, will start to follow the APP release cycle and thus will stay up-to-date to the latest APP version.
Once 2.0.0 is released, the price for APP will increase. Owner's license holders will not need to pay an upgrade fee to use 2.0.0, neither do Renter's license holders.
Hi,
I shoot a ton of short exposures as I shoot with an unguided Alt/Az Goto Dobsonian. I'm happy with the results APP gives me, but it made me wonder: Since my profile is so unique (me doing 1800 * 6 seconds versus normal people shooting 60 * 180 seconds) that perhaps the defaults in APP are not tuned for me. Perhaps there are some fairly obvious, or at least likely, tweaks I could make to some of the settings that would generate a higher quality stack.
So if you, Mabula, had 1800 * 6 second subs (shot with a 12" F3.7 Dob with an ASI2400MC camera) what would you change in the settings for broadband, and also for using a dual narrowband such as the Optolong L-Ultimate.
BTW, I did exactly that, 1800 * 6 seconds with the Optolong L-Utimate on this unguided Goto Alt/Az Dob and stacked in APP. The target was the Crescent Nebula, and APP did a wonderful job (below), so I'm very happy with APP. But who knows, perhaps I'm missing out on something even better!
Cheers!
Steven
Hi Steven @readyjetty,
Wow, great result ! Nice work 🙂
The first thing that comes to mind is to try not having APP use the internal automatic integration settings.
Set the integrate option in 6) integrate not to automatic, but to average. Then I think that by increasing the kappa high and low values for outlier rejection, some improvements can be made.
Check the stacks that you have now for their FITS metadata, APP has recorded those settings for how it integrated the files there.
On the other hand, also check the noise reduction values, especially the realized versus ideal noise reduction ratio. This should be very close to 1.0 in your case with so many images. If it is 1.0 any tweaking of integration settings will not give visible better results I would think...
If you are using Drizzle, then more tweaking with the drizzle settings, especially lowering drizzle droplet size, can lead to better results in terms of sharpness 😉 with still acceptable noise levels.
Mabula
Thanks for thinking about this. Here is some of the FITS header for the stacked output. It looks like it did use "average" and you can see the Kappa Low and high. What parameters would you change based on this and what values in the parameters (ex: New Kappa Low and Kappa High) should I try?
FITS HDUs: 1
HDU1 - SIMPLE = T / Java FITS: Thu Jun 08 08:45:59 PDT 2023
HDU1 - BITPIX = -32 / bits per data value
HDU1 - NAXIS = 3 / number of axes
HDU1 - NAXIS1 = 6064 / size of the n'th axis
HDU1 - NAXIS2 = 4034 / size of the n'th axis
HDU1 - NAXIS3 = 3 / size of the n'th axis
HDU1 - EXTEND = T / Extensions are permitted
HDU1 - BSCALE = 1.0 / scale factor
HDU1 - BZERO = 0.E0 / no offset
HDU1 - DATE = '2023-06-09T00:44:25' / creation date of Integration
HDU1 - SOFTWARE= 'Astro Pixel Processor by Aries Productions' / software
HDU1 - VERSION = '2.0.0-beta17' / Astro Pixel Processor version
HDU1 - INTEGRAT= 'Integration' / integration of light frames
HDU1 - CFAIMAGE= 'no ' / Color Filter Array pattern
HDU1 - NOTE-1 = 'INTEGRATION METADATA'
HDU1 - EXPTIME = 13780.0 / exposure time (s)
HDU1 - NUMFRAME= 1730 / number of frames used in this integration
HDU1 - BG-1 = ' 2.6544E-03' / background estimate of channel 1
HDU1 - BG-2 = ' 2.6434E-03' / background estimate of channel 2
HDU1 - BG-3 = ' 2.6612E-03' / background estimate of channel 3
HDU1 - SCALE-1 = ' 7.5555E-05' / dispersion of channel 1
HDU1 - SCALE-2 = ' 3.2553E-05' / dispersion of channel 2
HDU1 - SCALE-3 = ' 3.4629E-05' / dispersion of channel 3
HDU1 - NOISE-1 = ' 1.0906E-05' / noise level of channel 1
HDU1 - NOISE-2 = ' 1.1648E-05' / noise level of channel 2
HDU1 - NOISE-3 = ' 1.2300E-05' / noise level of channel 3
HDU1 - SNR-1 = ' 1.2350E+01' / Signal to Noise Ratio of channel 1
HDU1 - SNR-2 = ' 7.0802E+00' / Signal to Noise Ratio of channel 2
HDU1 - SNR-3 = ' 8.4603E+00' / Signal to Noise Ratio of channel 3
HDU1 - NOTE-2 = 'NR = Noise Reduction'
HDU1 - NOTE-3 = 'medNR = noise in median frame / noise in integration'
HDU1 - NOTE-4 = 'refNR = noise in reference frame / noise in integration'
HDU1 - NOTE-5 = 'ideal noise reduction = square root of number of frames'
HDU1 - NOTE-6 = 'the realized/ideal noise reduction ratio should approach 1 ideally'
HDU1 - NOTE-7 = 'the effective noise reduction has a correction for'
HDU1 - NOTE-8 = 'dispersion change between the frame and the integration'
HDU1 - NOTE-9 = 'because dispersion and noise are correlated'
HDU1 - MEDNR-1 = ' 3.6823E+01' / median noise reduction, channel 1
HDU1 - MEDNR-2 = ' 3.5562E+01' / median noise reduction, channel 2
HDU1 - MEDNR-3 = ' 3.7290E+01' / median noise reduction, channel 3
HDU1 - REFNR-1 = ' 3.6406E+01' / reference noise reduction, channel 1
HDU1 - REFNR-2 = ' 3.5637E+01' / reference noise reduction, channel 2
HDU1 - REFNR-3 = ' 3.8217E+01' / reference noise reduction, channel 3
HDU1 - IDNR-1 = ' 4.1593E+01' / ideal noise reduction, channel 1
HDU1 - IDNR-2 = ' 4.1593E+01' / ideal noise reduction, channel 2
HDU1 - IDNR-3 = ' 4.1593E+01' / ideal noise reduction, channel 3
HDU1 - RATNR-1 = ' 8.8532E-01' / realized/ideal noise reduction ratio, channel 1
HDU1 - RATNR-2 = ' 8.5499E-01' / realized/ideal noise reduction ratio, channel 2
HDU1 - RATNR-3 = ' 8.9655E-01' / realized/ideal noise reduction ratio, channel 3
HDU1 - MEDENR-1= ' 4.5167E+00' / effective median noise reduction, channel 1
HDU1 - MEDENR-2= ' 2.1283E+00' / effective median noise reduction, channel 2
HDU1 - MEDENR-3= ' 2.2250E+00' / effective median noise reduction, channel 3
HDU1 - REFENR-1= ' 4.4259E+00' / effective reference noise reduction, channel 1
HDU1 - REFENR-2= ' 2.1444E+00' / effective reference noise reduction, channel 2
HDU1 - REFENR-3= ' 2.3291E+00' / effective reference noise reduction, channel 3
HDU1 - NORMMODE= 'regular ' / normalization mode
HDU1 - NORMMETH= 'multiply-scale' / normalization method
HDU1 - NORMSCAL= 'BWMV ' / normalization scale/dispersion calculation
HDU1 - NORM-BGN= 'neutralize bg' / normalization background neutralization
HDU1 - NOTE-10 = 'REFERENC tag: used reference frame'
HDU1 - REFERENC= '2.88_2023-06-06_01-17-14_300_104_8.00s_0801-cal.fits'
HDU1 - COMPMODE= 'reference' / composition mode
HDU1 - REGMODE = 'normal ' / registration mode
HDU1 - REGMODEL= 'projective' / registration model
HDU1 - OPT-DC = 'disabled' / optical distortion correction
HDU1 - WEIGHTS = 'quality ' / integration weights
HDU1 - INT-METH= 'average ' / integration method
HDU1 - OUTL-REJ= 'adaptive rejection' / outlier rejection filter
HDU1 - OUTL-LN = 'LN rejection' / outlier rejection with local normalization
HDU1 - OUTL-DP = '173 ' / outlier rejection diffraction protection
HDU1 - OUTL-KL = 8.E0 / outlier rejection kappa low
HDU1 - OUTL-KH = 4.E0 / outlier rejection kappa high
HDU1 - INT-MODE= 'interpolation' / integration mode
HDU1 - INTERPOL= 'lanczos-3-NUOS' / data interpolation & resampling filter
HDU1 - INTSCALE= 1.E0 / integrate scale
HDU1 - NOTE-11 = 'PROJECT tag: projection type'
HDU1 - PROJECT = 'rectilinearProjection'
HDU1 - MBBLEND = 'MBB50 % ' / multi-band blending
HDU1 - LNC-DEG = 'noLNC ' / Local Normalization Correction not applied
HDU1 - AD-PED = 1.75E-3 / adaptive pedestal from data calibration
HDU1 - END
Hi Steven @readyjetty,
Excellent, thanks for sharing the fits header.
The key here is looking at the
HDU1 - RATNR-1 = ' 8.8532E-01' / realized/ideal noise reduction ratio, channel 1
HDU1 - RATNR-2 = ' 8.5499E-01' / realized/ideal noise reduction ratio, channel 2
HDU1 - RATNR-3 = ' 8.9655E-01' / realized/ideal noise reduction ratio, channel 3
values. They are not even 0.9, ideally it is 1.0. So it seems that we might be able to improve 10% still in terms of noise reduction.
If your data would be well dithered ( > 5 pixels dither steps) I would expect the ratio to be 1.0 for so many frames. But I guess you did not dither or very little with your 6sec exposures ALT/AZ setup? If you did not dither well then this is the main reason for noise reduction lower than 0.9 here.
If there is a very big difference between your frames in terms of quality, then it might also explain that noise reduction is not close to 1.0.
Any way, please try to run with:
HDU1 - OUTL-REJ= 'adaptive rejection' / outlier rejection filter
HDU1 - OUTL-LN = 'LN rejection' / outlier rejection with local normalization
HDU1 - OUTL-DP = '20 ' / outlier rejection diffraction protection
HDU1 - OUTL-KL = 10.E0 / outlier rejection kappa low
HDU1 - OUTL-KH = 5.E0 / outlier rejection kappa high
To see if that improves this noise reduction ratio value 😉 If it does not, I think your result is already very good and little can be tweaked to improve it.
Normalization can be an influence here, but I think using a different normalization method will not change things, precisely because you shoot so many short exposures.
Mabula
@mabula-admin Thanks for taking a look at it, I’ll give the settings a try. With respect to dithering, I get a ton of “natural dithering” because my scope is just a stock unguided Alt/Az Goto Dobsonian, so I get both drift and field rotation. For drift it’s typically 1-2 pixels per light, which is why my exposures are so short!
