-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich allgemein auf die Bildverarbeitung.
Insbesondere bezieht sie sich auf die Manipulation digitalisierter
Bilder, z.B. Drehen, Zuschneiden und Zoomen, die durchgeführt wird,
bevor das Bild in einer endgültigen
Form gedruckt oder angezeigt wird.
-
Hintergrund
der Erfindung
-
Die
Speicherung von Abbildungen und Bildern in einer computerlesbaren
Form ist übliche
Praxis. Scanner werden verwendet, um gedruckte Abbildungen oder
graphische Druckvorlagen zu digitalisieren. Bei Digitalkameras wird
Film als Medium zum Aufnehmen und Speichern von Photographien durch Flash-Speicherkarten ersetzt.
Die durch Scanner, Digitalkameras und dergleichen erzeugten Datendateien
können
gespeichert und gesendet werden; beispielsweise per E-Mail oder
indem sie in Webseiten für
das Internet integriert werden.
-
Softwareprogramme übersetzen
Datendateien, die Bilder darstellen, in eine Form, die auf Vorrichtungen
wie z.B. einem Computermonitor oder dem LCD-Bildsucher in einer
Digitalkamera angezeigt und anschließend in Form einer Druckkopie
gedruckt werden kann.
-
Damit
digitalisierte Bilder in großem
Umfang ausgetauscht werden können
und damit in großem Umfang
auf dieselben zugegriffen werden kann, müssen die Bildinformationen
in der Datendatei in einem vereinbarten Format gespeichert werden.
Es wurden bereits viele derartige Formate entwickelt. Formate für Standbilder
umfassen Bitmap, GIF, TIFF und JFIF; Formate für Laufbilder umfassen MPEG und
AVI.
-
Es
bedarf eines großen
Umfangs an digitalem Speicher, um eine digitalisierte Photographie
einer hohen Auflösung
zu speichern, die aus Hunderttausenden einzelner Bildelemente, die
als Pixel bekannt sind, besteht. Ein derartiger großer Speicherumfang
ist notwendig, da jedes Pixel in der digitalisierten Photographie
die Abwesenheit oder das Vorliegen eines Bildelements sowie unterstützender
Informationen wie zum Beispiel bezüglich der Farbe und Helligkeit
dieses Elements des Bildes, wenn vorhanden, darstellt. Digitalisierte
Bilder werden sehr häufig
in einem Zeilen- und -Spalten-Matrixformat von
zumindest 1.024 Pixeln in einer Richtung (z.B. horizontal) mal 768
Pixeln in der anderen Richtung (z.B. vertikal) gespeichert, was
insgesamt 786.432 Pixel für
das Bild ergibt. Wenn das Bild farbig ist, werden mehrere Sätze von
Informationen, die als Farbkanäle
bezeichnet werden, benötigt,
um sowohl die Helligkeit als auch die Farbe des Pixels aufzuzeichnen.
Eine Art und Weise, Farbinformationen zu speichern, die als RGB-Format
bekannt ist, verwendet getrennte Sätze für die Helligkeit von Rot, Grün und Blau,
die, wenn sie zusammengemischt werden, die richtige Farbe des Pixels
ergeben. Eine andere Möglichkeit,
die als YCbCr-(oder YCC-)Format bekannt ist, besteht darin, Helligkeitsinformationen
(oder Luminanzinformationen) in einem Satz zu speichern, und verwendet
zwei Sätze,
um Farbinformationen (Chrominanzinformationen) zu speichern.
-
Computerspeicher
ist als eindimensionaler Block aufeinander folgender Speicherplätze, von
denen jeder eine Adresse aufweist, logisch strukturiert. Die zweidimensionalen
Bildinformationen werden bei diesem eindimensionalen Speicher in
einer Reihenfolge, die durch das Bildformat festgelegt wird, gespeichert.
Eine übliche
Reihenfolge besteht darin, die Pixel in einer Zeilenreihenfolge
von links nach rechts zu speichern, wobei bei der oberen Zeile des
Bildes begonnen wird, dann bei der zweiten Zeile von oben von links
nach rechts fortgefahren wird und diese Abfolge wiederholt wird,
bis das ganze Bild gespeichert wurde.
-
Wenn
digitalisierte Bilddaten in dem RGB- oder YCC-Format gespeichert
werden, ist der Speicherumfang, der benötigt wird, um die Informationen für ein einziges
Pixel festzuhalten, für
alle Pixel derselbe, üblicherweise
etwa 8 bis 12 Bits an Informationen. Da der Speicherumfang pro Pixel
festgelegt ist und da die Reihenfolge, in der Pixel gespeichert
werden, bekannt ist, kann ein Computerprogramm die Position eines
beliebigen einzelnen Pixels in dem Speicher ohne weiteres berechnen.
Manchmal werden rechteckige Pixelsätze in dem digitalisierten
Bild zu einem Bildbereich gruppiert. Da die Anzahl von vertikalen
und horizontalen Pixeln pro Bildbereich festgelegt ist, ist die
Größe aller
Bildbereiche dieselbe, und somit kann die Position eines beliebigen
einzelnen Bildbereichs in dem Speicher desgleichen ohne weiteres
berechnet werden. Wenn das digitalisierte Bild manipuliert werden
soll, z.B. indem es gedreht, zugeschnitten oder gezoomt wird, müssen spezifische
Bildbereiche in einer nicht-sequentiellen Reihenfolge positioniert
werden. da die Position von Bildbereichen ohne weiteres berechnet
werden kann, können
die Bildbereiche auf rasche und effiziente Weise aus dem Speicher
erhalten werden.
-
Jedoch
weist das Speichern eines digitalisierten Bildes in dem beschriebenen
Formattyp den Nachteil auf, dass ein großer Umfang an Speicher erforderlich
ist. Je größer der
erforderliche Speicherumfang pro Bild ist, desto geringer ist die
Anzahl von Bildern, die in einer Speichervorrichtung einer gegebenen
Speicherkapazität,
z.B. einem Plattenlaufwerk oder der Flash-Speicherkarte in einer
Digitalkamera, gespeichert werden können. Um die Anzahl von Dateien,
die in einer gegebenen Speichervorrichtung gespeichert werden können, zu
erhöhen,
codieren viele Systeme das digitalisierte Bild, um die Bilddaten zu
einer geringeren Größe zu komprimieren,
bevor sie dieselben in dem Speicher speichern. Die Komprimierung
transformiert die Daten, um den Speichermenge, der erforderlich
ist, um das digitalisierte Bild zu halten, zu verringern. Eine üblicherweise
verwendete Komprimierungstechnik, die als Variable-Länge-Codierung bzw.
Entropiecodierung bekannt ist, führt
dazu, dass die Bildbereiche nicht mehr dieselbe Größe aufweisen.
Folglich kann die Position einzelner Bildbereiche nicht mehr berechnet
werden, und es kann nicht auf eine nicht-sequentielle Weise auf Bildbereiche
zugegriffen werden. Um einen gewünschten
Bildbereich zu finden, muss das Bild vom Beginn des Bildes an bitweise
sequentiell decodiert werden, bis der gewünschte Bildbereich lokalisiert wird.
-
Fachleuten
sind mehrere Techniken zum Zugreifen auf einzelne Bildbereiche in
einem digitalisierten Bild, das unter Verwendung der Entropiecodierung
gespeichert wird, bekannt. Ein bekanntes Verfahren dekomprimiert
die gesamte Bilddatei Bereich um Bereich in einen Pufferspeicher,
wobei die Bildbereiche erneut zu einer festgelegten Größe vergrößert werden,
so dass die Position von Bereichen ohne weiteres berechnet werden
kann. Ein Nachteil dieses Verfahrens besteht darin, dass ein Pufferspeicher
benötigt
wird, der groß genug
ist, um das gesamte Bild in einem nicht-komprimierten Format festzuhalten. Die
Hinzufügung
eines Speicherelements oder die Erhöhung der Größe eines vorhandenen Speicherelements,
um große,
nicht-komprimierte Bilddateien unterzubringen, kann die Kosten eines
Druckers, einer Digitalkamera oder einer anderen Art von Computer-Peripheriegerät, das Bildmanipulationen
an komprimierten Dateien durchführt,
beträchtlich
erhöhen.
-
Das
Dokument US-A-5408328 beschreibt ein virtuelles Komprimiertes-Bild-Bearbeitungssystem,
das ein typisches Bildkomprimierungsschema verwendet und jeder der
vielen MCUs in einer komprimierten Bilddatei (MCU = minimum coded
unit, minimalcodierte Einheit) ein Zeigerarray bereitstellt.
-
Ein
weiteres bekanntes Verfahren scannt die Datei sequentiell, wobei
Bereiche gezählt
und verworfen werden, bis der Gewünschte angetroffen wird. Dieses
Verfahren erfordert keinen großen
Puffer, sondern erfordert stattdessen eine unverhältnismäßig lange
Verarbeitungszeit, da dieses Ver fahren von dem Beginn der Datei
an für
jeden zu verarbeitenden Bildbereich wiederholt wird. Um die Bildmanipulation innerhalb
eines akzeptablen Zeitraums abzuschließen, kann ein leistungsfähigerer
Prozessor erforderlich sein, als er andernfalls nötig wäre, was
die Kosten des Produkts ebenfalls beträchtlich erhöhen kann.
-
Ein
weiteres bekanntes Verfahren speichert Positionsinformationen für die Bildbereiche
vor einer Komprimierung zusammen mit den Bildbereichen selbst in
der Datendatei. Jedoch führt
ein Aufnehmen dieser zusätzlichen
Informationen in die Bilddatei zu einer Vergrößerung und, was noch wichtiger
ist, zu einem kundenspezifischen Bilddateiformat, das mit Industriestandards
nicht mehr vereinbar ist. Dadurch wird verhindert, dass eine Vorrichtung,
die dieses Verfahren verwendet, Dateien manipuliert, die in einem
Standarddateiformat gespeichert sind, und dadurch wird der Austausch
digitalisierter Bilder mit anderen blockiert.
-
Aus
dem Vorstehenden ergibt sich, dass immer noch ein Bedarf an einer
Möglichkeit
besteht, auf einzelne Bereiche von Bildinformationen, die in einem
entropiecodierten Format gespeichert sind, beliebig zuzugreifen,
ohne dass ein großer
Pufferspeicher, übermäßige Verarbeitungszeit
oder -leistung oder die Verwendung eines nicht-standardmäßigen Bilddateiformat
notwendig sind.
-
Zusammenfassung
der Erfindung
-
Bei
einem bevorzugten Ausführungsbeispiel umfasst
eine Bildverarbeitungsvorrichtung einen Vorscanner, der Einzelne
einer Mehrzahl codierter Bildbereiche, die in einem Datenbitstrom
von digitalen Informationen eingebettet sind, sequentiell erfasst,
und einen Decodierer, der zumindest manche der Erfassten der Mehrzahl
codierter Bildbereiche, die vorübergehend
gespeichert wurden, decodiert. Gemäß dem neuartigen Verarbeitungsverfahren
der vorliegenden Erfindung, wie es in den beigefügten Patentansprüchen wie
es in den beigefügten
Patentansprüchen definiert
ist, speichert der Vorscanner lediglich Positionsinformationen bezüglich eines
ersten codierten Bildbereichwortes für jeden der Bildbereiche in
dem digitalen Bild, das zu Bildmanipulationszwecken verarbeitet
werden soll. Die vorübergehend
gespeicherten Positionsinformationen werden durch den Decodierer
auf nicht-sequentielle Weise selektiv wiedergewonnen und anschließend zu
Zwecken einer Bildmanipulation gemäß herkömmlichen Bildmanipulationstechniken
decodiert. Kurz gesagt lokalisiert und decodiert das neuartige Verfahren
lediglich diese Bildbereiche, die bezüglich eines Bildmanipulationsprozesses
von Interesse sind. Arten der Bildmanipulation umfassen ein Drehen,
Zuschneiden oder Zoomen des Bildes. Für jeden Farbkanal in dem digitalisierten
Bild können
zusammen mit den Positionsinformationen optional Koeffizienten gespeichert
werden, die ein Decodieren von Bildbereichen unterstützen, wenn
auf nicht-sequentielle Weise auf dieselben zugegriffen wird. Auf
Bildbereiche, für
die keine Positionsinformationen gespeichert sind, kann auf effiziente
Weise zugegriffen werden, indem auf einen vorherigen Bildbereich,
für den
Positionsinformationen gespeichert sind, auf nicht-sequentielle
Weise zugegriffen wird und indem anschließend auf nachfolgende Bildbereiche
sequentiell zugegriffen wird, bis der interessierende Bereich lokalisiert
ist.
-
Bei
einem weiteren bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung, wie sie durch die beigefügten Patentansprüche definiert
ist, umfasst ein Bildverarbeitungssystem eine Bildverarbeitungsvorrichtung,
die zwischen eine Datenbitstromquelle und eine Ausgabesichtungsanordnung gekoppelt
ist. Die Bildverarbeitungsvorrichtung scannt sequentiell den durch
die Datenbitstromquelle vorgesehenen Bitstrom, um Daten zu lokalisieren, die
komprimierte Bildbereiche in einem digitalisierten Bild, das an
der Ausgabesichtungsanordnung g angezeigt werden kann, angeben.
Die Bildverarbeitungsvorrichtung speichert vorübergehend Positionsinformationen,
die die Position jedes Bildbereichs in dem Datenbitstrom identifizieren,
und gewinnt anschließend
Ausgewählte
der gespeicherten Positionsinformationen wieder, um die Bilddaten,
die den wiedergewonnenen Informationen zugeordnet sind, vollständig zu
decodieren, um ein manipuliertes Bild über die Ausgabesichtungsanordnung
anzuzeigen oder zu drucken. Die Bildverarbeitungsvorrichtung umfasst
eine Bildrestrukturierungsvorrichtung, die die decodierten Bildbereiche
unter der Steuerung eines Bildverarbeitungs-Leitprogramms, das die
zu decodierenden Bildbereiche und den durchzuführenden Bildmanipulationsvorgang
bestimmt, manipuliert.
-
Andere
Aspekte und Vorteile der vorliegenden Erfindung, die durch die beigefügten Patentansprüche definiert
wird, ergeben sich aus der folgenden ausführlichen Beschreibung, die
in Verbindung mit den beiliegenden Zeichnungen zu sehen ist, die die
Prinzipien der Erfindung beispielhaft veranschaulichen. Allein die
Patentansprüche,
nicht die vorstehende Zusammenfassung oder die folgende ausführliche
Beschreibung, definieren die Erfindung.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein Blockdiagramm eines Bildverarbeitungssystems, das die vorliegende
Erfindung verkörpert.
-
2 ist
ein Blockdiagramm einer neuartigen Bildverarbeitungsvorrichtung,
die bei dem Bildverarbeitungssystem der 1 eingesetzt
wird.
-
3 ist
ein Flussdiagramm eines generischen Algorithmus für einen
Vorscan-Vorgang gemäß der vorliegenden
Erfindung.
-
4 ist
eine Darstellung eines digitalisierten Bildes, das die in der Vorscan-Tabelle
gespeicherten Bildbereiche mittels des Betriebs des Vorscan- Algorithmus der 3 oder
der 6 beispielhaft angibt.
-
5 ist
ein detaillierteres Flussdiagramm, das beschreibt, wie der Test
in Bezug darauf, ob Positionsinformationen für einen bestimmten Bildbereich
in 3 gespeichert werden sollen, durchgeführt wird.
-
6 ist
ein Flussdiagramm eines spezifischen Vorscan-Algorithmus des allgemeinen Typs der 3,
der mit Bildern verwendet wird, die in einem JPEG-Format-Bitstrom gespeichert
sind.
-
7 veranschaulicht
beispielhaft den Effekt des Ausführens
des Algorithmus der 6, um eine Vorscan-Tabelle für einen
JPEG-Format-Bitstrom zu erstellen.
-
Beschreibung
des bevorzugten Ausführungsbeispiels
-
Unter
Bezugnahme auf die Zeichnungen veranschaulicht 1 ein
Bildverarbeitungssystem 6, das gemäß der vorliegenden Erfindung
aufgebaut ist. Das System 6 verarbeitet codierte Bitstromdaten 8, die
ein digitalisiertes Bild darstellen, von einer Bitstromdatenquelle,
um Bildmanipulationen zu ermöglichen,
deren Ergebnisse unter Verwendung einer Bildausgabeanordnung gesichtet,
gedruckt oder gesendet werden können.
Das System 6 enthält
eine zwischen die Bitstromquelle und die Sichtungsanordnung gekoppelte
Bildverarbeitungsvorrichtung 10 zum Annehmen der codierten
Bitstromdaten 8, zum Manipulieren des Bildes gemäß einem
neuartigen Verfahren der vorliegenden Erfindung auf schnelle und
effiziente Weise und zum Ausgeben der manipulierten Bilddaten 14.
-
Mittels
einer Ausgewählten
einer Vielzahl von Quellen werden die codierten Bitstromdaten 8 dem
Vorscanner 210 der Vorrichtung 10 geliefert. Eine
Netzwerkschnittstelle 105 kann über elektrische Verbindungen,
die LAN, USB und andere serielle und parallele Verbindungen wie
z.B. RS-232 oder Centronics umfassen, jedoch nicht auf diese beschränkt sind,
und über
drahtlose Verbindungen, die Infrarot oder HF umfassen, jedoch nicht
auf diese beschränkt sind,
ein zuvor erfasstes Bild von einem Computernetzwerk 110 an
die Vorrichtung 10 liefern. Eine Massenspeicherungsschnittstelle 115,
die stationäre oder
entfernbare Massenspeicherungsmedien 120, einschließlich, aber
nicht beschränkt
auf, Magnetplatten oder -band, magnetooptische Platten und elektrische
Speicherkarten, annimmt, kann der Vorrichtung 10 die Bitstromdaten 8 liefern.
Eingabe-/Ausgabevorrichtungen wie z.B. eine Scanmaschine 125,
ein photographisches Teilsystem 130 oder ein Faksimile-Empfänger 135,
die mit der Vorrichtung 10 gekoppelt sind, können den
Bitstrom 8 erzeugen.
-
Das
manipulierte Bild 14 wird an eine Eingangs/Ausgangsvorrichtung
gesendet, die mit der Bildverarbeitungsvorrichtung 10 gekoppelt
ist, einschließlich,
aber nicht beschränkt
auf, eine Druckmaschine 140, eine Anzeigevorrichtung 145 oder
einen Faksimile-Sender 150. Die Druckmaschine 140 ermöglicht die
Erstellung einer Druckkopie des manipulierten digitalisierten Bildes 14 nach
der Bildverarbeitung. Die Druckmaschine 140 kann eine beliebige Drucktechnologie
aufweisen, einschließlich
Laserstrahl, Tintenstrahl, Thermodrucken, Bubble-Drucken, piezoelektrisches
Drucken, Farbstoff-Sublimation und dergleichen. Die Anzeigevorrichtung 145 wird
verwendet, um das manipulierte digitalisierte Bild 14 nach
der Bildverarbeitung anzuzeigen. Die Anzeigevorrichtung 145 kann
ein Computermonitor, eine LCD-Anzeige, ein Flachbildschirm oder
dergleichen sein.
-
Das
Bildverarbeitungssystem 6 kann als Computersystem oder
als Peripheriegerät,
das einen Teilsatz der in 1 gezeigten
Systemelemente beinhaltet, implementiert sein. In Betracht gezogene Peripheriegeräte, die
die vorliegende Erfindung verkörpern,
umfassen einen Drucker, der eine belie bige der zuvor aufgeführten Drucktechnologien
beinhaltet; eine Alles-In-Einem-Einheit, die eine Kombination von
Druck-, Scan-, Fax- und Kopierfähigkeiten
liefert; und eine Digitalkamera. Eingabevorrichtungen wie z.B. ein
Tastenfeld oder eine Zeigevorrichtung können in ein Peripheriegerät integriert
sein, um das zu manipulierende digitalisierte Bild und den durchzuführenden
Manipulationsvorgang zu spezifizieren. Peripheriegeräte wie z.B.
die Digitalkamera können eine
integrierte elektronische Anzeige zum Anzeigen des Bildes umfassen.
-
Unter
ausführlicherer
Bezugnahme auf die Bildverarbeitungsvorrichtung 10, wie
sie in 2 gezeigt ist, umfasst die Bildverarbeitungsvorrichtung 10 allgemein
einen Vorscanner 210, der den Bitstrom 8 vorverarbeitet,
um Informationen zu identifizieren, die die Bildverarbeitungsvorgänge ermöglichen.
Eine mit dem Vorscanner 210 gekoppelte Speichervorrichtung 215 speichert
vorübergehend
die Informationen, die während
des Vorscan-Vorgangs identifiziert werden, in einer Vorscan-Tabelle 225.
Ein Decodierer 220 gewinnt die in der Vorscan-Tabelle 225 gespeicherten
Informationen wieder, um einzelne codierte Bereiche des Bildes in
dem Bitstrom 8, die anhand des Bildverarbeitungsvorgangs
verarbeitet werden, auf effiziente Weise zu lokalisieren und zu
decodieren.
-
Bevor
die Funktionsweise der Bildverarbeitungsvorrichtung 10 ausführlicher
erörtert
wird, kann es vorteilhaft sein, das Format des Datenbitstroms 8 kurz
erneut zu betrachten, um die Vorteile der vorliegenden Erfindung
zu verstehen. Diesbezüglich
wird der Datenbitstrom 8 in einem komprimierten codierten
Datenformat gesendet, um eine rasche Übertragung von Bildinformationen
zu ermöglichen
und um den Speicherraum, der benötigt
wird, um dieselben festzuhalten, zu minimieren. Es gibt verschiedene
Arten von Datencodierungsschemata, die in modernen Kommunikations-
und Informationssystemen, z.B. dem Bildverarbeitungssystem 6,
eingesetzt werden. Viele Codierungsschemata verwenden eine Entropieco dierungstechnik
als eine Möglichkeit,
die Größe der Daten
zu komprimieren. Derartige Codierungsschemata umfassen Huffman-Codierung,
adaptive Huffman-Codierung, Shannon-Fano-Codierung, arithmetische Codierung,
Lauflängencodierung,
Abwandlungen einer Lempel-Ziv-Codierung und andere. Diese Codierungsschemata
oder -verfahren sowie die zugeordneten Decodierungsschemata sind Fachleuten
hinreichend bekannt und in verschiedenen hinreichend bekannten Veröffentlichungen
beschrieben. Da die Codierungs- und Decodierungsschemata hinreichend
bekannt sind, wird keines im Folgenden ausführlich beschrieben. Für die vorliegende
Erörterung
genügt
es, festzuhalten, dass die Art der Codierung häufig durch das Bildformat,
in dem das Bild gespeichert wird, definiert wird, und somit besteht
keine Absicht, den Schutzumfang der vorliegenden Erfindung auf ein
bestimmtes Codierungs- und Decodierungsschema zu beschränken; die
vorliegende Erfindung ist allgemein auf jegliche der oben erwähnten Arten
von Codierungs- und Decodierungsschemata anwendbar.
-
Unter
ausführlicherer
Bezugnahme auf den Bilddatenbitstrom 8 stellen die in demselben
enthaltenen Daten einen oder mehrere codierte Bildbereiche dar,
die zusammengenommen das ganze zu verarbeitende digitalisierte Bild
darstellen. Jeder codierte Bildbereich besteht aus einer Anzahl
codierter Codewörter.
Da der Bitstrom 8 unter Verwendung einer Entropiecodierung
komprimiert wird, weisen die Codewörter und somit die Bildbereiche
keine einheitliche Größe auf,
und somit kann die Position in dem Bitstrom 8 eines jeglichen
bestimmten codierten Bildbereichs nicht lediglich auf der Basis
der Reihenfolge der Bildbereiche in dem Bitstrom 8 berechnet
werden. Diesbezüglich
verwenden bekannte Systeme des Standes der Technik herkömmliche
Prozesse, um den gesamten Bitstrom 8 sequentiell zu decodieren,
um jeden Bildbereich in einer decodierten und somit nicht-komprimierten
Form zu speichern. Obwohl dieses Schema die Bestimmung der Position
jedes Bildbereichs ermöglicht,
geschieht dies zum Preis eines großen Speicherumfangs und einer übermäßig langen
Verarbeitungszeit, was beides teuer ist.
-
Nun
werde die Funktionsweise des Vorscanners 210 ausführlicher
betrachtet. Der Vorscanner 210 vorverarbeitet Bitstrominformationen,
indem er den Bitstrom 8 von seinem Anfang an sequentiell
decodiert, um jeden einzelnen codierten Bildbereich zu identifizieren
und zu lokalisieren. Diesbezüglich
extrahiert der Vorscanner 210 Bitstrompositionsinformationen
für Bezeichnete
der codierten Bildbereiche, wodurch die Positionsinformationen in
der Vorscan-Tabelle 225 gespeichert werden. Positionsinformationen
umfassen üblicherweise
einen Versatz in den Bitstrom 8, der die Anfangsposition
in dem Bitstrom 8 des codierten Bildbereichs angibt. Der
Vorscanner 210 speichert keine ganzen decodierten Bildbereiche.
-
Die
bezeichneten codierten Bildbereiche, für die Bitstrompositionsinformationen
gespeichert werden, können
alle Bildbereiche in dem Bitstrom 8 umfassen, stellen jedoch üblicherweise
lediglich einen Teilsatz derselben dar. Dies ist vorzuziehen, da
ein Speichern von Positionsinformationen für weniger als alle Bildbereiche
den für
die Vorscan-Tabelle 225 erforderlichen
Speicherumfang verringert, während
gemäß der vorliegenden
Erfindung immer noch auf effiziente Weise auf Bildbereiche zugegriffen
werden kann, für
die keine Positionsinformationen gespeichert werden. Somit kann
die Größe der Vorscan-Tabelle 225 gegen
die Effizienz eines Zugriffs auf codierte Bildbereiche abgewogen
werden. Der Vorscan-Vorgang ist abgeschlossen, wenn der gesamte Bitstrom 8 vorverarbeitet
wurde.
-
Nun
wird der Vorscanner 210 ausführlicher betrachtet. Der Vorscanner 210 kann
entweder in Hardware, beispielsweise durch eine anwendungsspezifische
integrierte Schaltung, oder in Firmware, um durch einen Mikroprozessor
oder eine Mikrosteuerung ausgeführt
zu werden, implementiert sein. Dementsprechend ist die folgende
Beschreibung von Firmware lediglich ein Implementierungsbeispiel
und soll nicht den Schutzumfang der vorliegenden Erfindung einschränken.
-
Unter
Bezugnahme auf 3 ist eine Softwareimplementierung
des Vorscanners 210 veranschaulicht. Das Vorscan-Verfahren beginnt
bei Schritt 310, indem das erste Codewort von dem Bitstrom 8 eingeholt
wird. Wenn das Codewort das Erste ist, das zu einem Bildbereich
gehört
(Schritt 320), und wenn der Bildbereich ein Bildbereich
ist, der zum Aufzeichnen benannt ist (Schritt 330), werden
bei Schritt 340 Positionsinformationen in der Vorscan-Tabelle 225 gespeichert.
Wenn entweder das Codewort nicht das Erste in einem Bildbereich
ist oder wenn der Bildbereich nicht zum Aufzeichnen benannt ist,
wird zu diesem Zeitpunkt nichts in der Vorscan-Tabelle 225 gespeichert.
Wenn in dem Bitstrom 8 noch Codewörter verbleiben (Schritt 350),
wird bei Schritt 360 das nächste Codewort erhalten, und
das Verfahren geht mit diesem nächsten
Codewort zu Schritt 320 über.
-
Wie
eine Implementierung der vorliegenden Erfindung die erforderliche
Größe der Speichervorrichtung 215 verringert,
indem sie Positionsinformationen lediglich für benannte Bildbereiche speichert, ist
in 4 beispielhaft veranschaulicht. Ein digitalisiertes
Bild 400 besteht aus einer Mehrzahl einzelner Bildbereiche.
Jeder einzelne Bildbereich, z.B. ein Bereich 402, stellt
einen Satz von Pixeln in dem digitalisierten Bild dar. In einem
nicht- komprimierten
Format weisen die Bildbereiche eine einheitliche Größe auf.
Die Bildbereiche sind in einem Zeilen- und -Spalten-Format logisch
organisiert, um das ganze Bild zu bilden. Jeder Bildbereich ist
in dem Bitstrom 8 in einem komprimierten Format in einer
von links nach rechts verlaufenden Reihenfolge für jede Zeile gespeichert, wobei
in dem obersten linken Bereich, der mit „al" 405 benannt ist, begonnen
wird. Die Spalten schraffierter Bereiche (Spalten 1, 5 und 9) 410 stellen diejenigen
Bildbereiche dar, für
die Positionsinformationen in der Vorscan-Tabelle 225 gespeichert
sind. Ein effizienter Zugriff erfordert, dass Positi onsinformationen
für alle
Bildbereiche in einer Spalte gespeichert werden; mit anderen Worten
muss die Spaltenposition der Bildbereiche, für die Positionsinformationen
gespeichert werden, für
alle Zeilen identisch sein. Zusätzlich
müssen
sich alle Bildbereiche in der äußersten
linken Spalte (Spalte 1) unter den Gespeicherten befinden.
-
Nun
wird ein beispielhafter selektiver Positionsinformations-Speicherungsalgorithmus
zum Ermöglichen
einer Positionierung gewünschter
Bildinformationen betrachtet. Der Vorscanner 210 erzielt dieses
Muster einer Positionsinformationsspeicherung, indem er die Position
jedes ersten Bildbereichs in einer Zeile (die Spalte 1 ist) speichert
und anschließend
eine Anzahl von Bildbereichen ohne Speichern überspringt. Wenn der erste
Bildbereich in der nächsten
Zeile während
des Überspringens
erfasst wird, werden dessen Positionsinformationen gespeichert; andernfalls
werden Positionsinformationen für
den Bildbereich, zu dem gesprungen wurde, gespeichert. Nachdem jede
Positionsinformation gespeichert wurde, beginnt das Überspringen
erneut. Die Anzahl von übersprungenen
Bildbereichen kann entweder eine vorbestimmte Anzahl sein oder aus
einer in einer Reihenfolge vorliegenden Sequenz ausgewählt werden, die
immer dann von vorne beginnt, wenn der erste Bildbereich in der
nächsten
Zeile erfasst wird.
-
Eine
Softwareimplementierung des selektiven Positionsinformations-Speicherungsalgorithmus, der
soeben beschrieben wurde, ist in 5 gezeigt. Schritte 510 bis 540 beschreiben
die Einzelheiten dessen, wie Schritt 330, der generisch
die Entscheidung, ob Positionsinformationen gespeichert werden sollen
oder nicht, angibt, durchgeführt
wird. Wenn sich der Bildbereich am Anfang einer Zeile befindet (Schritt 510)
oder wenn genügend
Bereiche übersprungen
wurden (Schritt 520), wird die Anzahl der Überspringungen
zurückgesetzt
(Schritt 530), und die Positionsinformationen werden über den Geh-Zu-Schritt 532 in
der Vorscan-Tabelle 225 gespeichert. In allen anderen Fällen wird
die Anzahl der Überspringungen
inkrementiert 540, und die Positionsinformationen werden
nicht über
den Geh-Zu-Schritt 542 gespeichert.
-
Der
Inhalt der für
einen Bildbereich gespeicherten Positionsinformationen kann von
dem zum Speichern des digitalisierten Bildes verwendeten komprimierten
Bildformat abhängen.
Ein übliches Format
verwendet den JPEG-Komprimierungsstandard,
der Fachleuten hinreichend bekannt ist; eine Erläuterung desselben findet sich
bei „The
JPEG Still Picture Compression Standard" von Gregory K. Wallace, das in Communications
of the ACM, April 1991, veröffentlicht
wurde. In der JPEG-Terminologie wird ein codierter Bildbereich als
minimalcodierte Einheit (bzw. MCU) bezeichnet, und üblicherweise stellt
er einen Acht-Mal-Acht-Block von Pixeln dar. Zusätzlich zu den komprimierten
Pixeln enthält
jede minimalcodierte Einheit ferner einen Koeffizientenwert für jeden
Farbkanal, der auf den Koeffizientenwert des entsprechenden Farbkanals
der vorherigen minimalcodierten Einheit bezogen ist. Der Zweck der Verwendung
von relativen Koeffizienten besteht darin, die Größe des Bitstroms 8 zu
verringern. Da auf minimalcodierte Einheiten in dem Bitstrom 8 auf nicht-sequentielle
Weise zugegriffen werden kann, berechnet der Vorscanner 210 einen
absoluten Koeffizientenwert für
jeden Farbkanal der minimalcodierten Einheit und speichert ihn in
der Vorscan-Tabelle 225. Dies eliminiert jegliche Abhängigkeit
von vorherigen minimalcodierten Einheiten in dem Bitstrom 8. Der
berechnete absolute Koeffizientenwert ist die Summe der relativen
Koeffizientenwerte für
alle vorherigen minimalcodierten Einheiten in dem Bitstrom 8.
-
Nachdem
die Vorscan-Tabelle 225 erstellt und gespeichert wurde,
wird sie seitens des Decodierers 220 verwendet, um spezifische
codierte Bildbereiche ohne das Erfordernis, den Bitstrom 8 sequentiell
erneut zu verarbeiten, zu lokalisieren und zu decodieren. Um die
Vorteile, die die Vorscan- Tabelle 225 liefert,
zu verstehen, betrachte man, wie die Bildverarbeitung durchgeführt wird.
-
Das
Erstellen eines manipulierten Bildes besteht üblicherweise aus vielen sequentiellen
Bildmanipulationsvorgängen.
Veranschaulichenderweise, und nicht einschränkenderweise, sei angenommen, dass
eine digitalisierte Photographie unter Verwendung eines Bildverarbeitungssoftwarepakets,
das an einem Personal-Computer arbeitet, gedreht und zugeschnitten
werden soll. Nachdem das zu verarbeitende Bild ausgewählt wurde,
wird es gemäß dem vorliegenden
Verfahren vorgescannt, um die codierten Bildbereiche zu lokalisieren.
Dann muss es mindestens zweimal manipuliert werden: einmal, um es zu
drehen, und ein weiteres Mal, um es zuzuschneiden. Häufig können diese
Vorgänge
auf iterative Weise durchgeführt
werden, beispielsweise bis die Bedienperson überzeugt ist, dass sie den
besten Zuschnitt gewählt
hat. Alternativ dazu kann das Bild zuerst so zugeschnitten werden,
dass es lediglich einen kleineren Abschnitt des ursprünglichen
Bildes enthält,
bevor an diesem kleinen Abschnitt eine weitere Manipulation, z.B.
eine Drehung, des Bildes durchgeführt wird. Um ein Bild zu drehen,
zuzuschneiden oder zu zoomen, werden die Bildbereiche in einer Reihenfolge
verarbeitet, die sich von derjenigen, in der sie in dem Bitstrom 8 vorliegen,
unterscheidet, so dass ein effizienter Zufallszugriff spezifizierter
codierter Bildbereiche erforderlich ist, wenn die Bildverarbeitung
auf effiziente Weise erfolgen soll. Wenn die Bildmanipulation gemäß der vorliegenden
Erfindung durchgeführt
wird, wird das sequentielle Vorscannen des gesamten digitalisierten
Bildes lediglich einmal durchgeführt.
Von da an verwendet jeder Bildmanipulationsvorgang die in der Vorscan-Tabelle 225 gespeicherten
Positionsinformationen, um ausgewählte Bildbereiche in dem Bitstrom 8 auf
effiziente Weise zu lokalisieren und zu decodieren und um den geforderten
Bildmanipulationsvorgang an den betroffenen Bildbereichen durchzuführen.
-
Um
einen ausgewählten
codierten Bildbereich zu lokalisieren und zu decodieren, gewinnt
der Decodierer 220 die Bitstrompositionsinformationen für den entsprechenden
codierten Bildbereich von der Vorscan-Tabelle 225 wieder.
Wenn der ausgewählte
Bildbereich einer ist, für
den Positionsinformationen gespeichert wurden, verwendet der Decodierer 220 die
Bitstrompositionsinformationen, um die Position in dem Bitstrom 8 zu
bestimmen, an der die codierten Bildbereichsdaten beginnen, erhält die codierten
Bildbereichsdaten von dem Bitstrom 8, decodiert sie zu
decodierten Bildbereichsdaten und speichert anschließend die
decodierten Bildbereichsdaten in einen Bildspeicher 250.
Nachdem sie gespeichert wurden, können die decodierten Bildbereichsdaten
mittels nachfolgender Vorgänge
manipuliert werden, entweder alleine oder in Kombination mit den
Daten von anderen decodierten Bildbereichen.
-
Wenn
der zu lokalisierende codierte Bildbereich nicht einer ist, für den Positionsinformationen
in der Vorscan-Tabelle 225 gespeichert wurden, ist ein zusätzlicher
Schritt erforderlich. In diesem Fall bestimmt die Bildverarbeitungsvorrichtung 10 ausgehend
von der Abfolge, in der Zeilen und Spalten von Bildbereichen in
dem Bitstrom 8 gespeichert sind, zunächst den nächstliegenden codierten, in
der Vorscan-Tabelle 225 gespeicherten Bildbereich, der
dem Bildbereich, der in dem Bitstrom 8 lokalisiert werden soll,
vorausgeht. Der nächstliegende
Bildbereich wird direkt lokalisiert, und anschließend wird
der Bitstrom 8 von diesem Punkt an sequentiell gescannt,
bis der gewünschte
Bildbereich lokalisiert und decodiert wurde.
-
Um
auf den Bildbereich c8 der 4, für den keine
Positionsinformationen in der Vorscan-Tabelle 225 gespeichert
sind, zuzugreifen, identifiziert die Vorrichtung 10, zur
Veranschaulichung, einen Bildbereich c5 als den Nächstliegenden
Vorausgehenden, für
den Positionsinformationen gespeichert sind. Der Decodierer 220 lokalisiert
den Bildbe reich c5 direkt in dem Bitstrom und scannt Bildbereiche
c6 und c7 sequentiell, um den Bildbereich c8 zu lokalisieren.
-
Wenn
die Vorrichtung 10 nun noch ausführlicher betrachtet wird, so
enthält
die Bildverarbeitungsvorrichtung 10 ferner einen Bildmanipulator 255,
der mit der Speichervorrichtung 215 gekoppelt ist. Der Bildmanipulator 255 manipuliert
den in dem Bildspeicher 250 gespeichert Bildbereich bzw.
die in dem Bildspeicher 250 gespeicherten Bildbereiche,
um manipulierte Bilddaten 14 als seine Ausgabe zu erzeugen.
Die Vorrichtung 255 spricht auf einen Bildverarbeitungsbefehl
an, der durch ein Bildverarbeitungs-Leitprogramm 270 geliefert
wird. Mögliche Bildmanipulationsvorgänge umfassen,
sind aber nicht beschränkt
auf, ein Drehen eines rechteckigen Abschnitts des digitalisierten
Bildes um ein Vielfaches von 90 Grad, ein Zuschneiden des Bildes
auf die Abmessungen des rechteckigen Abschnitts des digitalisierten
Bildes oder ein Zoomen des rechteckigen Abschnitts des digitalisierten
Bildes auf verschiedene Abmessungen. Die Algorithmen, anhand derer digitalisierte
Bilder decodiert und anschließend
gedreht, zugeschnitten oder gezoomt werden, sind Fachleuten bekannt
und werden in dem vorliegenden Dokument nicht näher erörtert.
-
Das
Bildverarbeitungs-Leitprogramm 270 bestimmt die Art der
durchzuführenden
Bildmanipulationsbefehle und identifiziert die codierten Bildbereiche,
die den zu manipulierenden Abschnitt des digitalisierten Bildes
umfassen. Das Leitprogramm 270 kommuniziert dem Decodierer 220 die
Identifizierer für
die Bildbereiche, die lokalisiert und decodiert werden sollen, und
nachdem diese Bereiche durch den Decodierer 220 decodiert
und in dem Bildspeicher 250 gespeichert wurden, sendet
das Leitprogramm 270 die Bildmanipulationsbefehle an die
Bildmanipulationsvorrichtung 255, um die gewünschte Bildmanipulation
zu bewerkstelligen.
-
Obwohl
der Bitstrom 8 in Bildbereichen codiert wird, die üblicherweise
einen Block von Pixeln umfassen, fallen die Grenzen des zu verarbeitenden Bereichs
des digitalen Bildes eventuell nicht mit codierten Bildbereichsgrenzen
zusammen. In diesem Fall identifiziert die Bildverarbeitungsvorrichtung 10 einen
ersten rechteckigen Satz codierter Bildbereiche, der alle in den
Grenzen enthaltenen Pixel umfasst. Ferner kann in vielen Fällen die
erste Spalte jeder Zeile in dem ersten Satz von codierten Bildbereichen
Bereiche darstellen, für
die keine Informationen in der Vorscan-Tabelle 225 gespeichert sind.
Falls dies der Fall ist, wird ein zweiter rechteckiger Satz von
codierten Bildbereichen, der den ersten Satz umfasst, identifiziert,
so dass die erste Spalte jeder Zeile in dem zweiten Satz ein codierter
Bildbereich ist, für den
eine Position gespeichert wurde. Folglich wird ein etwas größerer Bereich
des digitalisierten Bildes als der durch die ursprünglichen
Grenzen Festgelegte verarbeitet.
-
Nun
betrachte man einen weiteren Vorscan-Algorithmus 600 (6)
zum Implementieren des Vorscanners 210. Wie Fachleuten
bekannt ist, wird bei Implementierungen des Standes der Technik der
Minimalcodierte-Einheit-Bitstrom eines JPEG-Bildes durch einen Entropiedecodierer,
der eine anfängliche
Decodierung jedes codierten Bildbereichs lokalisiert und durchführt, sequentiell
gescannt. Anschließend
wird jeder Bildbereich weiter decodiert, indem er zuerst dequantisiert
wird und indem anschließend eine
inverse diskrete Cosinus-Transformation (IDCT) durchgeführt wird,
die zu dem dekomprimierten digitalisierten Bild führt. Gemäß der vorliegenden
Erfindung ist, nachdem der Vorscan-Vorgang durchgeführt wurde,
ein sequentielles Scannen für
jeglichen codierten Bildbereich, für den Positionsinformationen mittels
des Vorscanners 210 in der Vorscan-Tabelle 225 gespeichert
werden, nicht erforderlich, da direkt auf den Bildbereich zugegriffen
werden kann. Die für die
JPEG-Dekomprimierung
erforderlichen Entropiedecodierungs-, Dequantisierungs- und Inverse-Diskrete-Cosinus-Transformation-Funktionen
werden durch den Decodierer 220 ausgeführt.
-
Der
Vorscan-Algorithmus 600 für einen JPEG-Bitstrom wird
am besten unter Bezugnahme auf 6 verständlich.
Nach einem Zurücksetzen vorübergehender
Variablen, die absolute Koeffizienten für alle Farbkanäle, die
aktuelle Bitposition in dem codierten Bitstrom 8 und die
Anzahl der Überspringungen
darstellen (Schritt 605), wird der Bitstrom sequentiell
bitweise verarbeitet, wobei mit dem ersten Codewort begonnen wird
(Schritt 610). Jedes Codewort in einem JPEG-Bitstrom verwendet
zwischen 2 und 16 Bits. Wenn das aktuelle Codewort nicht das Erste
in einer minimalcodierten Einheit ist („Nein"-Zweig des Schritts 615), springt
der Vor-Scanalgorithmus
zu Schritt 655, dessen Auswirkung nachfolgend beschrieben
wird.
-
Wenn
das aktuelle Codewort das erste Codewort in einer minimalcodierten
Einheit ist („Ja"-Zweig des Schritts 615),
so wird, wenn entweder das aktuelle Codewort am Anfang einer minimalcodierten
Einheit positioniert ist, die einen Bildbereich am Anfang einer
Zeile des Bildes darstellt („Ja"-Zweig des Schritts 620),
oder wenn genügend minimalcodierte
Einheiten übersprungen
wurden, auf („Ja"-Zweig des Schritts 625),
die Anzahl der Überspringungen
zurückgesetzt
(Schritt 635), und die aktuelle Bitposition wird zusammen
mit den aktuellen absoluten Koeffizientenwerten für jeden
Farbkanal in der Vorscan-Tabelle 225 aufgezeichnet (Schritt 640). Wenn
das aktuelle Codewort nicht am Anfang einer minimalcodierten Einheit,
die sich am Anfang einer Zeile des Bildes befindet, positioniert
ist („Nein"-Zweig des Schritts 620),
und wenn nicht genügend
minimalcodierte Einheiten übersprungen wurden
(„Nein"-Zweig des Schritts 625),
wird die Anzahl der Überspringungen
inkrementiert (Schritt 630).
-
Wenn,
bei Schritt 655, das aktuelle Codewort der erste relative
Koeffizient für
den aktuellen Farbkanal ist („Ja"-Zweig des Schritts 655), so
wird der neue Wert des absoluten Koeffizienten für diesen Farbkanal berechnet
(Schritt 660); wenn es nicht der erste relative Koeffizient
ist („Nein"-Zweig des Schritts 655),
wird Schritt 660 übersprungen.
Der aktualisierte absolute Koeffizient wird bei Schritt 660 berechnet,
indem der relative Koeffizient zu dem aktuellen Wert des absoluten
Koeffizienten hinzuaddiert wird.
-
Als
Nächstes
bestimmt der Vorscan-Algorithmus, ob etwaige bis dahin ungelesene
Codewörter
in dem Bitstrom 8 verbleiben (Schritt 665). Wenn
keine verbleibenden Codewörter
vorliegen, ist der Vorscan-Algorithmus 600 abgeschlossen
(Schritt 670). Andernfalls wird das nächste Codewort aus dem Bitstrom
erhalten, und die Bitpositionsvariable wird entsprechend aktualisiert
(Schritt 675). Dann kehrt der Algorithmus in der Schleife
zu dem Schritt 615 zurück,
um das bei dem Schritt 675 erhaltene Codewort zu verarbeiten.
-
7 veranschaulicht
beispielhaft, wie der Algorithmus 600 die Vorscan-Tabelle 225 erstellt.
Ein vereinfachter Satz von Inhalten für eine minimalcodierte Einheit
in dem bei 702 beschriebenen Format umfasst zwei erste
relative Koeffizienten DC Y 704, die den Y-Farbkanal darstellen,
einen ersten relativen Koeffizienten DC Cb 706, der den
Cb-Farbkanal darstellt,
und einen ersten relativen Koeffizienten DC Cr 708, der
den Cr-Farbkanal darstellt. Auf jeden dieser vier ersten Koeffizienten
folgt ein Satz zusätzlicher Codewörter 705,
die nachfolgende relative Koeffizienten für diesen Farbkanal darstellen.
Da lediglich der erste relative Koeffizient jedes Farbkanals für den Vorscan-Algorithmus von Interesse
ist, werden diese nachfolgenden Koeffizienten hierin nicht näher erörtert und
ihre Werte nicht gezeigt.
-
Ein
Satz von vorübergehenden
Variablen 709 zeichnet die Bitposition 710 des
aktuellen Codeworts, den aktuellen Wert des absoluten Y-Koeffizienten 712 für den Y-Farbkanal,
den aktuellen Wert des absoluten Cb-Koeffizienten 714 für den Cb-Farbkanal
und den aktuellen Wert des absoluten Cr- Koeffizienten 716 für den Cr-Farbkanal
auf. Jedes Mal, wenn ein Codewort erfasst wird, das einen relativen Koeffizienten
darstellt, wird der Wert der entsprechenden Absoluter-Koeffizient-Variable
mittels Schritt 660 aktualisiert, indem der relative Koeffizient zu
dem aktuellen Wert des absoluten Koeffizienten hinzuaddiert wird.
Der zu verarbeitende beispielhafte Bitstrom 701 besteht
aus drei minimalcodierten Einheiten, die mit MCU0, die bei Bitposition
Nr. 0 beginnt, MCU1, die bei Bitposition Nr. 208 beginnt, und MCU2,
die bei Bitposition Nr. 418 beginnt, bezeichnet sind, wobei jede
minimalcodierte Einheit relative Gleichstromkoeffizientenwerte aufweist,
wie gezeigt ist. Jedes Mal, wenn der Vorscan-Vorgang den Beginn
einer neuen minimalcodierten Einheit, für die Informationen gespeichert
werden sollen, erfasst, wird der aktuelle Wert des Satzes von vorübergehenden Absoluter-Koeffizient-Variablen 709 mittels
Schritt 640 des Vorscan-Algorithmus in die nächste verfügbare Position
in der Vorscan-Tabelle 225 geschrieben. Für die Zwecke
dieses vereinfachten Beispiels sei angenommen, dass jede minimalcodierte
Einheit in dem beispielhaften Bitstrom 701 in der Vorscan-Tabelle 225 gespeichert
werden soll; mit anderen Worten wird, wenn der Schritt 625 durchgeführt wird,
immer der „Ja"-Zweig genommen.
-
Nun
sei die Auswirkung des Vorscannens des beispielhaften Bitstroms 701 zu
Beginn des Vorscan-Vorgangs betrachtet. Alle lokalen Variablen 709 werden
auf Null zurückgesetzt,
wie bei 718 angegeben ist. Der beispielhafte Bitstrom 701 wird
dann beginnend bei Bitposition 0 verarbeitet. Da das Codewort bei
der Bitposition Nr. 0 das Erste in der MCU0 ist, werden die aktuellen
Werte der lokalen Variablen 720 (BitPos = 0, Y = 0, Cb
= 0, Cr = 0) über
Schritt 640 in die Index-0-Position 732 der Vorscan-Tabelle eingespeichert.
Zu diesem Zeitpunkt entspricht der Inhalt der Vorscan-Tabelle dem
bei 730 Gezeigten. Da dieses Codewort außerdem das
erste in einem Satz von Koeffizienten für den Y-Farbkanal ist, wird der
Wert der absoluten Y-Variable auf 0 + 5 = 5 eingestellt, wie bei 734 gezeigt
ist.
-
Als
Nächstes,
während
der Vorscanner die in den Bitpositionen Nr. 15 bis Nr. 82 enthaltenen
Codewörter
liest, wird lediglich die Bitpositionsvariable 710 aktualisiert
(nicht gezeigt); Schritt 660 wird nicht ausgeführt, da
keines dieser Codewörter
das Erste in einem Satz von Koeffizienten für einen Farbkanal ist. Anschließend liest
der Vorscan-Vorgang
das Codewort bei Bitposition Nr. 83; da es das erste Codewort in
dem zweiten Satz von Y-Koeffizienten für MCU0 darstellt, wird der
Wert der lokalen Y-Variable auf 5 + 3 = 8 eingestellt, wie bei 736 gezeigt
ist. Auf ähnliche Weise
wird die lokale Cb-Variable auf 0 + 1 = 1 eingestellt, wie bei 738 gezeigt
ist, wenn der Vorscanner 210 zu der Bitposition Nr. 124
liest und anschließend den
DC Cb-Koeffizienten,
der einen Wert von +1 aufweist, decodiert. Dann liest der Vorscan-Vorgang
zu der Bitposition Nr. 177 und decodiert den DC Cr-Koeffizienten,
der einen Wert von –2
aufweist, wodurch die lokale Cr-Variable auf 0 + (–2) = –2 eingestellt wird,
wie bei 739 gezeigt ist.
-
Wenn
der Vorscanner zu der Bitposition Nr. 208 liest und das erste Codewort
von MCU1 erfasst, speichert Schritt 640 den aktuellen Wert
des Satzes von lokalen Variablen (Bit-Pos = 208, Y = 8, Cb = 1, Cr = –2) 740 bei
der Index-1-Position 741 in die Vorscan-Tabelle. Zu diesem
Zeitpunkt lautet der Inhalt der Vorscan-Tabelle wie bei 742 gezeigt.
-
Der
Prozess des Scannens, des Aktualisierens absoluter Koeffizienten
und des Speicherns der lokalen Variablen in der Vorscan-Tabelle
wird desgleichen für
die verbleibenden minimalcodierten Einheiten wiederholt. Die Ergebnisse 743 des
Scannens der MCU1 erzeugen absolute Koeffizientenwerte Y = 7, Cb
= 4, Cr = –4,
die bei der Index-2-Position 745 in der Vorscan-Tabelle
gespeichert werden, wenn der Beginn von MCU2 bei der Bitposition
Nr. 418 erfasst wird. Zu diesem Zeitpunkt lautet der Inhalt der
Vorscan-Tabelle wie bei 746 gezeigt. Obwohl das nachfolgende
Scannen von MCU2 zu den bei 748 gezeigten Werten der lokalen
Variable führt,
wird in der Vorscan-Tabelle nichts weiter gespeichert, da MCU2 die letzte
minimalcodierte Einheit in dem beispielhaften Bitstrom 701 ist
und somit keine Anfangsgrenze einer nachfolgenden minimalcodierten
Einheit erfasst wird.
-
Nachdem
das Vorscannen abgeschlossen ist, enthält die abgeschlossene Vorscan-Tabelle 746 3
Einträge,
wobei einer die Startbitposition einer minimalcodierten Einheit
sowie die Werte der absoluten Koeffizienten für die Farbkanäle an dieser
Position in dem Bitstrom angibt.
-
Aus
dem Vorstehenden geht hervor, dass die Erfindung ein neuartiges
und vorteilhaftes Verfahren und eine neuartige und vorteilhafte
Vorrichtung zum Manipulieren eines digitalisierten Bildes liefert,
das in einem entropiecodierten Bitstromdatenformat gespeichert ist.
Es muss nicht das gesamte Bild in einem nicht-komprimierten Format
in einem Pufferspeicher gespeichert werden, um das Bild zu manipulieren,
was den Umfang an Pufferspeicher, der in einem Computersystem oder
einem Peripheriegerät,
das die Erfindung verkörpert,
erforderlich ist, beträchtlich verringert.
Und da ein nicht-sequentieller Zugriff auf codierte Bildbereiche
in einem Bitstrom auf effizientere Weise durchgeführt wird,
ermöglicht
er, dass Verarbeitungsvorrichtungen, die eine geringere Leistungsfähigkeit
aufweisen und kostengünstiger
sind, eine Bildmanipulation durchführen.
-
Obwohl
mehrere spezifische Ausführungsbeispiele
der Erfindung beschrieben und veranschaulicht wurden, soll die Erfindung
nicht auf die spezifischen Verfahren, Formen oder Anordnungen von
auf diese Weise beschriebenen und veranschaulichten Teilen beschränkt sein.
Die Erfindung wird lediglich durch die Patentansprüche beschränkt.