我有一张图像,并使用vl_sift函数从其中提取了一些点。我想删除不相关的点。为此,我想先计算所有点到每个点的距离,然后计算如果将大于5的点视为一个合适的点,并删除邻域小于5的点,则将该间隔视为条件的邻居数。我使用下面的代码来做到这一点。
I = single(imread('cameraman.tif'));
[f,d] = vl_sift(I);
xx = cell(1, size(f, 2));
indxx = cell(1, size(f, 2));
for r =1:size(f,2)
x = abs(round(f(1,r)-f(1,:)));
y = abs(round(f(2,r)- f(2,:)));
[xx{r}, indxx{r}] = find(x <= 20 & y <= 20);
n{r} = numel(indxx{r});
dd = find(numel(n{r}) >5);
end
在上面的代码中,我得到了所有点到每个点的距离以及每个点的间隔小于20的邻居的数量,现在我想将那些至少有5个邻居的点保持在距离20并删除其余点。感谢您在代码结尾处为我提供帮助。我是MATLAB的新手。