-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf eine Belichtungssteuerung
in einem portablen optischen Bildaufnahmegerät und insbesondere auf ein Verfahren
zur automatischen Echtzeit-Belichtungssteuerung für eine optische
Bildgebungseinheit in einem multidimensionalen optischen Bildaufnahmeapparat.
-
HINTERGRUND
DER ERFINDUNG
-
Portable
optische Bildaufnahmegeräte,
wie Barcode-Leser,
optische Zeichen-Leser, Digitalkameras und ähnliche, sind in weiträumigen Gebrauch in
grossen Stückzahlen
im Einzelhandel, Industrie und medizinischen Anwendungen gekommen.
Solche Bildaufnahmegeräte
werden benutzt, um Routinedatenaufnahmefunktionen, wie Auspreisung,
Inventaraufnahmen usw., mit einer Genauigkeit und Verlässlichkeit,
die bei weitem die bei manueller Datenaufnahme übersteigt, auszuführen. Diese
und andere Vorteile, wie hohe Datendurchsatzraten und direkte Kompatibilität von Datenverarbeitungsgeräten und – Systemen
stellt sicher, dass Bildaufnahmegeräte in der Zukunft immer weiter
verbreitet werden. Wie die Benutzung solcher Geräte steigt, werden auch die
Anforderungen an die Geräte
in gleichem Masse steigen. Diese Anforderungen werden diktieren,
dass die portablen Bildaufnahmegeräte der Zukunft ständig steigende
Quantitäten
und Dichten optisch – kodierter
Daten lesen, speichern und decodieren können.
-
Portable
Bildaufnahmegeräte,
wie Barcode-Leser sind bekannt zum Lesen eindimensionaler (1D) und
zweidimensionaler (2D) Barcode-Symbole, wie z.B. Barcode Informationen
in Supermärkten
usw. Eine Vielfalt verschiedener Barcode-Symbole sind weithin bekannt
und werden gegenwärtig
in verschiedenen Anwendungen genutzt. In diesen Anwendungen, wo
die Anzahl von Daten relativ klein ist, werden die Daten konventionell
in einem eindimensionalen Barcode Symbol kodiert. Zum Beispiel,
1D Barcode Symbolsätze,
wie Code 49, Code 39, Code 128 und Codebar sind entwickelt worden,
um die Kodierung von relativ kleinen Anzahlen von Daten zu erlauben.
Siehe zum Beispiel US Patent Nr. 4,794,239 mit dem Titel "Multitrack Bar Code
and Associated Decode Method",
erteilt am 27. Dezember 1988 im Namen des Erfinders Allais, in welchem
der Code 49 Symbolsatz beschrieben ist. Die 1D Symbolsätze nutzen
geschichtete Symbole, welche die kodierten Daten in Mehrfachreihen,
wobei jede ein entsprechendes 1D Barcode Muster einschliesst, partitionieren.
Im Betrieb müssen
alle oder die meisten der Symbole gescannt, dekodiert und dann miteinander verbunden
werden, um eine komplette Nachricht zu bilden.
-
In
Anpassung an das Bedürfnis
zum Lesen, Aufzeichnen und Dekodieren wachsender Quantitäten und
Dichten von Daten sind 2D Matrix Symbolsätze entwickelt worden, welche
eine orientierungsfreies Scannen und grössere Datendichten und Kapazitäten als
die 1D Gegenstücke
erlauben. 2D Matrix Codes kodieren dunkle oder helle Datenelemente
innerhalb einer regelmässigen
polygonalen Matrix, begleitet von graphischen Such-, Orientierungs- und Referenzstrukturen.
Zum Beispiel sind 2D Symbolsätze,
wie etwa PDF 417, MaxiCode und DataMatrix entwickelt worden,
um eine Kodierung von grossen Datenvolumen zu erlauben. Siehe zum
Beispiel US Patent Nr. 5,304,786 mit dem Titel "High Density Two Dimensional Bar Code
Symbol", erteilt
am 19. April 1994 im Namen des Erfinders Pavlidis et al., in welchem
der PDF 417 Symbolsatz beschrieben ist. PDF 417 nutzt
ein "zweidimensionales" Schema, in welchem
Reihen von Zeichen vertikal geschichtet sind. Das heisst, es gibt
verschiedene Reihen von Bar und Leermustern, anstelle von nur einer
Reihe.
-
2D
Festkörperbildsensoren,
wie zum Beispiel ladungsgekoppelte Bauelemente (CCD) Bildsensoren,
sind befähigt,
optisch kodierte Datenbilder aufzunehmen und in elektrische Signale
zu konvertieren. Wenn diese Bildsensoren mit optischen Bildaufnahmesystemen,
die korrekt belichtete und fokussierte Bilder für das Ziel bereitstellen und
mit Signalprozessoren, die eine passende Dekodiersoftware beinhalten,
verbunden sind, sind diese Bildsensoren in der Lage, Daten von verschiedenen
Typen, Formen und Grössen
von Barcodes und anderen Symbolen zu lesen.
-
Wie
festgestellt, steht die Fähigkeit,
Daten von einem grossen Bereich von Produkten verschieden in Material,
Grösse,
Form und ähnlichem
zu lesen in direktem Zusammenhang mit der Bereitstellung einer korrekten
Bildbelichtung des einer Mustererkennung zu unterziehenden oder
zu scannenden Objekts. Vorrangig zu diesem Anliegen ist die Fähigkeit,
die Belichtungseinstellung in einer Echtzeitart so abzustimmen,
dass die Belichtungseinstellungen für das aufzunehmende Bild korrekt
sind.
-
Die
US-A-5,834,753 offenbart ein Datensammelgerät, wobei Daten eingelesen oder
per Hand eingegeben werden. Das Gerät weist einen Basisteil und
einen Datensammel- und
Kommunikationsteil auf, der an das Basisteil anschliessbar ist.
Der Datensammel- und Kommunikationsteil weist eine Hauptschaltplatine,
die elektrisch mit einem Mikroprozessor, der sich im Basisteil befindet,
mittels einer Schaltungsroutingplatine verbunden ist, auf. Ein Lichtintensitätssensor
ist auf einer Seite mit dem Mikroprozessor und auf der anderen Seite
mit einem Interruptschaltmittel verbunden. Wenn eine direktes Signal
vom Intensitätssensor
ausreichend ist, wird das Interruptschaltmittel betätigt und
verursacht die Unterbrechung eines Beleuchtungselements, um Energie
zu sparen.
-
Die
US-A-5,815,200 offenbart ein Datensammelgerät, das einen ersten Prozessor
und einen zweiten Prozessor hat, wobei der erste Prozessor ausschliesslich
eine Verstärkungssteuerung
durch Benutzung eigener Routinen und Aufgaben innerhalb einer eigenen
Verstärkersteuerungsschaltung
ausführt
und wobei der zweite Prozessor ausschliesslich eine Belichtungssteuerung
durch Benutzung eigener Routinen und Aufgaben in einer eigenen Belichtungssteuerungsschaltung
ausführt.
-
In
dem Fall, in welchem das Bildaufnahmegerät Software oder einen anderen
Algorithmus zum Dekodieren des Bildes benötigt, wie ein Barcodeleser
oder ähnliches,
ist es zwingend erforderlich, dass das Bildaufnahmegerät dem Algorithmus
korrekt belichtete Bilder bereitstellt. Die Dekodieralgorithmen
in solchen Geräten
sind typischerweise durch die eingebaute Belichtungssteuerung der
Bildgebungseinheit (beispielsweise Kamera) begrenzt. Diese Begrenzung
bremst im Allgemeinen den Dekodierprozess und fügt Ineffizienz zur Gesamtbildaufnahme und
zu dem Dekodierprozess hinzu. Daher wird es zwingend, einen automatischen
Belichtungssteuerungsmechanismus verschieden von der Bildgebungseinheit
zu implementieren, so dass die Effizienz des Dekodierprozesses nicht
nachteilig beeinflusst wird.
-
In
den meisten gegenwärtigen
portablen Bildaufnahmegeräten,
die mehrere Prozessoren einschliessen, ist die Implementierung von
automatischen Bildgebungseinheitsteuermodulen relativ einfach, da
ein individueller Prozessor bestimmt werden kann, die automatische
Belichtungssteuerungsroutine auszuführen, während andere Prozessoren dazu bestimmt
sind, ein Betriebssystem, Anwendungsprogramme und ähnliches
auszuführen.
Wie auch immer, die Implementierung eines Belichtungssteuerungsmechanismus,
der genaue Echtzeitbelichtungseinstellungen (beispielsweise automatische
Belichtungssteuerung) bereitstellen wird, kann unter einer Multitaskingbetriebssystemumgebung
problematisch sein. In einer typischen Multitaskingumgebung kann
eine einzelne Zentralprozessoreinheit (CPU) eingeschlossen sein,
die fähig
ist, Anwendungsprogramme, wie auch Bildaufnahme und Dekodierprozesse,
zu implementieren. In solch einer geteilten Prozessorumgebung ist
es notwendig, die zugeteilte Benutzung der CPU für jede Anwendung zu minimieren.
Zum Beispiel in dem Bildaufnahme- und Dekodierprozess muss die Belichtung
innerhalb eines spezifischen Zeitintervalls in der Bildgebungseinheitsbildperiode
in die Bildgebungseinheit geschrieben werden. Dies benötigt eine
Echtzeitantwort, um mit dem Status der Bildgebungseinheit Schritt
zu halten und auf jegliche Bildsignale von der Bildgebungseinheit
zu antworten.
-
Umgekehrt,
in einem Multitaskingbetriebssystem, wo es Aufgaben gibt, die sich
die Zentralverarbeitungseinheit (CPU) teilen, sollte die Routine, welche
die CPU verwaltet, die CPU nicht kontinuierlich mit automatischen
Belichtungsberechnungen vorbesetzen. In diesem Zusammenhang ist
ein Zweifachzweckmodul wünschenswert,
das es erlauben wird, dass intensive CPU-Berechnungen auf einer Aufgabenebene
existieren, wo sie von anderen Aufgaben, die CPU-Zeit benötigen vorab
abgeschätzt werden
können.
Zusätzlich
wird dem Modul zur Steuerung der Bildgebungseinheit in einer Echtzeitantwort
erlaubt, in einer Interrupt-Serviceroutine
zu existieren, wo es den Zeitkriterien der Bildgebungseinheit entspricht.
-
Um
dieses Anliegen zu behandeln, offenbart das hierin offenbarte erfinderische
Konzept eine Implementierung des Codes/der Routinen in zwei verschiedenen
Modulen. Das Modul, das die Kamera steuert ist implementiert in
einer Interrupt-Serviceroutine. Andere Ausführungsformen können dieses Modul
in einer Hochprioritäts-
oder Echtzeit Thread- oder Taskroutine implementieren. Das Modul,
welches die Berechnungen am Bild zur Bestimmung, welche Belichtungs-
und Verstärkungseinstellungen genutzt
werden sollten, durchführt,
ist in einer Niederpriorität
Thread- oder Taskroutine implementiert. Dies erlaubt dem Modul,
welches die intensiven CPU-Berechnungen durchführt, auf einer Aufgabenebene
(Task Level) zu existieren, während
das Modul, welches die Bildgebungseinheit steuert und Echtzeitantworten
erfordert, in einer Interrupt-Serviceroutine
existiert, wo es strenge Zeitkriterien befriedigen kann.
-
Zusammenfassung
der Erfindung
-
Die
vorliegende Erfindung ist durch ein Verfahren zur Belichtungssteuerung
in einem multidimensionalen Bildaufnahmegerät definiert. Das Verfahren
umfasst eine Erzeugung eines Bildende-Signals (end of frame, EOF)
in einer Bildgebungseinheit und eine Ausführung eines ersten Moduls in
einem Zentralprozessor, das Belichtungs- und Verstärkungseinstellungen
in der Bildgebungseinheit in Antwort auf das Bildende-Signal steuert.
Das erste Modul erzeugt dann eine aufgenommene Kontrasteinstellung
und das zweite Modul führt
in einem Zentralprozessor durch Berechnung einer Zielkontrasteinstellung
in Antwort auf das Bildende-Signal
die aufgenommene Kontrasteinstellung und gespeicherten Bilddaten
aus. Eine anschliessende oder neue Belichtungs- und Verstärkungseinstellung
wird dann in dem ersten Modul in der Antwort auf die Zielkontrasteinstellung
erzeugt. Die nachfolgenden Belichtungs- und Verstärkungseinstellungen
werden dann in der Bildgebungseinheit implementiert. Das erste Modul ist
typisch in einer Hochprioritätsroutine,
die eine Interrupt-Serviceroutine implementiert, und das zweite Modul
ist typischerweise in einer Niederpriorität-Routine, wie etwa einer Task
Level Routine, implementiert. In einer alternativen Ausführungsform
ist der Prozessor, der das erste und zweite Modul ausführt, zusätzlich für die Ausführung mindestens
eines Bildaufnahmegerätanwendungsprogramms
und/oder eines Bildaufnahmegerät-Betriebssystem
verantwortlich.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein Blockdiagramm des automatischen Belichtungssteuerungsprozesses,
implementiert in einem multidimensionalen Bildaufnahmegerät entsprechend
einer Ausführungsform
der vorliegenden Erfindung.
-
2 ist
ein Blockdiagram einer alternativen Ausführungsform des automatischen
Belichtungssteuerungsprozesses in einem multidimensionalen Bildaufnahmegerät entsprechend
der vorliegenden Erfindung.
-
3A-3C sind
Flussdiagramme der Verarbeitung, die innerhalb des ersten Moduls
(des Bildgebungseinheitsbelichtungsmoduls) des automatisierten Belichtungssteuerungsprozesses entsprechend
einer Ausführungsform
der vorliegenden Erfindung ablaufen.
-
4 ist
ein Flussdiagramm der Verarbeitung, die innerhalb des zweiten Moduls
(das Histogrammverarbeitungsmodul) des automatisierten Belichtungssteuerungsprozesses
entsprechend einer Ausführungsform
der vorliegenden Erfindung stattfindet.
-
Detaillierte
Beschreibung der Erfindung
-
Die
vorliegende Erfindung wird nun nachfolgend mit Bezug auf die beiliegenden
Zeichnungen, in welchen bevorzugte Ausführungsformen der Erfindung
gezeigt sind, vollständiger
beschrieben. Die Erfindung kann, wie auch immer, in vielen verschiedenen
Formen ausgeführt
sein und sollte nicht als durch die hierin dargelegten Ausführungsformen
limitiert ausgelegt werden; vielmehr sind diese Ausführungsformen
bereitgestellt, so dass die Offenbarung genau und vollständig ist
und vollständig
den Bereich der Erfindung für
den Fachmann vermittelt. Gleiche Bezugszeichen beziehen sich durchgehend
auf gleiche Elemente.
-
1 ist
ein Blockdiagramm, welches die Interaktion zwischen Komponenten
in einem Bildaufnahmegerät,
das eine automatische Belichtungskontrolle entsprechend der vorliegenden
Erfindung beinhaltet, dargestellt. Das Bildaufnahmegerät 10 weist eine
Bildgebungseinheit 20, typischerweise eine Kamera, die
kontinuierlich Bilddaten für
eine Bildaufnahmegerätspeicherkomponente 30,
wie etwa einen Schreib-Lese-Speicher (RAM), bereitstellt. Die Bildgebungseinheit
wird typischerweise in der Lage sein, wenigstens zweidimensionale
Bildsymbolsätze,
wie etwa PDF 417, MaxiCode, DataMatrix und andere zu lesen.
-
Die
Bildgebungseinheit 20 kommuniziert mit einem Bildgebungseinheitsteuermodul 40 und
einem Histogrammverarbeitungsmodul 50, um eine automatisierte
Belichtungssteuerung für
die Bildgebungseinheit durchzuführen.
Das Bildgebungseinheit-Steuermodul steuert die Verstärkungs-
und die Belichtungseinstellungen der Bildgebungseinheit durch die Nutzung
eines Zielkontrastparameters, der durch das Histogrammverarbeitungsmodul
bereitgestellt wird. Zusätzlich
verarbeitet das Bildgebungseinheit-Steuermodul ein Bildsignal, um zu bestimmen,
wie ein kürzlich
aufgenommenes Bild belichtet worden ist und kommuniziert diese Informationen
zurück
zu dem Histogrammverarbeitungsmodul für die weitere Berechnung des
Zielkontrasts. Ähnlich
berechnet das Histogrammverarbeitungsmodul einen Zielkontrast basierend
auf dem Bildende (EOF) Signal, welches von der Bildgebungseinheit 20 übermittelt
wird.
-
Das
Bildgebungseinheit-Steuermodul 40 ist typischerweise in
einer Interrupt-Serviceroutine implementiert. Andere Ausführungsformen
der Erfindung könnten
dieses Modul in einer Hochprioritäts- oder Echtzeit Thread- oder
Taskroutine implementieren. Das Histogrammverarbeitungsmodul, welches
die Berechnungen an dem Bild zur Bestimmung, welche Belichtungs-
und Verstärkungseinstellungen
benutzt werden sollten, durchführt,
ist in einer Taskroutine oder einer anderen Niederprioritätsroutine
implementiert. Durch Beinhaltung von zwei einzelnen Modulen ist
es dem Modul erlaubt, das intensive CPU Berechnungen (beispielsweise
das Histogrammverarbeitungsmodul) auf einer Aufgabenebene existieren, während das
Modul, welches die Bildgebungseinheit steuert und Echtzeitantworten
verlangt (beispielsweise das Bildgebungseinheit-Steuermodul) in
einer Interrupt-Serviceroutine
existiert, wo es die Zeitkriterien erfüllt. Daher minimiert der gesamte
Belichtungssteuerungsprozess die Nutzung der Prozessorfähigkeiten,
so dass andere Anwendungen und/oder Module durch den Prozessor ausgeführt werden
können.
Auf diese Weise ist der Zweimodulprozess fähig, eine automatische Belichtungssteuerung
für ein Bildaufnahmegerät, das in
einer Multitaskingumgebung arbeitet, bereit zu stellen.
-
Typischerweise
wird das Bildaufnahmegerät einen
direkten Speicherzugriff (DMA) Kontroller 60 enthalten,
der für
die Steuerung des Transfers von Bilddaten von der Bildgebungseinheit
zum Speicher verantwortlich ist. Der DMA-Kontroller kann sich in
einem Prozessorgerät
(in 1 nicht gezeigt) befinden. Es sei hier angemerkt,
dass der DMA-Kontroller nicht essenziell für das Funktionieren des automatisierten
Belichtungssteuerungsprozesses ist und es in bestimmten Ausführungsformen
der Erfindung, in welchen die Bilddaten direkt in den Speicher transferiert
werden und der Aufnahmebefehl direkt vom Histogrammverarbeitungsgerät zur Bildgebungseinheit gesendet
wird, möglich
das Bedürfnis
zur Aufnahme eines DMA-Kontrollers eliminiert.
-
2 zeigt
eine alternative Ausführungsform
der vorliegenden Erfindung, in welcher ein Logikgerät 70,
vorzugsweise ein Feld-programmierbares Logikgerät als eine Schnittstelle zwischen
der Bildgebungseinheit 20 und dem Bildgebungseinheit-Steuermodul 40 implementiert
ist. In dieser Ausführungsform
erzeugt die Bildgebungseinheit ein EOF-Signal, welches zu dem Logikgerät gesendet wird.
Das Logikgerät
sendet das EOF Signal zum Bildgebungseinheit-Steuermodul und zum
Histogrammsteuerungsmodul. Das Bildgebungseinheit-Steuermodul übermittelt
dann Belichtungs- und Verstärkungseinstellungen über das
Logikgerät
zur Bildgebungseinheit.
-
In
Anordnungen, in welchen ein DMA Kontroller 60 als Schnittstelle
zwischen der Bildgebungseinheit 20 und der Speicherkomponente 30 beinhaltet
ist, kann der DMA-Kontroller
in die Logikgerätschnittstelle 70 implementiert
sein oder in einem anderen passenden Gerät, welches in der Lage ist, DMA
Kontroller Aktivitäten
zu implementieren Platz finden. In der Ausführungsform, in welcher der DMA-Kontroller
in die Logikgerätschnittstelle
(2) implementiert ist, wird das Histogrammverarbeitungsmodul
Aufnahmebefehle zum DMA Kontroller über das Logikgerät senden,
der DMA-Kontroller
wird ein Bild dem Speicher bereitstellen und das Histogrammverarbeitungsmodul
wird das Bild aus dem Speicher lesen.
-
Um
die Verarbeitung, die im Bildgebungseinheit-Steuermodul und im Histogrammsteuerungsmodul
durchgeführt
wird, abzuschätzen,
ist es notwendig, die erforderlichen Belichtungssteuerungsparameter
zu definieren. Belichtung ist definiert als die Menge an Zeit, in
welcher die Bildgebungseinheit die Bildgebungseinheitszellen dem
Licht aussetzt. Die Verstärkung
ist definiert als die Umwandlung zwischen der Anzahl von Photonen,
die von der Bildgebungseinheit aufgenommen worden sind und der Anzahl
von digitalen Einheiten ("counts"), die im Bild enthalten
sind. Verstärkung
wird typischerweise vor der Digitalisierung des Signals angewendet.
Die Verstärkungs-
und Belichtungseinstellungen erzeugen beide eine lineare Skalierung
der Daten im Bild. Beispielsweise würden wenn man die Belichtung
oder die Verstärkung
verdoppelt, die Pixelwerte, die man von der Bildgebungseinheit erhält doppelt
so gross werden. Kontrast ist in dieser Anwendung definiert als
das Produkt der Belichtung mal der Verstärkung (Belichtung × Verstärkung =
Kontrast). Um ein Bild zu erhalten, das korrekt belichtet ist, kann
entweder die Verstärkung
oder die Belichtung so lange eingestellt werden, wie das Produkt
der Verstärkung
und der Belichtung gleich dem geforderten Zielkontrast entspricht.
-
Das
Histogrammverarbeitungsmodul macht Anfragen an das Bildgebungseinheit-Steuermodul
für ein
Bild mit einem spezifischen Kontrast (beispielsweise dem Zielkontrast).
Basierend auf diese Anfrage versucht das Bildgebungseinheit-Steuermodul, die
Verstärkung
und Belichtungswerte so zu setzen, dass das Produkt der beiden Werte
gleich dem Zielkontrast ist. Wie dem Fachmann bekannt ist, haben Änderungen
der Belichtungseinstellungen in der Bildgebungseinheit typischerweise
nicht sofort eine Auswirkung. Während
ein Bild durch den DMA-Kontroller in den RAM transferiert wird,
wird das nächste
Bild belichtet. Auf diese Weise wird dem Bild, das aufgenommen worden
ist der Buchstabe n zugewiesen und eine Belichtungseinstellung unmittelbar
vor dem Start des Aufnahmeprozesses für das Bild und solange keine
Auswirkung, bis das Bild n + 1 aufgenommen wird. Daher ist das Bildgebungseinheit-Ssteuermodul
verantwortlich sich über
die derzeitigen Belichtungseinstellung auf dem Laufenden zu halten
und zu wissen, welche Bilddaten die von der Bildgebungseinheit kommen,
welche spezifische Belichtungseinstellung haben. Umgekehrt, Änderungen
in der Verstärkungseinstellung
haben sofort einen Effekt, wenn die Verstärkungseinstellung geändert wird,
bevor eine Bild aufgenommen worden ist.
-
Da
Belichtungseinstellungen nicht sofort stattfinden, benötigt das
Histogrammverarbeitungsmodul Daten über den Kontrast eines jeden
aufgenommenen Bildes im Hinblick darauf, welcher Kontrast wirklich
aufgenommen worden ist. Das Histogrammverarbeitungsmodul nutzt die
Rückmeldung, einschliesslich
des Kontrastes des aufgenommenen Bildes, um einen Zielkontrast für zukünftige Bilddaten zu
berechnen. Das Bildgebungseinheit-Steuermodul koppelt an das Histogrammverarbeitungsmodul,
um die Rückmeldungsinformationen,
bezogen auf das letzt aufgenommene Bild, dem Histogrammverarbeitungsmodul
bereitzustellen. Um die Belichtungs- und Verstärkungseinstellung jedes aufgenommenen
Bildes zu verfolgen, wird typischerweise das Bildgebungseinheit-Steuermodul in entweder
eine Hochpriorität-Task-
oder eine Interrupt-Serviceroutine implementiert sein. Diese Implementationen
sind in der Lage sicherzustellen, dass EOF-Signale von der Bildgebungseinheit
nicht unbeabsichtigterweise verloren gehen, und dass der Kontrast
für jedes
Bild korrekt bestimmt wird.
-
Bildgebungseinheit-Steuermodul
-
Das
Bildgebungseinheit-Steuermodul arbeitet nur in Antwort auf eine
EOF Interrupt-Signal, übermittelt
von der Bildgebungseinheit. In einer Ausführungsform der Erfindung kommuniziert
das Bildgebungseinheit-Steuermodul
mit dem Histogrammverarbeitungsmodul über eine gemeinsame Datenstruktur,
in welcher eine Gruppe von in Beziehung zueinander stehenden Variablen
existiert, zu welcher beide, das Bildgebungseinheit-Steuermodul und das Histogrammverarbeitungsmodul
Zugriff haben. Andere Mittel zur Kommunikation zwischen dem Bildgebungseinheit-Steuermodul
und dem Histogrammverarbeitungsmodul sind auch möglich und innerhalb des erfinderischen
Konzepts hiermit offenbar. Das Bildgebungseinheit-Steuermodul weist
eine EOF Verarbeitungsroutine auf. Diese Routine führt einen Zähler mit
einer Bildnummer, der jedes Mal erhöht wird, wenn eine EOF-Signal
durch das Bildgebungseinheit- Steuermodul
empfangen wird. Das Bildgebungseinheit-Steuermodul greift auf das gemeinsame
Speichergebiet zu und liest den Zielkontrast, der vom Histogrammverareitungsmodul
erfragt worden ist, aus.
-
3A-3C stellen
ein Flussdiagramm der Verarbeitung innerhalb des Bildgebungseinheit-Steuermoduls entsprechend
der vorliegenden Erfindung dar. Bei 200 wird der Zielkontrast,
der vom Histogrammverarbeitungsmodul empfangen wurde, implementiert,
um eine nachfolgende (beispielsweise neue) Belichtungseinstellung
zu berechnen. In Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung wird die nachfolgende Belichtungseinstellung
gleich dem Zielkontrast dividiert durch 2 (Zielkontrast/2) gesetzt.
Die nachfolgende Belichtung ist als solche in Beziehung zum Medianwert
für die
Verstärkung
definiert. In einer Ausführungsform
der Erfindung wird die Bildgebungseinheit Verstärkungen zwischen ein und sieben
unterstützen;
wie auch immer, wenn die Verstärkung
zu hoch gesetzt ist, wird Rauschen zu dem Bild hinzugefügt. Mit
dem Rauschfaktor in Gedanken wird die Verstärkung in diesem Fall beschränkt zwischen
eins und vier mit dem Mittelpunktswert von zwei.
-
In
Anwendungen wirkt sich die Einstellung der nachfolgenden Belichtung
nicht sofort aus, aber die Einstellung der Verstärkung hat einen unmittelbaren
Effekt. Deshalb wird, bevor die Belichtung einen Einfluss hat, ein
neues Bild aufgenommen werden. Wenn das neue Bild verarbeitet wird,
kann das Histogrammverarbeitungsmodul entscheiden den Zielkontrast
zu verändern.
Daher wird durch die Division des Zielkontrastes durch zwei in den
Fällen,
in welchen der Zielkontrast sich nicht ändert, die Verstärkungseinstellung
für das
n + 1 Bild gleich 2 sein. Wie auch immer, wenn sich der Zielkontrast
leicht verschiebt, kann die Verstärkung, da die Verstärkungseinstellung halbwegs
zwischen 1 und 4 ist, in eine von beiden Richtungen zu einem näher passenden
Zielkontrast geändert
werden. Das Bildgebungseinheit-Steuermodul
schreibt eine Belichtung, basierend auf dem Zielkontrast. Das Modul
schreibt die Belichtung vor dem Bild n, aber die Belichtung wird
keinen Effekt bis zum Bild n + 1 haben. Das Histogrammverarbeitungsmodul
kann einen neuen Zielkontrast zwischen Bild n und n + 1 setzen.
Wenn dies geschieht ist der einzige Weg, auf welchen das Bildgebungseinheit-Steuermodul
in der Lage sein wird, den neuen Zielkontrast für das Bild n + 1 zu erreichen
durch Änderung
der Verstärkung.
Es ist wahrscheinlich, dass der Zielkontrast, der zwischen Bild
n und n + 1 gesetzt wird nahe dem Zielkontrast, der vor dem Bild
n gesetzt wurde, ist.
-
Daher
setzt das Bildgebungseinheit-Steuermodul die neue Belichtung, so
dass, wenn der Zielkontrast zwischen Bild n und n + 1 nicht ändert, die Verstärkung, die
für Bild
n + 1 gesetzt ist, zwei sein wird. Wenn eine neuer Zielkontrast
gesetzt wird, kann die Verstärkung
aufwärts
oder abwärts
von zwei abgestimmt werden. Wenn der Zielkontrast, der zwischen
Bild n und n + 1 gesetzt wird, sinkt, aber nicht unterhalb der Hälfte des
Zielkontrastes, der vor Bild n gesetzt wird ist, wird es möglich sein,
die Verstärkung nach
unten abzustimmen, so dass wenn Bild n + 1 aufgenommen wird dieses
den neuen Zielkontrast haben wird. Desgleichen, wenn der Zielkontrast,
gesetzt zwischen n und n + 1, steigt, aber nicht das Zweifache des
Zielkontrastes, welches vor Bild n gesetzt wurde, übersteigt,
wird es mögliche
sein, die Verstärkung
nach unten zu justieren, so dass wenn Bild n + 1 aufgenommen wird,
es den neuen Zielkontrast haben wird.
-
Wenn
einmal eine nachfolgende Belichtungseinstellung vom Zielkontrast
bestimmt worden ist, wird der Bereich der nachfolgenden Belichtung verifiziert,
um sicher zu stellen, dass die anschliessende Belichtungseinstellung
unterhalb der gültigen maximalen
Belichtungseinheitstellung und oberhalb der Minimalbelichtungseinstellung
liegt. Bei 210 wird die nachfolgende Belichtung mit der
maximalen Belichtung verglichen. Wenn die nachfolgende Belichtung
den Maximalwert übersteigt,
dann wird bei 220 die nachfolgende Belichtungseinstellung
auf die maximale Belichtungseinstellung gesetzt. Eine maximale Belichtungseinstellung
ist bestimmt, um Unschärfen
auf Grund von Bewegung zu eliminieren. Je länger die Belichtungszeit, desto
wahrscheinlicher ist, dass Bewegung des Bildes Unschärfe verursachen wird
und daher erzwingt das Bildgebungseinheit-Steuermodul, das die Belichtungseinstellung
unter der Maximaleinstellung ist. Wenn die nachfolgende Belichtungseinstellung
unterhalb des Maximalwertes ist, dann wird bei 230 die
nachfolgende Belichtungseinstellung mit der Minimalbelichtungseinstellung
verglichen. Wenn die nachfolgende Belichtung unterhalb der Minimalbelichtungseinstellung
ist, dann wird bei 240 die nachfolgende Belichtungseinstellung
auf die minimale Belichtungseinstellung gesetzt, typischerweise
nach Vorgabe auf Null.
-
Bei 250 wird
bestimmt, ob die nachfolgende Belichtung gleich der aktuellen Bildgebungseinheit-Belichtung
ist. Wenn sie gleich ist, dann ist es nicht nötig, die nachfolgende Belichtung
in die Bildgebungseinheit zu schreiben. Wenn es nicht gleich ist, dann
wird bei 260 die nachfolgende Belichtungseinstellung in
die Bildgebungseinheit geschrieben.
-
Beim
Einschreiben der Belichtungs- und Verstärkungseinstellungen existiert
ein kleines Zeitfenster zwischen dem Bildende und dem Beginn des nächsten Bildes,
in welchem die Einstellungen geschrieben werden können, um
sicher zu stellen, dass sie innerhalb der verlangten Zeit in Kraft
treten. Um sicher zu stellen, dass die Belichtungs- und Verstärkungseinstellungen
innerhalb des verlangten Zeitintervalls geschrieben werden, wird
das EOF-Signal von der Bildgebungseinheit kommend synthetisiert. Das
synthetisierte EOF-Signal ist ein Puls und wird entweder erklärt oder
ein "wahr"-Zustand existiert während einer
Zeitperiode, in der es gültig
ist, die Belichtungs- und Verstärkungseinstellungen
zu schreiben. Auf diese Weise bewirkt die führende Flanke des Pulses, das
Bildgebungseinheit-Steuermodul auszuführen und auf das EOF zu antworten
und nachdem die Belichtungs- und Verstärkungseinstellungen in die
Bildgebungseinheit geschrieben worden sind, dass das Signal geprüft wird,
um festzustellen, dass es noch immer wahr ist. Wenn festgestellt wird,
dass das Signal wahr ist, dann ist das Bildgebungseinheit-Steuermodul
dazu beschaffen, die Belichtungs- und Verstärkungseinstellungen innerhalb des
benötigten
Zeitabschnitts zu schreiben. Wenn die Feststellung getroffen wird,
dass das Signal nicht wahr ist, hat das Bildgebungseinheit-Steuermodul der
Wahrscheinlichkeit Rechnung zu tragen, dass es sein Fenster der
Möglichkeit,
die Belichtungs- und Verstärkungseinstellungen
zu schreiben, verpasst hat. In diesem Fall wird das Bildgebungseinheit-Steuermodul
Daten in die gemeinsame Datenstruktur, die anzeigt, dass die Belichtung
unbekannt ist, schreiben. Das Histogrammverarbeitungsmodul muss
wissen, was der aufgenommene Kontrast war, um den Zielkontrast zu
berechnen. Daher wird, wenn die Belichtung dem Histogrammverarbeitungsmodul
unbekannt ist, das Bild ignorieren, wenn es versucht, den neuen
Zielkontrast zu berechnen.
-
Wenn
einmal die nachfolgende Belichtung in die Bildgebungseinheit geschrieben
worden ist, wird bei 270 eine Bestimmung gemacht, um festzustellen, dass
die nachfolgende Belichtungseinstellung in die Kamera geschrieben
worden ist, während
das EOF-Signal erklärt
worden ist. Wenn die nachfolgende Belichtung innerhalb der Durchstellungszeit
geschrieben worden ist, wird ein INTIME-Flag 280 gesetzt.
Wenn die nachfolgende Belichtung nicht innerhalb der Durchsetzungszeit
geschrieben worden ist, dann wird bei 290 das INTIME-Flag gelöscht.
-
Bei 300 wird
eine Bestimmung gemacht, um festzustellen, ob die nächste Belichtung
auf eine unbekannte Belichtungskonstante gesetzt ist. Die unbekannte
Belichtungskonstante besagt, dass die Belichtung zu spät geschrieben
worden sein könnte
und daher ist es nötig,
der Konstante die nächste
Belichtung zuzuordnen, um anzuzeigen, dass die Belichtung unbekannt
ist. Wenn die nächste
Belichtung auf die unbekannte Belichtungskonstante gesetzt ist, dann
ist es nicht nötig,
eine nachfolgende Verstärkungseinstellung
zu berechnen. Wenn die nachfolgende Belichtung nicht auf die unbekannte
Belichtungskonstante gesetzt worden ist, wird bei 310 der Zielkontrast
(vom Histogrammverarbeitungsmodul) dividiert durch die Belichtung
für das
nächste
aufzunehmende Bild (beispielsweise nächste Belichtungseinstellung)
berechnet. Die nachfolgende (beispielsweise neue) Verstärkungseinstellung
wird ihre Wirkung auf das nächste
Bild, das aufgenommen wird, entfalten. Da die Belichtung bereits
für das
nächste Bild
gesetzt worden ist, muss die neue Verstärkungseinstellung, basierend
auf der nächsten
Belichtung, berechnet werden. Nachdem die Verstärkungseinstellung abgeleitet
ist, wird ihr Bereich überprüft, um sicherzustellen,
dass er innerhalb der Maximum- und Minimumverstärkungseinstellungen gesetzt
ist. Wie bereits vorhergehend festgestellt, wird der Verstärkungsbereich
innerhalb von 1 bis 4 gesetzt. Bei 320 wird die nachfolgende
Verstärkung
mit der Maximalverstärkung
verglichen. Wenn die nachfolgende Verstärkung den Maximalwert überschreitet,
dann wird bei 330 die nachfolgende Verstärkungseinstellung auf
die Maximumverstärkungseinstellung
gesetzt. Wenn die Verstärkung
zu hoch ist, wird Rauschen im Analogbildsignal zu stark verstärkt und
ein Bild erzeugt, welches die Zeichenerkennungs- und Kodiermodule
möglicherweise
nicht in der Lage sind zu verarbeiten. Wenn die nachfolgende Verstärkungseinstellung
unterhalb des Maximalwertes ist, dann wird bei 340 die
nachfolgende Verstärkungseinstellung mit
der Minimumverstärkungseinstellung
verglichen. Wenn die nachfolgende Verstärkung unterhalb der Minimumverstärkungseinstellung
ist, dann wird bei 350 die nachfolgende Verstärkungseinstellung
auf die Minimumverstärkungseinstellung
gesetzt. Eine Minimumverstärkungseinstellung
ist auf den Wert von eins gesetzt. Wenn einmal die Verstärkungseinstellung
innerhalb des erforderlichen Bereichs ist, wird bei 360 dieser
in die Bildgebungseinheit geschrieben.
-
Wenn
einmal die Verstärkung
und Belichtung in die Bildgebungseinheit geschrieben sind, dann wird
bei 370 die aktuelle Belichtung auf die nächste Belichtung
(beispielsweise die Belichtung, die gesetzt worden ist, als das
Modul letztmalig ausgeführt wurde)
gesetzt. Dann wird bei 380 eine Bestimmung vorgenommen,
um festzustellen, ob die aktuelle Belichtung auf die unbekannte
Belichtungskonstante gesetzt ist. Wenn die gegenwärtige Belichtung
auf die unbekannte Belichtungskonstante gesetzt ist, dann wird bei 390 der
gegenwärtige
Kontrast auf die unbekannte Belichtungskonstante gesetzt. Wenn die gegenwärtige Belichtung
nicht auf die unbekannt Belichtungskonstante gesetzt ist, dann wird
bei 400 der gegenwärtige
Kontrast auf das Produkt der gegenwärtigen Belichtung und der nachfolgenden
Verstärkung
gesetzt.
-
Wenn
einmal der gegenwärtige
Kontrast gesetzt worden ist, dann wird bei 410 eine Überprüfung gemacht,
um sicher zu stellen, dass das INTIME-Flag gesetzt ist. Wenn das
INTIME-Flag gesetzt ist, dann wird bei 420 die nächste Belichtung
auf die Kamerabelichtung (beispielsweise der Belichtungswert, der in
der Bildgebungseinheit gesetzt ist) gesetzt. Wenn das INTIME-Flag
nicht gesetzt ist, dann wird bei 430 die nächste Belichtung
auf die unbekannte Belichtungskonstante gesetzt.
-
Das
Modul bestimmt dann bei 440 ob das nächste Bild ein aufgenommenes
Bild ist und, wenn dem so ist, wird bei 450 der aufgenommene Kontrast auf
den gegenwärtigen
Kontrast gesetzt.
-
Histogrammverarbeitungsmodul
-
Das
Histogrammverarbeitungsmodul dient dem Einstellen der Bildgebungseinheiteinstellungen und
des Kontrasts, so dass der Weissabgleichwert eines aufgenommenen
Bildes innerhalb des optimalen Bereichs für eine Zeichenerkennung und
Barcode Dekodierung sein wird. Um dies zu tun, erzeugt das Histogrammverarbeitungsmodul
ein Histogramm für ein
Bild und nutzt den Kontrast des Bildes und das Histogramm, um einen
neuen Kontrast (beispielsweise den Zielkontrast) für das nächste Bild zu
bestimmen, so dass das nächste
Bild einen Weisswert haben wird, der sich nähert oder innerhalb des Bereichs des
Zieloptimalweisswertes sein wird.
-
4 stellt
ein Flussdiagramm der Verarbeitung innerhalb des Histogrammverarbeitungsmoduls entsprechend
der vorliegenden Erfindung dar. Bei 500 erfragt der Bilddekodierer
ein richtig belichtetes Bild und bei 510 veranlasst dies
einen Aufnahmebefehl, der vom Histogrammverarbeitungsmodul an die Bildgebungseinheit-Hardware
erlassen wird.
-
Das
Histogrammverarbeitungsmodul erhält einen
Linien-Interrupt,
wenn der Bildkodierer jede n-Linien von Daten erhält. In einer
Ausführungsform der
Erfindung wird der n-Wert auf 24 gesetzt, obwohl jeder andere Wert
für n auch
gesetzt werden kann. Bei 520 wartet der Histogrammverarbeitungsfluss
auf das Auftreten des Linien-Interrupts und während dieser Zeit kann das
Betriebssystem der Bildgebungseinheit anderen Threads oder Tasks
erlauben, während
der Wartezeit zu laufen. Bei 530 erzeugt das Histogrammverarbeitungsmodul
ein Histogramm des Bildes wie es aufgenommen ist. In der n = 24
Ausführung
erhält
einmal nach jeder 24. Bildlinie das Histogrammverarbeitungsmodul
einen Interrupt und es fügt
die neuen Daten zu einem laufenden Histogramm der Daten zu.
-
Bei 540 wird
eine Bestimmung vorgenommen, ob das Bild vollständig erfasst worden ist. Wenn das
Bild nicht vollständig
erfasst worden ist, dann kehrt die Histogrammverarbeitung zu 520 zurück und wartet
auf das Auftreten des Linien-Interrupt, so dass eine weitere Aktualisierung
des Histogramms auftreten kann. Wenn das Bild vollständig und
das Histogramm akualisiert worden ist, dann bestimmt bei 550 das Histogrammverarbeitungsmodul
den Weisswert des Bildes. Das Histogramm wird durchsucht, um einen
Weisswert zu finden, so dass 6,25% der Pixel eine höhere Intensität als der
Weisswert haben. Der 6,25 Wert bestimmt den Weisswert für das spezielle Bild.
Bei 560 wird bestimmt, ob der Weisswert des Bildes innerhalb
eines akzeptablen Dekodierbereichs ist. Wenn der Weisswert innerhalb
des akzeptablen Dekodierbereichs ist, dann wird das Bild bei 570 an den
Dekodierer zurückgegeben.
-
Wenn
der Weisswert ausserhalb des akzeptablen Dekodierbereichs liegt,
dann nutzt bei 580 der Histogrammverarbeitungscode den
Weisswert, um einen neuen Kontrast zu berechnen, so dass der Weisswert
nachkommender Bilder innerhalb des optimalen Bereichs sein wird.
Unter Berücksichtigung der
linearen Eigenschaften der Verstärkungs-
und Belichtungseinstellungen kann der neue Kontrast vom Kontrast
und dem Weisswert des aufgenommenen Bildes durch Ausführung einer
einfachen linearen Skalierung berechnet werden. Die lineare Skalierung
wird durch Berechnung eines Offset-Weisswertes, der gleich dem Weisswert
des Bildes, vermindert um ein Schwarzniveau, ausgeführt. Das
Schwarzniveau ist der Pixelwert, der von der Bildgebungseinheit
zurückgegeben
wird, wenn das Bild gar keine Belichtung hat. Zusätzlich wird
ein Offset-Ziel berechnet, welches der Zielweisswert, definiert
als der optimale Weisswert minus dem Schwarzniveau, ist. In dieser
Hinsicht ist der neue Zielkontrast für nachkommende Bilder gleich
dem Kontrast des aktuellen Bildes multipliziert mit dem Offset-Zielweisswert
dividiert durch den Offset-Weisswert
des Bildes (Kontrast des aktuellen Bildes × Offset-Zielwert/Offsetweisswert
des aktuellen Bildes = neuer Zielkontrast).
-
Im
Fall eines überbelichteten
Bildes ist es nicht möglich,
eine Linearskalierung zur Bestimmung des neuen Zielweisswertes durchzuführen, weil
es auf Grund von Sättigung
im Digitalisierer der Bildgebungseinheit nicht möglich ist, den Weisswert des
aktuellen Bildes genau zu bestimmen. In diesem Fall wird bestimmt,
dass das Bild überbelichtet
ist, wenn 6,25% der Pixel einen grösseren als ein Maximalwert haben
und wenn es einige Pixel gibt, die eine maximale Belichtung haben.
Die Anzahl der maximal belichteten Pixel wird als Argument benutzt,
um empirisch eine Funktion abzuleiten, die bestimmt, wie stark der
Kontrast nachgestellt werden muss, um ein Bild mit einem Weisswert
von 255 zu erhalten.
-
Nachdem
die Menge der erforderlichen Kontrastanpassung, um ein Bild mit
einem Weisswert von 255 zu erzeugen bestimmt ist, wird dann der
Kontrast unter Benutzung der hierin beschriebenen linearen Skalierung
berechnet, um dadurch den maximalen Weisswert nach unten auf den
Zielweisswert zu justieren und das Resultat dieser Anpassung ist
ein neuer Zielkontrast, der bei 590 dem Bildgebungseinheit-Steuermodul
mitgeteilt wird.
-
Nachdem
das Histogrammverarbeitungsmodul festgestellt hat, dass es ein Bild
aufgenommen hat, dessen Weisswert innerhalb des optimalen Weisswertbereichs
zur Zeichenerkennung und/oder Dekodierung liegt, benachrichtigt
es das Zeichenerkennungs- und Dekodiermodul darüber, dass ein gültiges Bild
aufgenommen worden ist. An diesem Punkt kann das Zeichenerkennungs-
und Dekodiermodul das Bild aus dem RAM abrufen und seine Verarbeitung
an dem Bild durchführen.
-
Dieses
Dualmodulschema erlaubt es für
die Belichtung, diese während
eines spezifischen Zeitintervalls in der Bildgebungseinheit-Bildperiode
in die Bildgebungseinheit zu schreiben. Eine Echtzeitantwort kann
verwirklicht werden, um mit dem Status der Bildgebungseinheit Schritt
zu halten und auf jede Bildsignale von der Bildgebungseinheit zu
antworten. Das Bildgebungseinheit-Steuermodul, das die Kamera steuert,
ist in einer Interrupt-Serviceroutine oder einer andere Hochprioritätsroutine
oder einem Echtzeit-Thread
implementiert. Das Histogrammverarbeitungsmodul, das die Berechnung
an dem Bild zur Bestimmung, welche Belichtung und Verstärkungseinstellungen
benutzt werden sollten, ist in einem Task implementiert. Diese Routine
erlaubt dem Modul, welches die intensiven CPU Berechnungen durchführt, auf
einem Task-Niveau zu existieren, während das Modul, welches die
Bildgebungseinheit steuert und eine Echtzeitantwort verlangt, in
einer Interrupt-Serviceroutine existiert, wo es strenge Zeitkriterien
erfüllen
kann. Das Gesamtresultat ist, dass die Belichtung fliegend angepasst
werden kann, um Echtzeitbelichtungseinstellungen zu beeinflussen, die
das aktuell aufgenommene Bild wiedergibt.
-
Viele
Modifikationen und andere Ausführungsformen
der Erfindung werden dem Fachmann auf dem Gebiet, zu welchem die
Erfindung gehört und
welcher den Nutzen aus den Lehren, die in der vorangehenden Beschreibungen
und den dazu gehörigen
Zeichnungen präsentiert
sind, zieht, in den Sinn kommen. Daher ist es so verstanden, dass
die Erfindung nicht auf die offenbarten spezifischen Ausführungsformen
begrenzt ist, und dass Modifikationen und andere Ausführungsformen
vorgesehen sind, innerhalb des Bereichs der abhängigen Ansprüche miteingeschlossen
zu sein.