New in PixInsight 1.8.5: FrameAdaptation

Juan Conejero

PixInsight Staff
Staff member
Hi all,

It's been pretty quiet here lately, so just wanted to warm things up a little bit. We have a new tool almost ready for the next 1.8.5 release of PixInsight: FrameAdaptation. This tool performs a local normalization of images based on multiscale robust statistics analysis. Here is a comparison:

Before FrameAdaptation:

After FrameAdaptation:

What you see here are screenshots of my workstation with a working/testing version of the tool. The final version will be very different. It will work in batch mode just like StarAlignment, and will have a few more parameters. In this example, the reference image is on the left. On the right we have a different image of the same data set, with much less signal and a very strong gradient. Obviously, both images have been previously calibrated and registered.

After FrameAdaptation, background and signal levels have been normalized on a pixel-per-pixel basis. The gradient is completely gone as a result of this local normalization process. FrameAdaptation will be an optional image preprocessing step between registration and integration. It has other interesting applications, such as color correction and automatic gradient modeling/correction, among others. More or less, you can think of FrameAdaptation as a local version of LinearFit, able to work at different dimensional scales.

More warm-ups coming soon, so stay tuned. The next one will probably be a new mosaic blending tool based on... let's keep this secret for now :) Just two words to describe it: *seamless* mosaics. I'm working on it.
Looks very useful, Juan, speaking as someone who has been blending data from multiple scope/camera combinations lately.
this is great - i've often worried about bad LP gradients messing up the statistics during integration and have gone as far as to run ABE on all my input frames before registration/integration. but that does not always work well because the gradient changes from hour to hour and night to night and the single set of ABE settings do not always capture the gradients properly.

so in batch mode, one should prepare a high-quality DBE'd version of the reference sub for the other frames to be adapted to?


Guys, thanks.

so in batch mode, one should prepare a high-quality DBE'd version of the reference sub for the other frames to be adapted to?

Yes, this is one of this tool's main applications. After local normalization, all works better and more accurately in ImageIntegration. This tool, along with the new large scale rejection feature that we have already implemented, will make the image integration task better and easier to use than ever before. We'll put a few examples later.
This one looks very promising!

Does this mean that one can skip the normalization step in ImageIntergation?

Hi Ignacio,

Yes, after applying FrameAdaptation to a set of frames you can disable normalization in ImageIntegration, both rejection and output normalizations.

After local normalization with respect to a common reference image (which not necessarily has to be one of the individual frames; it can be the result of a previous integration for example), all of the frames in the set are statistically compatible. FrameAdaptation functions will be included in drizzle data files (new XDRZ XML-based format), so the same normalization will be applied by the DrizzleIntegration tool. This also applies to mosaiced data, since DrizzleIntegration now supports direct integration from monochrome CFA frames (Bayer drizzle).
Wonderful. I guess that the SNR weighting in ImageIntergration is going to work much better after FA.

Juan and team!

You like making more work for us. Now I get to reprocess my old data all over again. ::) ::) ::)

Thanks for all the hard work.

Very interesting tool for me too. Since I have to do imaging at some distance from my home I only get a few hours per session. I always end up with sets of frames which differ a lot.

Hi Ron,

This tool will be named MultiscaleLocalNormalization (MLN) instead of FrameAdaptation, since MLN describes much better what it does and how it works. No, MLN won't be part of BPP, since BPP must not be used for image integration of light frames. MLN will be available in the ImageIntegration tool as a new pixel rejection normalization algorithm. Thanks to MLN, pixel rejection will work independently of gradients and other local signal variations, which leads to important SNR improvements. Here is an example:

In this example we have integrated a data set with strong signal variations and gradients caused by varying atmospheric conditions. With the usual scale + zero offset rejection normalization, pixel rejection (Winsorized sigma clipping in this case) makes many mistakes because local illumination variations cannot be modeled correctly with a global image normalization. These mistakes lead to many outlier pixels surviving the rejection phase, as can be seen on the left of the above screenshot. With the MLN algorithm (on the right, applied at the scale of 256 pixels in this case), pixel rejection is virtually perfect even in this difficult case. In this example, MLN has also been applied as an output normalization for integration.

MLN, along with the new large-scale pixel rejection algorithm, are an important step forward in our image preprocessing tool chain.
Geez, take a little time away to retire and have my hip replaced and all of a sudden, 1.8.5 is on the horizon  :D :D :D

Juan and Co., thank you so much for the continued dedication.  Gonna have lots to add to my workbook when all of these fun new tools start appearing in the update list.


As usual, I am in complete awe of the time and talent put into PixInsight by the foremost astrophotography processing team on the planet. What you gentlemen do is nothing short of amazing.

I'm trying to get this to work, and have a couple of questions.

1) When I select a reference image in LocalNormalization, do I use one reference across all filters, or a separate reference for each filter set? I am currently using a Luminance image, the same one used for alignment.

2) When I use Subframe Selection, I specify a fits keyword to hold the calculated weight for the image (SSWEIGHT). I see this keyword in the approved images. However, after StarAlignment the aligned images do not contain the SSWEIGHT keyword. LocalNormalization runs against the aligned images, right? So, LN does not see the weights. This doesn't seem right. Doesn't ImageIntegration also need to see the weights? 

3) When I run ImageIntegration against the aligned images (including the localNormalization files) the process console indicates that the local normalization data is found, but is not being used (green message). How do I make sure the files are being used? Is this due to the missing keyword, or something else?