Fort - KFZ-Kennzeichen-Erkennung
Fortsetzung von diesem thread:
Was sind gute algorithmen für KFZ-Kennzeichen-Erkennung?
Habe ich meine Bild-manipulation-Techniken zu betonen, das Nummernschild soweit wie möglich, und insgesamt bin ich glücklich, hier sind zwei Beispiele.
Nun kommt der schwierigste Teil, eigentlich erkennen das Nummernschild. Ich weiß, es gibt ein paar edge-detection-Methoden, aber mein Mathe ist ziemlich schlecht, so dass ich nicht in der Lage bin zu übersetzen einige der komplexen Formeln in code.
Meine Idee bisher ist, um eine Schleife durch jedes pixel innerhalb des Bildes (for-Schleife basiert auf img width & Höhe) Aus diesen vergleichen jedes pixels mit einer Liste von Farben, die von diesem Algorithmus wird überprüft, um zu sehen, ob die Farben halten die Differenzierung zwischen den license plate weiß und das schwarz des Textes. Wenn dies geschieht, um wahr zu sein diese Pixel sind in einer neuen bitmap im Speicher, dann ein OCR-scan ist durchgeführt, sobald dieses Muster nicht mehr erkannt.
Ich würde schätzen einige Beiträge zu diesem, wie es vielleicht eine falsche Idee, zu langsam oder zu intensiv.
Dank
- Sind Sie gonna geben Sie mir einen Strafzettel wenn ich mit dem Auto von einer Ihrer Maschinen?
- hah, nee das ist nur ein uni-Projekt, zum Glück habe ich die Wahl der Bilder, die ich testen 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Methode des "sehen, ob die Farben halten die Differenzierung zwischen den license plate weiß und das schwarz der text" ist im Grunde die Suche nach Bereichen, in denen der pixel-Intensität ändert sich von schwarz zu weiß und Umgekehrt viele Male. Kantenerkennung erreichen im wesentlichen das gleiche. Jedoch, die Implementierung eigener Methoden ist immer noch eine gute Idee, da lernen Sie eine Menge in den Prozess. Was solls, warum nicht beide und vergleichen die Ausgabe der Methode, mit der einige der ready-made-edge-detection-Algorithmus?
Irgendwann werden Sie wollen, um ein binäres Bild, sagen, mit schwarzem Pixel entsprechend dem "not-a-character" - label und weißen Pixeln entsprechend dem "ist-ein-Zeichen" - label. Vielleicht ist der einfachste Weg, dies zu tun, ist die Verwendung eines Schwellenwert-Funktion. Aber das wird nur gut funktionieren, wenn die Charaktere haben bereits betont, in gewisser Weise.
Als jemand erwähnt in deinem anderen thread, die Sie tun können, dass die Verwendung der black-hat-operator, die Ergebnisse in etwa wie folgt:
Wenn Sie den Schwellenwert für das Bild oben, mit, sagen wir, Otsu ' s Methode (was bestimmt automatisch ein globaler Schwellwert), erhalten Sie dies:
Gibt es mehrere Möglichkeiten, um zu reinigen, die Bild. Zum Beispiel, können Sie die angeschlossenen Komponenten und wegwerfen, die sind zu klein, zu groß, zu breit oder zu hoch ist, um ein Zeichen:
Da die Charaktere im Bild sind relativ groß und voll angeschlossen, funktioniert diese Methode gut.
Nächsten, man könnte filter die verbleibenden Komponenten, die basierend auf den Eigenschaften der Nachbarn, bis Sie die gewünschte Anzahl der Komponenten (= Anzahl der Zeichen). Wenn Sie möchten, erkennen die Zeichen, dann könnten Sie berechnen, bietet für jede Figur und Eingangs Sie zu einem Klassifizierer, die in der Regel gebaut mit betreutem lernen.
Alle die oben genannten Schritte sind nur ein Weg, es zu tun, natürlich.
Durch die Art und Weise, die ich generiert die Bilder, die oben mit Hilfe von OpenCV + Python, das ist eine tolle Kombination für computer vision.
Farbe, so viel als gut aussieht, präsentieren einige Herausforderungen mit Schattierung und Licht. Hängt wirklich, wie viel Sie wollen, um ihn stabil zu machen, aber realen Welt Fällen haben, um mit solchen Fragen umgehen.
Ich habe getan, Forschung auf road-Material (siehe Seite "mein Profil" und suchen Sie hier nach Beispiel) und habe festgestellt, dass die real-world road Filmmaterial ist extrem laut in Bezug auf Licht und Ihre Farben wechseln von Braun zu Weiß für einen gelben Rücken-Kennzeichen.
Meisten algorithmen verwenden die line-Detektion und versuchen zu finden, eine box mit einem Aspekt-Verhältnis in einem akzeptablen Bereich.
Ich schlage vor, Sie tun eine überprüfung der Literatur über das Thema, aber dies wurde erreicht, in 1993 (wenn ich mich richtig erinnere), so gibt es Tausende von Artikeln.
Dies ist durchaus eine wissenschaftliche Domäne ist also nur ein Algorithmus wird nicht, es zu lösen und Sie muss zahlreiche pre/post-processing-Schritte.
Kurz gesagt, mein Vorschlag ist, verwenden Hough-Transformation zum finden von Linien und dann versuchen Sie, sich für die Rechtecke, könnten akzeptable Seitenverhältnis.
Harris feature-Erkennung bieten könnte, wichtige Kanten, aber wenn das Auto ist in hellen Farben wird das nicht funktionieren.
Wenn Sie eine Menge von Proben, die Sie könnten versuchen, um zu überprüfen, face-detection-Methode, entwickelt von Paul Viola und Michael Jones. Es ist gut für die Gesichtserkennung, vielleicht wird es sich gut machen mit Nummernschild-Erkennung (vor allem, wenn in Kombination mit einer anderen Methode)