3 Stimmen

Wie kann man nach der Hough-Transformation ein klares Ergebnis anzeigen?

Ich habe das folgende Bild nach einer Canny-Kantenerkennung aufgenommen: Canny edge detection result

Nach Anwendung der Hough-Transformation erhalte ich dieses Ergebnis:

enter image description here

Das ist ein sehr gutes Ergebnis, aber ich brauche nur eine Zeile aus jedem Bündel, damit ich anzeigen kann, dass das Objekt aus dem ersten Bild einem Dreieck ähnelt. Meine erste Entscheidung war, eine Art "Durchschnittslinie" für jedes Bündel zu berechnen. Jede Linie ist durch einen Winkel und einen Radius definiert. Um die "durchschnittliche" Linie für jedes Bündel zu finden, berechne ich den Durchschnitt der Winkel mit dieser Formel:

avgTheta = arctan(sum of sines of all thetas/sum of cosines of all theta)

Ich berechne den durchschnittlichen Radius auf die einfachste Weise:

avgRadius = sum of all raduises / number of raduises

Die Zeilen, die ich erhalte, befinden sich jedoch nicht in der Mitte der Bündel.

Kann mir bitte jemand eine bessere Lösung empfehlen?

Ich verwende diese Implementierung der Hough-Transformation: Hough-Transformation

Es gibt immer die Möglichkeit, eine Zeile aus jedem Bündel zufällig zu nehmen, aber das mag ich nicht.

Wenn meine Frage nicht klar ist, sagen Sie es mir bitte, damit ich versuchen kann, das Problem besser zu erklären.

Vielen Dank im Voraus.

1voto

Johan Punkte 318

Versuchen Sie dies:

Ermitteln Sie den durchschnittlichen Winkel ohne Kosinus-, Sinus- oder Arctan-Funktion. Stellen Sie nur sicher, dass Sie den Umbruch behandeln. Ausgehend von der Implementierung, die Sie verlinkt haben, scheint es mir, dass Sie bei pi (180 Grad) umbrechen. In Ihrem Bild ist das Bündel fast senkrechter Linien auf der rechten Seite der "Insel(?)" ein gutes Beispiel für Linien, die auf beiden Seiten des Umbruchs liegen.

Außerdem erhalten Sie wahrscheinlich das beste Ergebnis, wenn Sie die Linien danach gewichten, wie viele Punkte sie aus dem Canny-Kantenerkennungsbild enthalten, und diese Gewichtung dann bei den Durchschnittsberechnungen verwenden. Vielleicht ist dies bereits durch mehrere Linien mit den gleichen Eigenschaften getan, konnte ich nicht von Ihrem Bild oder den verlinkten Code sagen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X