Finde das Plattenrechteck in einem gegebenen Bild

8

Dies ist mein Originalbild, und ich möchte die Platte finden, um nach dem Nummernschild in diesem Rechteck zu suchen, anstatt im ganzen Bild zu suchen Originalbild test_1.jpg:

mit dem folgenden Code in javacv:

%Vor%

Das resultierende Bild ist test_2.jpg sieht folgendermaßen aus:

und Hinzufügen dieses Codes durch Angabe von thresholdImg the resultImg

%Vor%

Das resultierende Bild test_3.jpg:

Gibt es ein Bild von dem, was ich erzeugt habe, kann ich meinen Code fortsetzen, um das Rechteck zu finden, das die Platte im Bild enthält

    
HADEV 28.11.2013, 23:32
quelle

2 Antworten

4

Sie gehen in die richtige Richtung.

  1. Bevor Sie das Bild schwellen lassen, sollten Sie eine Glättung / Unschärfe durchführen, um unerwünschtes Rauschen zu eliminieren

  2. Übernehmen Sie den Schwellenwert so, wie Sie es jetzt tun

  3. Verwenden Sie die Dilate-Funktion der openCv-Bibliothek, um die erkannten Kanten etwas zu erweitern. Dies ist nützlich, da die Zeichen des Nummernschilds nach dem Aufweiten das Rechteck ausfüllen, in dem sie enthalten sind

  4. openCV hat eine Funktion namens cvRectangle, die nach rechteckigen, rechteckigen Formen im Bild sucht. Es gibt viele Online-Dokumentationen, die Sie bei der Verwendung unterstützen.

  5. Schließlich möchten Sie die gefundenen rechteckigen Formen der Nummernschildkandidaten basierend auf Verhältnis (Breite / Höhe) und Fläche (Breite * Höhe) filtern. Zum Beispiel hatten portugiesische Nummernschilder, zumindest in meinen Testbildern, ein Verhältnis zwischen 2 und 3,5 und eine Fläche von etwa 5000-7000 Pixel. Das hängt natürlich von der Form des Nummernschildes, der Bildgröße, etc. ab.

Ich versichere Ihnen, dass dieser Ansatz funktioniert. Ich habe es selbst benutzt und es erkennt den Nummernschildbereich in 99,5% der Fahrzeugfotos, die ich für Tests hatte.

Eine Sache, die Sie tun möchten, ist einen Sobel-Filter (auch in der opencv-Bibliothek verfügbar) vor dem Schwellenwert, wenn Ihre Bilder zu hell sind. Das bedeutet eine Änderung nur in Schritt 2, die anderen bleiben gleich.

Ich hoffe, ich war Hilfe:)

    
Rafael Matos 29.11.2013, 12:48
quelle
2

Kapitel 5 von Mastering von OpenCV mit praktischen Computer Vision-Projekten befasst sich mit genau diesem Problem, indem die Aufgabe in zwei Hauptschritte unterteilt wird: Segmentierung und Segmentklassifizierung .

Ich möchte nicht auf die Details eingehen, da Sie es auf dem Buch lesen können, aber den C ++ Code für dieses Projekt ist frei verfügbar zum Download.

    
karlphillip 29.11.2013 02:50
quelle