2011-06-24 3 views
5

मुझे उप-पिक्सेल सटीकता वाले बाइनरी छवियों के सेट में घटकों के लिए (Centroid) का केंद्र प्राप्त करने की आवश्यकता है।घटक माप [_, "Centroid"] परिणाम ऑफसेट

मेथेमेटिका 8 एक अच्छा इसके साथ आता है:

i = [email protected]"http://i.stack.imgur.com/2pxrN.png"; 
m1 = ComponentMeasurements[MorphologicalComponents[i], "Centroid"] /. 
                   Rule[_, x_] -> x 
(* 
-> {{403.229, 453.551}, {660.404, 371.383}, {114.389, 434.646}, {295.5, 206.}} 
*) 

लेकिन मैं कुछ मुसीबतों माध्यम से चला गया जब उन परिणामों कहीं और किया अन्य गणना के साथ कुछ विसंगतियां दिखाई।

तो मैं अपने ही, शायद अच्छा नहीं लुढ़का:

i = [email protected]"http://i.stack.imgur.com/2pxrN.png"; 
f[i_] := [email protected]{#[[2]], ImageDimensions[i][[2]] - #[[1]]} & /@ 
     (Mean /@ 
      Function[x, Map[ 
       Position[x, #, 2] &, 
       Complement[[email protected][x], {0}]]] 
      [MorphologicalComponents[i]]); 
f[i] 
Show[i, Graphics[{Red, Disk[#, 10] & /@ f[i]}]] 
(* 
-> {{403.729, 453.051}, {660.904, 370.883}, {114.889, 434.146}, {296., 205.5}} 
*) 

enter image description here

आप देख सकते हैं कि वहाँ एक .5 इन परिणामों के बीच ऑफसेट:

Thread[Subtract[m1, f[i]]] 
(* 
-> {{-0.5, -0.5, -0.5, -0.5}, {0.5, 0.5, 0.5, 0.5}} 
*) 

पहले मैं पर सोचा था कि समस्या छवि आयामों से भी अजीब या अजीब होने से संबंधित थी, लेकिन ऐसा नहीं है।

मैं ComponentMeasurements[ ..,"Centroid"] का उपयोग करना पसंद करूंगा और परिणामों को सही करना चाहता हूं, लेकिन मुझे डर है कि भविष्य में एमएमए संस्करण इस व्यवहार को संशोधित कर सकते हैं और परिणामों को खराब कर सकते हैं।

मैं एक ज्ञात छवि के साथ पिछले "अंशांकन" भी चला सकता हूं और ऑफसेट की गणना कर सकता हूं, इसलिए यह स्वतः सही होगा, लेकिन मैं समझना चाहता हूं कि पहले क्या हो रहा है।

क्या यह एक बग है?
यह क्यों हो रहा है के बारे में कोई विचार?

+1

मुझे लगता है कि यह सम्मेलन के साथ ऐसा करना पड़ सकता है जहां पिक्सेल केंद्र समन्वय ग्रिड के सापेक्ष स्थित हैं। यदि एक एल्गोरिदम पिक्सेल-सीमाओं के साथ संरेखित समन्वय ग्रिड मानता है और दूसरा लगता है कि ग्रिड पिक्सेल-केंद्रों के साथ गठबंधन होता है तो आपको असंगत परिणाम मिलते हैं। –

उत्तर

6

मुझे लगता है ComponentMeasurements के लिए डॉक पेज समाधान शामिल हैं:

स्थिति, क्षेत्र, और लंबाई माप मानक छवि में लिया जाता है समन्वय प्रणाली जहां स्थिति {0,0} नीचे से मेल खाती है बाएं कोने, एक्स 0 से चौड़ाई तक चलता है, और y 0 से ऊंचाई तक चलता है।

आप पूरी पिक्सल और ComponentMeasurements उपायों पिक्सेल पदों गिनती कर रहे हैं। इस प्रणाली में, नीचे बाएं पिक्सेल का केंद्र {1/2,1/2} पर है।

+0

ऐसा लगता है कि यह है। बेशक मैंने इसे पोस्ट करने से पहले पढ़ा है, लेकिन मुझे समझ में आया क्योंकि यह मुझे लगा। अब मुझे तीन अलग समन्वय प्रणालियों का ख्याल रखना है: एक छविडेटा [] द्वारा उपयोग किया जाता है, दूसरा ग्राफिक्स [] द्वारा उपयोग किया जाता है, और यह एक। मुझे अपने वर्रों को प्रत्यय करने की आवश्यकता होगी, या मैं सब कुछ गड़बड़ कर दूंगा। बहुत बहुत धन्यवाद। –

+1

'मैट्रिक्सप्लॉट' और 'ऐरेप्लॉट' में भी गणना करें। हालांकि, बाद वाले लोगों को चीजों को सीधे सेट करने के लिए 'डेटा रिवर्सेड' है। –