DE102013110899B4 - Symbologie-Lesegerät mit Multicore-Prozessor und Systeme und Verfahren zum Betrieb desselben - Google Patents

Symbologie-Lesegerät mit Multicore-Prozessor und Systeme und Verfahren zum Betrieb desselben Download PDF

Info

Publication number
DE102013110899B4
DE102013110899B4 DE102013110899.7A DE102013110899A DE102013110899B4 DE 102013110899 B4 DE102013110899 B4 DE 102013110899B4 DE 102013110899 A DE102013110899 A DE 102013110899A DE 102013110899 B4 DE102013110899 B4 DE 102013110899B4
Authority
DE
Germany
Prior art keywords
images
processor
image processing
cores
image
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.)
Revoked
Application number
DE102013110899.7A
Other languages
English (en)
Other versions
DE102013110899A1 (de
Inventor
Laurens Nunnick
Richard Reuter
Frank Winzen
Mario Joussen
Joerg Kesten
James A. Negro
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.)
Cognex Corp
Original Assignee
Cognex Corp
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=50407267&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE102013110899(B4) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Priority claimed from US13/645,173 external-priority patent/US10154177B2/en
Priority claimed from US13/645,213 external-priority patent/US8794521B2/en
Application filed by Cognex Corp filed Critical Cognex Corp
Publication of DE102013110899A1 publication Critical patent/DE102013110899A1/de
Application granted granted Critical
Publication of DE102013110899B4 publication Critical patent/DE102013110899B4/de
Revoked legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10821Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
    • G06K7/10831Arrangement of optical elements, e.g. lenses, mirrors, prisms

Abstract

