समस्याएक डिजिटल फोटो में, मैं कैसे पता लगा सकता हूं कि पहाड़ बादलों से अस्पष्ट है या नहीं?
मैं जापान में a mountain के डिजिटल तस्वीरों की एक संग्रह है। हालांकि पहाड़ अक्सर बादलों या धुंध से अस्पष्ट होता है।
छवि का पता लगाने के लिए मैं किन तकनीकों का उपयोग कर सकता हूं? मैं वर्तमान में Imager मॉड्यूल के साथ पर्ल का उपयोग कर रहा हूं, लेकिन विकल्पों के लिए खुला हूं।
सभी छवियों को एक ही स्थिति से लिया जाता है - ये कुछ नमूने हैं।
Sample Images http://www.freeimagehosting.net/uploads/7304a6e191.jpg
मेरे भोली समाधान
मैं पहाड़ शंकु के कई क्षैतिज पिक्सेल नमूने लेने और आसमान से अन्य नमूनों के लिए चमक मूल्यों की तुलना द्वारा शुरू कर दिया। यह अच्छी छवि 1 और खराब छवि को अलग करने के लिए अच्छा काम करता है 2.
हालांकि शरद ऋतु में यह बर्फबारी हुई और पहाड़ आकाश की तुलना में चमकदार हो गया, जैसे छवि 3, और मेरा सरल चमक परीक्षण विफल होना शुरू हो गया।
छवि 4 किनारे के मामले का एक उदाहरण है। मैं इसे एक अच्छी छवि के रूप में वर्गीकृत करूंगा क्योंकि कुछ पहाड़ स्पष्ट रूप से दिखाई दे रहे हैं।
UPDATE 1
सुझाव के लिए धन्यवाद - मुझे खुशी है कि तुम सब बेहद मेरी योग्यता का अनुमान ओवर-द हूँ।
उत्तरों के आधार पर, मैंने ImageMagick edge-detect परिवर्तन की कोशिश करना शुरू कर दिया है, जो मुझे विश्लेषण करने के लिए एक बहुत ही सरल छवि देता है।
convert sample.jpg -edge 1 edge.jpg
Edge detected samples http://www.freeimagehosting.net/uploads/caa9018d84.jpg
मुझे लगता है मैं पेड़ों से छुटकारा और बादलों के सबसे करने के लिए मास्किंग किसी तरह का उपयोग करना चाहिए।
एक बार मेरे पास मुखौटा छवि हो जाने के बाद, समानता की तुलना 'अच्छी' छवि से करने का सबसे अच्छा तरीका क्या है? मुझे लगता है कि इस काम के लिए उपयुक्त "compare" आदेश? मैं इससे एक संख्यात्मक 'समानता' मूल्य कैसे प्राप्त करूं?
अद्यतन 2
मुझे लगता है कि मैंने कहीं convolve साथ हो रही हो सकता है।
मैंने एक अच्छी छवि पर किनारे का पता लगाकर अपनी 'कर्नेल' छवि (नीचे दी गई छवि का शीर्ष) बनाया है। फिर मैंने पहाड़ की रूपरेखा के चारों ओर सभी 'शोर' को काला कर दिया और फिर इसे फसल कर दिया।
मैं तो निम्न कोड का प्रयोग किया:
use Image::Magick;
# Edge detect the test image
my $test_image = Image::Magick->new;
$test_image->Read($ARGV[0]);
$test_image->Quantize(colorspace=>'gray');
$test_image->Edge(radius => 1);
# Load the kernel
my $kernel_image = Image::Magick->new;
$kernel_image->Read('kernel-crop.jpg');
# Convolve and show the result
$kernel_image->Convolve(coefficients => [$test_image->GetPixels()]);
$kernel_image->Display();
मैं विभिन्न नमूना छवियों के लिए इस भाग गया, और नीचे के रूप में (convolved छवि प्रत्येक नमूने नीचे दिखाया गया है) मैं परिणाम मिल गया:
(माफ करना - आखिरी बार से विभिन्न नमूना छवियों!)
alt text http://www.freeimagehosting.net/uploads/f9a5a34980.jpg
अब मैं यों के लिए कैसे 'चोटी वाला' एक छवि है कोशिश कर रहा हूँ। मैं छवि औसत चमक लेने की कोशिश की:
$kernel_image->Scale('1x1');
die $kernel_image->GetPixel(x=>1,y=>1)[0];
लेकिन यह सार्थक मूल्यों (0.0165, 0.0175 और 0.0174) नहीं देता है देता है। कोई बेहतर तरीका?
+1 बहुत अच्छी तरह से प्रस्तुत प्रश्न – msw
आप अपनी क्षमता को कम करके आंका रहे हैं। मार्सेलो ने सुझाव दिया कि संकल्प के माध्यम से समानता माप की एक डिग्री पैदा करने के लिए अद्यतन 1 में "तुलना" करने के लिए उस लिंक के बहुत से अच्छे दृष्टिकोण हैं। मुझे आशा है कि आप उन लोगों के साथ झुका रहे हैं जैसे मैं टाइप करता हूं। – msw