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.


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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.