2016-12-06 1 views
1

私はMATLABでどのようhoughhoughlines仕事を学んでいるが、私も、私はペイントで描いたsimple lineのために正しく動作する機能のドキュメントで見つかったサンプルコードを作るように見えることはできません。ここでMATLAB:houghlinesもシンプルなラインを検出することができませんか?

は、私が使用しているコードです:

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のためのパラメータを変更しようとしているが、私のテストのどれもが期待される結果を与えませんでした。実際には、右の行を取得しないで1つの結果に'Theta'パラメータの設定工程。私はBW=~BW;でイメージを反転してみましたが、フレームから非常に遠いラインしか得られませんでした。

答えて

2

houghlinesの場合、最初の入力はBWではありません。背景は黒です。これらの変更により、コードが正しく動作するはずです。

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

オハイオ州の神私はそれを気付かなかったと信じられない!それを指摘してくれてありがとうございました。私はそれはあなたが新鮮な心で、数日後に実現するまで、あなただけ何度も何度も読んで、それらの過ちの一つだと思います。いずれにせよ、あなたは私に髪を引っ張る時間を節約しました:D – yuyu2809

関連する問題