如何有效地查找距离(u',v')
距离给定像素x
的所有像素(u,v)
。特别是所有(u',v')
,sqrt((u-u')^2 +(v-v')^2) <= x
答案 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中的复共轭转置。