DE202012102113U1 - Optoelektronischer Codeleser - Google Patents

Optoelektronischer Codeleser Download PDF

Info

Publication number
DE202012102113U1
DE202012102113U1 DE201220102113 DE202012102113U DE202012102113U1 DE 202012102113 U1 DE202012102113 U1 DE 202012102113U1 DE 201220102113 DE201220102113 DE 201220102113 DE 202012102113 U DE202012102113 U DE 202012102113U DE 202012102113 U1 DE202012102113 U1 DE 202012102113U1
Authority
DE
Germany
Prior art keywords
code
image data
codes
evaluation unit
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE201220102113
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sick AG
Original Assignee
Sick AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sick AG filed Critical Sick AG
Priority to DE201220102113 priority Critical patent/DE202012102113U1/de
Publication of DE202012102113U1 publication Critical patent/DE202012102113U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1491Methods for optical code recognition the method including quality enhancement steps the method including a reconstruction step, e.g. stitching two pieces of bar code together to derive the full bar code

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)

Abstract

Optoelektronischer Codeleser (10) mit einem Lichtempfangselement (20) zur Umwandlung von Empfangslicht in Bilddaten sowie mit einer Auswertungseinheit (22), die dafür ausgebildet ist, Codebereiche (14, 40) in den Bilddaten aufzufinden und Codeinformationen aus den Codebereichen (14, 40) auszulesen, dadurch gekennzeichnet, dass die Auswertungseinheit (22) dafür ausgebildet ist, in den Bilddaten einen ersten Codebereich (14, 40) und einen zweiten Codebereich (14, 40) aufzufinden, die Bilddaten aus dem ersten Codebereich (14, 40) und dem zweiten Codebereich (14, 40) unter der Annahme, dass darin zueinander redundante Codes (40) enthalten sind, zu einem gemeinsamen Code (46) zu kombinieren und dann den gemeinsamen Code (46) zu decodieren, um die Codeinformationen zu erhalten.

