• 使用标准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;

    0
    30
    34KB
    2009-05-17
    3
上传资源赚积分or赚钱