-
ALLGEMEINER
STAND DER TECHNIK
-
Rechengeräte umfassen
typisch einen Anzeige-Controller zum Erstellen von digitalen Bildern
und zum Anzeigen der erstellten digitalen Bilder auf einem Anzeigegerät wie einem
Computerbildschirm oder einer Flachbildschirmanzeige. Der Anzeige-Controller
könnte
ein digitales Bild erstellen und das erstellte digitale Bild in
einem Frame-Puffer speichern. Der Frame-Puffer könnte in einem gemeinsam benutzten
Systemspeicher oder in einem dedizierten Videospeicher angeordnet
sein. Wenn es an der Zeit ist, das erstellte digitale Bild anzuzeigen,
könnte
der Anzeige-Controller das digitale Bild aus dem Frame-Puffer abrufen
und ein Signal erzeugen, um das abgerufene digitale Bild auf dem
Anzeigegerät
anzuzeigen. Der Prozeß des
Speicherns und Abrufens von digitalen Bildern aus dem Frame-Puffer
könnte
eine signifikante Menge von Speicherbandbreite verbrauchen. Wenn
der Frame-Puffer in einem gemeinsam benutzten Systemspeicher angeordnet
ist, könnte die
Leistung des Rechengeräts
beträchtlich
reduziert sein, da der Anzeige-Controller die verfügbare Speicherbandbreite
für andere
Aufgaben signifikant reduziert. Wenn ferner der Frame-Puffer in
einem dedizierten Videospeicher angeordnet ist, könnte das
Videospeichersubsystem mit Hilfe teurer Speichertechnologien implementiert
sein, um genügend
Speicherbandbreite liefern zu können.
-
US-Patent
6 310 977 offenbart ein Verfahren und eine Vorrichtung für die Komprimierung
digitaler Daten einschließlich
Mitteln für
die Kompensation der Verzerrungskomponente aus einer früheren Frame-Komprimierung
in der nachfolgenden Differenz-Frame-Komprimierung. Jedes übertragene
Frame wird nach einem vollen Komprimierungs-/Dekomprimierungszyklus
gespeichert, und das Differenzdatum (welches die Umkehrung zur Verzerrungskomponente
aus der Komprimierung des übertragenen
Frames ist), das die Differenz zwischen dem gespeicherten Frame
und dem eingehenden neuen Frame darstellt, wird übertragen.
-
US-Patent
6 310 299 offenbart einen Speicher-Controller für einen ATSC-Video-Decodierer.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Die
hier beschriebene Erfindung ist beispielhafterweise und nicht einschränkend in
den beigefügten Figuren
dargestellt. Aus Gründen
der Einfachheit und Klarheit der Darstellung sind in den Figuren
dargestellte Elemente nicht unbedingt maßstabsgerecht gezeichnet. Zum
Beispiel könnten
die Abmessungen mancher Elemente relativ zu anderen Elementen der
Klarheit wegen übertrieben
sein. Ferner wurden Bezugszeichen, wo als angebracht betrachtet,
in den verschiedenen Figuren wiederholt, um entsprechende oder analoge
Elemente zu bezeichnen.
-
1 zeigt
eine Ausführungsform
eines Rechengeräts,
das einen Chipsatz mit einem integrierten Anzeige-Controller aufweist.
-
2 zeigt
eine beispielhafte Ausführungsform
eines digitalen Bildes.
-
3 zeigt
eine Ausführungsform
eines Rechengeräts,
das einen nicht-integrierten Anzeige-Controller aufweist, der separat vom
Chipsatz angeordnet ist.
-
4A, 4B und 4C zeigen
ein Verfahren, welches die Anzeige-Controller von 1 und 3 verwenden
können,
um eine digitale Bildeinheit zu komprimieren oder zu vercoden.
-
5A, 5B und 5C zeigen
ein Verfahren, welches die Anzeige-Controller von 1 und 3 verwenden
können,
um eine vercodete digitale Bildeinheit zu dekomprimieren oder zu
decodieren.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
Die
folgende Beschreibung beschreibt Techniken zum Komprimieren und
Dekomprimieren einer digitalen Bildeinheit. In der folgenden Beschreibung
sind zahlreiche spezifische Details wie Logikimplementierungen,
Opcodes, Mittel zur Aufstellung von Operanden, Implementierungen
von Ressourcenpartitionierung/-teilung/-duplizierung, Typen und
Wechselbeziehungen von Systemkomponenten sowie Möglichkeiten zur Logikpartitionierung/-integrierung
beschrieben, um ein besseres Verständnis der vorliegenden Erfindung
zu vermitteln. Es versteht sich jedoch, daß die Erfindung von einem Fachmann
auch ohne diese spezifischen Details praktiziert werden kann. In
anderen Fällen
sind Steuerstrukturen, Gate-Level-Schaltkreise und vollständige Softwareanweisungssequenzen
nicht im Detail dargestellt, um die Erfindung nicht zu verschleiern.
Fachleute mit normaler Kenntnis der Technik werden anhand der angegebenen
Beschreibungen in der Lage sein, die entsprechende Funktionalität zu implementieren,
ohne viel experimentieren zu müssen.
-
Bezugnahmen
in der Spezifikation auf „eine
einzige Ausführungsform", „eine Ausführungsform", usw. bedeuten,
daß die
beschriebene Ausführungsform
ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft
aufweisen könnte,
aber daß nicht
jede Ausführungsform
unbedingt dieses bestimmte Merkmal, diese bestimmte Struktur oder
Eigenschaft enthalten muß.
Außerdem
müssen
sich diese Angaben nicht unbedingt auf die gleiche Ausführungsform
beziehen. Des weiteren, wenn ein bestimmtes Merkmal, eine bestimmte Struktur
oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben wird,
wird davon ausgegangen, daß es
innerhalb des Wissenbereichs eines Fachmanns liegt, dieses Merkmal,
diese Struktur oder Eigenschaft auch in anderen Ausführungsformen
zu verwirklichen, egal ob dies ausdrücklich oder nicht ausdrücklich beschrieben
ist.
-
In 1 ist
eine beispielhafte Ausführungsform
eines Rechengeräts 100 dargestellt.
Das Rechengerät 100 könnte einen
oder mehrere Prozessoren 102 umfassen, die über einen
Prozessorbus 106 an einen Chipsatz 104 gekoppelt
sind. Der Chipsatz 104 könnte ein oder mehrere integrierte
Schaltungspakete oder Chips umfassen, die die Prozessoren 102 an
den Systemspeicher 108, die Firmware 110 und/oder
andere Geräte 112 (wie
eine Maus, eine Tastatur, ein Plattenlaufwerk, einen Scanner, eine
Kamera usw.) koppeln. Die Firmware 110 könnte grundlegende
Eingabe/Ausgabe-Systemroutinen (BIOS) umfassen, die die Prozessoren 102 während des
Systemstarts ausführen
könnten,
um Komponenten des Rechengeräts 100 zu
initialisieren und die Ausführung
eines Betriebssystems einzuleiten.
-
In
einer Ausführungsform
könnte
der Chipsatz 104 einen Speicher-Controller 114 umfassen.
In anderen Ausführungsformen
jedoch könnten
die Prozessoren 102 den ganzen oder einen Teil des Speicher-Controllers 114 umfassen.
Der Speicher-Controller 114 könnte eine Schnittstelle für einen
integrierten Anzeige-Controller 116 und andere Komponenten
des Rechengeräts 100 zum
Zugriff auf den Systemspeicher umfassen. Der Chipsatz 104 könnte auch
I/O-Operationen auf I/O-Bussen wie peripheren Komponentenzusammenschalt-Bussen
(PCI), PCI-Expreßbussen, beschleunigten
Grafikportbussen (AGP), universellen Serienbussen (USB), Bussen
mit niedriger Stiftzahl (LPC) oder sonstigen Arten von I/O-Bussen
(nicht dargestellt) unterstützen.
-
Der
Chipsatz 104 könnte
ferner einen integrierten Anzeige-Controller 116 für die Anzeige
von digitalen Bildern auf einem Anzeigegerät 118, wie zum Beispiel
einem Computerbildschirm, einem Flachbildschirm oder einem Fernseher
umfassen. Der integrierte Anzeige-Controller 116 könnte eine
Computerschnittstelle 120 zum Empfang oder Erhalt von Befehlen
und/oder Daten aus dem Rechengerät 100 umfassen.
Die Computerschnittstelle 120 könnte mit dem Speicher-Controller 114 zum
Abrufen von Grafikbefehlen aus dem Systemspeicher 108 zusammenwirken.
Außerdem
könnte
die Computerschnittstelle 120 einen oder mehrere Videoports,
wie zum Bespiel einen AGP-Port, einen PCI-Port oder einen PCI-Expreßport bereitstellen, über den
die Computerschnittstelle 120 Daten und/oder Befehle von
den Prozessoren 102 empfangen könnte. Der integrierte Anzeige-Controller 116 könnte ferner
eine Speicherschnittstelle 122 zum Erhalt von Pels, Zonen,
Frames, Tiles usw. aus dem Videospeicher 124 umfassen.
Wie dargestellt, könnten
der Systemspeicher 108 und der Videospeicher 124 sich
die gleichen physikalischen Speichergeräte teilen oder mit diesen implementiert
sein. In einer solchen Ausführungsform
werden die Speichergeräte
statisch oder dynamisch entweder dem Systemspeicher 108 oder
dem Videospeicher 124 zugewiesen. Demgemäß könnte die
Speicherschnittstelle 122 des integrierten Anzeige-Controllers 116 mit
dem Speicher-Controller 116 des Chipsatzes 104 zusammenwirken,
um Pels (Picture Elements – Bildelemente),
Zonen, Frames, Tiles usw. in den Videospeicher 124 zu lesen
oder zu schreiben.
-
Die
Render-Engine 126 des integrierten Anzeige-Controllers 116 könnte Grafikbefehle
ausführen,
um digitale Bilder für
die Anzeige zu erstellen. Wie in 2 dargestellt,
könnte
ein digitales Bild eine oder mehrere rechteckigen nicht-überlappenden
Zonen umfassen. Ferner könnte
jede Zone eine oder mehrere Zeilen von Bildelementen oder Pels umfassen,
und jedes Pel könnte
ein visuelles Aussehen (zum Beispiel Farbe, Schattierung, Färbung, Transparenz
usw.) des digitalen Bildes an einem bestimmten Punkt des digitalen
Bildes definieren. Zum Beispiel könnten die Pels einen oder mehrere
Kanäle
umfassen, die das Aussehen entsprechend eines bestimmten Videoformats,
wie zum Beispiel entsprechend eines RGB-Formats, YUV-Formats, RGBA-Formats
oder eines anderen Formats, definieren. Im RGB-Format umfaßt jedes
Pel einen roten Kanal (R), einen grünen Kanal (G) und einen blauen
Kanal. Desgleichen umfaßt
im RGBA-Format jedes Pel einen roten Kanal (R), einen grünen Kanal
(G), einen blauen Kanal(B) und einen Alphakanal (A), um einen Transparenzgrad
anzuzeigen. Zum Beispiel könnte
der integrierte Anzeige-Controller 116 24-Bit-Farbe implementieren,
indem er jedem Pel einen roten 8-Bit-Kanal, einen grünen 8-Bit-Kanal
und einen blauen 8-Bit-Kanal zuweist. Im YUV-Format könnte jedes
Pel einen Luma-Kanal (Y), einen ersten Farbtonkanal (U) und einen
zweiten Farbtonkanal (V) umfassen. Desgleichen könnte der integrierte Anzeige-Controller 116 24-Bit
Farbe implementieren, indem er jedem Pel einen 8-Bit Wert für jeden
der YUV-Kanäle
zuweist. Der integrierte Anzeige-Controller 116 könnte jedoch
wählen,
den Luma-Kanal (Y) präziser
darzustellen. Dementsprechend könnte
der integrierte Anzeige-Controller 116 eine 24-Bit YUV
Farbe implementieren, indem er jedem Pel einen 12-Bit Luma-Kanal (Y),
einen ersten 6-Bit Farbtonkanal (U) und einen zweiten 6-Bit Farbtonkanal
(V) zuweist. Ein im YUV-Format vercodetes digitales Bild könnte auch
ein räumlich
reduziertes Farbtonformat wie ein 4:1:1 Format verwenden. Im 4:1:1-Format
könnte
ein Makro-Pel vier Luma-Kanäle
(Y), einen ersten Farbtonkanal (U) und einen zweiten Farbtonkanal
(V) umfassen, die das visuelle Aussehen von Teilen des Makro-Pels
definieren.
-
Die
Render-Engine 126 könnte
Grafikbefehle ausführen,
die aus dem Systemspeicher 108 von der Anweisungs-/Dateneinheit 128 abgerufen
wurden, und eine oder mehrere Zonen aktualisieren, die in einem
Zonen-Cachespeicher 130 des integrierten Anzeige-Controllers 116 gespeichert
sind. Nach Erstellen eines oder mehrerer Zonen eines digitalen Bildes
könnte
die Render-Engine 126 bewirken, daß die erstellten Zonen aus dem
Cachespeicher 130 entfernt und in den Frame-Puffer 132 geschrieben
werden. Der Frame-Puffer-Kompressor/Dekompressor (Codec) 134 könnte die
entfernten Zonen komprimieren und die komprimierten Zonen an der
Speicherschnittstelle 122 zur Speicherung im Frame-Puffer 132 bereitstellen.
Die Anzeige-Engine 136 könnte später die
erstellten digitalen Bilder aus dem Frame-Puffer 132 abrufen,
um das digitale Bild zu einer entsprechenden Zeit anzuzeigen. Insbesondere
könnte
die Anzeige-Engine 136 die
komprimierten Zonen aus dem Frame-Puffer 132 abrufen, und
der Codec 134 könnte
die abgerufenen Zonen dekomprimieren. Die Anzeige-Engine 136 könnte die
dekomprimierten Zonen des digitalen Bildes mit anderen Videoquellen,
wie zum Beispiel einem Overlay, einem Hardware-Cursor usw., mischen
und an der Anzeigeschnittstelle 138 ein zusammengesetztes
Videosignal bereitstellen. Die Anzeigeschnittstelle 138 könnte das
von der Anzeige-Engine 136 empfangene digitale Videosignal
in ein analoges oder digitales Signal umwandeln, das für das Anzeigegerät 118 geeignet
ist.
-
Bezugnehmend
auf 3 ist eine andere Ausführungsform des Rechengeräts 100 dargestellt.
Wie in 3 dargestellt, könnte das Rechengerät 100 einen
nicht-integrierten Anzeige- Controller 140 umfassen,
der vom Chipsatz 104 getrennt ist. Wie der integrierte
Anzeige-Controller 116 könnte der
nicht integrierte Anzeige-Controller 140 eine Computerschnittstelle 120,
eine Speicherschnittstelle 122, eine Render-Engine 126, eine
Anweisungs-/Dateneinheit 128, einen Zonen-Cachespeicher 130,
einen Codec 134, eine Anzeige-Engine 136 und eine
Anzeigeschnittstelle 138 umfassen. Des weiteren könnte der
nicht-integrierte Anzeige-Controller 140 einen Onboard-Videospeicher 124 umfassen.
Der nicht-integrierte Anzeige-Controller 140 könnte ähnlich wie
der integrierte Anzeige-Controller 116 von 1 funktionieren.
Die Computerschnittstelle 120 des nicht-integrierten Anzeige-Controllers 140 könnte jedoch
einen AGP-Port, einen PCI-Port, einen PCI-Expreßport oder eine andere Geräteschnittstelle
umfassen, um Befehle und/oder Daten mit einer entsprechenden Grafikschnittstelle 142 des
Chipsatzes 104 zu übertragen,
die ebenfalls einen AGP-Port, einen PCI-Port, einen PCI-Expreßport oder
eine andere Geräteschnittstelle
umfasst. Außerdem
könnte
die Speicherschnittstelle 122 des nicht-integrierten Anzeige-Controllers 140 direkt
auf den Videospeicher 124 zugreifen, so daß der nicht-integrierte
Anzeige-Controller 140 fähig ist, Pels, Zonen, Tiles,
Frames usw. zu und vom Videospeicher 124 zu übertragen,
ohne signifikante Bandbreite des Speicher-Controllers 114 und
Systemspeichers 108 zu verbrauchen.
-
Bezugnehmend
auf 4A, 4B und 4C ist
ein Verfahren dargestellt, welches vor der Übertragung an den Frame-Puffer 132 vom
Codec 132 zum Komprimieren einer Zonenzeile, einer Zone,
eine Frame-Zeile, eines Frame-Feldes, eines Frames oder einer anderen
digitalen Bildeinheit verwendet werden kann. Insbesondere könnte mit
dem Verfahren durch Ersetzen jedes Pels der digitalen Bildeinheit
durch ein Symbol mit variabler Bitlänge die digitale Bildeinheit
komprimiert werden. Wie dargestellt, könnte der Codec 134 in Block 200 ein
aktuelles Pel mit dem ersten Pel der digitalen Bildeinheit gleichsetzen
und und einen oder mehrere Kanäle
des aktuellen Pels quantifizieren, um ein quantifiziertes aktuelles
Pel zu erhalten. Jeder quantifizierte Kanal könnte ein oder mehrere höchstwertige
Bits (MSBs) jedes Kanals umfassen und könnte ein oder mehrere niedrigstwertige
Bits (LSBs) aus jedem Kanal beseitigen. Zum Beispiel könnte der
Codec 134 ein 24-Bit RGB Pel (zum Beispiel 10010101-11111001-0111000)
auf einem 18-Bit Quantifizierungs-Level quantifizieren, um ein quantifiziertes
aktuelles Pel (zum Beispiel 100101-111110-011100) zu erhalten, das
drei quantifizierte 6-Bit-Kanäle
umfaßt.
Insbesondere könnte
der Codec 134 einen quantifizierten 6-Bit-Kanal erhalten, indem er die sechs
MSBs des 8-Bit-Kanals beibehält
und die beiden LSBs des Kanals beseitigt. Der Codec 134 könnte eine
Vielfalt verschiedener Techniken verwenden, um die quantifizierten
Pels zu erhalten. In einer Ausführungsform
könnte
der Codec 134 die quantifizierten Pels erhalten, indem
er ein bitweises UND der Kanäle
mit einer Maske durchführt
und/oder indem er entsprechende Bit-Verschiebeoperationen auf den
Kanälen der
Pels durchführt.
Außerdem
könnte
der Codec 134 jeden Kanal eines Pels auf einem anderen
Level quantifizieren. Zum Beispiel könnte der Codec 134 für ein 24-Bit
YUV Pel die 7 MSBs des Y-Kanals,
die 6 MSBs des U-Kanals und die 5 MSBs des V-Kanals beibehalten.
-
In
Block 202 könnte
der Codec 134 ein früheres
Pel derart einstellen, dass jeder quantifizierte Kanal des vorherigen
Pels sich von dem entsprechenden quantifizierten Kanal des aktuellen
Pels unterscheidet. Zu diesem Zweck könnte der Codec 134 das
vorherige Pel mit dem aktuellen Pel gleichsetzen und das MSB jedes Kanals
umschalten, um sicherzustellen, daß die quantifizierten Kanäle des vorherigen
Pels und aktuellen Pels sich voneinander unterscheiden. In einer
Ausführungsform
bewirkt eine derartige Einstellung des vorherigen Pels, daß der Codec 134 ein
Intra-Pel-Symbol für
das aktuelle Pel erzeugt. In einer Ausführungsform könnte der
Codec 134 ein Intra-Pel-Symbol decodieren, um das Pel des
Intra-Pel-Symbols zu erhalten, ohne Bezug auf ein anderes Symbol
nehmen zu müssen.
Um das Pel des Intra-Pel-Symbols zu erhalten, muß der Codex 134 jedoch
eventuell ein oder mehrere vorherigen Symbole decodieren.
-
Dann
könnte
der Codex 134 einen Deckungsvektor erzeugen, der ein Deckungsflag
für jeden
quantifizierten Kanal des aktuellen Pels umfaßt. Jedes Deckungsflag könnte anzeigen,
ob ein quantifizierter Kanal des aktuellen Pels gleich einem entsprechenden
quantifizierten Kanal des vorherigen Pels ist oder sich mit diesem
deckt. Zu diesem Zweck könnte
der Codec 134 in Block 204 einen quantifizierten
Kanal des aktuellen Pels und einen quantifizierten Kanal des vorigen
Pels auswählen.
In Block 206 könnte
der Codec 134 bestimmen, ob der ausgewählte quantifizierte Kanal des
aktuellen Pels sich mit dem ausgewählten quantifizierten Kanal des
vorherigen Pels deckt. In Antwort auf die Bestimmung, daß sich die
ausgewählten
quantifizierten Kanäle decken,
könnte
der Codec 134 in Block 208 ein Deckungsflag für den ausgewählten quantifizierten
Kanal aktivieren (zum Beispiel auf 1 setzen), um anzuzeigen, daß der ausgewählte quantifizierte
Kanal des aktuellen Pels sich mit einem entsprechenden quantifizierten
Kanal des vorherigen Pels deckt. Andernfalls könnte der Codec 134 in
Block 210 das Deckungsflag für den ausgewählten quantifizierten
Kanal deaktivieren (das heißt, auf
0 einstellen), um anzeigen, daß der
ausgewählte
quantifizierte Kanal des aktuellen Pels sich nicht mit einem entsprechenden
quantifizierten Kanal des vorherigen Pels deckt. In Block 212 könnte der
Codec 134 bestimmen, ob ein Deckungsflag für alle quantifizierten
Kanäle
des aktuellen Pels erzeugt wurde. In Antwort auf die Bestimmung,
daß mehr
Deckungsflags zu erzeugen sind, könnte der Codec 134 zu 204 zurückkehren,
um einen anderen Kanal auszuwählen
und um ein Deckungsflag für
den ausgewählten
Kanal zu erzeugen. Andernfalls könnte
der Codec 134 zu Block 214 weitergehen, um zu
bestimmen, ob ein verlustbehaftetes oder verlustfreies Symbol für das aktuelle
Pel zu erzeugen ist.
-
In
Block 214 könnte
der Codec 134 bestimmen, ob ein verlustbehaftetes Symbol
oder ein verlustfreies Symbol für
das aktuelle Pel zu erzeugen ist. In einer Ausführungsform könnte der
Codec 134 bestimmen, ob ein verlustbehaftetes oder verlustfreies
Symbol auf der Basis eines Zustands eines oder mehrerer Konfigurationsregister
(nicht dargestellt) des Chipsatzes 104 oder des Anzeige-Controllers 116, 140 zu
erstellen ist. In einer anderen Ausführungsform könnte der
Codec 134 bestimmen, ob ein verlustbehaftetes oder verlustfreies Symbol
auf der Basis der Belastung des Rechengeräts zu erstellen ist. Zum Beispiel
könnte
der Codec 134 bestimmen, ein verlustbehaftetes Symbol in
Reaktion auf die Belastung des Speichersystems, des Prozessors und/oder
eines anderen Subsystems des Rechengeräts 100 zu erzeugen,
wenn das Rechengerät
einen Schwellenwert überschreitet.
Insbesondere könnte
der Codec 134 bestimmen, die Verlustbehaftung des Symbols
in Reaktion auf die Bestimmung zu erhöhen, daß die verfügbare Speicherbandbreite für den Systemspeicher 108 unter
einen bestimmten wert abgefallen ist. Später könnte der Codec 134 die
Verlustbehaftung der erzeugten Symbole verringern oder später verlustfreie
Symbole in Reaktion auf die Bestimmung erzeugen, daß die verfügbare Speicherbandbreite über einen
bestimmten Wert hinaus angestiegen ist.
-
In
Reaktion auf die Bestimmung, daß ein
verlustfreies Symbol zu erzeugen ist, könnte der Codec 134 einen
verlustfreien Fehlervektor erzeugen, der verlustfreie Kanäle und/oder
verlustfreie Kanalfehler umfaßt, die
im Grunde genommen Kanaldifferenzen zwischen dem aktuellen Pel und
dem vorherigen Pel anzeigen. Zu diesem Zweck könnte der Codec 134 in
Block 216 (4B) einen Kanal und einen entsprechenden
quantifizierten Kanal des aktuellen Pels sowie einen Kanal und einen
entsprechenden quantifizierten Kanal des vorherigen Pels auswählen. In
Block 218 könnte
der Codec 134 bestimmen, ob sich der ausgewählte quantifizierte Kanal
des aktuellen Pels mit dem ausgewählten quantifizierten Kanal
des vorherigen Pels deckt. In einer Ausführungsform könnte der
Codec 134 auf der Basis des entsprechenden Deckungsflags
des Deckungsvektors bestimmen, ob sich die ausgewählten quantifizierten
Kanäle
decken. In einer anderen Ausführungsform
könnte
der Codec 134 die Bestimmung auf der Basis eines Vergleichs
der ausgewählten
quantifizierten Kanäle
vornehmen.
-
In
Reaktion auf die Bestimmung, daß die
ausgewählten
quantifizierten Kanäle
sich nicht decken, könnte
der Codec 134 in Block 220 einen verlustfreien
Kanalvektor mit einem verlustfreien Kanal für das aktuelle Pel bereitstellen,
der gleich dem ausgewählten
Kanal des aktuellen Pels ist. Wenn zum Beispiel jedes 24-Bit RGB
Pel zu 6-Bit pro Kanal quantifiziert ist und der R Kanal des aktuellen
Pels 10010101 beträgt
und der R Kanal des vorherigen Pels 10000000 beträgt, deckt
sich der quantifizierte R Kanal von 100101 für das aktuell Pel nicht mit
dem quantifizierten R Kanal von 100000 für das vorherige Pel. Dementsprechend
könnte
der Codec 134 den verlustfreien Fehlervektor mit einem
verlustfreien Kanal versehen, der gleich dem R Kanalwert von 10010101
für das
aktuelle Pel ist. In Reaktion auf die Bestimmung, daß sich die
ausgewählten
quantifizierten Kanäle
decken, könnte
der Codec 134 in Block 222 den verlustfreien Fehlervektor
mit einem verlustfreien Kanalfehler für den ausgewählten Kanal
versehen, der gleich den Bits ist, die während der Quantifizierung des aktuellen
Pels aus dem ausgewählten
Kanal entfernt wurden. Wenn zum Beispiel jedes 24-Bit RGB Pel zu 6-Bit
pro Kanal quantifiziert wird, und der R Kanal des aktuellen Pels
10010101 beträgt
und der R Kanal des vorherigen Pels 10010100 beträgt, dann
deckt sich der quantifizierte R Kanal von 100101 für das aktuelle
Pel mit dem quantifizierten R Kanal von 100101 für das vorherige Pel. Dementsprechend
könnte
der Codec 134 den verlustfreien Fehlervektor mit einem
verlustfreien Kanalfehler versehen, der gleich 01 ist, was den beiden niedrigstwertigen
Bits (LSBs) entspricht, die während
der Quantifizierung aus dem R Kanal des aktuellen Pels entfernt
wurden.
-
In
Block 224 könnte
der Codec 134 bestimmen, ob der verlustfreie Fehlervektor
mit einem verlustfreien Kanal oder einem verlustfreien Kanalfehler
für jeden
Kanal des aktuellen Pels aktualisiert wurde. In Reaktion auf die
Bestimmung, daß,
daß zusätzliche
Aktualisierungen durchzuführen
sind, könnte
der Codec 134 zu 216 zurückkehren, um einen anderen
Kanal des aktuellen Pels auszuwählen
und den verlustfreien Fehlervektor mit einem entsprechenden Wert
für den
ausgewählten
Kanal zu versehen. Andernfalls könnte
der Codec 134 zu Block weitergehen. In Block 226 könnte der
Codec 134 ein verlustfreies Symbol ausgeben, das das aktuelle Pel
darstellt. In einer Ausführungsform
könnte
der Codec 134 das verlustfreie Symbol ausgeben, indem er
den Deckungsvektor für
das aktuelle Pel und dann den verlustfreien Fehlervektor für das aktuelle
Pel in einen Ausgabepuffer schreibt. In einer anderen Ausführungsform
könnte
der Codec 134 das verlustfreie Symbol dadurch ausgeben,
daß er
ferner einen Komprimierungsmodus in den Ausgabepuffer schreibt,
was bedeutet, daß das Symbol
verlustfrei ist. Das Symbol enthält
typisch weniger Bits als die ursprüngliche Pel-Darstellung. In
einer Ausführungsform
jedoch könnte
das verlustfreie Symbol tatsächlich
mehr bits als die ursprüngliche
Pel-Darstellung enthalten. Zum Beispiel könnte in einer Ausführungsform
ein verlustfreies Symbol, das ein einzelnes 24-Bit RGB Pel darstellt
oder vercodet, einen 3-Bit Deckungsvektor und einen verlustfreien
24-Bit Fehlervektor beinhalten, wenn sich keiner der quantifizierten
Kanäle
des aktuellen Pels mit den quantifizierten Kanälen des vorherigen Pels deckt.
-
In
Block 228 könnte
der Codec 134 bestimmen, ob alle Pels der digitalen Bildeinheit
vercodet wurden. Wenn alle Pels der digitalen Bildeinheit vercodet
wurden, ist die Codierung der digitalen Bindeinheit abgeschlossen,
und der Codec 134 kann gehen. Andernfalls kann der Codec 134 in
Block 230 das vorherige Pel mit dem aktuellen Pel gleichsetzen
und das aktuelle Pel mit einem anderen Pel der digitalen Bildeinheit
gleichsetzen. Dann kann der Codec 134 zu 204 zurückkehren,
um das neue aktuelle Pel zu quantifizieren und ein Symbol für das neue
aktuelle Pel zu erzeugen.
-
In
Reaktion auf die Bestimmung, daß ein
verlustbehaftetes Symbol zu erzeugen ist, könnte der Codec 134 einen
verlustbehafteten Fehlervektor erzeugen, der verlustbehaftete Kanäle und/oder
verlustbehaftete Kanalfehler umfaßt, die im Grunde genommen
Kanaldifferenzen zwischen dem aktuellen Pel und dem vorherigen Pel
anzeigen. Zu diesem Zweck könnte
der Codec 134 in Block 232 (4C)
einen Kanal und einen entsprechenden quantifizierten Kanal des aktuellen
Pels sowie einen Kanal und einen entsprechenden quantifizierten Kanal
des vorherigen Pels auswählen.
In Block 234 könnte
der Codec 134 bestimmen, ob sich der ausgewählte quantifizierte
Kanal des aktuellen Pels mit dem ausgewählten quantifizierten Kanal
des vorherigen Pels deckt. In einer Ausführungsform könnte der
Codec 134 auf der Basis des entsprechenden Deckungsflags
des Deckungsvektors bestimmen, ob sich die ausgewählten quantifizierten
Kanäle
decken. In einer anderen Ausführungsform
könnte
der Codec 134 die Bestimmung auf der Basis eines Vergleichs
der ausgewählten
quantifizierten Kanäle
vornehmen.
-
In
Reaktion auf die Bestimmung, daß sich
die ausgewählten
quantifizierten Kanäle
nicht decken, könnte
der Codec 134 in Block 236 einen verlustbehafteten
Kanalvektor mit einem verlustbehafteten Kanal für das aktuelle Pel bereitstellen,
der gleich einem MSB-Subsatz des entsprechenden Kanals des aktuellen
Pels ist. Wenn zum Beispiel jedes 24-Bit RGB Pel zu 6-Bit pro Kanal
quantifiziert ist, und der R Kanal des aktuellen Pels 10010101 beträgt und der
R Kanal des vorherigen Pels 10000000 beträgt, deckt sich der quantifizierte
R Kanal von 100101 für
das aktuell Pel nicht mit dem quantifizierten R Kanal von 100000
für das
vorherige Pel.
-
Dementsprechend
könnte
der Codec 134 den verlustbehafteten Fehlervektor mit einem
verlustbehafteten Kanal versehen, der gleich 10010101 ist, welches
den 7 MSBs des R Kanals für
das aktuelle Pel entspricht. In Reaktion auf die Bestimmung, daß sich die
ausgewählten
quantifizierten Kanäle
decken, könnte
der Codec 134 in Block 238 den verlustbehafteten
Fehlervektor mit einem verlustbehafteten Kanalfehler versehen, der
gleich einem MSB Subsatz der Bits ist, die während der Quantifizierung des
aktuellen Pels aus dem ausgewählten
Kanal entfernt wurden. Wenn zum Beispiel jedes 24-Bit RGB Pel zu
6-Bit pro Kanal quantifiziert wird, und der R Kanal des aktuellen
Pels 10010101 beträgt
und der R Kanal des vorherigen Pels 10010100 beträgt, dann
deckt sich der quantifizierte R Kanal von 100101 für das aktuelle
Pel mit dem quantifizierten R Kanal von 100101 für das vorherige Pel. Dementsprechend
könnte
der Codec 134 den verlustbehafteten Fehlervektor mit einem
verlustbehafteten Kanalfehler versehen, der gleich 0 ist, was den
beiden niedrigstwertigen Bits (LSBs) entspricht, die während der
Quantifizierung aus dem R Kanal des aktuellen Pels entfernt wurden.
-
In
einer Ausführungsform
könnte
der Codec 134 einen oder mehrere verlustbehafteten Levels
unterstützen.
Insbesondere könnte
der Codec 134 1, 2 oder 3 Bits Verlustbehaftung pro Kanal
unterstützen.
Zum Beispiel, wenn 4 Bits während
der Quantifizierung aus einem Kanal beseitigt werden, könnte der
Codec 134 einen ersten Verlustbehaftungs-Level, der das
LSB aus jedem verlustbehafteten Kanal und jedem verlustbehafteten
Kanalfehler beseitigt, einen zweiten Verlustbehaftungs-Level, der
die 2 LSBs aus jedem verlustbehafteten Kanal und jedem verlustbehafteten
Kanalfehler beseitigt, einen dritten Verlustbehaftungs-Level, der
die 3 LSBs aus jedem verlustbehafteten Kanal und jedem verlustbehafteten
Kanalfehler beseitigt, und einen vierten Verlustbehaftungs-Level
unterstützen,
der die 4 LSBs aus jedem verlustbehafteten Kanal und jedem verlustbehafteten
Kanalfehler beseitigt. Dementsprechend könnte, wenn die 4 LSBs während der
Quantifizierung aus jedem Kanal beseitigt werden, und der Codec 134 auf
dem obigen vierten verlustbehafteten Level operiert, ein verlustbehafteter
Kanalfehler für
einen Kanal null Bits umfassen. Abgesehen davon, daß verschiedene
Verlustbehaftungs-Levels unterstützt
werden, könnte
der Codec 134 das Definieren des Verlustbehaftungs-Levels für jeden
einzelnen Kanal unterstützen.
Zum Beispiel könnte
der Codec 134 für
ein 24-Bit YUV Pel das LSB des Y Kanals, die 2 LSBs des U Kanals
und die 4 LSBs des V Kanals beseitigen.
-
Der
Codec 134 in Block 240 könnte bestimmen, ob der verlustbehaftete
Fehlervektor mit einem verlustbehafteten Kanal oder einem verlustbehafteten
Kanalfehler für
jeden Kanal des aktuellen Pels aktualisiert wurde. In Reaktion auf
die Bestimmung, daß zusätzliche
Aktualisierungen durchzuführen
sind, könnte
der Codec 134 zu 216 zurückkehren, um einen anderen
Kanal des aktuellen Pels auszuwählen,
und den verlustbehafteten Fehlervektor mit einem entsprechenden
Wert für
den ausgewählten
Kanal versehen. Andernfalls könnte
der Codec 134 zu Block 242 zurückkehren. In Block 242 könnte der
Codec 134 ein verlustbehaftetes Symbol ausgeben, welches
das aktuelle Pel darstellt. In einer Ausführungsform könnte der
Codec 134 das verlustbehaftete Symbol dadurch ausgeben,
daß er
den Deckungsvektor für
das aktuelle Pel und dann den verlustbehafteten Fehlervektor für das aktuelle
Pel in den Ausgabepuffer schreibt. In einer Ausführungsform könnte der
Codec 134 das verlustbehaftete Symbol dadurch ausgeben,
daß er
ferner einen Komprimierungsmodus in den Ausgabepuffer schreibt,
der anzeigt, daß das
Symbol mit Verlust behaftet ist.
-
In
Block 244 könnte
der Codec 134 bestimmen, ob alle Pels der digitalen Bildeinheit
vercodet wurden. Wenn alle Pels der digitalen Bildeinheit vercodet
wurden, ist die Vercodung der digitalen Bildeinheit abgeschlossen,
und der Codec 134 kann gehen. Andernfalls könnte der
Codec 134 in Block 246 das vorherige Pel mit dem
aktuellen Pel gleichsetzen und das aktuelle Pel mit einem anderem
Pel der digitalen Bildeinheit gleichsetzen. Dann könnte der
Codec 134 zu 204 zurückkehren,
um das neue aktuelle Pel zu quantifizieren und ein Symbol für das neue
aktuelle Pel zu erzeugen.
-
Bezugnehmend
auf 5A, 5B und 5C ist
ein Verfahren dargestellt, das vom Codec 134 zur Rekonstruktion
einer Zonenzeile, einer Zone, einer Frame-Zeile, eines Frame-Feldes
oder einer anderen digitalen Bildeinheit aus einer Mehrzahl von
Symbolen verwendet werden kann. In Block 300 könnte der
Codec 134 ein aktuelles Symbol auf ein erstes Symbol einer
digitalen Bildeinheit einstellen. In Block 302 könnte der Codec 134 einen
Deckungsvektor aus dem aktuellen Symbol erhalten. In einer Ausführungsform
könnte
der Codec 134 den Deckungsvektor mit den ersten drei Bits
des aktuellen Symbols gleichsetzen. In Block 304 könnte der
Codec 134 einen Kanal des aktuellen Pels auswählen und
aus dem Deckungsvektor ein Deckungsflag für den ausgewählten Kanal
erhalten.
-
In
Block 304 könnte
der Codec 134 bestimmen, ob verlustbehaftete oder verlustfreie
Dekomprimierung durchgeführt
werden soll. In einer Ausführungsform
könnte
der Codec 134 bestimmen, ob verlustbehaftete oder verlustfreie
Dekomprimierung auf Basis eines oder mehrerer Register des Chipsatzes 104 und/oder des
Anzeige-Controllers 116, 140 durchgeführt werden
soll. In einer anderen Ausführungsform
könnte
der Codec 134 bestimmen, ob verlustfreie Dekomprimierung
oder eine gewisse verlustbehaftete Dekomprimierung auf der Basis
eines vom Symbol erhaltenen Komprimierungsmodus durchgeführt werden
soll.
-
In
Reaktion auf die Bestimmung, verlustfreie Dekomprimierung durchzuführen, könnte der
Codec 134 in Block 308 (5B) auf
Basis des erhaltenen Deckungsflags bestimmen, ob sich der quantifizierte
Kanal des aktuellen Pels mit dem entsprechenden quantifizierten
Kanal des vorherigen Pels deckt. In Reaktion auf die Bestimmung,
daß sich
die quantifizierten Kanäle
nicht decken, könnte
der Codec 134 in Block 310 den nächsten verlustfreien
Kanal aus einem verlustfreien Fehlervektor des aktuellen Symbols
erhalten. In einer Ausführungsform
erzeugt der Codec 134 ein Intra-Pel-Symbol für das erste
Pel einer digitalen Bildeinheit. Dementsprechend zeigt der Deckungsvektor
des ersten Symbols einer digitalen Bildeinheit an, daß keiner
der quantifizierten Kanäle
des ersten Pels gleich den quantifizierten Kanälen des vorherigen Pels ist.
Dementsprechend könnte
das erste Pel aus dem ersten Symbol der digitalen Bildeinheit erhalten
werden, ohne auf ein möglicherweise
nicht vorhandenes vorheriges Pel Bezug nehmen zu müssen. In
Block 312 könnte
der Codec 134 den Kanal des aktuellen Pels rekonstruieren,
indem er der Kanal mit dem verlustfreien Kanal gleichsetzt, der
aus dem verlustfreien Fehlervektor erhalten wurde. In Reaktion auf
die Bestimmung, daß sich
der quantifizierte Kanal des aktuellen Pels mit dem quantifizierten
Kanal des vorherigen Pels deckt, könnte der Codec 134 in
Block 314 den nächsten
verlustfreien Kanalfehler aus dem verlustfreien Fehlervektor des
aktuellen Symbols erhalten. In Block 316 könnte der
Codec 134 den Kanal des aktuellen Pels rekonstruierten,
indem er den Kanal mit dem Ergebnis des Anhängens des erhaltenen verlustfreien
Kanalfehlers mit dem quantifizierten Kanal des vorherigen Pels gleichsetzt.
-
In
Block 318 könnte
der Codec 134 bestimmen, ob alle Kanäle des Pels decodiert wurden.
In Reaktion auf die Bestimmung, daß zusätzliche Kanäle zu decodieren sind, könnte der
Codec 134 zu Block 304 zurückkehren, um den nächsten Kanal
des aktuellen Pels und das vom Deckungsvektor erhaltene entsprechende Deckungsflag
auszuwählen.
Andernfalls könnte
der Codec 134 in Block 320 die rekonstruierten
Kanäle
des aktuellen Pels an einen Ausgabepuffer ausgeben. In Block 322 könnte der
Codec 134 bestimmen, ob der Codec 132 das letzte
Symbol des digitalen Bildes decodiert hat. Wenn das letzte Symbol
digitalen Bildes decodiert wurde, hat der Codec 134 das
Decodieren der Symbole der digitalen Bildeinheit beendet und könnte gehen.
Andernfalls könnte
der Codec 134 in Block 324 das vorherige Pel mit
dem rekonstruierten aktuellen Pel gleichsetzen und das aktuelle
Symbol mit dem nächsten
Symbol der digitalen Bildeinheit gleichsetzen. Des weiteren könnte der
Codec in Block 324 einen Deckungsvektor von dem neuen aktuellen
Symbol erhalten. Der Codec 134 könnte dann zu Block 304 zurückkehren,
um das neu erhaltene aktuelle Symbol zu decodieren.
-
In
Reaktion auf die Bestimmung, verlustbehaftete Dekomprimierung durchzuführen, könnte der
Codec 134 in Block 326 (5C) auf
Basis des erhaltenen Deckungsflags bestimmen, ob sich der quantifizierte
Kanal des aktuellen Pels mit dem entsprechenden quantifizierten
Kanal des vorherigen Pels deckt. In Reaktion auf die Bestimmung,
daß sich
die quantifizierten Kanäle
nicht decken, könnte
der Codec 134 in Block 328 den nächsten verlustbehafteten
Kanal von einem verlustbehafteten Fehlervektor des aktuellen Symbols
erhalten. In Block 330 könnte der Codec 134 den
Kanal des aktuellen Pels rekonstruieren, indem er den Kanal mit
dem Ergebnis des Anhängens
eines oder mehrerer Ersatzbits an den aus dem verlustbehafteten
Fehlervektor erhaltenen verlustbehafteten Kanal gleichsetzt. In
einer Ausführungsform
könnte
der Codec 134 einen festen vorherbestimmten Wert (zum Beispiel
0, 10 oder 100) für
die Ersatzbits verwenden, die zum Ersetzen der während der Komprimierung verloren
gegangenen Bits verwendet wurden. In einer anderen Ausführungsform könnte der
Codec 134 die Ersatzbits dynamisch ändern, um die verloren gegangenen
Bits zu dithern. Zum Beispiel könnte
der Codec 134 ein einzelnes Ersatzbit zwischen 0 und 1
für jedes
neue Symbol umschalten. Für eine
Ausführungsform,
die mehr als ein einzelnes Bit beseitigt, könnte der Codec 134 zwischen
zwei zentralen Werten umschalten. Insbesondere könnte der Codec 134 die
beiden Ersatzbits erzeugen, indem er zwischen 01 und 10 umschaltet,
drei Ersatzbits erzeugen, indem er zwischen 011 und 100 umschaltet,
und vier Ersatzbits erzeugen, indem er zwischen 0111 und 1000 umschaltet.
Die obigen Techniken dienen lediglich zur Anschauung, und der Codec 134 könnte andere
Techniken zum Ersetzen der fehlenden Bits des verlustbehafteten
Kanals benutzen.
-
In
Reaktion auf die Bestimmung, daß sich
der quantifizierte Kanal des aktuellen Pels mit dem quantifizierten
Kanal des vorherigen Pels deckt, könnte der Codec 134 in
Block 332 den nächsten
verlustbehafteten Kanalfehler von dem verlustbehafteten Fehlervektor
des aktuellen Symbols erhalten. In Block 334 könnte der Codec 134 ein
oder mehrere Ersatzbits an den verlustbehafteten Kanalfehler anhängen, um
einen rekonstruierten Kanalfehler zu erhalten. Der Codec 134 könnte die
Ersatzbits in einer Weise erzeugen, wie sie mit Bezug auf Block 330 oben
beschrieben ist. In Block 336 könnte der Codec 134 den
Kanal des aktuellen Pels rekonstruieren, indem er den Kanal mit
dem quantifizierten Kanal des vorherigen Pels gleichsetzt, an den
der rekonstruierte Kanalfehler angehängt wurde.
-
In
Block 338 könnte
der Codec 134 bestimmen, ob alle Kanäle des Pels decodiert wurden.
In Reaktion auf die Bestimmung, daß zusätzliche Kanäle zu decodieren sind, könnte der
Codec 134 zu Block 304 zurückkehren, um den nächsten Kanal
des aktuellen Pels und das aus dem Deckungsvektor erhaltene entsprechende
Deckungsflag auszuwählen.
Andernfalls könnte
der Codec 134 in Block 340 die rekonstruierten
Kanäle
des aktuellen Pels an einen Ausgabepuffer ausgeben. In Block 342 könnte der
Codec 134 bestimmen, ob der Codec 134 das letzte
Symbol des digitalen Bildes decodiert hat. Wenn das letzte Symbole
des digitalen Bildes decodiert wurde, hat der Codec 134 das
Decodieren der Symbole der digitalen Bildeinheit beendet und kann gehen.
Andernfalls könnte
der Codec 134 in Block 344 das vorherige Pel mit
dem rekonstruierten aktuellen Pel gleichsetzen und das aktuelle
Symbol mit dem nächsten
Symbol der digitalen Bildeinheit gleichsetzen. Des weiteren könnte der
Codec 134 in Block 344 einen Deckungsvektor aus
dem neuen aktuellen Symbol erhalten. Der Codec 134 könnte dann
zu Block 304 zurückkehren,
um das neu erhaltene aktuelle Symbol zu decodieren.
-
Das
Rechengerät 100 könnte alle
oder einen Subsatz des beispielhaften Verfahrens von 4A, 4B und 4C und
des beispielhaften Verfahrens von 5A, 5B und 5C in
Reaktion auf das Ausführen
von Anweisungen eines maschinenlesbaren Mediums ausführen, wie
zum Beispiel eines Nurlesespeichers (ROM), eines Direktzugriffsspeichers
(RAM), eines magnetischen Plattenspeichermediums, eines optischen
Speichermediums, Flashspeichergeräten und/oder elektrischen,
optischen, akustischen oder sonstigen Formen von ausgebreiteten
Signalen, wie zum Beispiel Trägerwellen,
Infrarotsignalen, digitalen Signalen, analogen Signalen. Des weiteren,
obwohl die beispielhaften Verfahren von 4A, 4B, 4C, 5C, 5B und 5C als
Folge von Operationen veranschaulicht sind, könnte das Rechengerät 100 in einigen
Ausführungsformen
verschiedene veranschaulichte Operationen der Verfahren parallel
dazu oder in einer anderen Reihenfolge ausführen.
-
Ein
Beispiel verlustfreier Komprimierung/Dekomprimierung und ein Beispiel
verlustbehafteter Komprimierung/Dekomprimierung zeigen die folgenden
Tabellen 1-7. Insbesondere zeigt Tabelle 1 eine Zonenzeile, die
vier 24-Bit RGB Pels aufweist. Jedes Pel von Tabelle 1 umfaßt einen
verlustfreien 8-Bit R-Kanal, einen verlustfreien 8-Bit G-Kanal und
einen verlustfreien 8-Bit
B-Kanal. Tabelle 2 zeigt die vier 24-Bit RGB Pels, nachdem sie mit
Hilfe von 6 Bits pro Kanal auf einen Quantifizierung-Level von 18-Bit
quantifiziert wurden. Wie zu sehen ist, könnte der Codec die quantifizierten
18-Bit Pels erzeugen, indem er einfach die 2 LSBs jedes verlustfreien
Kanals fallen läßt. Des
weiteren zeigt Tabelle 3 verlustbehaftete 7-Bit Kanäle für die Pels
von Tabelle 1.
-
-
Tabelle
4 zeigt ferner verlustfreie 2-Bit Kanalfehler für jeden quantifizierten 6-Bit
Kanal von Tabelle 2. Wie aus Tabelle 4 ersichtlich, könnte der
Codec einen verlustfreien 2-Bit Kanalfehler erzeugen, indem er einfach
die 2 LSBs zurückbehält, die
von jedem verlustfreien Kanal während
der Pel-Quantifizierung fallengelassen wurden. Bezugnehmend jetzt
auf Tabelle 5 sind für
jeden quantifizierten 6-Bit Kanal von Tabelle 2 verlustbehaftete
1-Bit Kanalfehler gezeigt. Der Codec könnte die verlustbehafteten
1-Bit Kanalfehler erzeugen, indem er einfach das MSB zurückbehält, das
von jedem Kanal während
der Pel-Quantifizierung fallengelassen wurde.
-
-
Bezugnehmend
jetzt auf Tabelle 6 ist eine verlustfreie Vercodung der vier 24-Bit
RGB Pels von Tabelle 1 dargestellt. Wie veranschaulicht, enthält eine
verlustfreie Vercodung ein Symbol für jedes Pel von Tabelle 1. Insbesondere
umfaßt
Symbol 0 einen 3-Bit Deckungsvektor, der anzeigt, daß sich keiner
der quantifizierten Kanäle
von Pel 0 mit den quantifizierten Kanälen des vorherigen Pels deckt.
Dementsprechend beinhaltet Symbol 0 in seinem verlustfreien Fehlervektor
jeden verlustfreien 8-Bit Kanal von Pel 0. Symbol 1 umfaßt einen 3-Bit
Deckungsvektor, der anzeigt, daß sich
alle quantifizierten Kanäle
von Pel 1 mit den entsprechenden quantifizierten Kanälen von
Pel 0 decken. Dementsprechend beinhaltet Symbol 1 in seinem verlustfreien
Fehlervektor jeden in Tabelle 4 für Pel 1 veranschaulichten verlustfreien
2-Bit Kanalfehler. Desgleichen umfaßt Symbol 2 einen 3-Bit Deckungsvektor,
der anzeigt, daß sich
alle quantifizierten Kanäle
von Pel 2 mit den entsprechenden quantifizierten Kanälen von
Pel 1 decken. Symbol 2 beinhaltet daher in seinem verlustfreien
Fehlervektor jeden in Tabelle 4 für Pel 2 veranschaulichten verlustfreien
2-Bit Kanalfehler. Symbol 3 umfaßt einen 3-Bit Deckungsvektor, der anzeigt, daß sich die
quantifizierten G und B Kanäle
von Pel 3 mit den quantifizierten G und B Kanälen von Pel 2 decken, aber
ferner anzeigt, daß der
quantifizierte R Kanal von Pel 3 sich nicht mit dem quantifizierten
R Kanal von Pel 2 deckt. Dementsprechend beinhaltet Symbol 3 in
seinem verlustfreien Fehlervektor den verlustfreien 8-Bit R Kanal
für Pel 3,
den verlustfreien 2-Bit G Kanalfehler für Pel 3 und den verlustfreien
2-Bit B Kanalfehler für
Pel 3. Wie in Tabelle 6 dargestellt, stellen die Symbole 0-3 96
Bits von Peldaten mit nur 60 Bits dar, was eine komprimierte Darstellung
der Pels 0, 1, 2 und 3 bedeutet. Der Codec könnte die 60 Bits der Symbole
0-3 decodieren, um 96 Bits von Pels 0-3 ohne Datenverlust zu erhalten.
-
-
Bezugnehmend
jetzt auf Tabelle 7 ist eine verlustbehaftete Vercodung der vier
24-Bit RGB Pels von Tabelle 1 veranschaulicht. Wie veranschaulicht,
enthält
eine verlustbehaftete Vercodung ein Symbol für jedes Pel von Tabelle 1.
Insbesondere umfaßt
Symbol 0 einen 3-Bit Deckungsvektor, der anzeigt, daß sich keiner der
quantifizierten Kanäle
von Pel 0 mit den quantifizierten Kanälen des vorherigen Pels deckt.
Dementsprechend beinhaltet Symbol 0 in seinem verlustbehafteten
Fehlervektor jeden in Tabelle 3 für Pel 0 veranschaulichten verlustbehafteten
7-Bit Kanal. Symbol 1 umfaßt
einen 3-Bit Deckungsvektor, der anzeigt, daß sich alle quantifizierten
Kanäle
von Pel 1 mit den entsprechenden quantifizierten Kanälen von
Pel 0 decken. Dementsprechend beinhaltet Symbol 1 in seinem verlustbehafteten
Fehlervektor jeden in Tabelle 5 für Pel 1 veranschaulichten verlustbehafteten
1-Bit Kanalfehler. Desgleichen umfaßt Symbol 2 einen 3-Bit Deckungsvektor, der
anzeigt, daß sich
alle quantifizierten Kanäle
von Pel 2 mit den entsprechenden quantifizierten Kanälen von Pel
1 decken. Symbol 2 beinhaltet daher in seinem verlustbehafteten
Fehlervektor jeden in Tabelle 5 für Pel 2 veranschaulichten verlustbehafteten
1-Bit Kanalfehler. Symbol 3 umfaßt einen 3-Bit Deckungsvektor,
der anzeigt, daß sich
die quantifizierten G und B Kanäle
von Pel 3 mit den quantifizierten G und B Kanälen von Pel 2 decken, daß sich jedoch
der quantifizierte R Kanal von Pel 3 nicht mit dem quantifizierten
R Kanal von Pel 2 deckt. Dementsprechend beinhaltet Symbol 3 in
seinem verlustbehafteten Fehlervektor den verlustbehafteten 7-Bit
R Kanal für
Pel 3, den verlustbehafteten 2-Bit G Kanalfehler für Pel 3
und den verlustbehafteten 2-Bit B Kanalfehler für Pel 3. Wie in Tabelle 7 dargestellt,
stellen die Symbole 0-3 96 Bits von Peldaten mit nur 48 Bits dar,
was eine komprimierte Darstellung der Pels 0, 1, 2 und 3 bedeutet.
-
-
Wenn
ein Deckungsflag anzeigt, daß ein
quantifizierter Kanal des aktuellen Pels sich nicht mit dem entsprechenden
quantifizierten Kanal des vorherigen Pels deckt, könnte der
Codec später
den Kanal rekonstruieren, indem er 1 Ersatzbit an den verlustbehafteten
7-Bit Kanal des Symbols anhängt.
Wenn jedoch ein Deckungsflag anzeigt, daß ein quantifizierter Kanal
des aktuellen Pels sich mit dem entsprechenden quantifizierten Kanal
des vorherigen Pels deckt, dann könnte der Codec später den
Kanal rekonstruieren, indem er 1 Ersatzbit an den verlustbehafteten
1-Bit Kanalfehler des Symbols anhängt, um einen rekonstruierten
Kanalfehler zu erhalten, und indem er den rekonstruierten Kanalfehler
an den quantifizierten 6-Bit Kanal des vorherigen Pels anhängt. Tabelle
8 zeigt einen möglichen
Satz von vier 24-Bit Pels, die aus den verlustbehafteten Symbolen
von Tabelle 7 erhalten werden könnten.
Insbesondere wurden die vier Pels von Tabelle 7 dadurch erhalten,
daß das
Ersatzbit für
Pel 0 mit 0 gleichgesetzt wurde und daß das Ersatzbit für jedes
darauffolgende Pel umgeschaltet wurde. Wie sich an einem Vergleich
der rekonstruierten Pels von Tabelle 8 mit den ursprünglichen
Pels von Tabelle 1 erkennen läßt, ist
das LSB jedes Kanals manchmal korrekt und manchmal inkorrekt, aber
im allgemeinen sind die rekonstruierten Kanäle sehr ähnlich wenn nicht gleich den
ursprünglichen
Kanälen.
In den meisten Fällen
wäre der
Benutzer nicht fähig,
einen Unterschied zwischen dem ursprünglichen digitalen Bild und
einem digitalen Bild festzustellen, das aus verlustbehafteten Symbolen
rekonstruiert wurde.
-
Obwohl
bestimmte Merkmale der Erfindung unter Bezugnahme auf beispielhafte
Ausführungsformen beschrieben
wurden, sollte die Beschreibung nicht als einschränkend verstanden
werden. Modifikationen sind möglich
innerhalb des Geltungsbereichs der beigefügten Ansprüche.