2016-12-12 5 views
1

の距離x内のすべてのピクセルを特定のピクセル(u,v)から効率的に見つける方法を教えてください。 sqrt((u-u')^2 +(v-v')^2) <= xあるピクセルからある距離内のすべてのピクセルを見つけるにはどうすればよいですか?

+3

その((U-U ')^ 2 +(V-V')^ 2)= X '内の論理インデックスに

読むより多くのピクセルが整数の場所にあるため!あなたが補間しない限り –

+1

はい、あなたは正しいです。私は '<= x'を尋ねるつもりだった。私はその質問を修正した。混乱の謝罪 –

答えて

2

は、あなたがこの距離内にある任意のピクセルを追加することに注意してください、しかし

u=10;v=10; 
x=3.4; 
pixels=img([floor(u-x) ceil(u+x)],[floor(v-x) ceil(v+x)]); 

(マンハッタン距離のため)、このインデックストリックを使用することができますx距離にあるすべてのピクセルを検索するには具体的に、すべての(u',v')ように、たとえそれがちょうどピクセルの作品であっても!例えば。 (6,6)が入っています!


は、ユークリッド距離のために、あなたは(u,v)としてラベル付けされているポイントで、これは基本的に

[xi,yi]=meshgrid(1:size(img,1),1:size(img,2)); 
mask=sqrt((xi-u).^2+(yi-v).^2)<x; % or ceil(x) 
pixel_values=img(mask); 
[pixel_indices_u pixel_indices_v]=find(mask); 
2
u = rand(1e2,1); % Create a 100 random points in the unit square 
v = rand(1e2,1); % Create a 100 random points in the unit square 
a = 0.3; % Choosen pixel 
b = 0.4; 
x = 0.1; % radius from the choosen pixel 

idx = (sqrt((u-a).^2 +(v-b).^2) <= x); % Create a logical index array 
locs = [u(idx) v(idx)]; % Index the locations 

は、あなたが問題の説明を正確に何点を中心に円を定義する必要があります(a,b)をプライム(')としてラベル付けされた「行き先ポイント」は、MATLABにおける複素共役転置を示す。 `にSQRTを見つけることはほぼ不可能this very insightful answer by Luis Mendo

関連する問題