...I = I0 + k*D + B...
In a future version of the dark optimization algorithm we'll compute different optimization factors for separate intensity ranges in a spline fashion. This should fix the hot pixel undercorrection problem.
Juan, thanks for this detailed discussion of the dark optimization method used by ImageCalibration.
- I have the impression that this method is closely related to
"Entropy-Based Dark Frame Subtraction", Goesele at. al., 2001. There they optimize the factor k by estimating the entropy (basically the image noise) using image compression algorithms. The main difference to your method seems to be that you use a more direct estimate of noise. In fact, some measure of noise in the result is an element of all dark optimization methods I have seen so far.
- I also came across
.pdf]"Denoising photographs using dark frames optimized by quadratic programming", Gemez-Rodgriguez et al, 2009. They minimize the gradients (=noise) to the 8 neighbors of a pixel by scaling darks. They add the ability to determine scaling for a large number of darks taken under different circumstances using a feature(=dark) selection method frequently used in machine learning. They claim this automatically selects the best darks for the purpose. I am a bit critical of this method since the weighting procedure lacks a relationship to the physics of darks - it is just a data mining approach. Given enough different darks you should be able to remove any noise from any image, and while you are at it also the desired information...

- A fairly interesting approach is
"Removing noise from astronomical images using pixel-specific noise model", Burger et al, 2011 (Video). They assume that the scaling already happened, but then use a more intelligent metric for correcting the pixels that takes into account the observed variabilty of individual pixels in the darks. In my opion, this makes perfectly sense, since I observed pixels with fairly different (random) noise behaviour in my experiments, see previous posts. It probably could be implemented as a second stage (after scaling) into your current ImageCalibration process. We would however need the capability in ImageIntegration to create a variance image along with an average image when integrating the darks.
- In your post you mentioned that you would like to improve ImageCalibration by adding spline based scaling. I am not sure how much benefit this will bring - I observed pixels that are so different to each other. For illustration, I am attaching the curves for 4 pixels of my sensor, showing that pixels can be noisy, go down (!) with exposure time, stay neutral, or go up.
- My current idea is that it would make sense to go even one step further for dark optimization- creating an individual dark response model for each pixel, and use this to scale the darks. I currently have no idea if this can be implemented efficently, and dont have experimental results. But maybe this is an idea you can play with.
Georg