【发布时间】:2015-02-05 02:18:59
【问题描述】:
我目前在执行霍夫变换时遇到了一些问题。现在我主要专注于获取 hough 累加器、rhos 和 Thetas。我觉得这是最难的部分,因为我觉得其他一切都有效。我也意识到我可以只使用该功能,但这不是我想要做的。我觉得我漏掉了一些小细节,这些小细节会让一切变得不同。
第一步是使用获取边缘图像
img_edges=edge(img,'canny')
之后是我提到的其他内容的部分
function [H, theta, rho] = hough_lines_acc(BW, varargin)
p = inputParser();
addParameter(p, 'RhoResolution', 1);
addParameter(p, 'Theta', linspace(-90, 90, 180));
parse(p, varargin{:});
rhoStep = p.Results.RhoResolution;
D = sqrt((255 - 1)^2 + (255 - 1)^2);
nrho = round(2*(ceil(D/rhoStep)) + 1);
rho=linspace(0,nrho,nrho+1);
theta=p.Results.Theta;
ntheta = length(theta);
%initialize H to all zeros
H=zeros(nrho+1,ntheta);
[y,x]=size(BW);
for u= 1:y
for v= 1:x
if BW(u,v)==1
for i=1:ntheta
the=theta(i);
rhov=abs(ceil(v*cosd(the)+u*sind(the)));
H(rhov+1,i)=H(rhov+1,i)+1;
end
end
end
end
end
我只需要一些指针,这样我就可以运行它。我实际上认为我已经完成了其余的霍夫变换。
【问题讨论】:
-
您到底遇到了什么问题?对我来说,您的实现看起来不错。看起来您正在正确地累积
rho和theta。 -
我的目标是模拟霍夫变换的每一步。当我运行它时,我得到了一个实心数字,它没有突出任何实际点。
-
例如,当我在图像上拍摄它,然后通过真正的霍夫函数运行我正在做的其余事情时,霍夫线部分什么也不返回。然而,从 matlab 中的默认 hough 函数中获得 hough 累加器的完全相同的代码将遵循整个过程完成并且它会正确地完成。
标签: matlab