2016-12-06 3 views
1

Ich lerne, wie hough und houghlines in MATLAB arbeiten, aber ich kann nicht scheinen, um den Beispielcode in der Dokumentation der Funktion richtig zu verhalten, selbst für eine simple line Ich zeichnete in Paint.MATLAB: Kann Houghlines nicht einmal eine einfache Linie erkennen?

Hier ist der Code, den ich verwende:

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 

ich this Ergebnis (die Enden der Linien außerhalb des Bildes liegen selbst). Jeder andere kann es reproduzieren?

Ich habe versucht, die Parameter für hough zu ändern, aber keiner meiner Tests hat das erwartete Ergebnis gegeben. Wenn Sie den Parameter 'Theta' auf 1 setzen, wird die Zeile rechts nicht angezeigt. Ich habe auch versucht, das Bild mit BW=~BW; zu invertieren, aber dann bekomme ich nur eine Linie sehr weit weg vom Rahmen ...

Antwort

2

Für houghlines der erste Eingang ist BW nicht H. Verwenden Sie ~ BW in Ihrem Code, der die Zeile weiß macht und der Hintergrund schwarz. Mit diesen Änderungen sollte Ihr Code korrekt funktionieren.

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

Oh mein Gott Ich kann nicht glauben, dass ich das nicht bemerkt hatte! Vielen Dank für das Aufzeigen; Ich nehme an, es ist einer dieser Fehler, die du gerade gelesen hast, bis du ein paar Tage später mit einem neuen Verstand merkst. Auf jeden Fall hast du mir eine Zeit des Haarziehens erspart: D – yuyu2809

Verwandte Themen