Suchen Sie eine bestimmte Zeile in einem Bild

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

    Suchen Sie eine bestimmte Zeile in einem Bild

    Genauer gesagt, die Endpunkte dieser Linie.

    Ist die Hough-Transformation eine Wahl? Wenn ja, wie muss ich das Bild vor der Verwendung von Hough einrichten?

    Jede Lösung dieses Problems wäre hilfreich.

    06 January 2012
2 answers
  • Im Allgemeinen möchten Sie für diese Art von Problem einen Kantendetektor wie den Canny-Kantendetektor. Die Hough-Transformation eignet sich zum Extrahieren von Linien anstelle von Kanten.

    In diesem speziellen Fall sollten Sie jedoch Folgendes tun:

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

    , da es ein so einfaches Bild ist.

    06 January 2012
    Nzbuu
  • Für ein Bild mit diesem einfachen Faltungskern wie dem folgenden werden Kanten leicht gefunden:

    [- 1 2 - 1]

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

    Es gibt eine böse schnelle Implementierung von Hough, die hier beschrieben wird: : //www.ic.uff.br/~laffernandes/projects/kht/index.html "rel =" nofollow "> http://www.ic.uff.br/~laffernandes/projects/kht/index.html

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

    16 January 2012
    Lorin Hochstein