This is my first PI script and at the beginning the implementation was strongly affected by the fact that I am not very familiar with Java. By writing the script I learned a lot about PJSR and PCL but I cannot warrant that there are still some bugs or that the coding fulfills all expectations of a professional programmer. So I would by happy about any feedback on that. However, at the end I am quite happy with the result and want to share it with the community.
The idea to write this script arose after I read an article about image processing using fuzzy logical techniques. The article examined contrast enhancement of medical images but I thought that it is possible to use the same techniques for astronomical images as well. After poking around, I found an algorithm called “Local Fuzzy Histogram Hyperbolization” (LFHH) which becomes the theoretical basis for the script.
Compared to other contrast enhancement methods like Local Histogram Equalization a fuzzy algorithm offers the opportunity to define the profile of the contrast enhancement with the aid of a mathematical function (called fuzzy membership function). By changing the shape of the function the contrast enhancement can be adapted to the individual characteristics of the target image.
To apply the LFHH algorithm to astronomical images effectively, several adjustments were necessary. One main topic was to prevent the stars expanding too much during the process. In the script this can be achieved by using a star mask and it is strongly recommended to use this option. Moreover, the primary algorithm leads to a very strong contrast enhancement. Therefor it was essential to find possibilities to regulate the effect, particularly the impact of the local applying of the algorithm. Special parameters like a clustering of the image segmentation, the definition of lower and upper bounds for the sample values in the segments or the automatic calculation of a segmental intensifier are available to handle this matter. I described the functionality of these parameters in the corresponding mouse-over help of the script.
Like always in the field of image processing, no universal parameters exist. For each image you must find the best parameters fulfilling your individual requirements by trial and error. To give an impression how the script works I attach some examples. The target is a Ha-image of M16. For each of the four membership functions which are implemented in the script I enclose a typical result.
If you have any remarks or questions do not hesitate to contact me.
Cheers,
Frank
Target Image
Gauss/15x15/Clustering 0.05/FHH glb 0.45/FHH lub 0.55/Local FHH beta 1.20/sigma 0.60/HT median 0.23
NormalizedGauss/15x15/Clustering 0.05/FHH glb 0.45/FHH lub 0.55/Local FHH beta 1.10/sigma 0.75/HT median 0.23
Sigmoid/15x15/Clustering 0.05/FHH glb 0.4/FHH lub 0.6/Local FHH beta 1.05/gamma 5.0/x0 0.50/HT median 0.23
Linear/15x15/Clustering 0.05/FHH glb 0.45/FHH lub 0.55/Local FHH beta 1.10/HT median 0.23
... and a combination of the four images