Suchen Sie eine bestimmte Linie in einem Bild

9

Ich möchte die Linie zwischen Farbe Blau und Farbe Grau im folgenden Bild finden:

Geben Sie hier die Bildbeschreibung ein

Genauer gesagt, die Endpunkte dieser Linie.

Ist die Hough-Transformation eine Wahl? Wenn ja, wie soll ich das Bild einrichten, bevor ich Hough verwende?

Jede Möglichkeit, dies zu lösen, wäre hilfreich.


quelle
Führen Sie vor der Hough-Transformation eine Kantenerkennung durch. Es wird diesen Übergang in eine helle Linie mit Schwarz auf beiden Seiten verwandeln
Endolith

Antworten:

10

Im Allgemeinen möchten Sie einen Kantendetektor wie den Canny-Kantendetektor für diese Art von Problem. Die Hough-Transformation ist nützlich, um Linien anstelle von Kanten zu extrahieren.

In diesem speziellen Fall ist es jedoch besser, wenn Sie Folgendes tun:

imdata = imread('grayblue.jpg');
colidx = find(diff(imdata(1,:) ~= 0);

da ist es so ein einfaches bild.

Nzbuu
quelle
0

Für ein so einfaches Bild findet ein Faltungskern wie der folgende Kanten gut:

[-1 2 - 1]

Dies ergibt ein einzelnes Kantenpixel an jedem Kantenpunkt. Keine Aufregung, kein Muss. Canny ist für dieses Problem zu involviert. Wenn Sie Randpunkte für Linien in einem beliebigen Winkel suchen möchten, können Sie einen einfachen Laplace-, Laplace-Gauß- (LoG) oder Differenz-Gauß-Wert (DoG) verwenden. Sobel und Prewitt sind ebenfalls einfach, aber ungeeignet, da sie eine Linie mit "doppelter Dicke" ergeben.

Es gibt eine unglaublich schnelle Implementierung von Hough, die hier beschrieben wird: http://www.ic.uff.br/~laffernandes/projects/kht/index.html

Es gibt auch "parameterlose Hough" -Algorithmen, die sehr schnell sind, aber etwas schwierig zu implementieren und zu debuggen sind.

Überdenken
quelle