mikrocontroller.net

Forum: PC-Programmierung Barcode-Lokalisierungs-Algorithmus


Autor: Joachim Schäfer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich möchte mir ein einfaches Programm schreiben, dass normale
(zweidimensionale) Barcodes in einem Bild (in digitalisierter Form,
also z.B. als GIF, JPEG etc.) lokalisieren und dekodieren kann.
Für das eigentliche Dekodieren habe ich mir bereits einen Algorithmus
überlegt, der eigentlich auch ganz gut funktionieren müsste.
Das grössere Problem ist für mich daher momentan: Wie kann ich
effizient herausfinden, OB in einem Bild ein Barcode enthalten ist und
vor Allem WO? So auf die Schnelle ist mir bisher jedenfalls kein guter
Algorithmus dazu eingefallen. Hat Jemand eine Idee, wie ein solcher
"Barcode-Lokalisierungs-Algorithmus" arbeiten könnte? (Zumindest grob
das Grundprinzip erklären)

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.barcodeman.com/faq/2d.php

wenn ich mir die 2d barcodes dort anschaue (falls du solche meinst)
sehe ich recht eindeutige merkmale die bei jedem gleich sind und nach
denen man auch suchen können sollte.

Autor: Joachim Schäfer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, mein Fehler - ich meinte eindimenionale Barcodes, keine 2D.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://zebra.sourceforge.net/

gibts schon , mit guter API

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man mal davon ausgeht, wie die in den Kassentisch eingebauten 
optisch-mechanischen Scanner funktionieren - dann müsste man dieses 
Prinzip per Software nachbilden können.

In diesen Scannern ist erstmal eine Optik, die eine Laserdiode und eine 
Fotodiode (oder ein ganzes Array) über halbdurchlässige Spiegel so 
miteinander koppelt, dass die Fotodiode immer genau dorthig "guckt", wo 
der Strahl auftrifft.

Der Strahl wird mit einem rotierenden und einem feststehenden 
Polygonspiegel in einer beinahe stochastisch wirkenden Bahn "wild" in 
der Gegend herumgeschwenkt, so dass er alle potentiell im Sichtfeld 
vorhandenen Barcodes in den verschiedensten Winkeln überstreicht.

Der Datenstrom aus der Fotodiode wird mittels DSP kontinuierlich 
analysiert. Man macht sich also nicht die Mühe, den Barcode erst zu 
suchen, sondern man erkennt on-the-fly , ob man zufällig einen getroffen 
hat ...

Frank

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Der Datenstrom aus der Fotodiode wird mittels DSP kontinuierlich
>analysiert. Man macht sich also nicht die Mühe, den Barcode erst zu
>suchen, sondern man erkennt on-the-fly , ob man zufällig einen getroffen
>hat ...

Und das macht jeder DSP einfach so? Dazu braucht man kein Programm?
*Gelächter!*

Hier im Forum gab es mal eine Anfrage zwecks Erkennung von 2D-Barcodes 
auf kleinen Probenbehältern. Da gab es auch das Problem, dass der Code 
nicht "gerade", sondern auch mal etwas "schief" erkannt werden mußte.

Das Suchprinzip läuft so ab, dass man das Bild (was man eher mit einer 
Kamera als mit einer Photodiode aufnimmt) nach Linien durchsucht.
Dabei nutzt man den Umstand aus, dass Linien aus mehreren Punkten 
bestehen.
Man guckt sich also ein Raster von z.B. 3x3 Punkten an. Wird darin mehr 
als nur ein Punkt gefunden, wird in der Richtung dieser "Linie" weiter 
gesucht.
Wenn man dann eine Linie gefunden hat, kann man in senkrechter Richtung 
dazu den Barcode suchen...
Zumindest sucht man so Linien....
Es gibt tolle Bücher zum Thema "Bildverarbeitung"...

Die Scannerkassen arbeiten aber mit Lasernetzen und die Kamera reagiert 
nur auf diese Licht per Filter. Jetzt muß man sich nur vor Augen führen, 
wo der Laser eine Linie erzeugt und dessen "Echo-Signal" auswerten. Das 
könnte man vermutlich auch mit einzelnen Photoarrays machen.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und das macht jeder DSP einfach so? Dazu braucht man kein Programm?
>*Gelächter!*

Ja, irres Gelächter.

Nein, das macht der DSP nicht ohne Programm, aber - zumindest bei den 
Tischscannern - stochert der DSP nicht in den Pixeln herum und sucht 
nach Linien, sondern analysiert kontinulierlich das serielle Signal aus 
dem Fotoempfänger.

Es darf natürlich bezweifelt werden, ob dieses Prinzip für die Analyse 
von bereits vorhandenen Bildern wirklich geeignet ist, da gehe ich mit - 
man könnte es aber mal versuchen.

Wenn der OP einfach nur eine fertige Lösung will - das Web ist voll von 
passenden SDKs. Es könnte ja aber sein, dass er neugierig ist und sowas 
selber programmieren will, dann kann man ja mal verschiedene Wege 
ausprobieren ...

Frank

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.