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)
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.
Sorry, mein Fehler - ich meinte eindimenionale Barcodes, keine 2D.
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
>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.
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.