Ein Bildverarbeitungssystem (100) umfassend:eine Kamera (110) beinhaltend einen Imager (112) und eine Prozessor-Anordnung (114), wobei die Prozessor-Anordnung (114) beinhaltet:(a) einen Pre-Prozessor (210) der mit dem Imager (112) verbunden ist und mit einer ersten Bildfrequenz Bilder (2210, 2212, 2214) von dem Imager (112) empfängt und vor-verarbeitet, und(b) einen Multicore-Prozessor (114) der vor-verarbeitete Bilder vom Pre-Prozessor (210) empfängt und Bildverarbeitungsaufgaben daran durchführt, um Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) bezüglich der Information in den Bildern (2210, 2212, 2214) zu generieren.

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft ein maschinelles Bildverarbeitungssystem und ganz besonders Bildverarbeitungssysteme, die in der Lage sind, Symbologien, wie beispielsweise Barcodes zu erfassen, zu verarbeiten und zu decodieren.
  • HINTERGRUND DER ERFINDUNG
  • Bildverarbeitungssysteme, die Messungen, Kontrollen, Ausrichtungen auf Objekte und/oder Decodieren von Symbologien (z. B. eindimensionale und zweidimensionale Barcodes - auch „IDs“ genannt) durchführen, werden in einem breiten Anwendungsbereich und in vielen Industrien verwendet. Beispielsweise offenbaren EP 0 833 270 B1 und DE 602 19 754 T2 jeweils ein Bildverarbeitungssystem auf Objekten angeordnete Symbologien dekodieren. AT 504 940 B1 offenbart dagegen ein Bildverarbeitungssystem, welches zur topographischen Messung einer Oberfläche eines Objekts dient. Diese Systeme basieren auf der Anwendung von Bildsensoren (auch „Imager“ genannt), welche Bilder (in der Regel Graustufen- oder Farbbilder, und in ein, zwei oder drei Dimensionen) des Gegenstands oder Objekts erfassen, und diese erfassten Bilder mittels eines internen oder verbundenen Bildverarbeitungsprozessors verarbeiten. Typisch sind im Prozessor sowohl die Verarbeitungshardware als auch die nicht flüchtigen computerlesbaren Programmanweisungen, welche einen oder mehrere Bildverarbeitungsprozesse durchführen, um eine gewünschte Ausgabe auf Grundlage der verarbeiteten Bildinformation zu erzeugen, enthalten. Diese Bildinformation wird in der Regel innerhalb einer Anordnung von Bildpunkten mit jeweils unterschiedlichen Farben und/oder Intensitäten vorgesehen. In dem Beispiel eines ID-Lesegerätes (hier auch „Kamera“ genannt) erfasst der Benutzer oder der automatisierte Prozess ein Bild eines Objekts von dem angenommen wird, dass es einen oder mehrere Barcodes, 2D-Codes oder andere Symbol-Typen enthält. Das Bild wird zur Identifizierung von Codemerkmalen verarbeitet, die dann durch einen Decodiervorgang und/oder Prozessor decodiert werden, um die enthaltenen und durch den Code repräsentierten alphanumerischen Daten zu erhalten.
  • Eine häufige Anwendung für ID-Lesegeräte ist das Verfolgen und Sortieren von Objekten, die in der Fertigung oder Logistik entlang einer Strecke (z. B. einem Förderband) bewegt werden. Das ID-Lesegerät kann so über der Strecke in einem geeigneten Winkel angeordnet werden, dass es jede zu erwartende ID an jeweiligen Objekten erfassen kann, wenn sich diese durch das Sichtfeld bewegen. Die Brennweite des Lesegerätes kann in Bezug auf das Objekt variieren, abhängig von der Platzierung des Lesergerätes in Bezug auf die sich bewegende Strecke und in Bezug auf die Größe (d. h. Höhe) des Objekts. Das heißt, größere Objekte können zur Folge haben, dass sich darauf befindliche IDs näher beim Lesegerät befinden, während kleinere/flachere Objekte IDs enthalten können, die vom Lesegerät weiter entfernt sind. Die ID sollte dabei zum korrekten Abbilden und Decodieren in jedem Fall mit ausreichender Auflösung erscheinen. Nachteiliger weise definieren die meisten im Handel erhältlichen Bildsensoren, welche die Basis für die Kameras der Bildverarbeitungssysteme bilden, ein Pixelarray mit nahezu quadratischen Abmessungen (z. B. ein Seitenverhältnis Breite/Höhe von nahezu 1:1, und typischer ein Verhältnis von 4:3, 5:4 oder 16:9). Dieses Verhältnis Breite/Höhe passt nicht gut zu den Anforderungen einer Leseanwendung, wo sich Objekte auf einer breiten Förderstrecke in Bezug auf das Kamera-Sichtfeld vorbei bewegen. Ganz allgemein sollte die Höhe des Sichtfeldes etwas größer sein als die ID (oder ein anderer Interessensbereich), während die Breite des Sichtfeldes etwa gleich oder etwas größer als die der Förderstrecke sein sollte. In einigen Fällen kann eine Zeilenkamera eingesetzt werden, um Objektbewegungen und ein breites Sichtfeld anzusprechen. Solche Lösungen können jedoch bei bestimmten Objektformen und Streckenanordnungen nicht angewandt werden. Ebenso sind Zeilenabtast-(d. h. eindimensionale)Bildsensoren in der Regel teurer als herkömmliche Sensoren in rechteckigem Format.
  • Wenn ein Objekt bzw. die Strecke relativ breit ist, haben Linse und Imager eines einzelnen ID-Lesegeräts möglicherweise kein ausreichendes Sichtfeld in der Richtung der Breite, um die gesamte Breite der Strecke abzudecken und gleichzeitig die für genaues Abbilden und Decodieren von IDs benötigte Auflösung aufrechtzuerhalten. Wenn nicht die volle Breite abgebildet wird, kann dies dazu führen, dass das Lesegerät das Lesen von IDs verpasst, die sich außerhalb des Sichtfeldes befinden oder die sich zu schnell durch das Feld bewegen. Ein kostspieliger Ansatz zur Bereitstellung der benötigten Breite ist der Einsatz mehrerer Kameras über die Breite der Strecke, die in der Regel zum Austausch von Bilddaten und Prozesse vernetzt sind. Ein breiteres Seitenverhältnis für das Sichtfeld einer oder mehrerer Kameras kann alternativ erreicht werden, indem das systemeigene Sichtfeld des Sensors mittels eines Sichtfeldexpanders, der das Feld in mehrere sich über die Breite der Förderstrecke erstreckende schmalere Streifen aufteilt. Eine Herausforderung bei der Bereitstellung eine derartige Anordnung besteht dabei darin, dass ein schmaleres Feld in der Bandlaufrichtung der sich bewegenden Strecke u. U. eine höhere Bildfrequenz erfordert, um sicherzustellen, dass eine ID vor Verlassen des Feldes ordnungsgemäß erfasst wird. Dies kann die Verarbeitungsgeschwindigkeit des Systems belasten, und derzeitige Imager-Decodiersysteme, die Bilder über eine große Fläche erfassen, haben im Allgemeinen nicht die für ein zuverlässiges Decodieren bei hohen Durchsatzgeschwindigkeiten der Objekte benötigten Bildfrequenzen.
  • Eine weitere Herausforderung beim Betreiben von ID-Lesegeräten basierend auf Bildverarbeitungssystemen ist, dass Fokus und Beleuchtung auf relativ optimale Werte eingestellt werden sollten, um ein lesbares Abbild der IDs für die Decodier-Anwendung bereitzustellen. Dies bedingt eine schnelle Analyse der Brennweite und der Lichtverhältnisse, damit diese Parameter automatisch berücksichtigt bzw. automatisch angepasst werden können. Wenn Sichtfelder breit sind und/oder der Durchsatz von Objekten relativ zur abgebildeten Szene hoch ist, kann die zur Durchführung solcher Funktionen erforderliche Verarbeitungsgeschwindigkeit bei Verwendung von auf konventionellen Bildverarbeitungssystemen basierenden Lesegeräten u. U. nicht verfügbar sein.
  • Im Allgemeinen können Imager/Sensoren Bilder mit einer relativ hohen Bildfrequenz erfassen, um solchen Hochgeschwindigkeitsfunktionen Rechnung zu tragen. Es empfiehlt sich im Allgemeinen Bildverarbeitungs-Anordnungen/Verfahren vorzusehen, die Bildrahmen in einer Vielzahl von Arten, die die Fähigkeit des Systems, Parameter einzustellen und Bilddaten bei einer höheren Geschwindigkeit zu lesen, effektiver einsetzen können.
    Es ist somit Aufgabe der Erfindung eine Lösung vorzuschlagen, mit der die automatische Erkennung von ein- und zweidimensionalen Barcodes auf Objekten, die sich auf einer Förderstrecke bewegen verbessert wird.
  • Diese Aufgabe der Erfindung wird gelöst durch die Gegenstände der unabhängigen Ansprüche.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Dieser Erfindung überwindet Nachteile des Standes der Technik durch Angeben einer Bildverarbeitungs-Systemkamera und eines dazugehörigen Verfahrens, mit einem Multicore-Prozessor, Hochgeschwindigkeits-, hoch auflösenden Imager, Sichtfeldexpander (FOVE), Autofokuslinse und einem mit dem Imager verbundenen Pre-Prozessor zur Vorverarbeitung der Bilddaten, Angabe der Erfassungs- und Verarbeitungsgeschwindigkeit sowie der Bildauflösung, die in einer Vielzahl von Anwendungen besonders wünschenswert sind. Diese Anordnung ist beim Abtasten von Objekten, die ein breites Sichtfeld erfordern, in Größe und die Positionierung der interessierenden Merkmale variieren und sich relativ schnell in Bezug auf das Sichtfeld des Systems bewegen, besonders effektiv. Dieses Bildverarbeitungssystem sieht zur Unterstützung verschiedener Optionen und Kontrollfunktionen ein physikalisches Paket mit einer Vielzahl von physikalischen Zusammenhängen vor. Das Paket leitet intern erzeugte Wärme effektiv ab, indem es Komponenten so anordnet, dass eine Wärmeübertragung auf die Umgebung optimierte wird, und enthält ableitende Strukturen (z. B. Rippen), um eine solche Übertragung zu unterstützen. Das System ermöglicht auch einer Vielzahl von Multicore-Prozessen, um sowohl Bildverarbeitung als auch Systembetrieb zu optimieren und die Belastung auszugleichen (d. h. Autoregelungsaufgaben) .
  • In einer beispielhaften Ausführungsform umfasst ein Bildverarbeitungssystem ein Kameragehäuse, das einen Imager und eine Prozessoranordnung einschließt. Die Prozessoranordnung enthält (a) einen mit dem Imager verbundenen Pre-Prozessor, der mit einer ersten Bildfrequenz (z. B. 200 bis mehr als 300 Bilder pro Sekunde) empfängt, und Bilder vom Imager vor-verarbeitet, und (b) einen Multicore-Prozessor (mit einer Vielfalt von Kernen), der die vom Pre-Prozessor bereits verarbeiteten Bilder empfängt und daran Bildverarbeitungsaufgaben durchführt. Dies ermöglicht das Generieren von Ergebnissen bezüglich Informationen in den Bildern. Zu beachten ist dabei, dass der Begriff „Core“ (oder Kern) wie hierin verwendet großzügig verstanden werden soll, um einen diskreten „Satz von Kernen“ mit einzuschließen, der einer bestimmten Aufgabe zugeordnet ist. Beispielsweise ist die erste Bildfrequenz deutlich höher als eine zweite Bildfrequenz, bei der der Multicore-Prozessor Bilder vom Pre-Prozessor empfängt. Der Pre-Prozessor (z. B. ein FPGA, ASIC, DSP, usw.) kann auch mit einem Datenspeicher verbunden werden, der entsprechend den Bildern vom Imager puffert. In verschiedenen Prozessen können Teile von Bildern oder Teilbilder basierend auf der Richtung des Pre-Prozessors gepuffert werden, wo ein ganzes Bild für eine bestimmte Funktion nicht notwendig ist (z. B. Auto-Regulieren). Ebenso können unter-abgetastete Bilddaten in bestimmten Prozessen gepuffert werden, z. B. Auto-Regulierung, wo Bilder mit voller Auflösung nicht notwendig sind, um eine Aufgabe auszuführen. Darüber hinaus kann der Multicore-Prozessor mit einer Datenspeicherung verbunden werden, in der Betriebsanleitungen für jeden Kern des Multicore-Prozessors gespeichert werden. Dieser Speicher speichert auch Bilddaten für die Verarbeitung durch jeden Kern, basierend auf einem Zeitplan. Insbesondere bestimmt der Zeitplan, dass Bilder jeweils selektiv in jedem Kern verarbeitet werden, um die Effizienz beim Generieren der Ergebnisse zu steigern. Der Zeitplan kann bestimmen ob ein oder mehrere Kerne Systemaufgaben (auch „Betriebs-Systemaufgaben“ genannt - die nicht in direktem Zusammenhang mit Bildverarbeitungs- und Decodieraufgaben stehen) durchführen, wie beispielsweise Auto-Regulieren, z. B. Beleuchtungssteuerung, Helligkeit, Belichtung und Fokussierung einer Autofokuslinse. Die Linse kann eine Flüssigkeitslinse oder andere Art von Linse mit variablem Fokus sein. Der Pre-Prozessor kann so entworfen und angeordnet sein, um solche vorbestimmten Auto-Regulierbetriebe durchzuführen, die zumindest teilweise auf von Systemaufgaben generierten Informationen beruhen, die in mindestens einem Kern durchgeführt werden. Insbesondere können die durch die Kerne generierten Ergebnisse decodierte Symbologien (IDs/Codes) enthalten, die von einem Objekt abgebildet worden sind.
  • In einer beispielhaften Ausführungsform kann die Linse der Kamerabaugruppe optisch mit einem Sichtfeldexpander verbunden werden, der die erhaltenen Bilder am Imager in eine Vielzahl von entlang einer erweiterten Breite aufgenommenen Teilbildern aufgeteilt werden. Diese Teilbilder können vertikal am Imager gestapelt werden und beinhalten eine Überschneidung in der Richtung der Breite. Die Überschneidung kann in jedem Teilbild auftreten und kann breit genug sein, um die größte zu erwartende und zu betrachtende ID/den größten zu erwartenden und zu betrachtenden Code voll abzubilden - und somit gewährleisten, dass kein Symbol durch die Aufteilung zwischen den Sichtfeldern verloren geht. Beispielhaft wird jedes der Teilbilder entsprechend durch einen diskreten Kern (oder einen diskreten Satz von Kernen) des Multicore-Prozessors verarbeitet. Um die Auto-Kalibrierung zu unterstützen, kann der Sichtfeldexpander einen Bezugspunkt bei einer bekannten Brennweite in Bezug auf den sich im Strahlengang befindlichen Imager auf eine Weise enthalten, die ein selektives oder teilweises Ausgesetztsein dem Imager gegenüber ermöglichen, so dass Laufzeit-Bilderfassung ohne jegliche erhebliche Störung durch den Bezugspunkt erfolgen kann.
  • Ein Selbstkalibrierungsvorgang bestimmt die Brennweite (Fokus) der Linse unter Verwendung eines Bezugspunktes. Der Bezugspunkt kann sich beispielsweise auf einer optischen Komponente des Sichtfeldexpanders befinden. Als Option unterstützt das Gehäuse des Sichtfeldexpanders eine externe Beleuchtung, die durch Ineinandergreifen von Ausrichtungsstrukturen und Magneten am Gehäuse entfernbar befestigt ist.
  • Das physikalische Paket der Kamerabaugruppe ist aus einem Material mit guter Wärmeleitfähigkeit für bessere Übertragung auf die Umgebung, wie z. B. einer Aluminiumlegierung aufgebaut. Die Prozessoranordnung enthält eine Imagerplatine, einschließlich Imager und eine den Multicore-Prozessor enthaltende Hauptplatine, wobei die Hauptplatine mittels einer Federhalterung gegen eine Innenseite des Kameragehäuses verspannt ist, um eine sichere und dennoch abnehmbare Verbindung und eine enge Verbindung mit der inneren Seitenwand des Kamera-Bauteilgehäuses für eine verbesserte Wärmeübertragung von der Hauptplatine zu ermöglichen. Zur weiteren Verbesserung der Wärmeübertragung und engen Verbindung enthält die Hauptplatine ein Profil mit herausstehenden Schaltungskomponenten, das einem inneren Profil der Innenseite des Kameragehäuses angepasst angeordnet ist, um die dazwischenliegende Distanz zu minimieren. Das Gehäuse der Kamerabaugruppe umfasst zusätzlich eine Vielzahl von Wärme ableitenden Rippen an einer ihrer Außenseiten zum Wärmeaustausch mit der Umgebung. Des weiteren unterstützt das Gehäuse einen oder mehrere externe Lüfter. Die Gehäuse-Vorderseite ist für die Montage einer abnehmbaren Linsenbaugruppe ausgelegt. Eine solche abnehmbare Linsenbaugruppe kann eine Flüssigkeitslinse enthalten, die über ein Kabel mit einer Steckverbindung an der Seite (z. B. der Vorderseite) des Gehäuses der Kamerabaugruppe verbunden ist. Eine andere Steckverbindung ist zur Regelung der optionalen internen (oder externen) Beleuchtung vorgesehen. Auf der Rückseite der Kamera ist eine diskrete E/A-Platine vorgesehen, die über einen elektronischen Link mit der Hauptplatine verbunden ist. Die E/A-Platine enthält eine Vielzahl von extern exponierten Steckverbindungen für verschiedene Verbindungen zu Daten- und Regel-Funktionalitäten. Eine solche Regelung/Funktionalität ist ein externes Geschwindigkeitssignal von einer Strecke (z. B. ein Encodersignal), die sich relativ zu einem Sichtfeld der Kamerabaugruppe bewegt. Der Pre-Prozessor und/oder der Multicore-Prozessor sind so aufgebaut und angeordnet, um auf der Grundlage des Geschwindigkeitssignals und einer Vielzahl von Bildern mindestens einen der folgenden Vorgänge auszuführen: (a) Fokusregelung einer variablen Linse; (b) Bestimmen der Brennweite zu einem abgebildeten Objekt; (c) Kalibrieren der Brennweite auf eine Strecke; und (d) Bestimmen der relativen Geschwindigkeit des abgebildeten Objekts. Im Allgemeinen umfasst das Kameragehäuse eine Vorder- und eine Rückseite, die jeweils dichtend an jeweils entgegengesetzten Enden eines Objekts an eine jeweilige Naht (mittels einer Dichtung) angeschlossen sind. Optional enthalten die Naht zwischen der Vorder- und der Rückseite (oder beiden) und dem Körper einen darin liegenden Ring aus einem lichtdurchlässigen Material, wobei der Ring so aufgebaut und angeordnet ist, dass er eine Beleuchtung in einer von einer Vielzahl von vorgegebenen Farben bereitstellte, um dem Benutzer eine Anzeige für den Systemstatus zu bieten. Beispielsweise kann der Ring für eine gute (erfolgreiche) ID-Lesung grün leuchten und für keine (eine erfolglose) ID-Lesung rot leuchten.
  • In einer Ausführungsform kann der Pre-Prozessor darauf angepasst werden, aus einem Pufferspeicher selektiv Bilder an den Multicore-Prozessor basierend auf der Identifizierung von interessierenden Merkmalen (z. B. Symbologie/IDs/Codes) durch den Pre-Prozessor zur Weiterverarbeitung in den Kernen des Multicore-Prozessors übertragen.
  • In einer beispielhaften Ausführungsform umfasst eine Methode zur Verarbeitung von Bildern in einem Bildverarbeitungssystem das Erfassen von Bildern mit einer ersten Bildfrequenz in einer Bildverarbeitungskamera und das Übertragen von mindestens einem Teil der Bilder an einen Multicore-Prozessor. Die übertragenen Bilder werden verarbeitet, um Ergebnisse mit Informationen über die Bilder in jedem einer Vielfalt von Kernen des Multicore-Prozessors entsprechend einem Zeitplan zu generieren. Der Schritt der Verarbeitung kann weiterhin in mindestens einem der Vielzahl von Kernen den Schritt der Identifizierung von Bildern beinhalten, die Symbologien in den übertragenen Bilder enthalten, sowie in einem anderen der Vielzahl von Kernen die Durchführung des Schrittes der Decodierung der Symbologien enthaltenden Bilder, so dass ein Kern identifiziert ob Symbologien vorhanden sind (und optional weitere Informationen in Bezug auf die Symbologie bietet, beispielsweise Auflösung, Art der Symbologie, usw.), und der andere Kern die identifizierte Symbologie decodiert. Alternativ kann der Schritt der Verarbeitung den Schritt der Durchführung von Bildanalysen für die übertragenen Bilder enthalten, um Bilder mit ausreichenden Eigenschaften für das Decodieren in mindestens einem der Vielfalt von Kernen zu identifizieren. Mit anderen Worten bestimmt der Kern, ob das Bild für das Decodieren ausreichend deutlich und verwendbar ist. Ein anderer Kern führt den Schritt der Decodierung von Bildern mit ausreichenden Eigenschaften durch und verwirft dabei unbrauchbar Bilder vor dem Versuch eine Symbologie aufzufinden und/oder zu decodieren. Bei einer Ausführungsform erfolgt der Schritt des Decodierens auf den übertragenen Bildern mittels eines ersten Decodier-Vorgangs (d. h. Algorithmus) in mindestens einem der Vielzahl von Kernen und mittels eines zweiten Decodier-Vorgangs in einem anderen der Vielzahl von Kernen, so dass das Decodieren wahrscheinlicher mit mindestens einem Decodiervorgang stattfindet. Beispielhaft kann der Schritt des Decodierens das Decodieren eines Bildes in mindestens einem der Vielfalt von Kernen enthalten, und nach einem vorgegebenen Zeitintervall wenn (a) das Bild weiterhin nicht decodiert ist, und (b) es wahrscheinlich ist, dass das Bild mit mehr Zeit decodiert werden kann, das Bild weiterhin in einem anderen der Vielzahl von Kernen decodiert wird. Alternativ kann nach Ablauf der Frist und Bestehen der Wahrscheinlichkeit, dass mehr Zeit ein erfolgreiches Decodieren zulassen wird, das System dem Kern dann ein fortgesetztes Dekodieren erlauben und das nächste Bild einem anderen Kern zuordnen. In einer weiteren Ausführungsform kann das System einen Lastausgleiche dort bereitstellen wo eine Vielzahl von Bildrahmen mit mehreren Symbologiearten existieren (z. B. 1D Codes und 2D-Codes). Kerne teilen Bilder in einer Weise auf, die eine relativ ausgewogene Last zwischen 1D-Codes und 2D-Codes bereitstellt.
  • In anderen Ausführungsformen kann die Zuordnung von Codes auf nicht decodierende Systemaufgaben auf der aktuellen Triggerfrequenz beruhen. Eine niedrige Triggerfrequenz, innerhalb eines Schwellenwertes, ermöglicht, dass Kerne bei Systemaufgaben, beispielsweise Auto-Regulierung, verwendet werden, während eine höhere Triggerfrequenz bestimmt, dass Kerne für die Decodierung (d. h. Generieren von Ergebnissen mit Bezug auf die Bildinformationen) verwendet werden. Die oben beschriebenen, verschiedenen mit der Zuordnung der Kerne verbundenen Prozesse können als Laufzeit des Bildverarbeitungs-Verlaufs vermischt werden, und Verarbeitungsressourcen (Kerne) können verschiedenen Zwecken neu zugewiesen werden.
  • Figurenliste
  • Die nachfolgende Beschreibung der Erfindung bezieht sich auf die beigefügten Zeichnungen, von denen
    • 1 ein Diagramm eines Bildverarbeitungssystems zeigt, das in Bezug auf eine beispielhafte sich bewegende Strecke mit Objekten verschiedener Größen und Formen, die IDs oder andere Symbologien enthalten, sich jeweils entsprechend einer beispielhaften Ausführungsform durch das Sichtfeld des Systems bewegen;
    • 2 ein Blockdiagramm der Schaltung zum Erfassen und Verarbeiten von Bilddaten und für die Regelung verschiedener Systemfunktion entsprechend einer beispielhaften Ausführungsform zeigt;
    • 3 eine vordere Perspektivansicht der Bildverarbeitungs-Kamerabaugruppe der 1 entsprechend einer beispielhaften Ausführungsform zeigt;
    • 4 eine hintere Perspektivansicht der Bildverarbeitungs-Kamerabaugruppe der 1 entsprechend einer beispielhaften Ausführungsform zeigt;
    • 5 einen seitlichen Querschnitt der Bildverarbeitungs-Kamerabaugruppe entlang der Linie 5-5 der 3 zeigt;
    • 5A einen hinteren Querschnitt der Bildverarbeitungs-Kamerabaugruppe entlang der 5A-5A der 3 zeigt;
    • 6 eine vordere Perspektivansicht der Bildverarbeitungs-Kamerabaugruppe der 1 mit der entfernten inneren Beleuchtungsbaugruppe und Linse zeigt;
    • 7 eine perspektivische Ansicht des Bildverarbeitungssystems der 1 einschließlich der Bildverarbeitung-Kamerabaugruppe und dargestelltem Sichtfeldexpander (FOVE) mit zugehörigem und darauf montiertem externen Stab-Illuminator entsprechend einer beispielhaften Ausführungsform zeigt;
    • 7A einen detaillierteren oberen Querschnitt der zwischen Sichtfeldexpander-Gehäuse und Kamerabaugruppe vorgesehenen Kupplung entsprechend 7 zeigt;
    • 8 eine Perspektivansicht der optischen Komponenten des beispielhaften Sichtfeldexpanders der 7 mit entferntem Gehäuse zeigt;
    • 9 eine Draufsicht auf die optischen Komponenten des beispielhaften Sichtfeldexpanders der 7 mit entferntem Gehäuse und beim Erfassen eines Bildes eines breiten Sichtfeldes zeigt;
    • 10 eine schematische Ansicht einer gestapelten Anordnung mehrerer vom Sichtfeldexpander der 7 dem Imager der Kamerabaugruppe bereitgestellten Sichtfelder zeigt;
    • 11 eine Vorderansicht des Sichtfeldexpanders der 7 mit Stab-Illuminator angeordnet an einer Halterung in Bezug auf das Sichtfeldexpandergehäuse und die zugehörige Ankopplung an die Kamerabaugruppe von 1 zeigt;
    • 12 einen teilweisen oberen Querschnitt einer Membranbasierten Flüssigkeitslinsen-Baugruppe, montiert in und kontrolliert durch die Kamerabaugruppe von 1 entsprechend einer beispielhaften Ausführungsform zeigt;
    • 13 eine hintere perspektivische Ansicht der internen Komponenten der Kamerabaugruppe der 1 mit dem Gehäusekörper entfernt und detailliert die Struktur eines „360-Grad“ Ring-Indikators zwischen Körper und deren Vorderseite zeigt;
    • 14 ein Ablaufdiagramm des verallgemeinerten Betriebs eines Zeitablauf-Algorithmus/Prozesses für den Einsatz bei der Vergabe von Systembetriebs-Aufgaben und Bildverarbeitungsaufgaben auf Kerne im Multicore-Prozessor des Bildverarbeitungssystems der 1 zeigt;
    • 15 ein Blockdiagramm zeigt, das einen Multicore-Prozess darstellt, bei dem ein Bildrahmen in mehrere Teile aufgeteilt wird, die jeweils zur Verarbeitung in mehreren Kernen zugeordnet werden;
    • 16 ein Blockdiagramm zeigt, das einen Multicore-Prozess darstellt, in dem ein Bildrahmen zur Verarbeitung in einem Kern zugeordnet wird, während ein anderer Kern eine oder mehrere Systemaufgaben durchführt;
    • 17 ein Ablaufdiagramm, das die dynamische Zuordnung von Kernen zu Bildverarbeitungs- und nicht-Bildverarbeitungs-Systemaufgaben basierend auf aktuellen Triggerfrequenzen zeigt;
    • 18 ein Blockdiagramm zeigt, das einen Multicore-Prozess darstellt in dem IDs/Codes in jedem Bildrahmen dynamisch in einer Weise Kernen zugeordnet werden, die die Prozesslast effizienter über die Kerngruppe ausgleicht;
    • 19 ein Ablaufdiagramm zeigt, das die Zuordnung eines zweiten Kerns zu einem ID/Code-Decodierprozess nachdem bei der Verarbeitung durch den ersten Kern eine vorgegebene Frist überschritten worden ist, darstellt;
    • 20 ein Ablaufdiagramm zeigt, dass die fortlaufende Zuordnung eines ersten Kerns zu einem ID/Code-Decodierprozess nachdem bei der Verarbeitung durch den ersten Kern eine vorgegebene Frist überschritten worden ist, darstellt;
    • 21 ein Blockdiagramm zeigt, das einen Multicore-Prozess darstellt, in dem ein ID/Code in einem Bildrahmen gleichzeitig zwei Kernen zugeordnet ist, von denen jeder darauf verschiedene Decodieralgorithmen ausführt;
    • 22 ein Blockdiagramm zeigt, das einen Multicore-Prozess darstellt, in dem eine Folge von Bildrahmen jeweils unterschiedlichen Kernen zu ihrer Verarbeitung zugewiesen werden;
    • 23 ein Blockdiagramm zeigt, das einen Multicore-Prozess darstellt in dem Bildrahmendaten gleichzeitig einem ersten Kern, in dem ein ID/Code-Auffindungsprozess abläuft und einem zweiten Kern, in dem ein ID/Code-Decodierprozess basierend auf gefundenen ID/Code-Angaben, die vom ersten Kern bereitgestellt worden sind, zugeordnet werden;
    • 24 ein Blockdiagramm zeigt, das einen Multicore-Prozess darstellt in dem Bildrahmendaten gleichzeitig einem ersten Kern, in dem ein Bildverarbeitungsprozess abläuft und einem zweiten Kern, in dem ein ID/Code-Decodierprozess basierend auf Bildangaben die vom ersten Kern bereitgestellt worden sind, zugeordnet werden;
    • 25 ein Blockdiagramm zeigt, das einen Multicore-Prozess darstellt in dem Bildrahmendaten gleichzeitig einem ersten Kern, in dem ein ID/Code-Anwesend/Abwesend-Prozess abläuft und einem zweiten Kern, in dem ein ID/Code-Aufsuch- und Decodierprozess basierend auf ID/Code-Anwesenheits/Abwesenheitsangaben die vom ersten Kern bereitgestellt worden sind, zugeordnet werden;
    • 26 ein Blockdiagramm zeigt, das einen Multicore-Prozess darstellt in dem Bildrahmendaten gleichzeitig einem ersten Kern, in dem ein Bildanalyseprozess abläuft und einem zweiten Kern, in dem ein ID/Code-Aufsuch- und Decodierprozess basierend auf Angaben in Bezug auf Qualität und Merkmalen des Bildrahmens, die vom ersten Kern bereitgestellt worden sind, zugeordnet werden;
    • 27 ein Ablaufdiagramm zeigt, das einen Systemprozess für die Anpassung der Brennweite basierend auf vergleichenden Messungen von einer Förderstrecke/Geschwindigkeits-Sensor (Encoder) darstellt sowie die Verfolgung von Merkmalen an Objekten, die sich durch das Sichtfeld des beispielhaften Bildverarbeitungssystems bewegen;
    • 28 ein Ablaufdiagramm zeigt, das ein Verfahren zum Aufsuchen von interessierenden Merkmalen (IDs/Codes) mithilfe des mit dem Imager verbundenen Pre-Prozessors (FPGA) darstellt, sowie die exklusive Übertragung von Bildrahmen, die anscheinend interessierende Merkmale enthalten, an den Multicore-Prozessor für die weitere Verarbeitung;
    • 29 eine Seitenansicht des Bildverarbeitungssystems der 1 zeigt, die einen vom Sichtfeldexpander bereitgestellten, selbstkalibrierenden Bezugspunkt darstellt, sowie einen optionalen unten an der Kamerabaugruppe des Bildverarbeitungssystems montierten Lüfter;
    • 29A eine detailliertere Perspektivansicht der Kamerabaugruppe einschließlich einer unten montierten Halterung und Lüfter entsprechend einer beispielhaften Ausführungsform zeigt;
    • 29B eine Explosionsansicht der Kamerabaugruppe mit Halterung und Lüfter der 29A zeigt;
    • 30 ein Ablaufdiagramm zeigt, das einen Systemprozess zur Korrektur von Nichtlinearitäten in einer Kurve des Linsen-Antriebsstroms gegenüber der Brennweite/optischen Leistung darstellt;
    • 31 ein Ablaufdiagramm zeigt, das einen Systemprozess zur Bestimmung der Brennweite basierend auf der Analyse der Lage der Merkmale in den einzelnen Überschneidungsregionen eines Sichtfeldexpander-projizierten Bildes darstellt;
    • 32 ein Ablaufdiagramm eines Systemprozesses zur Bestimmung der Geschwindigkeit und/oder Entfernung eines Objekts zeigt, das sich durch das Sichtfeld des Bildverarbeitungssystems der 1 bewegt, und dabei Variation in der Größe der Merkmale des Objekts zwischen Bildrahmen verwendet; und
    • 33 ein Diagramm einer beispielhaften Master-Slave-Anordnung zeigt, das eine Vielzahl von miteinander verbundenen Kamerabaugruppen und Illuminatoren entsprechend einer Ausführungsform darstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Systemübersicht
  • 1 zeigt ein Bildverarbeitungssystem 100 , allgemein auch „Maschinen-Bildverarbeitung“ genannt, entsprechend eines Ausführungsbeispiels. Das Bildverarbeitungssystem 100 beinhaltet eine Bildverarbeitungskamera 110 , die beispielhaft eine integrierte (und/oder interne) Prozessoranordnung 114 enthält. Diese Prozessoranordnung 114 ermöglicht die Verarbeitung von durch einen Imager (z. B. CMOS oder CCD-Sensor) 112 (gestrichelt dargestellt) erfassten Bilddaten, um Informationen innerhalb des erfassten Bildes zu analysieren. Der Imager 112 befindet sich auf einer zugehörigen Imagerplatine (ebenfalls gestrichelt dargestellt) 113, die weiter unten beschrieben wird. Die Prozessoranordnung 114 in dieser Ausführungsform beinhaltet eine Multicore-Architektur, einschließlich mindestens zweier separater (diskreter) Prozessorkerne C1 und C2, die entsprechend einer Ausführungsform einem einzelnen Schaltkreis-Bauteil (z. B. Chip) bereitgestellt werden können. Der Prozessor 114 befindet sich auf einer Prozessorplatine oder „Hauptplatine“ 115, die ebenfalls weiter unten beschrieben wird. Desgleichen sind eine verbundene Ein-/Ausgabeplatine (E/A-Platine) 117 und Benutzeroberflächenplatine (UI) 123 für die Kommunikation mit entfernten Geräten und zur Anzeige von Informationen jeweils vorgesehen. Die Funktion des Imagers 112 und des Multicore-Prozessors 114 werden weiter unten detailliert beschrieben. Im Allgemeinen betreibt der Prozessor einen Bildverarbeitungsprozess 119, der darauf angepasst ist, die Multicore-Prozessoranordnung 114 vorteilhaft zu nutzen, sowie einen ID-Auffind- und Decodierprozess 121. Alternativ kann der Decodiervorgang ganz oder teilweise durch einen speziell entwickelten Decoder-Chip auf einem vom Prozessor 114 separatem Bauteil abgewickelt werden.
  • Die Kamera 110 umfasst eine Linsenbaugruppe 116 , die wahlweise entfernbar und mit einer Vielzahl konventioneller (oder kundenspezifischer) montierbarer Linsenbaugruppen austauschbar ist. Die Linsenbaugruppen können sowohl manuell also auch automatisch fokussiert werden. In einer Ausführungsform kann die Linsenbaugruppe 116 einen automatischen Fokus-(Autofokus)-Mechanismus, basierend auf einem bekannten System, wie z. B. einem handelsüblichen Flüssigkeitslinsensystem, enthalten. In einer Ausführungsform kann die Montierbasis durch die bekannte Cine oder „C-Mount“ Geometrie der Basis definiert werden - andere bekannte oder kundenspezifische Formen sind ausdrücklich in anderen Ausführungsformen beabsichtigt.
  • Wie gezeigt ist ein beispielhafter Sichtfeldexpander (FOVE) 118 vor der Linsenbaugruppe 116 montiert. Der Sichtfeldexpander ermöglicht die Erweiterung der Breite WF des Sichtfeldes 120, welche die Linsenbaugruppe 116 normalerweise bei einer bestimmten Brennweite definiert und mit N-mal der ursprünglichen Breite (abzüglich der Breite eines eventuellen oder mehrerer eventueller Überschneidungsbereichs(-bereiche) zwischen den Sichtfeldern) zu multiplizieren, während die Länge LF des Sichtfelds 120 auf das 1/N-fache der ursprünglichen Länge reduziert wird. Der Sichtfeldexpander 118 kann mittels einer Vielzahl von Anordnungen realisiert werden, in der Regel eine Reihe von abgewinkelten Spiegeln enthaltend, die das Feld in eine Reihe von vertikal aufgeteilten Teilen des Imagers aufteilen. In einer Ausführungsform ist der oben integriert Sichtfeldexpander mit äußeren Spiegeln aufgebaut, die ausgerichtet sind, Licht aus verschiedenen Breite-Bereichen einer Szene zu erhalten, die eine bewegliche Strecke von Objekten sein kann (siehe Fig.). Die anschließenden äußeren Spiegel leiten das Licht dann auf zugehörige vertikal geschwenkte innere Spiegel eines Strahlteilers, die das Licht wiederum durch eine Blende im Sichtfeldexpander praktisch in Ausrichtung entlang einer optischen Achse der Kamera leiten, um eine Verzerrung der Bilder zu vermeiden. Die inneren Spiegel leiten das Licht jeweils von jedem äußeren Spiegel in einen diskreten Streifen auf dem Imager, wobei ein Streifen (beispielsweise) vertikal über dem anderen gestapelt wird, und das Bildverarbeitungssystem sucht nach Merkmalen und analysiert das Gesamtbild danach. Das durch die Spiegel definierte Sichtfeld enthält breitenweise überschneidende Regionen, die so bemessen und angeordnet sind, dass sie gewährleisten, dass ein zentrales Merkmal in mindestens einem Streifen vollständig angezeigt wird. In einer weiteren Ausführungsform wechselt ein beweglicher Spiegel seine Position zwischen erfassten Bildrahmen, so dass eine volle Breite der Szene in aufeinander folgenden Rahmen abgebildet ist. Beispielhafte Sichtfeldexpander-Anordnungen, einschließlich der hierin gezeigten, werden in der gemeinsam erteilten US-Patentanmeldung, Seriennummer 13/367.141, mit dem Titel SYSTEM AND METHOD FOR EXPANSION OF FIELD OF VIEW IN A VISION SYSTEM von Nunnink, et al. dargestellt und beschrieben. Diese Anmeldung wird hiermit durch Bezugnahme durch nützliche Hintergrundinformationen hierin einbezogen.
  • In einer Ausführungsform sieht der Sichtfeldexpander 118 einen ersten äußeren Spiegel unter einem spitzen Winkel in Bezug auf eine optische Achse der Kamera und einen zweiten äußeren Spiegel in einem entgegensetzten spitzen Winkel in Bezug auf eine gegenüberliegenden Seite der optischen Achse vor. Ein Strahlteiler befindet sich vor dem ersten äußeren Spiegel und dem zweiten äußeren Spiegel in einer von der Bildverarbeitungskamera aus gesehenen Richtung. Dieser Strahlteiler sieht eine erste reflektierende Oberfläche und eine zweite reflektierende Oberfläche vor. Der erste äußere Spiegel und die erste reflektierende Oberfläche sind beispielhaft so angeordnet, dass sie ein erstes Sichtfeld von der Szene entlang der optischen Achse auf den Imager leiten. Desgleichen sind der zweite äußere Spiegel und die zweite reflektierende Oberfläche beispielhaft so angeordnet, dass sie ein zweites Sichtfeld von der Szene entlang der optischen Achse auf den Imager leiten. Das erste Sichtfeld ist zumindest teilweise vom zweiten Sichtfeld bei der Szene entlang einer horizontalen Richtung getrennt. Darüber hinaus sind der erste äußere Spiegel, der zweite äußere Spiegel und der Strahlteiler so angeordnet, dass sie das erste Sichtfeld und das zweite Sichtfeld jeweils in einem vertikal gestapelten Verhältnis von Streifen am Imager projizieren. Es sollte dabei klar sein, dass eine Vielzahl von Sichtfeldexpander-Implementierungen in verschiedenen Ausführungsformen hierin ausdrücklich beabsichtigt ist.
  • Der Sichtfeldexpander ermöglicht ein ausreichendes Sichtfeld, um Objekte 122 , 124 (z. B. Boxen), die sich mit einer Geschwindigkeit VL auf der bewegten Strecke 126 in Bezug auf die Kamerabaugruppe 110 bewegen, so abzubilden, dass interessierende Merkmale (z. B. Barcodes 130 , 132 , 134) entsprechend erfasst werden. Beispielhaft wird die Breite WF des Sichtfeldes 120 erweitert, um in etwa mit der Breite WL der Strecke 126 übereinzustimmen. In alternativen Ausführungsformen ist beabsichtigt, dass Objekte stationär bleiben und die Kamerabaugruppe sich in Bezug auf die Objekte auf einer Schiene oder anderen geeigneten Strukturen (z. B. ein Roboter-Manipulator) bewegen können. Als Beispiel bewegen sich zwei Objekte 122 und 124 mit unterschiedlichen Höhen HO1 bzw. H02 jeweils durch das Sichtfeld 120. Wie oben beschrieben ist der Unterschied in der Höhe ein Faktor, der in der Regel eine Variation der Brennweite der Kamerabaugruppe erfordert. Wenn sich Objekte schneller durch das Sichtfeld 120 bewegen, wird die Fähigkeit, den Fokus schneller zu variieren besonders wünschenswert. Desgleichen ist die Fähigkeit, interessierende Merkmale schneller zu identifizieren und diese Merkmale mittels des Bildverarbeitungsprozessors 114 zu verarbeiten besonders wünschenswert. Es ist ausdrücklich beabsichtigt, dass eine Vielzahl von Bildverarbeitungs-Kamerabaugruppen mit zugehörige Sichtfeldexpandern, Illuminatoren und anderem Zubehör zur Abbildung von Objekten, die sich durch die Szene bewegen, eingesetzt werden können. Beispielsweise ist ein zweites Bildverarbeitungssystem 180 (strichliert dargestellt) vorgesehen, um eine entgegengesetzte Seite von Objekten abzubilden. Dieses zusätzliche Bildverarbeitungssystem 180 wird verbunden (Verbindung 182) mit dem oben beschriebenen System 100 gezeigt. Dies ermöglicht den Austausch von Bilddaten sowie Synchronisieren, Erfassen und Beleuchtungstriggern, neben anderen Funktionen (z. B. die Verwendung einer Master-Slave-Anordnung von miteinander verbundenen Kamerabaugruppen, die weiter unten beschrieben werden). Jede Kamerabaugruppe kann unabhängig voneinander Bilddaten verarbeiten oder einige oder alle Verarbeitungen in den Kernen einer verbundenen Kamerabaugruppe entsprechend den weiter unten beschriebenen verschiedenen Multicore-Prozessen durchführen. Anzahl, Anordnung und Betrieb von weiteren Bildverarbeitungssystemen ist in verschiedenen Ausführungsformen besonders variabel.
  • II. Systemelektronik
  • Mit Bezug auch auf 2 werden Schaltungslayout und Funktion der Imagerplatine 113, Hauptplatine 115, E/A-Platine 117 und Benutzeroberflächenplatine 123 jeweils näher beschrieben. Wie gezeigt befindet sich Imager 112 auf der Imagerplatine 113 , und kann eine handelsübliche CMOS 2-Megapixel Graustufeneinheit umfassen, wie beispielsweise das Modell CMV2000 von CMOSIS aus Belgien. Andere Typen und Größen von Imagern können in alternativen Ausführungsformen vorgesehen sein, einschließlich Imager mit größerer oder kleinerer Auflösung, Farb-Imager, multispektrale Imager usw. Der Imager ist betriebsmäßig über Regel- und Datenverbindungen mit einem FPGA (oder einer anderen programmierbaren Schaltung) 210 verbunden, die einen Bildbearbeitungsprozess gemäß einer weiter unten beschriebenen beispielhaften Ausführungsform ausführt. Für Zwecke dieser Beschreibung kann der FPGA oder eine gleichwertige Hochgeschwindigkeits-Verarbeitungslogik, wie beispielsweise ein ASIC, DSP und dergleichen auch als „Imagerverbundener“ „Pre-Prozessor“ bezeichnet werden, der anfängliche und/oder bestimmte Auto-Regulierungs-Funktionen am empfangenen Strom von Bildrahmen aus dem Imager ausführt. Daher sind, obwohl ein FPGA beispielhaft beschrieben wird, alle programmierbaren oder nicht programmierbaren Verarbeitungslogiken (oder mehrere Logiken), die die gewünschten Vorverarbeitungsfunktionen ausführen können, ebenfalls ausdrücklich für die Verwendung als „Pre-Prozessor“ beabsichtigt. Eine beispielhafte Vorprozessor-Schaltung ist die ECP3-Familie von FPGAs, verfügbar von Lattice Semiconductor, Hillsboro, Oregon. Der FPGA-210 ist mit einem nicht-flüchtigen (Flash) Speicher 212 von geeigneter Größe verbunden, die dem FPGA Konfigurationsdaten bereitstellt. Der FPGA-210 steuert auch eine optionale interne Beleuchtung 214 (weiter unten beschrieben) und eine optionale variable (z. B. Flüssigkeits-) Linsenbaugruppe 216 , um der Kamera-Linsenbaugruppe eine schnelle Autofokus-Funktion bereitzustellen. Zusätzlich, obwohl der hierin beschriebene Pre-Prozessor zum Ausführen bestimmter Funktionen angepasst ist, einschließlich aber nicht beschränkt auf Auto-Regulierung, Bild-Datenumwandlung und Speicherhandling der erfassten Bilddaten, können auch eine Vielzahl von zusätzlichen Prozessen, die direkt mit der Verarbeitung von Informationen innerhalb von Bildern (d. h. Bildverarbeitungsprozesse) in Zusammenhang stehen, durch den Pre-Prozessor ausgeführt werden, wie beispielsweise Merkmalssuche, und dergleichen. Ganz allgemein macht die hohe Bildfrequenz des Imagers (in verschiedenen Ausführungsformen) die Verwendung eines solchen Hochgeschwindigkeits-Prozessors wünschenswert, um erste Prozesse in Bezug auf erworbene Bildrahmen zu bearbeiten.
  • Eine Form einer schnell arbeitenden Flüssigkeitslinsen-Baugruppe, die hier eingesetzt werden kann, ist die EL-6-18-VIS-LD Membranbasierte Flüssigkeitslinse verfügbar von Optotune AG, Schweiz. Neben dem Hochgeschwindigkeitsbetrieb definiert diese Linse zum Beispiel eine 6 Millimeter Blende, wodurch sie für einen breiten Bereich und Hochgeschwindigkeitsbetrieb sehr gut geeignet ist. Das beispielhafte variable Linsenpaket hat eine Größe von 18 × 18,4 × 8,9 (Dicke) mm. Der Steuerstrom liegt zwischen ca. 0 und 200 mA. Die Ansprechzeit liegt in der Regel unter 2 Millisekunden und die Einstellzeit ist in der Regel weniger als 10 Millisekunden. Nach Integration der Flüssigkeitslinsen in der beispielhaften Linsenbaugruppe ist das Sichtfeld der gesamten Baugruppe ungefähr 20 Grad und der einstellbare Brennweitenbereich ist etwa 60 Millimeter und Unendlich. Im Betrieb ist die EL-6-18-VIS-LD eine formverändernde Linse. Sie besteht aus einem Spritzguss-Gehäuse, das mit einer optischen Flüssigkeit gefüllt und mit einer elastischen Polymer-Membran versiegelt ist. Die Durchbiegung der Linse ist dem Druck in der Flüssigkeit proportional. Die EL-6-18 verwendet ein elektromagnetisches Betätigungselement, das zur Ausübung von Druck auf das Gehäuse verwendet wird. Daher wird die Brennweite der Linse durch den Strom gesteuert, der durch die Spule des Betätigers fließt. Dieser Abstand verringert sich mit dem sich erhöhenden angewandten Strom.
  • Ein Temperatursensor 218 dient in Verbindung mit der Linse der Überwachung der Betriebstemperatur in der Nähe der Linse. Dies ermöglicht eine Temperatur-basierte Anpassung der Flüssigkeitslinse, sowie anderer temperaturabhängiger Parameter und Funktionen. Der Temperaturfühler befindet sich auf einem I2C-Bus 220 , der auch die interne Beleuchtung 214 und die Flüssigkeitslinse mittels entsprechender vom Linsenhersteller spezifizierter Steuersignale steuert. Wie unten beschrieben können zusätzliche Temperatursensoren für eine oder mehrere Platinen (z. B. Sensor 288) zum Überwachen des Temperaturstatus verschiedener Komponenten des Systems vorgesehen sein. Der Bus 220 ist wie gezeigt mit dem Multicore-Prozessor 114 auf der Hauptplatine 115 verbunden. Desgleichen ist der FPGA- 210 an den Prozessor 114 mit einem Serial Peripheral Interface (SPI) Bus 224 und einen PCIe-Bus 226 , die jeweils Steuer- und Datensignale zwischen den Einheiten tragen, gebunden. Beispielhaft wird die SPI- 224 Busverbindung zwischen FPGA-210 und Prozessor 114 vom Prozessor 114 dazu eingesetzt, den FPGA während des Systemstarts zu konfigurieren. Nach der Konfiguration erfolgt die Kommunikation von Bilddaten und anderer Systemdaten über den PCIe-Bus 226 . Der PCIe-Bus kann als 2x-Lane konfiguriert werden. Die FPGA 210 ist auch über eine 16-Bit-Verbindung, die das Puffer von Bilddaten erlaubt, mit einem 64 MByte Datenspeicher 228 verbunden, so dass die hohe Bildfrequenz des Imagers auf der Ebene der Imagerplatine untergebracht werden kann - und solche Bildrahmen können nachträglich entweder für nachfolgende Bildverarbeitungs- oder Auto-Regulierungs-Funktionen eingesetzt werden, wie weiter unten beschrieben. Im Allgemeinen kann ein Teil der Auto-Regulierung die Verwendung von Bildern mit geringerer Auflösung mit sich bringen. Eine Folge von erfassten Bildern kann somit im Speicher 228 bei niedrigerer Auflösung (ausreichend für FPGA-Funktionen) gespeichert werden, während Bilder mit höherer Auflösung an den Prozessor 114 für den Einsatz in unten beschriebenen Prozessen weitergeleitet werden. Der Speicher 228 kann jede akzeptable Type sein, z. B. ein dynamisches DDR3-RAM. Alternativ kann eine anderer Speicherart, beispielsweise ein statisches RAM (SRAM) eingesetzt werden. Geeignete Versorgungsspannungen 230 für die verschiedenen Komponenten der Imagerplatine sind ebenfalls vorgesehen und werden von externen Spannungsversorgungen (in der Regel 120-240 VAC Quellen mit entsprechenden Transformatoren, Gleichrichtern usw.) bezogen.
  • Ein Link 232 verbindet beispielhaft auch den FPGA 210 mit einer externen Beleuchtungsregelungs-Steckverbindung 234 auf der E/A-Platine 117 und auf der hinteren Außenseite des Gehäuse der Kamerabaugruppe 110 zu sehen. Desgleichen verbindet der Link 232 auch den FPGA mit einem Sync-Trigger-Anschluss 236 auf der E/A-Platine 117 , um die Bilderfassung (einschließlich Beleuchtungstrigger) mit anderen miteinander verbundenen Kamerabaugruppen zu synchronisieren. Diese Verbindungen können auftreten, wo mehrere Kamerabaugruppen gleichzeitig mehrere Seiten einer Box abbilden, und/oder wo Boxen sich durch mehrere, relativ nebeneinander liegende Stationen einer Strecke bewegen. Eine Synchronisierung vermeidet Übersprechen zwischen Illuminatoren und andere unerwünschte Effekte. Ganz allgemein ist anzumerken, dass die verschiedenen Bilderfassungs-Funktionen und/oder Prozesse, einschließlich interne und externe Beleuchtung, Fokus- und Helligkeitsregelung in dieser Ausführungsform direkt durch den schnell arbeitenden FPGA-Prozess 245 gesteuert werden. Dies erlaubt es dem Prozessor 114 der Hauptplatine seinen Betrieb auf Bildverarbeitungsaufgaben für die und Decodieren der Bilddaten zu konzentrieren. Zusätzlich ermöglicht das Synchronisieren der Erfassung auch, dass mehrere Kamerabaugruppen einen einzigen Illuminator oder eine Gruppe von Illuminatoren miteinander teilen, da der/die Illuminator(en) für jede Kamera unabhängig ausgelöst werden, wenn ein Bildrahmen erfasst wird.
  • Es ist dabei zu beachten, dass geeignete Schnittstellen für externe Trigger vorgesehen werden können. Solche externen Trigger können ein Ansteuern der Kamerabaugruppe ermöglichen, so dass eine Bilderfassung dann auftritt, wenn sich ein bewegtes Objekt im Bereich des Sichtfeldes befindet. Dieses Ansteuern vermeidet das Erfassen unnötiger Bilder des Raumes zwischen Objekten auf der Strecke. Ein Detektor oder ein anderes Schaltgerät kann dazu verwendet werden, ein Ansteuersignal nach herkömmlichen Methoden bereitzustellen.
  • Die Funktionen des FPGA-210 können bestimmte Vorverarbeitungsvorgänge auf dem Bild bereitstellen, um Geschwindigkeit und Effizienz des Bilddaten-Handling zu erhöhen. Bilddaten werden seriell vom Imager 112 an den FPGA übertragen Alle Daten oder Teile davon können im Datenspeicher 228 vorübergehend gespeichert werden, damit sie für verschiedene FPGA-Betriebe analysiert werden können. Der FPGA 210 setzt die seriellen Bilddaten auf ein PCI-Express (PCIe) Protokoll um und verwendet dazu konventionelle Techniken, so dass es mit der Daten-Bus-Architektur des Prozessors kompatibel ist, und via den PCIe-Bus 226 an den Prozessor 114 übertragen wird. Die Bilddaten werden dann direkt in den Datenspeicher 244 zur weiteren Verarbeitung durch die Kerne C1 und C2 des Prozessors übertragen. Die Verwendung mehrerer Prozessorkerne ermöglicht bei der Verarbeitung von Bilddaten viele wünschenswerte und effizienzsteigernde Vorgänge, die nachfolgend detailliert beschrieben werden. Der FPGA 210 ist auch so programmiert (d. h. der FPGA-Prozess 245), dass die erfassten Bilddaten analysiert werden, um spezifische System Auto-Reguliervorgänge wie automatische Helligkeitssteuerung (d. h. automatische Belichtung) und Auto Fokussteuerung, beispielsweise unter Verwendung der Flüssigkeitslinsen-Baugruppe 216 auszuführen. Wenn sich die Brennweite verändert, z. B. bei unterschiedlich hohen Objekten, müssen in der Regel sowohl die Helligkeit als auch der Fokus eingestellt werden. Im Allgemeinen bedingen diese Vorgänge eine höhere Bilderfassungsrate beim Imager 112 (z. B. ein Erfassen bei ca. 200-300 Bildrahmen pro Sekunde) um weitere Vorgänge bei Bilddaten zu ermöglichen, während die bereinigte Decodierrate beim Prozessor 114 mindestens 100 Bilder pro Sekunde ist. Das heißt, einige Bilder werden innerhalb des FPGA verarbeitet, während andere zum Speicher auf der Hauptplatine 115 für die Bildverarbeitung übertragen werden (z. B. ID auffinden und Decodieren im Bild gefundener IDs) ohne die maximale Bildrate des Prozessors zu kompromittieren. Ganz allgemein puffert der Speicher 228 Bildrahmen wenn erfasst und verwendet einige Rahmen (aus der überschüssigen Anzahl der wegen der hohen Bildfrequenz verfügbaren Bildrahmen) für den Einsatz in Auto-Regulierungsfunktionen bei dem FPGA 210 , während andere Frames an den Prozessor 114 zur Weiterverarbeitung übertragen werden. Die Aufteilung der Funktionen zwischen FPGA 210 und Prozessor 114 unterstützt diese Effizienz und eine besser optimierte Auslastung der Systemressourcen.
  • In verschiedenen Ausführungsformen, können FPGA 210 und Speicher 228 dazu angepasst werden, eine „Häufung“ von Bildrahmen bei der hohen Bilderfassungsrate zu erhalten, wobei ein Teil davon für die Durchführung der Auto-Regulierung verwendet wird und andere an den Prozessor bei einer für seine Verarbeitungsgeschwindigkeit geeigneten Rate übertragen werden. Diese hohe Anzahl von Bildrahmen, die während der „Häufung“ erhalten worden sind (z. B., während sich das Objekt im Sichtfeld befindet), kann an den Prozessor 114 vor und während der interstitielle Zeit bis zu dem Punkt gespeist werden, an welchem das nächste Objekt in das Blickfeld kommt - wenn die nächste „Häufung“ erhalten, gespeichert und an den Prozessor 114 übertragen wird.
  • Wie hierin verwendet sollten die Begriffe „Prozess“ und/oder „Prozessor“ großzügig verstanden werden und eine Vielfalt elektronischer Hardware- und/oder softwarebasierender Funktionen und Komponenten einschließen. Darüber hinaus kann ein dargestellter Prozess oder Prozessor mit anderen Prozessen bzw. Prozessoren kombiniert werden oder auf verschiedene Unterkategorien oder Prozessoren aufgeteilt werden. Entsprechend hierin enthaltener Ausführungsformen können solche Unterkategorien und/oder Sub-Prozessoren kombiniert werden. Ebenso ist ausdrücklich beabsichtigt, dass jede Funktion, jeder Prozess und/oder jeder Prozessor hierin mit elektronischer Hardware, Software bestehend aus einem nicht vergänglich Computerlesbaren Datenträger mit Programmanweisungen oder eine Kombination von Hardware und Software umgesetzt werden.
  • Mit Bezug auf die Hauptplatine 115 in 2 ist der Multicore-Prozessor 114 dargestellt. Eine Vielzahl von Prozessortypen, Marken und/oder Konfigurationen können dabei eingesetzt werden, um die Lehren der Ausführungsformen hierin durchzuführen. In einer beispielhaften Ausführungsform umfasst der Prozessor 114 einen Dualcore DSP, beispielsweise das Modell 6672 verfügbar von Texas Instruments Inc., Dallas, Texas. Dieser Prozessor 114 arbeitet ausreichend schnell und kosteneffizient für die hierin erwogenen Zwecke der Bildverarbeitungs-Anwendungen. Wie hierin verwendet bezieht sich der Begriff „Multicore“ auf zwei (d. h. „Dualcore“) oder mehrere diskrete Prozessoren auf einem einzelnen Bauteil instanziiert und/oder gekapselt in einem auf einer einzelnen Platine montiertem Schaltkreis-Chip. Jeder Kern kann in der Regel eigenständig zumindest einen Teil der im Speicher 244 gespeicherten Daten verarbeiten. Der Prozessor 114 ist mit einem nichtflüchtigen Speicher 240 mit entsprechenden Startkonfigurationsdaten verbunden. Dies ermöglicht einen fundamentalen Betrieb des Prozessors beim Systemstart der Kamera einschließlich des Ladens irgendeines Programm-Codes und/oder einer Betriebssystem-Software. Der Programm Code/die Betriebssystem-Software wird in einem Programmspeicher 242 gespeichert, der mit einer Vielzahl von Solid-State-Speichergeräten konfiguriert werden kann. In einer beispielhaften Ausführungsform werden ein NOR-Flash-Speicher mit 32 MByte Kapazität und eine 16-Bit-Verbindung angewandt. Beim Systemstart wird der Programmcode aus dem Flash-Programmspeicher 242 in einen Datenspeicher 244 geladen. Bilddaten und andere Daten, die der Prozessor für den Betrieb verwendet, werden ebenfalls in einem Datenspeicher 244 gespeichert und können vom Datenspeicher gelöscht werden, wenn sie von den Systemprozessen nicht mehr benötigt werden. Es kann dabei eine Vielzahl von Speichertypen, Größen und Konfigurationen eingesetzt werden. In einer Ausführungsform, ist der Speicher ein dynamisches 256 MByte DDR3 RAM mit einer 64-Bit-Verbindung.
  • Andere konventionelle Schaltungen, die dazu verwendet werden, den Prozessor zu betreiben und zusätzliche Funktionen (wie beispielsweise das Debuggen des Codes) bereitzustellen sind ebenfalls auf der Hauptplatine 115 vorgesehen und mit dem Prozessor 114 verbunden. Diese Schaltungen können mit gewöhnlichem Fachwissen konfiguriert werden, und können einen Kern-Spannungsregler 246 (z. B. ein Modell UCD7242 von Texas Instruments), einen LVDS-Taktgenerator 248 (zum Beispiel ein Modell CDCE62005 auch von Texas Instruments) und eine Sequenzierungs-Mikrocontroller 250 (z. B. eine PIC18F45 von Microchip Technology Inc. aus Chandler, Arizona) enthalten. Eine JTAG-Schnittstelle 252 (z. B. 60-polig und 14-polig) wird ebenfalls zwischen einem Port auf dem Prozessor 114 und dem Sequenzierungs-Microcontroller 250 verbunden. Entsprechende Spannungen (z. B. 1,5 V, 1,8 V, 2,5 V und 6,2 V) werden den verschiedenen Schaltungskomponenten auf der Hauptplatine 115 durch eine Spannungsversorgung 254 bereitgestellt, die mit einem Regulator 260 (z. B. ein 24 V auf 3,3 V Regler) auf der E/A-Platine verknüpft ist. Dieser erhält über ein geeignetes Kabel 262 externen Strom von der Versorgung (z. B. 24 V Wand-Transformator). Die Hauptplatine 115 und der zugehörige Prozessor 114 sind mit der E/A-Platine über einen am Prozessor montierten UART verbunden, der mit einem seriellen Anschluss 266 auf der Außenseite des Gehäuses, konfiguriert nach dem RS-232-Standard verbunden ist. Dieser Port kann zur Kontrolle externer Funktionen, wie beispielsweise Warnungen, Förderband Herunterfahren und dergleichen verwendet werden. Der Prozessor enthält auch eine medienunabhängige serielle Gigabit-Schnittstelle (Serial Gigabit Media Independent Interface SGMII), die über einen Physical Layer Chip 268 und Gigabit-Ethernet-Übertrager 270 mit einem Ethernet-Anschluss auf der Rückseite des Gehäuses verbunden wird. Dadurch können Bilddaten und andere Kontrollinformationen über das Netzwerk an ein entferntes Computersystem übergeben werden. Darüber hinaus können die SystemFunktionen durch einen über eine Schnittstelle verbundenen Computer und die entsprechende Benutzeroberfläche (z. B. Web-basierte grafische Benutzeroberfläche/Browserbildschirm(e)) vom Benutzer programmiert werden. Drahtlose Ethernet-Links, Bluetooth<®>-Kommunikation, etc. können ebenfalls auf der Kamerabaugruppe als eine Option in verschiedenen Ausführungsformen (nicht abgebildet) vorgesehen werden.
  • Der Prozessor-SPI-Bus 224 verbindet mit einem entsprechenden ATTINY Microcontroller 272 (verfügbar, z. B. von Atmel Corporation in San Jose, Kalifornien), welcher mittels konventioneller Methoden über eine Schnittstellen mit einem 4 X optisch ein 274 und 4 X optischen Ausgang 276 verbunden ist. Diese Schnittstelle bietet „langsame“ E/A-Betriebe, einschließlich externe Ansteuer-Triggereingänge, „good-read“ und „bad-read“ Ausgänge, Encoder-Eingänge (z. B. Zählen von Bewegungsimpulsen auf einer beweglichen Streckenantrieb-Baugruppe), Objekterkennung und eine Vielzahl anderer E/A-Funktionen. Der Bus 224 verbindet auch einen weiteren ATTINY Microcontroller 280 auf der UI-Platine 123. Diese Microcontroller kann mit Geräten, die über eine Benutzerschnittstelle (UI) verfügen, auf der äußeren Rückseite der Kameragehäuse-Baugruppe verbunden werden. Zu diesen Geräten zählen, ohne darauf beschränkt zu sein, ein akustisches Signal-Generator (z. B. ein Summer) 282 , mindestens eine Schaltfläche 284 und eine oder mehrere Statusanzeigen (z. B. LEDs) 286 . Diese Geräte ermöglichen dem Benutzer eine Vielzahl von Funktionen, einschließlich Schulung von Bildverarbeitungssystemen, Kalibrieren und dergleichen auszuführen und Statusmeldung über den Systembetrieb zu erhalten. Dazu zählen beispielsweise Ein-/Aus-Funktionalität, Fehlerwarnungen, Erfolg/Misserfolg beim Lesen von IDs, usw. Typische Statusanzeigen (LEDs) können mit Trigger-ein, Trigger-aus, Encoder und Status der Objekterkennung verbunden sein. Andere Schnittstellengeräte (nicht abgebildet) wie beispielsweise ein Anzeigebildschirm und/oder ein alphanumerischem Display können optional auch vorgesehen sein. Die E/A-Platine 117 enthält einen entsprechenden Temperatursensor zum Überwachen der Innentemperatur.
  • Es sollte dabei klar sein, dass die Lage und die Positionierung der Komponenten auf jeder der verschiedenen Platinen sowie die Funktionen dieser Komponenten äußerst variabel ist. Es ist ausdrücklich beabsichtigt, dass mehr oder weniger Leiterplatten in verschiedenen Ausführungsformen eingesetzt werden können. Desgleichen können einige oder alle Funktionen einer Pluralität von Komponenten in einem einzigen Schaltkreis kombiniert werden oder einige oder alle Funktionen einer bestimmten dargestellten Komponente können in eine Vielzahl von Schaltungen auf einer oder mehreren Platinen aufgeteilt werden. Darüber hinaus sind Komponenten, Verbindungsleitungen, Bus-Architektur und Funktionen, die in 2 dargestellt sind, lediglich beispielhaft für eine Vielfalt von Schaltungs-Layouts, die ähnliche wie die beschriebenen Funktionen ausführen können. Der Aufbau von alternativen Schaltungs-Layouts mit ähnlicher oder gleicher Funktionalität sollte Fachleuten auf diesem Gebiet bekannt sein.
  • III. Physikalisches Paket
  • Nach der Beschreibung der Anordnung von elektronischen Komponenten auf den verschiedenen Platinen der Kamerabaugruppe und deren jeweilige Verbindungen und Funktionen, wird nun Bezug genommen auf die 3-7, welche die physische Struktur der Kamerabaugruppe 110 beschreiben. 3-6 zeigen die Kamerabaugruppe 110 mit einer konventionellen Linse 310 und umgebende innere (Ring-)Beleuchtungsbaugruppe 320 entsprechend einer Ausführungsform. 7 ist eine nähere externe Ansicht der Kamerabaugruppe 110 mit optionalem Sichtfeldexpander-Zusatz 118 und zugehöriger Linsenbaugruppe 116 , wie in 1 dargestellt.
  • Das Gehäuse 330 der Kamerabaugruppe 110 ist aus einem Material mit entsprechender Steifigkeit und thermischen Übertragungseigenschaften aufgebaut. In einer beispielhaften Ausführungsform kann eine Aluminiumlegierung (z. B. 6061) eingesetzt werden, um einen Teil oder das ganze Gehäuse zu fertigen. Der Körper 332 ist an seinem Umfang auch mit einheitlich geformten, länglichen Rippen 339 ausgestattet, um den Wärmeübergang zusätzlich zu unterstützen. Das Gehäuse 330 besteht aus drei Hauptabschnitten, einem Körper 332 , einer Vorderseite 334 und einer Rückseite 336 . Der Körper 332 besteht aus einem Stück mit einem offenen Innenraum. Die Vorderseite 334 und Rückseite 336 sind jeweils an entgegengesetzten Enden des Körpers mittels in Löchern 338 bzw. 410 sitzenden Schrauben gesichert. Die Vorderseite 334 und Rückseite 336 werden gegen die Enden des Körpers gedrückt, um eine dampfdichte Abdichtung zu bilden, welche die interne Elektronik vor Staub, Feuchtigkeit und andere Verunreinigungen, die in Herstellungs- oder andere Verarbeitungsumgebung vorhanden sein können, schützt. Eine Dichtung (z. B. ein O-Ring) 510 (siehe 5) befindet sich an den jeweiligen Enden des Körpers 332 , um unter Druck sowohl gegen die Vorderseite 334 als auch die Rückseite 336 abzudichten. Zu beachten ist dabei, dass der Körper als eine extrudierte Struktur mit entsprechenden Bohrungen und anderen maschinell hergestellten und je nach Bedarf auf der Außenseite als auch im Innenraum angewandten Formen gebildet werden kann.
  • Wie auch in 5 gezeigt, werden die Imagerplatine und der damit verbundene Imager 112 gegen die Vorderseite 334 gesichert, wobei der Imager senkrecht zur optischen Achse OA liegt und durch die Linsenbaugruppe definiert ist. In dieser Ausführungsform wird eine Festlinsen-Baugruppe 310 angewandt, die in konventioneller Anordnung mit vorderen und hinteren konvexen Linsen 512 und 514 ausgestattet ist. Als Beispiel ist die abgebildete Linsenbaugruppe eine 16 mm Linsenbaugruppe mit einer „C-Mount“ Basis. Sie ist in die Linsenbasis 520 der Kamerabaugruppe eingefädelt, die von der Vorderseite 334 absteht. Andere Linsentypen und Montagesockel-Konfigurationen sind ausdrücklich in alternativen Ausführungsformen wie weiter unten beschrieben beabsichtigt.
  • Die Linse ist von einer ringförmigen Innenring-Beleuchtungsbaugruppe 320 umgeben, die an ihrer Vorderseite eine äußere Verkleidung 524 und eine Beleuchtungs-Platine 526 aufweist. Die Platine 526 wird auf drei Abstandshaltern 528 , angeordnet in dreieckige Ausrichtung um die optische Achse OA, unterstützt. In dieser Ausführungsform wird die Beleuchtung von acht High-Output LEDs 530 (z. B. OSRAM Dragon LEDs) mit zugehörigen Linsen 532 vorgesehen. Die LEDs können in einer ausgewählten, diskret sichtbaren und/oder in der Nähe sichtbarer (z. B. IR) Wellenlänge betrieben werden. In verschiedenen Ausführungsformen arbeiten unterschiedliche LEDs bei unterschiedlichen Wellenlängen, die durch den Regelvorgang der Beleuchtung ausgewählt werden können. Zum Beispiel können einige LEDs bei einer grünen Wellenlänge betrieben werden, während andere bei einer roten Wellenlänge betrieben werden können. Mit Bezug auf 6, wo die Beleuchtungsbaugruppe 320 entfernt worden ist, ist die vordere Fläche 610 der Kamera-Baumgruppe 110 bloßgelegt. Dieses Frontfläche 610 enthält ein Paar der Multi-Pin-Anschlüsse 614 und 616, die sich auf der Imagerplatine befinden und analog den Diagramm-Komponenten 214 und 216 der 2 sind. Das heißt, der 5-poligen Stecker 614 wird durch ein Kabel (nicht abgebildet) mit der Beleuchtungs-Platine 526 verbunden. Der 8-poligen Stecker 616 wird verbunden, um die weiter unten beschriebene optionale Flüssigkeitslinsen-Baugruppe zu steuern und mit Strom zu versorgen. Die Frontfläche 610 enthält auch drei Sockel 620 (die mit Gewindelöchern versehen werden können) zur Unterstützung einer jeden der Abstandshalter 528 für die Beleuchtungs-Platine. Der Gewindesockel des „C-Mount“ ist ebenfalls ersichtlich. Zu beachten ist dabei, dass die abgebildete interne Beleuchtungsbaugruppe 320 eine optionale Implementierung für die Bildverarbeitungs-Kamerabaugruppe ist. In verschiedenen hierin beschriebenen Ausführungsformen kann die interne Beleuchtungsbaugruppe durch eine oder mehrere externe Beleuchtung-Baugruppen ersetzt oder unter bestimmten besonderen Umständen kann Umgebungslicht weggelassen werden.
  • Mit besonderem Bezug auf den Querschnitt der 5 ist die Imagerplatine durch ein Flachbandkabel 550 mit der Hauptplatine 115 verbunden, die sich beispielhaft gegen die Oberseite des Körper-Innenraums befindet. Die Hauptplatine kommuniziert in dieser Position thermisch mit dem Körper 332 und zugehörigen Rippen 339 und erlaubt somit eine bessere Wärmeübertragung. Die Hauptplatine 115 kann mittels Schrauben befestigt werden oder wie gezeigt mittels eines Halterungselements 552 , das an der Unterseite der Hauptplatine 115 an Orten eingreift, die frei von Interferenzen mit Schaltungskomponenten auf der Platine sind. Die Halterung 552 umfasst eine untere Erweiterung 553 mit einem Loch, an dem sich der nach oben verlängerte vertikale Stab 555 auf einer Sockel 554 in teleskopartiger Weise bewegt. Der Sockel 554 sitzt an der Unterseite des Gehäusekörpers 332 . Die Halterung 552 ist durch eine zwischen der Unterseite der Halterung und dem Sockel gelegene und sowohl die Erweiterung 553 als auch den Ständer 555 umfassende Druckfeder 556 nach oben vorgespannt. Durch diese Anordnung kann die Platine durch Verändern der Position der Halterung 552 im Verhältnis zum Sockel 554 hineingesteckt oder entfernt werden. Das heißt, um die Platine 115 zu installieren, drückt der Benutzer die Halterung 552 gegen die Vorspannkraft der Feder 556, schiebt die Platine 115 in das Innere des Körpers 332 hinein, und gibt die Halterung 552 wieder frei, wodurch die Platine 115 unter Druck eingreift und gegen die innere Oberseite des Körpers 332 in Platz gehalten wird. Zum Entfernen wird dieser Vorgang umgekehrt. Die Platine 115 wird durch die Feder 556 fest gegen den Körper 332 gehalten und gewährleistet dadurch eine ausreichende Wärmeübertragung. In verschiedenen Ausführungsformen kann die Hauptplatine 115 auch on-Board-Kühlkörper enthalten, die mit dem Körper 332 verbunden sind. Desgleichen kann sich eine wärmeleitfähige Paste oder ein anderes Mittel zur Wärmeübertragung zwischen berührenden Teilen der Platine 115 (z. B. der Prozessor 114) und der Innenfläche des Körpers 332 befinden. Mit kurzem Verweis auf die weiter unten beschriebene 13 kann die obere Seite der Hauptplatine 115 thermische Lücken-Pads 1330 enthalten, die die Lücke zwischen der Oberseite der Platine 115 und der Innenfläche des Körpers füllen.
  • Ganz allgemein mit Bezug auch auf 5A ist das Profil der Innenfläche 580 des Körpers 332 in Bezug auf die Hauptplatine 115 so geformt, dass es eng an die Form des vorspringenden, Oberflächenmontierbaren Schaltungskomponenten auf der Hauptplatine 115 entspricht, und die Komponenten sind montiert, um die Form des Körpers aufnehmen zu können. Das heißt, größere Komponenten können in Richtung der längslaufenden Mittellinie platziert werden, wo im Körper ein größeres Profil vorhanden ist, während sich kürzere Komponenten entlang jeder Seite der Längsachse der Hauptplatine befinden. Ganz allgemein sind Komponenten in Höhenzonen unterteilt, die der inneren Form des Körpers entsprechen. Wo bestimmte Schaltungen eher groß oder hoch sind (z. B. Kondensatoren) können diese Komponenten in zwei oder mehr kleinere Komponenten mit dem gleichen Allgemeinen elektronischen Wert als größere Einzelkomponenten aufgeteilt werden. Thermische Lückenfüller (d. h. Pads oder andere Medien) werden zwischen der Platine und der Oberseite des Innenraums vorgesehen, und diese Platzierung der Komponenten sorgt dafür, dass der Abstand zwischen dem Körper und den Komponenten sowohl für kurze als auch hohe Komponenten auf Grund der inneren Geometrie des Körpers minimiert wird. Beispielhaft ist der Multicore-Prozessor wie gezeigt angeordnet, um die Innenseite des Körpers direkt (in der Regel mit einer dünnen Schicht einer Wärmeleitpaste oder ähnlichem dazwischen) zu berühren, so dass der Körper als ein wirksamer thermischer Kühlkörper für den Prozessor fungiert. Auch ist die Hauptplatine 115 wie gezeigt seitlich in Bezug auf die Halterung 552 durch Ständer 582 indiziert, die durch Löcher in der Platine durchreichen. Dadurch wird sichergestellt, dass die Halterung und die Platine eine vorgegebene Ausrichtung in Bezug auf den Körper aufrechterhalten. Beachten Sie, dass obwohl die Kühlung in der dargestellten Ausführungsform passiv ist, in anderen Ausführungsformen ein oder mehrere Lüfter die Kühlung der Innen- oder Außenseite des Gehäuses unterstützen können. Es werden insbesondere vier Montagelöcher 588 an der Unterseite des Körpers 332 bereitgestellt (zwei davon sind in 5A strichliert dargestellt) . Diese Löcher 588 sind in dieser Ausführungsform für die Aufnahme eines konventionellen 60 × 60 Millimeter Computerlüfters positioniert. Alternativ ist ausdrücklich beabsichtigt, dass, wie unten beschrieben, die Löcher 588 so positioniert werden können, dass eine Zwischenhalterung zur Montage eines Lüfters und/oder anderer Lüfteranordnungen/-größen adaptiert und aufgenommen werden kann. Eine Verbindung kann auf dem Gehäuse vorgesehen werden, oder es kann eine externe Verbindung mit einem entsprechenden Spannungsadapter eingesetzt werden, um den/die Lüfter anzuspeisen. Darüber hinaus können in alternativen Ausführungsformen zusätzliche Kühlungsanordnungen (z. B. Flüssigkeitskühlung) eingesetzt werden. Im Allgemeinen ist das System für den Betrieb mit Umluftkühlung bis ca. 40°C ausgelegt. In bestimmten Umgebungen, wo die Betriebstemperatur diesen Wert überschreiten kann, ist jedoch die Verwendung von mindestens einem Lüfter aktiviert.
  • Wie in 5 gezeigt, ist die E/A-Platine 117 gegen die hintere Innenseite 336 des Gehäuses der Kamerabaugruppe 330 montiert. Die E/A-Platine 117 ist über ein Flachbandkabel 560 mit der Rückseite der Hauptplatine 115 verbunden. Verschiedenen Anschlüsse, 420, 422 , 424 , 426 und 428 auf der Rückseite (siehe auch 4), deren Funktionen oben mit Bezug auf 2 beschrieben sind, erstrecken sich von der Rückseite der E/A-Platine 117 . Die E/A-Platine ist desgleichen mit der UI-Platine 123 über ein Flachbandkabel 570 verbunden. Wie gezeigt, ist die UI-Platine für den Benutzer entlang einer abgewinkelten Oberseite 440 der Rückseite 336 bloßgelegt. Anordnung und Lage von Leiterplatten auf und/oder innerhalb des Körpers können in anderen Ausführungsformen variiert werden.
  • Mit Bezug auf 7 und den ausführlicheren Querschnitt in 7A, wird der Sichtfeldexpander 118 über eine Kupplung 710 befestigt dargestellt, die eine entfernbare L-förmige Halterung 712 auf der Vorderseite der Kamerabaugruppe enthält. Diese Halterung 712 umfasst eine vertikale Platte 714 , die der Kamera-Vorderseite 334 gegenüberliegt und mit Befestigungselementen gesichert ist, sowie eine horizontale Platte 716, um weitere Montagehalterungen und unterstützende Strukturen daran zu sichern. Die Halterung 712 der Kupplung 710 kann auch dazu verwendet werden, einen abnehmbaren Illuminator 750, wie unten beschrieben daran zu befestigen. Das Gehäuse 730 des Sichtfeldexpanders wird in Bezug auf die Kamerabaugruppe durch einen Satz von vier Ständern 732 , die in der Sockelhalterung auf der Kamera-Seite sowie an der Rückwand des Gehäuses des Sichtfeldexpanders gesichert werden, unterstützt. Der Flansch 736 ist an einer Rückseite des Gehäuses 730 des Sichtfeldexpanders durch entsprechende Befestigungselement oder andere Sicherungsmechanismen (nicht abgebildet) gesichert. Die Linsenbaugruppe 116 wird durch die abgebildeten zylindrische äußere Verkleidung 720 abgedeckt, die sich zwischen der Vorderseite (610) der Kamerabaugruppe 110 und der Rückseite des Gehäuses 730 des Sichtfeldexpanders erstreckt. Diese Verkleidung 720 ist beweglich und dient dazu, die Linse und das Gehäuse des Sichtfeldexpanders gegen Staub und Infiltration von externen Umweltschadstoffen abzudichten. Die Ständer 732 oder ein anderer akzeptabler offener Rahmen ermöglichen den Zugriff auf die Linsenbaugruppe 116 für Anpassungen und Service. Die Ständer 732 unterstützen beweglich (Doppelpfeil 744) einen Schieber 746 , der in eine bewegliche Linsenabdeckung 1692 eingreift. Ein Paar Tabs 747 mit reibungsarmen Buchsen bewegen sich entlang zwei (oder mehrere) der Ständer 732 . Die O-Ringe 748 , 749 sind im inneren Umfang des Flansches 736 und der gegenüberliegenden vertikalen Stirnseite 714 der L-förmigen Halterung 712 eingebettet. Die Linsenabdeckung 720 kann aus der dargestellten abgedichteten Lage nach vorne herausgeschoben werden, um die Linsenbaugruppe 116 (in 7A gestrichelt als ein beispielhafter Typ einer Linse) zu offenbaren. Die vertikale Stirnseite 714 wird mit einer Anschlag-Schulter 754 gebildet, welche die zentrale Öffnung 756 definiert. Diese Schulter verhindert eine weitere Vorwärtsbewegung der Abdeckung 720 in Richtung der Kamerabaugruppe, nachdem sie abdichtend eingerastet ist. Ein hinterer Anschlag 758 wird auch am vorderen Ende der Abdeckung 720 vorgesehen, um eine innere Stirnseite des Flansches 736 einzurasten. Die nach vorne verschiebbare Bewegung der Abdeckung 720 übergibt es in das Innere des Gehäuses 730 des Sichtfeldexpanders, bis der Schieber in die Außenwand des Flansches 736 einrastet. Dies sollte genügend Raum bereitstellen, um für Anpassungen und/oder Service auf die Linse 1697 zuzugreifen. Das Gehäuse 730 des Sichtfeldexpanders kann aus einer Vielzahl von Materialien, einschließlich verschiedener Polymere, aufgebaut werden, wie z. B. spritzgegossenes, glasgefülltes Polykarbonat und/oder Verbunde oder Metalle wie Aluminium. Insbesondere minimiert glasgefülltes Polykarbonat Maßtoleranz durch Schrumpfung während des Spritzguss-Prozesses. Die Vorderseite des Gehäuses des Sichtfeldexpanders ist gegenüber der Szene offen und beinhaltet ein abdeckendes, transparentes Fenster 740 .
  • Mit weiterem Bezug auf 8 und 9 wird die Geometrie der Spiegel des Sichtfeldexpanders detaillierter dargestellt, wobei das Gehäuse 730 entfernt ist. Obwohl eine Vielzahl von optischen Komponenten und Anordnungen eingesetzt werden kann, um einen Sichtfeldexpander in verschiedenen Ausführungsformen bereitzustellen, ist in der Regel beabsichtigt, dass der Sichtfeldexpander ein breites Bild in mindestens zwei gestapelten Bilder (Streifen) unterteilt, die jeweils einen Teil des Imagers einnehmen. Auf diese Weise wird die Bildhöhe um etwa halb (mit Überschneidungen) reduziert, während die Breite der einzelnen Streifen (ebenfalls mit Überschneidungen) die gesamte Breite des Imagers ist. Angesichts der Dualcore-Verarbeitungsfähigkeit und hohen von der beispielhaften Kamerabaugruppe bereitgestellten Bilderfassungsgeschwindigkeit, kann eine effiziente und schnelle Verarbeitung des Streifenpaares mittels einer Vielzahl an Verarbeitungstechniken (weiter unten beschrieben) durchgeführt werden. Beispielhaft basiert der abgebildeten Sichtfeldexpander 118 auf der oben integrierten US Patent Anmeldung Serien Nr. 13/367.141 mit dem Titel SYSTEM AND METHOD FOR EXPANSION OF FIELD OF VW IN A VISION SYSTEM, von Nunnink, et al. Weitere Ausführungsformen der Sichtfeldexpander-Anordnungen, die gemäß der Bildverarbeitungskamera-Baugruppe und zugehörigen Kupplungen und Zubehörteilen eingesetzt werden können, werden ebenfalls durch weitere nützliche Hintergrundinformationen in der gemeinsam zugewiesenen teilweisen Fortsetzung der US Patent Anmeldung Serien-Nr. [Aktenzeichen C12-004CIP (119/0126-P-1)], mit Titel SYSTEM AND METHOD FOR EXPANSION OF FIELD OF VIEW IN A VISION SYSTEM, von Nunnink, et al., hiermit am gleichen Datum eingereicht und die Lehren die hierin durch Bezugnahme ausdrücklich einbezogen sind.
  • Wie in 8 dargestellt, enthalten die optischen Komponenten des Sichtfeldexpanders linke und rechte äußere Spiegel 810 und 812 und gestapelt, überkreuzende innere Spiegel 820 und 822 . Die äußeren Spiegel 810 und 812 sind unter unterschiedlichen Winkeln geneigt. Die inneren Spiegel 820 , 822 sind ebenfalls unter verschiedenen Winkeln geneigt. Mit Bezug auf 9 wird das Sichtfeld 910 und 912 jedes äußeren Spiegels 810 und 812 gezeigt. Es besteht dabei eine leichte Überschneidungszone OR, die mindestens so breit ist wie das größte interessierende Merkmal (z. B. der größte Barcode) der auf der Brennweite FD abgebildet werden soll. Dadurch wird sichergestellt, dass ein vollständiges Bild des Merkmals in mindestens einem der beiden Felder 910 , 912 erscheint. Jedes abgebildet Feld 910 , 912 wird durch seinen jeweiligen äußeren Spiegel voll auf einen der inneren überkreuzten Spiegel 820 , 822 wie gezeigt reflektiert. Das reflektierte Bild wird dann weiter in die Linse 310 mit jedem der Felder vertikal gestapelt relativ zu den anderen (aufgrund der relativen Neigung eines jeden Spiegels 810 , 812 , 820 , 822) reflektiert. So wird, wie schematisch in 10 gezeigt, jedes Feld 910 , 912 respektive auf jeweils ein Paar von gestapelten Streifenzonen 1010 , 1012 auf dem Imager 112 projiziert. Eine relativ kleine, vertikale Überschneidungszone 1030 kann dabei vorgesehen sein, welche Bilder beider Felder 910 , 912 enthält. Die Überschneidung in vertikaler Richtung hängt von der Blende der Linsenbaugruppe ab, und kann mit einer kleinen Blende-Einstellung, z. B. F:8 minimiert werden. Die gestrichelten Linien 1040 und 1042 auf jedem Streifen repräsentieren die horizontale Überschneidung der Felder OR in 9. Diese Zone wird auf komplette Merkmale (z. B. IDs) analysiert, die vollständig in einem Streifen vorhanden sein können, und alle oder teilweise in dem anderen Streifen fehlen können.
  • In eine beispielhaften Ausführungsform und mittels beispielhafter, repräsentative Größen, haben die äußeren Spiegel 810 , 812 jeweils eine horizontale Länge OML von zwischen 40 und 120 Millimeter, typisch 84 Millimeter und einer vertikale Höhe OMH zwischen 20 und 50 Millimeter, typisch 33 Millimeter. Desgleichen habe die überkreuzenden inneren Spiegel 820 , 822 beispielhaft eine horizontale Länge CML von zwischen 30 und 60 Millimeter, typisch 53 Millimeter und einer vertikale Höhe CMH zwischen 10 und 25 Millimeter, typisch 21 Millimeter. Die insgesamt horizontale Spanne der äußeren Spiegel 810 , 812 ist ca. 235 Millimeter in einer beispielhaften Ausführungsform, und der Abstand MS zwischen jeder jeweiligen äußeren und zugehörigen inneren Spiegelfläche (d. h. 210 und 220 ; 212 und 222) beträgt ungefähr 100 Millimeter. Basierend auf den vorangegangenen Abmessungen und mit entsprechenden Fokus-Einstellung in einer ausgewählten Kameralinse 310 , ergibt sich ein erweitertes Sichtfeld WF von ca. 60-80 cm, das mit hoher Auflösung mit einer einzigen Sichtfeldexpander-Kamera-Anordnung abgedeckt werden soll, basierend auf einer Brennweite FD von ca. 35-40 Millimeter. Wie gezeigt, teilt der Sichtfeldexpander die beiden Felder 910 , 912 in zwei gestapelte Streifen von etwa 600 Pixel Höhe auf dem Imager, die eine ausreichende Auflösung oder angemessenes Decodieren von Barcode-Merkmalen an einer schnelle bewegliche Strecke bieten sollte.
  • Wie in 11 gezeigt, erlaubt der Sichtfeldexpander das entfernbare Befestigen eines Stangen-Illuminator-Zubehörs 750 . Die Positionierung dieses Illuminators 750 (oder mehrerer Illuminatoren) in Bezug auf das Gehäuse des Sichtfeldexpanders ist besonders variabel in weiteren Ausführungsformen. In dieser Ausführungsform ist der Illuminator 750 in Bezug auf die Unterseite des Sichtfeldexpander-Gehäuses 730 auf einer Halterung 1110 befestigt, die sich von der Kupplung 710 nach vorne erstreckt (siehe 7). Die Halterung 1110 und der Stangen-Illuminator können dauerhaft oder entfernbar festgehalten werden - beispielsweise mit Gewinde-Befestigungselementen (nicht abgebildet), die durch einen Oberteil der Halterung 110 und in Gewindebohrungen (nicht abgebildet) auf der Oberseite des Illuminators 750 reichen. Die Halterung kann an Montagelöchern an der L-förmige Halterung 712 befestigt sein. Obwohl ein Stangen-Illuminator dargestellt ist, können eine Vielzahl von alternativen Beleuchtungsarten und Konfigurationen eingesetzt werden. Zu den Illuminatoren können Multi-Wellenlängen-Lichtquellen gehören, die selektiv betrieben werden und/oder Beleuchtungsquellen mit unterschiedlichen Intensitäten, Winkeln oder Ausdehnungen. In alternativen Ausführungsformen können andere Befestigungsmechanismen, wie Klebestreifen, Klettverschlüsse, Schrauben, usw. eingesetzt werden, um eine stabile und abnehmbare mechanische Verbindung zwischen Beleuchtung und Halterungskomponenten zu bieten. Beispielsweise wird das gemeinsam zugewiesene US Patent des Antragstellers Antrags-Serien-Nr. [Aktenzeichen-Nr. C12-022], mit dem Titel COMPONENT ATTACHED DEVICES AND RELATED SYSTEMS AND METHODS FOR MACHINE VISION SYSTEMS, von Saul Sanz Rodriguez und Laurens Nunnink, hiermit am gleichen Datum eingereicht ebenfalls durch Bezugnahme durch weitere Hintergrundinformationen hierin einbezogen. Diese Anmeldung beschreibt Techniken für die Befestigung von Illuminatoren und anderes optisches Zubehör auf einer Sichtfeldexpander-Baugruppe oder einer anderen Bildverarbeitungs-Struktur unter Verwendung magnetische Baugruppen.
  • Zu beachten ist dabei, dass die Verwendung eines Sichtfeldexpanders wie hierin beschrieben eine Option ist für das Erweitern des Sichtfelds ist, um ein breiteres Seitenverhältnis in Bezug auf die Höhe zu bieten. Eine weitere Option, die zusätzlich zu (oder als Ersatz für) einen Sichtfeldexpander eingesetzt werden kann, ist der Einsatz eines Bildsensors, der mit einem Verhältnis Höhe/Breite von (beispielsweise) 1:4 oder 1:5 aufgebaut ist. Solch ein Verhältnis wäre optimal für Anwendungen, in welchen Objekte, die sich entlang einer breiten Strecke bewegen, gescannt werden Daher kann in verschiedenen Ausführungsformen, der in der Kamerabaugruppe hierin verwendete Sensor mit einem breiten Seitenverhältnis gewählt werden in welcher die Pixelbreite ein Vielfaches der Pixelhöhe ist. Die beispielhaften Methoden und Verfahren für den Umgang mit Bilddaten können für das Verarbeiten von Daten auf einem breiten Sensor angepasst werden - beispielsweise das Bearbeiten von verschiedenen Zonen des Sensors in unterschiedlichen Kernen des Prozessors.
  • Es wird nun auf 12 verwiesen, welche eine beispielhafte Flüssigkeitslinsen-Baugruppe 1210 für den Einsatz mit der Kamerabaugruppe 110 und zugehörigen Montagesockel 520 entsprechend einer Ausführungsform darstellt. In dieser Ausführungsform wird die Flüssigkeitslinsen-Einheit-1220 (eine Membran-basierende Einheit, die oben beschrieben wird) in einer Schale 1222 montiert ist, welche die rechteckige Form der Linsen-Einheit 1220 mit einer Halterungsstruktur 1230 beherbergt. Eine Vielzahl von unterstützenden Strukturen kann eingesetzt werden, um die Linse innerhalb der Baugruppe 1210 zu sichern. Die Flüssigkeitslinsen-Einheit umfasst beispielhaft eine äußere Schale 1232 , die eine vorne abgesetzte Linse 1240 unterstützt. Hinter dieser abgesetzten Linse 1240 ist die variable, mit Flüssigkeit gefüllte Membran-Linse 1244 montiert. Diese Linse variiert basierend auf elektromechanischer Betätigung der Betätiger-Baugruppe 1250 . Betätiger-Baugruppe, Temperatursensor und andere Komponenten sind mit den acht-poligen Steckverbindern 616 über ein Flachbandkabel 1256 verbunden, das sich von der Flüssigkeitslinsen-Schale 1232 und über die LinsenBaugruppen-Schale 1222 erstreckt. Die Verlegung der Kabel und/oder die Größen/Formen von Schalen und anderen Komponenten sind besonders variabel. Ein transparentes Deckglas 1258 ist an der Rückseite der Flüssigkeitslinsen-Einheit-1220 zum Abdichten vorgesehen. Empfangenes Licht wird an eine entsprechende hintere Festlinse 1260 unterstützt innerhalb der Schale 1222 übertragen. Die Schale umfasst eine Montage-Baugruppe 270 (welche auch einen Feststellring - nicht gezeigt - enthalten kann) um die Linsenbaugruppe 1210 an der Kamera-Vorderseite 610 an der Fassung 520 mittels Gewindeverbindung zu sichern. Das Fokussieren der Flüssigkeitslinsen-Baugruppe 1210 in einer Auto-Fokus-Anwendung wird weiter unten detailliert beschrieben.
  • Obwohl nicht gezeigt, kann jede hierin beschriebene Linsenbaugruppe verschiedene optische Filter enthalten, um bestimmte Wellenlängen des Lichts zu dämpfen oder um verschiedene Effekte, wie Polarisation bereitzustellen. Desgleichen können Illuminatoren mit verschiedenen Filtern bereitgestellt werden. Hierdurch kann eine selektive Abbildung der Objekte ermöglicht werden, wenn bestimmte Arten der Beleuchtung projiziert werden und durch Filter, die auf solche Arten der Beleuchtung abgestimmt sind, empfangen werden.
  • Es sollte dabei klar sein, dass entsprechend den hierin enthaltenen Ausführungsformen eine Vielzahl von optionalen Schnittstellen und Indikatoren für die Kamerabaugruppe vorgesehen werden kann. Es wird dabei insbesondere auf 3, 4 und 5 Bezug genommen, und nun auch auf 13, in welcher die internen Komponenten der Kamerabaugruppe mit der Vorderseite 334 , Körperschale 332 und Rückseite 336 des Gehäuse entfernt, abgebildet sind. Die Verbindung zwischen dem Körper 332 und der Rückseite 336 umfasst einen Ring aus lichtdurchlässigem Material (z. B. Acryl oder Polykarbonat) 1310 , das als eine Lichtröhre fungiert. Der lichtdurchlässige Ring 1310 kann einen Teil des Umfangs der Verbindung umgeben, oder, wie dargestellt, den gesamten (d. h. ein „360-Grad-Indikator“) Umfangs der Verbindung. Der Ring 1310 kann vollständig lichtdurchlässig oder in Teilen davon lichtdurchlässig sein. Beispielhaft wird der Ring 1310 durch eine einer Vielfalt verschiedenfarbiger Beleuchtungsquellen (z. B. LEDs nicht gezeigt) beleuchtet, die betriebsmäßig mit der Imagerplatine 113 verbunden werden können. Licht von den LEDs wird von Lichtröhren oder andere lichtdurchlässigen Leitungen in den Ring 1310 geleitet. Je nach der Farbe und/oder dem Zeitpunkt der Beleuchtung (d. h. eine oder mehrere Farben, die mit einer bestimmten Rate oder in einem bestimmten Muster aufleuchten), kann der Ring dazu dienen, verschiedene Betriebszustände anzuzeigen. Zum Beispiel kann eine gute ID-Ablesung und/oder Decodierung grünen aufleuchten, während kein (also fehlerhaftes oder falsches) ID-Lesen/Decodieren rot aufleuchte kann. Ein rotes Blinken kann auf einen Systemfehler hinweisen. Andere Farben, wie gelb, können auch für verschiedene Indikationen enthalten sein. Der Ring bietet eine einzigartige und ästhetische sowie deutlich sichtbare Möglichkeit, einen Systemstatus anzuzeigen. Die Anzahl der Lichtquellen, die über den Umfang verwendet werden, um den Ring zu beleuchten ist besonders variabel und kann gemäß gewöhnlichem Fachwissen vorgesehen werden. Obwohl der Ring 1310 zwischen Körper 332 und Vorderseite 334 eingefügt dargestellt ist, ist ausdrücklich beabsichtigt, dass ein ähnlicher Ring zwischen der Rückseite 336 (nicht abgebildet) und dem Körper 332 an der dazugehörigen Verbindung eingefügt ist unter Anwendung der oben generell beschriebenen Prinzipien. Darüber hinaus können in verschiedenen Ausführungsformen Ringe an den vorderen und den hinteren Verbindungen vorgesehen sein.
  • IV. Verarbeiten von Bilddaten im Multicore-Prozessor
  • Der beispielhafte Mehrkernprozessor 114 bietet ein hohes Maß an Verarbeitungsunabhängigkeit in Bezug auf jeden diskreten Kern (C1, C2). In Abwesenheit spezifischer Anleitungen des Benutzers, Daten zur Verfügung zu stellen ist eine minimale Querkommunikation zwischen Prozessen vorgesehen. Im Allgemeinen betreibt jeder Prozessor sein eigenes Betriebssystem und geladene Programme unabhängig voneinander. Speicherplatz ist in der Regel für jeden Prozessor diskret in RAM 244 mit minimal geteilten Speicherbereichen. Ein interner Bus innerhalb des Prozessors ist für den Austausch von Daten zwischen Kernen vorgesehen, je nach Bedarf auf der Grundlage programmierter Anweisungen des Benutzers. Somit bietet der Prozess die Möglichkeit, Bildverarbeitungsaufgaben zur Erhöhung der Verarbeitungseffizienz und Geschwindigkeit zu unterteilen. Es folgt eine Beschreibung der verschiedenen beispielhaften Prozesse, die mit der Dualcore-Funktionalität des Prozessors 114 durchgeführt werden können.
  • Unter Bezugnahme auf 14 wird ein allgemeines Verfahren 1400 gezeigt, der es Prozessoren ermöglicht, dynamisch verschiedene Aufgaben zugeordnet zu werden, die jeder Prozessor ausführt. Eine Aufgabe kann eine Funktion auf einem vom FPGA an den Prozessor übertragenen einzelnen Bildrahmen sein. Die Aufgabe kann eine Bildverarbeitungs-Aufgabe sein, beispielsweise ID-Aufsuchen oder eine ID-Dekodier-Aufgabe. Der Prozess 1400 kann einen optimierten Betrieb der Kerne im Multicore-Prozessor 114 möglich machen, so dass die Kerne effizient genutzt werden. Das heißt, wenn das ID Auffinden weniger prozessorintensiv als das ID-Decodieren ist, kann ein Kern darauf angepasst werden, mehrere IDs zu finden, während ein anderer einen vielversprechende Bilderrahmen mit einer gefundenen ID decodiert. Desgleichen kann bei Rahmen, die zwei Hälften eines Sichtfeldexpander-Bildes darstellen, das Bild zwischen zwei Kerne, usw. aufgeteilt werden. Im Allgemeinen enthalten die Programmdaten eine oder mehrere Zeitplanungsalgorithmen, die darauf angepasst werden können, an einen bestimmten Satz von Bilddaten am effizientesten zu arbeiten. Diese Zeitplanungsalgorithmen können den Prozessor bei der Vorhersage unterstützen, wenn jeder Kern für eine bestimmte Aufgabe verfügbar sein wird. Entsprechende Zeitplanungsalgorithmen werden in Schritt 1410 des Prozesses 1400 bestimmt, und der für einen bestimmten Aufgabensatz am besten geeignete Algorithmus wird in Schritt 1420 in mindestens einen Kern geladen. Dieser Kern wird zum Zeitplaner für die mehreren Kerne und kommuniziert den Zeitplan über den internen Bus. Wenn Bildrahmen aus dem FPGA über den PCIe-Bus an die Kerne des Prozessors übertragen werden, werden die Rahmen überwacht, und Aufgaben, die an den Bilddaten durchgeführt werden sollen, werden durch den Zeitplanungsalgorithmus identifiziert (Schritt 1430). Der Zeitplanungsalgorithmus ordnet die Bilddaten und die Aufgabe dem nächsten verfügbaren Prozessor zu (Schritt 1440). Diese Zuordnung kann auf einer Vorabschätzung darüber beruhen, wann der Prozessor zur Verfügung steht wird. Sobald Aufgaben an bestimmten Bildrahmen abgeschlossen sind, überwacht der Zeitplanungsalgorithmus kontinuierlich neue Aufgaben Daten und ordnet diese den Kernen zu. Der Zeitplanungsalgorithmus kann im Laufe der Zeit dazu angepasst werden, beobachtete Ergebnisse mit unterschiedlichen Arten von Aufgaben zu überwachen und die Priorisierung von Aufgaben in jedem Kern zu optimieren. Ein Kern hat einen Zeitplanungsalgorithmus, der definiert, welcher Kern eine Aufgabe erhält.
  • Es sollte darauf hingewiesen werden, dass die Verwendung von zwei Kernen, C1 und C2, in der beispielhaften Ausführungsform exemplarisch für einen Multicore-Prozessor ist, der drei oder mehr Kerne enthalten kann. Der hier beschriebene Prozesse kann einfach nach Maß auf drei oder mehr Kerne angepasst werden.
  • Es folgt eine Beschreibung weiterer Prozesse mit Hilfe des Multicore-Prozessors laut Ausführungsformen:
  • Mit Bezug auf die schematische Darstellung von 15, wird ein Multicore-Prozess 1500 dargestellt, in dem der Prozessor 114 einen Bildrahmen 1510 in zwei Teilen 1520 , 1522 empfängt. Die Teile können vertikal (z. B. die zwei vom Sichtfeldexpander gelieferten Felder), horizontal oder nach einer anderen Teilung (z. B. abwechselnde Pixel) unterteilt werden. Die zwei (oder mehr) Bildteile 1520 , 1522 werden an jeden der Kerne C1 und C2 übertragen. Die zwei (oder mehr) teilweisen Bilder werden jeweils parallel verarbeitet und decodiert durch deren jeweilige Kerne C1, C2. Decodierte Ergebnisse 1530, 1532 können kombiniert werden und werden nachgeschalteten Prozessen wie der Hinweis auf eine gute oder gar keine ID-Ablesung und Übertragung der decodierten Information an einen Remotecomputer bereitgestellt. Im Allgemeinen kann eine Überschneidung zwischen den zwei teilweisen Bildern vorgesehen werden, so dass IDs, die zwischen Bilder fallen in mindestens einem Kern hinreichend identifiziert werden. Die Überschneidung kann variieren, ist aber in der Regel groß genug, um eine ID einer bestimmten Größe entsprechend in mindestens einem der teilweisen Bilder zu enthalten. Wenn das Bild vom Prozessor selbst geteilt wird, ist die Überschneidung durch das Übertragen überschneidender Bilddaten auf beide Kerne vorgesehen. Im Fall des Sichtfeldexpanders existiert die Überschneidung im erfassten Bild und das Bild jedes einzelnen Sichtfeldes kann an jeden Kern ohne zusätzliche Berücksichtigung einer Überschneidung übertragen werden. Kommunikation zwischen Kernen (Busverbindung 1540) ermöglicht die Kombination von Ergebnissen und andere benötigte Querkern-Kommunikation.
  • In einer weiteren Ausführungsform kann der Prozess 1500 für Fälle, in denen es kaum eine oder keine Überschneidung zwischen Bildern gibt (d. h. eine Vielzahl von Sichtfeldexpander-Bilder, die im Wesentlichen frei von Überschneidungen sind) durch ein Aneinanderreihungsverfahren ersetzt werden. Somit enthält in dieser Ausführungsform jedes der Sichtfeldexpander-Bilder, möglicherweise einen Teil (jedoch nicht alle) eines beispielhaften ID-Merkmalsatzes, und beide Bilder zusammen enthalten den substantiell gesamte ID-Merkmalsatz. Ein oder mehrere der Kerne werden dazu eingesetzt, die Verbindungen zwischen dem ID-Fragment in jedem Bild zu identifizieren und eine komplette ID „zusammenzuheften“. Dies kann während der ID-Auffindphase des Prozesses auftreten (wobei die komplette ID zusammengestellt wird und dann durch einem oder mehrere Kerne decodiert oder während der Decodierprozesses decodiert wird - d. h. der Prozess decodiert einen Teil der gesamten ID in jedem Bild und versucht, die Ergebnisse der einzelnen separaten Decodierung zusammenzuführen.
  • Zu beachten ist dabei, dass obwohl jeder der hierin beschriebenen Multicore-Prozesse mit diskreten Kernen zur Durchführung diskreter Prozesse dargestellt ist, ist ausdrücklich beabsichtigt, dass sich der Begriff „Kern“ („core“) wie hierin verwendet sich im weiteren Sinn auch auf einen Satz von Kernen beziehen kann. Daher kann dort, wo ein Quad-Core-Prozessor angewandt wird, ein Satz von zwei Kernen für eine Prozessaufgabe verantwortlich sein während ein zweiter Satz von zwei Kernen für eine andere Prozessaufgabe verantwortlich sein kann. Alternativ kann ein Satz von drei Kernen für eine Aufgabe (höherer Verarbeitungsaufwand) zuständig sein, während ein einzelner Kern für eine andere Aufgabe (niedrigerer Verarbeitungsaufwand) verantwortlich sein kann. Alternativ können drei gleichzeitige Vorgänge oder vier gleichzeitige Vorgänge durchgeführt werden, indem entsprechende Prozessorkerne und/oder Sätze von Kernen den Aufgaben zugewiesen werden. Der Zeitplanerstellungs-Algorithmus kann auch dahingehend programmiert werden, dynamisch Kerne unterschiedlichen Aufgaben zuzuweisen je nach den aktuellen Verarbeitungsanforderungen einer bestimmten Aufgabe. Das für eine bestimmte Aufgabe benötigte entsprechende Niveau an Verarbeitungsleistung (d. h. Kerne) kann durch Experimentieren ermittelt werden, indem unterschiedliche Aufgaben verarbeitet werden und dabei die Geschwindigkeit in der unterschiedlichen Anzahlen von Prozessoren solche Aufgaben ausführen beobachtet wird Dieser Prozess wird weiter unten beschrieben.
  • Mit Bezug auf die schematische Darstellung von 16 wird ein Multicore-Prozess 1600 dargestellt, in dem der Prozessor 114 einen Bildrahmen 1610 in einem (Satz von) Kern(en) C1 empfängt, der das ID-Decodieren durchführt, um die decodierten Ergebnisses 1620 auszugeben. Der zweite (Satz von) Kern(en) C2, führt hingegen eine oder mehrere (nicht decodierende) systembezogenen Aufgaben 1630 durch, die Bilderfassung und andere Systembetriebe durch Bereitstellen von Ausgabeinformationen 1640 , die in weiteren nachgelagerten Aufgaben verwendet werden, unterstützen. Solche Systemaufgaben 1630 können enthalten (sind jedoch nicht beschränkt auf):
    • • Fokuseinstellungs-Algorithmen (einschließlich Messen der Entfernung/Kalibrieren und Berechnen der Schärfe) und Auto-Helligkeits-Algorithmen (wozu auch Belichtung, Verstärkung und Beleuchtungsintensität gehören können);
    • • JPEG (oder andere) Bild Datenkomprimierung - z. B. auf Bildrahmen, die gespeichert und/oder a einen Remotecomputer übertragen werden, durchgeführt und/oder
    • • Wellenfront-Rekonstruktion - zum Beispiel in einem Bildverarbeitungssystem verwendet, das bekannte Wellenfront-Codiertechniken verwendet, um die Tiefenschärfe zu erhöhen.
  • Wo das System eine oder mehrere Kerne für das Ausführen nicht decodierender Systemaufgaben (d. h. Prozess 1600 in 16) verwendet, kann die Zuordnung bestimmter Kerne zu Systemaufgaben von der aktuellen Triggerfrequenz abhängig sein. Wie in 17 dargestellt bestimmt ein Zeitplanungsprozess 1700 die aktuelle Triggerfrequenz in Schritt 1710 . Wenn die Triggerfrequenz unterhalb einer bestimmten Schwelle liegt, und somit weniger Kernen die Durchführung benötigte Decodieraufgaben erlaubt, weist der Entscheidungsschritt 1720 einen oder mehreren Kernen Nicht-Decodieraufgaben zu (Schritt 1730). Umgekehrt werden bei Triggerfrequenzen oberhalb einer gewissen Schwelle (oder mehrerer Schwellenwerte) ein oder mehrere Kerne (wobei die Anzahl der Kerne von der Frequenz abhängig sein kann) Decodieraufgaben zugewiesen (Schritt 1740). In einer vereinfachten Dualcore-Ausführungsform wird wie gezeigt bei einer niedrigen Trigger-Frequenz ein Kern Decodier- und ein anderer Systemaufgaben zugewiesen. Bei einer höheren Triggerfrequenz wird ein Kern (z. B. C1) Decodieraufgaben zugewiesen, während der/die eine oder mehreren andere(n) Kern(e) (z. B. C2) sowohl Decodier- als auch Systemaufgaben durchführen kann/können. Dies gilt insbesondere für ein Dualcore-System. Wo in einem beispielhaften Multicore-System mehr als zwei Kerne verwendet werden, können ein Kern oder mehrere Kerne Decodieraufgaben zugewiesen werden während der/die andere(n) Kern(e) sowohl Decodier- als auch Systemaufgaben zugewiesen sind.
  • 18 zeigt schematisch einen Prozess 1800 für den Einsatz mehrerer Kerne in Anwesenheit von 1D Codes und 2D-Codes (oder anderer diskreter Arten von Merkmalen, die verschiedene Verarbeitungsleistungen/-zeiten für das Decodieren benötigen). Im Allgemeinen benötigen 2D-Codes mehr Verarbeitungsressourcen/-zeiten für das vollständige Decodieren. Sobald die IDs in einem Bild gefunden werden, wird ein Zeitplan für sie erstellt, so dass die Aufgaben der einzelnen Kerne C1 und C2 einen dynamischen Lastausgleich zur Optimierung des Durchsatzes des Systems erfahren. Beispielsweise erscheinen zwei 1D Codes 1810 und 1820 in zwei entsprechenden Bildern 185 und 1860 . Desgleichen werden zwei 2D-Codes 1830 und 1840 in jedem entsprechenden Bild gezeigt. Die Codes sind so organisiert, dass 2D- und 1D-Decodieraufgaben bei jedem nächsten Bild zwischen den beiden Kernen ausgetauscht werden können (Doppelpfeil 1870). Auf diese Weise erzeugt jeder Kern C1, C2 im Durchschnitt einen ähnlichen Durchsatz an decodierten Ergebnissen 1880, 1890.
  • Ein in 19 gezeigter Multicore-Prozess 1900 weist einen ersten (Satz von) Kern(en) dem Decodieren des Bildes (Schritt 1910) innerhalb einer maximalen Zeit zu, der durch den höchsten Durchsatz durch das System bestimmt wird. Wenn die maximale Zeit ohne vollständiges Decodieren überschritten wird, dann verzweigt sich der Entscheidungsschritt 1920 zu Entscheidungsschritt 1930 , der bestimmt, ob es wahrscheinlich ist, dass das Bild durch Bereitstellen von mehr als der maximalen Verarbeitungszeit decodiert werden kann. Wenn nicht, zeigt das System kein Auslesen an (Schritt 1940 ). Wenn Decodieren wahrscheinlich erscheint, wird in Schritt 1950 ein zweiter (Satz von) Kern(en) weiteren Versuchen zur Decodierung an dem einen oder den mehreren Bilder zugewiesen, die nicht innerhalb dieser maximalen Zeit decodiert werden konnten (jedoch Eigenschaften aufweisen, nach denen es wahrscheinlich ist, dass sie mit mehr Verarbeitungszeit decodiert werden können). In einem Betriebsbeispiel zählen zu den Eigenschaften, die es wahrscheinlich erscheinen lassen, dass ein Bild mit mehr Zeit decodiert werden kann: (a) das Auffinde-Muster des Codes wurde bereits im Bild gefunden; und/oder (b) andere Codes aus einem Satz von Codes, die auf dem Objekt gedruckt worden sind, bereits gefunden wurden (z. B. Maxicode und Barcode gedruckt auf dem gleichen Paket und eine wurde bereits gefunden). Optional kann, wenn es wahrscheinlich oder möglich ist, dass eine ID mit mehr Zeit (oder durch Verwenden eines oder mehrerer unterschiedlicher Algorithmen) als derzeit eingesetzt decodiert werden kann, dann kann der Entscheidungsschritt 1930 (strichliert gezeigt) zum Schritt 1960 verzweigen, in welchem das System entweder den ersten Kerns oder den neu zugewiesene zweiten Kern, anweist, die ID mit einem anderen Decodieralgorithmus weiter zu verarbeiten. Dieser Algorithmus kann standardmäßig oder auf der Grundlage bestimmter Eigenschaften im Bild bzw. ID-Merkmalen (z. B. offensichtlicher Bildkontrast, usw.), die solche Algorithmus zur Bewältigung solcher Eigenschaften besonders geeignet erscheinen lassen, ausgewählt werden.
  • Eine Variation des Prozesses 1900 der 19 ist in 20 dargestellt. In dem dargestellten Prozess 2000 wurde die maximale Decodierzeit bei einem bestimmten Bild (Schritte 2010 und 2020) erreicht. Unter der Annahme, dass Eigenschaften ein wahrscheinliches Decodieren bei längerer Verarbeitungszeit (andererseits kein Auslesen in Schritt 2040 angedeutet wird) andeuten, erlaubt das System dem erste (Satz von) Kern(en) das fortgesetzte Verarbeiten des Bildes, und das Decodieren des nächsten Bildes wird einem anderen (Satz von) Kern(en) zugewiesen, um es dem ersten (Satz von) Kern(en) zu ermöglichen, seine Decodieraufgabe zu beenden (Schritt 2050).
  • Ein Multicore-Prozess 2100 , in 21 gezeigt, wird verwendet, um zu versuchen, eine ID/einen Code 2110 in einem Bild mit mehreren Decodieralgorithmen zu decodieren. Der erste (Satz von) Kern(en) C1 versucht, die ID/den Code 2110 mittels eines ersten Decodieralgorithmus 2120 zu decodieren, und der zweite (Satz von) Kern(en) C2 versucht gleichzeitig (wenn vorhanden) die gleiche ID/den gleichen Code 2110 mittels eines zweiten Decodieralgorithmus 2130 zu decodieren. Zum Beispiel versucht ein Kern C1 das Bild mit einem Algorithmus, der für Datamatrix-Codes mit hohem Kontrast optimiert wurde zu decodieren, und der andere Kern C2 wendet einen für niedrige Kontrastcodes (DPM) optimierten Algorithmus an. Die Ergebnisse oder Versagen beim Decodieren von 2140 , 2150 werden von jedem Kern (oder Satz von Kernen), C1, C2 ausgegeben. Zu beachten ist dabei, dass in bestimmten Fällen die zwei Ergebnissätze von verschiedenen Algorithmen zusammengefügt werden können, um einen kompletten Code „zusammenzuheften“ oder sonstwie die Decodieraufgabe zu bestätigen. Dies kann dort auftreten, wo keines der Ergebnisse ein vollständiges (oder zuverlässiges) Auslesen der ID/des Codes ergibt.
  • Ein anderer Multicore-Prozess 2200 , der Kern 1 (C1) bis Kern N (CN) verwendet, wird in 22 dargestellt. In diesem Prozess werden sequenzielle Bilder 1-N (2210 , 2212 , 2214) mit einem (Satz von) Kern(en) für jedes Bild decodiert. Jeder Kern C1-CN produziert jeweils decodierte Ergebnisse 1-N (2220 2222 , 2224). Wie oben Beschriebenen können Kerne Bildern in einer auf einer vorgegebenen Sequenz basierenden Sequenz oder basierend auf einer dynamischen Bestimmung zugewiesen werden. Wo eine dynamische Zuweisung angewandt wird (wie oben beschrieben), können verschiedene Faktoren, beispielsweise die Art des Codes und die Geschwindigkeit des Decodierens eines bestimmten Bildes berücksichtigt werden (d. h. überschreitet die Decodierzeit einen maximalen Schwellwert).
  • 23 stellt einen Multicore-Prozess 2300 dar in dem ID-haltige Zonen durch einen (Satz von) Kern(en) aufgefunden werden, und die IDs in einem anderen (Satz von) Kern(en) decodiert werden. Die Bildrahmendaten 2310 werden an beide Kerne C1 und C2 übertragen. Ein Kern C1 betreibt einen Prozess 2320 für das Aufsuchen von Zonen, die Symbol-(ID)-artige Informationen enthalten, während der andere Kern C2 einen ID-Decodierprozess betreibt, der Zoneninformationen 2340 (in der Regel über den internen Bus zwischen Kernen weitergeleitet) verwendet und sich dabei auf ID-artige Informationen konzentriert, und übertragene ID-Eigenschaften (z. B. Barcode-Orientierung, Grenzen, usw.) in diesen Regionen dazu verwendet, um den Decodierung-Prozess zu beschleunigen und effizient Decodier-Ergebnisse 2350 zu generieren. Wo mehr als zwei Kerne eingesetzt werden, kann eine kleinere Anzahl von Kernen zum Auffinden und eine größere Anzahl zum Decodieren (oder umgekehrt) angewandt werden.
  • Der in 24 dargestellte Multicore-Prozess 2400. In dieser Ausführungsform verarbeitet ein erster (Satz von) Kern(en) C1 die Bildrahmendaten 2410 mit verschiedenen konventionellen und/oder speziell entwickelten Bildverarbeitungs-Tools 2420, um relevante Bildinformationen (z. B. Kanten, unterabgetastete Pixel, Blobs, usw.) zu extrahieren. Die extrahierten Bildinformationen 2440 werden über den Bus an den zweiten (Satz von) Kern(en) C2 für das Decodieren im Decodierprozess 2430 weitergeleitet, der Prozesse für das Interpretieren der extrahierten Informationen umfasst, die sich auf ID-artige Merkmale konzentrieren. Dies ergibt decodierte Ergebnisse 2450 (falls vorhanden).
  • Ein den Prozessen 2300 und 2400 ähnlicher Multicore-Prozess 2500 ist in 25 dargestellt. Ein erster (Satz von) Kern(en) C1 verwendet einen ID Anwesenheit/Abwesenheits-Prozess 2520 (z. B. angepasst, um nach ID-artigen Merkmalen, wie eng aneinander angeordneten parallelen Linien und/oder Datamatrix-Geometrien in den Bilddaten zu suchen) in den übertragenen Bildrahmendaten 2510 für die Bestimmung der Anwesenheit/Abwesenheit eines ID-Codes. Dies unterscheidet sich bei Informationen zu Position, Lage oder Bildmerkmalen dadurch dass die tatsächliche Anwesenheit oder Abwesenheit exklusive bestimmt wird. Dies bestimmt, ob das Bild wahrscheinlich eine ID/einen Code enthält oder verworfen werden sollte ohne (frei von) weiterer Verarbeitung. Die Anwesenheit/Abwesenheit-Information 2540 wird an den zweiten (Satz von) Kern(en) C2 übertragen. Dies wird im zweiten Kern dazu verwendet, entweder den Prozess 2530 durchzuführen oder die Bilddaten zu verwerfen. Wenn ein Code/eine ID als vorhanden angegeben ist, verwendet der zweite (Satz von) Kern(en) C2 ID-Auffindungs- und Decodier-Prozesse 2530 um Bilder mit hinreichender Wahrscheinlichkeit eines anwesenden Symbols zu finden und zu decodieren. Alle decodierte Ergebnisse 2550 werden nach Abschluss des Prozesses ausgegeben. Zusätzlich zu (oder anstatt) ID-Standortdaten können diese und andere hierin beschriebenen Prozesse anderen Daten in Bezug auf die ID zwischen Kernen übertragen. Zu den anderen Daten zählen, ohne darauf beschränkt zu sein, Bildauflösung, ID-Typ, usw.
  • Eine weitere Variante der Multicore-Prozesse, 2300 , 2400 und 2500 ist im Prozess 2600 der 26 dargestellt. In dieser Ausführungsform analysiert der erste (Satz von) Kern(en) C2 die Daten eines jeden Bildrahmens 2610 , um zu bestimmen, ob das Bild in Qualität und/oder Inhalt dazu ausreicht, vom zweiten (Satz von) Kern(en) C2 verarbeitet zu werden. Ein Bildanalyseprozess 2620 bestimmt Bildeigenschaften und entscheidet, ob sich die Durchführung eines ID-Auffind- und Decodierprozesses lohnt. Wenn ja, weist der erste (Satz von) Kern(en) C1 (durch Übertragen der Anleitung 2640 ) den zweiten (Satz von) Kern(en) an, den ID-Auffindungs-/Standort- und Decodierprozess 2630 zu unternehmen, aus dem decodierte Ergebnisse 2650 ausgegeben werden. Mögliche Eigenschaften, die verwendet werden, um die Hinlänglichkeit der Bilddaten zu bestimmen, enthalten, sind jedoch nicht beschränkt auf, Bildkontrast, Schärfe/Fokalqualität usw. Wie gezeigt ist auch ausdrücklich beabsichtigt, dass der Bildanalyseprozess 2620 zumindest teilweise innerhalb dem FPGA mit vordefinierten und für den Betrieb im FPGA angepassten Algorithmen betrieben werden kann. Informationen aus dem Algorithmus werden dann zu einem oder mehreren Kernen (z. B. C1, C2, usw.) übertragen, und die Informationen werden in der ID-Auffindung und Decodierung nach dem Verfahren 2630 verwendet.
  • Es sollte dabei klar sein, dass die oben beschriebenen Multicore-Prozesse mit anderen Multicore-Prozessen durch den Zeitplan-Algorithmus in einem einzigen Laufzeit-Betrieb kombiniert werden können. Beispielsweise kann Autofokus als ein Systemaufgabe in einem Kern (Prozess 1600 in 16) für einen Teil der Bilderfassung eines Objekts durchgeführt werden, während die Verarbeitung von Teilbildern (z. B. zwei Teile des Sichtfeldexpander-Bildes) während eines nachfolgenden Teils dieses Bilderfassungs-Events durchgeführt werden kann. Andere oben beschriebene Prozesse können soweit erforderlich auch während anderer Teile des Erfassungs-Events durchgeführt werden.
  • Zusätzliche Systemmerkmale und Funktionen
  • Nach der Beschreibung verschiedener beispielhafter Ausführungsformen der Elektronik, des physikalischen Paket und des Multicore-Prozesses des hierin angeführten Bildverarbeitungssystems, folgt nun eine Beschreibung weiterer beispielhafter Merkmale und Funktionen, die wünschenswert und vorteilhaft eingesetzt werden können, um den Gesamtbetrieb und die Vielseitigkeit zu erhöhen.
  • Bestimmung der Brennweite und schnelle Anpassung der Linsenbaugruppe empfiehlt sich in der Regel je nach Objekt besonders dort, wo Höhe bzw. Ausrichtung der Objekte variiert (wie im Beispiel von 1 gezeigt). Im Allgemeinen werden die Förderanlagen und anderen beweglichen Bänder angepasst, um ein Encodersignal in Form eines Impulses basierend auf Bewegung-Distanz zu enthalten, dessen Zeitspanne mit der Bandgeschwindigkeit variiert. Wenn das Bewegungs-Entfernungs-Inkrement zwischen Pulsen bekannt ist, kann die Geschwindigkeit des Bandes (und der darauf befindlichen Objekte) leicht zu jedem beliebigen Zeitpunkt ermittelt werden. So wird ein Encodersignal mit Bezug auf den Prozess 2700 der 27, in die Schnittstelle der Kamerabaugruppe (Schritt 2710) eingegeben und verarbeitet, um die eigentliche Objektgeschwindigkeit (Schritt 2720) zu bestimmen. Wenn Merkmale (z. B. IDs oder andere erkennbare Formen) auf dem Objekt identifiziert werden, kann deren Pixel-Shift zwischen Bildrahmen (Schritt 2730) verfolgt werden. Die Zeitspanne zwischen Bildrahmen ist bekannt, und somit erlaubt die Bewegung von Pixeln in Merkmalen zwischen Bildrahmen dem System die relative Brennweite zum Objekt (Merkmal) zu berechnen. Mit der dargestellten Zerstreuungs-Kameralinse, erhöht sich der Pixel-Shift bei kürzeren Abständen und verringert sich bei längeren Strecken. Der gemessene Pixel-Shift ermöglicht so die Berechnung der Brennweite mittels allgemeiner Gleichungen (Schritt 2740). Wenn die Brennweite berechnet ist, kann das System das FPGA anweisen, die Flüssigkeitslinsen-Baugruppe (oder eine andere Autofokuslinse) entsprechend zu justieren (Schritt 2750). Im Allgemeinen entspricht eine gespeicherte Tabelle aktueller Werte den vorgegebenen Brennweiten. Auf der Kenntnis des Abstands, setzt das System den aktuellen auf diesen Wert. Kalibrieren der Linsenbaugruppe, um sicherzustellen, dass die Einstellungen der aktuellen Brennweite mit der bestimmten übereinstimmt kann in regelmäßigen Abständen mit konventionellen oder kundenspezifischen Techniken durchgeführt werden. In einer beispielhaften Ausführungsform kann der bekannte Abstand zu einem Förderband verwendet werden, um die Brennweite der Flüssigkeitslinse zu kalibrieren. Ein Merkmal auf dem Förderband (oder ein aufgebrachter Bezugspunkt wird durch die Linse in scharfen Fokus gebracht und dies wird auf die bekannten Brennweite eingestellt. Dieses Merkmal kann fest (z. B. entlang der Seite des Förderbandes), innerhalb des Sichtfeldes, oder kann sich auf dem beweglichen Band befinden. Wenn es sich auf dem beweglichen Band befindet, kann es optional auf eine Encoder-Position bezogen werden, damit die relativ genaue Position des (nachfolgenden) Kalibrier-Merkmals innerhalb des Sichtfeldes bekannt ist.
  • Mit Bezug auf den Prozess 2800 in 28 kann das FPGA (oder ein anderer mit dem Bild verbundener Pre-Prozessor) ein Programm oder einen Prozess enthalten, der eine schnelle Suche nach ID/Codeartigen Merkmalen durchführt (Schritt 2810). Dabei können die standardmäßigen D-Auffind-Verfahren, wie eine Suche nach mehreren benachbarten parallelen Linien oder einem Datamatrix-ähnlichen Muster von Kanten verwenden. Das FPGA überträgt nur Bildrahmen aus dem Puffer (Speicher 228), die solche Merkmale enthalten, über den PCIe-Bus zum Prozessor 114 (Schritt 2820), im Wesentlichen durch Aussondern von Bildrahmen die keinen Code enthalten. Der Prozessor führt dann weitere Decodier-Prozesse auf den empfangenen Bildrahmen mit zugewiesenem/n Kern(en) durch (Schritt 2830). Das FPGA kann, wenn vorhanden, auch relevante ID-Standortdaten übersenden, um die Decodierzeit innerhalb des Prozessors 114 zu verkürzen.
  • Mit Bezug auf 29 wird das Bildverarbeitungssystem 100 mit Kamerabaugruppe 110 , Linsenbaugruppe/Verkleidung 116 und montiertem Sichtfeldexpander 118 gezeigt. Der Sichtfeldexpander wurde mit einem oder mehreren aufgebrachten Bezugspunkten 2910 ausgestattet, die schachbrettartig helle und dunkle Elemente oder ein anderes deutlich erkennbares Muster enthalten können. In dieser Ausführungsform wird der Bezugspunkt 2910 in einer Ecke des Sichtfeldexpander-Fensters 740 an einem Ort angebracht, der in Bezug auf das gesamte Sichtfeld relativ klein und entfernt ist (z. B. an einer Ecke). Alternativ (oder zusätzlich) kann der Bezugspunkt 2912 (gestrichelte dargestellt) auf einem Spiegel (z. B. großer Spiegel 812 - gestrichelt dargestellt) an einer passenden Stelle angebracht werden. Im Allgemeinen wird der Bezugspunkt auf optischen Komponenten entlang des optischen Pfades des Sichtfeldexpanders gelegt. Der Abstand zwischen Bezugspunkt und Bildebene (Sensor 112 - gestrichelt dargestellt) kann genau bestimmt werden, und durch Fokus auf den Bezugspunkt kann die Brennweite der Flüssigkeitslinse (oder einer anderen Linsenbaugruppe) genau kalibriert werden. Zusätzliche Techniken zur Bereitstellung von „geschlossen Schleife“ Auto-Kalibrierung für eine Flüssigkeitslinse (oder einer anderen variablen Linsenbaugruppe) werden im gemeinsam zugewiesene US Patent, Antrags-Serien-Nr. 13/563.499, mit Titel SYSTEM AND METHOD FOR DETERMINING AND CONTROLLING FOCAL DISTANCE IN A VISION SYSTEM CAMERA, von Laurens Nunnink, et al. dargestellt und beschrieben, dessen Lehren hier durch Bezugnahme als nützliche Hintergrundinformation integriert sind. In der Regel beinhalten die in diesem integrierten Antrag beschriebenen Strukturen und Techniken das Vorsehen einer Struktur für die Linsenbaugruppe, die während des Kalibrierens selektiv ein Bezugspunkt-Muster in zumindest einen Teil des Strahlengangs projiziert (was während des Laufzeit-Betriebs auftreten kann), jedoch einem Teil oder dem ganzen Sichtfeld erlaubt bei der Erfassung von Objektbildern im normalen Laufzeit-Betrieb frei von Störungen zu bleiben. In der Regel entfallen bei dieser Lösung Ungenauigkeiten aufgrund von Fertigungstoleranzen und Kalibrierungsdrift über Alter und Temperatur des Systems und/oder der Linsenbaugruppe.
  • Für Zwecke der weiteren Darstellung in 29 wird die oben beschriebene optionalen Lüfter-Baugruppe 2920 durch Schrauben oder andere Befestigungsmittel 2921 an der Unterseite der Kamerabaugruppe 110 befestigt dargestellt. Ein Verbindungskabel 2922 ist mit einem entsprechenden Anschluss auf der Rückseite der Kamerabaugruppe verbunden. Alternativ kann das Kabel 2922 an eine externe Stromquelle angeschlossen werden.
  • Mit weiterem in Bezug auf die ausführlicheren perspektivischen Ansichten von 29A und 29B, kann die beispielhafte Kamerabaugruppe 110 (mit beispielhafter Linse 2928) auch eine optionale Halterung 2930 enthalten, was in Bezug auf den Lüfter 2920 eine Zwischen-Baugruppe bereitstellt. Die Halterung 2930 umfasst einen kreisförmigen Anschluss 2031 , der in Größe dem Durchmesser der Lüfterflügel für das Durchströmen mit Luft angepasst ist. Die Halterung 2930 enthält auch Befestigungselemente 2932 , welche die Halterung an den oben beschriebenen Gewindebohrungen (588 in 5A) im unteren Teil der Kamera sichern. Der Lüfter 2920 ist an der äußeren Stirnseite der Halterung 2930 mittels Befestigungselementen 2936 befestigt, die von den Befestigungselementen der Halterung 2932 abgesetzt sind. Diese Befestigungselemente 2938 passen in die Gewindebohrungen 2937 in der Halterung 2930 . Die Befestigungselemente 2936 laufen durch Abstandshalter 2938 , welche die Steifigkeit der Befestigungsflansche des Lüfters erhalten. Die Befestigungselemente 2936 laufen ebenfalls durch Abstandshalter 2940 und beabstanden den Lüfter 2920 von der äußeren Stirnfläche der Platte, wodurch die Abluft von der unteren Oberfläche fließen kann. Der Abstand kann in einer Ausführungsform zwischen etwa 0,5 und 2 Zentimeter liegen, jedoch ist eine Vielzahl von möglichen Abstands-Entfernungen ausdrücklich beabsichtigt. Zu beachten ist dabei, dass außerdem ausdrücklich beabsichtigt ist, dass in alternativen Ausführungsformen die Halterung und/oder der Lüfter auf einer oder mehreren Seiten (d. h. links oder rechts) und/oder auf der Oberseite des Kamerakörpers montiert werden kann. Dies kann teilweise von der Anordnung der Befestigung der Kamera abhängig sein. Der Lüfter kann als Teil der Befestigungsanordnung durch konventionelle Sicherheitsgitter abgedeckt werden. Die Halterung 2930 enthält auch ein Paar beispielhafter Tabs 2934 mit Befestigungslöchern 2944 , die als Teil der Befestigungsanordnung zum Aufhängen der Kamerabaugruppe (und aller zugehörigen Zubehörteile wie Sichtfeldexpander) über einer abzubildenden Szene verwendet werden können.
  • Mit Bezug auf 30, kann ein präziser Betrieb der Flüssigkeitslinsen-Baugruppe (bzw. einer anderen variablen Linse) durch Vorsehen einer Kurve des Antriebsstroms über der Brennweite (oder optischen Leistung der Linse) verbessert werden. Das heißt, die operative Kurve für den Antriebsstrom für eine Linsenbaugruppe ist oft nicht linear über ihren Bereich an Brennweiten. Der dargestellte Prozess 3000 bedingt die Nicht-Linearität. Während der Fertigung oder bei der Kalibrierung ist die Linse zum Fokussieren auf Objekte/Bezugspunkte bei unterschiedlichen Brennweiten angetrieben (Schritt 3010). Die Linse ist zum Fokussieren auf die bekannte Brennweite Objekt/Bezugspunkt angetrieben. Bei diesem Fokus wird der tatsächliche Antriebsstrom gemessen (Schritt 3020). Der Prozess läuft schrittweise weiter durch eine Vielzahl von Brennweiten (Entscheidungsschritt 3030 und Schritt 3040) bis alle Brennweiten den Prozess durchlaufen haben. Der Entscheidungsschritt 3030 verzweigt dann zu Schritt 3050 , in dem die Datenpunkte für den Antriebsstrom dazu verwendet werden, eine Kurve des Antriebsstroms gegenüber der Brennweite (oder optischen Leistung) zu generieren. Die Kurve zeigt alle Nicht-Linearitäten an, und dies kann gespeichert werden (z. B. als Nachschlagtabelle oder modellierte Gleichung), so dass die Linse anschließend während der Laufzeit mit von der Kurve bereitgestellten Korrekturen angetrieben werden kann. Es sollte dabei klar sein, dass die Analyse der und Korrektur für die Nicht-Linearität im Linsen-Antriebsstrom mithilfe eines breiten Spektrums an Techniken durchgeführt werden kann, die Fachleuten auf dem Gebiet bekannt sind.
  • Mit Bezug auf 31 ist ein Prozess 3100 zur Bestimmung der Brennweite dargestellt, der auf der Überschneidungszone in einem Sichtfeldexpander-Bild beruht. Der Bildrahmen 3110 gliedert sich in zwei Teile 3120 und 3122 die den jeweiligen Seiten in der erweiterten Gesamtbreite des Sichtfeldexpanders entsprechen. Jeder Bildteil 3120 und 3122 enthält eine zugeordnete Überschneidungszone 3130 und 3132 wie oben beschrieben. Innerhalb jeder Überschneidungszone 3130 , 3132 befinden sich ein oder mehrere erkennbare Merkmale (z. B. X 3140 und Barcode 3142). Diese Merkmale können kontrastierende Elemente sein, die in beiden Überschneidungszonen sichtbar sind. Das System identifiziert die Merkmale in den einzelnen Überschneidungszonen und bestimmt deren relative Position und Größe (Schritt 3150). Bei verschiedenen Brennweiten variieren beide Parameter um eine bekannte Metrik. Der Prozess 3100 vergleicht die Positionsveränderung (und Größenunterschiede, falls vorhanden) auf einen bekannten entsprechenden Wert für die Brennweite in Schritt 3160 . Ganz allgemeinen arbeitet dieser Prozess wie ein Koinzidenz-Entfernungsmesser. Dieser Wert für die Brennweite wird dann dazu verwendet, die Brennweite in der Linsenbaugruppe im Schritt 3170 einzustellen. Dieser Prozess und andere hierin beschriebene Auto-Regulier-Prozessordnung können durch Programmieren am FPGA oder mittels Systemaufgaben-Funktionalität in einem oder mehreren Kernen des Prozessors 114 ausgeführt werden, die Informationen zurück an das FPGA bereitstellen, damit die fokale Anpassung vom FPGA durchgeführt werden kann.
  • Ein anderer Prozess 3200 für eine ganz allgemeine Bestimmung von Geschwindigkeit und Entfernung von Objekten, die sich durch das Sichtfeld bewegen, der bei automatischer Scharfeinstellung und anderen Autoregulier-Prozessen nützlich sein kann, ist in 32 dargestellt. In dieser Ausführungsform identifiziert das System eine oder mehrere Merkmale im Objekt - in der Regel einige der oder alle Kanten des Objekts selbst oder eines anderen geschlossenen oder halb geschlossenen Elements. Im Schritt 3220 stellt der Prozess die Größe des/der Merkmals/Merkmale fest und speichert sie. Der Prozess sucht dann einen nächsten Bildrahmen mit einem Merkmal oder Merkmalen (Entscheidungsschritt 3230) bzw. hat bereits genügend Rahmen erhalten, um eine Bestimmung durchzuführen. Wenn ein nächster Rahmen verarbeitet werden soll, schleift der Prozess zurück zu Schritt 3220 und notiert/speichert die Größe des Merkmals/der Merkmale in diesem nächsten Rahmen. Dies wird fortgesetzt, bis keine weiteren Rahmen verfügbar sind oder genügend Rahmen verarbeitet worden sind. Der Entscheidungsschritt 3230 verzweigt dann zu Schritt 3240, wo die Variation in der Größe zwischen Bildrahmen berechnet wird. Im Schritt 3250, mit der Kenntnisse der Zeitbasis zwischen Bildrahmen und mit Informationen über den relativen Abstand in Geschwindigkeit für eine gegebene Variation in der Größe über die Zeit (z. B. eine Kurve oder eine Nachschlagtabelle) berechnet der Prozess dann die relative Entfernung und Geschwindigkeit für das Objekt. Dies kann zum Regeln des Fokus der Linsenbaugruppe verwendet werden.
  • Mit Bezug auf 33, befindet sich eine beispielhafte Anordnung von zwei Kamera-Baugruppen (mit Sichtfeldexpander weggelassen) M und S auf jeder der gegenüberliegenden Seiten einer Szene, um die Vorder- und Rückseiten eines Objektes 3310 mit mehreren IDs 3312 auf unterschiedlichen Oberflächen abzubilden, von denen sich nur einige im Blickfeld der jeweiligen Kameras befinden, die aber alle (d. h. vorne 3320 , oben 3322 und hinten 3324) vollständig von beiden Kamera-Baugruppen M und S abgebildet sind. Jede Kamerabaugruppe, M und S enthält einen entsprechenden Illuminator MI und SI. Insbesondere die Kameras M und S sind entsprechend in einer Master-Slave-Anordnung angeordnet, in welcher eine hinten angebrachte RS-485 Steckverbindung (Teil der für die Kamerabaugruppe vorgesehenen Kommunikations-Schnittstelle und in Kommunikation mit dem Prozessor 114) 3330 auf der Baugruppe M mit einem Y-Kabel 3332 verbunden ist. Das Y-Kabel enthält gegenüberliegende Stecker und Steckerbuchsen 3334 . Eine der Steckverbindungen (3336) verbindet eine gegenüberliegende Steckverbindung 3338 welche über ein zweites Y-Kabel 3340 mit einer weiteren Steckverbindung 3342 eine Verbindung mit der Baugruppe S herstellt, um auf diese Weise zusätzliche Slave-Einheiten zu verbinden. Zur Vermeidung von Nebensprechen zwischen Illuminatoren führt der Prozessor der Baugruppe M Bilderfassung und den eigenen Beleuchtungstrigger zum Zeitpunkt TM aus und Bilderfassung/Beleuchtung durch Baugruppe S zu einer diskreten Zeit TS aus. Erfassungszeiten TM und TS werden durch eine vorgegebene Zeitbasis versetzt, die gewährleistet, dass die Erfassung von Bildern durch jede Kamerabaugruppe frei von Störungen durch die andere ist. Bilder können durch jeden der Kerne in jeder Kamerabaugruppe oder in beiden Kamerabaugruppen verarbeitet werden, wobei die Bilddaten potenziell zwischen den Kameras mit entsprechenden Verbindungen (z. B. die Netzwerkverbindung (270 in 2) geteilt werden können. Beispielsweise kann ein Satz von Kernen für das Auffinden von IDs in allen Bildern angepasst werden, während die andere auf das Decodieren aller Bilder angepasst werden kann. Zusätzliche Kamera-Baugruppen können durch geeignete Kabel angeschlossen werden und eine erweiterte Master-Slave-Einheit (oder eine andere Steuerelement-Anordnung) kann realisiert werden.
  • Es sollte hierbei klar sein, dass die oben beschriebenen Ausführungsformen für ein Bildverarbeitungssystem mit einer Bildverarbeitungskamera mit Multicore-Prozessor, hochauflösendem Hochgeschwindigkeits-Imager, Sichtfeldexpander, Autofokuslinse und mit dem Imager verbundenen Pre-Prozessor zur Vorverarbeitung der Bilddaten die Erfassung und Verarbeitungsgeschwindigkeit sowie die Bildauflösung vorsieht, die in einer Vielzahl von Anwendungen sehr wünschenswert sind. Ganz besonders ist diese Anordnung sehr effektiv beim Abtasten von Objekten, die ein breites Sichtfeld erfordern, in Größe und Positionierung der interessierenden Merkmale variieren und sich relativ schnell in Bezug auf das Sichtfeld des Systems bewegen. Dieses Bildverarbeitungssystem sieht ein physikalisches Paket mit einer Vielzahl von physikalischen Zusammenhängen vor, um verschiedene Optionen und Kontrollfunktionen zu unterstützen. Das Paket leitet effektiv intern erzeugte Wärme ab, indem es Komponenten so anordnet, dass eine Wärmeübertragung auf die Umgebung optimierte wird und enthält ableitende Strukturen (z. B. Rippen) um eine solche Übertragung zu erleichtern. Das System ermöglicht auch eine Vielzahl an Multicore-Prozessen, um sowohl die Bildverarbeitung als auch den Systembetrieb zu optimieren und die Belastung auszugleichen (d. h. Autoregelungsaufgaben). Außerdem ist ausdrücklich beabsichtigt, dass die oben beschriebenen Methoden und Verfahren für den Betrieb der Kamerabaugruppe und Durchführen der Bildverarbeitungs-/Decodieraufgaben auf verschiedene Weise kombiniert werden können, um ein gewünschtes Verarbeitung-Ergebnis zu erzielen. Desgleichen können Verfahren je nach den Prozessbedingungen umgeschaltet werden (z. B. kann Verfahren 2100 verwendet werden und dann unter anderen Bedingungen zum Verfahren 2300 umgeschaltet werden, usw.). Ebenso können mit einer gegebenen Vielzahl an Kernen (mehr als zwei) mehrere Verfahren gleichzeitig ausgeführt werden (z. B. wird Verfahren 2500 in zwei der vier Kerne ausgeführt und Verfahren 2600 erfolgt gleichzeitig in den beiden anderen der vier Kerne).
  • Merkmale einer jeden der oben beschriebenen Ausführungsform können in geeigneter Weise auch mit Merkmalen anderer beschriebener Ausführungsformen kombiniert werden, um eine Vielzahl von Merkmalskombinationen in zugehörigen neuen Ausführungsformen zu bieten. Darüber hinaus, obwohl das Vorhergehende eine Anzahl getrennter Ausführungsformen des Apparates und Verfahrens der vorliegenden Erfindung beschreibt, ist das hierin Beschriebene lediglich beispielhaft für die Anwendung der Grundsätze der vorliegenden Erfindung. Zum Beispiel werden wie hierin verwendet verschiedene Begriffe für Richtungen und Orientierungen wie „vertikal“, „horizontal“, „hinauf“, „hinunter“, „unten“, „oben“, „seitlich“, „vorne“, „hinten“, „links“, „rechts“ und dergleichen nur als relative Konventionen verwendet und nicht als absolute Orientierungen in Bezug auf ein festes Koordinatensystem wie beispielsweise Schwerkraft. Außerdem, obwohl nicht dargestellt, ist ausdrücklich beabsichtigt, dass eine Vielzahl von Montage-Anordnungen, unterstützt von einer Vielzahl von Strukturen (z. B. ein Überkopf-Arm, ein Deckenpfosten, ein Balken usw.), verwendet werden kann, um die Kamerabaugruppe und andere Bildverarbeitung-Komponenten je nach Bedarf in Bezug auf die abgebildete Szene zu sichern. Desgleichen, obwohl der Sichtfeldexpander als ein Dual-Feld-Expander dargestellt ist, ist ausdrücklich beabsichtigt, dass der Sichtfeldexpander das Feld auf drei oder mehr Felder erweitern kann, jeweils entsprechend als ein Teilbild auf den Imager projiziert. Außerdem, obwohl die Erweiterung durch den Sichtfeldexpander wie beschrieben entlang einer Dimension „Breite“ durchgeführt wird, ist ausdrücklich beabsichtigt, dass der Begriff „Breite“ dort wo eine solche Anwendung wünschenswert ist, durch „Höhe“ ersetzt werden kann. Die Erweiterung kann somit entweder entlang der Breite oder der Höhe erfolgen. Ebenso ist ausdrücklich beabsichtigt, dass interne oder externe Beleuchtung projizierte sichtbare oder unsichtbare (z. B. in der Nähe von IR) Wellenlängen angepasst für bestimmte Funktionen wie z. B. Kalibrierung enthalten kann, und der Imager dahingehend angepasst werden kann, solche Wellenlängen ausschließlich während bestimmter Aufgaben, wie Kalibrierung zu lesen. Zusätzlich, obwohl FPGA und Prozessor hierin jeweils dargestellt werden, bestimmte Funktionen ausführen, ist ausdrücklich beabsichtigt, dass einige Funktionen an jeder dieser Strukturen umgeschaltet werden können. In alternative Ausführungsformen kann ein Großteil der Aufgaben und Funktionen mit dem Multicore-Prozessor ausgeführt werden und durch den dargestellten FPGA ausgeführte Hardware/Firmwarebasierte Funktionen können minimal sein oder das FPGA kann zugunsten eines anderen Stromkreises, der für die Übertragung von Bilddaten des Bildsensors an den Prozessor in einem geeigneten Format zu einem geeigneten Zeitpunkt angepasst ist, vollständig weggelassen werden.
  • Bezugszeichenliste
  • 100
    Bildverarbeitungssystem
    110
    Bildverarbeitungskamera
    112
    Imager
    113
    Imagerplatine
    114
    Prozessoranordnung
    114
    Multicore-Prozessor
    115
    Prozessorplatine oder „Hauptplatine“
    116
    Linsenbaugruppe
    117
    Ein-/Ausgabeplatine (E/A-Platine)
    118
    Sichtfeldexpander (FOVE)
    119
    Bildverarbeitungsprozess
    120
    Sichtfeld
    121
    ID-Auffind- und Decodierprozess
    122
    Objekt
    123
    Benutzeroberflächenplatine (UI)
    124
    Objekt
    126
    Strecke
    130
    Barcode
    132
    Barcode
    134
    Barcode
    180
    zweites Bildverarbeitungssystem
    182
    Verbindung
    HO1
    Höhe
    HO2
    Höhe
    LF
    Länge
    WF
    Breite
    OA
    optische Achse
    C1
    Kern
    C2
    Kern
    210
    FPGA
    212
    Speicher
    214
    Beleuchtung
    216
    optionale variable Linsenbaugruppe
    218
    Temperatursensor
    220
    Bus
    224
    Serial Peripheral Interface (SPI) Bus
    226
    PCIe-Bus
    228
    Datenspeicher
    232
    Link
    234
    Beleuchtungsregelungs-Steckverbindung
    236
    Sync-Trigger-Anschluss
    240
    Speicher
    242
    Programmspeicher
    244
    Datenspeicher
    244
    RAM
    245
    FPGA-Prozess
    248
    LVDS-Taktgenerator
    250
    Sequenzierungs-Mikrocontroller
    252
    JTAG-Schnittstelle
    254
    Spannungsversorgung
    260
    Regulator
    262
    Kabel
    266
    serieller Anschluss
    268
    Physical Layer Chip
    270
    Gigabit-Ethernet-Übertrager
    272
    Microcontroller
    274
    optischer Eingang
    276
    optischen Ausgang
    280
    Microcontroller
    282
    Signal-Generator
    284
    Schaltfläche
    286
    Statusanzeige
    288
    Sensor
    310
    konventionelle Linse
    310
    Festlinsen-Baugruppe
    320
    Beleuchtungsbaugruppe
    330
    Gehäuse
    332
    Körper
    334
    Vorderseite
    336
    Rückseite
    338
    Löcher
    339
    Rippe
    410
    Löcher
    420
    Anschlüsse
    422
    Anschlüsse
    424
    Anschlüsse
    426
    Anschlüsse
    428
    Anschlüsse
    440
    Oberseite
    512
    Linse
    514
    Linse
    520
    Linsenbasis
    524
    äußere Verkleidung
    526
    Beleuchtungs-Platine
    528
    Abstandshalter
    530
    High-Output LED
    532
    Linse
    550
    Flachbandkabel
    552
    Halterungselement
    553
    Erweiterung
    554
    Sockel
    555
    Stab
    556
    Druckfeder
    570
    Flachbandkabel
    580
    Innenfläche
    582
    Ständer
    588
    Montagelöcher
    610
    vordere Fläche
    614
    Stecker
    614
    Multi-Pin-Anschlüsse
    616
    Multi-Pin-Anschlüsse
    616
    Stecker
    620
    Sockel
    710
    Kupplung
    712
    Halterung
    714
    Platte
    716
    Platte
    720
    Verkleidung
    730
    Gehäuse
    732
    Ständer
    736
    Flansch
    740
    Fenster
    744
    Doppelpfeil
    746
    Schieber
    747
    Tab
    748
    O-Ring
    749
    O-Ring
    750
    Illuminator
    750
    Stangen-Illuminator-Zubehör
    754
    Anschlag-Schulter
    756
    Öffnung
    758
    Anschlag
    810
    äußere Spiegel
    812
    äußere Spiegel
    820
    innere Spiegel
    822
    innere Spiegel
    910
    Sichtfeld
    910
    Feld
    912
    Sichtfeld
    912
    Feld
    1010
    Streifenzonen
    1012
    Streifenzonen
    1030
    Überschneidungszone
    1040
    gestrichelte Linien
    1042
    gestrichelte Linien
    1110
    Halterung
    OR
    Überschneidungszone
    FD
    Brennweite
    OR
    Feld
    OML
    horizontale Länge
    OMH
    vertikale Höhe
    MS
    Abstand
    1210
    Flüssigkeitslinsen-Baugruppe
    1220
    Flüssigkeitslinsen-Einheit
    1222
    Schale
    1230
    Halterungsstruktur
    1232
    Schale
    1240
    Linse
    1244
    Membran-Linse
    1250
    Betätiger-Baugruppe
    1256
    Flachbandkabel
    1258
    Deckglas
    1260
    Festlinse
    1330
    Lücken-Pads
    1400
    Verfahren
    1410
    Schritt
    1420
    Schritt
    1430
    Schritt
    1440
    Schritt
    1500
    Multicore-Prozess
    1510
    Bildrahmen
    1520
    Teil
    1522
    Teil
    1530
    Ergebnis
    1532
    Ergebnis
    1540
    Busverbindung
    1600
    Multicore-Prozess
    1610
    Bildrahmen
    1620
    Ergebnis
    1630
    Aufgaben
    1640
    Ausgabeinformation
    1692
    Linsenabdeckung
    1697
    Linse
    1700
    Zeitplanungsprozess
    1710
    Schritt
    1720
    Entscheidungsschritt
    1730
    Schritt
    1740
    Schritt
    1800
    Prozess
    1810
    Code
    1820
    Code
    1830
    Code
    1840
    Code
    1860
    Bild
    1870
    Doppelpfeil
    1880
    Ergebnis
    1890
    Ergebnis
    1900
    Multicore-Prozess
    1910
    Schritt
    1920
    Entscheidungsschritt
    1930
    Entscheidungsschritt
    1940
    Schritt
    1950
    Schritt
    1960
    Schritt
    2000
    Prozess
    2010
    Schritt
    2020
    Schritt
    2031
    Anschluss
    2040
    Schritt
    2050
    Schritt
    2100
    Multicore-Prozess
    2110
    Code
    2120
    Decodieralgorithmus
    2130
    Decodieralgorithmus
    2140
    Ergebnis
    2150
    Ergebnis
    2200
    Multicore-Prozess
    2210
    sequenzielle Bilder
    2212
    sequenzielle Bilder
    2214
    sequenzielle Bilder
    2220
    Ergebnis
    2222
    Ergebnis
    2224
    Ergebnis
    2300
    Multicore-Prozess
    2310
    Bildrahmendaten
    2320
    Prozess
    2340
    Zoneninformationen
    2350
    Ergebnis
    2400
    Multicore-Prozess
    2410
    Bildrahmendaten
    2420
    Bildverarbeitungs-Tools
    2430
    Decodierprozess
    2440
    Bildinformationen
    2450
    Ergebnis
    2500
    Prozess
    2510
    Bildrahmendaten
    2520
    Anwesenheit/Abwesenheits-Prozess
    2530
    Prozess
    2540
    Anwesenheit/Abwesenheit-Information
    2550
    Ergebnis
    2600
    Prozess
    2610
    Bildrahmen
    2620
    Bildanalyseprozess
    2630
    Decodierprozess
    2640
    Anleitung
    2650
    Ergebnis
    2700
    Prozess
    2710
    Schritt
    2720
    Schritt
    2730
    Schritt
    2740
    Schritt
    2750
    Schritt
    2800
    Prozess
    2810
    Schritt
    2820
    Schritt
    2830
    Schritt
    2910
    Bezugspunkt
    2912
    Bezugspunkt
    2920
    Lüfter-Baugruppe
    2921
    Befestigungsmittel
    2922
    Verbindungskabel
    2932
    Befestigungselement
    2934
    Tab
    2936
    Befestigungselemente
    2938
    Befestigungselement
    2940
    Abstandshalter
    2944
    Befestigungsloch
    3000
    Prozess
    3010
    Schritt
    3020
    Schritt
    3030
    Entscheidungsschritt
    3040
    Schritt
    3050
    Schritt
    3100
    Prozess
    3110
    Bildrahmen
    3120
    Teile
    3122
    Teile
    3130
    Überschneidungszone
    3132
    Überschneidungszone
    3140
    X
    3142
    Barcode
    3150
    Schritt
    3160
    Schritt
    3170
    Schritt
    3200
    Prozess
    3220
    Schritt
    3230
    Entscheidungsschritt
    3240
    Schritt
    3250
    Schritt
    3310
    Objekt
    3312
    IDs
    M
    Kamera-Baugruppe
    S
    Kamera-Baugruppe
    3320
    vorne
    3322
    oben
    3324
    hinten
    3330
    Steckverbindung
    3332
    Y-Kabel
    3338
    Steckverbindung
    3340
    Y-Kabel
    3342
    Steckverbindung
    TM
    Zeitpunkt
    TS
    Zeit

Claims (21)

  1. Ein Bildverarbeitungssystem (100) umfassend: eine Kamera (110) beinhaltend einen Imager (112) und eine Prozessor-Anordnung (114), wobei die Prozessor-Anordnung (114) beinhaltet: (a) einen Pre-Prozessor (210) der mit dem Imager (112) verbunden ist und mit einer ersten Bildfrequenz Bilder (2210, 2212, 2214) von dem Imager (112) empfängt und vor-verarbeitet, und (b) einen Multicore-Prozessor (114) der vor-verarbeitete Bilder vom Pre-Prozessor (210) empfängt und Bildverarbeitungsaufgaben daran durchführt, um Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) bezüglich der Information in den Bildern (2210, 2212, 2214) zu generieren.
  2. Das Bildverarbeitungssystem gemäß Anspruch 1, dadurch gekennzeichnet, dass die erste Bildfrequenz höher ist als die zweite Bildfrequenz mit welcher der Multicore-Prozessor (114) Bilder von dem Pre-Prozessor (210) empfängt ist, der Pre-Prozessor (210) mit einem Datenspeicher verbunden ist, der entsprechend den Bildern (2210, 2212, 2214) von dem Imager (112) puffert und/oder dadurch, dass der Multicore-Prozessor (114) mit einem Datenspeicher verbunden ist, der Betriebsanleitungen für jeden Kern des Multicore-Prozessors (114) speichert und der Bilddaten für die Verarbeitung durch jeden Kern basierend auf einem Zeitplan speichert, und/oder dadurch, dass wenigstens ein Kern aufgebaut und angeordnet ist, um Autoregulierungsfunktion, beinhaltend zumindest eine von Beleuchtungssteuerung, Helligkeitsbelichtung und Fokussierung einer Autofokuslinse, bevorzugt wobei die Autofokuslinse eine Flüssigkeitslinse umfasst.
  3. Das Bildverarbeitungssystem gemäß Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) decodierte Symbologie-Informationen von einem Objekt (122, 124), das einen Symbologie-Code (130, 132, 134) beinhaltet, umfasst.
  4. Das Bildverarbeitungssystem gemäß einem der vorhergehenden Ansprüche, weiter umfassend einen Sichtfeldexpander (FOVE) (118), der die vom Imager (112) empfangenen Bilder (2210, 2212, 2214) aufteilt in eine Vielzahl von Teilbildern, die entlang einer erweiterten Breite aufgenommen sind, bevorzugt wobei jedes der Teilbildern entsprechend durch einen Kern des Multicore-Prozessors (114) verarbeitet wird.
  5. Das Bildverarbeitungssystem gemäß Anspruch 4, weiter umfassend einen Bezugspunkt bei einer bekannten Brennweite in Bezug auf einen in einem Strahlengang der Linsenanordnung angeordneten Imager (112), um so zumindest entweder (a) selektiv oder (b) teilweise dem Imager (112) gegenüber ausgesetzt zu sein, und einen Selbstkalibrierungsvorgang zur Festlegung der Brennweite der Linse, bevorzugt wobei sich der Bezugspunkt auf wenigstens einer optischen Komponente des FOVE befindet.
  6. Das Bildverarbeitungssystem gemäß Anspruch 4 oder 5 weiter umfassend eine mit Bezug auf den FOVE entfernbare externe Beleuchtung.
  7. Das Bildverarbeitungssystem gemäß einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Prozessor-Anordnung (114) eine Imager-Platine (113), die den Imager (112) enthält und eine Hauptplatine (115), die den Multicore-Prozessor (114) enthält, beinhaltet, wobei die Hauptplatine (115) mittels einer federbeaufschlagten Klammeranordnung gegen eine Innenseite des Kameragehäuses verspannt ist, und/oder dadurch das die Prozessor-Anordnung (114) eine Hauptplatine (115) beinhaltet, wobei die Hauptplatine (115) ein Profil von herausstehenden Schaltungskomponenten definiert, das angeordnet ist, um mit einem inneren Profil der Innenseite des Kameragehäuses übereinzustimmen, um so einen Abstand dazwischen zu minimieren, wobei das Gehäuse bevorzugt eine Vielzahl von wärmeableitenden Rippen auf einer Außenseite aufweist, und/oder dadurch gekennzeichnet, dass die Kamera (110) ein Gehäuse mit einer Vorderseite aufweist und wobei die Vorderseite eine Aufnahme für eine Linse und darin eine entnehmbar montierte Linse beinhaltet, wobei die Linse eine Flüssiglinsenanordnung beinhaltet, und/oder gekennzeichnet dadurch, dass der Pre-Prozessor (210) wenigstens eines von einer FPGA, ASIC und DSP beinhaltet und/oder dadurch gekennzeichnet, dass das Bildverarbeitungssystem (100) weiter eine Flüssiglinsenanordnung umfasst, die mit Bezug auf die Kamera (110) angeordnet ist und von wenigstens dem der Pre-Prozessor (210) und dem Multicore-Prozessor (114) gesteuert wird.
  8. Das Bildbearbeitungssystem gemäß einem der vorhergehenden Ansprüche, weiter umfassend eine Schnittstelle für ein externes Geschwindigkeitssignal von einer relativ zu einem Sichtfeld der Kameraanordnung sich bewegenden Linie.
  9. Das Bildverarbeitungssystem gemäß einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass wenigstens einer von Pre-Prozessor (210) und Multicore-Prozessor (114) aufgebaut und angeordnet ist um, basierend auf dem Geschwindigkeitssignal und einer Vielzahl von Bildern (2210, 2212, 2214) eines der folgenden auszuführen: (a) Steuern der Brennweite einer variablen Linse, (b) Bestimmen der Brennweite zu einem abgebildeten Objekt (122, 124), (c) Kalibrieren der Brennweite auf die Linie, und (d) Bestimmen der relativen Geschwindigkeit des abgebildeten Objekts (122, 124).
  10. Das Bildbearbeitungssystem gemäß einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Kamera (110) ein Gehäuse umfasst, das einen Ring von lichtdurchlässigem Material aufweist, der aufgebaut und angeordnet ist um in einer aus einer Vielzahl von vorbestimmten Farben zu beleuchten, um dem Benutzer eine Anzeige für den Systemstatus zu bieten, und/oder weiter umfassend einen Beleuchtungsring in einem Abschnitt des Körpers, der sich um wenigstens einen Abschnitt des Umfangs des Körpers erstreckt und ein Indikatorlicht in einer aus einer Vielzahl von vorbestimmten Farben abgibt, um dem Benutzer eine Anzeige für den Systemstatus zu bieten, und/oder gekennzeichnet dadurch, dass die Kamera (110) mit einer anderen Kamera verbunden ist, die einen Multicore-Prozessor (114) aufweist, der Bildverarbeitungsaufgaben auf Bildern (2210, 2212, 2214) durchführt, um Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) mit Bezug auf die Information in den Bildern (2210, 2212, 2214) zu generieren, wobei die Kamera (110) und die andere Kamera in einer Master-Slave-Beziehung angeordnet sind, sodass der Betrieb der Kamera (110) mit dem Betrieb der anderen Kamera synchronisiert ist und ausgewählte Information zwischen diesen geteilt wird, bevorzugt wobei Auslösung der Beleuchtung und Bildaufnahme der anderen Kamera mit Bezug auf Auslösung der Beleuchtung und Bildaufnahme der Kamera (110) abgestimmt ist.
  11. Ein Bildverarbeitungssystem (100) umfassend: eine Kamera (110), beinhaltend einen Imager (112), der Bilder (2210, 2212, 2214) aufnimmt und eine Prozessor-Anordnung (114), wobei die Prozessor-Anordnung (114) beinhaltet einen Multicore-Prozessor (114) der zumindest einen Abschnitt der Bilder (2210, 2212, 2214) empfängt, die durch den Imager (112) aufgenommen werden und der Bildbearbeitungsaufgaben darauf in jedem einer Vielzahl von Kernen ausführt, um Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) mit Bezug auf die Information in den Bildern (2210, 2212, 2214) generiert; und einen Sichtfeldexpander (FOVE) (118), der eine Vielzahl von Bereichen mit erweiterter Breite auf den Imager (112) projiziert, so dass jedes der Bilder (2210, 2212, 2214) eine Vielzahl von Bereichen beinhaltet.
  12. Das Bildverarbeitungssystem gemäß Anspruch 11, weiter umfassend einen Pre-Prozessor (210), der mit dem Imager (112), der die aufgenommenen Bilder (2210, 2212, 2214) empfängt und die Bilder (2210, 2212, 2214) vor-verarbeitet verbunden ist, bevorzugt wobei der Pre-Prozessor (210) wenigstens einige der Bilder (2210, 2212, 2214) in Autoregulierungsaufgaben des Bildbearbeitungssystems einsetzt.
  13. Das Bildverarbeitungssystem gemäß Anspruch 11 oder 12, weiter umfassend einen Pufferspeicher, der mit dem Pre-Prozessor (210) verbunden ist, um temporär zumindest eines von (a) Bildern (2210, 2212, 2214), (b) Teile von Bildern (2210, 2212, 2214), (c) Teilbilder oder (d) Stichproben-Bilder, aufgenommen durch den Imager (112), zu speichern.
  14. Das Bildverarbeitungssystem gemäß einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Pre-Prozessor (210) aufgebaut und angeordnet ist, um Autoregulierungsfunktionen durchzuführen, die wenigstens eines von Beleuchtungssteuerung, Helligkeitsbelichtung und Fokussierung einer Autofokus-Linse umfassen.
  15. Ein Bildverarbeitungssystem (100) umfassend: eine Kamera (110), die einen Imager (112), der Bilder (2210, 2212, 2214) mit einer ersten Frequenz aufnimmt und eine Prozessor-Anordnung (114) beinhaltet, wobei die Prozessor-Anordnung (114) beinhaltet einen Multicore-Prozessor (114), der wenigstens einen Bereich der Bilder (2210, 2212, 2214), die von dem Imager (112) aufgenommen werden, empfängt und Bildverarbeitungsaufgaben darauf in jedem einer Vielzahl von Kernen durchführt, um Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) mit Bezug auf die Informationen in den Bildern (2210, 2212, 2214) zu generieren; und eine Flüssiglinsenanordnung die aufgebaut und angeordnet ist, um basierend auf Anweisungen von der Prozessor-Anordnung (114) automatisch zu fokussieren.
  16. Das Bildverarbeitungssystem gemäß Anspruch 15, weiter umfassend einen Sichtfeldexpander (FOVE) (118), der eine Vielzahl von Regionen mit erweiterter Breite auf den Imager (112) projiziert, sodass jedes der Bilder (2210, 2212, 2214) eine Vielzahl von Regionen beinhaltet und/oder wobei die Prozessor-Anordnung (114) einen Pre-Prozess (245) beinhaltet, der zumindest einige der Autoregulationsaufgaben inklusive der automatischen Fokussierung der Flüssiglinsenanordnung durchführt.
  17. Ein Bildverarbeitungssystem (100) umfassend: einen Multicore-Prozessor (114), der von einem Imager (112) erfasste Bilder (2210, 2212, 2214) erhält, wobei der Multicore-Prozessor (114) Systembetriebsaufgaben und Bildverarbeitungssystem-Aufgaben auf den Bildern (2210, 2212, 2214) durchführt, um Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) mit Bezug auf die in den Bildern (2210, 2212, 2214) enthaltenen Informationen zu generieren, wobei der Multicore-Prozessor (114) aufgebaut und angeordnet ist, um gemäß eines Zeitplan zu arbeiten, der jedem einer Vielzahl von Kernen, entweder Systembetriebsaufgaben oder Bildverarbeitungssystem-Aufgaben zur Verarbeitung zuweist, insbesondere wobei der Zeitplan bestimmt, dass Bilder (2210, 2212, 2214) jeweils selektiv in jedem Kern verarbeitet werden, um die Effizienz beim generieren der Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) zu steigern, und/oder wobei der Zeitplan mindestens einen Kern dazu bestimmt, Systembetriebsaufgaben frei von der Generierung von Ergebnissen (1530, 1532, 2140, 2150, 2220, 2222, 2224) durchzuführen, und/oder wobei die Betriebssystemaufgaben Autoregulation umfassen, die wenigstens eines von Beleuchtungskontrolle, Helligkeitsbelichtung und Verstärkung und Fokussierung einer Autofokuslinse beinhalten, und/oder wobei die Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) decodierte Symbologie-Information eines Objekts (122, 124), das einen Symbologie-Code (130, 132, 134) aufweist enthalten, und/oder weiter umfassend einen Sichtfeldexpander (FOVE) (118), der die am Imager (112) erhaltenen Bilder (2210, 2212, 2214) in eine Vielzahl von Teilbildern aufteilt, die entlang einer erweiterten Breite oder einer erweiterten Höhe aufgenommen sind und wobei jedes Detailbild entsprechend von einem Kern des Multicore-Prozessor (114) verarbeitet wird, insbesondere wobei jedes der Teilbilder eine Überschneidungszone mit Bezug auf ein anderes der Teilbilder enthält und jeder Kern jeweils die Überschneidungszone verarbeitet und/oder wobei jedes der Teilbilder einen Teil eines Symbologie-Codes (130, 132, 134) enthält und wobei jeder Kern den Teil identifiziert und entsprechend verarbeitet, um die Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) zu generieren, zusammengeheftet, um decodierte Symbologie-Informationen zu enthalten.
  18. Das Bildverarbeitungssystem gemäß Anspruch 17, dadurch gekennzeichnet, dass wenigstens einer von Pre-Prozessor (210) und Multicore-Prozessor (114) aufgebaut und angeordnet ist, um auf der Grundlage eines Geschwindigkeitssignals von einem bewegten Objekt (122, 124) und einer Vielzahl von Bildern (2210, 2212, 2214) mindestens eine der folgenden Aktivitäten auszuführen: (a) Steuern der Brennweite einer variablen Linse, (b) Bestimmen der Brennweite zu einem abgebildeten Objekt (122, 124), (c) Kalibrieren der Brennweite auf die Linie, und (d) Bestimmen der relativen Geschwindigkeit des abgebildeten Objekts (122, 124). und/oder weiter umfassend einen Pre-Prozessor (210), der selektiv einen Teil der Bilder von dem Imager (112) an den Multicore-Prozessor (114) überträgt und der Pre-Prozessor (210) andere der Bilder (2210, 2212, 2214) von dem Imager (112) zur Systemsteuerung einschließlich Autoregulation verarbeitet, und wobei der Pre-Prozessor (210) selektiv Informationen, basierend auf Identifikation durch den Pre-Prozessor (210) von Merkmalen von Interesse für die weitere Verarbeitung durch den Pre-Prozessor (210) an den Multicore-Prozessor (114) überträgt, wobei die Information wenigstens eines von (a) den Merkmale von Interesse und (b) Bildern (2210, 2212, 2214), die die Merkmale von Interesse enthalten, ist und wobei der Multicore-Prozessor (114) aufgebaut und angeordnet ist, um Teilbilder eines jedes der Bilder (2210, 2212, 2214) entsprechend in jedem einer Vielzahl von Kernen zu verarbeiten und/oder wobei der Multicore-Prozessor (114) aufgebaut und angeordnet ist, um Symbologie in den Bildern (2210, 2212, 2214) in wenigstens einem der Kerne zu dekodieren und aufgebaut und angeordnet ist, um (a) die in den Bildern (2210, 2212, 2214) enthaltene Symbologie in mindestens einem der Kerne zu identifizieren und (b) die Symbologie in den Bildern (2210, 2212, 2214), welche die identifizierte Symbologie enthaltenen in einem anderen der Kerne zu dekodieren, und/oder wobei der Multicore-Prozessor (114) aufgebaut und angeordnet ist, um Informationen mit Bezug auf mindestens eines von (a) Lage des Symbologie in den Bildern (2210, 2212, 2214) die Symbologie enthalten und (b) andere Merkmale mit Bezug auf die Symbologie in den Bildern (2210, 2212, 2214) welche Symbologie enthalten in den anderen der Kerne zur Verfügung zu stellen, und/oder wobei der Multicore-Prozessor (114) aufgebaut und angeordnet ist, um Bildanalyse an den Bildern (2210, 2212, 2214) durchzuführen, um Bilder (2210, 2212, 2214) zu identifizieren, die ausreichend Eigenschaften zum dekodieren in wenigstens einem der Kerne enthalten und den Schrittes des Dekodierens auf den Bildern (2210, 2212, 2214) die ausreichend Eigenschaften zum dekodieren aufweisen in einem anderen der Kerne durchzuführen, und/oder wobei der Multicore-Prozessor (114) aufgebaut und angeordnet ist, um die Bilder (2210, 2212, 2214) zu verarbeiten und dabei einen ersten Decodierprozess in wenigstens einem der Kerne und einen zweiten Decodierprozess in einem anderen der Kerne anzuwenden, und/oder wobei der Multicore-Prozessor (114) aufgebaut und angeordnet ist, um ein eine Symbologie enthaltendes Bild, das von den Bildern (2210, 2212, 2214) in wenigstens einem der Kerne bereitgestellt wird, zu dekodieren und nach einer vorbestimmten Zeitspanne, wenn (a) das Bild nicht decodierte ist und (b) es wahrscheinlich ist, dass das Bild mit mehr Zeit decodiert werden kann, das Bild in einem anderen der Kerne zu decodiert wird und/oder wobei der Multicore-Prozessor (114) aufgebaut angeordnet ist, um ein eine Symbologie enthaltendes Bild, das von den Bildern (2210, 2212, 2214) in wenigstens einem der Kerne bereitgestellt wird zu dekodieren und nach einer vorbestimmten Zeitspanne, wenn (a) das Bild nicht decodiert ist und (b) es wahrscheinlich ist, dass das Bild mit mehr Zeit decodierte werden kann, mit dem Dekodieren des Bildes in wenigstens einem der Kerne fortzufahren und ein anderes Bild der in einem anderen der Kerne bereitgestellten Bilder (2210, 2212, 2214) zu dekodieren und/oder wobei der Multicore-Prozessor (114) aufgebaut und angeordnet ist um Teilbilder, die jeweils Abschnitte jedes der Bilder (2210, 2212, 2214) umfassen entsprechend zu verarbeiten und wobei die Bilder (2210, 2212, 2214) einen ersten Symbologie-Typ und einen zweiten Symbologie-Typ enthalten und wobei der Multicore-Prozessor (114) weiter aufgebaut und angeordnet ist, um Teilbilder unter Verwendung eines jeden der Vielzahl von Kernen zu dekodieren, um so die Last bei der Verarbeitung des ersten Symbologie-Typs und des zweiten Symbologie-Typs zwischen jedem der Kerne auszugleichen.
  19. Das Bildverarbeitungssystem gemäß Anspruch 17 oder 18, dadurch gekennzeichnet, dass die Kerne so angeordnet sind, sodass basierend auf einer gemessenen aktuellen Triggerfrequenz der Bilderfassung des Imagers (112), wenn die Triggerfrequenz innerhalb eines festgelegten Schwellenwerts liegt, wenigstens einer der Kerne nicht-dekodierende Systembetriebsaufgaben durchführt, und wenn die Triggerfrequenz oberhalb des vorher festgelegten Schwellenwerts liegt der wenigstens eine der Kerne Dekodierungsaufgaben durchführt, frei von der Durchführung von Systembetriebsaufgaben, insbesondere wobei die nicht-dekodierenden Systemaufgabe eine Autoregulationsaufgabe ist.
  20. Ein Bildverarbeitungssystem (100) umfassend: einen Pre-Prozessor (210), der selektiv mit einer Bildfrequenz von einem Imager (112) empfangene Bilder (2210, 2212, 2214) speichert und der zumindest einen Teil der Bilder (2210, 2212, 2214) an einen Multicore-Prozessor (114), der Informationen in den Bildern (2210, 2212, 2214) in einer Vielzahl von Kernen verarbeitet überträgt, um Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) zu generieren, wobei der Pre-Prozessor (210) wenigstens einige der gespeicherten Bilder (2210, 2212, 2214) in Bildverarbeitungssystem-Autoregulierungsaufgaben verwendet.
  21. Ein Verfahren zur Verarbeitung von Bildern (2210, 2212, 2214) in einem Bildverarbeitungssystem umfassend die Schritte: Erfassen von Bildern (2210, 2212, 2214) mit einer ersten Bildfrequenz in einem Imager (112) einer Bildverarbeitungssystem- Kamera (110); Übertragen von wenigstens einem Teil der Bilder (2210, 2212, 2214) an einen Multicore-Prozessor (114); und Verarbeiten der übertragenen Bilder (2210, 2212, 2214), um Ergebnisse (1530, 1532, 2140, 2150, 2220, 2222, 2224) zu generieren die Informationen mit Bezug auf die Bilder (2210, 2212, 2214) enthalten, in jedem einer Vielzahl von Kernen des Multicore-Prozessors (114), gemäß einem Zeitplan der jedem einer Vielzahl von Kernen zuordnet entweder Betriebssystemaufgaben, inklusive Kameraautoregulation oder Bildverarbeitungssystem-Aufgaben inklusive Bildverarbeitungsaufgaben durchzuführen.
