2016-12-06 6 views
1

houghhoughlines가 MATLAB에서 작동하는 방법을 배우고 있지만 함수의 설명서에서 찾을 수없는 것처럼 보일 수도 있습니다. simple line 그림판에서 그렸습니다.MATLAB : 단순한 선을 탐지하기 위해 호우 선을 얻을 수 없습니까?

clear all; clc; close all 

I = imread('lines2.png'); 
BW = im2bw(I); 
[H,T,R] = hough(BW,'Theta',-90:0.1:89.99,'RhoResolution',1); 
P = houghpeaks(H,2); 

lines = houghlines(H,T,R,P,'FillGap',10,'MinLength',1); 
figure, imshow(I), 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 

나는 this 결과 (라인의 끝은 이미지 자체 외부에있는)를 얻을 :

여기 내가 사용하는 코드입니다. 다른 사람이 그것을 재현 할 수 있습니까?

hough에 대한 매개 변수를 수정하려고했지만 예상 한 결과가 없습니다. 실제로 'Theta' 매개 변수의 단계를 1로 설정하면 오른쪽의 행을 얻지 못합니다. 나는 또한 BW=~BW;으로 이미지를 뒤집어 썼다.하지만 프레임에서 아주 먼 선만 가져왔다. ...

답변

2

houghlines의 경우 첫 번째 입력은 BW가 아니다. 코드에서 ~ BW를 사용하여 흰색을 흰색으로 만든다. 및 배경 검정. 이러한 변경으로 코드가 올바르게 작동합니다.

lines = houghlines(BW,T,R,P,'FillGap',10,'MinLength',1); 
+0

오 마이 갓 나는 눈치 채지 못했다고 믿을 수 없다! 그것을 지적 해 주셔서 대단히 감사합니다. 나는 당신이 며칠 후에 신선한 마음으로 깨달을 때까지 계속해서 반복해서 읽는 실수 중 하나라고 생각합니다. 어쨌든, 당신은 나에게 머리카락을 당기는 어떤 시간을 구해주었습니다 : D – yuyu2809