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