Advanced Barcode Information
Total Page:16
File Type:pdf, Size:1020Kb
Fachhochschule Nordwestschweiz (FHNW) Abteilung fur¨ angewandte Informatik Advanced BarCode Information PAX 0607 19 eingereicht von: Pascal Bender Philippe O. Wagner eingereicht am: Muttenz, 6. Juli 2007 Betreuer: Herr Prof. Dr. Christoph Stamm Assistent: Herr Oliver Ruf 2 Zusammenfassung Diese Projektarbeit beschreibt die evaluierten Konzepte zur Dekodierung von handelsublichen¨ Barcodes, so- wie den Weg zur Entscheidungsfindung der dafur¨ angebrachten Methoden zur effizienten Erkennung dieser Strichcodes mittels Auswertung von Pixeldaten uber¨ Computer Vision. Desweiteren wurde als Grundlage die zu verwendende Soft- und Hardware analysiert und zur Erklarung¨ und Erlauterung¨ aufkommender Sachverhalte herangezogen. Die gewonnenen Einsichten und ausprogrammierten Algorithmiken wurden anschliessend in eine modulare und erweiterbare Applikation eingebettet, welche das Abfragen von definierten Datenquellen uber¨ verschiede- ne Transportprotokolle, Caching von Daten und weiteren Features ermoglicht.¨ Diese Anwendung wurde zuerst fur¨ Nokia Smartphones der Serie 60 entwickelt und anschliessend aus Performancegrunden¨ auf Desktop Sys- teme plattformunabhangig¨ portiert. ABCinfo 3 Inhaltsverzeichnis 1 Einleitung 6 1.1 Auftrag ............................................... 6 1.2 Ausgangslage............................................ 7 1.3 Projektplanung ........................................... 8 1.3.1 Analyse........................................... 8 1.3.2 Entwurf........................................... 9 1.3.3 Entwicklung ........................................ 10 1.3.4 Optimierung/Testen..................................... 11 1.3.5 Dokumentation....................................... 12 2 Analyse und Konzeption 13 2.1 Mittelanalyse ............................................ 13 2.1.1 Python ........................................... 13 2.1.2 Nokia S60 (Model N93) .................................. 15 2.1.3 Python fur¨ S60 ....................................... 17 2.1.4 Erkenntnisse ........................................ 18 2.2 Methodenanalyse .......................................... 19 2.2.1 Aufbau von Barcodes .................................... 19 2.2.2 Computer Vision Konzepte ................................. 28 2.2.3 Applikationskonzepte ................................... 33 3 Entwurf & Realisierung 39 3.1 Einleitung .............................................. 39 3.2 Konzeptrealisierung / Entscheidungen ............................... 40 3.2.1 Computer Vision Konzepte ................................. 40 3.2.2 Applikationskonzepte ................................... 41 3.3 Packaging .............................................. 44 3.4 Klassen und Organisation ...................................... 45 3.4.1 Externe Daten ........................................ 45 3.4.2 Applikationseinstellungen ................................. 45 3.4.3 Dateneinstellungen ..................................... 46 3.4.4 E-Nummern Einstellungen ................................. 46 3.5 Sequenzen / Ablauf ......................................... 49 3.6 Barcode Dekoder Voraussetzungen ................................. 51 3.7 Barcode Dekoder .......................................... 52 3.7.1 Praprozess¨ ......................................... 53 3.7.2 Prozess ........................................... 56 3.7.3 Validierung ......................................... 59 3.8 Desktop Version – Implementation ................................. 61 3.8.1 Grafischer Modus ...................................... 61 3.8.2 Konsolen Modus ...................................... 62 3.9 Zusatzinformationen zur Implementierung der evaluierten Konzepte . 63 3.9.1 Applikationsentwicklung .................................. 63 3.9.2 Algorithmusentwicklung .................................. 64 ABCinfo 4 4 Optimierung / Testen 65 4.1 Einleitung.............................................. 65 4.2 Testen................................................ 65 4.2.1 Testbilder.......................................... 68 4.3 Applikationsoptimierung...................................... 72 4.4 Scriptsprache vs. Algorithmik ................................... 72 5 Ergebnisse 73 6 Ausblick 74 6.1 Erweiterungen der Algorithmik................................... 74 6.2 Erweiterungen der Applikation................................... 74 7 Inhalt der beiliegenden CD 75 8 Glossar 76 Stichwortverzeichnis 80 Literatur 82 ABCinfo 5 Vorwort Die vorliegende Arbeit entstand am Institut fur¨ Informatik der Fachhochschule Nordwestschweiz (FHNW). Sie begann mit ihrem KickOff am 23. Oktober 2006 und dauerte bis zum 6. Juli 2007. Dank unserem Auftraggeber, dem Institut fur¨ mobile und verteilte Systeme (IMVS) der FHNW, durften wir einen interessanten und abwechs- lungsreichen Einblick in die Welt der mobilen Applikationsentwicklung in Kombination mit der Anwendung von Computer Vision auf Mobiltelefonen geniessen. An dieser Stelle mochten¨ wir eben diesem Auftraggeber herzlich dafur¨ danken. Ebenso sprechen wir unserem Ansprechpartner, Oliver Ruf, fur¨ seine stetige Bereitschaft, uns bei Problemen zur Seite zu stehen, unseren Dank aus. Desweiteren gebuhrt¨ unserem betreuenden Dozenten und Leiter des IMVS, Prof. Dr. C. Stamm, Dank fur¨ sein Engagement und seine Unterstutzung.¨ Auch unseren Kommilitonen danken wir fur¨ die anregenden Gesprache¨ und Meinungen. ABCinfo 6 1 Einleitung 1.1 Auftrag Zur Klarung¨ des Auftrages wird an dieser Stelle die Originalpassage aus dem Antrag fur¨ Projekt- und Diplom- arbeiten herangezogen: ’Heutzutage haben fast alle der gangigen¨ Mobiltelefone eine integrierte Kamera, welche hoch- auflosende¨ Bilder liefert. Die Projektarbeit umfasst die Entwicklung einer Applikation, wel- che mit dieser Kamera Barcodes als Bilder erfasst und mittels Computer Vision (CV) verar- beitet. Aufgrund der nun erhaltenen Identifikation holt die Applikation zusatzliche¨ Informationen zu dem Produkt/Artikel/etc. aus dem Internet und stellt diese dem Anwender zur Verfugung.¨ Die zu verwendende Technologie ist die Python Programmiersprache, welche seit dem Januar 2006 von Nokia fur¨ die S60 Serie als OpenSource Projekt [14] veroffentlich¨ wurde. Die besondere Herausforderung dieses Projektes sind die Erkennung der Barcodes mittels CV und die Entwicklung einer modularen und erweiterbaren Umgebung.’ Die Ziele, welche mit diesem Auftrag erreicht werden sollen, setzen sich wie folgt zusammen: • Funktionierender Prototyp (zur Vorstellung bei potentiellen Kunden) • Benutzerdokumentation • Technische Dokumentation Der angestrebte Zeitraum fur¨ das Projekt erstreckt sich uber¨ 36 Wochen und startet mit dem KickOff Meeting vom 23.10.2006 bis hin zum Abgabedatum am 6.7.2007. ABCinfo 7 1.2 Ausgangslage Im Vorfeld dieser Arbeit wurde nach bereits existierenden Implementationen geforscht. Um einen ersten Ein- druck uber¨ die herrschenden Marktverhaltnisse¨ zu erlangen, werden hierzu die folgenden Projekte kurz erlautert:¨ • ReadBarC / ReadBarJ • BaToo • CodeCheck ReadBarC / ReadBarJ Das ReadBar Projekt [9], welches als C++, sowie als Java Implementation von John A. Webb entwickelt wurde, beinhaltet einen Algorithmus zum dekodieren von Barcodes auf Symbian basierten Mobiltelefonen. Da wir unseren eigenen Algorithmus zur Dekodierung entwickeln wollten und dieser auf Python basieren sollte, wurde darauf verzichtet eine Portierung von C++ (oder Java) auf Python vorzunehmen. Ebenso wenig wollten wir die existierende Rechenvorschrift als C-Extension in Python einbinden und als Modul verwenden (Python- Wrapping). Die Voraussetzung dafur¨ ware¨ eine weitere Einarbeitung in die C-API und das proprietare¨ C-Umfeld von Symbian gewesen. Dieses Konzept wird zu einem spateren¨ Zeitpunkt in diesem Dokument aufgearbeitet und erlautert.¨ BaToo Das Barcode Recognition Toolkit [21] wurde an der ETH Zurich¨ von Robert Adelmann entwickelt und existiert als C++, sowie als Java Implementation. Der Ausblick auf einen eigens entwickelten, auf Python basierenden Algorithmus, verwarf auch hier die Idee einer Implementation von Fremdcode. Obwohl keines dieser beiden Projekte als ’Codelieferant’ diente, konnten wir uns anhand des frei verfugbaren¨ Codes und der Dokumentation dazu ein erstes Bild uber¨ allfallige¨ Konzepte gemacht werden. Ausserdem hielten wir Kontakt zum Entwickler von BaToo, Robert Adelmann, der uns mit seiner Meinung nutzliche¨ Tipps geben konnte. Zum konkreten Inhalt und dessen Nutzen wird ebenfalls spater¨ in diesem Dokument eingegangen. CodeCheck Zu Roman Bleichenbacher, Initiant und Entwickler von CodeCheck [22], wurde zu Beginn ein intensiver Kon- takt gepflegt. Sein Projekt hat nichts mit der Erkennung von Barcodes zu tun, vielmehr steht CodeCheck fur¨ eine Datenbank mit einer enormen Menge an Produktinformationen. Hinzu kommen Allergikerinformationen, auf welche anhand von E-Nummern zugegriffen werden kann. Die Idee unsererseits war es, anhand von detek- tierten Barcodes auf diese Informationen zuzugreifen, um diese dem Benutzer zur Verfugung¨ stellen zu konnen.¨ Nach einem Treffen und einer Projektvorstellung bei Roman Bleichenbacher, steuerte man eine gemeinsame Zusammenarbeit mit CodeCheck an. Die Fulle¨ an abrufbaren Informationen rundet den Datenteil des Projekts ab. Wie sich im Verlauf der Arbeit herausstellen musste, entwickelte sich eine Kooperation nur schleppend und musste einige Tage vor Projektabgabe abgesagt werden. ABCinfo 8 1.3 Projektplanung Um ein Projekt, welches 36 Wochen dauert und eine gewisse Komplexitat¨ mit sich bringt, erfolgreich durch- zufuhren,¨ bedarf