DE102013110899.7A 2012-10-04 2013-10-01 Symbologie-Lesegerät mit Multicore-Prozessor und Systeme und Verfahren zum Betrieb desselben Revoked DE102013110899B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/645,213 2012-10-04
US13/645,173 2012-10-04
US13/645,173 US10154177B2 (en) 2012-10-04 2012-10-04 Symbology reader with multi-core processor
US13/645,213 US8794521B2 (en) 2012-10-04 2012-10-04 Systems and methods for operating symbology reader with multi-core processor

Publications (2)

Publication Number Publication Date
DE102013110899A1 DE102013110899A1 (de) 2014-04-30
DE102013110899B4 true DE102013110899B4 (de) 2019-07-04

Family

ID=50407267

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013110899.7A Revoked DE102013110899B4 (de) 2012-10-04 2013-10-01 Symbologie-Lesegerät mit Multicore-Prozessor und Systeme und Verfahren zum Betrieb desselben

Country Status (2)

Country Link
CN (3) CN108460307B (de)
DE (1) DE102013110899B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3561764B1 (de) 2018-04-25 2021-02-17 Cognex Corporation Systeme und verfahren zum zusammenfügen von sequentiellen bildern eines objekts

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3159731B1 (de) * 2015-10-19 2021-12-29 Cognex Corporation System und verfahren zur erweiterung des sichtfeldes in einem sichtsystem
CN105469131A (zh) * 2015-12-30 2016-04-06 深圳市创科自动化控制技术有限公司 一种隐式二维码及其读取识别设备
CN106937047B (zh) * 2017-03-08 2019-08-09 苏州易瑞得电子科技有限公司 符号特征的自适应对焦视觉识别方法、系统及设备
CN107358135B (zh) * 2017-08-28 2020-11-27 北京奇艺世纪科技有限公司 一种二维码扫码方法及装置
DE102017128032A1 (de) * 2017-11-27 2019-05-29 CRETEC GmbH Codelesevorrichtung und Verfahren zur Online-Verifikation eines Codes
CN112747677A (zh) * 2020-12-29 2021-05-04 广州艾目易科技有限公司 一种多个处理器的光学定位方法及系统
US11717973B2 (en) 2021-07-31 2023-08-08 Cognex Corporation Machine vision system with multispectral light assembly
US20230030276A1 (en) * 2021-07-31 2023-02-02 Cognex Corporation Machine vision system and method with multispectral light assembly

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0833270A2 (de) 1996-09-27 1998-04-01 VITRONIC Dr.-Ing. Stein Bildverarbeitungssysteme GmbH Verfahren und Vorrichtung zur Erfassung von auf potentiell grossflächigen Gegenständen aufgebrachten, optisch erfassbaren Informationen
DE60219754T2 (de) 2001-12-28 2008-01-17 Symbol Technologies, Inc. Datenerfassungsvorrichtung mit ASIC
AT504940B1 (de) 2007-03-14 2009-07-15 Alicona Imaging Gmbh Verfahren und apparat zur optischen messung der topografie einer probe

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5166745A (en) * 1990-05-01 1992-11-24 The Charles Stark Draper Laboratory, Inc. Rapid re-targeting, space-based, boresight alignment system and method for neutral particle beams
US6766515B1 (en) * 1997-02-18 2004-07-20 Silicon Graphics, Inc. Distributed scheduling of parallel jobs with no kernel-to-kernel communication
US6176428B1 (en) * 1999-04-07 2001-01-23 Symbol Technologies, Inc. Techniques for reading postal code
US8146823B2 (en) * 2002-01-18 2012-04-03 Microscan Systems, Inc. Method and apparatus for rapid image capture in an image system
US20040169771A1 (en) * 2003-01-02 2004-09-02 Washington Richard G Thermally cooled imaging apparatus
US6690451B1 (en) * 2003-02-06 2004-02-10 Gerald S. Schubert Locating object using stereo vision
JP4070778B2 (ja) * 2005-05-13 2008-04-02 株式会社ソニー・コンピュータエンタテインメント 画像処理システム
US20090072037A1 (en) * 2007-09-17 2009-03-19 Metrologic Instruments, Inc. Autofocus liquid lens scanner
CN101546276B (zh) * 2008-03-26 2012-12-19 国际商业机器公司 多核环境下实现中断调度的方法及多核处理器
US20100097444A1 (en) * 2008-10-16 2010-04-22 Peter Lablans Camera System for Creating an Image From a Plurality of Images
CN101299194B (zh) * 2008-06-26 2010-04-07 上海交通大学 基于可配置处理器的异构多核系统线程级动态调度方法
CN101466041B (zh) * 2009-01-16 2010-09-15 清华大学 一种用于多核处理器的多视点视频编码的任务调度方法
US8587595B2 (en) * 2009-10-01 2013-11-19 Hand Held Products, Inc. Low power multi-core decoder system and method
US20120200686A1 (en) * 2009-10-30 2012-08-09 Zaiguang Yu Intraoral camera with liquid lens
CN101710986B (zh) * 2009-11-18 2012-05-23 中兴通讯股份有限公司 基于同构多核处理器的h.264并行解码方法和系统
US8700943B2 (en) * 2009-12-22 2014-04-15 Intel Corporation Controlling time stamp counter (TSC) offsets for mulitple cores and threads
US8711248B2 (en) * 2011-02-25 2014-04-29 Microsoft Corporation Global alignment for high-dynamic range image generation
US9235455B2 (en) * 2011-03-16 2016-01-12 Microscan Systems, Inc. Multi-core distributed processing using shared memory and communication link
CN102625108B (zh) * 2012-03-30 2014-03-12 浙江大学 一种基于多核处理器实现的h.264解码方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0833270A2 (de) 1996-09-27 1998-04-01 VITRONIC Dr.-Ing. Stein Bildverarbeitungssysteme GmbH Verfahren und Vorrichtung zur Erfassung von auf potentiell grossflächigen Gegenständen aufgebrachten, optisch erfassbaren Informationen
DE60219754T2 (de) 2001-12-28 2008-01-17 Symbol Technologies, Inc. Datenerfassungsvorrichtung mit ASIC
AT504940B1 (de) 2007-03-14 2009-07-15 Alicona Imaging Gmbh Verfahren und apparat zur optischen messung der topografie einer probe

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3561764B1 (de) 2018-04-25 2021-02-17 Cognex Corporation Systeme und verfahren zum zusammenfügen von sequentiellen bildern eines objekts
EP3561764B2 (de) 2018-04-25 2023-11-15 Cognex Corporation Systeme und verfahren zum zusammenfügen von sequentiellen bildern eines objekts

