DE20080319U1 - Videokamera, bei der die Hauptfunktionen in der Hauptrechnersoftware implementiert werden - Google Patents
Videokamera, bei der die Hauptfunktionen in der Hauptrechnersoftware implementiert werdenInfo
- Publication number
- DE20080319U1 DE20080319U1 DE20080319U DE20080319U DE20080319U1 DE 20080319 U1 DE20080319 U1 DE 20080319U1 DE 20080319 U DE20080319 U DE 20080319U DE 20080319 U DE20080319 U DE 20080319U DE 20080319 U1 DE20080319 U1 DE 20080319U1
- Authority
- DE
- Germany
- Prior art keywords
- data
- pixels
- video camera
- correction
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/16—Analogue secrecy systems; Analogue subscription systems
- H04N7/162—Authorising the user terminal, e.g. by paying; Registering the use of a subscription channel, e.g. billing
- H04N7/165—Centralised control of user terminal ; Registering at central
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/60—Noise processing, e.g. detecting, correcting, reducing or removing noise
- H04N25/61—Noise processing, e.g. detecting, correcting, reducing or removing noise the noise originating only from the lens unit, e.g. flare, shading, vignetting or "cos4"
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/414—Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
- H04N21/4143—Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a Personal Computer [PC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/84—Generation or processing of descriptive data, e.g. content descriptors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/60—Noise processing, e.g. detecting, correcting, reducing or removing noise
- H04N25/68—Noise processing, e.g. detecting, correcting, reducing or removing noise applied to defects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/482—End-user interface for program selection
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Studio Devices (AREA)
- Color Television Image Signal Generators (AREA)
- Surface Acoustic Wave Elements And Circuit Networks Thereof (AREA)
Description
·* ♦•as* ■·■ *·4
VIDEOKAMERA, BEI DER DIE HAUPTFUNKTIONEN IN DER
HAUPTRECHNERSOFTWARE IMPLEMENTIERT WERDEN
HAUPTRECHNERSOFTWARE IMPLEMENTIERT WERDEN
RÜCKVERWEISUNGEN AUF VERWANDTE ANMELDUNGEN
.
.
Diese Anmeldung ist eine Teilfortführung der US-Anmeldung Nr. 09/345 167, eingereicht am 30. Juni 1999, mit dem Titel "IMAGE SENSOR BASED VIGNETTING CORRECTION", der US-Anmeldung Nr. 09/464 3 64, eingereicht am 15. Dezember 1999, mit dem Titel "DYNAMIC ANOMALOUS PIXEL DETECTION AND CORRECTION", und der US-Anmeldung Nr. 09/343 934, eingereicht am 30. Juni 1999, mit dem Titel "FAST DECODING". Von denen alle durch den Hinweis hierin aufgenommen werden.
HINTERGRUND DER ERFINDUNG
Die vorliegende Erfindung betrifft Videokameras und insbesondere Videokameras, die mit einem Computer oder einer anderen intelligenten Vorrichtung durch eine gemeinsam genutzte Schnittstelle, wie z.B. den universellen seriellen Bus (USB), verbunden sind.
Es wurden Videokameras zum Bereitstellen Von sowohl Standbildern als auch Bewegtbildern entwickelt, die mit einem Computer verbinden können, um ein digitalisiertes Bild zu liefern. Solche Kameras können mit dem Computer über einen gemeinsam genutzten Bus, wie z.B. den USB, verbunden werden. Dies begrenzt die·Bandbreite der Daten, die gesandt werden können, was eine Komprimierung der Videodaten erfordert. Typischer-weise führen Kameras einiges der Vorverarbeitung des Bildes in der Kameraelektronik durch, was somit sowohl die CPU des Computers von der Verarbeitung befreit als auch die Menge an Daten, die komprimiert und über den Bus gesandt werden müssen, potentiell verringert.
Bei einer solchen Konstruktion müssen einige Funktionen in der Kamera ausgeführt werden. Ein CCD- oder CMOS-Sensor in der Kamera kann beispielsweise fehlerhafte Detektorpositionen aufweisen, die Licht nicht korrekt auffangen. Diese können durch Mitteln der Menge an erfaßtem Licht an benachbarten Detektorstellen und Austauschen des von der fehlerhaften Stelle gelieferten Werts gegen diesen kompensiert werden. Diese Art Verarbeitung muß vor anderen Arten von Verarbeitung, die nun typischerweise in einer Videokamera durchgeführt werden, wie z.B. Farbverarbeitung und Skalierung, durchgeführt werden.
Fig. 1 ist ein Blockdiagramm einer typischen Videokamera, die über einen Bus mit einem Hauptrechner verbinden kann. Eine Linse 10 fokussiert Licht auf einen Sensor 12 mit einer zugehörigen Steuerlogik zum Auslesen der Sensordaten. Die Daten werden zu einem Analog-Digital-Wandler (ADC) 14 geliefert, wo sie digitalisiert werden. Die Daten werden dann in einem Bildpufferspeicher 16 gespeichert. Eine Pixelkorrektur kann mit einer Schaltung 18 auf die Daten angewendet werden. Die Korrekturdaten können in einem programmierbaren Speicher 20 gespeichert werden. Dieser Speicher kann während des Herstellungsprozesses programmiert werden, noch bevor die Kamera versandt wird.
Eine Anzahl von anderen Funktionen wird' typischerweise in der in Fig. 1 gezeigten Kamera in einer speziellen Reihenfolge durchgeführt, obwohl sie sich in anderen Reihenfolgen befinden können oder über einen Bus verbunden sein können, so daß sie variieren, wenn sie aufgerufen werden. Beispielsweise 0 kann eine Farbverarbeitungsschaltung 22 eine Anzahl von Farbfunktionen ausführen, wie z.B. Umwandeln der empfangenen Daten von einem Farbformat, wie z.B. YUV, in ein anderes Format, wie z.B. RGB. Eine Festwertmultiplikatorfunktion 24 kann das Bild skalieren, um es an die am Hauptrechner gewünschte Anzeige anzupassen. Eine Komprimierungsschaltung 26 kompri-
miert die Daten, um die Menge an über den gemeinsam genutzten Bus zu übertragenden Daten zu verringern. Schließlich implementiert eine Busschnittstellenschaltung 28 die Protokolle eines Busses 3 0 zum Übertragen von Daten zu einem entfernten Hauptrechnef.
Die Huffman-Codierung ist einer der Algorithmen, der am weitverbreitetsten zum Komprimieren von Videodaten verwendet wird. Die Huffman-Codierung wurde in verschiedenen Bild- und Videokomprimierungsstandards verwendet, wie z.B. den von der Joint Photographic Experts Group (JPEG) und der Motion Picture Experts Group (MPEG) festgelegten Standards MPEG-II, H.261, H.263 und H.323. Diese Standards werden durch den Hinweis in ihrer Gesamtheit und für alle Zwecke hierin aufgenommen. Die Huffman-Codierung ist ein verlustloses statistisches Codierverfahren. Die Huffman-Codierung verwendet eine Wahrscheinlichkeit, um das kürzeste Codewort für die Daten, die am häufigsten vorkommen, auszuwählen. Wenn beispielsweise englischer Text codiert wird, kann "E", das in der englischen Sprache ein sehr weitverbreitetes Zeichen ist, durch ein 2-Bit-Codewort dargestellt werden, wohingegen "A", das nicht so häufig verwendet wird, durch ein 8-Bit-Codewort dargestellt werden kann.
Folglich komprimiert die Huffman-Codierung die Daten durch Zuweisen von kürzeren Codeworten häufiger vorkommenden Daten und längeren Codeworten weniger häufig vorkommenden Daten. Die zugewiesenen Codeworte können in einer Tabelle aufbewahrt werden, die dann sowohl von den Empfängern als auch Sendern verwendet wird. Weitere Einzelheiten hinsichtlich der Huffman-Codierung sind in "A Method for the Construction of Minimum Redundancy Codes", Proceedings of the IRE, Band 40, Nr. 9, September 1952, S. 1098-1101, von D.A. Huffman, zu finden, das durch den Hinweis in seiner Gesamtheit und für alle Zwekke hierin aufgenommen wird.
Überdies werden Huffman-Codeworte derart konstruiert, daß kein Codewort das Präfix eines anderen Codeworts ist. Dies stellt die eindeutige Decodierung jedes Symbols aus einem Bitstrom von Daten trotz der variablen Längen der Codes sicher. Eine zusätzliche Beschreibung der Eigenschaften von Huffman-Codes ist im Data Compression Book, M&T Books, 1996, von M. Nelson und J.L. GailIy1 zu finden, das ebenfalls durch den Hinweis in seiner Gesamtheit und für alle Zwecke hierin aufgenommen wird. Auf den Seiten 31-35 schlägt diese Bezugsquelle einen Decodieralgorithmus vor, der auf einer Baumfolge basiert. Dieser Algorithmus eignet sich jedoch nicht für eine schnelle Dekomprimierung unter Verwendung der meisten derzeit erhältlichen Mikroprozessoren, wie z.B. der Pentium® Familie von Intel®.
Der Vignettierungseffekt besteht, wenn die Helligkeit um die Kanten eines Bildschirms geringer ist als die Helligkeit in der Mitte des Bildschirms, was einen Lichthofeffekt erzeugt.
Professionelle Fotografen versuchen manchmal, diesen Effekt mit einer geeigneten Linse oder einem geeigneten Filter absichtlich zu erzeugen, um eine weichgezeichnete Abbildung an den Kanten eines Bildes zu erzeugen. Wenn jedoch dieser Effekt in digitalen Fotografien unabsichtlich erscheint, ist es' ärgerlich. Eine Vielzahl von Verfahren wurden entwickelt, um Vignettierungseffekte zu messen und anzugehen.
Das US-Patent Nr. 4 884 140 zeigt eine analoge Schaltung zum Bereitstellen einer Vignettierungskompensation für eine Videokamera, die eine Zoom-Linse verwendet, die eine Vignettierung verursacht.
Das US-Patent Nr. 5 434 902 zeigt die Messung des Vignettierungseffekts für eine Röntgenuntersuchungsvorrichtung unter Verwendung eines Bildes mit konstanter Helligkeit. Ein Kor-
•·&Ugr;7· ·:
rekturfaktor wird dann im Speicher für jedes Pixel gespeichert.
Das US-Patent Nr. 5 576 797 zeigt die Erfassung von Vignettierungseffekten in einer Kamera mit einer Brennpunkterfassungsvorrichtung.
Das US-Patent Nr. 5 381 174 zeigt die Korrektur der Vignettierung aufgrund der Funktion einer Zoom-Linse unter Verwendung eines Teilbildfrequenz-Sägezahnsignals.
Das US-Patent Nr. 4 816 663 zeigt die Erfassung der Vignettierung zwischen einer Photoaufnahmelinse und einem optischen Brennpunkterfassungssystem.
.
Digitale Kameras zur Verwendung mit einem Personalcomputer für eine Personentelekonferenz wurden immer preiswerter. Dies setzt die Kamerahersteller unter den Druck, preiswertere Linsen zu verwenden, die mehr Vignettierungseffekt aufweisen.
Außerdem zwingt der Preisdruck Hersteller, weniger Halbleiterchips zu verwenden, was somit die Verwendung eines Halbleiterspeichers zum Speichern von Vignettierungskorrekturen unerwünscht macht. Folglich besteht ein Bedarf für eine digitale Kamera, die preisgünstig herzustellen ist und auch die Vignettierung einer preisgünstigen Linse korrigiert.
Die zum Herstellen von Bildsensoren verwendeten Verfahren sind, obwohl sie sehr fortschrittlich sind, nicht perfekt. Photostellen in einer Bildsensormatrix können in ihrer Emp-0 findlichkeit oder Fähigkeit, Licht in elektrische Ströme umzuwandeln, schwanken. Eine gewisse Schwankung wird erwartet und ist .tolerierbar, aber bei Gelegenheit können einzelne Photostellen in einer Matrix tot, inaktiv oder überaktiv sein. Dies kann zu einem angezeigten Bild mit einem dunklen oder schwarzen Punkt, hellem weißen Punkt oder einem Punkt
t ·
&psgr;&phgr; «»&Ogr;&Igr;
&psgr;&phgr; «»&Ogr;&Igr;
mit falscher Farbe führen, die für den Endverbraucher alle ungewollt und unerwünscht sind. Diejenigen auf dem Gebiet der digitalen Abbildung haben auch die Probleme erkannt, die durch eine falsche Digitalisierung von Zielbildern verursacht werden, und haben verschiedene Lösungen zum Erkennen und Korrigieren von fehlerhaften Pixeln vorgeschlagen. Diese Verfahren und Systeme des Standes der Technik können grob in zwei Gruppen eingeteilt werden.
Einerseits gibt es verschiedene Verfahren auf Hardwarebasis zum Erkennen und Korrigieren von fehlerhaften Pixeln, die aus einer Bildsensormatrix gewonnen werden. Diese Verfahren und Systeme auf Hardwarebasis sind für Videokamerahersteller ziemlich üblich. Die meisten herkömmlichen Videokameras/ die eine Halbleiter-Bildaufnahmevorrichtung verwenden, beinhalten eine Erkennungs- und Korrekturschaltung für fehlerhafte Pixel zum Korrigieren von fehlerhaften Pixeln, die aus einer Bildsensormatrix gewonnen werden. Die fehlerhaften Pixel werden erzeugt, wenn oder nachdem die Bildsensormatrix hergestellt wird bzw. wurde. In einer solchen Kamera erkennt eine Korrekturschaltung für fehlerhafte Pixel ein fehlerhaftes Pixel und speichert die Positionsdaten und verschiedene Daten hinsichtlich des fehlerhaften-Pixels in einem Festwertspeicher (ROM) oder dergleichen. Wenn die Videokamera in Gebrauch ist, dann werden die Pixeldaten von dem fehlerhaften Pixel durch Daten von einem Pixel nahe dem fehlerhaften Pixel ersetzt. Ein solches Verfahren und System ist im US-Pat. Nr. 5 796 43 0 offenbart. Der Nachteil solcher Methoden ist der Bedarf, Speicherbauelemente während der Produktmontage und -prüfung einzubauen und zu programmieren, was Kosten und Verzögerungen hinzufügt. Außerdem steigen auch die Hardwarevorrichtungskosten aufgrund des Bedarfs, die Korrekturschaltung oder -logik zu der anwendungsspezifischen integrierten Schaltung (ASIC) für die Videoverarbeitung hinzuzufügen.
Andererseits gibt es verschiedene Verfahren auf Softwarebasis zum Erkennen und Korrigieren von fehlerhaften Pixeln in digitalen Bildern. Ein solches Verfahren und System ist im US-Pat. Nr. 5 982 946 offenbart. Solche Verfahren auf Softwarebasis zielen im allgemeinen auf die Korrektur von schlechten Bildpixeln in einem bereits digitalisierten und vollständig verarbeiteten Bild ab. Diese bereits digitalisierten Bilder liegen in ihren anzeigbaren und gespeicherten Endformen vor, die bereits eine Farbverarbeitung, Komprimierung und verschiedene andere Verarbeitung durchlaufen haben, die an den Rohdaten ausgeführt werden, welche aus einer Bildsensormatrix ausgelesen werden. Daher können solche Verfahren auf Softwarebasis, die vollständig verarbeitete digitale Bilder behandeln, anomale Pixel, die durch eine beliebige Anzahl von Bildfehlern, wie z.B. Staub oder Schmutz auf der Originalszene, Staub oder Schmutz auf der Linse, die zum Erfassen der Szene verwendet wurde, verursacht werden, sowie anomale Pixel in dem digitalisierten Bild, die durch fehlerhafte Photostellen verursacht wurden, korrigieren. Diese Verfahren beruhen typischerweise auf ziemlich hochwertigen und teuren Systemen und Computersoftware, um schlechte Pixel zu erkennen und zu korrigieren. Diese Verfahren erfordern im allgemeinen eine Benutzereingabe, um die Stelle der potentiell schlechten Bildpixel zu erkennen. Wenn der Benutzer ein ganzes Bild einmal visuell abgerastert und potentiell schlechte Bildpixel gekennzeichnet hat, übernimmt das System, welches das Softwareprogramm enthält, die Korrektur der gekennzeichneten fehlerhaften Pixel. Neben dem Erfordernis der Benutzereingabe sind solche Methoden auch teuer, ermüdend und sehr zeitauf-
0 wendig. ■
Die Ausbreitung von preisgünstigen, mit einem PC über eine Schnittstelle koppelnden digitalen Standbild- und Videokameravorrichtungen erfordert Lösungen zur schnellen, dynami-
· rni-f — ···. ···
sehen, preisgünstigen und intelligenten Erkennung und Korrektur von fehlerhaften Pixeln.
ZUSAMMENFASSUNG DER ERFINDUNG
5
5
Die vorliegende Erfindung stellt eine kostengünstige Kamera durch Implementieren der- Hauptfunktionen in der Hauptrechnersoftware bereit. Dies wird durch direktes Senden von digitalisierten Rohdaten von der Kamera zum Hauptrechner bewerkstelligt. Das erhöhte Volumen von Rohdaten wird durch entweder ein verbessertes Komprimierungs-ZDekomprimierungs-Schema unter Verwendung einer verlustlosen Komprimierung, unter Verwendung einer verlustbehafteten Komprimierung oder unter Verwendung eines gemeinsam genutzten Busses mit höherer Bandbreite bewältigt. Durch Verlagern von solchen Funktionen wie Farbverarbeitung und Skalierung zum Hauptrechner kann die Pixelkorrektur auch zum Hauptrechner verlagert werden. Dies ermöglicht wiederum die Beseitigung des Bildpufferspeichers aus der Kamera. Schließlich kann die Kamera eine kostengünstige Linse verwenden, indem eine Vignettierungskorrektur mit einem Vignettierungskorrekturwert implementiert wird, der in einem Register der Kamera für einen späteren Zugriff vom Hauptrechner zum Durchführen von Korrekturen gespeichert wird.
Bei einem Ausführungsbeispiel dekomprimiert der Hauptrechner die übertragenen Daten unter Verwendung eines Prozessors mit der Fähigkeit zu gleichzeitigen Operationen an mehreren gepackten Pixelwerten, wie z.B. die Intel MMX™ Technologie. Dies hält eine ausreichende Dekomprimierungsgeschwindigkeit 0 für eine größere Menge an Daten mit minimaler Auswirkung auf die Bildrate aufrecht. Bei einem Ausführungsbeispiel wird eine Gruppe von Bits vom Datenstrom dupliziert und zu mehreren Positionen in einem Register geliefert, wo sie gleichzeitig mit mehreren Maximalwerten verglichen werden können. Dies er-
möglicht eine schnelle Feststellung dessen, wie viele Bits der Codierung mit variablen Bits einem Pixelwert entsprechen.
Bei einem Ausführungsbeispiel unter Verwendung einer verlustbehafteten Komprimierung werden die Vignettierungs-, Gamma-, Verzerrungs- oder Bildunschönheits-Korrektur und die Pixelkorrektur in der Kamera selbst durchgeführt, da die Fähigkeit zum Korrigieren durch den Informationsverlust während des verlustbehafteten Komprimierungs-/Dekomprimierungsprozesses verschlechtert werden würde. Die Farbverarbeitung, Skalierung und andere Vorgänge werden jedoch immer noch im Hauptrechner durchgeführt, wobei eine kostengünstige Kamera erreicht wird, die keinen Bildpufferspeicher und keine Farbverarbeitungsund Skalierungsschaltung benötigt.
Bei einem Ausführungsbeispiel kann die Kamera- unter Verwendung einer kostengünstigen Linse, selbst wenn diese eine Vignettierungsverzerrung aufweist, kostengünstig gemacht werden. Die wird durch Bereitstellen eines Speicherelements wie z.B. eines Registers in der Kamera bewerkstelligt. Dieses Speicherelement wird zum Zeitpunkt der Herstellung mit einem Wert entsprechend dem Ausmaß an Vignettierung oder erforderlicher Korrektur programmiert. Das Register kann dann vom Hauptrechner während des Betriebs gelesen werden, um die Menge an Korrektur festzustellen, die in einem Vignettierungskorrekturalgorithmus erforderlich ist, welcher im Hauptrechner an den empfangenen Daten vor irgendeiner Weiterverarbeitung ausgeführt wird. Bei einem alternativen Ausführungsbeispiel kann das Speicherelement einen Korrektur- oder Wertfaktor für andere Defekte der Linse oder andere Aspekte der Kamera speichern. Beispielsweise könnte ein Hinweis auf schlechte Pixelstellen für anschließendes Lesen und Korrigieren durch den Hauptrechner gespeichert werden.
&iacgr;&ogr;
Für ein weiteres Verständnis der Art und der Vorteile der Erfindung sollte auf die folgende Beschreibung in Verbindung mit den zugehörigen Zeichnungen Bezug genommen werden.
KURZBESCHREIBUNG DER ZEICHNUNGEN
Fig. 1 ist ein Blockdiagramm einer Videokamera des Standes der Technik;
Fig. 2 ist ein Blockdiägramm von einem Ausführungsbeispiel der Erfindung, bei dem die Hauptfunktionen in einen Hauptrechner verlagert sind;
Fig. 3 ist . ein Diagramm, das die Operation von parallelen Huffman-Decodiervorgängen darstellt;
Fig. 4 stellt ein Beispiel eines Computersystems dar, das zum Ausführen der Verfahren der Ausführungsbeispiele der vorliegenden Erfindung verwendet wird;
Fig. 5 stellt ein vereinfachtes Systemblockdiagramm eines typischen Computer systems 100, das zum Ausführen der Verfahren der Ausführungsbeispiele der vorliegenden Erfindung verwendet wird, dar;
Fig. 6 ist ein vereinfachtes Blockdiagramm eines SIMD-Systems 300 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
Fig. 7 stellt ein vereinfachtes Blockdiagramm eines Systems 400 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung dar; ■
ii
Fig. 8 stellt ein sequentielles Decodierverfahren 500 zum Decodieren von Huffman-codierten Daten gemäß einem Ausführungsbeispiel der vorliegenden Erfindung dar; und
Fig. 9 stellt ein paralleles Decodierverfahren 600 zum Decodieren von Huffman-codierten Daten gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung dar,-
Fig. 10 ist eine Zeichnung einer Pixelmatrix und einer HeI-ligkeitskurve, die den Vignettierungseffekt darstellt;
Fig. 11 ist ein Blockdiagramm eines Ausführungsbeispiels einer erfindungsgemäßen Vignettierungskorrektur;
Fig. 12 stellt einen vereinfachten Ablaufplan eines Verfahrens zum Erkennen und Korrigieren von fehlerhaften Pixeln gemäß einem Ausführungsbeispiel der vorliegenden Erfindung dar,-
Fig. 13 ist ein Blockdiagramm eines Videokamerasystems gemäß 0 einem Ausführungsbeispiel der vorliegenden Erfindung;
Fig. 14 ist ein Ablaufdiagramm der Impulse, die zu einer CMOS-Sensormatrix geliefert werden, gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
25
25
BESCHREIBUNG DER SPEZIELLEN AUSFÜHRUNGSBEISPIELE
I GESAMTSYSTEM :
0 Fig. 2 ist ein 'Blockdiagramm eines Ausführungsbeispiels der Erfindung. Eine Kamera 32 umfaßt eine Linse 10, einen Sensor und eine Steuerlogik 12 und einen ADC 14 wie im Stand der Technik. Die anderen Hauptfunktionen sind jedoch beseitigt, abgesehen von einem Komprimierungsblock 26 und einer Bus-Schnittstelle 28. Außerdem ist ein Korrekturregister 34 hin-
• · '· t
zugefügt, um einen der Vignettierung der Linse 10 entsprechenden Wert zu speichern.
Die Kamera verbindet über einen gemeinsam genutzten Bus 3 0 mit dem Hauptrechner 36. Im Hauptrechner 36 sind die gezeigten Blöcke Programmierblöcke, die vom Prozessor des Hauptrechners 3 6 ausgeführt werden. Diese sind ein Dekomprimierungsblock 38, ein Vignettierungskorrekturblock 40, ein Pixelkorrekturblock 42, ein Farbverarbeitungsblock 44 und ein Skalierblock 46. Es ist auch ein Statistikspeicher 48, der ein Teil des Hauptrechnerspeichers sein kann, zum Speichern von Statistikinformationen über Pixel, die eine Korrektur benötigen, gezeigt.
II. HUFFMAN-DEKOMPRIMIERUNG
Vorzugsweise umfaßt der vom Hauptrechner 36 verwendete Prozessor die Fähigkeit, Operationen an mehreren gepackten Pixeln in einem einzelnen Register parallel auszuführen. Die Intel MMX™ Technologie stellt beispielsweise eine Anzahl von Befehlen für solche Operationen an gepackten Pixeln in den Mikroprozessorregistern bereit. Folglich ist es erwünscht, solche Funktionen auszunutzen, um die Verarbeitungsgeschwindigkeit zu steigern. Bestimmte Operationen eignen sich jedoch nicht für eine solche simultane Operation. Die Huffman-Komprimierung wird beispielsweise häufig für Videodaten verwendet und wird im Ausführungsbeispiel dieser Erfindung verwendet. Dies ist ein Komprimi erungsmechanismus mit variabler Codelänge. Mit anderen Worten, die Anzahl von Bits, die einem 0 Pixelwert entsprechen, könnten 1, 2, 3, 4 usw. sein und können von Pixel zu Pixel variieren. Ohne die Anzahl von Bits im voraus zu kennen, und mit verschiedenen Größen ist es nicht unmittelbar ersichtlich,- wie ein Register für gepackte Pixel zu verwenden ist, welches für jede der Pixeldarstellungen dieselbe Größe verwendet.
&phgr; ·
Bei der begrenzten Bandbreite der heutigen USB-Technologie ist es erwünscht, irgendwie eine parallele Dekomprimierungsverarbeitung durchführen zu können, wenn die Kamera Rohdaten senden soll, die eine viel größere Menge an Daten aufweisen als Daten, die vorverarbeitet wurden. Dies wird nur durch Verwendung der Konfiguration von gepackten Pixeln zum Durchführen der Huffman-Decodierung.bewerkstelligt.
Fig. 3 ist ein Diagramm, das allgemein darstellt, wie die parallele Huffman-Decodierung vor sich geht. Ein eingehender Datenstrom 50 ist durch eine Anzahl von Buchstaben dargestellt. Jeder Buchstabe ist ein willkürliches Symbol, das eine unterschiedliche Anzahl von Bits angibt. In dem gezeigten Beispiel wird die erste einer Anzahl von Bits, A, viermal dupliziert und in vier Positionen in einem ersten Register 52 gegeben. Ein zweites Register 54 speichert vier verschiedene Masken. Die Masken ermöglichen einen Vergleich mit. verschiedenen Teilen der Bits im Bitsegment A. Die Anzahl von Bits 0 von A, die untersucht wird, könnte beispielsweise 1, 2, 3 bzw. 4 sein. Diese würden dann mit den Maximalwerten für die Huffman-Codes für 1, 2, 3 und 4 Bits verglichen werden. Diese vier verschiedenen Maximalwerte werden in einem weiteren Register 56 gespeichert. Anstatt die Anzahl von Bits A mit vier verschiedenen Werten nacheinander zu vergleichen, kann dies somit parallel durchgeführt werden, selbst wenn die zu vergleichende Anzahl von Bits variabel ist. Diese Variation-wird unter Verwendung der Maskierungsoperation überwunden. Somit wird im Register an jeder Pixelstelle dieselbe Anzahl von Bits gespeichert, aber eine unterschiedliche Anzahl von Bits wird für jede der Pixelstellen durch die Maskenoperation verglichen.
In dem gezeigten Beispiel entspricht das Bitsegment A der Tatsache, daß es innerhalb des Maximumsegments M3 liegt, das
dann in einer Gleichung verwendet wird, um eine kombinierte Huffman-Wertetabelle 58 zu indizieren. Unter Verwendung des arithmetischen Ergebnisses des vorherigen Vergleichs als Index, was gewöhnlich im Stand der Technik drei verschiedene Tabellensuchvorgänge erforderte, kann nun in einem einzigen Tabellensuchvorgang durchgeführt werden, wobei somit weitere Verarbeitungszeit gespart wird.
Fig. 4 stellt ein Beispiel eines Computersystems dar, das zum Ausführen der Software der vorliegenden Erfindung verwendet wird. Fig. 4 zeigt ein Computersystem 100, das einen Monitor 104, einen Bildschirm 102, ein Gehäuse 108, eine Tastatur 214 (siehe Fig. 5) und eine Maus 110 umfaßt. Die Maus 110 kann eine oder mehrere Tasten wie z.B. die Maustasten 112 aufweisen. Das Gehäuse 108 kann ein CD-ROM-Laufwerk 106 und ein Festplattenlaufwerk (nicht dargestellt) enthalten, die zum Speichern und Abrufen von Softwareprogrammen, die die vorliegende Erfindung beinhalten, verwendet werden können. Obwohl die CD-ROM 106 als entnehmbares Medium dargestellt ist, können andere entnehmbare greifbare Medien, einschließlich Disketten, Bandlaufwerken, ZI P®-Laufwerken und eines Flash-Speichers, verwendet werden. Das Gehäuse 108 kann auch vertraute Computerkomponenten (nicht dargestellt) wie z.B. einen Prozessor, einen Speicher und dergleichen enthalten.
Fig. 5 stellt ein vereinfachtes Systemblockdiagramm eines typischen Computersystems 100 dar, das zum Ausführen der Software der Ausführungsbeispiele der vorliegenden Erfindung verwendet wird. Wie in Fig. 1 dargestellt, kann das Computersystern 100 den Monitor 104 umfassen. Das Computer system 100 kann ferner Untersysteme wie z.B. eine E/A-Steuereinheit 204, einen Systemspeicher 2 06, einen Zentralprozessor 208, einen Lautsprecher 210, eine entnehmbare Platte 212, eine Tastatur 214, eine Festplatte 216 und eine Netzwerkschnittstelle 218 umfassen. Andere Computersysteme, die zur Verwendung bei der
vorliegenden Erfindung geeignet sind, können zusätzliche oder weniger Untersysteme umfassen. Ein anderes Computersystem könnte beispielsweise mehr als einen Prozessor 208 (d.h. ein Mehrprozessorsystem) oder einen Cache-Speicher umfassen. Pfeile wie z.B. 22 0 stellen eine Systembusarchitektur des Computersystems 100 dar. Diese Pfeile 220 stellen jedoch ein beliebiges Verbindungsschema dar, das zum Verbinden der Untersysteme dient.
Ein lokaler Bus könnte beispielsweise verwendet werden, um den Zentralprozessor 208 mit dem Systemspeicher 206 zu verbinden. Eine Bilderfassungsvorrichtung wie z.B. eine Kamera mit ladungsgekoppeltem Bauelement (CCD) kann auch mit dem Computersystem 100 zum Erfassen von Bilddaten verbunden sein.
Die Bilderfassungsvorrichtung kann mit dem Computersystem 100 über dieselbe oder eine andere Busarchitektur, wie z.B. einen universellen seriellen Bus (USB) Und dergleichen, verbunden sein. Der USB kann eine Unterstützung zum Einstecken und Arbeiten für mehr als 100 angeschlossene Peripheriegeräte unter Verwendung einer Identifikationsnummer, die mit einer Datenbank von Gerätetreibern verglichen wird, vorsehen. Der USB kann auch mit dem Computer system 100 über die E/ASteuereinheit 204 oder die Netzwerkschnittstelle 218 verbunden sein. Außerdem kann das Computersystem 100 dazu konfiguriert sein, über beispielsweise die E/A-Steuereinheit 204 oder die Netzwerkschnittstelle 218 mit dem Internet in Verbindung zu stehen.. Folglich können Daten zu und von dem Computersystem 100 durch eine Vielzahl von Geräten übertragen werden. Das in Fig. 4 gezeigte Computersystem 100 ist-.nur ein Beispiel eines Computersystems, das zur Verwendung bei der vorliegenden Erfindung geeignet ist. Andere Konfigurationen von Untersystemen, die zur Verwendung bei der vorliegenden Erfindung geeignet sind, sind für einen üblichen Fachmann leicht ersichtlich.
. .
Die vorliegende Erfindung kann in einem beliebigen Mikroprozessor verkörpert werden, der zu einer Ausführung eines einzelnen Befehls an mehreren Daten (SIMD, Single Instruction Multiple Data) in der Lage ist. Die Intel® MMX™ Mikroprozessoren, der Sun® UltraSPARC® mit Visual-Befehlsatz, 3DNow!™ von Advance Micro Device, Inc.®, Intel® MMX™ mit Strearning-SIMD-Erweiterungen und dergleichen können beispielsweise verwendet werden. Beispielhalber wird eine Implementierung unter Verwendung des Intel® MMX™ beschrieben. Die MMX™ Technologie wurde formal im Januar 1997 eingeführt, um die eine CPU erfordernden Multimediaanwendungen zu beschleunigen. Die MMX™ Technologie stellt einen Satz von Befehlen (57 Befehle) bereit, der von der Intel® Corporation eingeführt wurde. Sie kann eine Addition, Subtraktion, Multiplikation, logische und Stellenwertverschiebungen an einer Einheit von 64 Bits in demselben Befehl ausführen. Die Einheit von 64 Bits kann auch als 8 Bytes, 4 Worte, 2 Doppelworte oder 1 Vierfachwort behandelt werden. Befehle zur Sättigung der Arithmetik und zum Packen/Entpacken von Daten werden ebenso wie jene, die Daten zwischen MMX™ Registern und Ganzzahlenregistern übertragen, bereitgestellt. Weitere Informationen hinsichtlich der MMX™ Technologie sind in "Introduction to the Intel® Architecture MMX™ Technology Developer's Manual", Intel® (1996), zu finden, das durch den Hinweis in seiner Gesamtheit und für alle Zwecke hierin aufgenommen wird.
Fig. 6 ist ein vereinfachtes Blockdiagramm eines SIMD-Systems 3 00. Das System 3 00 umfaßt einen MMX™ Prozessor 302, der derzeit einen Satz von 57 Befehlen unterstützt. Der MMX™ Prozessor kann innerhalb einer CPU implementiert werden oder kann alternativ in einem separaten Chip implementiert werden.
-Der MMX™ Prozessor 302 empfängt Daten von den Registern 304a-h. Jedes der Register 304a-h ist 64 Bits breit. Jedes dieser Register kann 8x8, 16x4, 32x2, 64x1 Datenbits enthalten. Der MMX™ Prozessor 302 empfängt die Daten von den Regi-
17 ·*
stern 304a-h und führt die erforderlichen Operationen an den Daten in einem Zyklus aus. Die verarbeiteten Daten werden dann entweder zu einem Speicher 306 oder zu den Registern 304a-h zurück geliefert. Der Speicher 306 kann innerhalb des MMX™ Prozessors 3 02 implementiert werden oder er kann alternativ ein gemeinsam genutzter Speicher sein. Folglich kann der MMX™ Prozessor 302 dieselben Operationen an verschiedenen Daten gleichzeitig ausführen, daher weist er eine SIMD-Architektur auf. . .
.
Fig. 7 stellt ein vereinfachtes Blockdiagramm eines Systems 400 unter Verwendung des USB dar. Eine Kamera 402 erfaßt Bilder und liefert sie zu einem Bitstrom-Umwandlungsblock 404. Die Kamera 402 kann eine Schaltung zur Umwandlung von analogen Daten in digitale Daten umfassen. Die Kamera 402 kann auch eine Schaltung zum Durchführen einer Datenkomprimierung und/oder -codierung enthalten. Die Kamera 402 und der Bitstrom-Umwandlungsblock 404 sind über eine Anschlußeinheit 406 verbunden. Die Anschlußeinheit 406 kann aus einer Anzahl von Anschlußeinheiten oder Busarchitekturen ausgewählt sein, die üblichen Fachleuten gut bekannt sind. Die Anschlußeinheit 406 ist vorzugsweise ein USB-Anschluß. In einigen Implementierungen sieht USB eine Bandbreite von 12 MB/s vor. Eine andere Wahl für die Anschlußeinheit 406 kann Firewire (IEEE 1394) sein, der eine Bandbreite von 100 MB/s, 200, 400 oder 800 MB/s vorsehen kann. Ein USB-Anschluß ist für einige Ausführungsbeispiele bevorzugt, da er ein gespeister Bus ist, der gegenwärtig bis zu 500 itiA und 5 V liefert. Die vom. USB gelieferte Leistung kann verwendet werden, um die mit dem Bus ver-0 bundenen Geräte zu betreiben, wie z.B. die Kamera 402. Außerdem ist der USB weniger kostspielig zu implementieren. Da der USB nicht dieselbe Bandbreite aufweist wie Firewire, kann der USB in einigen Ausführungsbeispielen verwendet werden,- wenn die Daten vor der Übertragung auf dem USB zuerst komprimiert
.35 werden. -: · . .
18 ·*·
Folglich kann die Kamera 402 eine Komprimierungsschaltung enthalten, um die erfaßten Bilder vor dem Senden der Daten zum Bitstrom-Umwandlungsblock .404 zu komprimieren. Die Kamera 402 kann eine beliebige Anzahl von Vorrichtungen zum Erfassen von Bildern, einschließlich eines CCD, eines komplementären Metalloxid-Halbleiters (CMOS) und dergleichen, sein. Der Bitstrom-Umwandlungsblock 404 kann dazu konfiguriert sein, seriell übertragene Daten in Datenpakete umzuwandeln. Der Bitstrom-Umwandlungsblock 404 kann beispielsweise Daten für jedes Vollbild ansammeln und die angesammelten Daten zu einem Dekomprimierungsblock 408 senden. Das Vollbild von Daten kann eine beliebige Größe aufweisen, ist jedoch vorzugsweise 352x288 Pixel. Das Vollbild kann auch ein Block von 320x240, 176x144 oder 160x120 Pixeln sein. In einigen Ausführungsbeispielen kann das Vollbild von Daten ein Block von 640x480 Pixeln sein. Der Dekomprimierungsblock 408 dekomprimiert und/oder decodiert die vom Bitstrom-Umwandlungsblock 404 empfangenen Daten. Die Decodierung kann gemäß der Huffman-Codierung, arithmetischen Codierung, anderen Arten einer statistischen Codierung und dergleichen erfolgen. Der Bitstrom-Umwandlungsblock 404 kann auch Puffer zum Speichern der von der Kamera 402 empfangenen Daten und der zum Dekomprimierungsblock 408 gesandten Daten umfassen.
■ ..■'..-
Die dekomprimierten Daten vom Dekomprimierungsblock 408 werden dann zu einem Farbumwandlungsblock 410 geliefert. Die Daten vom Dekomprimierungsblock 408 können in einem beliebigen Format vorliegen, sie sind jedoch vorzugsweise im YUV-Format, wobei Y die Luminanz ist, U. die Chrominanz Rot (auch als CR bekannt) ist, und V die Chrominanz Blau (auch als CB bekannt) ist. Der Umwandlungsblock 410 wandelt die Daten im YUV-Format in ein für eine Anzeige 412 geeignetes Format um, einschließlich RGB (Rot, Grün und Blau). Die Anzeige 412 kann eine beliebige Ausgabevorrichtung sein, einschließlich eines Druk-
kers, eines in der Hand gehaltenen Geräts und dergleichen. Das System 400 umfaßt auch einen Speicher 414, der eine Speicherung für die Anzeige 412, den Farbumwandlungsblock 410 und den Bitstrom-Umwandlungsblock 404 vorsehen kann. Der Speicher 414 kann eine beliebige Art Speicher sein, wie z.B. ein dynamischer Direktzugriffsspeicher (DRAM), ein DRAM mit erweiterter Ausgabe (EDO DRAM) , ein synchroner DRAM (SDRAM) ein Video-RAM (VRAM), ein statischer RAM (SRAM) und dergleichen. Alternativ können der Bitstrom-Umwandlungsblock 404, der Farbumwandlungsblock 410 und die Anzeige 412 ihren eigenen lokalen Speicher aufweisen. Der Dekomprimierungsblock 408 kann auch seinen eigenen Speicher aufweisen oder bei Bedarf den Speicher 414 für seine Speicherung verwenden.
Fig. 8 stellt ein sequentielles Decodierverfahren 500 zum Decodieren von Huffman-codierten Daten dar. Das sequentielle Decodierverfahren 500 verwendet die folgenden vier Tabellen zum Erzeugen des decodierten Werts:
MINCODE[I] - minimaler Wert von Codeworten mit der Länge J;
MAXCODE[IJ - maximaler Wert von Codeworten mit der Länge J;
HUFFVAL[J] - Tabelle von Symbolwerten, die dem J-ten Codewort entsprechen; und
VALPTR[I] - der Index für den Start der Liste von Werten in HUFFVAL, die durch Codeworte der Länge I decodiert werden.
. Die minimale Länge aller Codeworte ist MinLength und die maximale Länge aller Codeworte ist MaxLength. Daher ist die Größe der Tabellen MINCODE, MAXCODE und VALPTR gleich [Max-0 Length-MinLength+1] . Die Größe von HUFFVAL hängt von der Anzahl von Codeworten ab und wird als N bezeichnet. Die drei Tabellen MINCODE, MAXCODE und VALPTR werden verwendet, um einen Zeiger in die Tabelle HUFFVAL für jeden gültigen Huffman-Code zu decodieren.
In einem Schritt 502 werden BitStromdaten zum Decodieren empfangen. In einem Schritt 504 wird eine aktuelle Codelänge J auf MinLength gesetzt. Schritt 504 initialisiert auch eine Variable CODE auf NEXTBITS[MinLength], die die Codeworte von dem von Schritt 502 gelieferten Bitstrom enthält. Ein Schritt 506 vergleicht den Wert von CODE mit MAXCODE[I]. Wenn der Wert von CODE größer ist als der Wert von MAXCODE[I], wird angezeigt, daß das aktuelle Codewort eine größere Länge als J aufweist, das zuerst in Schritt 504 auf MinLength initialisiert wurde, und dem Schritt 506 folgt ein Schritt 508. In Schritt 508 wird der Wert von I um Eins inkrementiert. Schritt 508 liest auch das nächste Bit des Bitstroms in CODE. Schritt 508 aktualisiert den Wert von CODE durch Durchführen einer logischen Verschiebung nach links (SLL) am aktuellen Wert von CODE um ein. Bit und Füllen des niedrigstwertigen Bits von CODE mit dem nächsten Bit aus dem Bit strom ■ (NEXTBIT) ...
Wenn andererseits in Schritt 506 festgestellt wird, daß der Wert von CODE nicht größer ist als der Wert von MAXCODE[I], wird angezeigt, daß' das aktuelle Codewort eine Länge gleich oder geringer als J aufweist, und dem Schritt 506 folgt ein Schritt 510. Schritt 510 decodiert den Symbolwert. Schritt 510 berechnet einen Codewertzeiger J und verwendet dann J1 um den Symbolwert zu berechnen. Schritt 510 setzt J auf [VALPTR[I-MinLength] +CODE-MINCODE [ I-MinLength]}. Schritt 510 berechnet dann den Symbolwert durch Setzen von VALUE auf HUFFVAL[J]. Folglich führt Schritt 510 drei Tabellensuchvorgänge durch, einschließlich VALPTJ?, MINCODE und HUFFVAL, um den Symbolwert zu berechnen. Der berechnete Symbolwert (VALUE) wird dann zur Ausgabe zu einem Schritt 512 geliefert.
Das sequentielle Decodierverfahren 500 wird für das nächste Codewort wiederholt.
Die zum Codieren und Decodieren verwendete Huffman-Tabelle kann für jede Implementierung kundenspezifisch angepaßt werden. Aber die meisten Codierstandards sehen eine Standard-Huf fman-Tabel Ie vor. Die nachstehende Tabelle 1 stellt eine empfohlene Huffman-Tabelle für die Luminanz-DC-Differenz gemäß dem JPEG-Standard dar. Weitere Informationen hinsichtlich des JPEG-Standards sind in "JPEG - Still Image Data Compression Standard", Anhang A, ISO DIS 10918-1, Requirements and Guidelines, S. F-26, Van Nostrand Reinhold, 1993, von William B. Pennebaker und Joan L. Mitchell, zu finden, welches durch den Hinweis in seiner Gesamtheit und für alle Zwecke hierin aufgenommen wird.
Im JPEG-Standard ist MinLength 2 und MaxLength ist 16. Codeworte werden ferner zu einer Gruppierung in der Länge und in einer aufsteigenden Wertereihenfolge in jeder Längengruppe sortiert. Die Werte in MINCODE und MAXCODE sind ganze Zahlen von 16 Bits mit Vorzeichen.
| Huff-Wert | Codelänge | Codewort | Huff-Code |
| 0 | 2 | 00 | 0 |
| 1 | 3 | 010 | 2 |
| 2 | 3 | 011 | 3 |
| 3 | 3 | 100 | 4 |
| 4 | 3 | 101 | 5 |
| 5 | 3 | 110 | 6 |
| 6 | 4 | 1110 | 14 |
| 7 | 5 | 11110 | 30 |
| 8 | 6 | 111110 | 62 · . |
| 9 | 7 | 1111110 | 126 |
| 10 | 8 | 11111110 | 254 , |
| 11 | 9 | 111111110 | 510 |
In Tabelle 1 stellt Codewort die aktuellen Codeworte aus dem Bitstrom dar; Codelänge ist die Länge jedes Codeworts; Huff-Code ist der Wert jedes Codeworts und Huff-Wert ist der Huffman-Code für jedes Symbol.
■ ■ ■
■ ■ ■
Wenn man die Werte aus Tabelle 1 als Beispiel nimmt, wobei MinLength = 2 und MaxLength = 9, sind die Tabellenwerte der drei Tabellen, die von dem sequentiellen Decodierverfahren 500 verwendet werden, folgende:
10
10
MINCODE[8] = {0, 2, 14, 30, 62, 126, 254, 510};
MAXCODE[8] = {0, 6, 14, 30, 62, 126, 254, 510}; und
VALPTR [8] = {0, 1, 6, 7, 8, 9, 10, 11}.
MAXCODE[8] = {0, 6, 14, 30, 62, 126, 254, 510}; und
VALPTR [8] = {0, 1, 6, 7, 8, 9, 10, 11}.
Wenn man beispielsweise einen eingehenden Bitstrom "010" betrachtet, setzt Schritt 504 J auf 2 und CODE auf "01". Schritt 506 erwidert JA, da "01" größer ist als MAXCODE[2-2], das 0 ist. In Schritt 508 wird J auf 3 inkrementiert und CODE wird auf "010" gesetzt. Schritt 506 wird erneut wiederholt und erwidert dieses Mal NEIN, da "010" geringer ist als MAXCODE [3-2], das 6 ist. Dann setzt Schritt 510 J" gleich 1. Schritt 510 sucht auch den Symbolwert für HUFFVAL[I] und gibt diesen Symbolwert (VALCZB) in Schritt 512 aus.
Folglich verschiebt das sequentielle Verfahren 500 wiederholt den Bitstrom in CODE und vergleicht den aktuellen Code mit dem maximalen Code derselben Länge. Wenn die Codelänge einmal bekannt ist, benötigt die Decodierung jedes Werts zwei Additionen und drei Tabellensuchvorgänge. Dieser Algorithmus ist 0 in der Art sequentiell, da die Codelängen sequentiell geprüft werden. Das heißt, vor dem Prüfen der Länge I besteht keine Angabe dessen, ob die aktuelle Codelänge J, 1+1, 1+2, usw. ist. . . ■ · ■ . .
• ·
Fig. 9 stellt ein paralleles Decodierverfahren 600 zum Decodieren von Huffman-codierten Daten gemäß einem Ausführungsbeispiel der vorliegenden Erfindung dar. Beispielhalber wird eine Implementierung des parallelen Decodierverfahrens 600, wie z.B. mit Bezug auf Fig. 6 erörtert, beschrieben. Muster-JPEG-Werte, die bezüglich Fig. 8 und Tabelle 1 erörtert wurden, werden auch bei dem Musterausführungsbeispiel verwendet. Das parallele Decodierverfahren 600 kann jedoch in irgendeinem Prozessor durchgeführt werden, der zu SIMD-Ausführungen in der Lage ist, einschließlich Intel® MMX™ Mikroprozessoren, des Sun® UltraSPARC® mit Visual-Befehlssatz, 3DNowI™ von Advance Micro Device, Inc.®, Intel® MMX™ mit Streaming-SIMD-Erweiterungen und dergleichen.
Wie vorstehend genau angegeben, kann die MMX™ Technologie Operationen an einer Einheit von 64.Bits in demselben Befehl ausführen. Die Einheit von 64 Bits kann auch als 8 Bytes, 4 Worte, 2 Doppelworte oder 1 Vierfachwort behandelt werden. Für das Beispiel gemäß Werten aus Tabelle 1 können die 64 Bits als vier 16-Bit-Register (oder 4 Worte) behandelt werden, da die maximale Codewortlänge in Tabelle 1 9 ist. Für das beispielhafte Ausführungsbeispiel von Fig. 9 werden die MMX™ Befehle PSRL, PSLL, und PSRA' verwendet, um den Inhalt von ausgewählten Variablen zu verschieben. PSRL bezeichnet gepacktes logisches Verschieben nach rechts. PSLL bezeichnet gepacktes logisches Verschieben nach links und PSRA bezeichnet gepacktes arithmetisches Verschieben nach rechts.
Das parallele Decodierverfahren 600 empfängt den Bitstrom in einem Schritt 602. In einem Schritt 604 wird der Bitstrom in 4-Bit-Teilen (oder Quadbits (Viererbits)) mit einem mit dem dünnen Ende anfangenden Format angeordnet. Dies bedeutet, wenn der ursprüngliche Bitstrom die Form bO,bl,b2,b3, ... aufweist (wobei bi für das Byte i steht), dann weist der um-
gewandelte Bitstrom die folgende Form auf: bl,b0/bl/b0/bl,b0,bl/b0,b3/b2,b3/b2,b3/b2,b3,b2,b3/b2,.·.
Diese Umwandlung kann unter Verwendung von 5,5 Zyklen für jedes 16-Bit-Wort implementiert werden. In einem Schritt 606 werden die Werte von I, MASK und CODE4 initialisiert. Wie vorstehend für das JPEG-Beispiel erörtert, wird J auf 2 initialisiert. Schritt 606 initialisiert CODE4 auf den ersten Satz von 4xl6-Bit-Codes (oder Quadbits) aus dem Bitstrom. Das parallele Decodierverfahren 600 verwendet MASK, um die Bits für eine Vergleichsoperation in Schritt 608 auszublenden. Der Anfangswert für MASK wird auf
"1100,0000,0000,0000,1110,0000,0000,0000,1111,0000,0000,0000, 1111,1000,0000,0000b" oder "OXCOOO7EOOO7FOOCfSOO" gesetzt.
Dies ist die Bitmaske für die Codelängen 2 bis 5, die bei der ersten Iteration des parallelen Decodierverfahrens 600 geprüft werden.
In einem Schritt 608 wird CODE4 durch den Wert von MASK ausgeblendet. Schritt 608 setzt MAXCODE4 auch auf MAXCODE4_P[I~I+3], das Werte von MAXCODE4_P für I1 1+1, 1+2 und 1+3 darstellt. Folglich enthält MAXCODE4 die maximalen Werte für die vier aufeinanderfolgenden Codelängen. Da die vier Werte für MAXCODE4 in einem einzelnen Befehl geladen werden, kann die MAXCODS-Tabelle für das parallele Decodierverfahren 600 folgendermaßen erzeugt werden:
1 = 0
while I is less than (MaxLength-MinLength+2) do
: J = (J/4)*4+3-I%4
: J = (J/4)*4+3-I%4
MAXCODE4_P[I] = (2{16'MinLength'J) * MAXCODE [J] )+1
1=1 + 1
■■
. . '
end while
wobei "/" Division durch Abbruch bezeichnet und "%" eine Modulo-Operation bezeichnet. Die Werte von MAXCODE_P sind ganze Zahlen von 16 Bits ohne Vorzeichen. Die MAXCODE-Täbelle muß nur einmal für jede Huffman-Tabelle erzeugt werden.
. .
. .
Wenn man dasselbe Beispiel wie bei dem sequentiellen Huffman-Decodieralgorithmus, der mit Bezug auf Fig. 8 erörtert wurde, nimmt, weist die MAXCODE-Täbelle für den parallelen Algorithmus die folgenden Werte auf:
10
10
MAXC0DE_P[8] = {61441, 57345, 49153, 1, 65281, 65025, 64513, 63489}
Für dieses Beispiel muß die Dimension dieser Tabelle ein Vielfaches von 4 sein. Außerdem wird Null für jene Codelängen angenommen, die in der Huffman-Codetabelle nicht existieren.
In einem Schritt 610 wird der Wert von MAXCODE4 mit CODE4 verglichen, das in den Schritten 606 und 608 initialisiert und maskiert wurde. Da bei den Ausführungsbeispielen, die die MMX™ Technologie verwenden, der MMX™ Befehl PCMPEQ nur Worte mit Vorzeichen vergleicht, kann diese Vergleichsoperation durch eine Subtraktion ohne Vorzeichen mit Sättigung und einen Vergleich mit Null durchgeführt werden. Die Werte von MÄXCODE+1 können in MAXCODE4 gespeichert werden. Wenn festgestellt wird, daß CODE4 größer ist als MAXCODE4, dann wird in einem Schritt 612 J um 4 inkrementiert und MASK wird durch arithmetisches Verschieben seines Werts um 4 Bits nach rechts aktualisiert. Der neue Wert von MASK erzeugt die Bitmaske für 0 die nächsten restlichen 4 Codewortlängen (6 bis 9) . Nach Schritt 612 werden die Schritte 608 und 610 wiederholt. Folglich werden für das Beispiel von Tabelle 1 die Schritte 608 und 610 zweimal wiederholt, einmal für Codewortlängen 2 bis 5 und einmal für Codewortlängen 6 bis 9.
· ■ ■ .
If
Wenn Schritt 610 einmal ein JA erwidert, stellt ein Schritt 614 fest, welche der vier Längen, die geprüft werden, das Symbol enthält. Folglich berechnet Schritt 614 einen Wert DIF1 der auf [MAXC0DE4-CODEZ-I] , um 4 Bits logisch nach rechts verschoben, gesetzt wird. Schritt 610 führt auch einen Tabellensuchvorgang durch, um den gefundenen Symbolwert (VALUE) zu liefern. Schritt 614 sucht den Symbolwert (VALUE) in einer Tabelle HUFFVAL_P. .
Für dieses Beispiel kann unter der Annahme 1<K17 eine Tabelle HUFFVAL_P unter Verwendung von [1+16* (MAXCODE[I]-CODE)] als Index erstellt werden. Es soll gelten:
M = max (MAXCODE[I] -MINCODE[I]) ; und
I=O, 1, 2, .... MaxLength-MinLength.
I=O, 1, 2, .... MaxLength-MinLength.
Die Tabelle HUFFVAL_P weist eine Größe von [16*(M+2)] auf. CODENUM[I] soll die Anzahl der Codeworte bezeichnen, deren Codelänge (I+MinLength) ist. CODE[J] soll den Codewert des J-ten Codes mit der Codelänge I bezeichnen. Die Einträge der großen HUFFVAL-Tabelle können folgendermaßen berechnet werden:
1=0
while J is less than (MaxLength-MinLength+1) do
J=O
while J is less than CODENUM[I] do
while J is less than CODENUM[I] do
HUFFVAL_P[J+l6* (MAXCODE[I]+1-CODE[J]) ]=HUFFVAL[VALPTR[I] +CODE[J]
-MINCODE[I]]
-MINCODE[I]]
-
J = J +1
■ , ■
end while
J = J + 1
end while
'■■..■
J = J + 1
end while
'■■..■
Folglich sind die Werte in der Tabelle HUFFVAL_P die maximale Größe von ganzen Zahlen von 16 Bits ohne Vorzeichen in Abhängigkeit von der Anzahl der Huffman-Codes. Durch Kombinieren der drei Tabellensuchvorgänge des sequentiellen Verfahrens zu einem werden die Befehle, die zum Indizieren eines Huffman-Codewerts erforderlich sind, signifikant verringert. Gleichzeitig spart die Verringerung der Anzahl von Tabellensuchvorgängen wertvollen Registerplatz. Man beachte auch, daß {MAXCODE[I]+1-CODE) berechnet wurde, als die Codelänge ermittelt wurde, und für diesen Tabellensuchvorgang zur Verfügung steht.
In einem Schritt 616 wird der berechnete Symbolwert (VALUE) ausgegeben. Wenn die Codelänge des aktuellen Huffman-Codes in Schritt 614 einmal ermittelt ist, kann das aktuelle 4xl6-Bit-Codewort nach links verschoben werden und die gleiche Anzahl von Bits vom nächsten 4xl6-Bit-Codewort kann eingeschoben werden. Das Decodieren des nächsten Huffman-Codes kann dann gestartet werden.
Folglich liest das parallele Decodierverfahren 600 4 Datenbits auf einmal aus dem Bitstrom ein. Alle fortlaufenden 4-Bit-Längen werden parallel geprüft, um festzustellen, ob das aktuelle Codewort in diesen Bereich fällt. Anstatt der erforderlichen 16 Prüfungen, um den Bereich 1 bis 16 in dem sequentiellen Algorithmus zu erfassen, sind nur 4 Prüfungen erforderlich, um denselben Bereich zu erfassen. Eine weitere signifikante Verbesserung besteht darin, die drei Tabellensuchvorgänge zum Decodieren zu einem einzigen Tabellensuch-Vorgang zu kombinieren. Dies hat den Effekt, Berechnungen sowie die Registernutzung zu minimieren, was in vielen Situationen sehr wertvoll sein kann.
MUSTERAUSFÜHRUNGSBEISPIEL FÜR LÄNGEN 1 BIS 8 ■ .'
' ■
Das vorstehend erörterte beispielhafte Ausführungsbeispiel nimmt an, daß die Codeworte Längen zwischen 2 und 9 aufweisen. Wenn jedoch die Codeworte Längen zwischen 1 und 8. aufweisen, kann die Decodierung an Einheiten von 8 Bits ausgeführt werden. Ein Maximum von einer Prüfung anstatt von 8 ist für jedes Codewort erforderlich. Dies erfordert, daß der Bitstrom zu 8x8 Bits erweitert wird. Wenn beispielsweise der Eingangsbitstrom "bO,bl,..." ist (wobei bi für das Byte i steht), ist der umgewandelte Bitstrom bO^CbCbO^O^O^O^O^l^l^l^l^l^l^l^l, . . . ". Die anfängliche Bitmaske ist nun
"10000000,11000000,11100000,11110000,11111000,11111100,111111 10,11111111 b" oder
Die Tabelleneinträge werden folgendermaßen erzeugt:
J=O
while J is less than (MaxLength-MinLength +1) do
J = (1/8)*8 + 7 - J%8
MAXCODE_P [I ]= (2i8-MinLength~I) * MAXCODE [J] )+l
MAXCODE_P [I ]= (2i8-MinLength~I) * MAXCODE [J] )+l
1=1 + 1
end while
end while
J=I .
while J is less than 9 do
J=O
while J is less, than CODENUM[I] do
while J is less, than CODENUM[I] do
HUFFVAL_P[J+8*(MAXCODE[I]+1-CODE
[J] ) ] =HUFFVAL [ VALPTR [I] + CODE[J]
-MINCODE[I]]
-MINCODE[I]]
J = J + 1
end while
1=1+1
end while
1=1+1
end while . '
■35 ' ■ · . ■ ■ ' ' ■'-·
Die Werte für die Tabelle HUFFVAL_P sind ganze Zahlen von 8 Bits ohne Vorzeichen. Die Werte für die Tabelle MAXCODE_P sind ganze Zahlen von 8 Bits ohne Vorzeichen.
MUSTERAUSFÜHRUNGSBEISPIEL FÜR LÄNGEN 1 BIS 32
Wenn die Länge der Codeworte zwischen 1 und 32 liegt, kann die Decodierung an Einheiten von 32 Bits durchgeführt werden. Ein Maximum von 8 Prüfungen anstelle von 16 Prüfungen ist erforderlich, um die Länge eines Codeworts zu ermitteln. Der Bitstrom wird in eine Form von 2x32 Bits folgendermaßen erweitert:
Eingangsbitstrom: b0,bl,b2,b3,b4,b5,b6,b7,...
Ausgangsbitstrom:
Ausgangsbitstrom:
b3,b2,bl,b0,b3,b2,bl,b0,b7,b6,b5,b4,b7,b6,b5,b4,...
Die anfängliche Bitmaske ist nun
"10000000,00000000,00000000,00000000,11000000,00000000,000000
00,00000000,00000000. b" oder "0x8000,0000,C000,0000".
20
20
Die Tabelleneinträge werden auch folgendermaßen berechnet:
J=O ' '
while J is less than 32 do
J = (1/2)*2 + 1 - J%2
J = (1/2)*2 + 1 - J%2
■ MAXCODE_P[I]=(2{32~MinLengch'I) *MAXCODE[J] ) +1
1=1 + 1
end while
end while
I=I ■ .·■ . ■
while I is less than 32 do
J=O
while J is less than CODENUM[I] do
J=O
while J is less than CODENUM[I] do
HUFFVAL_P[1+32*(MAXCODE[I]+1-CODE[J])]=HUFFVAL[VALPTR[I]+CODE[J]
-MINCODE[I]]
J =_J +1
end while
J= J +' 1
end while
end while
J= J +' 1
end while
Die Werte für die Tabelle MAXCODE_P sind folglich ganze Zahlen von 32 Bits ohne Vorzeichen. Die Werte der Tabelle HUFFVAL_P sind die maximale Größe von ganzen Zahlen von 32 Bits ohne Vorzeichen.
Der vorgeschlagene parallele Huffman-Decodieralgorithmus wurde in einem MMX™ Assemblercode implementiert. Für diesen Abschnitt ist die CPU-Zeit zum Erweitern des ursprünglichen Bitstroms in 4xl6-Bit-Teile in der Decodierzeit enthalten.
Wenn Codeworte der Länge I mit einer Wahrscheinlichkeit von 2"1 erscheinen, dann ist die Wahrscheinlichkeit, daß ein Codewort die Länge I aufweist, CODENUM [ I ]* 2'1. Wenn T[I] die Zeit zum Decodieren eines Codeworts der Länge I sein soll, dann kann die mittlere Decodierzeit für ein Symbol folgendermaßen berechnet werden:
16
CODENUM[I] * T[I]
1 = 2
Unter der Annahme der Komprimierung von zehn Bildern im allgemeinen Zwischenformat (CIF, Common Intermediate Format) unter Verwendung eines sequentiellen Algorithmus, und wenn nur ein Viertel der Koeffizienten der diskreten Cosinustransformation (DCT) unter Verwendung der RUN-LEVEL-Symbole codiert werden, kann die Anzahl der zu decodierenden Huffman-Codeworte folgendermaßen berechnet werden:
(352*288/4)*10 = 253440
Selbst wenn die DCT für dieses Beispiel ausgewählt wird, wäre es für übliche Fachleute offensichtlich, beliebige Transformationen zu verwenden, wie z.B. eine Differential-Analysecodemodulation (DPCM, Differential Parse Code Modulation) , Wellenlänge, Teilband-Transformation, Vektorquantisierung und dergleichen. Unter Verwendung eines 166 MHz Intel® Pentium® Prozessors mit MMX™ ist der Dekomprimierungszeitablauf für den besten Fall (bei dem alle Codeworte 2 bis 5 Bits lang sind), den schlimmsten Fall (bei dem alle Codeworte 12 bis 15 Bits lang sind), und den mittleren Fall (bei dem die Codelängen zwischen 2 und 16 Bits verteilt sind) in der nachstehenden Tabelle 2 gezeigt.
| Decodierzeit (in ms) | Parallele Huffman-Decodierung |
| bester Fall | 111 |
| mittlerer Fall | 113 |
| schlimmster Fall | 218 |
Tabelle 2 demonstriert, daß der parallele Algorithmus den Zeitablauf des schlimmsten Falls signifikant verringert, während sich eine überlegene Leistung für den mittleren Fall ergibt. Man beachte auch, daß noch bessere Ergebnisse durch weiteres Optimieren des Assemblercodes erreicht werden kön-
nen. · ■ . .
Wie für übliche Fachleute selbstverständlich ist, kann die vorliegende Erfindung in anderen speziellen Formen verkörpert werden, ohne von deren Gedanke oder deren wesentlichen Eigenschäften abzuweichen. Die Verfahren der vorliegenden Erfindung können beispielsweise auch auf andere SIMD-Systeme ange-
wendet werden, wie z.B. das Sun® UltraSPARC® mit Visual-Befehlsatz, 3DNow!™ von Advance Micro Device, Inc.®, und dergleichen können verwendet werden.
Auch der neue Pentium® III von Intel® (auch als Katmai bekannt), der Nachfolger des Pentium® II, fügt Strearning-SIMD-Erweiterungen hinzu. Der Pentium® III stellt 70 neue Befehle bereit. Viele Befehle sind für Gleitkomma-SIMD-Operationen, die auf 3-D-Anwendungen abzielen. Verschiedene Befehle für Festkommazahlen-Operationen wurden auch hinzugefügt. Diese Befehle zielen teilweise auf die MPEG-Codierung/Decodierung (Bewegungsabschätzung, Bewegungskompensation) ab. Übliche Fachleute würden jedoch verstehen, daß diese neuen Befehle ausgenutzt werden können, um die Decodierverfahren der vorliegenden Erfindung weiter zu beschleunigen. Min- und Max-Operationen können beispielsweise die Codelängenerfassung beschleunigen. Ein Einfügungsbefehl zum Übertragen von Ganzahlenregistern und einem Teil von MMX™ Registern sieht auch eine Beschleunigung vor. Ebenso kann ein Sammelbefehl den Bitstrom in effizienterer Weise duplizieren.
Alternativ können die Verfahren der vorliegenden Erfindung in einem Computersystem implementiert werden. Die Verfahren 500 und 600 können beispielsweise in einer Karte zur peripheren Komponentenverbindung (PCI, Peripheral Component Interconnect) implementiert werden. Die PCI-Karte kann am PCI-Bus eines Personalcomputers installiert sein. Auch andere Bustechnologien, wie z.B. NUBUS, ISA, EISA, universeller serieller Bus (USB), 1394 Firewire und beschleunigter Graphikkarten-0 Steckplätz (AGP, Accelerated Graphics Port), können auch verwendet werden. Überdies können die Verfahren der vorliegenden Erfindung unter Verwendung der verfügbaren Routinen und Merkmale, wie z.B. Cachespeicherung, neuen Befehlssätzen, Mehrprozessorsystemen und ihren Äquivalenten, implementiert wer-5 den.
III. VIGNETTIERUNGSKORREKTUR
Das Register 34 von Fig. 2 ermöglicht, daß eine Vignettierungskorrektur angewendet wird, wobei somit ermöglicht wird, daß eine preisgünstigere Linse 10 in der Kamera 32 verwendet wird. Dies ermöglicht, daß die Kosten der Kamera noch weiter nach unten gebracht werden.
Im Betrieb fragt &ngr; der. Prozessor im Hauptrechner 36 die Kamera ab, um den Wert des Registers 34 zu lesen. Dieser wird dann im Vignettierungskorfeekturblock 40 des Hauptrechners verwendet, um Vignettierungsfehler der Kamera zu korrigieren. Dies wird vor der Pixelkorrektur des Blocks 42 durchgeführt, um zu vermeiden, daß die Vignetfeierung als fehlerhaftes Pixel mißverstanden wird. Die Korrektur kann durch Addieren eines Verschiebungswerts zum gelieferten Pixelhelligkeitswert durchgeführt werden.
Fig. 10 stellt eine Pixelmatrix 11 und eine entsprechende Helligkeitskurve 13 über der Y-Achse dar. Ein zentrales Pixel 17 mit dem Wert (xo/Yo) entspricht dem Punkt der maximalen Helligkeit der Linse. Ein zweites Beispielpixel 15 liegt nahe der minimalen Helligkeit, wobei es einen Vignettierungseffekt "mit der Differenz zwischen der Kurve 13 und einem maximalen Helligkeitswert 19 zeigt. Die vorliegende Erfindung korrigiert diesen Vignettierungseffekt sowohl in X- als auch in Y-Richtung.
Bei einem Ausführungsbeispiel ist eine mit rT angegebene Schwelle dargestellt, innerhalb der die Kurve 13 nahe dem Maximalwert 19 liegt und keine Vignettierungskorrektur angewendet werden muß. Alternativ kann die Korrektur trotzdem auf alle Pixel angewendet werden, um irgendwelche· Übergangseffekte an den Punkten rT zu vermeiden.
In Abhängigkeit von der speziellen Linse, die gewählt wird, kann ihr.festgelegtes Vignettierungsausmaß verwendet werden, um in einem Register 72 eine Konstante vorzusehen. Somit könnten verschiedene Linsen bei der Herstellung einer Kamera verwendet werden/ indem einfach ein unterschiedlicher konstanter Wert in das Register 72 programmiert wird. Dies ermöglicht, daß mehrere Quellen für die Linsen verwendet werden, und ermöglicht eine Kompensation hinsichtlich Änderungen der Linsengualitat von Posten zu Posten oder von Hersteller zu Hersteller.
Ein Ausführungsbeispiel einer Gleichung zum Implementieren und einer Hardware oder Software zum Durchführen der Vignettierungskorrektur wird nachstehend dargelegt. Obwohl die Konstante in der Kamera gespeichert ist, kann die Vignettierungskorrektur entweder durch die Hardware/Software in der . Kamera oder die Software in einem Hauptrechner durchgeführt werden. Der Vignettierungsfehler einer Linse mit geringer Qualität kann als Durchgang in der Mitte der Linse und eine parabolische Kurve nahe der Kante der Linse modellhaft dargestellt werden. Die Transformationsfunktion ist isotrop: pi und po soll der Pixelwert vor und nach der Vignettierungskorrektur sein, und xo und y0 soll die Koordinate der Mitte der Linse sein (sollte die Mitte des Bildes sein, wenn die Linse korrekt montiert ist). Dann gilt
Po = pi*(a*r2+l) ■'.,·■
= pi* (a* ((X-X0)2+(Y-Yo) 2)+l
"a" ist eine kleine positive Konstante. Um auf der sicheren Seite zu sein, kann ein Maximum von 50% Vignettierung korrigiert werden, was bedeutet:
. 1,0 = 0,5*(a*(176*176+144*144)+l)
• ·
a = l,9338*10"5
Normiert mit 226 ergibt dies a - 1298. Durch Begrenzen von a auf 0 bis 1023 und Durchführen der umgekehrten Berechnung ist die maximale korrigierbare Vignettierung 56%.
Man beachte, daß in der oben angegebenen Formel das Pixelseitenverhältnis nicht berücksichtigt wird. Für ein quadratisches Pixel ist die Gleichung exakt, für ein Pixelseitenverhältnis von 12/11 weicht das Ergebnis geringfügig ab. a wird auch mit 1A skaliert, wenn das Sensorformat nicht skaliertes QCIF (unterabgetastetes QCIF aus CIF durch Auslassen von jedem zweiten Pixel in sowohl horizontaler als auch vertikaler Richtung) ist. .'■'■
Wenn yA 10 Bits ist, (x-x0)2 und (y-y0)2 16 Bits (für CIF-Größe) ist und y0 10 Bits ist, legt dies fest, daß a 10 Bits sein muß (0 bis 1023)..
Fig. 11 ist ein Blockdiagramm eines Ausführungsbeispiels eines Hardwaresystems oder von Softwareblöcken zum Implementieren der vorstehend beschriebenen Gleichung. Insbesondere wird ein wahlfreier Ansteuerschältkreis/-block 80 an den Ansteuereingang eines Multiplexers 82 angelegt. Wenn die Pixelposition geringer als die Schwelle 1C2 [rT] ist, wird das Eingangspixel pi auf der Leitung 84 einfach zum Ausgangspixel po auf der Leitung 86 durchgeleitet. Wenn sie größer ist als die Schwelle, wird durch Implementieren der obigen Formel mit der in Fig. 11 gezeigten Hardware eine Vignettierungskorrektur
0 angewendet. >
Insbesondere wird der aktuelle x-Wert des Pixels xi an den arithmetischen Schaltkreis/Block 88 angelegt,, wo das zentrale Pixel Xo von diesem subtrahiert wird. Dieser Wert wird dann durch zweimaliges Anlegen seines Eingangssignals über einen
Multiplexer 90 an einen Multiplizierschaltkreis/-block 92 quadriert, wobei er in einem Addierer/Akkumulator 94 aufsummiert wird. Ebenso wird der y-Wert yi zu einem Schaltkreis/Block 96 geliefert, wo die Differenz vom zentralen y-Wert Yo ermittelt wird. Dieser wird ebenso als zwei Werte über den Multiplexer 90 an einen Multiplizierer 92 angelegt, wo er quadriert und zum Addierer/Akkumulator 94 geliefert wird, wo er zum quadrierten x-Wert addiert wird. Die Verwendung des Multiplexers ermöglicht einfach durch Zeitmultiplextechnik, daß derselbe Multiplizierer 92 für beide Berechnungen verwendet wird. Offensichtlich wäre eine Alternative, zwei separate Multipliziereinheiten bereitzustellen.
Das Ausgangssignal des Akkumulators 94 wird dann zu einem zweiten Multiplizierer 96 geliefert, wo es mit dem konstanten Wert aus dem Register 72 multipliziert wird. Der Wert von Eins wird dann in einer Einheit 98 subtrahiert und dieser Wert wird mit dem Pixelwert pi in einem Multiplizierer 100 multipliziert. Das Ausgangssignal wird auf einer Leitung 102 über den Multiplexer 82 zur Ausgangsleitung 86 geliefert. Offensichtlich könnten Variationen der Schaltung bereitgestellt werden, wie z.B. Verwendung derselben Multiplizierschaltung für die Multiplizierer 92, 96 und 100, wobei der Multiplizierer für verschiedene Zwecke in verschiedenen Zeitschlitzen verwendet wird.
Der wahlfreie Schaltkreis/-block 80 stellt einen Vergleicher 104 bereit, der das Ausgangssignal des Addierers/Akkumulators 94 (den Radiuswert der Werte x2+y2) mit dem Schwellenradius 0 in einem Register 106 vergleicht.
Vorzugsweise weist die Konstante a dieselbe Anzahl von Bits wie der Pixelwert pi auf. Wenn pi 10 Bits ist, während die x- und y-Werte 16 Bits sind, wäre die Konstante a folglich 10 Bits, a kann auch mit 1A skaliert werden, wenn das Sensorfor-
mat nicht skaliertes QCIF (beschnitten) ist. Somit wird eine Korrektur bereitgestellt, wobei das Bild vor der Vignettierungskorrektur beschnitten wird.
Außerdem kann die Korrektur hinsichtlich des Pixelseitenverhältnisses durch Multiplizieren des y-Werts mit 11/12 durchgeführt· werden, wenn ein TV verwendet wird.
Bei einem Ausführungsbeispiel findet die Korrektur nur außerhalb eines vordefinierten Durchmessers statt. Dieses nimmt an, daß die Linse um die Mitte der Linse zufriedenstellend arbeitet, was häufig eine vernünftige Annahme ist. Dabei kann ein genaueres Korrekturmodell hergeleitet werden. rT soll der Durchmesser sein, innerhalb dessen der Vignettierungsfehler ignoriert werden kann. Dann gilt
wenn r<=rT
Po=Pi/
wenn r>=rT
Po=Pi* (a*(r2-rT 2)+l)
=Pi* (a* (( (X-X0)2+ (Y-Yo)2- ( (xt-Xo) 2+ (Yt-
Yo)2)
Die vorliegende Erfindung gestattet somit eine Variation in Linsen, und auch, daß preiswertere Linsen verwendet werden. Sie verbessert die automatische Verstärkungsregelung (AGC, Automatic Gain Control) und die AWB im Hauptrechner.. Außerdem ermöglicht sie eine bessere Objektbewegungsverfolgung. Die Objektbewegung [sverfolgung] wird gewöhnlich durch Annehmen, daß der Luminanzwert derselbe ist, wenn sich das Objekt zur Kante eines Sensors bewegt, und somit Verfolgen durch Suchen nach demselben Luminanzwert durchgeführt. Offensichtlich können Vignettierungseffekte die Anstrengungen, um das Objekt aufzufinden, vereiteln. Durch Anwenden der vignettierungskorrektur nahe beim Sensor kann dies überwunden werden. Die Er-
findung stellt auch eine insgesamt verbesserte Videoqualität bereit.
IV. PIXELKORREKTUR
5
5
Der Block 42 von Fig. 2 führt eine Pixelkorrektur im Hauptrechner durch. Dies ermöglicht, daß fehlerhafte Detektorstellen in der CMOS- oder CCD-Sensormatrix korrigiert werden. Im allgemeinen wird dies durch Vergleichen eines Helligkeitswerts mit dem Helligkeitswert der benachbarten Detektorele-. mente durchgeführt. Wenn die Differenz mehr als ein Schwellenwert ist, wird angenommen, daß dies an einem fehlerhaften Sensorelement liegt. Folglich wird ein korrigierter Wert eingesetzt, typischerweise ein Mittelwert der Umgebungspixelwerte.
Damit dies im Hauptrechner durchgeführt wird, ohne die Bildrate des Video zu beeinträchtigen, wird der Algorithmus einfach gehalten. Dies wird durch zwei Hauptmerkmale bewerkstelligt. Erstens wird die Erkennung von fehlerhaften Pixeln nicht an irgendeinem Vollbild durchgeführt, sondern nur an einer Unterabtastung der Vollbilder. Die Erkennung kann beispielsweise nur alle 32-128 Vollbilder durchgeführt werden. Zweitens ist die geführte Statistik einfach, um die Menge an erforderlicher Verarbeitung zu verringern. Insbesondere kann die Statistik einfach den Ort des Pixelelements und die Häufigkeit oder Anzahl von Malen, die ein fehlerhaftes Pixel erkannt wurde, umfassen.
0 Das System arbeitet durch Auslesen oder Abtasten der Bildrohdaten aus einer Bildaufnahmevorrichtung nach Pixeln, die in der Intensität von ihren benachbarten Pixeln um mehr als ein spezielles Ausmaß abweichen. Die Bildsensor-Rohdaten sind das unverarbeitete Helligkeitsdaten-Ausgangssignal, das vom BiId-5 sensor erhalten wird und das nicht irgendeine verlustbehafte-
te Komprimierung oder Farbverarbeitung durchlaufen hat. Der Bildsensor liest eine analoge Spannung oder einen analogen Strom, wandelt in digital um und sendet das Signal ohne Weiterverarbeitung oder Komprimierung zu einem Hauptrechner. Die Photostellen auf dem Bildsensor werden verwendet, um entweder digitale Färb- oder Monochrom-Stand- oder
Videobilder zu erfassen. Die Bildrohdaten werden über einen Bus mit einer Datenübertragungsrate, die durch das Busprotokoll des speziellen Busses, wie z.B. eines universellen seriellen Busses (USB) oder eines parallelen Anschlusses, festgelegt ist, zum intelligenten Hauptrechner gesandt.
Videobilder zu erfassen. Die Bildrohdaten werden über einen Bus mit einer Datenübertragungsrate, die durch das Busprotokoll des speziellen Busses, wie z.B. eines universellen seriellen Busses (USB) oder eines parallelen Anschlusses, festgelegt ist, zum intelligenten Hauptrechner gesandt.
Die Bildsensor-Rohdaten, der Ort und die Häufigkeit des Auftretens jedes fehlerhaften Pixels und die Ergebnisse aller Zwischenberechnungen, die vom Computerprogramm ausgeführt werden, werden alle im Speicher gespeichert. Andere Algorithmen werden dann verwendet, um die Werte von benachbarten Pixeln eines anomalen Pixels zu mitteln, um die Daten von dem fehlerhaften Pixel zu ersetzen. Die korrigierten Daten können 0 dann weiterverarbeitet und schließlich auf dem Monitor angezeigt werden. Das Verfahren umfaßt eine Videounterabtastung, was bedeutet, daß die Erkennung in verschiedenen Vollbildintervallen ausgeführt und wiederholt wird.' Die Videounter abtastung wird an einem von jeweils 128 (1/128) Vollbildern ausgeführt. Alternativ kann die Videounterabtastung an jeweils 1/64 Videovollbildern ausgeführt werden. Und noch bei einem zusätzlichen Ausführungsbeispiel wird die Videounterabtastung an jeweils l/(n mal X) Vollbildern ausgeführt, wobei &eegr; eine ganze Zahl ist und X nicht gleich 50 oder 60 ist. 50 und 60 entsprechen 50 Hz und 60 Hz, welche Wechselstrom-Beleuchtungsfrequenzen sind, die in den Vereinigten Staaten bzw. Europa verwendet werden. Auf diese Art und Weise wird sichergestellt,, daß anomale Rohdatenpixel keine Bildfehler der künstlichen Beleuchtungssysteme sind. Die Verwendung der Videounterabtastung ermöglicht schnelle und optimale Korrek-
* * it**
türen ohne die Notwendigkeit, jedes Vollbild abzutasten, was sich auf die Verarbeitungsgeschwindigkeit des Prozessors und des Systems nachteilig auswirken würde. Natürlich wird keine Videounterabtastung verwendet, wenn fehlerhafte Pixel in Standbildern erkannt und korrigiert werden.
Eine statistische Datenbank, die den Ort und die Häufigkeit des Auftretens von fehlerhaften Pixeln aufzeichnet, wird erzeugt und im Speicher gespeichert, um zu ermöglichen, daß das System seine Operation mit der Zeit lernt und anpaßt. Die Tendenzen aus der statistischen Datenbank werden gespeichert, so daß wahrhaft anomale Pixel mit der Zeit von der falschen Erkennung von echten Anomalien in dem Zielbild, Beleuchtung oder anderen durch die Umgebung induzierten Anomalien unterschieden werden können. Die Operationslogik der statistischen Datenbank und die Einzelheiten der Operation des Computerprogramms werden nachstehend beschrieben.
Fig. 12 stellt einen vereinfachten Ablaufplan dar, der die 0 Wirkungsweise des Softwareprogramms beschreibt, das in einem System zum Erkennen und Korrigieren von fehlerhaften Pixeln gemäß einem Ausführungsbeispiel der vorliegenden Erfindung implementiert wird. Der erste Schritt bei der Erkennung und Korrektur von fehlerhaften Pixeln umfaßt das Erfassen eines Teils eines Vollbildes von Bildrohdaten von einer Bildsensormatrix, Schritt 1210. Die Bildrohdaten können Daten sein, die einer Liveszene entsprechen, welche digitalisiert werden, oder sie können Daten sein, die einer Kalibrierung oder einem "schwarzen" Hintergrundbild entsprechen. Das "schwarze" Hin-0 tergrundbild kann durch Verringern der Integrationszeit der Sensormatrix oder durch Verringern der Verstärkung des Bildsignals erhalten werden. Die Rohdaten vom "schwarzen" Bild . können.verwendet werden, um überaktive Photostellen zu erkennen. Die dem "schwarzen" Bild entsprechenden Rohdaten müssen ebenfalls schwarz sein, und wenn irgendein Pixel dies nicht
| ·' -&igr; | » · | ■··· | * * | |
| * &iacgr; · |
* *
0 |
|||
|
* ·
»»♦» · |
* |
ist, dann entspricht es einer überaktiven Photosteile. Die Verwendung des "schwarzen" Bildes kann die Erkennung von fehlerhaften Pixeln durch Entfernen von irgendwelchen Helligkeit sabweichungen, die von der Szene selbst stammen, verbessern.
Obwohl die Daten von einem gesamten Vollbild für die Erkennung und Korrektur von fehlerhaften Pixeln auf einmal verarbeitet werden können, beginnt der Algorithmus seine Funktion, sobald Daten von drei Zeilen aus dem Bildsensor am Hauptrechner eingetroffen sind. Drei Zeilen von Daten aus der Bildsensormatrix ermöglichen die Verarbeitung von Daten für ein Pixel und alle seine umgebenden Nachbarn. Wenn die Sensormatrix zum Erfassen von Videobildern verwendet wird, wird überdies die Videounterabtastung verwendet, so daß nicht jedes Vollbild des von der Bildsensormatrix erfaßten Videos für die Operation der Erkennung von fehlerhaften Pixeln erforderlich ist. Bei einem bevorzugten Ausführungsbeispiel wird die Fehlererkennung wie vorstehend beschrieben in vorbestimmten Vollbildintervallen ausgeführt und die Korrektur wird auf alle Videovollbilder angewendet. Die vernünftige Verwendung der Videounterabtastung ermöglicht, daß das Verfahren sehr schnell und effizient ist.
Bei einem alternativen Ausführungsbeispiel wird keine Videounterabtastung verwendet, so daß die Erkennung von fehlerhaften Pixeln an jedem Videovollbild ausgeführt wird. Die Verwendung der Videounterabtastung ist eine Funktion der Geschwindigkeit des Prozessors des intelligenten Hauptrechners.
0 Wenn ein Prozessor schnell genug ist, um eine Erkennung von anomalen Pixeln in jedem Vollbild zu ermöglichen, dann wird die Videounterabtastung nicht verwendet. Wenn der Prozessor andererseits nicht schnell genug ist, um eine Videoverarbeitung mit einer gewünschten Vollbildrate zu ermöglichen, dann wird die Videounterabtastung verwendet, um die Datenübertra-
•&phgr; · » &phgr; · ·· &phgr; &phgr; &phgr; &phgr; &phgr; &phgr; # &phgr; &phgr; · ·
gung mit dieser gewünschten Vollbildrate sicherzustellen. Ohne die Videounterabtastung ist die Korrektur von anomalen Pi-' xeln unmittelbar, so daß Fehler genau in dem Vollbild, in dem sie erkannt werden, korrigiert werden. Mit der Videounterabtastung wird die Korrektur von anomalen Pixeln verzögert, bis ein Vollbild abgetastet ist, um anomale Pixel zu erkennen. Daher sind die Wahl der Verwendung der Videounterabtastung und der Rate der Unterabtastung eine Funktion der Prozessorgeschwindigkeit und einer Abwägung zwischen der Prozessorleistung und der Verzögerung vor der Korrektur.
Nach der Datenerfassung werden für jedes der erfaßten Pixel der lokale Pixelhelligkeitswert und auch der mittlere Helligkeitswert aller seiner unmittelbar benachbarten Pixel berechnet und gespeichert, Schritt 1212. Als nächstes wird ein Abweichungsschwellenwert festgelegt, Schritt 1214. Die Abweichungsschwelle legt das annehmbare Niveau der Varianz zwischen dem Helligkeitswert eines Pixels und dem mittleren Helligkeitswert aller seiner unmittelbar benachbarten Pixel 0 fest. Als nächstes wird für jedes erfaßte Pixel eine lokale Helligkeitsabweichung berechnet, Schritt 1216. Die lokale Helligkeitsabweichung ist der Absolutwert der Differenz zwischen dem Helligkeitswert eines. Pixels und dem Mittelwert des Helligkeitswerts aller seiner unmittelbar benachbarten Pixel.
Als nächstes wird für jedes Pixel, dessen Daten erfaßt wurden, seine lokale Helligkeitsabweichung mit. der Abweichungsschwelle verglichen, Schritt 1218. Jedes Pixel, dessen lokale Helligkeitsabweichung den Schwellenabweichungswert übersteigt, wird dann als fehlerhaftes Pixel gekennzeichnet. Der physische Ort und die Häufigkeit des Auftretens jedes fehlerhaften Pixels wird dann in einer statistischen Datenbank aufgezeichnet, Schritt 1220. Die statistische Datenbank wird dann abgefragt, um festzustellen, ob der Datenwert des feh-5 lerhaften Pixels korrigiert werden sollte, Schritt 1222.. Die
statistische Datenbank entwickelt durch Speichern des Orts und der Häufigkeit der fehlerhaften Pixel mit der Zeit Tendenzen, die bestätigen, welches der fehlerhaften Pixel eine Korrektur rechtfertigt. Die Logik der Tendenzen von der statistischen Datenbank . rechtfertigt anfänglich eine Korrektur aller gekennzeichneten fehlerhaften Pixel als Vorgabe und rechtfertigt mit der Zeit eine Pixelkorrektur nur, wenn ein spezielles Pixel eine Auftrethäufigkeit von mindestens zwei aus den letzten vier Abfragen aufweist.
Die fehlerhaften Pixel, die durch den Filter der statistischen Datenbank gelaufen sind, werden als nächstes korrigiert, Schritt 1224. Um ein fehlerhaftes Pixel zu korrigieren, werden die fehlerhaften Helligkeitsrohdaten für ein fehlerhaftes Pixel durch den lokalen mittleren Helligkeitswert dieses Pixels ersetzt, welcher der mittlere Helligkeitswert aller seiner unmittelbar benachbarten Pixel ist. Als nächstes werden die korrigierten Daten von den fehlerhaften Pixeln sowie Daten von nicht fehlerhaften Pixeln vorbereitet, damit sie zur anschließenden Verarbeitung gesandt werden, Schritt 1226. Die anschließende Verarbeitung kann eine Komprimierung, Farbverarbeitung und Codierung in Datenformate, die sich zur Anzeige eignen, umfassen. Die Erkennung und Korrektur von fehlerhaften Pixeln wird an den Rohdaten von der Bildsensormatrix ausgeführt, da es bevorzugt ist, die Daten zu korrigieren, bevor irgendeine anschließende Verarbeitung stattgefunden hat, da diese Verarbeitung selbst Bildfehler einführen kann, die von Bildfehlern, die infolge fehlerhafter Photostellen erzeugt wurden, schwierig zu unterscheiden sind.
Der Softwarealgorithmus wird absichtlich sehr einfach gehalten, so daß die Prozessorlast und/oder die Videobildrate minimal beeinflußt wird. Erstens wird der Softwarealgorithmus einfach gehalten, da er nur drei Funktionen erfüllt, nämlich die Erkennung, Korrektur und Statistikfunktionen. Die Stati-
stikroutine wird einfach gehalten, da nur Positionsinformationen und die Häufigkeit des Auftretens von anomalen Pixeln verfolgt werden. Zweitens wird der Softwarealgorithmus einfach gehalten, damit eine minimale Auswirkung auf die Rate vorliegt, mit der Daten zum Hauptrechner übertragen werden, so daß, während ein Vollbild auf fehlerhafte Pixel abgetastet wird, nachfolgende Vollbilder nicht aufgehalten werden. Die maximale Auswirkung des Softwarealgorithmus ist schlimmstenfalls die Verringerung der Videodatenübertragungsrate von 10 Vollbildern pro Sekunde (fps, frames per second) auf 9 fps. Drittens wird der Softwarealgorithmus derart einfach gehalten, daß die Last des Hauptrechnerprozessors nicht um mehr als 1% erhöht wird, wenn der Algorithmus ausgeführt wird. Die anomalen Pixel werden in einem Vollbild erkannt und die Korrekturen werden später an nachfolgenden Vollbildern eingeleitet, wenn sie aus dem Bildsensor ausgelesen werden.
Wenn das System arbeitet, werden folglich, wenn Bildrohdaten vom Bildsensor erhalten und zur Verarbeitung auf einem Hauptrechner gesandt werden, Vollbilder zur Erkennung und Korrektur von fehlerhaften Pixeln, wie vorstehend beschrieben, erfaßt. Wenn ein fehlerhaftes Pixel einmal identifiziert wurde und seine Korrektur durch die statistische Datenbank gerechtfertigt wurde, fährt diese Korrektur für alle nachfolgenden Vollbilder fort, bis die nächste Abfrage an die statistische Datenbank ausgeführt wird. Wenn zu diesem Zeitpunkt das anfänglich gekennzeichnete fehlerhafte Pixel weiterhin als ein fehlerhaftes festgelegt wird, dann fahren die Korrekturen fort, wie vorstehend beschrieben. Wenn andererseits die sta-0 tistische Datenbank die Korrektur von fehlerhaften Pixeln nicht rechtfertigt, dann werden diese Pixel nicht mehr korrigiert, bis die. nächste Abfrage an die statistische Datenbank durchgeführt wird. Die dynamische Art dieses Systems ermöglicht auch Korrekturen von Daten von Photostellen, die mit
der Zeit aufgrund von Umgebungsänderungen nach der Herstellung fehlerhaft werden.
Das statistische Analysesegment des Fehlererkennungs- und -korrekturalgorithmus ist ein wahlfreies. Es zielt auf die Steigerung der Effizienz der Pixelkorrekturen ab, um keine Anomalien zu korrigieren, die nicht durch fehlerhafte Photostellen verursacht wurden, und spart daher Verarbeitungszeit und -last. Die Effizienzgewinne müssen jedoch gegen die durch den statistischen Analyseteil selbst auferlegte Belastung abgewogen werden. Bei einem alternativen Ausführungsbeispiel, das den statistischen Analyseteil nicht verwendet, werden alle Pixel, die als fehlerhaft gekennzeichnet werden, korrigiert. Wie bei der Wahl der Verwendung oder nicht Verwendung der Videounterabtastung hängt die Entscheidung für die Verwendung des statistischen Analyseteils des Fehlererkennungsund -korrekturalgorithmus von einer Abwägung zwischen der Effizienz und der Prozessorleistung ab. Wenn der Prozessor schnell genug ist, dann sind Effizienzbelange nicht so wichtig. Wenn der Prozessor andererseits nicht schnell genug ist, dann wird die Pixelkorrektureffizienz wichtig genug, um die Implementierung des statistischen Analyseteils des Fehlererkennungs -'und -korrekturalgorithmus zu rechtfertigen.
Wie für Fachleute selbstverständlich ist, kann die vorliegende Erfindung in anderen speziellen Formen verkörpert werden, ohne von deren wesentlichen Eigenschaften abzuweichen. Die Rate der Videounterabtastung könnte beispielsweise verändert oder diese überhaupt nicht ausgeführt werden. Alternativ könnte die Logik der wahlfreien statistischen Datenbank von einer zum Korrigieren von fehlerhaften Pixeln als Vorgabe zu einer, bei der fehlerhafte Pixel nur korrigiert werden, wenn dies durch die Tendenzen von der statistischen Datenbank gerechtfertigt wird, geändert werden.
■ ■ ' .■ ;■ . .-■.'-.
V. KEIN BILDPUFFERSPEICHER
Die Beseitigung der Verarbeitung in der Kamera ermöglicht die Beseitigung des Bildpufferspeichers, da digitale Pixeldaten für eine derartige Verarbeitung nicht gespeichert werden müs- ; sen. Ein weiteres potentielles Problem besteht jedoch darin, daß die Ausgabe von Daten aus dem Sensor in Abhängigkeit von der Verfügbarkeit des Busses gehalten werden muß. Dies kann einen sehr großen Pufferspeicher erfordern. Bei einem Ausführungsbeispiel der Kamera wird nur ein kleiner Puffer in der Busschnittstelle verwendet. Ein kleiner Puffer ist durch Steuern des Zeitablaufs dessen, wann der Sensor gelesen wird, entsprechend dem, wann der Hauptrechnerbus verfügbar ist, und nur Lesen einer Menge an Daten, die bis zur nächsten Busverfügbarkeit gepuffert werden können, erreichbar.
Fig. 13 ist ein Blockdiagramm einer erfindungsgemäßen Videokamera. Das System umfaßt eine Linse 1310 und eine Sensormatrix, wie z.B. eine CMOS-Sensormatrix 1312, und ist mit einem USB 1320 verbunden.. ■
Die digitalisierten Signale vom CMOS-Sensorchip werden, anstatt daß sie wie im Stand der Technik in einem Bildpufferspeicher gespeichert werden, direkt zu einer Digitalverarbeitungsschaltung 1348 geliefert. Sie werden zuerst zu einem Video-Digitalsignalprozessor 1350 geliefert, der die Komprimierung und gegebenenfalls Größenordnungsfunktionen für eine minimierte Datenübertragung wie z.B. Beschneiden, Skalieren und digitale Filterung durchführt. Wenn sie einmal verarbeitet sind, werden die digitalen Daten zu einer Busschnittstelle 1354 geliefert.
Die Busschnittstelle 1354 umfaßt einen Bussteuereinheitspuffer 1356 und eine Bussteuereinheit 1358. Der Puffer 1356 5 speichert mindestens eine einzelne Zeile von Daten aus einer
CMOS-Sensorzeile. Vorzugsweise ist der Bussteuereinheitspuffer 1356 in der Lage, zwei USB-Vollbilder mit der maximal möglichen Rate oder 2 kBytes zu speichern. In Abhängigkeit von der Vollbildrate, Komprimierungsrate usw. kann dies typischerweise um bis zu 10 Zeilen oder sogar 15-20 Zeilen variieren, wenn eine Dezimierung durchgeführt wird.
Die Bussteuereinheit 1358 liefert ein Steuersignal auf einer Leitung 1360 zum Takt- und Steuergenerator 1326. Der Taktgenerator 1326 liefert Taktsignale auf der Leitung 1364 zur GMOS-Sensormatrix 1322. Die Taktsignale 1364 umfassen die Zeilen- und Spaltenübertragungsimpulse. Die Spaltenübertragungsimpulse werden wie im Stand der Technik geliefert, wobei sie periodisch die geladenen Werte aus der CMOS-Sensormatrix laden. Die Zeilenübertragungsimpulse werden jedoch verändert, um das Auslesen der Daten aus der CMOS-Sensormatrix mit der Verarbeitung durch die folgende Schaltung und der Übertragung der Daten zum USB abzustimmen.
Bei einem Ausführungsbeispiel ist die Digitalverarbeitungsschaltung 1348 in dasselbe Halbleiterchipsubstrat integriert wie die CMOS-Sensormatrix 1312, der Taktgenerator 1326, der ADC 1328 und die Zeilen- und Spaltenlogik und -puffer. Die Beseitigung des Bildpuffers ermöglicht diesen einzigen Chip.
Dies ermöglicht, daß eine kompaktere, kostengünstigere Videokamera konstruiert wird.
Fig. 14 stellt die Zeitsteuerung der Zeilenübertragungspulse dar, die auf der Leitung 1364 geliefert werden. Anstatt eines . kontinuierlichen Stroms von Impulsen werden die Bits in Gruppen ausgetaktet, wie sie von der Verarbeitungsschaltung benötigt werden, wie dargestellt. Eine erste Gruppe von drei Zeilen 1466 wird ausgegeben, und dann besteht eine Verzögerung, während diese Pixel verarbeitet und zum Bus übertragen werden. Dann kann eine nächste Gruppe von zwei Zeilen 1468 ge-
liefert werden. Es könnte dann in Abhängigkeit von der Verfügbarkeit im Zeilenpuffer und der Zeitsteuerung der Übertragung von Daten auf dem USB eine Verzögerung bestehen. Eine einzelne Zeile 1469 ist als nächstes übertragen dargestellt, gefolgt von einer nachfolgenden Gruppe von vier Zeilen, die durch eine Anzahl von Impulsen 1470 übertragen werden. Nachdem ein ganzes Bild übertragen wurde, wird ein vertikaler Übertragungsimpuls 1472 geliefert. Das Beispiel von Fig. 14 ist einfach als Erläuterung vorgesehen. Man beachte, daß, da die Zeilenübertragungsimpulse zwischen denselben Spaltenimpulsen geliefert werden, um die gezeigten Lücken zuzulassen, die Impulse viel enger zusammen geliefert werden. Somit werden Bündel von kleinen Gruppen von Impulsen geliefert, um Pixeldaten schnell zu senden, so schnell die Schaltung sie verarbeiten kann. Bei einem Ausführungsbeispiel kann ein ganzes Bild in einer Reihe von eng beabstandeten Impulsen ausgetaktet werden, was ermöglicht, daß die Verarbeitung vor dem nächsten Spaltenübertragungsimpuls vollendet wird. Wenn die Verarbeitung zum Zeitpunkt des nächsten Spaltenübertragungsimpulses noch nicht beendet ist, kann eine Verzögerung bestehen, die der Zeitsteuerung der Verarbeitung und der Verfügbarkeit des USB entspricht. Somit können die Zeilenimpulse alle nacheinander geliefert werden, aber mit einer schnelleren Rate als im Stand der Technik, und die Zeitsteuerung dieser Gruppierung von Impulsen nach dem Spaltenimpuls kann so verändert werden, daß sie direkt nach oder direkt vor dem nächsten Spaltenimpuls liegen, um den Verarbeitungs- und Buszeitsteuerungen gerecht zu werden.
0 VI. KEINE KOMPRIMIERUNG
Bei einem Ausführungsbeispiel der Erfindung können der. Korn primierungsblock 26 und der Dekomprimierungsblock 38 von Fig.
2 beseitigt werden. Dies kann beispielsweise durchgeführt werden, wenn ein neuer USB mit höherer Bandbreite entwickelt
• i—...·
wird. Frühere Ausführungsbeispiele können jedoch immer noch erwünscht sein, wenn Sensoren mit erhöhter Empfindlichkeit entwickelt werden, was ermöglicht, daß Videobilddaten mit höherer Auflösung übertragen werden, wobei die zusätzliche Bandbreite, die zur Verfügung gestellt wird, verwertet wird. Ein Ausführungsbeispiel nutzt jedoch die zusätzliche Bandbreite durch Beseitigen des Bedarfs für eine Komprimierung aus, wobei somit die Videokamera weiter vereinfacht wird und ihre Kosten verringert werden.
Dieselben in Fig. 2 gezeigten Hauptfunktionen würden im Hauptrechner durchgeführt werden, abgesehen von der Dekomprimierung. Die Kamera würde bei einem Ausführungsbeispiel dennoch das Korrekturregister 34 enthalten, was ermöglicht, daß die kostengünstige Linse 10 verwendet wird.
VII. VERLUSTBEHAFTETE KOMPRIMIERUNG
Bei einem alternativen Ausführungsbeispiel kann ein verlustbehaftetes Komprimierungsverfahren verwendet werden. Eine verlustbehaftete Komprimierung bedeutet, daß das wiedergewonnene Bild eine gewisse Auflösung einbüßen kann. Ein Nachteil der verlustbehafteten Komprimierung besteht darin, daß jegliche Vignettierungs- oder Pixelkorrektur, die im Hauptrechner durchgeführt wird, verschlechtert werden würde. Folglich wird bei diesem alternativen Ausführungsbeispiel die Vignettierungskorrektur und die Pixelkorrektur in der Videokamera selbst durchgeführt. Dies ermöglicht, daß ein verlustbehafteter Komprimierungsblock für den Block 26 von Fig. 2 verwendet wird. Die Farbverarbeitungs- und Skalierungsoperationen werden immer noch im Hauptrechner durchgeführt, wobei somit eine einfachere Kamera als der Stand der Technik von Fig. 1 bereitgestellt wird. ■ . ' ■ '
&Ggr;:!"' O: &Pgr; j Xi
Wie für Fachleute selbstverständlich ist, kann die vorliegende Erfindung in anderen speziellen Formen verkörpert werden, ohne von deren wesentlichen Merkmalen abzuweichen. Beispielsweise kann. bei einem Ausführungsbeispiel das Korrekturregister Merkmale einer Kamera korrigieren, die von Kamera zu Kamera bei der Herstellung variieren können, welche andere als Merkmale der Linse sind. Anstatt eines physischen gemeinsam genutzten Busses können die Daten von der Kamera zum Hauptrechner oder zu einem mit dem Hauptrechner verbundenen Empfänger drahtlos übertragen werden. Der Hauptrechner selbst kann ein Personalcomputer, eine intelligente Internet-Vorrichtung oder irgendeine andere Vorrichtung oder Komponente mit einer gewissen Art Prozessor oder Verarbeitungsschaltung sein. Folglich soll die vorangehende Beschreibung eine Erläuterung, aber keine Begrenzung des Schutzbereichs der Erfindung, der in den folgenden Ansprüchen dargelegt ist, sein.
Claims (14)
1. Videokamerasystem, Welches folgendes umfaßt:
a) eine Videokamera mit
einem Bildsensor, und
einem Verarbeitungselement zum Durchführen einer Datenkomprimierung;
einem Bildsensor, und
einem Verarbeitungselement zum Durchführen einer Datenkomprimierung;
b) eine Schnittstelle, die mit der Videokamera gekoppelt ist; und
c) eine Verarbeitungseinheit zum Empfangen von komprimierten Daten von der Schnittstelle, wobei die Verarbeitungseinheit dazu konfiguriert ist, folgendes durchzuführen
eine Dekomprimierung der komprimierten Daten, Wobei zumindest ein Teil der Operationen der Dekomprimierung parallel durchgeführt wird,
eine Korrektur von anomalen Pixeln, und
eine Farbverarbeitung;
so daß die Schaltung zur Korrektur von anomalen Pixeln und zur Farbverarbeitung in der Videokamera nicht erforderlich ist, und die Korrektur der anomalen Pixel vor der Farbverarbeitung durchgeführt wird.
eine Dekomprimierung der komprimierten Daten, Wobei zumindest ein Teil der Operationen der Dekomprimierung parallel durchgeführt wird,
eine Korrektur von anomalen Pixeln, und
eine Farbverarbeitung;
so daß die Schaltung zur Korrektur von anomalen Pixeln und zur Farbverarbeitung in der Videokamera nicht erforderlich ist, und die Korrektur der anomalen Pixel vor der Farbverarbeitung durchgeführt wird.
2. Videokamera nach Anspruch 1, wobei die Videokamera eine Linse enthält und die Verarbeitungseinheit ferner dazu konfiguriert ist, eine Vignettierungskorrektur für die Linse durchzuführen.
3. Videokamera nach Anspruch 1, welche ferner ein Speicherelement in der Videokamera zum Speichern eines konstanten Werts, der einem Ausmaß an Vignettierung der Linse entspricht, umfaßt.
4. Videokamera nach Anspruch 1, wobei die Korrektur der anomalen Pixel dazu ausgelegt ist, ihre Auswirkung auf die Videobildrate zu minimieren, indem eine Videounterabtaung zum Feststellen fehlerhafter Pixel und eine statistische Aufzeichnung von nur der Pixelposition und Daten bezüglich der Häufigkeit der erkannten fehlerhaften Pixel enthalten ist.
5. System nach Anspruch 1, wobei die Vetarbeitungseinheit einen Prozessor mit Befehlen zum parallelen Verarbeiten von mehreren Pixeln in einem Register umfaßt, wobei der Prozessor zur Dekomprimierung eines Datenstroms mit Komprimierungscodes mit variabler Größe programmiert ist, wobei zumindest ein Teil der Operationen der Dekomprimierung parallel an mehreren Teilbildern in dem Register durchgeführt wird.
6. System nach Anspruch 5, wobei der Datenstrom unter Verwendung der Huffman-Codierung komprimiert, wird und die Operationen folgende umfassen:
Duplizieren einer Gruppe von Bits aus dem Datenstrom, um Duplikate in mehreren Positionen in einem ersten Register vorzusehen; und
paralleles Durchführen einer Operation zwischen Werten in einem zweiten Register und den Duplikaten, wobei für jedes Duplikat ein anderer Wert verwendet wird.
Duplizieren einer Gruppe von Bits aus dem Datenstrom, um Duplikate in mehreren Positionen in einem ersten Register vorzusehen; und
paralleles Durchführen einer Operation zwischen Werten in einem zweiten Register und den Duplikaten, wobei für jedes Duplikat ein anderer Wert verwendet wird.
7. Videokamerasystem, welches folgendes umfaßt:
a) eine Videokamera mit
einem Bildsensor, und
einem Analog-Digital-Wandler, der mit dem Bildsensor gekoppelt ist;
einem Bildsensor, und
einem Analog-Digital-Wandler, der mit dem Bildsensor gekoppelt ist;
b) eine Schnittstelle, die mit der Videokamera gekoppelt ist, wobei die Schnittstelle eine gemeinsam genutzte Schnittstelle ist, die zu einer gleichzeitigen Verwendung durch andere Peripheriegeräte in der Lage ist; und.
c) eine Verarbeitungseinheit zum Empfangen von digitalen Daten von der Schnittstelle, wobei die Verarbeitungseinheit dazu konfiguriert ist, folgendes durchzuführen eine Korrektur von anomalen Pixeln, und
eine Farbverarbeitung;
so daß die Schaltung zur Korrektur von anomalen Pixeln und zur Farbverarbeitung in der Videokamera nicht erforderlich ist, und die Korrektur der anomalen Pixel vor der Farbverarbeitung durchgeführt wird.
eine Farbverarbeitung;
so daß die Schaltung zur Korrektur von anomalen Pixeln und zur Farbverarbeitung in der Videokamera nicht erforderlich ist, und die Korrektur der anomalen Pixel vor der Farbverarbeitung durchgeführt wird.
8. System nach Anspruch 7, wobei die Videokamera ferner eine Verarbeitungsvorrichtung zum Komprimieren von digitalen Daten von dem Analog-Digital-Wandler umfaßt.
9. Vorrichtung zum Decodieren eines Huffman-komprimierten Datenstroms in einem Prozessor mit Befehlen zum parallelen Verarbeiten von mehreren Pixeln in einem Register, welche folgendes umfaßt:
eine Vorrichtung zum Duplizieren einer Gruppe von Bits aus dem Datenstrom, um Duplikate in mehreren Positionen in einem ersten Register vorzusehen; und
eine Vorrichtung zum parallelen Durchführen einer Operation zwischen Werten in einem zweiten Register und den Duplikaten, wobei für jedes Duplikat ein anderer Wert verwendet wird.
eine Vorrichtung zum Duplizieren einer Gruppe von Bits aus dem Datenstrom, um Duplikate in mehreren Positionen in einem ersten Register vorzusehen; und
eine Vorrichtung zum parallelen Durchführen einer Operation zwischen Werten in einem zweiten Register und den Duplikaten, wobei für jedes Duplikat ein anderer Wert verwendet wird.
10. Vorrichtung nach Anspruch 9, welche ferner folgendes umfaßt:
eine Vorrichtung zum Verwenden eines Ergebnisses der Operation bei einer Indizierungsoperation, um eine Tabel- le von Huffman-decodierten Werten zu indizieren.
eine Vorrichtung zum Verwenden eines Ergebnisses der Operation bei einer Indizierungsoperation, um eine Tabel- le von Huffman-decodierten Werten zu indizieren.
11. Videokamera mit:
einem Bildsensor;
einem Analog-Digital-Wandler, der mit dem Bildsensor gekoppelt ist;
einem Speicherelement zum Halten eines Werts, der einem Korrekturfaktor für einen Aspekt der Kamera entspricht, wobei der Wert zu einem entfernten Hauptrechner übertragbar ist; und
einer Schnittstelle, die mit dem Analog-Digital-Wandler und dem Speicherelement gekoppelt ist, zum Herstellen einer Verbindung mit dem entfernten Hauptrechner.
einem Bildsensor;
einem Analog-Digital-Wandler, der mit dem Bildsensor gekoppelt ist;
einem Speicherelement zum Halten eines Werts, der einem Korrekturfaktor für einen Aspekt der Kamera entspricht, wobei der Wert zu einem entfernten Hauptrechner übertragbar ist; und
einer Schnittstelle, die mit dem Analog-Digital-Wandler und dem Speicherelement gekoppelt ist, zum Herstellen einer Verbindung mit dem entfernten Hauptrechner.
12. Kamera nach Anspruch 11, welche ferner eine Linse enthält, und wobei der Wert ein Linsenvignettierungswert ist.
13. Vorrichtung zum Erkennen und Korrigieren von fehlerhaften Pixeln in Rohdaten, die von einem Bildsensor gewonnen werden, der zum Erhalten eines digitalisierten Bildes verwendet wird, wobei die Rohdaten normale Pixel und fehlerhafte Pixel enthalten, wobei die Vorrichtung umfaßt:
a) eine Vorrichtung zum Empfangen eines Rohdatensignals für jedes Pixel in dem Bild;
b) eine Vorrichtung zum Berechnen eines Helligkeitswerts für jedes von dem Bildsensor empfangene Pixel;
c) eine Vorrichtung zum Berechnen eines lokalen Helligkeitswerts für jedes von dem Bildsensor empfangene Pixel;
d) eine Vorrichtung zum Berechnen, einer lokalen Helligkeitsabweichung des Helligkeitswerts von dem lokalen Helligkeitswert für jedes vom Bildsensor empfangene Pixel;
e) Vorrichtung zum Festlegen einer Abweichungsschwelle;
f) eine Vorrichtung, um für jedes vom Bildsensor empfangene Pixel seine lokale Helligkeitsabweichung mit der Abweichungsschwelle zu vergleichen und um Pixel mit lokalen Helligkeitsabweichungen, die größer sind als die Abweichungsschwelle, als, fehlerhafte Pixel festzulegen;
g) eine Vorrichtung zum Aufzeichnen des Orts der fehlerhaften Pixel in einer statistischen Datenbank;
h) eine Vorrichtung zum Aufzeichnender Häufigkeit des Auftretens der fehlerhaften Pixel in der statistischen Datenbank; und
i) eine Vorrichtung zum Korrigierendes Helligkeitswerts der fehlerhaften Pixel, vorausgesetzt, daß die Korrektur durch Tendenzen von der statistischen Datenbank gerechtfertigt ist.
14. Videokamera, umfassend:
eine Vorrichtung zum Lesen von Bilddaten von einer Bildsensormatrix;
eine Vorrichtung zum Verarbeiten der Bilddaten in einem Video-Digitalsignalprozessor (DSP), wobei die Verarbeitung das Durchführen einer Bildkomprimierung umfaßt;
eine Vorrichtung zum Liefern von verarbeiteten Bilddaten zu einem Bus; und
eine Vorrichtung zum Liefern eines Taktsignals zur Bildsensormatrix, um Bilddaten von der Bildsensormatrix mit einer Rate entsprechend einer Datenübertragungsrate über den Bus zu übertragen, so daß ein Bildpufferspeicher zum Speichern eines gesamten Vollbildes des Bildes nicht erforderlich ist.
eine Vorrichtung zum Lesen von Bilddaten von einer Bildsensormatrix;
eine Vorrichtung zum Verarbeiten der Bilddaten in einem Video-Digitalsignalprozessor (DSP), wobei die Verarbeitung das Durchführen einer Bildkomprimierung umfaßt;
eine Vorrichtung zum Liefern von verarbeiteten Bilddaten zu einem Bus; und
eine Vorrichtung zum Liefern eines Taktsignals zur Bildsensormatrix, um Bilddaten von der Bildsensormatrix mit einer Rate entsprechend einer Datenübertragungsrate über den Bus zu übertragen, so daß ein Bildpufferspeicher zum Speichern eines gesamten Vollbildes des Bildes nicht erforderlich ist.
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/345,167 US6833862B1 (en) | 1999-06-30 | 1999-06-30 | Image sensor based vignetting correction |
| US09/343,934 US6580828B1 (en) | 1999-06-30 | 1999-06-30 | Fast decoding |
| US09/464,364 US7009644B1 (en) | 1999-12-15 | 1999-12-15 | Dynamic anomalous pixel detection and correction |
| US09/602,547 US6704359B1 (en) | 1999-04-15 | 2000-06-21 | Efficient encoding algorithms for delivery of server-centric interactive program guide |
| PCT/US2000/018046 WO2001001675A2 (en) | 1999-06-30 | 2000-06-29 | Video camera with major functions implemented in host software |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| DE20080319U1 true DE20080319U1 (de) | 2002-05-16 |
Family
ID=27502681
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE20080319U Expired - Lifetime DE20080319U1 (de) | 1999-06-30 | 2000-06-29 | Videokamera, bei der die Hauptfunktionen in der Hauptrechnersoftware implementiert werden |
Country Status (3)
| Country | Link |
|---|---|
| CN (2) | CN2567940Y (de) |
| DE (1) | DE20080319U1 (de) |
| WO (1) | WO2001001675A2 (de) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE10345445B4 (de) * | 2003-02-26 | 2009-04-02 | Easydur Italiana Di Affri Renato | Vorrichtung zur Fertigung einer Feder |
Families Citing this family (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8188878B2 (en) | 2000-11-15 | 2012-05-29 | Federal Law Enforcement Development Services, Inc. | LED light communication system |
| FI113132B (fi) | 2001-06-28 | 2004-02-27 | Nokia Corp | Menetelmä ja laite kuvanparannukseen |
| EP1442425B1 (de) * | 2001-07-12 | 2018-08-08 | DxO Labs | Verfahren und vorrichtung zur erstellung von formatierter information über maschinenfehler |
| US7502057B2 (en) | 2002-06-20 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for color non-uniformity correction in a digital camera |
| US7233352B2 (en) * | 2002-06-20 | 2007-06-19 | Hewlett-Packard Development Company, L.P. | Method and apparatus for color non-uniformity correction in a digital camera |
| EP1447977A1 (de) * | 2003-02-12 | 2004-08-18 | Dialog Semiconductor GmbH | Kompensation von Vignettierung |
| WO2004093438A1 (en) * | 2003-04-17 | 2004-10-28 | Nokia Corporation | An improved mobile camera telephone |
| US7355639B2 (en) * | 2003-11-06 | 2008-04-08 | Omnivision Technologies, Inc. | Lens correction using processed YUV data |
| CN100367763C (zh) * | 2005-07-19 | 2008-02-06 | 华晶科技股份有限公司 | 清除数字影像噪音的方法及装置 |
| KR100848589B1 (ko) | 2005-10-11 | 2008-07-28 | 노키아 코포레이션 | 휴대용 카메라폰, 이미지 레코딩 방법 및 카메라 모듈 |
| CN101277436B (zh) * | 2007-03-26 | 2010-07-14 | 创惟科技股份有限公司 | 多串流式网络摄影机控制系统及其控制方法 |
| WO2008148050A1 (en) | 2007-05-24 | 2008-12-04 | Federal Law Enforcement Development Services, Inc. | Led light interior room and building communication system |
| US9455783B2 (en) | 2013-05-06 | 2016-09-27 | Federal Law Enforcement Development Services, Inc. | Network security and variable pulse wave form with continuous communication |
| US9258864B2 (en) | 2007-05-24 | 2016-02-09 | Federal Law Enforcement Development Services, Inc. | LED light control and management system |
| US9414458B2 (en) | 2007-05-24 | 2016-08-09 | Federal Law Enforcement Development Services, Inc. | LED light control assembly and system |
| US9294198B2 (en) | 2007-05-24 | 2016-03-22 | Federal Law Enforcement Development Services, Inc. | Pulsed light communication key |
| US9100124B2 (en) | 2007-05-24 | 2015-08-04 | Federal Law Enforcement Development Services, Inc. | LED Light Fixture |
| US11265082B2 (en) | 2007-05-24 | 2022-03-01 | Federal Law Enforcement Development Services, Inc. | LED light control assembly and system |
| US8103121B2 (en) * | 2007-08-31 | 2012-01-24 | Adobe Systems Incorporated | Systems and methods for determination of a camera imperfection for an image |
| US8890773B1 (en) | 2009-04-01 | 2014-11-18 | Federal Law Enforcement Development Services, Inc. | Visible light transceiver glasses |
| US9265112B2 (en) | 2013-03-13 | 2016-02-16 | Federal Law Enforcement Development Services, Inc. | LED light control and management system |
| US20150198941A1 (en) | 2014-01-15 | 2015-07-16 | John C. Pederson | Cyber Life Electronic Networking and Commerce Operating Exchange |
| US20170048953A1 (en) | 2015-08-11 | 2017-02-16 | Federal Law Enforcement Development Services, Inc. | Programmable switch and system |
| WO2022174881A1 (en) * | 2021-02-16 | 2022-08-25 | Huawei Technologies Co., Ltd. | Event sensor illuminance variation compensation |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4774565A (en) * | 1987-08-24 | 1988-09-27 | Polaroid Corporation | Method and apparatus for reconstructing missing color samples |
| EP0469716B1 (de) * | 1990-07-03 | 1997-04-23 | Canon Kabushiki Kaisha | Bildverarbeitungsgerät |
| EP0496573B1 (de) * | 1991-01-24 | 1995-12-20 | Matsushita Electric Industrial Co., Ltd. | Schaltung zur Beseitigung von Bildelementdefekten für Festkörper-Bildaufnehmer |
| EP0543980A1 (de) * | 1991-05-10 | 1993-06-02 | Eastman Kodak Company | An den Kundenbedarf anpassbare anwendungsspezifische integrierte Synchroniesierungs-und Kontrolschaltung für die elektronische Bilderfassung |
| US5231485A (en) * | 1991-11-19 | 1993-07-27 | Scientific-Atlanta, Inc. | Method and apparatus for transforming between fixed-rate vector quantized data and variable rate vector quantized data |
| US5475441A (en) * | 1992-12-10 | 1995-12-12 | Eastman Kodak Company | Electronic camera with memory card interface to a computer |
| JP3163872B2 (ja) * | 1993-10-21 | 2001-05-08 | 株式会社日立製作所 | コンピュータ機器ならびに撮像装置 |
| JP3242515B2 (ja) * | 1993-12-24 | 2001-12-25 | キヤノン株式会社 | 撮像装置 |
| US5477264A (en) * | 1994-03-29 | 1995-12-19 | Eastman Kodak Company | Electronic imaging system using a removable software-enhanced storage device |
| JPH0969978A (ja) * | 1995-08-30 | 1997-03-11 | Sanyo Electric Co Ltd | 撮像装置 |
| US5867214A (en) * | 1996-04-11 | 1999-02-02 | Apple Computer, Inc. | Apparatus and method for increasing a digital camera image capture rate by delaying image processing |
| US6005613A (en) * | 1996-09-12 | 1999-12-21 | Eastman Kodak Company | Multi-mode digital camera with computer interface using data packets combining image and mode data |
-
2000
- 2000-06-29 DE DE20080319U patent/DE20080319U1/de not_active Expired - Lifetime
- 2000-06-29 CN CN00900004U patent/CN2567940Y/zh not_active Expired - Fee Related
- 2000-06-29 WO PCT/US2000/018046 patent/WO2001001675A2/en not_active Ceased
- 2000-11-29 CN CN008110204A patent/CN1391725A/zh active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE10345445B4 (de) * | 2003-02-26 | 2009-04-02 | Easydur Italiana Di Affri Renato | Vorrichtung zur Fertigung einer Feder |
Also Published As
| Publication number | Publication date |
|---|---|
| CN2567940Y (zh) | 2003-08-20 |
| WO2001001675A3 (en) | 2001-07-05 |
| CN1391725A (zh) | 2003-01-15 |
| WO2001001675A2 (en) | 2001-01-04 |
| CN1365569A (zh) | 2002-08-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE20080319U1 (de) | Videokamera, bei der die Hauptfunktionen in der Hauptrechnersoftware implementiert werden | |
| US6995794B2 (en) | Video camera with major functions implemented in host software | |
| DE20019915U1 (de) | Dynamische Erkennung und Korrektur von anomalen Pixeln | |
| US5818525A (en) | RGB image correction using compressed flat illuminated files and a simple one or two point correction algorithm | |
| US5065229A (en) | Compression method and apparatus for single-sensor color imaging systems | |
| US5053861A (en) | Compression method and apparatus for single-sensor color imaging systems | |
| DE4345015C2 (de) | Digitale Signalverarbeitungsvorrichtung | |
| US5237402A (en) | Digital image processing circuitry | |
| DE19919600B4 (de) | Einrichtung und Verfahren zum Komprimieren von Bilddaten, die von einem Bildsensor empfangen werden, der ein Bayer-Muster aufweist | |
| US6983078B2 (en) | System and method for improving image quality in processed images | |
| US20080247653A1 (en) | Method and apparatus for parallelization of image compression encoders | |
| US20050276496A1 (en) | Image compression for rapid high-quality imaging | |
| DE60013806T2 (de) | Verfahren und schaltung zur intrinsischen verarbeitung von bilddaten in bildaufnahmevorrichtungen | |
| CN101686321B (zh) | 用于减少图像数据中的噪声的方法和系统 | |
| US5787209A (en) | Method of filtering images using image compressibility to determine threshold parameter | |
| CN100394766C (zh) | 图像信号处理装置和图像信号处理方法 | |
| US8462377B2 (en) | Method, apparatus, and system for reduction of line processing memory size used in image processing | |
| KR100207705B1 (ko) | Dct 블럭과 래스터 스캔을 위한 메모리 주소지정장치 및 그 방법 | |
| Deever et al. | Digital camera image formation: Processing and storage | |
| CN101340586A (zh) | 视频信号处理设备、方法和程序 | |
| DE69723358T2 (de) | Adressendekodierer für Videomatrix | |
| US20180091828A1 (en) | System and method for video processing | |
| KR100631096B1 (ko) | 주요기능이 호스트 소프트웨어에서 구현되는 비디오 카메라 | |
| TWI436649B (zh) | 處理原始高解析影像資料之影像處理裝置及其影像處理晶片和方法 | |
| JP2003143605A (ja) | ブロッキングアーチファクト検出方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| R163 | Identified publications notified | ||
| R207 | Utility model specification |
Effective date: 20020620 |
|
| R150 | Utility model maintained after payment of first maintenance fee after three years |
Effective date: 20030717 |
|
| R081 | Change of applicant/patentee |
Owner name: LOGITECH EUROPE S.A., CH Free format text: FORMER OWNER: LOGITECH INC., FREMONT, US Effective date: 20050210 |
|
| R151 | Utility model maintained after payment of second maintenance fee after six years |
Effective date: 20060829 |
|
| R152 | Utility model maintained after payment of third maintenance fee after eight years |
Effective date: 20080627 |
|
| R071 | Expiry of right |