In einer bestimmten Detektorklasse werden unsere Daten als Punktpaare in zwei Dimensionen ausgegeben, und wir möchten diese Punkte zu Linien zusammenfassen.
Die Daten sind verrauscht und werden in die eine, aber nicht in die andere Richtung zusammengefasst. Wir können nicht garantieren, dass jeder Behälter einen Treffer enthält, auch wenn jedes Detektorelement funktioniert, daher kann es zu Auslassungen kommen.
Unsere aktuelle Analysekette sieht so aus
- Passen Sie die Treffer für die Kalibrierung der einzelnen Detektorelemente an
- Finden Sie Cluster
- Grobe Fit-Linien zu den Clustern
- Verbinden Sie Cluster zu längeren linienartigen Strukturen
- ...
Diese Frage betrifft Schritt (3).
Wir haben für diesen Schritt eine Hough-Transformation verwendet, die gut funktioniert, aber wenn wir versuchen, vom Prüfstand zur Simulation eines vollständigen Projekts zu skalieren, wird sie unannehmbar langsam.
Ich suche einen schnelleren Weg.
Für diejenigen, die den tatsächlichen Anwendungsfall interessieren könnten, ist hier eine Flüssig-Argon-Zeitprojektionskammer
quelle
Antworten:
Es gibt eine probabilistische Version der Hough-Transformation (PHT), die schneller ist. Wie von Bradski & Kaehler in ihrem OpenCV-Buch beschrieben:
Die OpenCV-Bibliothek präsentiert eine Implementierung für das PHT.
Es gibt andere Alternativen. Es ist nicht schwierig, eine verteilte Version der Hough-Transformation zu erstellen . Teilen Sie Ihre Punktmenge einfach in kleinere Teile auf und verwenden Sie das MapReduce-Framework, um alle Akkumulatoren zusammenzufassen. Eine andere Idee ist, eine grobe Version der Hough-Transformation unter Verwendung eines Parameterraums mit niedriger Auflösung durchzuführen . Wählen Sie Ihre besten Kandidaten aus und führen Sie eine feinere Iteration aus, indem Sie einen Parameterraum mit einer höheren Auflösung verwenden. Vielleicht ist dies die Idee hinter der FHT des Gandalf.
quelle
Ich Kollege hat die Fast Hough Transformation gefunden in der Gandalf-Bibliothek gefunden , die sehr vielversprechend aussieht, aber möglicherweise sehr viel Integrationsarbeit erfordert. Deshalb suche ich nach anderen Ansätzen.
Interessant ist die Gandalf-Implementierung: Sie wertet den Speicherplatz rekursiv aus, als würde sie einen Quad- oder Oct-Baum durchqueren. Regionen ohne große Dichte werden im Laufe der Zeit verworfen.
quelle