Я внедряю угловой детектор Харриса в образовательных целях, но я застрял в ответной части Харриса. В основном, что я делаю, это:
- Вычислить градиенты интенсивности изображения в x- и y-направлении
- Размытие (1)
- Вычислите ответ Харриса по выходным данным (2)
- Подавить немаксимумы в выводе (3) в окрестности 3x3 и пороговом выводе
1 и 2 работают нормально; однако я получаю очень маленькие значения в качестве ответа Харриса, и ни одна точка не достигает порога. На входе стандартная фотосъемка на открытом воздухе.
[...]
[Ix, Iy] = intensityGradients(img);
g = fspecial('gaussian');
Ix = imfilter(Ix, g);
Iy = imfilter(Iy, g);
H = harrisResponse(Ix, Iy);
[...]
function K = harrisResponse(Ix, Iy)
max = 0;
[sy, sx] = size(Ix);
K = zeros(sy, sx);
for i = 1:sx,
for j = 1:sy,
H = [Ix(j,i) * Ix(j,i), Ix(j,i) * Iy(j,i)
Ix(j,i) * Iy(j,i), Iy(j,i) * Iy(j,i)];
K(j,i) = det(H) / trace(H);
if K(j,i) > max,
max = K(j,i);
end
end
end
max
end
Для образца изображения максимальное значение составляет 6,4163e-018, что кажется слишком низким.