2012-07-05 10 views
10

Führen die HoughLines- oder HoughLinesP-Funktionen in OpenCV die Liste der Zeilen in Akkumulatorreihenfolge zurück, wie die HoughCircles-Funktion? Ich würde gerne die Reihenfolge der Zeilen wissen. Es wäre auch sehr praktisch, einen Akkumulatorwert für die Leitungen zu erhalten, so dass ein intelligenter und adaptiver Schwellenwert anstelle eines festen verwendet werden könnte. Sind entweder der Bestell- oder der Akkumulatorwert ohne rewriting OpenCV myself verfügbar?OpenCV Hough stärkste Linien

+1

Der war gut. Ich nahm immer an, dass die Zeilen in der Reihenfolge gegeben wurden. Und diese Annahme stimmt bisher mit meinen Ergebnissen überein ... Es wäre jedoch schön, sicher zu sein. –

Antwort

11

HoughTransform Ordnungen Zeilen absteigend nach Anzahl der Stimmen. Sie können den Code sehen here

Die Anzahl der Stimmen ist jedoch verloren, wie die Funktion zurückgibt - der einzige Weg, um es zu haben ist OpenCV zu ändern.

Die gute Nachricht ist, dass ist nicht sehr kompliziert - ich habe es selbst einmal gemacht. Es dauert einige Minuten, um die Ausgabe von vector<Vec2f> zu vector<Vec3f> zu ändern und den letzten Parameter mit der Anzahl der Stimmen zu füllen.

Auch müssen Sie CvLinePolar ändern den dritten Parameter hinzufügen - hough in C implementiert ist, und es ist ein Wrapper über sie in C++, so dass Sie sowohl die Implementierung und den Wrapper zu ändern.

Der Hauptcode zu ändern ist hier

for(i = 0; i < linesMax; i++) 
{ 
     CvLinePolar line; 
     int idx = sort_buf[i]; 
     int n = cvFloor(idx*scale) - 1; 
     int r = idx - (n+1)*(numrho+2) - 1; 
     line.rho = (r - (numrho - 1)*0.5f) * rho; 
     line.angle = n * theta; 

     // add this line, and a field voteCount to CvLinePolar 
     // DO NOT FORGET TO MODIFY THE C++ WRAPPER 
     line.voteCount = accum[idx];   

     cvSeqPush(lines, &line); 
} 
+0

Vielen Dank, dass Sie das klar gemacht und auf den Code hingewiesen haben. Ich benutze die probabilistische Version und gehe den Code durch, es wäre schön, auch Linien zu bringen, um die Dinge zu beschleunigen. – zzzz

+1

Das Probabilistic ist in der gleichen Datei, ich denke, Sie haben es bereits gefunden. Die unterschiedliche Herangehensweise in der Zeilensuche bedeutet, dass die Stimmenzählung nicht so relevant ist wie in der klassischen H. Solange eine Zeile die min erforderlichen Stimmen hat, wird sie in die Ergebniswarteschlange geschoben. Es wird keine Sortierung durchgeführt. – Sam

+0

Hallo, Sorry für die Überarbeitung dieses Threads, aber haben Sie eine Idee hwo, um den Akku-Wert in der probalistischen Hough-Transformation zu bekommen? Ich bin mir nicht ganz sicher, wo in der Akkumulatormatrix die Stimmen der Linie sind. – Aeefire

Verwandte Themen