-
Die
vorliegende Erfindung betrifft ein Verfahren zum Betreiben eines
Bildverarbeitungssystems, bei dem sowohl ein Standbild von einer
mit einem Computersystem verbundenen Digitalkamera aufgenommen als
auch Videostromoperationen ausgeführt werden können.
-
Die
Digitalkamera wurde jüngst
als ein transportables System entwickelt, das digitale Standbilder gewinnt
und in elektronischer Form speichert. Die Bilder können auf
unterschiedlichste Weise verwendet werden, wie beispielsweise in
einem "elektronischen" Fotoalbum angezeigt
oder verwendet werden, um grafische Computeranwendungen auszuschmücken. Die
Digitalkamera hat eine einer herkömmlichen chemischen Filmkamera
sehr ähnliche
Bedieneroberfläche,
aber die Bilder werden vollständig
unter Verwendung elektronischer Festkörperschaltungen und Bildverarbeitungstechniken
aufgenommen und gespeichert.
-
Eine
typische Digitalkamera weist einen elektronischen Bildsensor auf,
der von einem Objekt oder einer Szene reflektiertes, durch eine
optische Schnittstelle einfallendes Licht aufnimmt. Die optische
Schnittstelle kann ein Linsensystem, einen Blendenmechanismus und
möglicherweise
ein Lichtfilter umfassen. Der Sensor kann üblicherweise als ein Array
von ladungsgekoppelten Bauelementen (CCD) oder Komplementär-Metall-Oxid-Halbleiter(CMOS)-Fotoerfassungsschaltungen
implementiert sein, die lichtgenerierte Signale in Abhängigkeit von
dem einfallenden Licht erzeugen. Analogsignale aus dem Sensor werden
in ein Digitalformat durch einen Analog-Digital-Umsetzer (A/D-Umsetzer) konvertiert
und dann weiter durch Logikschaltungen und/oder einen programmierten
Prozessor verarbeitet, um ein aufgenommenes Digitalbild des Objekts oder
der Szene hervorzubringen. Das aufgenommene Bild wird vorübergehend
in einem internen Speicher mit wahlfreiem Zugriff (RAM) gespeichert
und kann dann außerdem
in einem entnehmbaren lokalen Speicher in der Kamera gespeichert
werden. Der interne RAM speichert ein einzelnes Bild, aber der entfernbare
lokale Speicher kann eine Reihe von Bildern speichern. Darüber hinaus
können
Bilder zu einem mit der Digitalkamera verbundenen Computer zur Speicherung
als elektronische Dateien, zur Anzeige an einen Benutzer, für eine weitere
grafische und Bildverarbeitung, um die Qualität des Bildes zu verbessern,
und zur Verwendung mit anderer Grafiksoftware übertragen werden.
-
Die
meisten Käufer
von Digitalkameras haben Zugriff auf ein Personalcomputer(PC)-System zum
Betrachten der Standbilder. Folglich könnten diese Käufer auch
Gefallen daran finden, ihre Digitalkamera zu verwenden, um mit einer
anderen Person zu kommunizieren, wie beispielsweise in einer Videokonferenzanwendung
mit einem anderen Computer, um die andere Person sowohl zu sehen
als auch zu hören.
Jedoch sind die meisten Digitalkameras typischerweise so konfiguriert,
daß sie
nur Standbilder bereitstellen. In ähnlicher Weise arbeiten Kameras, die
für Videokonferenzen
verwendet werden, typischerweise nicht als Standbildkamera, wenn
sie von dem Computer entkoppelt werden. Als Reaktion auf diese Einschränkungen
wurde eine Digitalkamera und eine zugehörige Bildverarbeitungsarchitektur entwickelt,
die eine "Dual-Modus"-Verwendung der Kamera
sowohl für
Video gestattet, bei der die Kamera mit einem Computer für Videozwecke
verbunden ("angebunden") sein kann, als
auch für
die Standbildaufnahme transportabel betrieben werden kann. Ein derartiges
System kann Standbild- und Videobilder über das gleiche Signalverarbeitungssystem
bereitstellen, wodurch die Kosten des Kaufens separater Standbild-
und Videokameras für
den Verbraucher vermieden werden.
-
Jedoch
weisen derartige Dual-Modus-Kameras eine ihnen eigene Einschränkung dahingehend auf,
daß der
Standbildaufnahmemodus nur verwendet wird, wenn die Kamera auf eine
transportable Nicht-Video-Weise betrieben wird. Wenn die Kamera in
dem Videomodus benutzt wird (so beispielsweise dann, wenn sie mit
einem PC für
Videokonferenzen verbunden ist), so überschreibt die Serie von aufgenommenen
Bildern, die die Videoeinzelbildsequenz darstellen, irgendwelche
in dieser Zeit vorliegenden Standbilder, welche in der Kamera aufgenommen und
in ihrem internen RAM gespeichert sein könnten, wodurch gleichzeitige
Videolaufbild- (video streaming) und Standbildaufnahmeoperationen
unmöglich gemacht
werden.
-
Aus
dem US-Patent 5,574,934 ist ein Videokonferenzsystem bekannt mit
einer analogen Videokamera, die über
eine Videokarte mit einem Computersystem gekoppelt ist. von der
analogen Videokamera werden analoge Videosignale erzeugt und mit Hilfe
eines Analog-Digital-Umsetzers auf der Videokarte in ein digitales
Format konvertiert. Die Videokarte enthält außerdem einen Video-RAM zum
Speichern der digitalisierten Videobilder. Da sich der Video-RAM
auf der Videokarte des Systems befindet, kann auf einfache Weise
ein Video-RAM verwendet werden, der groß genug ist, um 2 oder mehr
Bilder oder Einzelbilder (Frames) zu speichern. So kann ein Dualmodusbetrieb
(z.B. ein Aufnehmen eines Standbilds gleichzeitig mit kontinuierlichen
Videostromoperationen) aufgrund des auf der Videokarte vorhandenen
großen
Video-RAM in dem Videokonferenzsystem implementiert werden.
-
Aufgabe
der Erfindung ist es, ein Verfahren zum Bereitstellen gleichzeitiger
Videolaufbild- und Standbildaufnahmeoperationen in einer mit einem Computer
verbundenen Digitalkamera zu schaffen, das bzw. die die Nachteile
und Einschränkungen
des Standes der Technik überwindet,
ohne die Kosten der Kamera zu erhöhen.
-
Diese
Aufgabe wird erfindungsgemäß durch ein
Verfahren mit den Merkmalen des Anspruchs 1 gelöst.
-
Vorteilhafte
und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
-
Die
Merkmale und Vorteile der vorliegenden Erfindung werden aus der
folgenden detaillierten Beschreibung der vorliegenden Erfindung
ersichtlich, in welcher:
-
1 eine
Darstellung der Systemumgebung eines Ausführungsbeispiels der vorliegenden Erfindung
ist;
-
2 eine
logische Blockdarstellung einer Digitalbildaufnahmeeinrichtung,
wie beispielsweise einer Digitalkamera, ist;
-
3 eine
Architektur eines Digitalkamerabildverarbeitungssystems nach einem
Ausführungsbeispiel
der vorliegenden Erfindung veranschaulicht;
-
4 ein
logisches Ablaufdiagramm der Signalverarbeitungsschritte, die in Übereinstimmung mit
einem Ausführungsbeispiel
der vorliegenden Erfindung durchgeführt werden, ist;
-
5 eine
Blockdarstellung der Host-Computersystembasierten Komponenten ist,
die mit der Digitalkamera zusammenwirken;
-
6 eine
Blockdarstellung eines Kameragerätetreibers
ist; und
-
7A und 7B Ablaufdiagramme
der Schritte zum Aufnehmen und Wiedergewinnen eines Standbildes
aus der Digitalkamera sind.
-
In
der folgenden Beschreibung werden verschiedene Aspekte der vorliegenden
Erfindung beschrieben. Für
Fachleute ist es jedoch klar, daß die vorliegende Erfindung
mit nur einigen oder auch sämtlichen
Aspekten der vorliegenden Erfindung ausgeführt werden kann. Aus Gründen der
Erläuterung
werden spezielle Anzahlen, Materialien und Konfigurationen angegeben,
um ein besseres Verständnis
der vorliegenden Erfindung zu erreichen. Für einen Fachmann ist es jedoch
ebenfalls klar, daß die
vorliegende Erfindung auch ohne die speziellen Details ausgeführt werden
kann. An anderen Stellen werden gut bekannte Merkmale fortgelassen
oder vereinfacht, um die vorliegende Erfindung nicht zu verdunkeln.
-
Ein
Ausführungsbeispiel
der vorliegenden Erfindung ist ein Verfahren und eine Einrichtung
zum Bereitstellen wahrer Dual-Modus-Merkmale
für eine Digitalkamera,
wodurch die Digitalkamera und ein zugehöriges Computersystem die gleichzeitige
Aufnahme von Standbildern und Videolaufbildoperationen (video streaming
operations) unterstützen.
Die Dual-Modus-Standbildaufnahme
gemäß der vorliegenden
Erfindung wird wahrscheinlich durch irgendjemanden verwendet, der
den kon tinuierlichen Video-Betriebsmodus (streaming video) verwendet,
um die Inhalte einer Reihe von auf einem Computermonitor angezeigten
Bildern zu überwachen,
während auf
eine richtige Bildzusammensetzung gewartet wird, bevor ein Standbildaufnahmekommando
ausgegeben wird. Beispielsweise kann ein professioneller Fotograf,
ein Hobbyfotograf oder gar ein Anfänger den Dualmodus benutzen,
um ein Bild mit seiner Digitalkamera aufzunehmen, während er
gleichzeitig ein Video einer Szene filmt. Bei einem anderen Beispiel
werden in einem Videomodus betriebene Kameras manchmal als Überwachungs kameras
verwendet. Unter Verwendung der vorliegenden Erfindung kann ein
Bediener Standbildaufnahmekommandos ausgeben, wenn interessierende überwachte
Ereignisse auftreten. Alternativ kann ein Echtzeitbildanalyseprogramm
automatisch Standbildaufnahmekommandos erzeugen, wenn die Szenenzusammensetzung,
die von der Kamera aufgezeichnet wird, interessant wird oder mit
modifizierbaren vorgegebenen Parametern übereinstimmt.
-
1 ist
eine schematische Darstellung der Systemumgebung eines Ausführungsbeispiels
der vorliegenden Erfindung. Eine Digitalkamera 10 wird von
einem (nicht gezeigten) Benutzer betrieben, um Standbilder aufzunehmen,
und um Videolaufbilder zu erzeugen. Die Digitalkamera ist mit einem
Host-Computersystem 12 über
ein Kabel 14 gekoppelt. Das Host-Computersystem kann irgendein
Mehrzweckcomputersystem sein, einschließlich eines Personalcomputers
(PCs), einer Workstation und dergleichen, die sämtlich wenigstens eine Verarbeitungseinheit und
wenigstens einen Speicher zum Speichern maschinenlesbarer Befehle
aufweisen. Bei einem Ausführungsbeispiel
implementiert das System die Kommunikationsschnittstelle des universellen
seriellen Busses (USB). Der USB ist eine Peripheriebusspezifikation,
die ein "plug and
play" von Computerperipherieeinrichtungen
außerhalb
des PCs bringt, die Notwendigkeit zum Installieren gedruckter Schaltungsplatinen
in spezielle Computersteckplätze
und zum Umkonfigurieren des Systems, wenn eine neue Peripherieeinrichtung
hinzugefügt
wird, beseitigt. Mit dem USB ausgestattete Computer ermöglichen
es, daß Peripherieeinrichtungen
automatisch konfiguriert werden, sobald sie physisch angekoppelt
sind. Der USB ist in 1 als Kabel 14 dargestellt.
Alternativ können
andere Kommunikationsschnittstellen zwischen einem Computersystem
und Computerperipherieeinrichtungen verwendet werden.
-
2 ist
eine logische Blockdarstellung einer Digitalbildaufnahmeeinrichtung,
wie beispielsweise einer Digi talkamera. Die Digitalkamera 100 arbeitet
in wenigstens zwei Betriebsmodi, um Stand- und Videobilder über das
gleiche Signalverarbeitungssystem bereitzustellen. Bei einem Ausführungsbeispiel
liefert das Signalverarbeitungssystem Video- und Standbilddaten aus den gleichen
detaillierten ursprünglichen
Bildsensorsignalen, indem digitale Bildverarbeitungsoperationen
in einer verketteten Weise durchgeführt werden. Die ursprünglichen
Bildsensorsignale werden digitalisiert und zum räumlichen Skalieren aufbereitet
und dann in komprimierte Daten dekorreliert und codiert. Die verschiedenen
Bildverarbeitungsoperationen werden in einer umprogrammierbaren
Logikschaltung implementiert, auf die über einen Computerbus, wie
beispielsweise den USB, zugegriffen werden kann, oder alternativ
durch Programmieren eines Hochleistungsdatenprozessors, um die Operationen
in Software auszuführen.
-
Die
Digitalkamera 100 enthält
einen Video- und Standbildverarbeitungsblock 110, eine
ein Linsensystem 104 und eine Blende 108 aufweisende optische
Schnittstelle, die dem einfallenden Licht ausgesetzt wird, das von
einem Objekt 102 reflektiert wird, dessen Bild aufgenommen
werden soll. Die Kamera 100 kann darüber hinaus ein Blitzlicht oder
einen elektronischen Blitz zum Erzeugen einer zusätzlichen
Beleuchtung enthalten, um das Objekt 102 zusätzlich zu
beleuchten, wenn die Kamera bei Bedingungen geringer Beleuchtung
betrieben wird.
-
Das
Linsensystem 104 weist vorzugsweise eine feste Brennweite
auf, welche sowohl für
Video- als auch Standbildoperationen akzeptabel ist, da ein Abfall
in der Modulationsübertragungsfunktion
(MTF) der optischen Schnittstelle (und somit eine Verschlechterung
der Bildqualität)
für Objekte
im Nahbereich (wie beispielsweise das Gesicht eines Benutzers während einer
Videokonferenz) im Videomodus toleriert werden kann. Die optische
Schnittstelle weist einen Blendenmechanismus 108 auf, um
die Menge des auf den Sensor auftreffenden Lichtes und die Tiefenschärfe zu steuern
und kann sowohl für
Video- als auch für
Standbildbetrieb mit nur zwei Einstellungen konfiguriert werden,
wie es unten beschrieben wird.
-
Die
optische Schnittstelle kanalisiert das einfallende Licht auf einen
elektronischen Bildsensor 114. Der Bildsensor 114 weist
eine Reihe von Pixeln auf, welche elektrisch auf die einfallende
Lichtintensität
und -farbe ansprechen. Der Sensor 114 erzeugt Signale,
die ein aufgenommenes Bild mit einer ausreichenden Auflösung darstellen,
um als Standbild akzeptabel zu sein. Ein (nicht gezeigter) A/D-Umsetzer,
der die vom Licht erzeugten analogen Sensorsignale empfängt, kann
in dem Sensor 114 enthalten sein und wird verwendet, um
digitale Sensorsignale zu erzeugen, die ein Digitalbild des belichteten
Objekts 102 und der begleitenden Szene definieren. Alternativ
stellt der Sensor 114 Analogsignale dem Block 110 zur
Verfügung,
welcher wiederum eine Analogsignalverarbeitung an den Signalen durchführen kann,
bevor er sie in ein digitales Format konvertiert. Bei beiden Szenarien
definieren die digitalisierten Sensorsignale somit Bilddaten, welche
dann gemäß der Bildverarbeitungsmethodik
durch den Video- und Standbildblock 110 verarbeitet werden,
um Standbilder oder eine Sequenz von Videobildern, die eine Bewegung
des belichteten Objekts oder der Szene zeigen, zu bilden, was davon
abhängt,
ob der Standbild- oder der Video-Betriebsmodus
ausgewählt
worden ist.
-
Die
Modusauswahl kann von dem Benutzer der Einrichtung 100 über (nicht
gezeigte) mechanische Steuereinrichtungen an der Einrichtung 100 vorgenommen
werden. Einstellungen mechanischer Knöpfe können von einer lokalen Benutzerschnittstelle 158 empfangen
und in Steuersignale und Daten umgesetzt werden, die von einer Systemsteuereinrichtung 160 verarbeitet
werden sollen. Die Einrichtung 100 kann mit einem Host-Computer, wie beispielsweise
einem PC, für
den Videomodus über
eine Host-PC-Kommunikationsschnittstelle 154 verbunden werden.
Diese Host-PC-Kommunikationsschnittstelle verbindet mit dem Kabel 14 gemäß 1,
Der Videomodus kann nur dann verwendet werden, wenn die Kamera mit
dem Computersystem verbunden ist. Der Benutzer kann die Modusauswahl über eine
auf dem Host 12 gemäß 1 ablaufende
Software vornehmen, welche wiederum die richtigen Steuersignale
und Daten an die Systemsteuereinrichtung 160 über die
Host-PC-Schnittstelle 154 übermittelt.
-
Die
Systemsteuereinrichtung 160 organisiert die Aufnahme von
Video- und Standbildern in Abhängigkeit
von der von dem Benutzer in der oben ausgeführten Weise getroffenen Modusauswahl.
Die Systemsteuereinrichtung 160 konfiguriert den Video-
und Standbildverarbeitungsblock 110, um entweder Standbilddaten
oder Videobilddaten, die eine Sequenz von Videoeinzelbildern zeigen,
bereitzustellen. Die Bilder werden dann innerhalb der Einrichtung 100 gespeichert
und/oder zu dem Host/PC für
eine Dekompression (sofern die Bilder komprimiert worden sind),
Wiedergabe und/oder Anzeige übertragen.
-
Die
Digitalkamera 100 enthält
eine lokale Speichereinrichtung 122, welche die Standbilddaten empfängt und
speichert. Die Speichereinrichtung 122 kann einen Flash-Halbleiterspeicher
und/oder eine Einrichtung mit einem rotierenden Medium enthalten. Der
Flash-Speicher kann entnehmbar sein, wie beispielsweise der von
der Intel Corporation im Handel erhältliche Miniaturkarten-Flash-Speicher.
Das rotierende Medium kann ebenfalls entnehmbar oder fest eingebaut
sein und kann von der Art einer Magnetplatte oder einer anderen
Art sein, die zum Speichern von Bilddateien geeignet ist.
-
Die
Bilddaten können
auch über
die Host-PC-Kommunikationsschnittstelle 154 aus der Kamera 100 heraus übertragen
werden. Die Kommunikationsschnittstelle 154 kann so konfiguriert
werden, daß sie
sowohl Standbild- als auch Videobilddaten zu dem Host-PC in Übereinstimmung
mit einem Computerperipheriebusstandard überträgt. Die verwendeten Busstan dards
sind beispielsweise die serielle Schnittstelle RS-232, der universelle
serielle Bus (USB) oder der Hochleistungsstandard 1394–1995 des
Institute of Electrical and Electronics Engineers (IEEE).
-
Wie
oben erwähnt,
ist die Kamera sowohl optisch als auch elektronisch so konfigurierbar,
daß sie in
eine Reihe von Modi betrieben werden kann, die einen Videomodus,
wie beispielsweise während
Videokonferenzen, und einen Standbildmodus, wie beispielsweise dann,
wenn Bilder in einer der Verwendung herkömmlicher transportabler Kameras ähnlichen
Weise aufgenommen werden, einschließen. Von einem optischen Standpunkt
aus ist ein Linsensystem 104 mit fest vorgegebener Brennweite,
wie beispielsweise eines, das eine effektive Brennweite von 10 mm
aufweist, vorzuziehen und kann für
beide Modi verwendet werden, um die Kosten der Herstellung des Apparats
gemäß dem Ausführungsbeispiel zu
reduzieren. Bei dem in Videokonferenzen und bei Anwendungen mit
schnellen Einzelbildraten zum Einfangen einer Bewegung verwendeten
Videomodus kann eine Blende 108 von etwa f/2 ausgewählt werden.
Der primäre
Brennpunkt für
diese Blendeneinstellung liegt vorzugsweise bei einem Abstand von etwa
einem Meter für
das Objekt 102 bei einer Tiefenschärfe für den Hintergrund, die sich
auf 2 m erstreckt.
-
In
dem Standbildbetriebsmodus können Standbilder
akzeptabler Qualität
für sowohl
Außen- als
auch Innenszenen aufgenommen werden. Für Innenszenen kann der Beleuchtungspegel
so gering sein, daß er
ein zusätzliches
Licht erfordert, das von einem Blitzlicht oder elektronischen Blitz 112 erzeugt wird.
Man würde
normalerweise eine Blende 108 zwischen f/2 und f/8 für Innenszenen
auswählen.
Innerhalb dieses Blendenbereichs befindet sich der primäre Brennpunkt
bei einem Abstand von etwa 2 m für das
Objekt bei einer Tiefenschärfe
für den
Hintergrund, die sich auf 4 m erstreckt. Für Außenszenen mit Umgebungslicht
liegt der primäre
Brennpunkt vorzugsweise bei einem Abstand von etwa 2 bis 3 m für das Objekt
bei einer Tiefenschärfe,
die sich auf unendlich erstreckt. Normalerweise würde man
eine Blende von etwa f/8 für
Außenszenen
auswählen,
um diesen Brennpunkt zu erreichen.
-
Die
Kamera 100 kann außerdem
elektronisch für
einen Dual-Modus-Betrieb konfiguriert werden, indem der Video- und
Standbildverarbeitungsblock 110 so konfiguriert wird, daß er entweder Standbilddaten
oder eine Sequenz von Videobildern bereitstellt. Bei einem Ausführungsbeispiel
implementiert der Block 110 digitale Signal- und Bildverarbeitungsfunktionen
in Form einer Logikschaltung und/oder eines programmierten Datenprozessors, um
aus detaillierten ursprünglichen
Bilddaten, die von dem Sensor 114 empfangen werden, komprimierte
Bilddaten mit einer vorgegebenen Auflösung und einem vorgegebenen
Kompressionsverhältnis zu
erzeugen. Ein derartiger Block 110 ist in 3 veranschaulicht,
welche eine logische Blockdarstellung eines Teils eines Bildverarbeitungssystems 200 einer
Digitalkamera (oder einer anderen Bildaufnahmeeinrichtung) nach
einem Ausführungsbeispiel
der vorliegenden Erfindung ist.
-
3 zeigt
für ein
Ausführungsbeispiel
der Erfindung ein Datenflußdiagramm
des Pfades, der von den Bilddaten für sowohl den Video-Betriebsmodus
als auch den Standbildbetriebsmodus genommen wird. Der Verarbeitungsblock 110 enthält eine Kette
von Bildgebungsfunktionen, welche mit einem Korrekturblock 210 beginnen
kann. Der Korrekturblock 210 wird immer dann verwendet,
wenn die Qualität
der ursprünglichen,
aus dem Sensor 114 empfangenen Bilddaten irgendeine Art
einer Vorverarbeitung rechtfertigt, bevor das Bild skaliert und komprimiert
wird. In bestimmten Fällen
führt der
Korrekturblock 210 eine Pixelsubstitution, -kompandierung
und Gammakorrektur an den ursprünglichen Bilddaten
aus, die aus dem Bildsensor empfangen werden. Die ursprünglichen
Bilddaten sollten ausreichende Details aufweisen (z.B. eine räumliche
Auflösung
von 768 × 576
oder mehr wird bevorzugt), um Standbilder akzeptabler Qualität zu erbringen.
-
Die
Pixelsubstitution kann im Block 210 durchgeführt werden,
um ungültige
Pixeldaten durch gültige
Daten zu ersetzen, um eine deterministischere Eingabe für nachfolgende
Bildgebungsfunktionen bereitzustellen. Die Kompandierung kann durchgeführt werden,
um die Auflösung
jedes Pixels (die Anzahl der Bits pro Pixel) zu verringern. Beispielsweise können die
ursprünglichen
Bilddaten mit 10 Bits pro Pixel eintreffen, wohingegen eine bevorzugte
Pixelauflösung
für die
Logikschaltung 8 Bits (1 Byte) sein kann. Eine herkömmliche
Gammakorrektur kann außerdem ausgeführt
werden, um den Informationsinhalt des Bildes an denjenigen anzupassen,
der von dem Host-Computer, bei dem das Bild schließlich angezeigt
wird, erwartet wird.
-
Andere
Funktionen, die im Block 210 an jedem empfangenen ursprünglichen
Bildrahmen durchgeführt
werden können,
umfassen eine Festmusterrauschreduktion, welche oftmals erforderlich ist,
bevor ein Bild komprimiert wird. Ob oder welche Korrekturfunktionen
durch den Block 210 ausgeführt werden, hängt, wie
bereits gesagt, allgemein von der Qualität der ursprünglichen aus dem Sensor 114 empfangenen
Bilddaten ab, sowie von irgendeiner nachfolgenden Bildverarbeitung,
wie beispielsweise einer Kompression, die durchgeführt werden
soll, bevor die Bilddaten zur Speicherung oder Übertragung an den Host-Computer
bereit sind.
-
Sobald
die ursprünglichen
Bilddaten korrigiert oder auf andere Weise in eine gewünschte Größe oder
ein gewünschtes
Format durch den Korrekturblock 210 gebracht worden sind,
können
die korrigierten Daten ggf. skaliert und komprimiert werden, um
die Übertragungs-
und Speicheranforderungen der Host-PC-Kommunikationsschnittstelle 154 und der
lokalen Speichereinrichtung 122, wie sie in 2 zu
sehen sind, zu erfüllen.
Um derartige Anforderungen zu erfüllen, kann der Verarbeitungsblock 110 eine
Skalierungs- und Kompressi onslogik 212 enthalten, um irgendeine
erforderliche Bildskalierung und Kompression vor der Übertragung
und/oder Speicherung durchzuführen.
-
Beispielsweise
kann die Skalierungs- und Kompressionslogik 212 konfiguriert
werden, um die Bildgröße und Bildauflösung zu
reduzieren, um kleinere, weniger detaillierte Videobilder im Vergleich
zu größeren und
detaillierteren Standbildern hervorzubringen. Kleinere und weniger
detaillierte Bilddaten können
erforderlich sein, um eine schnelle Sequenz von Videobildern zu übertragen,
die komprimiert und in dem Host/PC betrachtet werden sollen. Wenn
jedoch die Übertragungsverbindung
zwischen der Kamera 100 und dem Host/PC eine ausreichende Bandbreite
aufweist, um eine Sequenz von detaillierten ursprünglichen
Bilddaten bei der erforderlichen Rate an den Host/PC zu übertragen,
dann kann die Skalierungs- und Kompressionslogik 212 vereinfacht oder
sogar fortgelassen werden für
sowohl Standbild- als auch Videooperationen.
-
Eine
Reihe digitaler Bildverarbeitungsfunktionen sind für die Kompressionslogik 212,
wie sie in 3 gezeigt ist, vorgesehen. Diese
und andere in ihrer Funktion ähnliche
können
in der unten beschriebenen Weise durch einen Fachmann in Abhängigkeit von
der Leistung (Geschwindigkeit der Wiedergabe der komprimierten Bilddaten)
und der aus dem System 200 bei gegebener in der Kamera 100 verwendeter
optischer Schnittstelle gewünschten
Bildqualität konfiguriert
werden. Die Bildgebungsfunktionen wurden bei einem Ausführungsbeispiel
als separate Einheiten der Logikschaltungen implementiert, wie es
in 3 gezeigt ist und welche im folgenden beschrieben
werden.
-
Die
Skalierungslogik 214 führt
eine räumliche
2-D-Skalierung der korrigierten Bilddaten durch, um kleinere Bilder
hervorzubringen, die einfacher zu speichern oder zu übermitteln
sind. Die Skalierung wird in Übereinstimmung
mit einem ausgewählten Skalierverhältnis unter
Verwendung herkömmli cher bekannter
Techniken durchgeführt.
Das Skalierverhältnis
kann ganzzahlig oder gebrochen sein. Die Skalierung kann in einer
zweidimensionalen Weise durchgeführt
werden, indem beispielsweise zwei separate eindimensionale Skalierungsprozesse
benutzt werden.
-
Die
Skalierungslogik 214 kann sowohl für Video- als auch Standbildaufnahmen
verwendet werden, indem einfach das geeignete Skalierungsverhältnis ausgewählt wird.
Beispielsweise kann eine 4:1-Subabtastung des korrigierten Bildes
im Videomodus durchgeführt
werden, so daß 16
Pixel aus den korrigierten Bilddaten miteinander gemittelt werden, um
ein Pixel in den skalierten Bilddaten zu erzeugen. Auf der Grundlage
der Standardabtasttheorie und unter der Annahme unkorrelierter Rauschquellen kann
die Subabtastung darüber
hinaus das Signal-Rausch-Verhältnis
um einen Faktor von 4 verbessern. Geringere Skalierverhältnisse,
wie beispielsweise 2:1, können
außerdem
verwendet werden, wobei 4 Pixel miteinander gemittelt werden, um
ein einzelnes Pixel in den skalierten Bilddaten zu erzeugen, was
zu einer Verbesserung des Signal-Rausch-Verhältnisses
(SNR) von 2 führt.
Indem die detaillierteren korrigierten Bilddaten auf diese Weise
während
des Betriebs im Videomodus skaliert werden, kompensiert das System 200 das
erhöhte
Rauschen infolge des geringeren Lichtpegels, das typischerweise
beim Videobetrieb, wie beispielsweise während einer Videokonferenz,
angetroffen wird.
-
Der
nächste
in der Kette der Bildfunktionsblöcke
in 3 ist die Dekorrelations- und Codierlogik 220.
Die aus der Skalierlogik 214 empfangenen skalierten Bilddaten
werden in Vorbereitung einer Entropiecodierung, welche eine Art
einer Bildkompression ist, mit Übereinstimmung
mit einer ausgewählten
Methode einer Reihe von Dekorrelationsmethoden dekorreliert. Wiederum
kann der Benutzer eine bestimmte Dekorrelationsmethode auswählen, die zum
Erlangen der normalerweise geringer dimensionierten Videobilder
geeignet ist.
-
Die
Dekorrelationsfunktion kann Fehlerbilddaten als Differenzen zwischen
Nachbarpixeln erzeugen. Eine spezielle Methode, die zur Bilddekorrelation
verwendet werden kann, ist die digitale Pulscodemodulation (DPCM).
Um ggf. eine weitere Kompression der Bilddaten zu erhalten, beispielsweise
bei der Übertragung
einer großen
Anzahl von Videoeinzelbildern, kann ein "Verlust" in Form eines "Quantisierungs"-Fehlers (durch Abbildung einer ersten
Datenmenge auf eine geringere Menge von Werten) unter Verwendung
von DPCM eingebracht werden.
-
Die
nächste
Stufe in der Kette der Bildgebungsfunktionsblöcke ist die vom Block 222 durchgeführte Entropiecodierung,
welche eine Technik einer Codierung variabler Länge verwendet, um die dekorrelierten
Bilddaten zu komprimieren. Beispielsweise ist eine allgemein bekannte
Entropiecodierungsmethode, die verwendet werden kann, die Huffman-Codierung.
Die Entropiecodierung umfaßt
das Ersetzen von Symbolen in den dekorrelierten Bilddaten durch Bitketten
auf eine Weise, bei der unterschiedliche Symbole durch binäre Ketten
unterschiedlicher variabler Längen
dargestellt werden, wobei die am häufigsten auftretenden Symbole
durch die kürzesten
Binärketten
dargestellt werden. Die Entropiecodierungslogik 222 stellt
somit komprimierte Bilddaten zur Verfügung, wie es beispielsweise
in 3 zu sehen ist, bei der die skalierten 8-Bit-Daten
in Daten codiert werden, die eine variable Größe von 3–16 Bits aufweisen.
-
Wiederum
können
die Codierungsmethoden zum Erlangen von Video- und Standbildern
unterschiedlich und in Abhängigkeit
vom Betriebsmodus ausgewählt
werden. Beispielsweise kann ein größerer Satz von Symbolen (die
eine variable binäre
Zeichenkettenlänge
aufweisen) zum Codieren von Standbilddaten im Vergleich zu Videobilddaten
verwendet werden. Dies beruht darauf, daß in dem Host/PC mehr Zeit
verbleibt, um Standbilder zu dekomprimieren, als zum Dekomprimieren
von Videobildern. Andererseits sollte zum Codieren von Videobildern
eine eingeschränktere
Menge von Symbolen mit gleichförmigen
binären
Kettenlängen
benutzt werden, um eine schnellere Dekompression einer Serie von
Videoeinzelbildern zu erreichen. Das Vorhandensein einer gleichförmigen binären Kettenlänge gestattet
darüber
hinaus die Verwendung eines festen Betrags der Bandbreite, um die
Bilddaten zu übermitteln,
was speziell geeignet ist für
eine Host/PC-Schnittstelle, wie beispielsweise dem USB.
-
Das
Bildverarbeitungssystem 200 enthält zusätzliche Logik, die den oben
beschriebenen Dual-Modus-Betrieb erleichtert. Insbesondere verwendet
die Logikschaltung in den Blöcken 210 und 212 programmierbare
Nachschlagetabellen (LUTs) und Speicher mit wahlfreiem Zugriff (RAM)
für eine
Flexibilität
bei der Durchführung
ihrer jeweiligen Bildgebungsfunktionen. Jede LUT oder jeder RAM
liefert Informationen an ihre/seine jeweilige Bildgebungsfunktionslogik,
wie sie von der ausgewählten
Methode für den
speziellen Betriebsmodus spezifiziert werden. Beispielsweise verwendet
die Skalierungslogik 214 einen RAM-Speicherbereich, um
Skalierungszwischenberechnungen zu speichern. Auch die LUT 234 für die Dekorrelations-
und Codierlogik kann in Abhängigkeit
davon, ob Stand- oder Videobilder erwünscht sind, mit unterschiedlichen
Regeln und Daten geladen werden, die zum Durchführen der Dekorrelation und
Codierung erforderlich sind, wie sie im Stand der Technik bekannt
sind. Bei einem speziellen Ausführungsbeispiel
werden zwei Nachschlagetabellen (LUTs) für die LUT 234 verwendet,
eine zum Auflisten der Zeichen (ein sogenanntes "Codebuch") und eine zum Auflisten der Kettenlängen.
-
Es
können
verschiedene Techniken verwendet werden, um die geeigneten Werte
zu bestimmen, die in den RAM und die LUTs geladen werden sollen. Beispielsweise
kann eine Bildmessung durch die Kamerasteuereinheit 160 durchgeführt werden,
um Beleuchtungs- und andere Faktoren zu bestimmen, welche die Dekorrelation
und Entropiecodierung beeinflussen. Darüber hinaus können, wie
zuvor erwähnt, Übertragungs-
und Speicheranforderungen eine größere Kompression diktieren,
insbesondere während des
Videobetriebs, wo eine große
Anzahl von Einzelbildern erzeugt wird, so daß die LUTs für die Dekorrelation
und Entropiecodierung ein kleineres Codebuch für die Kompression der Bilddaten
enthalten.
-
Obwohl
die oben beschriebenen verschiedenen LUTs und RAM als Teil einer
einzigen physikalischen RAM-Einheit implementiert oder alternativ
in verschiedenen Kombinationen als eine oder mehrere RAM-Einheiten
kombiniert werden können,
wird jede LUT und jeder RAM vorzugsweise in einer physisch separaten
Einheit implementiert, um eine schnellere Leistung der Bildgebungsfunktionen
zu erreichen.
-
Nachdem
die Bilddaten gemäß dem gewünschten
Modus durch die Kompressionslogik 212 komprimiert worden
sind, werden die jetzt eine variable Größe aufweisenden Daten dann
zu der Datenpackeinheit 226 weitergeleitet, wo die Daten
in Datensegmente konstanter Größe und folglich
besser handhabbarer Datensegmente für eine effektivere Speicherung
und Übertragung über einen
Computerbus gepackt werden. Sofern die Bilddaten aus dem Sensor 114 ausreichend
akzeptabel sind und es keine weiteren Übertragungs- oder Speicherbeschränkungen
bei solchen Daten gibt, so wird wiederum die Datenpackeinheit überflüssig, da
die Sensorbilddaten eine konstante Größe aufweisen und auf einfache Weise
gespeichert und aus dem Apparat 100 bei minimaler Verarbeitung übertragen
werden können.
-
In
der Datenpackeinheit 226 werden die empfangenen Datenblöcke verschiedener
Größe in Blöcke gepackt,
die eine vorgegebene konstante Größe aufweisen. Beispielsweise
bei dem System 200 gemäß 3 packt
die Datenpackeinheit die komprimierten Bilddaten variabler Größe in 16-Bit-Blöcke. Die
16-Bit-Blöcke
werden dann an eine Datenflußsteuereinrichtung 238,
wie beispielsweise eine Direktspeicherzugriffs(DMA)-Steuereinrichtung,
weitergeleitet, welche dann Adreßinformationen jedem Datenblock
hinzufügt,
bevor auf einen Bus 242 zugegriffen wird, um die 16-Bit-Blöcke auf den
Bus weiterzuleiten. Die Speichersteuereinrichtung 246 nimmt
die 16-Bit-Blöcke über den
Bus 242 auf und speichert sie vorübergehend in einem Speicher,
wie beispielsweise einem (nicht gezeigten) dynamischen RAM (DRAM)
in der Kamera 100.
-
Alternativ
zur Verwendung einer entnehmbaren Speichereinrichtung kann die Host/PC-Kommunikationssteuereinrichtung 154 verwendet
werden, um sowohl die Standbilder als auch Videobilder aus der Kamera 100 hinaus
zu übertragen.
Dies kann durchgeführt
werden, indem die Standbilddaten als eine zur Übertragung unter Verwendung
des speziellen Busstandards, der in der Kommunikationsschnittstelle
verwendet wird, geeignete Plattendatei vorbereitet werden, die zu
dem Host-Computer 12 für eine Speicherung
und für
einen Zugriff durch den Host-Prozessor (nicht gezeigt) übertragen
werden soll. Die Videobilddaten können in Übereinstimmung mit bekannten
Techniken an den Host-Computer über
eine Steuerschnittstelle, wie beispielsweise USB, kontinuierlich
fortgeleitet (streamed) werden.
-
Der
Dual-Modus-Betrieb der Kamera 100 und des Verarbeitungssystems 200 wurden
im Kontext einer bus-basierten Ar chitektur beschrieben, die in 3 gezeigt
ist. Um eine Softwaresteuerung der verschiedenen Betriebsmodi in
dieser Architektur weiter zu erleichtern, kann eine Reihe von (nicht
gezeigten) speicher-abgebildeten Steuerregistern mit dem Bus 242 gekoppelt
werden, um der Systemsteuereinrichtung 160 zu ermöglichen,
die Kamera 100 und das System 200 mit dem gewünschten
Betriebsmodus zu konfigurieren. Es können Befehle vorgesehen sein
zur Ausführung
durch die Systemsteuereinrichtung, um auf die LUTs, den RAM und
die Steuerregister über
den Bus 242 zuzugreifen, um die für die richtige Bildverarbeitungsmethode
des ausgewählten Betriebsmodus
erforderlichen Parameter zu programmieren. Beispielsweise können die
unterschiedlichen Regeln und Parameter für Skalierungs-, Dekorrelations-
und Entropiecodierungsmethoden für sämtliche
Betriebsmodi als Steuerinstruktionen in der Kamera 100 während der
Herstellung gespeichert werden, wobei jedem Betriebsmodus ein unterschiedlicher
Satz von Methoden zugewiesen wird. Der geeignete Satz kann in Abhängigkeit
von einer durch den Benutzer getroffenen Modusauswahl, die entweder über die
lokale Benutzerschnittstelle 158 oder die Host/PC-Kommunikationsschnittstelle 154 ausgeführt wurde,
in den Video- und Standbildblock 110 geladen werden.
-
Obwohl
ein Ausführungsbeispiel
des Video- und Standbildblocks 110 eine Logikschaltung
darstellt, kann das Bildverarbeitungssystem 200 auch mit
einem programmierten Hochleistungsprozessor ausgerüstet werden,
der Instruktionen ausführt,
um die Digitalbildgebungsfunktionen des Blockes 110 durchzuführen. Beispielhafte
Schritte, die von einem derartigen Prozessor ausgeführt werden
können, sind
in 4 veranschaulicht und können leicht auf der Grundlage
der oben genannten Beschreibung des Korrekturblocks 210 und
der Kompressionslogik 212 in dem Video- und Standbildverarbeitungsblock 110 des
Ausführungsbeispiel
in 3 verstanden werden. Die Sequenz der Schritte
in 4 kann von der Systemsteuereinrichtung 160 oder
durch einen (nicht gezeigten) separaten speziellen Prozessor, der ebenfalls
mit dem Bus 242 gekoppelt wird, durchgeführt werden.
-
Um
die Beschreibung der Kamera zusammenzufassen: die oben beschriebenen
Ausführungsbeispiele
können
in einem Apparat, wie beispielsweise einer Digitalkamera, verwendet
werden, der sowohl in einem Standbildmodus (zur Aufnahme von Standbildern,
wenn er transportabel oder angekoppelt ist) als auch in einem Videomodus
(bei dem die Digitalkamera über
eine Computerperipheriebusschnittstelle mit einem Host-Computer
oder einem anderen Bildbetrachtungssystem verbunden ist) arbeitet.
Die Kamera weist einen Bildsensor und einen Video- und Standbildverarbeitungsblock 110 auf,
der so konfiguriert ist, daß er
detaillierte Bilder im Standbildmodus bei sowohl Innen- als auch
Außenszenen aufnimmt.
Im Videomodus kann die Kamera so konfiguriert werden, daß sie eine
Sequenz detaillierter Bilder (sofern für die Übertragung und Speicherung
erforderlich) unter Verwendung desselben Verarbeitungsblocks 110 komprimiert,
um eine Videosequenz aufzunehmen, die an den Host-Computer zur Betrachtung über eine
Computerperipheriebusschnittstelle, wie beispielsweise dem USB, übermittelt
werden kann.
-
Die
oben beschriebenen Ausführungsbeispiele
der Digitalkamera sind selbstverständlich einigen Variationen
in der Struktur und Implementierung unterworfen. Obwohl beispielsweise
der Bilddatenpfad bei dem Verarbeitungsblock 110 mit anfänglich 8
Bit Breite und bis zu 16 Bit, wenn komprimiert, gezeigt ist, erkennt
ein Fachmann, daß die
Erfindung unter Verwendung anderer Datenpfadbreiten implementiert
werden kann. Außerdem
kann die Systemsteuereinrichtung 160 mit der Datenflußsteuereinrichtung 238 zu
einer physikalischen integrierten Schaltungseinheit, wie beispielsweise
einem Mikrocontroller, kombiniert werden.
-
5 ist
eine Blockdarstellung der host-computersystem-basierten Komponenten,
die mit der Digitalkamera zusammenwirken. Die Digitalkamera 10 ist
mit dem Computersystem 12 über eine Busschnittstelle 14 gekoppelt.
Bei einem Ausführungsbeispiel
ist die Schnittstelle der USB. Ein Anwendungsprogramm zum Betrachten
eines Standbildes und/oder von voll bewegten Videobildern 300 wird
von dem Computer im Anwendungsraum ausgeführt. Das Anwendungsprogramm
kann zur Bildanzeige und -bearbeitung, für Videokonferenzen oder andere
sich auf aufgenommene Bilder und Videoströme beziehende Funktionen verwendet
werden. Das Anwendungsprogramm 300 bildet eine Schnittstelle zur
Kameragerätetreiber-Software 302,
um mit der Digitalkamera 10 zu kommunizieren. Die Kameragerätetreiber-Software
wird von dem Computersystem im Betriebssystemraum ausgeführt. Die
Schnittstelle zwischen dem Anwendungsprogramm und der Kameragerätetreiber-Software
wird durch die Linien 304, 306 und 308 in 5 gezeigt.
Die Schnittstelle 304 repräsentiert die Kommandos und
Statusnachrichten, die zwischen den zwei Komponenten weitergeleitet
werden, die Schnittstelle 306 repräsentiert die Übertragung
von Standbildern und Massendaten (wie beispielsweise Kamerainitialisierungsnachschlagetabellen
(LUTs)) und die Schnittstelle 308 repräsentiert die Übertragung
von Videobildern.
-
Die
Kameragerätetreiber-Software 302 liefert
die Schnittstelle zwischen Anwendungsprogrammen, die auf dem PC
ausgeführt
werden, und der Digitalkamera. Der Treiber koordiniert die Kommunikation
zwischen dem USB-Kabel 14 durch Interaktion mit einem Busschnittstellentreiber,
der USB-Treiber (USBD) 310 genannt
wird. Der USBD ist eine Routine auf niedriger Ebene zum Koordinieren
der Pakete für sämtliche
USB-Gerätetreiber
für das
Computersystem. Der USBD nimmt Kommandopakete aus dem Kameragerätetreiber
und konvertiert sie in elektrische Signale, die über den USB-Hub 312 gesendet werden.
Der USB-Hub 312 verbindet mit den I/O-Ports der Steuereinrichtung 314 auf
niedriger Ebene, welche mit dem USB-Kabel 14 verbinden.
Bei einem Ausführungsbeispiel
ist die Steuereinrichtung auf niedriger Ebene ein PIIX-Controller,
der von der Intel Corporation im Handel erhältlich ist.
-
Wenn
die Digitalkamera mit dem Computersystem verbunden wird, wie in 5 gezeigt
ist, wird ein von der Kamera aufgenommenes Bild im internen RAM
gespeichert, bis eine Anforderung von der Kamera empfangen wird,
das aufgenommene Bild an den Computer zu übertragen. Es gibt drei über die Schnittstelle 304 übermittelte,
sich auf die Aufnahme und Übertragung
von Standbildern beziehende Kommandos. Das erste Kommando ist das
Bildaufnahmekommando. Das Standbild- und/oder Videobetrachtungsanwendungsprogramm 300 sendet
dieses Kommando an die Digitalkamera, um die Kamera anzuweisen,
den Kamerasensor zu öffnen,
das Bild zu belichten und die Kopie des belichteten Bildes an den internen
RAM in der Kamera zu kopieren. Das zweite Kommando ist das Kommando
zum Anfordern der Größe des Bildes.
Das Standbild- und/oder Videobetrachtungsanwendungsprogramm 300 sendet
dieses Kommando an die Digitalkamera, um die Größe des aufgenommenen Standbildes
in Bytes zu erlangen. Das Anwendungsprogramm weist dann einen Abschnitt
des Speichers in dem Host-Computersystem zu, der das Standbild halten
soll. Das dritte Kommando ist das Kommando, das das Senden des Bildes anfordert.
Das Standbild- und/oder Videobetrachtungsanwendungsprogramm sendet
dieses Kommando an die Digitalkamera, um diese zu veranlassen, das
aufgenommene Bild an das Computersystem zu übertragen oder hinaufzuladen.
Dieses Kommando enthält
die Bildgröße in Form
einer Anzahl von Bytes, die in Erwiderung des Kommandos zum Anfordern
der Größe des Bildes
empfangen wurde. Wenn der Betriebsmodus der Videomodus ist, werden
die aufgenommenen Bilder an das Standbild- und/oder Videobetrachtungsanwendungsprogramm über die
Schnittstelle 308 zurückübertragen.
Wenn der Betriebsmodus der Standbildmodus ist, wird das aufgenommene
Bild an das Standbild- und/oder Videoanwendungsprogramm über die
Schnittstelle 306 zurückübertragen.
-
Bei
bekannten Systemen hat die Kamera dann, wenn ein Kommando zum Initiieren
einer Bildaufnahme an die Kamera gesendet wurde, das Bild aufgenommen
und es in dem internen RAM der Kamera gespeichert. Zu einem nachfolgenden
Zeitpunkt forderte das Anwendungsprogramm ein Hinaufladen des aufgenommenen
Bildes aus der Kamera an den PC an. Im Standbildmodus arbeitet diese Methode
bis zu dem Zeitpunkt, zu dem das Bild in dem internen RAM überschrieben
wird. Während
Videolaufbildoperationen jedoch wird das aufgenommene Standbild
stets unmittelbar durch das nächste Videoeinzelbild,
das von der Kamera aufgenommen wurde, überschrieben, da es nur einen
Raum in dem internen RAM in der Kamera gibt, um ein einziges Bild
zu speichern. Ein Ausführungsbeispiel
der vorliegenden Erfindung überwindet
dieses Problem auf folgende Weise. Zu irgendeinem Zeitpunkt, zu
dem der Kameragerätetreiber 302 ein
Bildaufnahmekommando aus dem Standbild- und/oder Videobetrachtungsanwendungsprogramm 300 erfaßt, führt der
Kameragerätetreiber
die gesamte Bildaufnahme- und Bildwiedergewinnungskommandosequenz
als eine unteilbare Operation durch, wodurch bewirkt wird, daß das aufgenommene
Bild in dem Host-Computersystem
gespeichert wird, bevor es durch das nächste Videobild in der Videostromsequenz,
die von der Kamera erzeugt wird, überschrieben werden kann. Diese
unteilbare Operation kann nicht durch Ereignisse unterbrochen werden,
die sich auf die Videostromverarbeitung beziehen, wodurch gesichert
wird, daß das
aufgenommene Bild in dem Host gehalten wird. Diese Verarbeitung
wird auf Aufforderung zu einem Zeitpunkt durchgeführt, zu
dem die Kamera mit dem Host-System gekoppelt ist, was im Endeffekt
eine wahre Dual-Modus-Verarbeitungsfähigkeit
herstellt. Die Benutzer können
dann Standbilder während
einer Videostromverarbeitung, wie beispielsweise einer Videokonferenz,
aufnehmen.
-
Während Standbilder
mit der Sequenz von Bildaufnahme/Bildgrößenanforderung/Bildsendeanforderung-Kommandos übertragen
werden, werden laufende Videobilder über eine si gnifikant verschiedene
Kommandosequenz übertragen.
Zunächst
sendet der Kameragerätetreiber
ein Kommando an die Digitalkamera, das die Menge der bei jeder Videoübertragungsanforderung
zu übertragenden
Videodaten einstellt. Die ausgewählte
Menge liegt typischerweise zwischen 64 und 768 Datenbytes für jedes
Paket von Videodaten, das die Kamera an das Computersystem sendet.
Bei einem Ausführungsbeispiel
ist das Bild 320 Pixel breit und 240 Pixel hoch, was zu 76800 Bytes
für ein
einzelnes Videoeinzelbild führt. Somit
sind einhundert 768-Byte-Pakete Videodaten erforderlich, um ein
vollständiges
Videoeinzelbild herzustellen. Der Kameragerätetreiber sendet ein Hole-mehr-Videodaten-Kommando
einhundertmal, um ein einziges Videoeinzelbild zu erlangen, sofern die
Paketgröße 768 Bytes
beträgt.
Der Kameragerätetreiber
sendet ein Starte-Strom-Videodaten-Kommando an die Kamera. Der Kameragerätetreiber
tritt dann in eine Schleife ein, wobei er die Operationen des Sendens
eines Hole-mehr-Videodaten-Kommandos an die Kamera, des Anhängens eines
Pakets Videodaten an einen Videodaten-Einzelbildpuffer auf dem Host,
des Erlangens der Videodaten, bis ein vollständiges Videoeinzelbild empfangen
ist, des Durchführens
der Videodekompression und Anreicherung an dem Videoeinzelbild und
des Sendens des verarbeiteten Videoeinzelbildes an das Anwendungsprogramm
durchführt.
Im Videomodus wird nur ein Aufnahmekommando gesendet (das Starte-Strom-Kommando),
nur ein Größenkommando wird
gesendet (dasjenige, das die Größe der einzelnen
Pakete der Videodaten einstellt), und jedes Einzelbild Videodaten
erfordert viele Datenholanforderungen. Ein Setze-Videodatenpaketgröße-Kommando
und das Start-Strom-Kommando werden nur gesendet, wenn der Videomodus
gestartet werden soll. Nachdem sie gesendet worden sind, strömen die
Videodaten weiter aus der Kamera, solange, wie der Kameragerätetreiber
damit fortfährt,
Hole-mehr-Videodaten-Kommandos zu senden.
-
6 ist
eine Blockdarstellung des Kameragerätetreibers eines Ausführungsbeispiels
der vorliegenden Erfindung. Der Kameragerätetreiber nimmt Kommandos auf
und gibt Status und Daten an das Anwendungsprogramm zurück und tritt
darüber
hinaus mit dem USBD 310 für die Kommunikation mit der
Digitalkamera in Interaktion. Die Verarbeite-Zustands- und Statuskommandos-Funktion 400 akzeptiert
Kommandos aus dem Anwendungsprogramm, um die Digitalkamera aufzufordern,
eine Funktion durchzuführen,
und gibt den Status dieser Anforderung an das Anwendungsprogramm
zurück.
Die Verarbeite-Zustands- und Statuskommandos-Funktion 400 fragt
den Kanalzustandsspeicher 402 nach dem aktuellen Status
des Kameragerätetreibers
und Digitalkamerabetriebs ab.
-
Sofern
das empfangene Kommando sich auf die Standbildaufnahme und -wiedergewinnung
und ein Herunterladen von Massendaten während der Kamerainitialisierung
bezieht, weist die Verarbeite-Zustands- und Statuskommandos-Funktion 400 die
Verarbeite-Zustands- und Massenkommandos-Funktion 404 an,
das Kommando zu behandeln. Sofern sich das empfangene Kommando auf
das Strömen
von Video bezieht, weist die Verarbeite-Zustands- und Statuskommandos-Funktion 400 die Verarbeite-Stromkommandos-Funktion 406 an,
das Kommando zu behandeln. In beiden Fällen sendet die richtige Funktion 404 oder 406 ein
Kommando über
den USBD an die Kamera. In Erwiderung werden Bilddaten von der Kamera
an den Kameragerätetreiber über den
USB gesendet. Wenn eine Massenübertragung
von Daten stattfindet (beispielsweise bei der Kamerainitialisierung,
wenn Farbnachschlagetabellen (LUTs) oder andere Daten heruntergeladen
werden sollen), werden die Daten vor der Übertragung an die Kamera vorübergehend
in dem Standbild- und Massenübertragungsspeicher 408 gespeichert.
Wenn ein Standbild aus der Kamera gewonnen wird, werden die Bilddaten
im Standbild- und Massenübertragungsspeicher 408 gespeichert,
bevor sie an das Anwendungsprogramm übertragen werden. Wenn eines
einer Serie von Videoeinzelbildern aus der Kamera gewonnen wird,
werden die ein Videoeinzelbild bildenden Bilddaten in dem Stromspeicher 410 gespeichert,
bevor sie an das Anwen dungsprogramm übertragen werden. Man beachte,
daß Standbilddaten
und Videodaten in separaten Speicherplätzen innerhalb des Kameragerätetreibers
auf dem Host-Computer gespeichert werden. Man beachte außerdem die
parallelen Steuerpfade zum Bewirken von Standbild- und Videostromoperationen
oder Videolaufbildoperationen, wie sie von der Verarbeite-Standbild-
und Massenkommandos-Funktion 404 und der Verarbeite-Stromkommandos-Funktion 406 implementiert
werden.
-
Für die Standbildverarbeitung
sendet das Anwendungsprogramm ein Bildaufnahmekommando an die Verarbeite-Zustands- und Statuskommandos-Funktion 400.
Diese Funktion weist die Verarbeite-Standbild- und Massenkommandos-Funktion 404 an,
das Kommando an die Kamera zu senden und riegelt zukünftige Videolaufbildkommandos
ab, so daß diese
nicht durchgeführt
werden, bis die Standbildverarbeitung abgeschlossen ist. Wenn die
Standbilddaten durch die Kamera zurückgegeben werden, werden sie
von dem USBD 310 in den Standbild- und Massenübertragungsspeicher 408 geladen.
Bei Empfang einer Anforderung aus dem Anwendungsprogramm weist die
Verarbeite-Standbild-
und Massenkommandos-Funktion 404 die Übertragung der Daten an den
Anwendungsprogrammraum an und gibt einen Status an die Verarbeite-Zustands-
und Statuskommandos-Funktion 400 zurück, welche denselben an das
Anwendungsprogramm zurückgibt.
-
Bei
der Videostromverarbeitung oder Videolaufbildverarbeitung sendet
das Anwendungsprogramm Videostromkommandos an die Verarbeite-Zustands-
und Statuskommandos-Funktion 400. Diese Funktion weist
die Verarbeite-Stromkommandos-Funktion 406 an, diese Kommandos
an die Kamera zu senden. Wenn ein Videoeinzelbild aus der Kamera
empfangen wird, wird es in den Stromspeicher 410 von dem
USBD 310 geladen. Die Verarbeite-Stromkommandos-Funktion 406 weist
dann die Übertragung
der Videoeinzelbilddaten an den Anwendungsprogrammraum zur Anzeige
an den Benutzer an und gibt einen Status an die Verarbeite-Zustands-
und Statuskommandos-Funktion 400 zurück, welche ggf. einen Status
an das Anwendungsprogramm zurückgeben
kann.
-
7A und 7B sind
Ablaufdiagramme der Schritte zum Aufnehmen und Wiedergewinnen eines
Standbildes aus der Digitalkamera nach einem Ausführungsbeispiel
der vorliegenden Erfindung. Diese Schritte werden ausgeführt, wenn
die Kamera mit dem Computersystem in sowohl dem Standbild- als auch
dem Videostrombetriebsmodus gekoppelt ist. Das aufgenommene Standbild
kann aus der Flash-Speicherkarte oder dem internen RAM der Kamera
kopiert werden. Nach dem Startschritt 500 sendet ein Anwendungsprogramm
ein Bildaufnahmekommando an den Kameragerätetreiber beim Schritt 502,
was den Treiber anweist, die Kamera zu veranlassen, ein Bild aufzunehmen.
Der Treiber überprüft das Kommando
und stellt fest, daß es
eine Bildaufnahmeanforderung ist. Beim Schritt 504 initiiert
der Kameragerätetreiber
dann die gesamte Sequenz der Kommandos zum vollständigen Aufnehmen
und Wiedergewinnen des Bildes. Zunächst stellt der Kameragerätetreiber
fest, ob sich die Kamera in dem Videostrombetriebsmodus befindet.
Wenn die Kamera in dem Videostrommodus ist, nimmt sie kontinuierlich ein
Bild auf und macht das aufgenommene Bild für ein Hinaufladen zu dem Computer
verfügbar.
Wenn sich die Kamera gerade im Strommodus befindet, dann zeichnet
der Kameragerätetreiber
den aktuellen Stromzustand auf und sendet ein Stop-Strom-Kommando an
die Kamera beim Schritt 506.
-
Sobald
der aktuelle Zustand gesichert ist, sendet der Kameragerätetreiber
ein Bildaufnahmekommando über
den USB an die Kamera beim Schritt 508. Der Kameragerätetreiber
wartet auf den erfolgreichen Abschluß des Bildaufnahmekommandos
beim Schritt 510. Der Treiber gibt einen Fehler an das
Anwendungsprogramm zurück,
sofern das Kommando fehlschlug. Sofern das Kommando erfolgreich ist,
wurde das Bild durch die Kamera aufgenommen und ist jetzt im internen
RAM der Kamera gespeichert. Der Kameragerätetreiber sendet dann ein Berichte-Bildgröße-Kommando
an die Kamera beim Schritt 512. Dieses Kommando ist eine
Anforderung, die Größe des aufgenommenen
Bildes in Bytes zu erlangen. Beim Schritt 514 wartet der
Kameragerätetreiber
auf den erfolgreichen Abschluß des
Berichte-Bildgröße-Kommandos.
Sofern ein Fehler berichtet wird, so gibt der Kameragerätetreiber
einen Fehler an das Anwendungsprogramm zurück. Anderenfalls fährt die
Verarbeitung bei 7B über den Verbinder 7B fort.
-
Sobald
der Kameragerätetreiber
weiß,
wie groß das
Bild ist, muß er
die USBD-Schicht vorbereiten, eine Massenübertragung der angegebenen
Größe zu gewinnen.
Beim Schritt 516 in 7B sendet der
Kameragerätetreiber
ein Empfange-Massenübertragung-Kommando
an den USBD, um diejenige Anzahl von Bytes von Bilddaten zu empfangen,
die in Erwiderung des Berichte-Bildgröße-Kommandos zurückgegeben
wurde. Die empfangenen Daten werden in dem Standbild- und Massenübertragungsspeicherbereich
des Treibers gespeichert. Als Ergebnis dieses Kommandos ist der
USBD bereit und wartet darauf, irgendwelche Massendaten zu empfangen,
die die Kamera über
den USB sendet. Jedoch wird die Kamera solange nicht mit dem Senden
der Daten beginnen, bis sie ein Kommando zum Hinaufladen des aufgenommenen
Bildes aus dem Treiber empfängt.
Der Kameragerätetreiber
sendet das Lade-aufgenommenes-Bild-hinauf-Kommando an die Kamera
beim Schritt 518. Der Kameragerätetreiber wartet auf den erfolgreichen
Abschluß des
Kommandos beim Schritt 520. Sofern das Kommando fehlgeht,
so wird dann das zuvor an die USBD-Ebene gesendete Empfange-Massenübertragung-Kommando abgebrochen
und ein Fehlerstatus wird an das Anwendungsprogramm zurückgegeben.
Wenn das Kommando erfolgreich abgeschlossen wird, bedeutet dies
nur, daß die
Kamera die Anforderung des Treibers zum Hinaufladen des aufgenommenen
Bildes empfangen hat. Es bedeutet nicht, daß das Hinaufladen abgeschlossen
ist. Das Lade-aufgenommenes-Bild-hinauf-Kommando initiiert die Übertragung des
aufgenommenen Bildes. Beim Schritt 522 speichert der USBD
aus der Kamera über
den USB empfangene Bilddaten in den flag-geschützten Standbild- und Massenübertragungsspeicher
auf dem Host-Computersystem. Beim Schritt 524 wartet der Kameragerätetreiber
darauf, daß das
aufgenommene Bild vollständig
gesendet ist, und auf den erfolgreichen Abschluß des Kommandos zum Hinaufladen des
aufgenommenen Bildes. Sofern ein Fehler auftritt, wird ein Fehlerstatus
an das Anwendungsprogramm zurückgegeben.
-
Bevor
das Bildaufnahmekommando abgeschlossen wird, überprüft der Kameragerätetreiber den
zuvor aufgezeichneten Zustand der Kamera im Schritt 526.
Sofern beim Schritt 528 die Kamera zuvor eine Videosignalausgabe
(streaming) ausführte, so
sendet dann der Kameragerätetreiber
ein Starte-Strom-Kommando an die Kamera, um die Videolaufbildoperationen
wieder aufzunehmen. Wenn die Übertragung
ohne Fehler abgeschlossen wird, wird ein Erfolgsstatus an das Anwendungsprogramm
bei 530 zurückgegeben,
und die Verarbeitung endet beim Endeschritt 532. Dies schließt die Verarbeitung des
Bildaufnahmekommandos ab. Die Kamera kann jetzt die Ausgabe von
Videobildern wieder aufnehmen. Das Bild ist jetzt in einem flaggeschützten Standbild-
und Massenübertragungsspeicher
auf dem Host-Computersystem zur Verwendung durch das Anwendungsprogramm
verfügbar.
Das Anwendungsprogramm muß jetzt
anfordern, daß das
aufgenommene Bild in den Anwendungsprogrammspeicherraum kopiert
wird. Es führt
dies normalerweise aus, indem die Aufnahmebildgröße angefordert wird, Speicher
zum Halten des Bildes zugewiesen wird und dann gefordert wird, daß das Bild
kopiert wird. Man beachte, daß deshalb,
weil das Bild bereits aus der Kamera zu dem Computersystem hinaufgeladen ist,
wenn der Kameragerätetreiber
das Erlange-Größe-des-aufgenommenen-Bildes-Kommando
aus dem Anwendungsprogramm empfängt,
er keine Kommandos an die Kamera zu senden braucht. Er gibt einfach
die Größe zurück, die
die Kamera zuvor berichtet hat. Wenn in ähnlicher Weise der Kameragerätetreiber
das Bildhinaufladekommando aus dem Anwendungsprogramm empfängt, braucht
er keine Kommandos an die Kamera zu senden. Er kopiert einfach das
Bild aus dem Standbild- und
Massenübertragungsspeicher
innerhalb des Kameragerätetreiberraums,
wo es zuvor gespeichert worden ist, an den Speicherraum des Anwendungsprogramms.
-
Während diese
Erfindung unter Bezugnahme auf veranschaulichende Ausführungsbeispiele beschrieben
worden ist, soll die Beschreibung nicht in einem einschränkenden
Sinne verstanden werden. Verschiedene Modifikationen der veranschaulichenden
Ausführungsbeispiele
ebenso wie andere Ausführungsbeispiele
der Erfindung, welche Fachleuten in den Sinn kommen, an welche sich
die Erfindung richtet, werden als innerhalb des Geistes und Umfangs
der Erfindung liegend angesehen.