MATLAB hough和我的实现之间的区别

我正在尝试用我的方法重新创建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之间的区别有很多零,但也有一些非零元素.知道为什么会这样吗?

最佳答案 嗯,实际上这是一个非常愚蠢的错误……

r = n2*cos(T(i)*pi/180) + n1*sin(T(i)*pi/180);

一定是

r = (n2-1)*cos(T(i)*pi/180) + (n1-1)*sin(T(i)*pi/180);

感谢这个奇怪的MATLAB索引.

点赞