如何删除用vl_sift从图像中提取的不相关点?

时间:2019-03-09 09:31:51

标签: matlab vlfeat

我有一张图像,并使用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的新手。

0 个答案:

没有答案