Description

  • Die Erfindung betrifft einen optoelektronischen Codeleser s nach dem Oberbegriff von Anspruch 1.
  • Die verbreitesten Codeleser sind Barcodescanner, welche einen Barcode oder Strichcode mit einem Laserlesestrahl quer zum Code abtasten. Sie werden an Supermarktkassen, zur automatischen Paketidentifikation, Sortierung von Postsendungen oder bei der Gepäckabfertigung in Flughäfen und in anderen Logistikanwendungen häufig eingesetzt. Weitere Anwendungen umfassen Qualitäts- oder Teilekontrollen in Fertigungsprozessen. Mit der Weiterentwicklung der digitalen Kameratechnologie werden Barcodescanner zunehmend durch kamerabasierte Codeleser abgelöst. Statt Codebereiche abzuscannen, nimmt ein kamerabasierter Codeleser mit Hilfe eines CCD-Chips Bilder der Objekte mit den darauf befindlichen Codes auf. Kamerabasierte Codeleser kommen problemlos auch mit anderen Codearten als eindimensionalen Strichcodes zurecht, die wie ein Matrixcode auch zweidimensional aufgebaut sind und mehr Informationen zur Verfügung stellen.
  • Dabei werden herkömmlich die von der Bildverarbeitung segmentierten Regionen potentieller Codekandidaten sequentiell einer Decoderstufe übergeben. Die Decoderstufe wandelt diese Region über ein Abtastgitter oder eine Projektion in eine binarisierte zweidimensionale Bitmatrix um, aus der wiederum die in dem Symbol enthaltene Originalnachricht extrahiert oder decodiert wird.
  • Die Bilddaten der zu lesenden Codes sind im realen Betrieb von Störungen überlagert. Durch geschickte Wahl der Codierung können beim Auslesen Fehler bis zu einem gewissen Grad korrigiert werden. Bei starker Zerstörung des Codebereichs kann die maximale Fehlerkorrekturmöglichkeit des Symbols überschritten werden. Solche Codes sind somit absolut unlesbar. Ein Beispiel für derartige Störungen sind sogenannte Finger in den Coderegionen, also Leiterbahnen auf Wafern.
  • In vielen Fällen ist der Code mehrfach in einem von der Kamera aufgenommenen Bild oder in einer Bildsequenz vorhanden. Beispielsweise ist der gleiche Code mehrfach auf eine Leiterplatte oder ein sonstiges Objekt aufgedruckt und dadurch in dem Bild mehrfach vorhanden. In einer anderen wichtigen Anwendungsgruppe befinden sich die Code tragenden Objekte relativ zu dem Codeleser in Bewegung und werden mehrfach aufgenommen. Dies geschieht beispielsweise in einem sogenannten Lesetunnel, in dem Objekte an einem oder mehreren fest montierten Codelesern vorbeigefördert werden. Der Code ist dann in mehreren nacheinander aufgenommenen Bildern mit einem der Relativbewegung entsprechenden Versatz enthalten.
  • Im Stand der Technik erfolgen die Decodierversuche aber stets ohne Betrachtung der bereits zuvor ausgewerteten oder noch zu segmentierenden Codekandidatenregionen. Die grundsätzlich vorhandene Coderedundanz wird somit nicht erkannt und zumindest nicht genutzt.
  • Die EP 1 096 416 B1 offenbart eine Coderekonstruktion bei eindimensionalen Codes. Es ist denkbar, dass die Scanlinien in einem ungünstigen Winkel zu dem eindimensionalen Code stehen, so dass keine Scanlinie den gesamten Code quert. Dann wird eine vollständige Erfassung der Codeinformation durch überlappendes Zusammenfügen („stitching“) mehrerer Einzelscans erreicht. In den Überlappungsbereichen, wo mehrere Teillesungen identischer Codeinformation verfügbar sind, kann eine Mittelung oder ein Mehrheitsentscheid durchgeführt werden, um festzulegen, welche Einzelinformation für die Decodierung Verwendung finden soll. Da diese überlappende Auswertung nur an Schnittstellen der Einzelscans vorgenommen wird, ist die Korrektur von Störungen bei der Erfassung der Codes unzureichend. Das Problem von Teilerfassungen stellt sich außerdem für kamerabasierte Codeleser und zweidimensionale Codes nicht, weil hier keine Winkelabhängigkeit gegeben ist, beziehungsweise die relative Orientierung der Codes in den Bilddaten durch Bildverarbeitung korrigiert werden kann.
  • Es ist daher Aufgabe der Erfindung, eine erfolgreiche Codelesung auch bei stark zerstören Codes zu ermöglichen.
  • Diese Aufgabe wird durch einen optoelektronischen Codeleser nach Anspruch 1 elöst. Dabei geht die Erfindung von dem Grundgedanken aus, den Codeinhalt trotz einer Zerstörung des Codes, der über der Kapazität der Fehlerkorrekturen des Decodierers liegt, mit Hilfe der vorhandenen Coderedundanz noch zu lesen. Dazu sucht die Auswertungseinheit in einem Bild oder in einer Bildsequenz zur Decodierung des Codes in einem ersten Codebereich nach einem weiteren zweiten Codebereich, von dem aufgrund der Lage oder zeitlichen Abfolge angenommen werden kann, dass es sich um einen redundanten Code handelt. Die Bilddaten in dem ersten und zweiten Codebereich werden dann unter Ausnutzung der Redundanz miteinander kombiniert, um Fehlerstellen auszugleichen. Erst der daraus entstehende gemeinsame Code, in dem die Fehlerstellen verringert oder sogar beseitigt sind, wird dann decodiert.
  • Die Erfindung hat den Vorteil, dass durch Ausnutzung von Coderedundanzen die Leserate eines Codelesers besonders bei schwierigem Bildmaterial oder beim Lesen in Bewegung erhöht werden kann, wenn der gleiche Codeinhalt mehrfach in einem Bild oder einer Bildsequenz vorhanden ist. Die jeweils korrekten Codeinhalte können durch Kombination zusammengesetzt werden, die insbesondere in Form einfachster logischer Operationen implementiert sein kann. Damit werden auch Codes erfassbar, die im herkömmlichen sequentiellen Einzeldecodierverfahren aufgrund der Begrenzungen der Fehlerkorrekturverfahren eines Decoders nicht gelesen werden könnten.
  • Der Codeleser ist bevorzugt als kamerabasierter Codeleser ausgebildet, wobei das Lichtempfangselement ein matrix- oder zeilenförmiger Bildsensor ist. Der Bildsensor weist dabei beispielsweise eine Vielzahl zu einer Zeile oder einer Matrix angeordneten Lichtempfangselemente oder Pixel in CCD- oder CMOS-Technologie auf. Obwohl Bilddaten grundsätzlich auch mit Hilfe eines abtastenden Strahls eines Codescanners erfasst werden können, lässt sich über einen Bildsensor wesentlich einfacher ein der digitalen Verarbeitung zugängliches Bild erzeugen.
  • Die Auswertungseinheit ist bevorzugt dafür ausgebildet, Codebereiche mit zweidimensionalen Codes aufzufinden und zweidimensionale Codes zu decodieren. In einem zweidimensionalen Code lässt sich wesentlich mehr Information auf gleicher Fläche unterbringen als in einem Barcode. Es ist eine Reihe von Standards für zweidimensionale Codes bekannt.
  • Die Bilddaten weisen bevorzugt ein Bild mit mehreren Codebereichen auf. Das betrifft also Anwendungen, in denen die Objekte den gleichen Code redundant mehrfach tragen. Das ist aber ohnehin nicht unüblich, um Lesungen aus verschiedenen Perspektiven zu unterstützen.
  • Die Bilddaten weisen in einer bevorzugten Alternative mehrere Bilder mit Codebereichen auf. Die redundanten Codes sind hier also auf verschiedene Bilder verteilt. Entsprechende Bildsequenzen entstehen insbesondere, wenn dasselbe codetragende Objekt in verschiedenen Bewegungsstadien mehrfach aufgenommen wird, wie etwa bei der Codeerfassung an einem Förderband oder in einem Lesetunnel. Die redundanten Codes sind in solchen Anwendungen längst vorhanden, werden aber üblicherweise nicht oder jedenfalls nur für voneinander unabhängige sequentielle Decodierversuche ohne Ausnutzung der Redundanz über einer Verknüpfung mehrerer Bilder genutzt.
  • Die Auswertungseinheit ist bevorzugt dafür ausgebildet, die Bilddaten und insbesondere die Codebereiche zu binarisieren. Es entsteht dabei ein Schwarz-Weiß-Bild, was für das Lesen der meisten Codetypen ausreicht. Störungen in Grauwertbildern durch unterschiedliche Helligkeiten werden durch die Binarisierung beseitigt. Außerdem kann die durch Binarisierung entstehende Bitmatrix leichter mit einfachen bitlogischen Operationen bearbeitet werden. Intelligente Binarisierungsalgorithmen sind in der Lage, eine Fehlzuordnung von dunkeln und hellen Pixeln weitgehend zu vermeiden.
  • Die Auswertungseinheit ist bevorzugt dafür ausgebildet, die Codebereiche zu negieren. Dabei werden also nach der Binarisierung die Bitwerte vertauscht, so dass aus hellen Pixeln dunkle Pixel werden und umgekehrt. Für die Kombination von Codebereichen kann das negierte Bild der bessere Ausgangspunkt sein als das ursprüngliche Bild.
  • Die Auswertungseinheit ist bevorzugt dafür ausgebildet, Codebereiche oder negierte Codebereiche mittels logischem UND oder mittels logischem ODER zu einem gemeinsamen Code zu kombinieren. Die Verarbeitung ist einfach und extrem schnell, aber dennoch in der Lage, die aufgrund einer Zerstörung der fehlenden Information des einen Codebereichs aus dem anderen Codebereich zu rekonstruieren.
  • Die Auswertungseinheit ist bevorzugt dafür ausgebildet, den ersten Codebereich und den zweiten Codebereich mittels mindestens einer von vier bitlogischen Operationen zu kombinieren, nämlich:
    • – durch logische UND-Verknüpfung der binarisierten Bilddaten des ersten Codebereichs und des zweiten Codebereichs
    • – durch logische ODER-Verknüpfung der binarisierten Bilddaten des ersten Codebereichs und des zweiten Codebereichs
    • – durch logische UND-Verknüpfung der negierten binarisierten Bilddaten des ersten Codebereichs und des zweiten Codebereichs
    • – durch logische ODER-Verknüpfung der negierten binarisierten Bilddaten des ersten Codebereichs und des zweiten Codebereichs.
  • Alle diese Operationen sind schnell und auf einfacher Hardware implementierbar. Je nach Eigenschaften der Codes und der Zerstörungen ist eine bestimmte Auswahl der genannten bitlogischen Operationen besonders geeignet für die Rekonstruktion der Codeinformation aus den redundanten Codebereichen.
  • Die Auswertungseinheit ist bevorzugt dafür ausgebildet, alle vier bitlogischen Operationen auszuführen und die jeweils resultierenden gemeinsamen Codes zu decodieren. Die bitlogischen Operationen können dabei parallel zueinander oder nacheinander ausgeführt werden. Indem das Ergebnis von allen diesen vier bitlogischen Operationen ermittelt wird, werden keine bestimmten Eigenschaften der Polarität der Codes und der Zerstörung unterstellt. Dabei bedeutet Polarität des Codes, ob ein dunkler Code auf hellem Grund gesucht wird oder umgekehrt, und entsprechend Polarität der Zerstörung, ob diese durch einen dunkeln oder einen hellen Bereich verursacht ist, also beispielsweise durch Bildlücken oder Übersteuerungsbereiche. Prinzipiell reicht es, wenn die Decodierung nach einer der genannten bitlogischen Operationen erfolgreich ist. Es kann dann auf die weiteren bitlogischen Operationen mit nachfolgendem Decodierversuch verzichtet werden. Alternativ wird irgend eine der erfolgreichen Decodierungen als Ergebnis verwendet, oder es findet eine gegenseitige Plausibilisierung oder Ergänzung der Decodierversuche statt.
  • Die Auswertungseinheit ist bevorzugt dafür ausgebildet, bei Kenntnis der Polarität der Codes und der Polarität von Zerstörungen der Codes nur die eine entsprechende bitlogische Operation auszuführen und nur den einen daraus resultierenden gemeinsamen Code zu decodieren. Damit kann gezielt zur Beschleunigung der Auswertung nur die eine passende bitlogische Operation durchgeführt und ausgewertet werden. Als Beispiel sei bekannt, dass die Codes dunkel auf hellem Hintergrund sind und dass die wesentliche Ursache für Zerstörungen in Störlicht liegt, also helle Zerstörungen repariert werden sollen. Dann werden die Codes durch die binäre „0“ repräsentiert und die Zerstörungen durch die binäre „1“. Die passende bitlogische Operation ist dann eine ODER-Verknüpfung der negierten binarisierten Bilddaten. Auf diese Weise werden wie gewünscht und erforderlich die dunkeln Codebereiche in die helle Zerstörung hinein übertragen. Ganz analog kann auf einfache Weise für jede Kombination der Polaritäten von Code und Zerstörung die passende bitlogische Operation gefunden werden.
  • Die Auswertungseinheit ist bevorzugt dafür ausgebildet, bei Kenntnis der Polarität der Codes oder der Polarität von Zerstörungen der Codes nur die zwei entsprechenden bitlogischen Operationen auszuführen und die jeweils resultierenden gemeinsamen Codes zu decodieren. Hier liegen also weniger Informationen über die Polaritäten vor. Deshalb muss noch eine zusätzliche zweite bitlogische Operation ausgeführt werden, um beide Szenarien der unbekannten Polarität abzudecken.
  • Die Auswertungseinheit ist bevorzugt dafür ausgebildet, zunächst zu versuchen, die Bilddaten des ersten Codebereichs und/oder des zweiten Codebereichs für sich zu decodieren und nur falls dies scheitert, einen gemeinsamen Code zu bilden und zu decodieren. Die Kombination redundanter Codebereiche und der anschließende Decodierversuch des entstehenden gemeinsamen Codes werden also nur ausgeführt, wenn zuvor ein einfacher Decodierversuch gescheitert ist, der nur einen einzigen Codebereich nutzt. Das ist dann vorteilhaft, wenn stark zerstörte Codes die Ausnahme bleiben, weil dann das aufwändigere Verfahren nur selten gebraucht wird. Alternativ kann jeweils sofort und direkt die Lesung über redundante kombinierte Codebereiche erfolgen. Man erspart sich damit den vorgelagerten einfachen Leseversuch, dafür muss aber die etwas aufwändigere Lesung über kombinierte Codebereiche stets durchgeführt werden. Information geht gegenüber dem einfachen Leseversuch nicht verloren, wenn die vier bitlogischen Operationen angewandt werden, da zumindest eine dieser Operationen die Codebereiche auch dann korrekt verknüpft, wenn keine größeren Zerstörungen vorliegen.
  • Die Erfindung wird nachstehend auch hinsichtlich weiterer Merkmale und Vorteile beispielhaft anhand von Ausführungsformen und unter Bezug auf die beigefügte Zeichnung näher erläutert. Die Abbildungen der Zeichnung zeigen in:
  • 1 eine schematische Schnittdarstellung eines kamerabasierten Codelesers;
  • 2 eine schematische Übersichtsdarstellung eines Codelesers an einem Förderband mit codetragenden Objekten in Relativbewegung zu dem Codeleser;
  • 3a eine Darstellung eines Codes mit einer Zerstörung am Beispiel eines Datamatrix-Codes, dessen Informationsblöcke rein schematsich gezeigt sind;
  • 3b eine Darstellung eines Codes gemäß 3a mit einer Zerstörung an einer anderen Stelle des Codes; und
  • 3c eine Darstellung eines gemeinsamen Codes, der aus einer Kombination der Codes gemäß 3a und 3b entsteht und in dem die Zerstörung kompensiert ist.
  • 1 zeigt eine schematische Schnittdarstellung eines kamerabasierten Codelesers 10. Die Erfindung wird anhand des Beispiels des kamerabasierten Codelesers 10 beschrieben, obwohl ebenso vorstellbar ist, dass Bilddaten mit einem anderen Lichtempfänger gewonnen werden, etwa durch Abtastung mit einem Lesestrahl.
  • Der Codeleser 10 erfasst einen Aufnahmebereich 12, in dem sich zu lesende Codes 14 befinden können. Das Licht aus dem Aufnahmebereich 12 wird durch ein Aufnahmeobjektiv 16 empfangen, in dem nur eine dargestellte Linse 18 die Aufnahmeoptik repräsentiert. Ein Bildsensor 20, beispielsweise ein CCD- oder CMOS-Chip mit einer Vielzahl von zu einer Zeile oder einer Matrix angeordneten Pixelelementen, erzeugt Bilddaten des Aufnahmebereichs 12 und gibt diese als Rohbild oder Eingangsbild an eine als Ganzes mit Bezugszeichen 22 gekennzeichnete Auswertungseinheit weiter. Für eine bessere Erfassung des Codes 14 kann der Codeleser mit einer nicht dargestellten aktiven Beleuchtung ausgerüstet sein.
  • Die Auswertungseinheit 22 ist auf einem oder mehreren digitalen Bausteinen implementiert, beispielsweise Mikroprozessoren, ASICs, FPGAs oder dergleichen, die auch ganz oder teilweise außerhalb des Codelesers 10 vorgesehen sein können. Die Auswertungseinheit 22 umfasst eine Vorverarbeitungs- oder Segmentierungseinheit 24, eine Binarisierungseinheit 26, eine Kombiniereinheit 28 und eine Decodierungseinheit 30.
  • In der Segmentierungseinheit 22 werden Bildbereiche als Codebereiche identifiziert, in denen zu lesende Codes 14 vorhanden sein könnten, etwa anhand von Kontrasten oder Varianzen. Zusätzlich können die Bilddaten aufbereitet werden, also beispielsweise geglättet, helligkeitsnormiert oder dergleichen. Die Bilddaten in den Codebereichen werden anschließend in der Binarisierungseinheit 24 binarisiert, d.h. es wird ein Schwarz-Weiß-Bild aus den Grauwertdaten des Bildsensors 20 erzeugt. In anderen Ausführungsformen erfolgt die Binarisierung schon vor der Segmentierung, oder es wird darauf verzichtet und mit Grauwert- oder Farbbilddaten gearbeitet.
  • Die Funktionsweise der Kombiniereinheit 28 wird weiter unten im Zusammenhang mit 3 ausführlich erläutert. Kurz zusammengefasst werden hier Bilddaten aus mehreren Codebereichen mit zueinander redundanten Codes kombiniert, um einen gemeinsamen Code zu erhalten, in dem sich Zerstörungen in den einzelnen zugrundeliegenden Codebereichen untereinander ausgleichen.
  • Der gemeinsame Code wird dann einer Decodiereinheit 30 zugeführt, um den Codeinhalt auszulesen. Dies wird möglicherweise mit verschiedenen, unter unterschiedlichen Bedingungen zusammengeführten gemeinsamen Codes wiederholt, um die Wahrscheinlichkeit einer erfolgreichen Lesung bei teilweise zerstörten Bilddaten zu erhöhen.
  • An einem Ausgang 32 des Codelesers 10 können die gelesenen Codeinformationen ausgelesen werden. Der Ausgang 32 oder eine weitere, nicht dargestellte Schnittstelle kann auch dafür genutzt werden, Rohbilddaten oder Bilddaten in verschiedenen Verarbeitungsstufen auszugeben.
  • 2 zeigt den Codeleser 10 in einer wichtigen beispielhaften Anwendung, nämlich in einer Montage an einem Lesetunnel beziehungsweise über einem Förderband 34, welches Objekte 36, wie durch den Pfeil 38 angedeutet, durch das Sichtfeld des Codelesers 10 fördert. Wie in der gesamten Beschreibung sind gleiche Merkmale mit den gleichen Bezugszeichen versehen. Die Objekte 36 tragen an ihren Außenflächen Codes 14, die von dem Codeleser 10 gelesen und ausgewertet werden. Diese Codes 14 können von dem Codeleser 10 nur dann gelesen werden, wenn sie auf der Oberseite oder zumindest von oben erkennbar angebracht sind. Daher kann abweichend von der Darstellung in 2 zum Lesen eines etwa seitlich oder unten angebrachten Codes 14a eine Mehrzahl von Codelesern 10 aus verschiedenen Richtungen montiert sein, um eine sogenannte Omnilesung aus allen Richtungen zu ermöglichen.
  • Wegen der Kombiniereinheit 28 ist der Codeleser 10 in der Lage, unter Ausnutzen von Coderedundanzen Codes 14 zu lesen, die sonst aufgrund von Artefakten im Codebereich oder sonstigen Teilzerstörungen der Bilddaten im Codebereich nicht lesbar wären. Diese Coderedundanz kann vorliegen, weil der gleiche Code 14 mehrfach auf dem Objekt 20 und somit in einem aufgenommenen Einzelbild vorhanden ist.
  • Alternativ wird die Coderedundanz in einer Bildsequenz genutzt, in welcher der Code 14 mehrfach nacheinander aufgenommen ist. Dies geschieht unter anderem beim Lesen in Bewegung, beispielsweise in der in 2 dargestellten Anwendung. In einer solchen Situation ist die Coderedundanz ohne Mehraufwand implizit gegeben. Ist beispielsweise ein bestimmter Bereich im Lesefeld des Codelesers 10 überstrahlt, so werden hier keine auswertbaren Bilddaten gewonnen. Durch die Relativbewegung der Objekte 36 wandert aber dieser Defekt über den Codebereich, so dass in verschiedenen Bildern der Bildsequenz die Zerstörung unterschiedliche Teilbereiche des Codes 14 trifft. Somit verhindert die Zerstörung die Lesung des Codes 14 in jedem Einzelbild. Durch Ausnutzen der Coderedundanz in der Bildsequenz kann der Code 14 dennoch gelesen werden.
  • Anhand der 3 wird nun die Kombination von Codebereichen in der Kombiniereinheit 28 beschrieben. Als Beispiel wird die Struktur eines Datamatrixcodes gezeigt, obwohl andere 2D-Codes und 1D-Codes ebenso gelesen werden können.
  • Um tatsächlich eine Verbesserung der Leserate zu erzielen, sollten einige Voraussetzungen erfüllt sein. Sind einige dieser Voraussetzungen nicht gegeben, so ist das Verfahren weiterhin anwendbar, aber die Vorteile werden möglicherweise nur zum Teil oder unter ungünstigen Bedingungen gar nicht erzielt.
  • Zunächst sollte der Code 14 mehrfach in einem Einzelbild oder in einer Bildsequenz vorhanden sein, weil ohne solche redundanten Codedaten die Basis für eine Kombination fehlt. Die Zerstörungen sollten lokal disjunkt sein, sich also in den zu kombinierenden Codebereichen an unterschiedlichen Orten befinden. Teilbereiche, die in allen Codebereichen zerstört sind, können auch durch Kombination nicht rekonstruiert werden. Schließlich sollte die Zerstörung einfarbig sein, somit eindeutig als hell oder als dunkel klassifizierbar sein. Das ist bei realen Störeffekten fast immer der Fall. Andernfalls könnte man die Codebereiche unterteilen und die Teilbereiche zunächst einzeln kombinieren und anschließend wieder zusammensetzen, so dass die Bedingung in den Teilbereichen erfüllt ist.
  • 3a zeigt die Struktur eines Datamatrixcodes 40, dessen Codewörter 42 durch leere Blöcke illustriert sind. In einem realen Datamatrixcode 40 wären die Codewörter 42 nicht leer, sondern mit der eigentlichen Codeinformation in Form schwarzer Quadrate an den der Codeinformation entsprechenden Stellen gefüllt. Eine schematisch als schwarzer Balken dargestellte Zerstörung 44 verdeckt einen Teil von mehreren Codewörtern 42. Es sei unterstellt, dass die Zerstörung 44 die Fehlerkapazität überschreitet, beispielsweise einer Reed-Solomon-Korrektur in der Decodiereinheit 30. Dies hängt in der Praxis noch davon ab, welche tatsächliche schwarz-weiße Information unterhalb der Zerstörung 44 verdeckt wird beziehungsweise lesbar bleibt.
  • Sofern der Code 14, 40 trotz der Zerstörung 44 lesbar bleibt, bedarf es keiner Kombination redundanter Codebereiche. Daher sind Ausführungsformen denkbar, in denen zunächst versucht wird, den Code 14 ohne Kombination zu lesen. Nur wenn das nicht gelingt, werden redundante Codebereiche kombiniert. Andererseits wäre es unschädlich, ohne Ausnahme zu kombinieren, da unbeschädigte Codes 14 selbstverständlich auch nach der Kombination lesbar bleiben.
  • 3b zeigt ein weiteres redundantes Bild des Datamatrixcodes 40. Die Zerstörung 44 betrifft nun einen anderen Teilbereich. Ein derartiges relatives Wandern der Zerstörung 44 tritt bei nacheinander aufgenommenen Bildern in einer Anwendung wie in derjenigen der 2 regelmäßig auf. Aber auch wenn die Datamatrixcodes 40 mehrfach auf einem Objekt 36 angebracht sind und die Codebereiche aus demselben Bild stammen, ist es zumindest extrem unwahrscheinlich, dass eine Zerstörung 44 identische Teilbereiche trifft.
  • Die Kombiniereinheit 30 setzt nun aus den beiden Datamatrixcodes 40 einen gemeinsamen Code 46 zusammen, der in 3c gezeigt ist und in dem die Zerstörung 44 eliminiert oder zumindest reduziert ist. Denkbar sind dafür beliebige Verfahren, etwa eine Mittelung auf Ebene von Grauwerten.
  • In einer bevorzugten Ausführungsform sind die Codebereiche mit den Datamatrixcodes 40 samt der Zerstörung 44 zuvor in der Binarisierungseinheit 26 in ein reines Schwarz-Weiß-Bild gewandelt. Somit liegt eine Bitmatrix M1 und eine Bitmatrix M2 aus den beiden Codebereichen vor, die in 3a beziehungsweise 3b gezeigt sind. Diese beiden Bitmatrizen werden nun mit einer bitlogischen oder bool’schen Operation verknüpft, so dass eine neue Bitmatrix entsteht, in der die wegen der Zerstörung 44 fehlenden Informationen in der einen Matrix M1 aus der anderen Matrix M2 übertragen werden. Die bereits identisch in beiden Codebereichen enthaltenen Informationen bleiben nach der bitlogischen Operation erhalten, so dass nur die Fehlerstellen auskorrigiert werden.
  • Welche bitlogische Operation die passende ist, hängt von der Polarität des Codes 40 und der Polarität der Zerstörung 44 ab. Polarität bezeichnet dabei die Helligkeit, also ob der Code 40 beziehungsweise die Zerstörung 44 hell oder dunkel ist. In dem in 3 gezeigten Beispiel sind sowohl der Datamatrixcode 40 als auch die Zerstörung schwarz, somit durch eine binäre „0“ repräsentiert. Letzteres ist natürlich nur Konvention und damit beispielhaft. Die geeignete bitlogische Operation für das Beispiel ist ein „ODER“. Damit bleiben zum einen Teile des Datamatrixcodes 40 unberührt, die in beiden redundanten Codebereichen enthalten sind. Unter den Zerstörungen 44 trifft in den hellen Zwischenbereichen des Codes eine binäre „1“ auf eine binäre „0“ der Zerstörung 44, so dass durch „ODER“-Verknüpfung gerade die helle Information der Codezwischenbereiche rekonstruiert wird.
  • Je nach Polarität des Codes 40 und der Zerstörung 44 ist eine andere bitlogische Operation erforderlich. Kennt man die Polaritäten, kann die benötigte bitlogische Operation vorab festgelegt werden. Kennt man nur eine Polarität entweder des Codes 40 oder der Zerstörung 44, so sind zwei komplementäre bitlogische Operationen erforderlich.
  • Sind beide Polaritäten unbekannt, so werden die folgenden vier bitlogischen Operationen ausgeführt: M1 UND M2, M1 ODER M2, !M1 UND !M2, !M1 ODER !M2. Dabei bedeutet „!“ eine logische Negation oder Invertierung, also ein Austausch jeder binären „0“ durch die binäre „1“ und umgekehrt. Damit wird eine Unabhängigkeit davon erreicht, ob der Code hell auf dunklem Hintergrund ist oder umgekehrt, d.h. welche Polarität der Code hat.
  • Eine der vier entstehenden Bitmatrizen ist dann, sofern die eingangs genannten Voraussetzungen gegeben sind, stets decodierbar, weil die fehlende Information einer der beiden Matrizen über die einfarbige Zerstörung 44 in die Kombinationsmatrix übertragen wurde. Die Decodiereinheit 30 versucht jede der Kombinationsmatrizen zu decodieren, unternimmt demnach vier Leseversuche im allgemeinen Fall und zwei beziehungsweise nur einen Leseversuch bei Vorwissen über die Polaritäten. Die weiteren Decodierversuche können abgebrochen werden, sobald der Code einmal gelesen wurde.
  • In einer praktischen Implementierung kann sich die Auswertungseinheit 22 die jeweils aufgebauten Bitmatrizen merken, wenn Coderedundanzen über eine Bildsequenz hinweg genutzt werden sollen. Bei Coderedundanz innerhalb eines Einzelbilds genügt es, sich die Eckpunkte der detektierten Codekandidaten zu merken und sinnvolle Paarungen beispielsweise anhand ähnlicher Geometrien und Flächeninhalte zu bilden. Auf Basis der gefundenen sinnvollen Paarungen und der abgespeicherten Eckpunkte können dann jeweils nochmals zwei Bitmatrizen M1 und M2 generiert werden, aus denen mit den beschriebenen bitlogischen Operationen die Kombinationsmatrizen berechnet werden. Mit den Kombinationsmatrizen werden dann die Decodierversuche angestoßen. Nach einem Decodiervorgang erhält man dabei unter Umständen automatisch zwei Gut-Lesungen auf den ursprünglichen Regionen von M1 und M2.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • EP 1096416 B1 [0007]

