如何找到距给定像素一定距离内的所有像素?

时间:2016-12-12 13:48:24

标签: matlab distance

如何有效地查找距离(u',v')距离给定像素x的所有像素(u,v)。特别是所有(u',v')sqrt((u-u')^2 +(v-v')^2) <= x

2 个答案:

答案 0 :(得分:2)

要查找距离为x的所有像素,您可以使用此索引技巧(适用于曼哈顿距离)

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

然而,请注意,这将添加距离内的任何像素,即使它只是像素的一部分!例如。 (6,6)在里面!

对于欧几里德距离,您需要在点周围定义一个圆

[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);

答案 1 :(得分:2)

document.getElementById('yourInput').addEventListener('input', function(){
  var val = document.getElementById('yourInput').value
  if(val.length === 156){
    document.getElementById('yourInput').value = val + '(...)';
  }
})

这基本上就是您在问题中描述的内容,其中的点被标记为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 和&#34;目标点&#34;所以说用(u,v)标记为素数((a,b))表示MATLAB中的复共轭转置。

详细了解this very insightful answer by Luis Mendo

中的逻辑索引