Forum: PC-Programmierung Barcode-Lokalisierungs-Algorithmus


von Joachim Schäfer (Gast)


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)

von Tobi (Gast)


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.

von Joachim Schäfer (Gast)


Lesenswert?

Sorry, mein Fehler - ich meinte eindimenionale Barcodes, keine 2D.

von Alex (Gast)


Lesenswert?

http://zebra.sourceforge.net/

gibts schon , mit guter API

von Frank (Gast)


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

von STK500-Besitzer (Gast)


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.

von Frank (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.