Как я могу удалить ненужные точки, которые они были извлечены с помощью vl_sift из изображения? - PullRequest
0 голосов
/ 09 марта 2019

У меня есть изображение, и я извлекаю из него количество точек с помощью функции 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.

...