Claims (13)

  1. Optoelektronischer Codeleser (10) mit einem Lichtempfangselement (20) zur Umwandlung von Empfangslicht in Bilddaten sowie mit einer Auswertungseinheit (22), die dafür ausgebildet ist, Codebereiche (14, 40) in den Bilddaten aufzufinden und Codeinformationen aus den Codebereichen (14, 40) auszulesen, dadurch gekennzeichnet, dass die Auswertungseinheit (22) dafür ausgebildet ist, in den Bilddaten einen ersten Codebereich (14, 40) und einen zweiten Codebereich (14, 40) aufzufinden, die Bilddaten aus dem ersten Codebereich (14, 40) und dem zweiten Codebereich (14, 40) unter der Annahme, dass darin zueinander redundante Codes (40) enthalten sind, zu einem gemeinsamen Code (46) zu kombinieren und dann den gemeinsamen Code (46) zu decodieren, um die Codeinformationen zu erhalten.
  2. Codeleser (10) nach Anspruch 1, der als kamerabasierter Codeleser (10) ausgebildet ist, wobei das Lichtempfangselement (20) ein matrix- oder zeilenförmiger Bildsensor ist.
  3. Codeleser (10) nach Anspruch 1 oder 2, wobei die Auswertungseinheit (22) dafür ausgebildet ist, Codebereiche (14, 40) mit zweidimensionalen Codes (40) aufzufinden und zweidimensionale Codes (40) zu decodieren.
  4. Codeleser (10) nach einem der vorhergehenden Ansprüche, wobei die Bilddaten ein Bild mit mehreren Codebereichen (14, 40) aufweisen.
  5. Codeleser (10) nach einem der Ansprüche 1 bis 3, wobei die Bilddaten mehrere Bilder mit Codebereichen (14, 40) aufweisen, insbesondere mehrere Bilder desselben codetragenden Objekts (36) in verschiedenen Bewegungsstadien.
  6. Codeleser (10) nach einem der vorhergehenden Ansprüche, wobei die Auswertungseinheit (22, 26) dafür ausgebildet ist, die Bilddaten und insbesondere die Codebereiche (14, 40) zu binarisieren.
  7. Codeleser (10) nach Anspruch 6, wobei die Auswertungseinheit (22) dafür ausgebildet ist, die Codebereiche (14, 40) zu negieren.
  8. Codeleser (10) nach Anspruch 6 oder 7, wobei die Auswertungseinheit (22) dafür ausgebildet ist, Codebereiche (14, 40) oder negierte Codebereiche mittels logischem UND oder mittels logischem ODER zu einem gemeinsamen Code (46) zu kombinieren.
  9. Codeleser (10) nach einem der Ansprüche 6 bis 8, wobei die Auswertungseinheit (22) dafür ausgebildet ist, den ersten Codebereich (14, 40) und den zweiten Codebereich (14, 40) mittels mindestens einer von vier bitlogischen Operationen zu kombinieren: – durch logische UND-Verknüpfung der binarisierten Bilddaten des ersten Codebereichs (14, 40) und des zweiten Codebereichs (14, 40) – durch logische ODER-Verknüpfung der binarisierten Bilddaten des ersten Codebereichs (14, 40) und des zweiten Codebereichs (14, 40) – durch logische UND-Verknüpfung der negierten binarisierten Bilddaten des ersten Codebereichs (14, 40) und des zweiten Codebereichs (14, 40) – durch logische ODER-Verknüpfung der negierten binarisierten Bilddaten des ersten Codebereichs (14, 40) und des zweiten Codebereichs (14, 40).
  10. Codeleser (10) nach Anspruch 9, wobei die Auswertungseinheit (22) dafür ausgebildet ist, alle vier bitlogischen Operationen auszuführen und die jeweils resultierenden gemeinsamen Codes (46) zu decodieren.
  11. Codeleser (10) nach Anspruch 9, wobei die Auswertungseinheit (22) dafür ausgebildet ist, bei Kenntnis der Polarität der Codes (40) und der Polarität von Zerstörungen (44) der Codes (40) nur die eine entsprechende bitlogische Operation auszuführen und nur den einen daraus resultierenden gemeinsamen Code (46) zu decodieren.
  12. Codeleser (10) nach Anspruch 9, wobei die Auswertungseinheit (22) dafür ausgebildet ist, bei Kenntnis der Polarität der Codes (40) oder der Polarität von Zerstörungen (44) der Codes (40) nur die zwei entsprechenden bitlogischen Operationen auszuführen und die jeweils resultierenden gemeinsamen Codes (46) zu decodieren.
  13. Codeleser (10) nach einem der vorhergehenden Ansprüche, wobei die Auswertungseinheit (22) dafür ausgebildet ist, zunächst zu versuchen, die Bilddaten des ersten Codebereichs (14, 40) und/oder des zweiten Codebereichs (14, 40) für sich zu decodieren und nur falls dies scheitert einen gemeinsamen Code (46) zu bilden und zu decodieren.
