Я пытаюсь воссоздать функцию Hough MATLAB с моей. Мой код следуетРазница между MATLAB hough и моей реализацией
function [H,T,R] = my_hough(x,dr,dtheta)
rows = size(x,1);
cols = size(x,2);
D = sqrt((rows - 1)^2 + (cols - 1)^2);
Nr = 2*(ceil(D/dr)) + 1;
diagonal = dr*ceil(D/dr);
R = -diagonal:dr:diagonal;
T = -90:dtheta:90-dtheta;
Ntheta = length(T);
H = zeros(Nr,Ntheta);
for i = 1:Ntheta
for n1 = 1:rows
for n2 = 1:cols
if x(n1,n2)==1
r = n2*cos(T(i)*pi/180) + n1*sin(T(i)*pi/180);
[~,j] = min(abs(R-ones(1,Nr)*r));
H(j,i) = H(j,i) + 1;
end
end
end
end
end
где dr
и dtheta
являются расстояние и угловое разрешение. Печать разницы между моей таблицей Hough и MATLAB есть много нулей, но есть и некоторые ненулевые элементы. Любая идея, почему это происходит?
Я не понял полностью: массив тета должен быть декрементирован тетой, но массив rho не уменьшен rho? –
Я не уверен в этом ... Я просто попытался следовать алгоритму, описанному на http://www.mathworks.com/help/images/ref/hough.html – Controller
У меня не было подписи. В октаве говорят: «T = -90: dtheta: 90-dtheta;» дает массив до включения '90-dtheta' (как в данной ссылке). Например, с 'dtheta = 1' это' [-90, -89, ..., 88, 89]; ' –