In a digital photo, how can I detect if a mountain is obscured by clouds?
- by Gavin Brock
The problem
I have a collection of digital photos of a mountain in Japan. However the mountain is often obscured by clouds or fog.
What techniques can I use to detect that the mountain is visible in the image? I am currently using Perl with the Imager module, but open to alternatives.
All the images are taken from the exact same position - these are some samples.
My naïve solution
I started by taking several horizontal pixel samples of the mountain cone and comparing the brightness values to other samples from the sky. This worked well for differentiating good image 1 and bad image 2.
However in the autumn it snowed and the mountain became brighter than the sky, like image 3, and my simple brightness test started to fail.
Image 4 is an example of an edge case. I would classify this as a good image since some of the mountain is clearly visible.
UPDATE 1
Thank you for the suggestions - I am happy you all vastly over-estimated my competence.
Based on the answers, I have started trying the ImageMagick edge-detect transform, which gives me a much simpler image to analyze.
convert sample.jpg -edge 1 edge.jpg
I assume I should use some kind of masking to get rid of the trees and most of the clouds.
Once I have the masked image, what is the best way to compare the similarity to a 'good' image? I guess the "compare" command suited for this job? How do I get a numeric 'similarity' value from this?