Ich arbeite mit Code, der bei Rosetta Code gefunden wurde, um eine Hough-Transformation zu erstellen. Ich möchte jetzt alle Linien in einem Bild finden. Dazu benötige ich die ρ- und θ-Werte der einzelnen Peaks im Hough-Raum. Eine Beispielausgabe für ein Fünfeck sieht folgendermaßen aus:
Wie finde ich eine einzelne [θ, ρ] -Koordinate für jeden der im Hough-Raum sichtbaren 'Hot Spots'?
quelle
center of gravity
?Dieser Code im Dateiaustausch hilft Ihnen dabei, alle lokalen Maxima zu finden. http://www.mathworks.com/matlabcentral/fileexchange/14498-local-maxima-minima
Wenn Sie wissen, wie viele Zeilen Sie finden möchten (in diesem Fall fünf), wählen Sie einfach die fünf lokalen Maxima mit den höchsten Hough-Werten aus.
quelle
Sie können die lokalen Maxima für einen bestimmten Radius lokalisieren. Beispielsweise scannen Sie das Hough-Bild und nehmen Peaks nur dann als Maxima, wenn sie in einem Fenster maximal sind .3 × 3
Der zweite Schritt könnte darin bestehen, die Spitzenposition auf Subpixelgenauigkeit zu verfeinern. Dies kann durch Parabelanpassung erfolgen.
Der Korrekturvektor ist dann
Die Ableitungen können durch endliche Differenzierung aus dem Hough-Bild berechnet werden .
Die obige Gleichung kann gelegentlich Verschiebungen von mehr als 1 Pixel ergeben. In diesem Fall hat die Maximierer-Nachbarschaft keine parabolische Form, und Sie möchten möglicherweise die Korrektur nicht durchführen oder sollten den Kandidaten-Maximierer sogar fallen lassen.
quelle
Es gibt eine sehr gute Technik, die Mitte der 80er Jahre von Gerig und Klein entwickelt wurde. Es ist ein Backmapping-Verfahren, das den Hough-Raum analysiert, um den wahrscheinlichsten Punkt zu identifizieren, der jedem Kantenpunkt zugeordnet ist, und dann einen zweiten Hough-Raum erstellt, in dem die Zuordnung von Kantenpunkten zu Parametern eins zu eins und nicht eins zu viele erfolgt ist die übliche erste Stufe. Ich habe nicht den Hinweis zur Hand, sondern schaue in das wegweisende Hough-Übersichtspapier von Illingworth und Kittler (ungefähr 1987?).
quelle