ऐसा लगता है कि प्रकाश कुछ हद तक असमान है। यह कुछ morphological संचालन का उपयोग कर सही किया जा सकता है। मूल विचार एक ऐसी छवि की गणना करना है जो असमान प्रकाश का प्रतिनिधित्व करता है और इसे घटाता है, या इसके द्वारा विभाजित करने के लिए (जो इसके विपरीत भी बढ़ाता है)। चूंकि हम केवल प्रकाश खोजना चाहते हैं, इसलिए बड़े पर्याप्त संरचना तत्व का उपयोग करना महत्वपूर्ण है, ताकि ऑपरेशन स्थानीय लोगों की बजाय अधिक वैश्विक गुणों की जांच कर सके।
%# Load image and convert to [0,1].
A = im2double(imread('http://i.stack.imgur.com/TQp1i.png'));
%# Any large (relative to objects) structuring element will do.
%# Try sizes up to about half of the image size.
se = strel('square',32);
%# Removes uneven lighting and enhances contrast.
B = imdivide(A,imclose(A,se));
%# Otsu's method works well now.
C = B > graythresh(B);
D = bwdist(~C);
DL = watershed(D);
imshow(DL==0);
यहाँ C
(बाएं), प्लस DL==0
(बीच में) कर रहे हैं और मूल छवि पर इसके ओवरले:
स्रोत
2012-04-16 03:28:12
वर्क्स में अच्छी तरह से। हालांकि, चित्र अच्छा होगा। – Jonas
अच्छी सलाह ... (संपादन देखें)। –
आपकी मदद के लिए बहुत बहुत धन्यवाद। बस एक त्वरित सवाल है। यदि मैं imopen के बाद imopen लागू करना चाहता हूं तो मुझे यह भाग se = strel ('square', 32) संपादित करना चाहिए; im_open = imopen (ए, से); बी = imdivide (ए, imclose (im_open, से)); मैं जिस पेपर को अभी पढ़ रहा हूं, मैंने कहा कि इस तरह से झूठी शाखाओं को कम करने में बहुत मदद मिल सकती है। हालांकि जब मैंने इस तरह से किया तो अधिक झूठी शाखाएं लगती हैं। क्या आपके पास कोई सुझाव है? धन्यवाद – W00f