Wie kann ich ein viereckiges Schild aus einem Bild erkennen, das mit einem Mobiltelefon aufgenommen wurde? Wie kann ich Formen wie Rechtecke erkennen? abgerundetes Rechteck (abgerundete Ecken statt Formecken)?
Ich benutze opencv.wrapper, aber ich bin neu darin.
Vielen Dank.
Hier ist das Beispiel: alt text http://www.freeimagehosting.net/uploads/b03442fd36.png
Alternativtext http://www.freeimagehosting.net/uploads/e6b36040e8.png
Aufgrund des Rauschens und der vielen Linien kann ich die Grenzlinie des Schilds nicht bestimmen. Manchmal kann ich die Grenze der Linien nach einer Hough-Transformation finden. Ich bin gefangen ... in dieser Art von Szenario ...
Dies sind die 2 Rohbilder, die von der Handykamera aufgenommen wurden
Alternativtext http://www.freeimagehosting.net/uploads/6dbd613edf.jpg Alternativtext http://www.freeimagehosting.net/uploads/720da20080.jpg
Ich brauche einen Rat, um zu sehen, wie ich das Bild verarbeiten kann, um das Schild herauszubekommen.
Vielen Dank
Antworten:
Beide Bilder enthalten viele Linien, die nichts mit dem gesuchten Zeichen zu tun haben. Und einige dieser Linien sind länger / kontrastreicher als die von Ihnen gewünschten, sodass ich denke, dass das Erkennen der Kantenlinien (z. B. mithilfe einer Hough-Transformation oder durch horizontales / vertikales Aufsummieren von Kontrasten) nicht funktioniert.
Aber: Das Zeichen, nach dem Sie suchen, hat andere Eigenschaften, die leichter zu erkennen sein sollten:
Sie suchen also einen großen zusammenhängenden Bereich mit geringem Kontrast. Ich habe in Mathematica einen Proof-of-Concept-Algorithmus gehackt. (Ich bin kein OpenCV-Experte, aber ich werde die jeweilige OpenCV-Funktion erwähnen, wenn ich sie kenne.)
Zuerst benutze ich Gauß'sche Ableitungsfilter, um die Gradientengröße bei jedem Pixel zu erfassen. Das Filter mit Gauß-Ableitung hat eine große Apertur (in diesem Fall 11 x 11 Pixel) und ist daher sehr rauschunempfindlich. Ich normalisiere dann das Gradientenbild auf mean = 1, damit ich für beide Samples die gleichen Schwellenwerte verwenden kann.
OpenCV-Implementierung: Sie können
sepFilter2D
für die eigentliche Filterung verwenden, aber anscheinend müssen Sie die Filterkernwerte selbst berechnen .Das Ergebnis sieht so aus:
In diesem Bild ist der Zeichenhintergrund dunkel und die Zeichenränder sind hell. So kann ich dieses Bild digitalisieren und nach dunkel verbundenen Komponenten suchen.
OpenCV-Implementierung: Thresholding sollte unkompliziert sein, aber ich denke, OpenCV enthält keine Analyse verbundener Komponenten - Sie können entweder Flood Fill oder verwenden cvBlobsLib verwenden .
Suchen Sie nun einfach den größten Fleck in der Nähe der Bildmitte und die konvexe Hülle (ich habe einfach den größten Fleck verwendet, der nicht mit dem Hintergrund verbunden ist, der jedoch möglicherweise nicht für jedes Bild ausreicht).
Ergebnisse:
quelle
Ein anderer Ansatz, der für Rauschen in dieser Situation robuster ist, besteht darin, eine Kurve des mittleren Graupegels des Bildes entlang der x-Achse und entlang der y-Achse zu erstellen. Das heißt, berechnen Sie den mittleren Graupegel für jede Zeile / Spalte im Bild.
Wenn zum Beispiel das Schild (oder seine Ränder) heller als seine Umgebung ist (was für alle in der Frage gezeigten Beispiele der Fall ist), haben Sie zwei Peaks in Ihrer x-Achsen-Kurve (für die linke und die rechte und die Ränder) ) und zwei Peaks in Ihrer y-Achsen-Kurve (für den oberen und unteren Rand). Unter Verwendung einer Randerkennungstechnik für ein eindimensionales Signal (möglicherweise ein Hochpassfilter) können Sie die Eckenkoordinaten des Schilds ableiten.
Ich habe gesehen, dass dieser Ansatz zur Erkennung von Kennzeichen und zur Gesichtserkennung verwendet wird (die Nase ist in der Regel der hellere Teil des Gesichts, sodass eine Spitze in den Kurven der x- und y-Achse erzeugt wird).
quelle
Dies könnte eine verkehrte Idee sein, aber es könnte sich lohnen, sie auszuprobieren. Anstatt zu versuchen, den korrekten Bereich zu erkennen und den Text wie Rauschen zu betrachten , können Sie den Text möglicherweise wie Informationen behandeln und ihn verwenden, um den richtigen Bereich leichter zu erkennen.
Hier ist der Umriss der Idee:
Die Erklärungen und Vorteile:
quelle