2012-07-26 13 views
6

プログラミング(openCVまたはMATLAB)を使用して、次のImage内の内側円(または外側)の各ピクセルの座標を見つける方法はありますか?
imtoolはこの情報を提供しますが、マウス駆動です。プログラミングを使用して各ピクセルの座標を見つける

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

説明できますか(イム== 0,3)?なぜ3?あなたはr、g、bの値が0に等しいことを発見しているからですか? – gpuguy

+1

@gpuguy:[all](http://www.mathworks.nl/help/techdoc/ref/all.html)の構文を参照してください。ピクセルのすべての値が3次元(つまりすべてのカラーレイヤー)に沿って0であるかどうかをチェックします。 – Junuxx

+0

@gpuguy:@Junuxxで述べたように、 'all(A == 0,3)'は3つの色(3次元)のすべての値が0であることを確認します。 – Oli

0

ここでは、openCVを使用して色相と彩度フィルタリングを持つオブジェクトを見つける方法を説明します。 おそらく黒でスレッシュホールドを設定して使用できますか?

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

ここで円を検出する方法もあります:MATLABで

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)ネストされたループを使用します。これは、この種のタスクを行うMatlab-ishの方法ではありません。 – Shai