DE201220102113 2012-06-11 2012-06-11 Optoelektronischer Codeleser Expired - Lifetime DE202012102113U1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE201220102113 DE202012102113U1 (de) 2012-06-11 2012-06-11 Optoelektronischer Codeleser

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE201220102113 DE202012102113U1 (de) 2012-06-11 2012-06-11 Optoelektronischer Codeleser

Publications (1)

Publication Number Publication Date
DE202012102113U1 true DE202012102113U1 (de) 2012-07-03

Family

ID=46605451

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201220102113 Expired - Lifetime DE202012102113U1 (de) 2012-06-11 2012-06-11 Optoelektronischer Codeleser

Country Status (1)

Country Link
DE (1) DE202012102113U1 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2779023A1 (de) * 2013-03-15 2014-09-17 Cognex Corporation Systeme und Verfahren zum Muster-Stitching und Decodieren mehrerer aufgenommener Bilder
US9600703B2 (en) 2013-03-15 2017-03-21 Cognex Corporation Systems and methods for sorting image acquisition settings for pattern stitching and decoding using multiple captured images
TWI638130B (zh) * 2017-04-25 2018-10-11 Benq Materials Corporation 一種片材面內標記檢測裝置及使用該裝置之檢測方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1096416B1 (de) 1999-10-26 2009-12-30 Datalogic S.P.A. Verfahren zum Wiederaufbau eines Streifenkodes durch aufeinanderfolgende Abtastungen

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1096416B1 (de) 1999-10-26 2009-12-30 Datalogic S.P.A. Verfahren zum Wiederaufbau eines Streifenkodes durch aufeinanderfolgende Abtastungen

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2779023A1 (de) * 2013-03-15 2014-09-17 Cognex Corporation Systeme und Verfahren zum Muster-Stitching und Decodieren mehrerer aufgenommener Bilder
US9104932B2 (en) 2013-03-15 2015-08-11 Cognex Corporation Systems and methods for pattern stitching and decoding using multiple captured images
US9600703B2 (en) 2013-03-15 2017-03-21 Cognex Corporation Systems and methods for sorting image acquisition settings for pattern stitching and decoding using multiple captured images
EP3229170A3 (de) * 2013-03-15 2018-02-28 Cognex Corporation Systeme und verfahren zum muster-stitching und decodieren mehrerer aufgenommener bilder
EP3654231A1 (de) * 2013-03-15 2020-05-20 Cognex Corporation Systeme zum muster-stitching und decodieren mehrerer aufgenommener bilder
TWI638130B (zh) * 2017-04-25 2018-10-11 Benq Materials Corporation 一種片材面內標記檢測裝置及使用該裝置之檢測方法

