Wie erkennt man ein QR-Code-Muster in einem Bild?

8

Ich arbeite an einem QR-Detektor-Code und ich muss die Finding Patterns (FP) auf einem Bild finden. Ich habe eine binäre Vorlage erstellt, die den Quadraten an den Ecken von QR-Codes ähnelt:

%Vor%

Und ich habe versucht, nach den Punkten im Bild mit maximaler Korrelation mit dieser Vorlage zu suchen, indem ich xcorr2 verwende. Mein Problem ist offensichtlich: Meine Vorlage ist sehr klein im Vergleich zu den tatsächlichen Größen, die QR-Codes auf den Bildern haben könnten.

Gibt es eine Möglichkeit, nach einem Muster / einer Maske zu suchen, ohne die Größe ändern zu müssen? Gibt es einen anderen Ansatz für dieses Problem?

Hier ein Beispiel mit einem Bild mit einem QR-Code

    
alvaro.delaserna 10.06.2014, 08:32
quelle

1 Antwort

9

Sie müssen xcorr2 nicht verwenden. Sie sollten ein 1: 1: 3: 1: 1 (Breiten von dunkel-hell-dunkel-hell-dunkel) Muster in 1d mit Scanlinien suchen.

Es gibt eine Beschreibung eines Referenzerkennungsalgorithmus auf Seite 60 von dem Standard .

>

Auch ZXing ist eine Open-Source-Bibliothek, die QR-Code-Erkennung / Erkennung implementiert. Sie können über ihren Code als Referenz gehen.

Bearbeiten: Zählen Sie an jeder Scanlinie nachfolgende dunkle und nachfolgende helle Pixel. Sie erhalten eine Liste von Ganzzahlen, die Sequenzlängen darstellen.

Beginne dann mit der größten dunklen Teilsequenz und schaue auf die Seiten. Wenn die Länge der dunklen Teilfolge 300 beträgt, sollten die benachbarten Teilsekunden eine Länge von 50-150 haben und die benachbarten dunklen Teilfolgen sollten ebenfalls eine Länge von 50-150 haben (dies liegt an der im Standard vorgeschlagenen Toleranz von 0,5). .

Wenn Sie also eine solche Sequenz finden, markieren Sie sie mit der Größe 300. Dann probieren Sie die nächst größere dunkle Subsequenz aus und so weiter.

Nur um zu verdeutlichen, sollte die obige Methode verwendet werden, um die 3 markierten Ecken zu finden.

    
Michael Litvin 10.06.2014, 10:09
quelle