2013-12-13 53 views
1

如何使用霍夫變換查找二進制圖像中的所有行(下面的示例)? 圖片中包含圓圈和對角線和垂直線在二進制圖像中查找直線和圓圈

Sample image

figure, imshow(imadjust(mat2gray(H)),[],'XData',theta,'YData',rho,'InitialMagnification','fit'); 
xlabel('\theta (degrees)'), ylabel('\rho'); 
axis on, axis normal, hold on; 
colormap(hot); 
P = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:)))); 
x = theta(P(:,2)); 
y = rho(P(:,1)); 
plot(x,y,'s','color','black'); 
lines = houghlines(closeBW,theta,rho,P,'FillGap',5,'MinLength',7); 

會有什麼行給我們?

+2

請顯示您的原始圖像的鏈接 – lennon310

+0

你是如何定義變量(?或函數?)theta和rho? – Floris

+0

你已經提出了一些代碼,但是究竟是什麼問題。請具體說明問題。 – chappjc

回答

0
BW=im2bw(H); 
    [H,T,R] = hough(BW); 

    imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit'); 
    xlabel('\theta'), ylabel('\rho'); 
    axis on, axis normal, hold on; 
    P = houghpeaks(H,10); 
    x = T(P(:,2)); y = R(P(:,1)); 
    plot(x,y,'s','color','white'); 

    % Find lines and plot them 
    lines = houghlines(BW,T,R,P,'FillGap',15,'MinLength',15); 
    figure, imshow(BW1), hold on 

    for k = 1:length(lines) 
     xy = [lines(k).point1; lines(k).point2]; 
     plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); 

     %  plot beginnings and ends of lines 
     plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow'); 
     plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red'); 
    end