Similar Documents

Publication Publication Date Title
EP3428834B1 (de) Optoelektronischer codeleser und verfahren zum lesen von optischen codes
EP2417561B1 (de) Zweidimensionaler symbolcode und verfahren zum lesen des symbolcodes
EP3454298B1 (de) Kameravorrichtung und verfahren zur erfassung eines stromes aus objekten
EP1645839B1 (de) Vorrichtung und Verfahren zur Überwachung von bewegten Objekten
AU2006227490B2 (en) Apparatus and process for two-stage decoding of high-density optical symbols
EP2555160B1 (de) Erzeugung eines in interessante und uninteressante Bereiche vorsegmentierten Bildes
DE2417282A1 (de) Vorrichtung zum erkennen eines musters
DE69814105T2 (de) Verfahren zur automatischen Regulierung der Eigenschaften eines optischen Codelesesystems
DE102013112040B4 (de) System und Verfahren zum Auffinden von sattelpunktartigen Strukturen in einem Bild und Bestimmen von Informationen daraus
DE102011051934A1 (de) Verfahren und Vorrichtung zur OCR-Erfassung von Wertdokumenten mittels einer Matrixkamera
EP2639738A1 (de) Verfahren und Lesegerät zur Erfassung einer Mehrzahl nacheinander auf eine Anzeigevorrichtung dargestellter zweidimensionaler Codes
DE112018005068T5 (de) Verfahren und system zum lesen von barcodes, die auf mehreren bildern aufgenommen sind
DE202012102113U1 (de) Optoelektronischer Codeleser
EP2677492A1 (de) Codeleser und Verfahren zur Online-Verifikation eines Codes
DE102014116692A1 (de) Codieren/Decodieren von Informationen aus einer graphischen Informationseinheit
DE102014114506A1 (de) Kamera zur Montage an einer Fördereinrichtung und Verfahren zur Inspektion oder Identifikation
EP4075394B1 (de) Erfassung eines bewegten stromes von objekten
DE102022109916A1 (de) Systeme und verfahren zur schnellen automatischen einstellung von industriellen festsicht-kameras
EP3822844A1 (de) Codeleser und verfahren zum lesen von optischen codes
EP4167123B1 (de) Kamerabasierter codeleser und verfahren zum lesen optischer codes
DE112005002383T5 (de) Verfahren zum Decodieren von Strichcodesymbolen und dergleichen unter Verwendung mehrerer Abtastlinien
EP4087234B1 (de) Kamera und verfahren zur erfassung von bilddaten
EP4277259B1 (de) Aufnehmen und helligkeitsanpassung eines bildes
DE202021105663U1 (de) Kamerabasierter Codeleser
EP4312150A1 (de) Lesen eines optischen codes

Legal Events

Date Code Title Description
R207 Utility model specification

Effective date: 20120823

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years
R158 Lapse of ip right after 8 years