Barcode in Bild erkennen

Ich bräuchte ein wenig Hilfe, bei der Erkennung von Barcodes in Bilddateien oder von mir aus auch in PDFs. So eine gewisse Abfolge, wie man den Barcode erkennt, schwebt mir schon vor, aber das sind alles selbst ausgedachte Überlegungen. Sicher nix Fertiges oder Fehlerfreies.

Mein Prinzip würde etwa so aussehen. Ich würde Pixel für Pixel durch das Bild durchgehen und nach einem festgelegten Schwellenwert die Pixel weiß oder schwarz machen. So das ich am Ende ein Bild mit 2 Farben hab. Dann würd ich schauen das ich kleinere "Pixel haufen" übermale. Also wenn z.b. nur 3 Pixel aneinander hängen oder so würd ich die einfach mal weiß machen. Und dann naja. Dann würd ich wahrscheinlich die Datei wieder Pixel für Pixel durchlaufen und schauen ob ich was finde das nach nem horizonalen oder vertikalen Strich aussieht. Aber so richtig glaub ich nicht dran das es das schon war, bzw. das es schon reicht.

Ich denk auch das mit dem Schwellenwert ist nicht ganz einfach. Hat einer einen besseren und vorallem vollständigen Ansatz wie man Strichcodes in einem Bild findet?

Ich nehm auch vorzugsweise irgendwas (am besten in .net-Sprache) programmiertes Codeschnippsel an.^^
 
Schonmal ganz nett, aber so richtig verstehen tu ich es nicht. Was ist den mit "Measure horizontal and vertical contrast of the image" gemeint? Also übersetzen kann ich es, aber was soll der horizontale bzw. vertikale Konstrast sein?
 
Wenn du einen Barcode als Foto aufnimmst, sind ja die Kontraste rund um den Barcode anders als direkt am Barcode-Bild, so dass du durch die Messung der Kontraste den eigentlichen Barcode identifizieren kannst. Ausserdem ist bei Fotos das Problem, dass du keine geraden schwarzen Linien hast, sondern dass diese zumeist in Grautönen an den Rändern auslaufen oder sogar durch Grautöne ineinander übergehen. Um also die eigentlichen Linien erkennen zu können, müssen die eigentlichen Linien besser identifiziert werden als wenn du einen Barcode als digitales Produkt aus einem Grafik-Programm zur Verfügung hast. Somit ist also eine Kontrastmessung der sicherere Weg um den Barcode eindeutig zu bekommen.
 
Nach dem, was ich im Studium zum Thema Bildverarbeitung gelernt habe, nutzt man für sowas am ehesten eine Kantenerkennung. Nach Durchlauf eines entsprechenden Filters (am besten über das Bild in Schwarz/Weiss oder Graustufen), sollten nur noch Kanten im Bild zu finden sein. Anhand dieser kann man dann nach dem Muster eines Barcodes suchen, also bspw. viele gleiche Kanten parallel nebeneinander und diese separieren. Danach kann man dann entweder versuchen anhand dieses Teils die Dicke der einzelnen Striche zu erkennen oder man nimmt andere Filter, die dafür besser geeignet sind und führt diese nochmal auf dem orignalen Bildausschnitt aus.
 
Also ich hab das ganze jetzt mittels Sobel-Operator gemacht. Also zumindest die Kantenerkennung. Nun weiß ich leider nicht so wirklich weiter.:rolleyes:
 
Jetzt solltest du dann versuchen das Muster eines Barcodes zu finden, also parallele Kanten, die in etwa gleicher Länge gehäuft nebeneinander auftreten. Danach solltest du den Bildausschnitt haben, der den Barcode enthält. Anschliessend musst du ihn halt noch erkennen, also dann evtl. wirklich mit deiner Idee eines Schwellenwertes entlang des Barcodes die Dicken der einzelnen Striche auslesen.
 
Zurück
Oben