Message Boards Message Boards

0
|
8325 Views
|
3 Replies
|
2 Total Likes
View groups...
Share
Share this post:

Best filters/ways to improve ISO 800 image

Posted 10 years ago
I took a photo  using an  "analogic camera", reflex.
~1 min expos.
it was a foggy night,  storms in the horizon, and I was testing several exposures time. 

My goal is the little red spot in the center of the image. Also, there is blue points up corner left: stars.
Is there any way to process the image to better define this spot, stars, and some features that might be around?

For example, improve the mountains edges.
Fuji film, ASA 800.
The negative it was digitalized.

I want test filters that could improve the image below.
Color, grains, etc.
 
I accept suggestions!
POSTED BY: Marcelo De Cicco
3 Replies

Hi Grisha,

Thanks a Lot!! In fact I want to pick the stars that might be around in the field. And I could compare to a star map as Stellarium, for example. And really define the field of view of that picture, as I do not remember the F I used, (Lens :50mm-70mm). There is small blues points in the upper part but how to decide if it is a false or true star?, the three small blue points are actual starr, but if you zoom the image more blueish points come to view. I did some filtering and I am adding a new image of the pic.enter image description here

POSTED BY: Marcelo De Cicco
One more comment. In order to extract position you can use:
morph = ImageMultiply[ImageMultiply[minFilter, 10], ImageMultiply[GaussianFilter[MorphologicalBinarize[ImageMultiply[minFilter, 10]],5], 2]]
and then
ImageAdd[image, MorphologicalPerimeter[Binarize[GaussianFilter[Dilation[Binarize@morph, DiskMatrix[10]], 10]]]]
POSTED BY: Grisha Kirilin
Hi Marcelo,

there are a lot of possibilities, even a simple Wiener filter gives a good result:
image = Import[
   "http://community.wolfram.com/c/portal/getImageAttachment?filename=000007.jpg&userId=33625"];
scale = 5;

wiener = ImageSubtract[image, WienerFilter[image, scale, 1]];
noise = ImageSubtract[image, WienerFilter[image, scale]];

result = ImageMultiply[ImageSubtract[wiener, noise], 2]
which is almost independent on the parameter "scale".
But you can do something more clever:
nonlocal = NonlocalMeansFilter[image, 2];
It works terribly slow because it has to compare a lot of image patches but the result is good. Then you have a numer of possibilities to remove background features from the image. For example:
topHat = TopHatTransform[nonlocal, 3];
or
fillingTransform = ImageSubtract[nonlocal, ColorNegate@FillingTransform@ColorNegate[nonlocal]];
I don't know that is better so let's use both:
combination = ImageAdjust@ImageMultiply[topHat, fillingTransform];
If you need to find only colored stars then you can subtract white background:
coloredOnly = ImageAdjust@ImageSubtract[combination, ColorConvert[combination, "Grayscale"]];
If you don't want to remove white stars completely, you can enhance colors:
coloredOnly = ImageAdd[combination, ImageSubtract[combination, ColorConvert[combination, "Grayscale"]]];
One more enhancement trick is:
minFilter = ImageAdd[coloredOnly, MinFilter[coloredOnly, 1]];
Finally, we can enjoy by the automatic thresholding in MorphologicalBinarize provided by Mathematica.
ImageMultiply[ImageMultiply[minFilter, 5],
Dilation[MorphologicalBinarize[ImageMultiply[minFilter, 10]], 1]]
POSTED BY: Grisha Kirilin
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract