Hi,
I have been working on a process for enhancing faint gradients, while suppressing strong gradients. It should be ideal for enhancing faint structures, especially in imkages with high dynamic range such as M42, M31, NGC7000, ... . It is an algorithm from the family of gradient domain algorithms, that I have already been playing with a while ago with the MergeMosaic script
http://pixinsight.com/forum/index.php?topic=2124.0.
The GradientHdrCompression process works by computing the gradients in an image, and then manipulating the gradients. The manipulated gradients are then used tor reconstruct the image. The process allows 3 kinds of manipulations:
- scale gradients by pow(gradient, exp). If exp<1.0 this enhances faint gradients
- clip large gradients. The effect is similar to the pow-approach
- as an experiment, I also permit to clip low gradients to 0.0. I thought this might be useful for supressing noise, but my first experiments are inconclusive.
The remaining two parameters allow to influence the behaviour of the linear solver that is below the process. The default settings should be ok for many uses.
Attached is a screenshot of a results I obtained using HDR luminance data of M42 kindly provided by Harry. The left hand side shows the original, the right hand side the processed version. No processing beyond this and STF. The processes image shows details of a kind I have not seen before - all kinds of waves, streams, structures, clounds. No ringing (Gibbs effect). Stars are almost perfectly suppressed, only the delicate structures within the nebula are visible. HDR Wavelets, wavelets etc. all enhance a different kind of detail. For estethic images, it is probably necessary to combine the obtained image with some other data.
I must stress the whole implementation is still experimental (for example, it is not yet clear how to use the knobs for best effect, what images work and which don’t, and it is too slow/memory consuming for images beyond 1000x1000). If you want to test the process:
- I did my work on a virtual 1GB Fedora 14 Linux machine. For anything beyond 800x600, memory becomes a problem. On larger memory system you should be able to do larger images - if you have the time.
- compute times range from seconds to hours. There is some output at stdout that allows to monitor progress. Canceling the process does not work yet.
- I strongly recommend to try small snippets (100x100 or 200x200) first. For them, runtime is a few seconds.
- I did not yet try it on color images. For these, it works on luminance.
The next message contains the module, sources and some more technical comments.
Georg