2012-07-26 17 views
6

का उपयोग कर प्रत्येक पिक्सेल के निर्देशांक ढूँढना प्रोग्रामिंग (ओपनसीवी या MATLAB) का उपयोग कर निम्न छवि में आंतरिक मंडल (या बाहरी एक) के प्रत्येक पिक्सेल के निर्देशांक को खोजने का तरीका क्या है?
इमतोल यह जानकारी देता है लेकिन यह माउस संचालित है।प्रोग्रामिंग

enter image description here

अद्यतन

मैं, इन स्थानों का पता लगाने के सर्कल पर प्रत्येक बिंदु पर मेरी माउस कर्सर डाल और मैनुअल इस मूल्य टिप्पण द्वारा imtool इस्तेमाल किया। लेकिन प्रोग्रामिंग का उपयोग करके मैं इसे मैन्युअल रूप से कैसे कर सकता हूं, मैं सर्कल पर इतने सारे पिन्स के लिए ऐसा नहीं कर सकता।

+4

से निर्देशांक मान प्राप्त कर सकते क्या आप की कोशिश की है? आप सभी पिक्सल को गले लगा सकते हैं, और जांच सकते हैं कि यह काला है या नहीं। – iiro

उत्तर

5

मैटलैब में, आप बस कर सकते हैं:

im = imread('im.png');  %# load image 
[y,x] = find(all(im<5, 3)); %# find black pixels 
position = [x,y];   %# display them 
+0

क्या आप समझा सकते हैं (im == 0,3)? क्यों 3? ऐसा इसलिए है क्योंकि आप आर, जी, बी मान 0 के बराबर हैं? – gpuguy

+1

@gpuguy: [सभी] के सिंटैक्स देखें (http://www.mathworks.nl/help/techdoc/ref/all.html)। यह जांचता है कि पिक्सेल के लिए सभी मान तीसरे आयाम (यानी सभी रंग परतें) के साथ शून्य हैं। – Junuxx

+0

@gpuguy: जैसा कि @ जुनक्सक्स ने कहा था, 'सभी (ए == 0,3)' जांचता है कि सभी 3 रंगों (तीसरे आयाम) के मान 0 हैं, जिसका अर्थ है कि रंग काला है। – Oli

0

ह्यू और संतृप्ति फ़िल्टरिंग के साथ ऑब्जेक्ट खोजने के लिए ओपनसीवी का उपयोग करने के लिए यहां एक गाइड है। शायद आप इसे थ्रेसहोल्डिंग ब्लैक के साथ उपयोग कर सकते हैं?

http://myrobotlab.org/content/opencv-how-isolate-object-hue-saturation-and-value

वहाँ भी यहाँ हलकों का पता लगाने के लिए एक विधि है:

http://cgi.cse.unsw.edu.au/~cs4411/wiki/index.php?title=OpenCV_Guide

+0

मुझे आकारों का पता लगाने में कोई दिलचस्पी नहीं है। मैं सिर्फ मंडलियों पर पिक्सल का स्थान प्राप्त करना चाहता हूं। मैं imtool का उपयोग कर सकते हैं, लेकिन यह मैनुअल होगा; मुझे सर्कल पर प्रत्येक बिंदु पर माउस कर्सर डालना होगा और स्थान x, y को नोट करना होगा। – gpuguy

-1

आप इस कोड को लागू कर सकते हैं ..

a=rgb2gray(imread('image.tif')); 
[x,y,z]=size(a); 
count=0; 
for i=1:x 
    for j=1:y 
     if a(i,j)==0 
      count=count+1; 
      new_x(count)=j; 
      new_y(count)=i; 
     end 
    end 
end 

आप new_x & new_y

+0

यह एक ** भयानक ** समाधान है! (1) आप 'new_x' और 'new_y' को पूर्व-आवंटित नहीं करते हैं। (2) आप नेस्टेड loops का उपयोग करें। यह पूरी तरह से ** ** ** इस तरह के कार्य करने के Matlab-ish तरीका नहीं है! – Shai

संबंधित मुद्दे