- 博客(0)
- 资源 (1)
- 收藏
- 关注
使用标准Hough变换进行直线检测
if nargin == 3
thresh = 3;
elseif thresh < 3
error('threshold must be bigger than or equal to 3')
return;
end
p = 1:pstep:sqrt((size(Imbinary,1))^2+(size(Imbinary,2))^2);
teta = 0:tetastep:180-tetastep;
%Voting
Accumulator = zeros(length(p),length(teta));
[yIndex xIndex] = find(Imbinary);
for cnt = 1:size(xIndex)
Indteta = 0;
for tetai = teta*pi/180
Indteta = Indteta+1;
roi = xIndex(cnt)*cos(tetai)+yIndex(cnt)*sin(tetai);
if roi >= 1 & roi <= p(end)
temp = abs(roi-p);
mintemp = min(temp);
Indp = find(temp == mintemp);
Indp = Indp(1);
Accumulator(Indp,Indteta) = Accumulator(Indp,Indteta)+1;
end
end
end
% Finding local maxima in Accumulator
AccumulatorbinaryMax = imregionalmax(Accumulator);
[Potential_p Potential_teta] = find(AccumulatorbinaryMax == 1);
Accumulatortemp = Accumulator - thresh;
pdetect = [];tetadetect = [];
for cnt = 1:length(Potential_p)
if Accumulatortemp(Potential_p(cnt),Potential_teta(cnt)) >= 0
pdetect = [pdetect;Potential_p(cnt)];
tetadetect = [tetadetect;Potential_teta(cnt)];
end
end
% Calculation of detected lines parameters(Radius & Angle).
pdetect = pdetect * pstep;
tetadetect = tetadetect *tetastep - tetastep;
2009-05-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人