-
HINTERGRUND
-
Oft ist es sinnvoll, einen Strichcode auf einem Objekt zu lokalisieren. Aktuelle Bildverarbeitungssysteme erreichen dies, indem sie zunächst ein Bild eines Objekts erfassen und dann ein Sichtfeld (FOV) des Bildes durchsuchen (z. B. das gesamte Bild nach dem Strichcode oder einem anderen Objekt durchsuchen). Das Durchsuchen des gesamten Bildes ist jedoch ineffizient. Daher besteht ein Bedarf an einer verbesserten Effizienz bei dieser Art von Bildverarbeitungssystemen.
-
BESCHREIBUNG
-
In einer Ausführungsform ist die vorliegende Erfindung ein Verfahren zum Betreiben eines maschinellen Bildverarbeitungssystems, wobei das maschinelle Bildverarbeitungssystem eine Computervorrichtung zum Ausführen einer Anwendung und eine fixierte Bildgebungsvorrichtung umfasst, die kommunikativ mit der Computervorrichtung gekoppelt ist. Das Verfahren kann umfassen: (a) Erfassen eines ersten Bildes über ein Sichtfeld (FOV) mittels der fixierten Bildgebungsvorrichtung; (b) Analysieren mindestens eines Abschnitts des ersten Bildes mittels der Anwendung, um einen ersten Strichcode innerhalb des ersten Bildes zu erfassen; (c) Bestimmen einer Position des ersten Strichcodes innerhalb des ersten Bildes; (d) Erfassen eines zweiten Bildes mittels der fixierten Bildgebungsvorrichtung; (e) Analysieren eines Bereichs von Interesse (ROI) des zweiten Bildes mittels der Anwendung, um einen zweiten Strichcode zu erkennen, wobei der ROI des zweiten Bildes ein Abschnitt des zweiten Bildes ist, der auf der Position des ersten Strichcodes innerhalb des ersten Bildes basiert; und (f) als Reaktion auf das Erkennen des zweiten Strichcodes, Übermitteln von Daten, die dem zweiten Strichcode zugeordnet sind, stromaufwärts.
-
In einer Variante dieser Ausführungsform wird das zweite Bild über das FOV erfasst.
-
In einer weiteren Variante dieser Ausführungsform sind der Computer und das fixierte Bildgebungsgerät in einem Gehäuse untergebracht, das fest mit einer Struktur verbunden ist.
-
In einer weiteren Variante dieser Ausführungsform umfasst das Analysieren des mindestens einen Abschnitts des ersten Bildes zur Erkennung des ersten Strichcodes innerhalb des ersten Bildes das Analysieren eines Teils des ersten Bildes zur Erkennung des ersten Strichcodes innerhalb des ersten Bildes.
-
In einer weiteren Variante dieser Ausführungsform umfasst das Verfahren ferner als Reaktion darauf, dass der zweite Strichcode innerhalb des ROI des zweiten Bildes nicht erfasst wird: Erfassen eines dritten Bildes mittels der fixierten Bildgebungsvorrichtung; Analysieren eines ROI des dritten Bildes mittels der Anwendung, um einen dritten Strichcode zu erkennen; und als Reaktion auf das Erkennen des dritten Strichcodes, Übermitteln von Daten, die dem dritten Strichcode zugeordnet sind, stromaufwärts, wobei der ROI des dritten Bildes mindestens einen Abschnitt des dritten Bildes einnimmt und größer ist als der ROI des zweiten Bildes.
-
In einer weiteren Variante dieser Ausführungsform werden die Schritte (a) - (c) während einer ersten Iteration eines Bildverarbeitungsauftrags durchgeführt, und die Schritte (d) - (f) werden während einer zweiten Iteration eines Bildverarbeitungsauftrags durchgeführt.
-
In einer weiteren Variante dieser Ausführungsform umfasst das Verfahren ferner das Bestimmen eines Begrenzungsrahmens des ersten Strichcodes mittels der Anwendung, wobei der ROI des zweiten Bildes auf der Grundlage des Begrenzungsrahmens des ersten Strichcodes gebildet wird.
-
In einer weiteren Variante dieser Ausführungsform umfasst das Verfahren ferner: Bestimmen eines Begrenzungsrahmens des ersten Strichcodes mittels der Anwendung, einschließlich des Bestimmens (i) einer niedrigsten x-Koordinate des Begrenzungsrahmens, (ii) einer höchsten x-Koordinate des Begrenzungsrahmens, (iii) einer niedrigsten y-Koordinate des Begrenzungsrahmens, und (iv) einer höchsten y-Koordinate des Begrenzungsrahmens; wobei der ROI des zweiten Bildes gebildet wird durch Einstellen: (i) einer niedrigsten x-Koordinate des ROI des zweiten Bildes auf der Grundlage der niedrigsten x-Koordinate des Begrenzungsrahmens, (ii) einer höchsten x-Koordinate des ROI des zweiten Bildes auf der Grundlage der höchsten x-Koordinate des Begrenzungsrahmens, (iii) einer niedrigsten y-Koordinate des ROI des zweiten Bildes auf der Grundlage der niedrigsten y-Koordinate des Begrenzungsrahmens, und (iv) einer höchsten y-Koordinate des ROI des zweiten Bildes auf der Grundlage der höchsten y-Koordinate des Begrenzungsrahmens.
-
In einer weiteren Variante dieser Ausführungsform umfasst das Verfahren ferner: Bestimmenmittels der Anwendung: (i) einer horizontalen Länge des Begrenzungsrahmens und (ii) einer vertikalen Länge des Begrenzungsrahmens; und wobei: die niedrigste x-Koordinate des ROI des zweiten Bildes ferner auf der Grundlage eines ersten vorbestimmten Prozentsatzes der horizontalen Länge bestimmt wird; die höchste x-Koordinate des ROI des zweiten Bildes ferner auf der Grundlage eines zweiten vorbestimmten Prozentsatzes der horizontalen Länge bestimmt wird; die niedrigste y-Koordinate des ROI des zweiten Bildes ferner auf der Grundlage eines ersten vorbestimmten Prozentsatzes der vertikalen Länge bestimmt wird; und die höchste y-Koordinate des ROI des zweiten Bildes ferner auf der Grundlage eines zweiten vorbestimmten Prozentsatzes der vertikalen Länge bestimmt wird.
-
In einer anderen Ausführungsform ist die Erfindung ein Verfahren zum Betreiben eines maschinellen Bildverarbeitungssystems, wobei das maschinelle Bildverarbeitungssystem eine Computervorrichtung zum Ausführen einer Anwendung und eine mit der Computervorrichtung kommunikativ gekoppelte stationäre Bildgebungsvorrichtung umfasst. Das Verfahren kann umfassen: (a) Erfassen eines ersten Bildes über ein Sichtfeld (FOV) mittels der fixierten Bildgebungsvorrichtung; (b) Analysieren mindestens eines Abschnitts des ersten Bildes mittels der Anwendung, um einen ersten Strichcode innerhalb des ersten Bildes zu erfassen; (c) Bestimmen einer Position des ersten Strichcodes innerhalb des ersten Bildes; (d) Erfassen eines zweiten Bildes mittels der fixierten Bildgebungsvorrichtung; (e) Analysieren mindestens eines Abschnitts des zweiten Bildes mittels der Anwendung, um einen zweiten Strichcode in dem zweiten Bild zu erfassen; (f) Bestimmen einer Position des zweiten Strichcodes in dem zweiten Bild; (g) Erfassen eines dritten Bildes mittels der fixierten Bildgebungsvorrichtung; (h) Analysieren eines Bereichs von Interesse (ROI) des dritten Bildes mittels der Anwendung, um einen dritten Strichcode zu erfassen, wobei der ROI des dritten Bildes ein Abschnitt des dritten Bildes ist, der auf der Position des ersten Strichcodes im ersten Bild und der Position des zweiten Strichcodes im zweiten Bild basiert; und (i) als Reaktion auf das Erfassen des dritten Strichcodes, Übermitteln von Daten, die dem dritten Strichcode zugeordnet sind, stromaufwärts.
-
In einer Variante dieser Ausführungsform umfasst das Verfahren ferner: Bestimmen eines Begrenzungsrahmens des ersten Strichcodes mittels der Anwendung, einschließlich des Bestimmens (i) einer niedrigsten x-Koordinate des Begrenzungsrahmens, (ii) einer höchsten x-Koordinate des Begrenzungsrahmens, (iii) einer niedrigsten y-Koordinate des Begrenzungsrahmens, und (iv) einer höchsten y-Koordinate des Begrenzungsrahmens; wobei der ROI des dritten Bildes gebildet wird durch Einstellen: (i) einer niedrigsten x-Koordinate des ROI des dritten Bildes auf der Grundlage der niedrigsten x-Koordinate des Begrenzungsrahmens, (ii) einer höchsten x-Koordinate des ROI des dritten Bildes auf der Grundlage der höchsten x-Koordinate des Begrenzungsrahmens, (iii) einer niedrigsten y-Koordinate des ROI des dritten Bildes auf der Grundlage der niedrigsten y-Koordinate des Begrenzungsrahmens, und (iv) einer höchsten y-Koordinate des ROI des dritten Bildes auf der Grundlage der höchsten y-Koordinate des Begrenzungsrahmens.
-
In einer weiteren Variante dieser Ausführungsform umfasst das Verfahren ferner: Bestimmen mittels der Anwendung: (i) einer horizontalen Länge des Begrenzungsrahmens und (ii) einer vertikalen Länge des Begrenzungsrahmens; und wobei: die niedrigste x-Koordinate des ROI des dritten Bildes ferner auf der Grundlage eines ersten vorbestimmten Prozentsatzes der horizontalen Länge bestimmt wird; die höchste x-Koordinate des ROI des dritten Bildes ferner auf der Grundlage eines zweiten vorbestimmten Prozentsatzes der horizontalen Länge bestimmt wird; die niedrigste y-Koordinate des ROI des dritten Bildes ferner auf der Grundlage eines ersten vorbestimmten Prozentsatzes der vertikalen Länge bestimmt wird; und die höchste y-Koordinate des ROI des dritten Bildes ferner auf der Grundlage eines zweiten vorbestimmten Prozentsatzes der vertikalen Länge bestimmt wird.
-
In einer weiteren Ausführungsform ist die Erfindung ein Verfahren zum Betreiben eines maschinellen Bildverarbeitungssystems, wobei das maschinelle Bildverarbeitungssystem eine Computervorrichtung zum Ausführen einer Anwendung und eine mit der Computervorrichtung kommunikativ gekoppelte stationäre Bildgebungsvorrichtung umfasst. Das Verfahren kann umfassen: (a) Erfassen eines ersten Bildes über ein Sichtfeld (FOV) mittels der fixierten Bildgebungsvorrichtung; (b) Analysieren mindestens eines Abschnitts des ersten Bildes mittels der Anwendung, um einen ersten Strichcode innerhalb des ersten Bildes zu erfassen; (c) Bestimmen einer Position des ersten Strichcodes innerhalb des ersten Bildes; (d) Bestimmen eines Bereichs von Interesse (ROI) des ersten Bildes auf der Grundlage der Position des ersten Strichcodes innerhalb des ersten Bildes; (e) Erfassen eines zweiten Bildes mittels der fixierten Bildgebungsvorrichtung; (f) Analysieren mindestens eines Abschnitts des zweiten Bildes mittels der Anwendung, um einen zweiten Strichcode innerhalb des zweiten Bildes zu erkennen; (g) Bestimmen einer Position des zweiten Strichcodes innerhalb des zweiten Bildes; (h) Bestimmen eines ROI des zweiten Bildes auf der Grundlage der Position des zweiten Strichcodes innerhalb des zweiten Bildes; (i) Erfassen eines dritten Bildes mittels der fixierten Bildgebungsvorrichtung; (j) als Reaktion darauf, dass der ROI des ersten Bildes und der ROI des zweiten Bildes innerhalb einer vorbestimmten Toleranz liegen, Bilden eines ROI des dritten Bildes auf der Grundlage des ROI des ersten Bildes und des ROI des zweiten Bildes; (k) Analysieren des ROI des dritten Bildes mittels der Anwendung, um einen dritten Strichcode zu erfassen; und (I) als Reaktion auf das Erfassen des dritten Strichcodes, Übermitteln von Daten, die dem dritten Strichcode zugeordnet sind, stromaufwärts.
-
In einer Variante dieser Ausführungsform umfasst die vorbestimmte Toleranz einen Pixelabstand, der anhand von Pixelwerten und/oder Pixelkoordinaten gemessen wird.
-
In einer weiteren Variante dieser Ausführungsform kann das Verfahren ferner umfassen, dass als Reaktion darauf, dass der ROI des ersten Bildes und der ROI des zweiten Bildes innerhalb der vorbestimmten Toleranz liegen, der ROI des dritten Bildes auf der Grundlage eines Durchschnitts des ROI des ersten Bildes und des ROI des zweiten Bildes gebildet wird.
-
In einer weiteren Variante dieser Ausführungsform wird der Durchschnitt berechnet durch Mitteln: (i) einer niedrigsten x-Koordinate des ROI des ersten Bildes mit einer niedrigsten x-Koordinate des ROI des zweiten Bildes, (ii) einer höchsten x-Koordinate des ROI des ersten Bildes mit einer höchsten x-Koordinate des ROI des zweiten Bildes, (iii) einer niedrigsten y-Koordinate des ROI des ersten Bildes mit einer niedrigsten y-Koordinate des ROI des zweiten Bildes, (iv) einer höchsten y-Koordinate des ROI des ersten Bildes mit einer höchsten y-Koordinate des ROI des zweiten Bildes.
-
In einer weiteren Variante dieser Ausführungsform kann das Verfahren ferner umfassen: Bestimmen eines Begrenzungsrahmens des ersten Strichcodes mittels der Anwendung, einschließlich des Bestimmens (i) einer niedrigsten x-Koordinate des Begrenzungsrahmens, (ii) einer höchsten x-Koordinate des Begrenzungsrahmens, (iii) einer niedrigsten y-Koordinate des Begrenzungsrahmens, und (iv) einer höchsten y-Koordinate des Begrenzungsrahmens; wobei der ROI des dritten Bildes gebildet wird durch Einstellen: (i) einer niedrigsten x-Koordinate des ROI des dritten Bildes auf der Grundlage der niedrigsten x-Koordinate des Begrenzungsrahmens, (ii) einer höchsten x-Koordinate des ROI des dritten Bildes auf der Grundlage der höchsten x-Koordinate des Begrenzungsrahmens, (iii) einer niedrigsten y-Koordinate des ROI des dritten Bildes auf der Grundlage der niedrigsten y-Koordinate des Begrenzungsrahmens, und (iv) einer höchsten y-Koordinate der ROI des dritten Bildes auf der Grundlage der höchsten y-Koordinate des Begrenzungsrahmens.
-
In einer weiteren Variante dieser Ausführungsform kann das Verfahren ferner umfassen: Bestimmen mittels der Anwendung: (i) einer horizontalen Länge des Begrenzungsrahmens und (ii) einer vertikalen Länge des Begrenzungsrahmens; und wobei: die niedrigste x-Koordinate des ROI des dritten Bildes ferner auf der Grundlage eines ersten vorbestimmten Prozentsatzes der horizontalen Länge bestimmt wird; die höchste x-Koordinate des ROI des dritten Bildes ferner auf der Grundlage eines zweiten vorbestimmten Prozentsatzes der horizontalen Länge bestimmt wird; die niedrigste y-Koordinate des ROI des dritten Bildes ferner auf der Grundlage eines ersten vorbestimmten Prozentsatzes der vertikalen Länge bestimmt wird; und die höchste y-Koordinate des ROI des dritten Bildes ferner auf der Grundlage eines zweiten vorbestimmten Prozentsatzes der vertikalen Länge bestimmt wird.
-
In einer weiteren Variante dieser Ausführungsform kann das Verfahren ferner umfassen, dass als Reaktion darauf, dass der ROI des ersten Bildes und der ROI des zweiten Bildes nicht innerhalb einer vorbestimmten Toleranz liegen, der ROI des dritten Bildes so gebildet wird, dass der ROI des dritten Bildes größer ist als entweder der ROI des ersten Bildes oder der ROI des zweiten Bildes.
-
In einer weiteren Ausführungsform ist die vorliegende Erfindung ein Verfahren zum Betreiben eines maschinellen Bildverarbeitungssystems, wobei das maschinelle Bildverarbeitungssystem eine Computervorrichtung zum Ausführen einer Anwendung und eine fixierte Bildgebungsvorrichtung umfasst, die kommunikativ mit der Computervorrichtung gekoppelt ist. Das Verfahren kann umfassen: Erfassen eines ersten Bildes über ein Sichtfeld (FOV) mittels der fixierten Bildgebungsvorrichtung; Analysieren mindestens eines Teils des ersten Bildes mittels der Anwendung, um einen oder mehrere erste Strichcodes innerhalb des ersten Bildes zu erfassen; Bestimmen einer Position des einen oder der mehreren ersten Strichcodes innerhalb des ersten Bildes; Erfassen eines zweiten Bildes mittels der fixierten Bildgebungsvorrichtung; Analysieren eines Bereichs von Interesse (ROI) des zweiten Bildes mittels der Anwendung, um einen oder mehrere zweite Strichcodes zu erfassen, wobei der ROI des zweiten Bildes ein Abschnitt des zweiten Bildes ist, der auf der Position des einen oder der mehreren ersten Strichcodes innerhalb des ersten Bildes basiert; und als Reaktion auf die Erfassung des einen oder der mehreren zweiten Strichcodes, Übermitteln von Daten, die dem einen oder den mehreren zweiten Strichcodes zugeordnet sind, stromaufwärts.
-
In einer weiteren Variante dieser Ausführungsform kann das Verfahren ferner umfassen: Bestimmen eines Begrenzungsrahmens für jeden Strichcode des ersten mindestens einen Strichcodes mittels der Anwendung, einschließlich des Bestimmens (i) einer niedrigsten x-Koordinate der Begrenzungsrahmen, (ii) einer höchsten x-Koordinate der Begrenzungsrahmen, (iii) einer niedrigsten y-Koordinate der Begrenzungsrahmen, und (iv) einer höchsten y-Koordinate der Begrenzungsrahmen; wobei der ROI des zweiten Bildes gebildet wird durch Einstellen: (i) einer niedrigsten x-Koordinate des ROI des zweiten Bildes auf der Grundlage der niedrigsten x-Koordinate der Begrenzungsrahmen, (ii) einer höchsten x-Koordinate des ROI des zweiten Bildes auf der Grundlage der höchsten x-Koordinate der Begrenzungsrahmen, (iii) einer niedrigsten y-Koordinate des ROI des zweiten Bildes auf der Grundlage der niedrigsten y-Koordinate der Begrenzungsrahmen, und (iv) einer höchsten y-Koordinate des ROI des zweiten Bildes auf der Grundlage der höchsten y-Koordinate der Begrenzungsrahmen.
-
In einer weiteren Variante dieser Ausführungsform kann das Verfahren ferner umfassen: Bestimmen mittels der Anwendung: (i) einer horizontalen Länge des Begrenzungsrahmens und (ii) einer vertikalen Länge der Begrenzungsrahmen; und wobei: die niedrigste x-Koordinate des ROI des zweiten Bildes ferner auf der Grundlage eines ersten vorbestimmten Prozentsatzes der horizontalen Länge bestimmt wird; die höchste x-Koordinate des ROI des zweiten Bildes ferner auf der Grundlage eines zweiten vorbestimmten Prozentsatzes der horizontalen Länge bestimmt wird; die niedrigste y-Koordinate des ROI des zweiten Bildes ferner auf der Grundlage eines ersten vorbestimmten Prozentsatzes der vertikalen Länge bestimmt wird; und die höchste y-Koordinate des ROI des zweiten Bildes ferner auf der Grundlage eines zweiten vorbestimmten Prozentsatzes der vertikalen Länge bestimmt wird.
-
Figurenliste
-
Die beigefügten Figuren, in denen gleiche Bezugszeichen identische oder funktional ähnliche Elemente in den einzelnen Ansichten bezeichnen, sind zusammen mit der nachfolgenden detaillierten Beschreibung in die Offenbarung inkorporiert und bilden einen Bestandteil der Offenbarung und dienen dazu, hierin beschriebene Ausführungsformen von Konzepten, die die beanspruchte Erfindung umfassen, weiter zu veranschaulichen und verschiedene Prinzipien und Vorteile dieser Ausführungsformen zu erklären.
- 1 ist ein Beispielsystem zur Optimierung einer oder mehrerer Bildgebungseinstellungen für einen Bildverarbeitungsauftrag gemäß den hier beschriebenen Ausführungsformen.
- 2 ist eine perspektivische Ansicht der Bildgebungsvorrichtung von 1, gemäß den hier beschriebenen Ausführungsformen.
- 3 zeigt eine beispielhafte Anwendungsschnittstelle, die die Identifizierung eines einzelnen Strichcodes beinhaltet, wobei der Bereich von Interesse (ROI) das Sichtfeld (FOV) ist.
- 4 zeigt eine Beispielschnittstelle, die die Identifizierung eines einzelnen Strichcodes und eines ROI-Satzes umfasst, gemäß den hier beschriebenen Ausführungsformen.
- 5 zeigt eine Beispielschnittstelle, die die Identifizierung mehrerer Strichcodes beinhaltet, wobei der ROI das FOV ist.
- 6 zeigt eine Beispielschnittstelle, die die Identifizierung mehrerer Strichcodes und einen ROI-Satz umfasst, gemäß den hier beschriebenen Ausführungsformen.
- 7 zeigt ein Beispiel für ein Verfahren zur Erstellung eines ROI in Bezug auf einen einzelnen Strichcode, einschließlich einer Einstellung eines ROI eines zweiten Bildes aus einem ROI, der anhand eines ersten Bildes bestimmt wurde.
- 8 zeigt ein Beispiel für ein Verfahren zur Erstellung eines ROI in Bezug auf einen einzelnen Strichcode, einschließlich eines Vergleichs von ROls, um festzustellen, ob sie innerhalb einer vorbestimmten Toleranz liegen.
- 9 zeigt ein Beispiel für ein Verfahren zur Erstellung eines ROI in Bezug auf mehrere Strichcodes.
- 10 zeigt ein Beispiel für ein Verfahren zur Erstellung eines ROI in Bezug auf mehrere Strichcodes, einschließlich eines Vergleichs von ROls, um festzustellen, ob sie innerhalb einer vorbestimmten Toleranz liegen.
-
Fachleute werden erkennen, dass Elemente in den Figuren der Einfachheit und Klarheit halber dargestellt sind und nicht notwendigerweise maßstabsgetreu gezeichnet wurden. Zum Beispiel können die Dimensionen einiger der Elemente in den Figuren relativ zu anderen Elementen übertrieben sein, um das Verständnis von Ausführungsformen der vorliegenden Erfindung zu verbessern.
-
Die Vorrichtungs- und Verfahrenskomponenten wurden, wo es angemessen ist, durch herkömmliche Symbole in den Zeichnungen dargestellt, die nur jene spezifischen Details zeigen, die zum Verständnis der Ausführungsformen der vorliegenden Erfindung relevant sind, um somit die Offenbarung nicht mit Einzelheiten zu verdecken, die für die Fachleute auf dem Gebiet, die auf die vorliegende Beschreibung zurückgreifen, ohne weiteres ersichtlich sind.
-
AUSFÜHRLICHE BESCHREIBUNG
-
1 zeigt ein Beispiel für ein Bildgebungssystem 100, das zur Lokalisierung eines Strichcodes oder eines anderen Objekts konfiguriert ist. In dem Ausführungsbeispiel von 1 umfasst das Bildgebungssystem 100 eine Benutzer-Computervorrichtung 102 und eine Bildgebungsvorrichtung 104, die über ein Netzwerk 106 mit der Benutzer-Computervorrichtung 102 kommunikativ gekoppelt ist. Im Allgemeinen ist die Benutzer-Computervorrichtung 102 so konfiguriert, dass ein Benutzer/Bediener einen Bildverarbeitungsauftrag zur Ausführung auf der Bildgebungsvorrichtung 104 erstellen kann. Nach der Erstellung kann der Benutzer/Bediener dann den Bildverarbeitungsauftrag über das Netzwerk 106 an die Bildgebungsvorrichtung 104 übertragen/hochladen, wo der Bildverarbeitungsauftrag dann interpretiert und ausgeführt wird. Die Benutzer-Computervorrichtung 102 kann eine oder mehrere Bediener-Arbeitsstationen umfassen und einen oder mehrere Prozessoren 108, einen oder mehrere Speicher 110, eine Netzwerkschnittstelle 112, eine Eingabe-/Ausgabeschnittstelle 114 und eine Bildgebungsanwendung 116 enthalten.
-
Die Bildgebungsvorrichtung 104 ist über ein Netzwerk 106 mit der Benutzer-Computervorrichtung 102 verbunden und ist so konfiguriert, dass sie von der Benutzer-Computervorrichtung 102 empfangene Bildverarbeitungsaufträge interpretiert und ausführt. Im Allgemeinen kann die Bildgebungsvorrichtung 104 eine Auftragsdatei, die ein oder mehrere Auftragsskripte enthält, von der Benutzer-Computervorrichtung 102 über das Netzwerk 106 erhalten, die den Bildverarbeitungsauftrag definieren und die Bildgebungsvorrichtung 104 so konfigurieren können, dass sie Bilder gemäß dem Bildverarbeitungsauftrag erfasst und/oder analysiert. Beispielsweise kann die Bildgebungsvorrichtung 104 einen Flash-Speicher enthalten, der zum Ermitteln, Speichern oder anderweitigen Verarbeiten von Bilddaten/Datensätzen und/oder Post-Bildgebungsdaten verwendet wird. Die Bildgebungsvorrichtung 104 kann dann einen Auslöser empfangen, erkennen und/oder anderweitig interpretieren, der die Bildgebungsvorrichtung 104 veranlasst, ein Bild des Zielobjekts gemäß der über das eine oder die mehreren Auftragsskripte festgelegten Konfiguration zu erfassen. Nach der Erfassung und/oder Analyse kann die Bildgebungsvorrichtung 104 die Bilder und alle zugehörigen Daten über das Netzwerk 106 an die Benutzer-Computervorrichtung 102 zur weiteren Analyse und/oder Speicherung übertragen. In verschiedenen Ausführungsformen kann die Bildgebungsvorrichtung 104 eine „intelligente“ Kamera sein und/oder anderweitig so konfiguriert sein, dass sie automatisch ausreichende Funktionen der Bildgebungsvorrichtung 104 ausführt, um Auftragsskripte zu erhalten, zu interpretieren und auszuführen, die Bildverarbeitungsaufträge definieren, wie beispielsweise ein oder mehrere Auftragsskripte, die in einer oder mehreren Auftragsdateien enthalten sind, die beispielsweise von der Benutzer-Computervorrichtung 102 erhalten wurden.
-
Im Großen und Ganzen kann es sich bei der Auftragsdatei um eine JSON-Darstellung/ein Datenformat des einen oder der mehreren Auftragsskripte handeln, die von der Benutzer-Computervorrichtung 102 an die Bildgebungsvorrichtung 104 übertragen werden können. Die Auftragsdatei kann außerdem von einer C++-Laufzeit-Maschine oder einer anderen geeigneten Laufzeit-Maschine geladen/gelesen werden, die auf der Bildgebungsvorrichtung 104 ausgeführt wird. Darüber hinaus kann auf der Bildgebungsvorrichtung 104 ein Server (nicht dargestellt) laufen, der so konfiguriert ist, dass er über das Netzwerk 106 Auftragsdateien von der Benutzer-Computervorrichtung 102 abhört und empfängt. Zusätzlich oder alternativ kann der Server, der zum Abhören und Empfangen von Auftragsdateien konfiguriert ist, als ein oder mehrere Cloud-basierte Server implementiert werden, wie z. B. eine Cloud-basierte Computing-Plattform. Beispielsweise kann es sich bei dem Server um eine oder mehrere Cloud-basierte Plattform(en) wie MICROSOFT AZURE, AMAZON AWS oder dergleichen handeln.
-
In jedem Fall kann die Bildgebungsvorrichtung 104 einen oder mehrere Prozessoren 118, einen oder mehrere Speicher 120, eine Netzwerkschnittstelle 122, eine Eingabe-/Ausgabeschnittstelle 124 und eine Bildgebungsbaugruppe 126 umfassen. Die Bildgebungsbaugruppe 126 kann eine Digitalkamera und/oder eine digitale Videokamera zum Erfassen oder Aufnehmen von digitalen Bildern und/oder Frames (Einzelbilder) umfassen. Jedes digitale Bild kann Pixeldaten enthalten, die von einem oder mehreren Werkzeugen analysiert werden können, die jeweils so konfiguriert sind, dass sie eine Bildanalyseaufgabe durchführen, wie hier beschrieben. Die Digitalkamera und/oder die digitale Videokamera, z. B. der Bildgebungsbaugruppe 126, kann so konfiguriert sein, dass sie digitale Bilder aufnimmt, erfasst oder anderweitig erzeugt, und zumindest in einigen Ausführungsformen kann sie solche Bilder in einem Speicher (z. B. einem oder mehreren Speichern 110, 120) einer entsprechenden Vorrichtung (z. B. Benutzer-Computervorrichtung 102, Bildgebungsvorrichtung 104) speichern.
-
Die Bildgebungsbaugruppe 126 kann beispielsweise eine fotorealistische Kamera (nicht abgebildet) zum Erfassen, Abtasten oder Scannen von 2D-Bilddaten enthalten. Die fotorealistische Kamera kann eine auf RGB (Rot, Grün, Blau) basierende Kamera zum Erfassen von 2D-Bildern mit RGB-basierten Pixeldaten sein. In verschiedenen Ausführungsformen kann die Bildgebungsbaugruppe zusätzlich eine dreidimensionale (3D) Kamera (nicht abgebildet) zum Erfassen, Abtasten oder Scannen von 3D-Bilddaten enthalten. Die 3D-Kamera kann einen Infrarot (IR)-Projektor und eine zugehörige IR-Kamera zum Erfassen, Abtasten oder Scannen von 3D-Bilddaten/Datensätzen umfassen. In einigen Ausführungsformen kann die fotorealistische Kamera der Bildgebungsbaugruppe 126 2D-Bilder und zugehörige 2D-Bilddaten zum gleichen oder einem ähnlichen Zeitpunkt wie die 3D-Kamera der Bildgebungsbaugruppe 126 erfassen, so dass der Bildgebungsvorrichtung 104 beide Sätze von 3D-Bilddaten und 2D-Bilddaten für eine bestimmte Oberfläche, ein Objekt, einen Bereich oder eine Szene zum gleichen oder einem ähnlichen Zeitpunkt zur Verfügung stehen. In verschiedenen Ausführungsformen kann die Bildgebungsbaugruppe 126 die 3D-Kamera und die fotorealistische Kamera als eine einzige Bildgebungsvorrichtung umfassen, die so konfiguriert ist, dass sie 3D-Tiefenbilddaten gleichzeitig mit 2D-Bilddaten erfasst. Folglich können die erfassten 2D-Bilder und die entsprechenden 2D-Bilddaten mit den 3D-Bildern und 3D-Bilddaten tiefenausgerichtet werden.
-
Der gesamte Bereich, den die Bildgebungsbaugruppe 104 abbilden kann, kann als Sichtfeld (FOV) bezeichnet werden. In diesem Zusammenhang wird das FOV durch die Optik der Bildgebungsbaugruppe 104 bestimmt. Typischerweise kann die Bildgebungsvorrichtung 104 Bilder der Umgebung erfassen, die innerhalb des FOV erscheinen. Bei der Analyse des Bildes können bestimmte Teile des Bildes in Bezug auf Pixelwerte und/oder bestimmte Koordinaten des Bildes identifiziert werden (z. B. horizontale und vertikale Pixelwerte, ein kartesisches Koordinatensystem mit Pixelwerten usw.).
-
Wie bereits erwähnt, können die Pixeldaten von einem oder mehreren Werkzeugen analysiert werden, die jeweils für die Durchführung einer Bildanalyseaufgabe konfiguriert sind. So kann beispielsweise ein Strichcode-Scan-/Lesewerkzeug ausgeführt werden, um einen Strichcode zu erkennen oder zu lesen. Zu diesem Zweck kann es sinnvoll sein, einen Bereich von Interesse (ROI) zu definieren, der mit einem bestimmten Bereich oder einem Zielobjekt korrespondiert, der/das von der Bildgebungsbaugruppe 126 abgebildet wird und innerhalb dessen das Werkzeug ausgeführt werden soll (z. B. um das Strichcode-Scan-/Lesewerkzeug auszuführen). In diesem Zusammenhang und wie aus der folgenden Diskussion ersichtlich wird, kann die Bestimmung eines ROI als Teil der Ausführung eines Werkzeugs (z. B. der Ausführung des Strichcode-Scan-/Lesewerkzeugs) erfolgen. Zusätzlich oder alternativ kann die Bestimmung eines ROI speziell mit einem ROI-Spezifikations-/Bestimmungswerkzeug erfolgen.
-
Zur weiteren Erläuterung des Auftrags und der entsprechenden Werkzeuge des Auftrags kann die Bildgebungsanwendung 116 dem Benutzer eine Reihe von Menüs zum Erstellen eines neuen Auftrags oder zum Bearbeiten eines aktuellen Auftrags präsentieren. Bei der Erstellung eines neuen Auftrags kann der Benutzer aus einer Vielzahl von Werkzeugen auswählen, die einen bestimmten Auftrag bilden. Zu diesen Werkzeugen gehören unter anderem (i) ein Strichcode-Scan-/Lesewerkzeug, (ii) ein Mustervergleichswerkzeug, (iii) ein Kantenerkennungswerkzeug, (iv) ein semantisches Segmentierungswerkzeug, (v) ein Objekterkennungswerkzeug, (vi) ein Objektverfolgungswerkzeug, (vii) ein Werkzeug zur Spezifikation/Bestimmung eines Bereichs von Interesse usw. Wenn beispielsweise ein erster Produkttyp auf einer Montagelinie läuft, kann ein Benutzer einen ersten Auftrag konfigurieren, einschließlich der Auswahl und Konfiguration bestimmter Werkzeuge, damit dieser ausgeführt wird (z. B. kontinuierliche oder iterative Erfassung von Bildern), während der erste Produkttyp auf der Montagelinie läuft. Wenn die Montagelinie dann zu einem zweiten Produkttyp wechselt, kann der Benutzer den ersten Auftrag beenden und einen zweiten Auftrag starten, indem er den zweiten Auftrag konfiguriert, einschließlich der Auswahl und Konfiguration verschiedener Werkzeuge, die für die Analyse des zweiten Produkttyps hilfreicher sind.
-
Die Bildgebungsvorrichtung 104 kann auch die 2D-Bilddaten/Datensätze und/oder 3D-Bilddatensätze für die Verwendung durch andere Vorrichtungen (z. B. die Benutzer-Computervorrichtung 102, einen externen Server) verarbeiten. Beispielsweise können der eine oder die mehreren Prozessoren 118 die von der Bildgebungsbaugruppe 126 erfassten, gescannten oder abgetasteten Bilddaten oder Datensätze verarbeiten. Die Verarbeitung der Bilddaten kann Post-Bildgebungsdaten erzeugen, die Metadaten, vereinfachte Daten, normalisierte Daten, Ergebnisdaten, Statusdaten oder Alarmdaten enthalten können, die aus den ursprünglichen gescannten oder erfassten Bilddaten ermittelt wurden. Die Bilddaten und/oder die Post-Bildgebungsdaten können zur Ansicht, Bearbeitung und/oder anderweitigen Interaktion an die Benutzer-Computervorrichtung 102 gesendet werden, die die Bildgebungsanwendung 116 ausführt. In anderen Ausführungsformen können die Bilddaten und/oder die Post-Bildgebungsdaten zur Speicherung oder zur weiteren Bearbeitung an einen Server gesendet werden. Wie hierin beschrieben, können die Benutzer-Computervorrichtung 102, die Bildgebungsvorrichtung 104 und/oder ein externer Server oder eine andere zentralisierte Prozessoreinheit und/oder ein Speicher solche Daten speichern und auch die Bilddaten und/oder die Post-Bildgebungsdaten an eine andere Anwendung senden, die auf einer Benutzervorrichtung implementiert ist, wie z. B. ein Mobilgerät, ein Tablet, ein handgehaltenes Gerät oder ein Desktop-Gerät.
-
Jeder des einen oder der mehreren Speicher 110, 120 kann eine oder mehrere Formen von flüchtigem und/oder nichtflüchtigem, festem und/oder entfernbarem Speicher umfassen, wie Festwertspeicher (ROM), elektronischer programmierbarer Festwertspeicher (EPROM), Direktzugriffsspeicher (RAM), löschbarer elektronischer programmierbarer Festwertspeicher (EEPROM) und/oder andere Festplatten, Flash-Speicher, MicroSD-Karten und andere. Im Allgemeinen kann ein Computerprogramm oder ein computergestütztes Produkt, eine Anwendung oder ein Code (z. B. die Bildgebungsanwendung 116 oder andere hierin beschriebene Computeranweisungen) auf einem computerverwendbaren Speichermedium oder einem zugreifbaren, nicht transitorischen computerlesbaren Medium (z. B. Standard-Direktzugriffsspeicher (RAM), eine optische Disk, ein USB (Universal Serial Bus) -Laufwerk oder ähnliches) gespeichert werden, in dem ein solcher computerlesbarer Programmcode oder Computeranweisungen verkörpert sind, wobei der computerlesbare Programmcode oder die Computeranweisungen auf dem einen oder den mehreren Prozessoren 108, 118 installiert oder anderweitig angepasst werden können, um von diesen ausgeführt zu werden (z. B. in Verbindung mit dem jeweiligen Betriebssystem in dem einen oder den mehreren Speichern 110, 120) installiert oder anderweitig angepasst werden können, um die maschinenlesbaren Anweisungen, Verfahren, Prozesse, Elemente oder Beschränkungen zu erleichtern, zu implementieren oder auszuführen, wie sie in den verschiedenen Flussdiagrammen, Darstellungen, Diagrammen, Figuren und/oder anderen Offenbarungen hierin illustriert, dargestellt oder beschrieben werden. In dieser Hinsicht kann der Programmcode in jeder gewünschten Programmiersprache implementiert werden und kann als Maschinencode, Assemblercode, Bytecode, interpretierbarer Quellcode oder dergleichen implementiert werden (z. B. über Golang, Python, C, C++, C#, Objective-C, Java, Scala, ActionScript, JavaScript, HTML, CSS, XML usw.).
-
In dem einen oder den mehreren Speichern 110, 120 kann ein Betriebssystem (OS) (z. B. Microsoft Windows, Linux, Unix usw.) gespeichert sein, das in der Lage ist, die hier beschriebenen Funktionen, Anwendungen, Verfahren oder andere Software zu unterstützen. In dem einen oder den mehreren Speichern 110 kann auch die Bildgebungsanwendung 116 gespeichert sein, die so konfiguriert sein kann, dass sie die Konstruktion von Bildverarbeitungsaufträgen ermöglicht, wie hierin weiter beschrieben. Zusätzlich oder alternativ kann die Bildverarbeitungsanwendung 116 auch in dem einen oder den mehreren Speichern 120 der Bildgebungsvorrichtung 104 und/oder in einer externen Datenbank (nicht dargestellt) gespeichert sein, auf die über das Netzwerk 106 zugegriffen werden kann oder die anderweitig kommunikativ mit der Benutzer-Computervorrichtung 102 gekoppelt ist. Der eine oder die mehreren Speicher 110, 120 können auch maschinenlesbare Anweisungen speichern, einschließlich einer oder mehrerer Anwendungen, einer oder mehrerer Softwarekomponenten und/oder einer oder mehrerer Anwendungsprogrammierschnittstellen (APIs), die implementiert werden können, um die hierin beschriebenen Merkmale, Funktionen oder andere Offenbarungen zu erleichtern oder auszuführen, wie etwa Verfahren, Prozesse, Elemente oder Beschränkungen, wie sie in den verschiedenen Flussdiagrammen, Illustrationen, Diagrammen, Figuren und/oder anderen Offenbarungen hierin illustriert, dargestellt oder beschrieben sind. Zum Beispiel können zumindest einige der Anwendungen, Softwarekomponenten oder APIs Teil einer auf maschinellem Sehen basierenden Bildgebungsanwendung sein, wie die Bildgebungsanwendung 116, wobei jede so konfiguriert sein kann, dass sie ihre verschiedenen hierin diskutierten Funktionalitäten erleichtert. Es sollte gewürdigt werden, dass eine oder mehrere andere Anwendungen denkbar sind, die von dem einen oder mehreren Prozessoren 108, 118 ausgeführt werden.
-
Der eine oder die mehreren Prozessoren 108, 118 können mit dem einen oder den mehreren Speichern 110, 120 über einen Computerbus verbunden sein, der für die Übertragung von elektronischen Daten, Datenpaketen oder anderen elektronischen Signalen zu und von dem einen oder den mehreren Prozessoren 108, 118 und dem einen oder den mehreren Speichern 110, 120 verantwortlich ist, um die maschinenlesbaren Anweisungen, Verfahren, Prozesse, Elemente oder Beschränkungen zu implementieren oder auszuführen, wie sie in den verschiedenen Flussdiagrammen, Illustrationen, Diagrammen, Figuren und/oder anderen Offenbarungen hierin illustriert, dargestellt oder beschrieben sind.
-
Der eine oder die mehreren Prozessoren 108, 118 können mit dem einen oder den mehreren Speichern 110, 120 über den Computerbus verbunden sein, um das Betriebssystem (OS) auszuführen. Der eine oder die mehreren Prozessoren 108, 118 können auch mit dem einen oder den mehreren Speichern 110, 120 über den Computerbus verbunden sein, um Daten zu erstellen, zu lesen, zu aktualisieren, zu löschen oder anderweitig auf die Daten zuzugreifen oder mit ihnen zu interagieren, die in dem einen oder den mehreren Speichern 110, 120 und/oder externen Datenbanken (z. B. einer relationalen Datenbank, wie Oracle, DB2, MySQL oder einer NoSQL-basierten Datenbank, wie MongoDB) gespeichert sind. Die in dem einen oder den mehreren Speichern 110, 120 und/oder einer externen Datenbank gespeicherten Daten können alle oder einen Teil der hierin beschriebenen Daten oder Informationen enthalten, einschließlich beispielsweise Bilder von Bildverarbeitungsaufträgen (z. B. Bilder, die von der Bildgebungsvorrichtung 104 als Reaktion auf die Ausführung eines Auftragsskripts erfasst wurden) und/oder andere geeignete Informationen.
-
Die Netzwerkschnittstellen 112, 122 können so konfiguriert sein, dass sie Daten über einen oder mehrere externe/Netzwerkanschlüsse mit einem oder mehreren Netzwerken oder lokalen Endgeräten, wie dem hier beschriebenen Netzwerk 106, kommunizieren (z. B. senden und empfangen). In einigen Ausführungsformen können die Netzwerkschnittstellen 112, 122 eine Client-Server-Plattformtechnologie wie ASP.NET, Java J2EE, Ruby on Rails, Node.js, einen Webservice oder eine Online-API umfassen, die auf elektronische Anfragen reagieren und diese beantworten. Die Netzwerkschnittstellen 112, 122 können die Client-Server-Plattformtechnologie implementieren, die über den Computerbus mit dem einen oder den mehreren Speichern 110, 120 (einschließlich der darin gespeicherten Anwendungen, Komponenten, APIs, Daten usw.) interagieren kann, um die maschinenlesbaren Anweisungen, Verfahren, Prozesse, Elemente oder Beschränkungen zu implementieren oder durchzuführen, wie sie in den verschiedenen Flussdiagrammen, Darstellungen, Diagrammen, Figuren und/oder anderen Offenbarungen hierin illustriert, dargestellt oder beschrieben sind.
-
Gemäß einigen Ausführungsformen können die Netzwerkschnittstellen 112, 122 eine oder mehrere Sende-/Empfangsvorrichtungen (z. B. WWAN-, WLAN- und/oder WPAN-Sende-/Empfangsvorrichtungen) umfassen oder mit diesen interagieren, die gemäß IEEE-Standards, 3GPP-Standards oder anderen Standards funktionieren und für den Empfang und die Übertragung von Daten über externe/Netzwerkanschlüsse verwendet werden können, die mit dem Netzwerk 106 verbunden sind. In einigen Ausführungsformen kann das Netzwerk 106 ein privates Netzwerk oder ein lokales Netzwerk (LAN) umfassen. Zusätzlich oder alternativ kann das Netzwerk 106 ein öffentliches Netzwerk wie das Internet umfassen. In einigen Ausführungsformen kann das Netzwerk 106 Router, drahtlose Schalter oder andere derartige drahtlose Verbindungspunkte umfassen, die mit der Benutzer-Computervorrichtung 102 und der Bildgebungsvorrichtung 104 über drahtlose Kommunikation auf der Grundlage eines oder mehrerer verschiedener drahtloser Standards kommunizieren, einschließlich - als nicht einschränkendes Beispiel - IEEE 802.11a/b/c/g (WIFI), dem BLUETOOTH-Standard oder ähnlichem.
-
Die Eingabe-/Ausgabeschnittstellen 114, 124 können Bedienerschnittstellen enthalten oder implementieren, die so konfiguriert sind, dass sie einem Administrator oder Bediener Informationen präsentieren und/oder Eingaben von dem Administrator oder Bediener empfangen. Eine Bedienerschnittstelle kann einen Bildschirm bereitstellen (z. B. über die Benutzer-Computervorrichtung 102 und/oder die Bildgebungsvorrichtung 104), den ein Benutzer/Bediener verwenden kann, um beliebige Bilder, Grafiken, Texte, Daten, Merkmale, Pixel und/oder andere geeignete Visualisierungen oder Informationen zu visualisieren. Beispielsweise kann die Benutzer-Computervorrichtung 102 und/oder die Bildgebungsvorrichtung 104 zumindest teilweise eine grafische Benutzeroberfläche (GUI) zur Anzeige von Bildern, Grafiken, Text, Daten, Merkmalen, Pixeln und/oder anderen geeigneten Visualisierungen oder Informationen auf dem Bildschirm umfassen, implementieren, darauf zugreifen, sie wiedergeben oder anderweitig zugänglich machen. Die Eingabe-/Ausgabeschnittstellen 114, 124 können auch Eingabe-/Ausgabekomponenten (z. B. Anschlüsse, kapazitive oder resistive berührungsempfindliche Eingabefelder, Tasten, Knöpfe, Lichter, LEDs) umfassen, auf die direkt/indirekt über die Benutzer-Computervorrichtung 102 und/oder die Bildgebungsvorrichtung 104 zugegriffen werden kann oder die an diesen angebracht sind. Gemäß einigen Ausführungsformen kann ein Administrator oder Benutzer/Bediener auf die Benutzer-Computervorrichtung 102 und/oder die Bildgebungsvorrichtung 104 zugreifen, um Aufträge zu erstellen, Bilder oder andere Informationen zu prüfen, Änderungen vorzunehmen, Antworten und/oder Auswahlen einzugeben und/oder andere Funktionen auszuführen.
-
Wie oben beschrieben, kann die Benutzer-Computervorrichtung 102 in einigen Ausführungsformen die hier beschriebenen Funktionen als Teil eines „Cloud“-Netzwerks ausführen oder anderweitig mit anderen Hardware- oder Softwarekomponenten innerhalb der Cloud kommunizieren, um hier beschriebene Daten oder Informationen zu senden, abzurufen oder anderweitig zu analysieren.
-
2 ist eine perspektivische Ansicht der Bildgebungsvorrichtung 104 aus 1, gemäß den hier beschriebenen Ausführungsformen. Die Bildgebungsvorrichtung 104 umfasst ein Gehäuse 202, eine Bildgebungsöffnung 204, ein Benutzerschnittstellenetikett 206, einen Kuppelschalter/eine Taste 208, eine oder mehrere Leuchtdioden (LEDs) 210 und einen oder mehrere Befestigungspunkte 212. Wie bereits erwähnt, kann die Bildgebungsvorrichtung 104 Auftragsdateien von einer Benutzer-Computervorrichtung (z. B. der Benutzer-Computervorrichtung 102) erhalten, die die Bildgebungsvorrichtung 104 anschließend interpretiert und ausführt. Die in der Auftragsdatei enthaltenen Anweisungen können Vorrichtungskonfigurationseinstellungen (hier auch als „Bildgebungseinstellungen“ bezeichnet) enthalten, die dazu dienen, die Konfiguration der Bildgebungsvorrichtung 104 vor der Erfassung von Bildern eines Zielobjekts anzupassen.
-
Beispielsweise können die Vorrichtungskonfigurationseinstellungen Anweisungen zur Anpassung einer oder mehrerer Einstellungen in Bezug auf die Bildgebungsöffnung 204 enthalten. Es sei zum Beispiel angenommen, dass zumindest ein Teil der beabsichtigten Analyse, die einem Bildverarbeitungsauftrag entspricht, erfordert, dass die Bildgebungsvorrichtung 104 die Helligkeit jedes erfassten Bildes maximiert. Um dieser Anforderung gerecht zu werden, kann die Auftragsdatei Vorrichtungskonfigurationseinstellungen zur Vergrößerung der Öffnung der Bildgebungsöffnung 204 enthalten. Die Bildgebungsvorrichtung 104 kann diese Anweisungen (z. B. über einen oder mehrere Prozessoren 118) interpretieren und die Öffnungsgröße der Bildgebungsöffnung 204 entsprechend vergrößern. Auf diese Weise kann die Bildgebungsvorrichtung 104 so konfiguriert werden, dass sie ihre eigene Konfiguration automatisch anpasst, um einer bestimmten Bildverarbeitungsaufgabe optimal zu entsprechen. Darüber hinaus kann die Bildgebungsvorrichtung 104 beispielsweise einen oder mehrere Bandpassfilter, einen oder mehrere Polarisatoren, einen oder mehrere DPM-Diffusoren, eine oder mehrere C-Mount-Linsen und/oder eine oder mehrere C-Mount-Flüssigkeitslinsen über der Bildgebungsöffnung 204 enthalten oder anderweitig auf die empfangene Beleuchtung einwirken oder anpassbar sein.
-
Das Benutzerschnittstellenetikett 206 kann den Kuppelschalter/-knopf 208 und eine oder mehrere LEDs 210 enthalten und dadurch eine Vielzahl von interaktiven und/oder anzeigenden Funktionen ermöglichen. Im Allgemeinen kann das Benutzerschnittstellenetikett 206 es einem Benutzer ermöglichen, die Bildgebungsvorrichtung 104 auszulösen und/oder einzustellen (z. B. über den Kuppelschalter/-knopf 208) und zu erkennen, wenn eine oder mehrere Funktionen, Fehler und/oder andere Aktionen in Bezug auf die Bildgebungsvorrichtung 104 ausgeführt wurden oder stattgefunden haben (z. B. über die eine oder mehrere LEDs 210). Beispielsweise kann die Auslösefunktion eines Kuppelschalters/einer Kuppeltaste (z. B. Kuppel/Schalttaste 208) es einem Benutzer ermöglichen, ein Bild mit der Bildgebungsvorrichtung 104 zu erfassen und/oder einen Auslösekonfigurationsbildschirm einer Benutzeranwendung (z. B. Bildgebungsanwendung 116) anzuzeigen. Der Auslösekonfigurationsbildschirm kann es dem Benutzer ermöglichen, einen oder mehrere Auslöser für die Bildgebungsvorrichtung 104 zu konfigurieren, die im Speicher (z. B. in einem oder mehreren Speichern 110, 120) zur Verwendung in später entwickelten Bildverarbeitungsaufträgen, wie hierin beschrieben, gespeichert werden können.
-
Als weiteres Beispiel kann die Abstimmungsfunktion eines Kuppelschalters/einer Kuppeltaste (z. B. Kuppel/Schaltertaste 208) es einem Benutzer ermöglichen, die Konfiguration der Bildgebungsvorrichtung 104 automatisch und/oder manuell gemäß einer bevorzugten/vorbestimmten Konfiguration einzustellen und/oder einen Bildgebungskonfigurationsbildschirm einer Benutzeranwendung (z. B. Bildgebungsanwendung 116) anzuzeigen. Der Bildgebungskonfigurationsbildschirm kann es dem Benutzer ermöglichen, eine oder mehrere Konfigurationen der Bildgebungsvorrichtung 104 (z. B. Öffnungsgröße, Belichtungslänge usw.) zu konfigurieren, die im Speicher (z. B. in einem oder mehreren Speichern 110, 120) zur Verwendung in später entwickelten Bildverarbeitungsaufträgen, wie hierin beschrieben, gespeichert werden können.
-
Um dieses Beispiel zu vertiefen und wie hier weiter ausgeführt, kann ein Benutzer den Bildgebungskonfigurationsbildschirm (oder allgemeiner die Bildgebungsanwendung 116, 156) verwenden, um zwei oder mehr Konfigurationen von Bildgebungseinstellungen für die Bildgebungsvorrichtung 104 festzulegen. Der Benutzer kann dann diese zwei oder mehr Konfigurationen der Bildgebungseinstellungen als Teil eines Bildverarbeitungsauftrags speichern, der dann in einer Auftragsdatei, die ein oder mehrere Auftragsskripte enthält, an die Bildgebungsvorrichtung 104 übertragen wird. Das eine oder die mehreren Auftragsskripte können dann die Prozessoren der Bildgebungsvorrichtung 104 (z. B. einen oder mehrere Prozessoren 118) anweisen, die Bildgebungseinstellungen der Bildgebungsvorrichtung automatisch und nacheinander gemäß einer oder mehreren der zwei oder mehreren Konfigurationen der Bildgebungseinstellungen nach jeder aufeinanderfolgenden Bilderfassung anzupassen.
-
Der/die Montagepunkt(e) 212 kann/können es einem Benutzer ermöglichen, die Bildgebungsvorrichtung 104 mit einer Montagevorrichtung (z. B. einem Bildgebungsstativ, einer Kamerahalterung usw.), einer strukturellen Oberfläche (z. B. einer Lagerhauswand, einer Lagerhausdecke, einem strukturellen Stützbalken usw.), anderen Zubehörelementen und/oder anderen geeigneten Verbindungsvorrichtungen, Strukturen oder Oberflächen zu verbinden und/oder lösbar zu befestigen. Beispielsweise kann die Bildgebungsvorrichtung 104 optimal auf einer Montagevorrichtung in einem Verteilerzentrum, einer Produktionsanlage, einem Lager und/oder einer anderen Einrichtung platziert werden, um die Qualität/Konsistenz von Produkten, Paketen und/oder anderen Gegenständen abzubilden und zu überwachen, während sie das Sichtfeld der Bildgebungsvorrichtung 104 passieren. Darüber hinaus können die Befestigungspunkte 212 es dem Benutzer ermöglichen, die Bildgebungsvorrichtung 104 mit einer Vielzahl von Zubehörteilen zu verbinden, einschließlich, aber nicht beschränkt auf eine oder mehrere externe Beleuchtungsvorrichtungen, eine oder mehrere Befestigungsvorrichtungen/Halterungen und dergleichen.
-
Darüber hinaus kann die Bildgebungsvorrichtung 104 mehrere Hardwarekomponenten im Gehäuse 202 enthalten, die eine Verbindung zu einem Computernetzwerk (z. B. Netzwerk 106) ermöglichen. Zum Beispiel kann die Bildgebungsvorrichtung 104 eine Netzwerkschnittstelle (z. B. Netzwerkschnittstelle 122) enthalten, die es der Bildgebungsvorrichtung 104 ermöglicht, sich mit einem Netzwerk zu verbinden, wie z. B. eine Gigabit-Ethernet-Verbindung und/oder eine Dual-Gigabit-Ethernet-Verbindung. Darüber hinaus kann die Bildgebungsvorrichtung 104 Sendeempfänger und/oder andere Kommunikationskomponenten als Teil der Netzwerkschnittstelle enthalten, um mit anderen Vorrichtungen (z. B. der Benutzer-Computervorrichtung 102) zu kommunizieren, z. B. über Ethernet/IP, PROFINET, Modbus TCP, CC-Link, USB 3.0, RS-232 und/oder jedes andere geeignete Kommunikationsprotokoll oder Kombinationen davon.
-
Eine Anwendung der oben beschriebenen Technologien besteht darin, einen oder mehrere Strichcodes in einem Bild zu identifizieren. Derzeitige Verfahren zur Identifizierung von Strichcodes in Bildern umfassen das Durchsuchen des gesamten Sichtfeldes (FOV) eines Bildes. Dies ist jedoch ineffizient, da sich der/die Strichcode(s) möglicherweise nur in einem Abschnitt des Bildes befinden. Daher wird in einigen Ausführungsformen ein ROI festgelegt, der nur einen Abschnitt des FOV ausmacht, und nur der ROI wird durchsucht.
-
Der hier verwendete Begriff „Bild“ kann sich auf ein einzelnes Bild oder auf ein Bild eines Videobildes beziehen. Daher gelten die hier beschriebenen Techniken gleichermaßen für Frames und Videos.
-
In den 3-6 sind Beispiel-Anwendungsschnittstellen gemäß den hier beschriebenen Ausführungsformen dargestellt. Diese Beispiel-Anwendungsschnittstellen 300, 400, 500, 600 können Schnittstellen einer Bildgebungsanwendung (z. B. Bildgebungsanwendung 116) darstellen, auf die ein Benutzer über eine Benutzer-Computervorrichtung (z. B. Benutzer-Computervorrichtung 102) zugreifen kann.
-
In 3 zeigt die Beispiel-Anwendungsschnittstelle 300 die Identifizierung eines einzelnen Strichcodes 310, wobei der Bereich von Interesse (ROI) 330 das Sichtfeld (FOV) 320 (z. B. das gesamte Bild) ist. In dieser Hinsicht ist in einigen Ausführungsformen der Standard-ROI das FOV. In diesem Beispiel hat die Bildgebungsanwendung 116 außerdem einen Begrenzungsrahmen 340 des Strichcodes 310 bestimmt.
-
In 4 zeigt die Beispiel-Anwendungsschnittstelle 400 ebenfalls die Identifizierung eines einzelnen Strichcodes 310. Im Gegensatz zum Beispiel in 3 wurde der ROI 330 jedoch auf einen kleineren Abschnitt des Bildes festgelegt (z. B. nicht auf das gesamte FOV 320), wodurch Zeit und Verarbeitungsleistung bei der Suche im Bild eingespart werden.
-
In 5 zeigt die Beispiel-Anwendungsschnittstelle 500 die Identifizierung des Strichcodes 310 sowie die Identifizierung weiterer Strichcodes 510. Im Beispiel von 5 wurde der ROI 330 auf das FOV 320 (z. B. das gesamte Bild) festgelegt, und um die Strichcodes 510 wurden Begrenzungsrahmen 540 gezeichnet.
-
In 6 zeigt die Beispiel-Anwendungsschnittstelle 600 auch die Identifizierung des Strichcodes 310 sowie die Identifizierung weiterer Strichcodes 510. Im Gegensatz zum Beispiel von 5 wurde der ROI 330 jedoch auf einen kleineren Abschnitt des Bildes festgelegt (z. B. nicht auf das gesamte FOV 320), wodurch Zeit und Verarbeitungsleistung beim Durchsuchen des Bildes eingespart werden. Das Beispiel in 6 zeigt auch Begrenzungsrahmen 540, die um die Strichcodes 510 gezogen wurden.
-
7 zeigt ein Beispiel für ein Verfahren 700 zur Erstellung eines ROI in Bezug auf einen einzelnen Strichcode, einschließlich der Bestimmung von ROls in einem ersten Bild und einem zweiten Bild. Bei den Bildern kann es sich um aufeinanderfolgende Bilder handeln, oder es können Zwischenbilder zwischen dem ersten Bild und dem zweiten Bild vorhanden sein. Beispielsweise können das erste und das zweite Bild in einem Videostrom enthalten sein und durch eine vordefinierte Zeitspanne getrennt sein. Es sei verstanden, dass ein Benutzer (z. B. über die Benutzer-Computervorrichtung 102) auswählen kann, ob das System einen einzelnen Strichcode oder mehrere Strichcodes identifizieren soll.
-
In Block 710 empfängt die Bildgebungsanwendung 116 ein erstes Bild von der Bildgebungsvorrichtung 104. Bei dem Bild kann es sich um ein einzelnes Bild oder um einen Teil eines Videostroms handeln, der an die Bildgebungsanwendung 116 gesendet wird.
-
In Block 715 legt die Bildgebungsanwendung 116 ein erstes ROI fest. In einigen Ausführungsformen wird der erste ROI auf ein Standard-ROI gesetzt, z. B. auf das FOV des Bildes (z. B. das gesamte Bild). Dies kann standardmäßig von der Bildgebungsanwendung 112 eingestellt werden. In anderen Ausführungsformen ist der erste ROI nur ein Teil des FOV. Beispielsweise kann ein Benutzer (z. B. über die Benutzer-Computervorrichtung 102) einen ersten ROI manuell festlegen, indem er eine bestimmte Form zeichnet oder eine Reihe von Parametern angibt, wie z. B. die Form des ROI (z. B. ein Rechteck, ein Dreieck, ein Fünfeck oder ein Polygon mit n Seiten usw.) oder die Größe des ROI (z. B. ROI ist 50 % des FOV). In wieder anderen Ausführungsformen kann der erste ROI automatisch aus früheren Daten generiert werden (z. B. durch einen Algorithmus für maschinelles Lernen, der anhand früherer Bilder trainiert wurde).
-
In Block 720 bestimmt die Bildgebungsanwendung 116 das Vorhandensein eines ersten Strichcodes (z. B. des Strichcodes 310 aus dem Beispiel in 3) und die Position des ersten Strichcodes innerhalb des Bildes. Die Bestimmung des Vorhandenseins des Strichcodes kann durch jede geeignete Technik zur Identifizierung des Strichcodes innerhalb des ROI erfolgen. In einigen Ausführungsformen wird das Vorhandensein des Strichcodes dadurch festgestellt, dass die Bildgebungsanwendung 116 in der Lage ist, den Strichcode zu dekodieren. Es ist jedoch anzumerken, dass der Strichcode nicht unbedingt dekodiert werden muss, damit sein Vorhandensein erkannt werden kann. Außerdem können die Ausdrücke „Bestimmen des Vorhandenseins von“ und „Erkennen des Vorhandenseins von“ hier synonym verwendet werden. Darüber hinaus bezieht sich der Begriff „Strichcode“ hier auch auf effektive Äquivalente eines Strichcodes, wie z. B. einen Quick-Response-Code (QR-Code) oder andere Informationsmarker.
-
In Block 725 bestimmt die Bildgebungsanwendung 116 einen Begrenzungsrahmen des ersten Strichcodes (z. B. den Begrenzungsrahmen 340 des Beispiels in 3). In einigen Ausführungsformen umfasst der Begrenzungsrahmen genau den Strichcode. In anderen Ausführungsformen umfasst der Begrenzungsrahmen den Strichcode sowie einen kleinen Bereich außerhalb des Strichcodes. Beispielsweise kann der Begrenzungsrahmen den Strichcode sowie einen Bereich umfassen, der sich um 10 % der Länge über jede der Seiten des Strichcodes hinaus erstreckt.
-
Der Begrenzungsrahmen kann durch ein beliebiges geeignetes Koordinatensystem definiert werden, wie z. B. das oben beschriebene Koordinatensystem in Bezug auf das FOV (z. B. ein kartesisches Koordinatensystem, ein polares Koordinatensystem, ein zylindrisches Koordinatensystem, ein sphärisches Koordinatensystem usw.). In diesem Zusammenhang umfasst Block 725 ferner die Bestimmung der Koordinaten des Begrenzungsrahmens.
-
In Block 730 bildet die Bildgebungsanwendung 116 einen zweiten ROI auf der Grundlage der ermittelten Position des ersten Strichcodes. Beispielsweise kann die Bildgebungsanwendung 116 den zweiten ROI auf der Grundlage der Koordinaten des Begrenzungsrahmens bestimmen. In einem kartesischen Koordinatensystem kann der zweite ROI beispielsweise gebildet werden durch Einstellen: (i) einer niedrigsten x-Koordinate des zweiten ROI auf der Grundlage der niedrigsten x-Koordinate des Begrenzungsrahmens, (ii) einer höchsten x-Koordinate des zweiten ROI auf der Grundlage der höchsten x-Koordinate des Begrenzungsrahmens, (iii) einer niedrigsten y-Koordinate des zweiten ROI auf der Grundlage der niedrigsten y-Koordinate des Begrenzungsrahmens, und (iv) einer höchsten y-Koordinate des zweiten ROI auf der Grundlage der höchsten y-Koordinate des Begrenzungsrahmens. In einem Beispiel hierfür kann jede der niedrigsten/höchsten x- und y-Koordinaten des zweiten ROI auf der Grundlage vorbestimmter Prozentsätze der Längen des Begrenzungsrahmens festgelegt werden. Beispielsweise kann der zweite ROI gebildet werden, indem eine niedrigste x-Koordinate der zweiten ROI so eingestellt wird, dass sie von der niedrigsten x-Koordinate des Begrenzungsrahmens um 10 % einer horizontalen Länge des Begrenzungsrahmens entfernt ist. Wenn beispielsweise die horizontale Länge des Begrenzungsrahmens 40 beträgt, kann die niedrigste x-Koordinate des zweiten ROI um vier niedriger sein als die niedrigste x-Koordinate des Begrenzungsrahmens (z. B. beträgt die niedrigste x-Koordinate des Begrenzungsrahmens zehn, so dass die niedrigste x-Koordinate des zweiten ROI auf sechs gesetzt wird). In diesem Beispiel können die höchste x-Koordinate sowie die niedrigsten/höchsten y-Koordinaten analog zur niedrigsten x-Koordinate festgelegt werden.
-
In einigen Ausführungsformen ist der zweite ROI jedoch nicht rechteckig, sondern kann eine beliebige Form haben. Zum Beispiel kann der zweite ROI ein Kreis, ein Dreieck, ein Fünfeck oder ein beliebiges n-seitiges Polygon oder Objekt sein. Beispielsweise kann ein Benutzer der Computervorrichtung 102 die Form angeben, die die Bildgebungsanwendung 116 für den zweiten ROI vorgibt.
-
In Block 735 empfängt die Bildgebungsanwendung 116 ein zweites Bild (z. B. von der Bildgebungsvorrichtung 104). Bei dem Bild kann es sich um ein einzelnes Bild oder um einen Teil eines Videostroms handeln, der an die Bildgebungsanwendung 116 gesendet wird. In diesem Zusammenhang kann das zweite Bild Teil desselben Videostroms wie das erste Bild sein. Beispielsweise kann die Bildgebungsvorrichtung 104 einen Videostrom an die Bildgebungsanwendung 116 senden, und das zweite Bild kann dem Videostrom in einem vorbestimmten Zeitintervall (z. B. 10 Sekunden, 1 Minute usw.) nach dem ersten Bild entnommen werden.
-
In Block 740 setzt die Bildgebungsanwendung 116 den ROI des zweiten Bildes auf den zweiten ROI, der in Block 730 gebildet wurde. In einigen Beispielen ist es wahrscheinlich, dass sich in diesem ROI ein Strichcode befindet. Wenn beispielsweise ein Stapel von Mitarbeiterausweisen gescannt wird, indem jeder Ausweis an einer bestimmten Stelle platziert wird, damit er von der Bildgebungsvorrichtung 104 erfasst werden kann, ist es wahrscheinlich, dass sich der Strichcode in jedem Bild an einer ähnlichen Stelle befindet.
-
In Block 745 sucht die Bildgebungsanwendung 116 in dem ROI nach einem Strichcode und bestimmt in Block 750, ob der Strichcode gefunden wurde. Ist dies der Fall, analysiert die Bildgebungsanwendung 116 den Strichcode (z. B. durch Dekodierung des Strichcodes) in Block 755. Von hier aus kann die Bildgebungsanwendung 116 fortfahren, indem sie die dekodierten Daten stromaufwärts überträgt und den Auftrag weiter ausführt usw. Wenn die Antwort in Block 750 negativ ist, setzt die Bildgebungsanwendung den ROI auf einen Standard-ROI. In einigen Ausführungsformen ist der Standard-ROI das FOV des zweiten Bildes (z. B. wird der ROI so eingestellt, dass er das gesamte Bild ist, wie im Beispiel von 3) in Block 760. Alternativ dazu kann die Bildgebungsanwendung 116 den ROI auch erweitern, anstatt den ROI auf den Standard-ROI festzulegen. Wenn der ROI beispielsweise rechteckig ist, kann die Bildgebungsanwendung 116 jede der Seiten um einen vorgegebenen Prozentsatz (z. B. 10 %) vergrößern.
-
Nach Block 760 kehrt das Beispielverfahren zu Block 745 zurück, um den vergrößerten ROI nach einem Strichcode zu durchsuchen (z. B. im selben Bild oder einem nachfolgenden Bild).
-
8 zeigt ein Beispielverfahren 800 zur Erstellung eines ROI in Bezug auf einen einzelnen Strichcode, einschließlich des Vergleichs von ROls, um festzustellen, ob sie innerhalb einer vorgegebenen Toleranz liegen (z. B. durch Vergleich der Koordinaten der Seiten der ROIs), wie weiter unten beschrieben wird. Die Blöcke 710-730 werden in ähnlicher Weise wie in 7 ausgeführt.
-
In Block 805 empfängt die Bildgebungsanwendung 116 ein nachfolgendes Bild. In Block 810 legt die Bildgebungsanwendung 116 den ROI des nachfolgenden Bildes als Standard-ROI fest. In einigen Ausführungsformen ist der Standard-ROI das FOV des nachfolgenden Bildes (z. B. das gesamte Bild).
-
In Block 815 bestimmt die Bildgebungsanwendung 116 das Vorhandensein eines Strichcodes und die Position des Strichcodes innerhalb des ROI. Die Bestimmung kann durch jede geeignete Technik zur Identifizierung des Strichcodes und seiner Position innerhalb des ROI erfolgen. In Block 820 bestimmt die Bildgebungsanwendung 116 einen Begrenzungsrahmen des Strichcodes innerhalb des ROI des nachfolgenden Bildes. Wie bei dem in Block 725 bestimmten Begrenzungsrahmen kann der Begrenzungsrahmen mit jeder geeigneten Technik und gemäß jedem geeigneten Koordinatensystem bestimmt werden. Wird in dem ROI kein Strichcode gefunden, erweitert das Verfahren einfach den ROI (z. B. durch Einstellen des ROI auf das FOV oder durch anderweitige Erweiterung des ROI, wie in Block 760 des Beispiels von 7).
-
In Block 825 bildet die Bildgebungsanwendung 116 einen zweiten ROI des nachfolgenden Bildes auf der Grundlage der ermittelten Koordinaten des Begrenzungsrahmens des Strichcodes des nachfolgenden Bildes. Der zweite ROI des nachfolgenden Bildes kann in ähnlicher Weise gebildet werden wie der zweite ROI des ersten Bildes in Block 730.
-
Im Entscheidungsblock 830 bestimmt die Bildgebungsanwendung 116, ob der zweite ROI des ersten Bildes innerhalb einer vorbestimmten Toleranz (z. B. gemessen durch den Pixelabstand als Pixelwerte und/oder Pixelkoordinaten oder gemessen durch einen Prozentsatz der Länge einer Seite usw.) des zweiten ROI des nachfolgenden Bildes liegt. Die Differenz zwischen den ROls (die mit der vorbestimmten Toleranz zu vergleichen ist) kann durch jedes geeignete Verfahren bestimmt werden. Beispielsweise können die Pixelwerte und/oder Koordinaten der ROls verglichen werden, um die Differenz zwischen den Pixelwerten oder Koordinaten zu bestimmen (z. B. können die unteren x-Koordinaten verglichen werden, die oberen x-Koordinaten verglichen werden, die unteren y-Koordinaten verglichen werden und/oder die oberen y-Koordinaten verglichen werden, usw.). Zusätzlich oder alternativ können die Seitenlängen der ROls verglichen werden, um den Unterschied als prozentuale Differenz zwischen den Längen zu bestimmen.
-
Wenn die Antwort in Block 830 positiv ausfällt, legt die Bildgebungsanwendung in Block 835A den ROI für eine oder mehrere künftige Iterationen des Bildverarbeitungsauftrags auf der Grundlage des zweiten ROI des ersten Bildes und/oder des zweiten ROI des nachfolgenden Bildes fest. Beispielsweise kann der zweite ROI für künftige Iterationen des Bildverarbeitungsauftrags auf einen Durchschnitt des zweiten ROI des ersten Bildes und des zweiten ROI des nachfolgenden Bildes festgelegt werden. Der Durchschnitt kann mit jedem geeigneten Verfahren berechnet werden. Beispielsweise kann der Durchschnitt berechnet werden durch Mitteln: (i) einer niedrigsten x-Koordinate des zweiten ROI des ersten Bildes mit einer niedrigsten x-Koordinate des zweiten ROI des nachfolgenden Bildes, (ii) einer höchsten x-Koordinate des zweiten ROI des ersten Bildes mit einer höchsten x-Koordinate des zweiten ROI des nachfolgenden Bildes, (iii) einer niedrigsten y-Koordinate des zweiten ROI des ersten Bildes mit einer niedrigsten y-Koordinate des zweiten ROI des nachfolgenden Bildes, (iv) einer höchsten y-Koordinate des zweiten ROI des ersten Bildes mit einer höchsten y-Koordinate des zweiten ROI des nachfolgenden Bildes. Alternativ kann der zweite ROI für künftige Iterationen des Bildverarbeitungsauftrags direkt entweder auf den zweiten ROI des ersten Bildes oder den zweiten ROI des nachfolgenden Bildes gesetzt werden.
-
In einigen Varianten verwendet das Verfahren jedoch mehr als zwei Bilder, um zukünftige ROls zu bestimmen. In einigen Varianten geht das Verfahren daher nicht zu Block 835A über, sondern iteriert über 835B zurück zu Block 805, und es wird ein weiteres Bild empfangen. Auf diese Weise kann das Verfahren iterativ bis zu einer vorbestimmten Anzahl (z. B. 5 ROls, 10 ROls usw.) von zweiten ROls sammeln, die zur Bestimmung zukünftiger ROls verwendet werden sollen. Auf diese Weise kann die Bildgebungsanwendung 116 einen durchschnittlichen ROI speichern, der mit jedem nachfolgenden Bild kontinuierlich aktualisiert wird. In einigen Ausführungsformen wird ein zweiter ROI, der nicht innerhalb einer vorbestimmten Toleranz des ersten ROI oder eines Durchschnitts des bereits gesammelten ROIs liegt, verworfen und nicht zum Durchschnitt hinzugefügt.
-
Zurück zum Entscheidungsblock 830, wenn festgestellt wird, dass der zweite ROI des ersten Bildes nicht innerhalb der vorbestimmten Toleranz des zweiten ROI des nachfolgenden Bildes liegt, legt die Bildverarbeitungsanwendung 116 in Block 840 den ROI einer zukünftigen Iteration des Bildverarbeitungsauftrags als Standard-ROI des Bildes der zukünftigen Iteration des Bildverarbeitungsauftrags fest. In einigen Ausführungsformen ist der Standard-ROI das FOV des Bildes. Zur Erläuterung, wenn es keine gute Übereinstimmung zwischen den zweiten ROls des ersten und der nachfolgenden Bilder gibt, ist dies ein guter Hinweis darauf, dass mehr Daten benötigt werden, bevor bestimmt werden kann, wie die ROls für zukünftige Bilder festgelegt werden sollen; und diese Daten können gesammelt werden, indem die ROls für zukünftige Bilder auf das FOV festgelegt werden.
-
9 zeigt ein Beispiel für ein Verfahren 900 zur Erstellung eines ROI in Bezug auf mehrere Strichcodes anstelle eines einzelnen Strichcodes. Im Beispiel von 9 werden die Blöcke 710 und 715 in ähnlicher Weise wie in 7 ausgeführt.
-
In Block 910 bestimmt die Bildgebungsanwendung 116 das Vorhandensein einer Vielzahl von Strichcodes (z. B. Strichcodes 310, 510 in den Beispielen der 5 und 6) und deren Position in der ROI des ersten Bildes. In Block 915 bestimmt die Bildgebungsanwendung 116 einen Begrenzungsrahmen für jeden Strichcode der Vielzahl von Strichcodes (z. B. Begrenzungsrahmen 340, 540 in den Beispielen der 5 und 6), einschließlich der Bestimmung der Koordinaten der Begrenzungsrahmen.
-
In Block 920 bildet die Bildgebungsanwendung 116 einen zweiten ROI auf der Grundlage der ermittelten Koordinaten der Begrenzungsrahmen. Dies kann auf jede geeignete Weise geschehen. In einem kartesischen Koordinatensystem kann der zweite ROI beispielsweise gebildet werden durch Einstellen (i) einer niedrigsten x-Koordinate des zweiten ROI auf der Grundlage der niedrigsten x-Koordinate der Begrenzungsrahmen, (ii) einer höchsten x-Koordinate des zweiten ROI auf der Grundlage der höchsten x-Koordinate der Begrenzungsrahmen, (iii) einer niedrigsten y-Koordinate des zweiten ROI auf der Grundlage der niedrigsten y-Koordinate der Begrenzungsrahmen, und (iv) einer höchsten y-Koordinate des zweiten ROI auf der Grundlage der höchsten y-Koordinate der Begrenzungsrahmen. In einem Beispiel hierfür kann jede der niedrigsten/höchsten x- und y-Koordinaten der neuen Begrenzungsrahmen auf der Grundlage vorbestimmter Prozentsätze in Bezug auf die Längen der Begrenzungsrahmen festgelegt werden. Beispielsweise kann die Bildgebungsanwendung 116 zuerst bestimmen: (i) eine horizontale Länge von der niedrigsten x-Koordinate der Begrenzungsrahmen der Vielzahl von Strichcodes bis zur höchsten x-Koordinate der Begrenzungsrahmen der Vielzahl von Strichcodes, und (ii) eine vertikale Länge von der niedrigsten y-Koordinate der Begrenzungsrahmen der Vielzahl von Strichcodes bis zur höchsten y-Koordinate der Begrenzungsrahmen der Vielzahl von Strichcodes. Und als zweites kann die Bildgebungsanwendung 116 die x- und y-Koordinaten des zweiten ROI auf der Grundlage vorbestimmter Prozentsätze dieser bestimmten vertikalen und horizontalen Längen festlegen.
-
In einigen Ausführungsformen ist der zweite ROI jedoch nicht rechteckig, sondern kann eine beliebige Form haben. So kann der zweite ROI beispielsweise ein Kreis, ein Dreieck, ein Fünfeck oder ein beliebiges n-seitiges Polygon oder Objekt sein. Beispielsweise kann ein Benutzer der Computervorrichtung 102 die Form angeben, die die Bildgebungsanwendung 116 für den zweiten ROI vorgibt.
-
In Block 735 wird, ähnlich wie im Beispiel von 7, ein zweites Bild von der Bildgebungsanwendung 116 empfangen. In Block 740 stellt die Bildgebungsanwendung 116, ebenfalls ähnlich wie im Beispiel von 7, den zweiten ROI des ersten Bildes als ROI des zweiten Bildes ein.
-
In Block 925 durchsucht die Bildgebungsanwendung 116 den ROI nach Strichcodes. In diesem Zusammenhang kann die Bildgebungsanwendung 116 die Anzahl, den Typ und/oder andere Informationen der gefundenen Strichcodes bestimmen.
-
Im Entscheidungsblock 930 bestimmt die Bildgebungsanwendung 116, ob die Anzahl der im zweiten Bild gefundenen Strichcodes mit der Anzahl der im ersten Bild gefundenen Strichcodes übereinstimmt. Wenn ja, fährt das Verfahren mit 935 fort, und die Bildgebungsanwendung 116 analysiert die Strichcodes. Ist dies nicht der Fall, setzt die Bildgebungsanwendung den ROI in Block 940 auf den Standard-ROI. In einigen Ausführungsformen ist der Standard-ROI das FOV des Bildes (z. B. das gesamte Bild). Alternativ dazu kann die Bildgebungsanwendung 116 den ROI auch erweitern, anstatt ihn auf das FOV festzulegen. Wenn der ROI beispielsweise rechteckig ist, kann die Bildgebungsanwendung 116 jede der Seiten um einen vorbestimmten Prozentsatz (z. B. 10 %) vergrößern.
-
In einigen Varianten ist im Entscheidungsblock 930 keine exakte Übereinstimmung zwischen der Anzahl der Strichcodes im ersten und zweiten Bild erforderlich, und diese Einstellung kann von einem Benutzer der Computervorrichtung 102 manuell gesteuert werden. So können beispielsweise fünf Strichcodes im ersten Bild vorhanden sein, aber die Strichcodes werden dennoch analysiert (z. B. in Block 935), wenn mindestens vier Strichcodes in dem ROI des zweiten Bildes gefunden werden. In einigen Ausführungsformen werden alle entdeckten Strichcodes zusätzlich zur Änderung des ROI in Block 940 analysiert.
-
Nach Block 940 kehrt das Beispielverfahren zu Block 925 zurück, um den vergrößerte ROI nach Strichcodes zu durchsuchen.
-
10 zeigt ein Beispielverfahren 1000 zur Erstellung eines ROI in Bezug auf mehrere Strichcodes, einschließlich des Vergleichs von ROls, um festzustellen, ob sie innerhalb einer vorbestimmten Toleranz liegen. Es sollte verstanden werden, dass in einigen Implementierungen das Beispielverfahren 1000 einfach eine Kombination von Blöcken der Beispiele in den 7-9 sein kann; und in dieser Hinsicht beziehen sich gleiche Referenznummern auf identische oder funktionell ähnliche Blöcke.
-
Im Beispiel von 10 werden die Blöcke 710 und 715 ähnlich wie in 7 ausgeführt. In Block 910 bestimmt die Bildgebungsanwendung 116 das Vorhandensein einer Vielzahl von Strichcodes, ähnlich wie im Beispiel von 9.
-
In Block 915 bestimmt die Bildgebungsanwendung 116 einen Begrenzungsrahmen für jeden Strichcode aus der Vielzahl von Strichcodes, einschließlich der Bestimmung der Koordinaten jedes Begrenzungsrahmens. In Block 920 bildet die Bildgebungsanwendung 116 einen zweiten ROI auf der Grundlage der ermittelten Koordinaten der Begrenzungsrahmen, wie im Beispiel von 9.
-
In Block 805 empfängt die Bildgebungsanwendung 116 ein nachfolgendes Bild. In Block 810 legt die Bildgebungsanwendung 116 den ROI des nachfolgenden Bildes als Standard-ROI fest. In einigen Ausführungsformen ist der Standard-ROI das FOV des nachfolgenden Bildes. In Block 1010 bestimmt die Bildgebungsanwendung 116 das Vorhandensein einer Vielzahl von Strichcodes und deren Position innerhalb des ROI des nachfolgenden Bildes. In Block 1015 bestimmt die Bildgebungsanwendung 116 einen Begrenzungsrahmen für jeden Strichcode der Vielzahl von Strichcodes im nachfolgenden Bild, einschließlich der Bestimmung der Koordinaten jedes Begrenzungsrahmens. In Block 1020 bildet die Bildgebungsanwendung 116 einen zweiten ROI des nachfolgenden Bildes auf der Grundlage der ermittelten Koordinaten der Begrenzungsrahmen der Strichcodes des nachfolgenden Bildes.
-
Die Blöcke 830, 835A, 840 werden in ähnlicher Weise wie im Beispiel von 8 durchgeführt. Ebenfalls wie im Beispiel von 8 kann das Beispielverfahren 1000 (über 835B) zurück zu Block 805 iterieren.
-
Darüber hinaus kann jede der in den Beispielverfahren 700, 800, 900, 1000 beschriebenen Aktionen in beliebiger Reihenfolge, Anzahl oder in jeder anderen geeigneten Kombination durchgeführt werden. Zum Beispiel können einige oder alle Blöcke der Verfahren 700, 800, 900, 1000 einmal oder mehrmals vollständig ausgeführt werden. In einigen Beispielimplementierungen mögen einige der Blöcke nicht ausgeführt werden, während die hierin beschriebenen Operationen dennoch durchgeführt werden. Darüber hinaus schließen sich die Verfahren 700, 800, 900, 1000 nicht gegenseitig aus, und die Blöcke können in Verbindung und/oder Kombination miteinander auf jede geeignete Weise durchgeführt werden.
-
ZUSÄTZLICHE ÜBERLEGUNGEN
-
Die obige Beschreibung bezieht sich auf ein Blockdiagramm in den beigefügten Zeichnungen. Alternative Ausführungsformen des im Blockdiagramm dargestellten Beispiels umfassen ein oder mehrere zusätzliche oder alternative Elemente, Verfahren und/oder Vorrichtungen. Zusätzlich oder alternativ können einer oder mehrere der Beispielblöcke des Diagramms kombiniert, geteilt, neu angeordnet oder weggelassen werden. Die durch die Blöcke des Diagramms dargestellten Komponenten werden durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert. In einigen Beispielen wird mindestens eine der durch die Blöcke dargestellten Komponenten durch eine Logikschaltung implementiert. Wie hierin verwendet, ist der Begriff „Logikschaltung“ ausdrücklich als eine physische Vorrichtung definiert, die mindestens eine Hardwarekomponente enthält, die so konfiguriert ist (z. B. durch Betrieb gemäß einer vorbestimmten Konfiguration und/oder durch Ausführung gespeicherter maschinenlesbarer Anweisungen), dass sie eine oder mehrere Maschinen steuert und/oder Operationen einer oder mehrerer Maschinen durchführt. Beispiele für Logikschaltungen sind ein oder mehrere Prozessoren, ein oder mehrere Ko-Prozessoren, ein oder mehrere Mikroprozessoren, eine oder mehrere Steuerungen, ein oder mehrere digitale Signalprozessoren (DSPs), eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs), ein oder mehrere feldprogrammierbare Gate-Arrays (FPGAs), ein oder mehrere Mikrocontroller-Einheiten (MCUs), ein oder mehrere Hardware-Beschleuniger, ein oder mehrere Spezial-Computerchips und ein oder mehrere System-on-Chip-Bauteile (SoC). Einige Beispiel-Logikschaltungen, wie ASICs oder FPGAs, sind speziell konfigurierte Hardware zur Durchführung von Operationen (z. B. eine oder mehrere der hierin beschriebenen und in den Flussdiagrammen dieser Offenbarung dargestellten Operationen, falls solche vorhanden sind). Einige Beispiel-Logikschaltungen sind Hardware, die maschinenlesbare Befehle ausführt, um Operationen durchzuführen (z. B. eine oder mehrere der hierin beschriebenen und durch die Flussdiagramme dieser Offenbarung dargestellten Operationen, falls solche vorhanden sind). Einige Beispiel-Logikschaltungen umfassen eine Kombination aus speziell konfigurierter Hardware und Hardware, die maschinenlesbare Befehle ausführt. Die obige Beschreibung bezieht sich auf verschiedene hierin beschriebene Operationen und Flussdiagramme, die zur Veranschaulichung des Ablaufs dieser Operationen angehängt sein können. Alle derartigen Flussdiagramme sind repräsentativ für die hier offenbarten Beispielverfahren. In einigen Beispielen implementieren die durch die Flussdiagramme dargestellten Verfahren die durch die Blockdiagramme dargestellten Vorrichtungen. Alternative Implementierungen der hier offenbarten Beispielverfahren können zusätzliche oder alternative Operationen umfassen. Darüber hinaus können Operationen alternativer Implementierungen der hier offenbarten Verfahren kombiniert, aufgeteilt, neu angeordnet oder weggelassen werden. In einigen Beispielen werden die hier beschriebenen Operationen durch maschinenlesbare Anweisungen (z. B. Software und/oder Firmware) implementiert, die auf einem Medium (z. B. einem zugreifbaren maschinenlesbaren Medium) zur Ausführung durch eine oder mehrere Logikschaltungen (z. B. Prozessor(en)) gespeichert sind. In einigen Beispielen werden die hier beschriebenen Operationen durch eine oder mehrere Konfigurationen einer oder mehrerer speziell entwickelter Logikschaltungen (z. B. ASIC(s)) implementiert. In einigen Beispielen werden die hier beschriebenen Operationen durch eine Kombination aus speziell entwickelten Logikschaltungen und maschinenlesbaren Anweisungen, die auf einem Medium (z. B. einem zugreifbaren maschinenlesbaren Medium) zur Ausführung durch Logikschaltungen gespeichert sind, implementiert.
-
Wie hierin verwendet, ist jeder der Begriffe „zugreifbares maschinenlesbares Medium“, „nicht transitorisches maschinenlesbares Medium“ und „maschinenlesbare Speichervorrichtung“ ausdrücklich definiert als ein Speichermedium (z. B. eine Platte eines Festplattenlaufwerks, eine Digital Versatile Disc, eine Compact Disc, ein Flash-Speicher, ein Festwertspeicher, ein Speicher mit wahlfreiem Zugriff usw.), auf dem maschinenlesbare Anweisungen (z. B. Programmcode in Form von z. B. Software und/oder Firmware) für eine beliebige geeignete Zeitdauer (z. B. dauerhaft, für einen längeren Zeitraum (z. B. während der Ausführung eines mit den maschinenlesbaren Anweisungen verbundenen Programms) und/oder für einen kurzen Zeitraum (z. B. während der Zwischenspeicherung der maschinenlesbaren Anweisungen und/oder während eines Pufferungsprozesses)) gespeichert werden. Darüber hinaus sind die Begriffe „zugreifbares, maschinenlesbares Medium“, „nicht transitorisches, maschinenlesbares Medium“ und „maschinenlesbare Speichervorrichtung“ hier ausdrücklich so definiert, dass sie sich ausbreitende Signale ausschließen. Das heißt, dass keiner der Begriffe „zugreifbares maschinenlesbares Medium“, „nicht transitorisches maschinenlesbares Medium“ und „maschinenlesbare Speichervorrichtung“, wie sie in den Ansprüchen dieses Patents verwendet werden, so gelesen werden kann, dass er durch ein sich ausbreitendes Signal implementiert wird.
-
In der vorstehenden Beschreibung wurden spezifische Ausführungsformen beschrieben. Ein Durchschnittsfachmann erkennt jedoch, dass verschiedene Modifikationen und Änderungen vorgenommen werden können, ohne den Schutzumfang der Erfindung, wie sie in den untenstehenden Ansprüchen definiert ist, abzuweichen. Dementsprechend sind die Beschreibung und die Figuren vielmehr in einem illustrativen als in einem einschränkenden Sinne zu betrachten, und alle derartigen Modifikationen sollen im Umfang der vorliegenden Lehren eingeschlossen sein. Darüber hinaus sind die beschriebenen Ausführungsformen/Beispiele/Implementierungen nicht als sich gegenseitig ausschließend zu verstehen, sondern vielmehr als potenziell kombinierbar, wenn solche Kombinationen in irgendeiner Weise permissiv sind. Mit anderen Worten kann jedes Merkmal, das in einer der vorgenannten Ausführungsformen/Beispiele/Implementierungen offenbart wird, in jeder der anderen vorgenannten Ausführungsformen/Beispiele/Implementierungen enthalten sein.
-
Die Nutzen, Vorteile, Lösungen für Probleme und alle Elemente, die zum Auftreten oder einer Verstärkung eines Nutzens, eines Vorteils, oder einer Lösung führen können, sind nicht als kritische, erforderliche oder wesentliche Merkmale oder Elemente in einigen oder sämtlichen Ansprüchen zu verstehen. Die Erfindung ist lediglich durch die angehängten Ansprüche definiert, einschließlich jeglicher Änderungen, die während der Anhängigkeit dieser Anmeldung vorgenommen wurden und aller Äquivalente der erteilten Ansprüche.
-
Darüber hinaus können in diesem Dokument relationale Begriffe wie erster und zweiter, oberer und unterer und dergleichen lediglich verwendet sein, um eine Entität oder Aktion von einer anderen Entität oder Aktion zu unterscheiden, ohne notwendigerweise eine tatsächliche derartige Beziehung oder Reihenfolge zwischen solchen Entitäten oder Aktionen zu erfordern oder zu implizieren. Die Ausdrücke „umfasst“, „umfassend“, „hat“, „haben“, „aufweist“, „aufweisend“, „enthält“, „enthaltend“ oder jede andere Variation davon sollen eine nichtausschließliche Einbeziehung abdecken, derart, dass ein Prozess, Verfahren, Produkt oder Vorrichtung, das eine Liste von Elementen umfasst, hat, aufweist, enthält, nicht nur diese Elemente aufweist, sondern auch andere Elemente aufweisen kann, die nicht ausdrücklich aufgelistet sind oder einem solchen Prozess, Verfahren, Produkt oder Vorrichtung inhärent sind. Ein Element, dem „umfasst... ein“, „hat... ein“, „aufweist... ein“ oder „enthält ...ein“ vorausgeht, schließt ohne weitere Einschränkungen die Existenz zusätzlicher identischer Elemente in dem Prozess, dem Verfahren, dem Produkt oder der Vorrichtung, die das Element umfasst, hat, aufweist oder enthält, nicht aus. Die Begriffe „ein“ und „eine“ sind als eine oder mehrere definiert, sofern es hierin nicht ausdrücklich anders angegeben wird. Die Begriffe „im Wesentlichen“, „im Allgemeinen“, „ungefähr“, „etwa“ oder jede andere Version davon sind so definiert, dass sie von einem Fachmann auf diesem Gebiet nahekommend verstanden werden, und in einer nicht-einschränkenden Ausführungsform ist der Ausdruck definiert als innerhalb von 10%, in einer weiteren Ausführungsform als innerhalb von 5%, in einer weiteren Ausführungsform als innerhalb von 1% und in einer weiteren Ausführungsform als innerhalb von 0,5%. Der Ausdruck „gekoppelt“, wie er hierin verwendet wird, ist als verbunden definiert, jedoch nicht notwendigerweise direkt und nicht notwendigerweise mechanisch. Eine Vorrichtung oder eine Struktur, die auf eine bestimmte Art „konfiguriert“ ist, ist zumindest auch so konfiguriert, kann aber auch auf Arten konfiguriert sein, die nicht aufgeführt sind.
-
Die Zusammenfassung der Offenbarung wird bereitgestellt, um es dem Leser zu ermöglichen, schnell das Wesen der technischen Offenbarung zu ermitteln. Sie wird mit dem Verständnis bereitgestellt, dass sie nicht zur Auslegung oder Einschränkung des Umfangs oder der Bedeutung der Ansprüche verwendet wird. Ferner kann der vorangehenden detaillierten Beschreibung entnommen werden, dass verschiedene Merkmale in verschiedenen Ausführungsformen zum Zwecke der Verschlankung der Offenbarung zusammengefasst sind. Diese Art der Offenbarung ist nicht so auszulegen, dass sie die Absicht widerspiegelt, dass die beanspruchten Ausführungsformen mehr Merkmale erfordern, als ausdrücklich in jedem Anspruch angegeben sind. Vielmehr ist es so, wie die folgenden Ansprüche zeigen, dass der erfinderische Gegenstand in weniger als allen Merkmalen einer einzigen offenbarten Ausführungsform liegt. Somit werden die folgenden Ansprüche hiermit in die detaillierte Beschreibung inkorporiert, wobei jeder Anspruch für sich als ein separat beanspruchter Gegenstand steht.