Also Published As

Publication number Publication date
CN103714307A (zh) 2014-04-09
DE102013110899A1 (de) 2014-04-30
CN103714307B (zh) 2018-04-13
CN108460307A (zh) 2018-08-28
CN114970580A (zh) 2022-08-30
CN108460307B (zh) 2022-04-26

Similar Documents

Publication Publication Date Title
DE102013110899B4 (de) Symbologie-Lesegerät mit Multicore-Prozessor und Systeme und Verfahren zum Betrieb desselben
US11606483B2 (en) Symbology reader with multi-core processor
US8794521B2 (en) Systems and methods for operating symbology reader with multi-core processor
DE102013106585B4 (de) System und Verfahren zur Feststellung der Brennweite einer Objektivanordnung
DE102007060557B4 (de) Modulare Kamera
EP2693363B1 (de) Kamerasystem und Verfahren zur Erfassung eines Stromes von Objekten
EP2583055B1 (de) Optisches messverfahren und messsystem zum bestimmen von 3d-koordinaten auf einer messobjekt-oberfläche
DE102012111248B4 (de) Kamerasystem mit austauschbarer Beleuchtungsbaugruppe und Bildverarbeitungssystem
EP2710331B1 (de) Optisches messverfahren und messsystem zum bestimmen von 3d-koordinaten auf einer messobjekt-oberfläche
EP2835973B1 (de) 3D-Kamera und Verfahren zur Erfassung von dreidimensionalen Bilddaten
DE102017218503B4 (de) Laserprojektor mit dynamischen anpassbaren Fokus
EP2728374B1 (de) Erfindung betreffend die Hand-Auge-Kalibrierung von Kameras, insbesondere Tiefenbildkameras
WO2013116880A1 (de) Vorrichtung zum erfassen der dreidimensionalen geometrie von objekten und verfahren zum betreiben derselben
WO2015117905A1 (de) 3d-bildanalysator zur blickrichtungsbestimmung
DE102013114863A1 (de) Linse mit konstanter Vergrößerung für eine Kamera eines Visionssystems
EP2546776A1 (de) Kamerabasierter Codeleser und Verfahren zu dessen justierter Herstellung
WO2014198611A1 (de) Kältegerät mit einem kameramodul
WO2005067318A3 (en) Multi-dimensional imaging apparatus, systems, and methods
EP2701380A1 (de) Kamera und Verfahren zur Aufnahme scharfer Bilder
DE102015106844A1 (de) System und Verfahren zur Verringerung des Drifts in einer variablen Linse eines Sichtsystems
DE102017119282B4 (de) Optische Abbildungsvorrichtungen und -verfahren
CN110231749A (zh) 相机
DE102011079285A1 (de) Vorrichtung zur Erfassung biometrischer Merkmale
EP2916258A1 (de) 2D-Barcode-Scanner
DE102022207225A1 (de) Bildaufnahmesystem

Legal Events

Date Code Title Description
R123 Application deemed withdrawn due to non-payment of filing fee
R409 Internal rectification of the legal status completed
R409 Internal rectification of the legal status completed
R409 Internal rectification of the legal status completed
R012 Request for examination validly filed

Effective date: 20140714

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 102013022592

Country of ref document: DE

R082 Change of representative

Representative=s name: PATENTANWAELTE OLBRICHT, BUCHHOLD, KEULERTZ PA, DE

R026 Opposition filed against patent
R037 Decision of examining division or of federal patent court revoking patent now final