-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich allgemein auf die Komprimierung
und Dekomprimierung von Daten. Insbesondere bezieht sich die vorliegende
Erfindung auf eine Videocodeimplementierung mit guter Qualität, die ein
gutes Komprimierungsverhältnis
für Video
mit niedriger Bitrate erreicht.
-
Hintergrund
der Erfindung
-
Eine
Anzahl von wichtigen Anwendungen bei der Bildverarbeitung erfordert
eine sehr kostengünstige,
schnelle und hochqualitative Video-Codec-Implementierung (Codec
= Codierer/Decodierer), die ein gutes Komprimierungsverhältnis erreicht.
Insbesondere ist eine kostengünstige
und schnelle Implementierung für
Videoanwendungen mit niedriger Bitrate wünschenswert, wie z. B. Videokassettenaufzeichengeräte (VCRs),
Kabelfernsehen, Kameras, Set-Top-Boxen und andere Verbrauchervorrichtungen.
-
Eine
Möglichkeit
zum Erreichen einer schnelleren und kostengünstigeren Codec-Implementierung
ist, zu versuchen, den Speicherbetrag zu reduzieren, der durch einen
bestimmten Komprimierungsalgorithmus benötigt wird. Ein reduzierter
Speicher (wie z. B. RAM) ist besonders wünschenswert für Komprimierungsalgorithmen,
die in Hardware implementiert sind, wie z. B. auf einer integrierten Schaltung
(oder ASIC). Zum Beispiel kann es unerschwinglich teuer sein, große Beträge eines
RAM in eine kleine Videokamera zu platzieren, um eine effizientere
Komprimierung von Bildern zu ermöglichen. Üblicherweise
werden geringere Mengen von RAM verwendet, um einen bestimmten Codec
zu implementieren, aber dies führt
zu einem Codec, der weniger effizient und von geringerer Qualität ist.
-
Obwohl
erkennbare Vorteile auf dem Gebiet gemacht wurden, und insbesondere
mit JPEG- und MPEG-Codierung, liegen immer noch Nachteile bei diesen
Techniken vor, die von einer besseren Codec-Implementierung profitieren
könnten,
die ein höheres
Komprimierungsverhältnis
unter Verwendung von weniger Speicher erreicht. Zum Beispiel führen sowohl
JPEG- als auch Bewegungs-JPEG-Codierung
eine Block-für-Block-Komprimierung eines
Rahmens eines Bildes durch, um komprimierte, unabhängige Blöcke zu erzeugen.
Hauptsächlich
werden diese Blöcke
unabhängig
voneinander behandelt. Anders ausgedrückt komprimieren JPEG-Codierung und
andere ähnliche
Formen einer Standbildcodierung schließlich einen Rahmen zu einer,
Zeit ohne Bezugnahme auf vorangehende oder nachfolgende Rahmen.
Diese Techniken ziehen keinen umfassenden Vorteil aus den Ähnlichkeiten
zwischen Rahmen oder zwischen Blöcken
eines Rahmens und führen somit
zu einem Komprimierungsverhältnis,
das nicht optimal ist.
-
Andere
Codierungstypen, wie z. B. eine MPEG-Codierung, verwenden eine Zwischenrahmen-
oder Zwischenfelddifferenzierung, um Rahmen oder Felder zu vergleichen
und somit ein besseres Komprimierungsverhältnis zu erreichen. Um jedoch Rahmen
zu vergleichen, muss zumindest ein voller Rahmen in einer temporären Speicherung
gespeichert sein, um denselben entweder mit einem vorangehenden
oder nachfolgenden Rahmen zu vergleichen. Somit, um die I-, B- und
P-Rahmen zu erzeugen, die bei diesem Codierungstyp notwendig sind, wird
ein Rahmen üblicherweise
empfangen und gespeichert, bevor eine Verarbeitung beginnen kann. Die
Menge der Bilddaten für
einen Rahmen kann untragbar sein, um sie in einem RAM zu speichern,
und macht eine solche Codec-Implementierung in Hardware aufgrund
der Kosten und der Größe des zusätzlichen
benötigten
Speichers unpraktikabel. Insbesondere können diese Codec-Implementierungen
auf einer integrierten Schal tung oder einer ähnlichen Vorrichtung einfach
aufgrund der Menge des erforderlichen Speichers zu teuer sein.
-
Bisherige
Bemühungen
haben versucht, bessere Komprimierungsverhältnisse zu erreichen. Zum Beispiel
wurde die Vorstellung des Durchführens
von Operationen in dem DCT-Transformationsbereich
auf einen gesamten Rahmen hin zuvor an der UC Berkeley und der University
of Washington untersucht, für
eine Vielzahl von Anwendungen, wie z. B. Bilddatenbanken (Herzoomen
einer Luftoberflächenabbildung
mit vielen Details).
-
Es
wäre somit
wünschenswert,
eine Technik zum Erreichen eines verbesserten Komprimierungsverhältnisses
für Videobilder
zu erreichen, während gleichzeitig
die Menge an Speicherung reduziert wird, die durch die Technik verwendet
werden muss. Insbesondere wäre
es wünschenswert,
wenn eine solche Technik die Speichermenge reduziert, die für eine Implementierung
auf einer integrierten Schaltung benötigt wird.
-
Grenzen
zwischen Blöcken
stellen ferner Schwierigkeiten bei der Komprimierung von Videobildern
dar. Ein kurzer Hintergrund über
Videobilder und eine Beschreibung von einigen dieser Schwierigkeiten
wird nun erläutert. 1 stellt
ein bekanntes Bilddarstellungsschema dar, das Pixel, Abtastlinien, Streifen
und Blöcke
verwendet. Rahmen 12 stellt ein Standbild dar, das aus
einer einer Vielzahl von Quellen erzeugt wird, wie z. B. einer Videokamera,
einem Fernseher, einem Computermonitor etc. Bei einem Bilderzeugungssystem,
bei dem ein progressives Abtasten verwendet wird, ist jedes Bild 12 ein
Rahmen. Bei Systemen, bei denen eine Zwischenzeilenabtastung verwendet
wird, stellt jedes Bild 12 ein Feld aus Informationen dar.
Das Bild 12 kann ferner andere Zerlegungen eines Standbildes
darstellen, abhängig von
dem Typ der Abtastung, die verwendet wird. Informationen in dem
Rahmen 12 werden durch eine Anzahl von Pixeln 14 dargestellt.
Jedes Pixel stellt wiederum digitalisierte Informa tionen dar und
wird häufig
durch 8 Bits dargestellt, obwohl jedes Pixel durch eine beliebige
Anzahl von Bits dargestellt werden kann.
-
Jede
Abtastzeile 16 umfasst eine Anzahl von Pixeln 14,
wodurch eine horizontale Linie aus Informationen innerhalb des Rahmens 12 dargestellt
wird. Üblicherweise
sind Gruppen aus acht horizontalen Abtastlinien in einen Streifen 18 organisiert.
Ein Block aus Informationen 20 ist einen Streifen hoch
mal eine bestimmte Anzahl von Pixeln breit. Zum Beispiel, abhängig von
dem verwendeten Standard, kann ein Block 8 × 8 Pixel, 8 × 32 Pixel
oder eine beliebige andere Größe sein.
Auf diese Weise wird ein Bild in Blöcke unterteilt, und diese Blöcke werden
dann übertragen,
komprimiert, verarbeitet oder anderweitig manipuliert, abhängig von
der Anwendung. Bei einem NTSC-Video (einem Televisionsstandard unter
Verwendung einer Zwischenzeilenabtastung) erscheint z. B. ein Feld
aus Informationen bei jedem 60stel einer Sekunde, ein Rahmen (der
zwei Felder umfasst) erscheint bei jedem 30stel einer Sekunde und
die fortgesetzte Darstellung der Rahmen aus Informationen erzeugen
ein Bild. Auf einem Computermonitor unter Verwendung einer progressiven
Abtastung wird ein Rahmen aus Informationen auf dem Bildschirm jedes 30stel
einer Sekunde aufgefrischt, um die Anzeige zu erzeugen, die ein
Benutzer sieht.
-
2 stellt
ein Bild 50 dar, das Block für Block komprimiert und dann
zum Betrachten dekomprimiert und präsentiert wurde. Das Bild 50 enthält Blöcke 52 – 58 mit
Grenzen oder Kanten zwischen denselben 62 – 68.
Das Bild 50 zeigt Blockgrenzen 62 – 68 mit
Geisterbildern oder Schatten (Blockbildungsartefakten). Für eine Vielzahl
von bekannten Block-für-Block-Komprimierungstechniken
werden die Blockgrenzen 62 – 68 sichtbar, da
die Korrelation zwischen Blöcken
nicht erkannt wird. Obwohl die Blockgrenzen selbst vielleicht nicht
sichtbar sind, manifestieren sich diese Blockbildungsartefakte an
den Blockgrenzen, wodurch ein nicht akzeptables Bild präsentiert
wird.
-
Eine
Technik, die zum Komprimieren eines Bildes Block für Block
nützlich
ist, ist das Verwenden eines 2-6-Biorthogonalfilters
zum Umwandeln von Abtastzeilen von Pixeln oder Zeilen von Blöcken. Ein 2-6-Biorthogonalfilter
ist eine Abänderung
an der Haar-Transformation. Bei dem 2-6-Biorthogonalfilter werden Summen und
Differenzen von jedem Paar von Pixeln wie bei der Haar-Transformation
erzeugt, aber die Differenzen werden modifiziert (oder „angehoben"), um angehobene
Differenzwerte zusammen mit dem Strom von Summenwerten zu erzeugen.
Bei dem traditionellen 2-6-Biorthogonalfilter wird der Strom aus
Summenwerten dargestellt durch die Formel: si =
x2i + x2i+i, wobei
die x-Werte einen
Strom aus eingehenden Pixeln aus einer Abtastzeile darstellen. Auf ähnliche
Weise wird der Strom aus Differenzwerten dargestellt durch die Formel:
di = x2i – x2i+1. Der tatsächliche gehobene Strom von
Differenzwerten, der zusammen mit dem Strom aus Summenwerten ausgegeben
wird, wird dargestellt durch die Formel wi = di – si-1/8 + Si+1/8. Das
2-6-Biorthogonalfilter ist nützlich,
da, wie durch die Formel für
die gehobenen Werte in „w" ersichtlich ist,
jeder resultierende gehobene Wert „w" von einer vorangehenden und einer nachfolgenden
Summe von Paaren von Pixeln abhängt
(relativ zu der betreffenden Differenz). Leider macht diese Überlappung
zwischen Blockgrenzen die Komprimierung von Blöcken abhängig von vorangehenden und
nachfolgenden Blöcken
und kann enorm komplex zu implementieren werden. Zum Beispiel, um
die Kanten der Blöcke
korrekt unter Verwendung der obigen Technik zu verarbeiten, kann
ein Block nicht unabhängig
behandelt werden. Wenn ein Block aus einer Speicherung für eine Komprimierung
entfernt wird, muss ein Teil des nachfolgenden Blocks ebenfalls
herangebracht werden, und ein Teil des aktuellen Blocks muss in
der Speicherung für
den nächsten Block
zur Verwendung gelassen werden. Diese Komplexität erhöht nicht nur die Größe des Speichers,
die erforderlich ist, um ein Bild zu komprimieren, sondern kompliziert
ferner den Komprimierungsalgorithmus.
-
Bekannte
Techniken haben versucht, Blöcke unabhängig zu
behandeln, haben jedoch gemischte Ergebnisse erzielt. Zum Beispiel
wird für
ein 2-6-Biorthogonalfilter der Wert von w1 berechnet,
unter Verwendung der ersten Summe (so) und der dritten berechneten
Summe (s2). Die Berechnung des allerersten
gehobenen Werts (w0) stellt sich als schwieriger heraus,
da keine vorangehende Summe vorliegt, mit der der Wert berechnet
werden kann, wenn die Blöcke
unabhängig
behandelt werden sollen. Dieselbe Schwierigkeit tritt am Ende eines
Blocks auf, wenn der abschließende
gehobene Wert (wn-1) berechnet werden soll,
da wiederum keine spätere
Pixelsumme vorliegt, die bei der Berechnung dieses abschließenden gehobenen
Werts verwendet wird, wenn die Blöcke unabhängig behandelt werden sollen.
(Das heißt, ein
Block, der unabhängig
behandelt werden soll, sollte nicht auf Informationen aus einem
vorangehenden oder nachfolgenden Block basieren.)
-
Eine
Lösung,
die die bekannte Technik verwendet, ist einfach das Einsetzen von
Nullen für
die Koeffizienten (die Summenwerte) in diesen Situationen, wenn
Datenwerte nicht bekannt sind. Leider bringt diese Praxis Diskontinuitäten in dem
Bild zwischen Blöcken
ein, und Blockierungsartefakte treten auf, wie in 2 gezeigt
ist. Die Artefakte treten hauptsächlich
aufgrund von Nullwerten auf, die für einige Werte bei der Berechnung
der anfänglichen
und der abschließenden
gehobenen Werte in dem 2-6-Biorthogonalfilter eingefügt werden.
Daher wäre
es wünschenswert,
wenn eine Technik und eine Vorrichtung, die nicht nur in der Lage
wären,
Blöcke
unabhängig
zu verarbeiten, Speicher und Komplexität reduzieren, aber auch Geisterbilder,
Schatten und andere Blockbildungsartefakte an Blockgrenzen entfernen
würden.
-
Es
besteht eine dritte Schwierigkeit, die dem Verarbeiten eines Videosignals
zugeordnet ist, das sich auf einen Farbträger bezieht. Eine Farbdrehung von
Farbinformationen in einem Videosignal erfordert üblicherweise
intensive Berechnungen. Eine Farbdrehung ist häufig erforderlich, um ein Farbsignal
von einem Koordinatensystem (oder Farbraum) zu einem anderen zu
transformieren. Übliche
Koordinatensysteme sind RGB (für
Fernsehmonitore), YIQ (für
NTSC-Fernsehen)
und YUV (für
Komponentenvideo und S-Video). Zum Beispiel, für ein Bild, das in dem YUV-System
vorliegt (wie bei vielen Zeichenprogrammen), muss eine komplexe
Matrixmultiplikation durchgeführt
werden, um das Bild in das RGB-System
für eine
Präsentation
auf einem Fernsehmonitor zu setzen. Eine solche Matrixmultiplikation
erfordert intensive Berechnungen und größere Vorrichtungen. Zum Beispiel
erfordern einige Farbdrehungen mehr Berechnung als der gesamte Rest
eines Komprimierungsalgorithmus, und häufig wird eine separate Halbleitervorrichtung
verwendet, nur um die Farbdrehung auszuführen. Somit sind bekannte Farbdrehungstechniken
relativ langsam und kostspielig.
-
19 und 20 zeigen
ein Beispiel einer bekannten Farbdrehungstechnik. 19 stellt
Rahmenabschnitte 12a und 12b dar, die jeweils
Y-Farbinformationen und U-Farbinformationen des Rahmens 12 darstellen.
Bei diesem Beispiel wird der Rahmen 12 in YUV-Farbkoordinaten
dargestellt, die bei Komponentenvideo üblich sind (Y oder Luminanzinformationen,
nicht gezeigt). Pixelwerte a(U) 752 und a(V) 754 stellen
Pixel in entsprechenden Positionen von Rahmen 12a bzw. 12b dar.
-
20 stellt
eine bekannte Technik 760 für eine Farbdrehung von Informationen
in dem Rahmen 12 in ein unterschiedliches Farbkoordinatensystem dar.
Jedes Paar aus entsprechenden Pixelwerten 764 (ein Zweieintragsvektor)
aus den Rahmenabschnitten 12a und 12b wird multipliziert
mit einer Drehmatrix R 762, um Werte 766 in dem
neuen Koordinatensystem zu erzeugen. Neue Werte 766 stellen
dieselben Farben dar wie die Werte 764, aber unter Verwendung
des unterschiedlichen Koordinatensystems. Drehmatrizen R weisen
bekannte Werte zum Umwandeln von einem Koordinatensystem in das
andere auf und sind 2×2-Matrizen
zum Umwandeln in YIQ oder YUV. Die Umwandlung in RGB erfordert eine
3×3-Drehmatrix (eine
dreidimensionale Drehung). Somit erfordert eine Farbdrehung entweder
zwei oder drei Multiplikationen pro Element (pro Pixel) eines Rahmens.
Die bloße
Anzahl dieser Multiplikationen macht die Farbdrehung langsam und teuer.
Ferner können
die Pixelkoeffizienten relativ groß sein, was die Berechnungen
weiter intensiviert. Es wäre
daher wünschenswert,
in der Lage zu sein, eine Farbdrehung an einem Signal auszuführen, ohne
die vorangehenden Mengen von Verarbeitungsleistung und die benötigten Vorrichtungsgrößen zu erfordern.
-
Eine
vierte Schwierigkeit bei der bekannten Technik existiert im Hinblick
auf das Komprimieren von zusammengesetzten Video- und S-Video-Signalen,
d. h. Signalen, die Farben und/oder Intensität kombinieren. In den frühen Tagen
des Fernsehens wurde entdeckt, dass das Frequenzspektrum eines Schwarz-und-Weiß-Videosignals
eine große
Anzahl von nicht besetzten Regionen oder „Löchern" aufwies. Basierend auf dieser Entdeckung
wurde bestimmt, dass ein Farbträger
von ungefähr
3,6 MHz zu dem Schwarz-und-Weiß-
(Intensitäts-)
Signal hinzugefügt
werden könnte,
der diese nicht besetzten Regionen in dem Frequenzspektrum des Schwarz-und-Weiß-Signals „ausfüllen" würde. Somit könnten Schwarz-und-Weiß-Signalinformationen
zu einem Farbträger
hinzugefügt
werden, um ein zusammengesetztes Videosignal zu erzeugen, das hauptsächlich Farb-
und Schwarz-und-Weiß-Informationen
davon abhielte, sich gegenseitig zu stören. Ein solches zusammengesetztes
Videosignal 82 und ein Schwarz-und-Weiß-Signal 88 ist in 3 gezeigt. Üblicherweise
wird das Farbträgersignal
moduliert durch Aufspalten desselben in zwei Phasen 84 und 86 (unter
Verwendung einer Quadraturmodulation), die 90° phasenversetzt zueinander sind.
Jede Phase trägt
eine Farbe für
das Farbsignal. Jede Phase wird dann amplitudenmoduliert, wobei
die Amplitude jeder Phase die Amplitude ihrer bestimmten Farbe anzeigt. Das
Kombinieren der Signale 84, 86 und 88 erzeugt das
zusammengesetzte Signal 82. Unter Verwendung bekannter
Techniken kann die Kombination der zwei Farbsignale aus jeder Phase
des Farbträgers mit
dem Schwarz-und-Weiß-
(Intensitäts-)
Signal kombiniert werden, um die dritte Farbe zu liefern. Zusätzlich dazu,
da das menschliche Auge eine Hochfrequenzfarbe nicht erfassen kann,
ist der Farbträger häufig bandbegrenzt,
was bedeutet, dass sich seine Frequenz nicht bedeutend ändert.
-
Es
ist ebenfalls üblich,
ein zusammengesetztes Videosignal bei viermal der Farbträgerfrequenz abzutasten,
häufig
um eine 14,3-MHz-Abtastrate. Das Signal 82 zeigt Abtastpunkte 90 – 96,
die eine viermalige Abtastrate für
das Farbträgersignal
darstellen. Eine solche Abtastrate ermöglicht, dass sowohl der Träger als
auch seine zwei Phasen erfasst und gemessen werden; somit können die
zwei Phasen des Farbträgers
herausgetrennt werden.
-
Bekannte
Techniken haben es als schwierig befunden, ein solches zusammengesetztes
Videosignal 82 direkt zu komprimieren. Die meisten bekannten
Techniken trennen die Farbsignale aus dem Schwarz-und-Weiß-Signal
vor der Komprimierung heraus. Somit müssen die Signale 84, 86 und 88 aus dem
zusammengesetzten Signal 82 herausgetrennt werden, bevor
eine Komprimierung des zusammengesetzten Signals beginnen kann.
Diese Farbtrennung ist teuer und zeitaufwendig. Es werden nicht
nur üblicherweise
drei unterschiedliche Algorithmen benötigt, sondern eine zusätzliche
Hardware kann erforderlich sein. Eine Komprimierung in Hardware
wird häufig
komplexer und kostspieliger gemacht, aufgrund des zusammengesetzten
Signals. Eine bekannte Technik trennt das Farbsignal analog heraus, durch
Verwenden von passiven Komponenten außerhalb des Chips, der die
Komprimierung ausführt. Die
drei unterschiedlichen Signale werden dann getrennt in den Komprimierungschip
zugeführt,
was die Komplexität
erhöht.
Alternativ kann eine Trennung des Farbsignals auf dem Chip durchgeführt werden, aber
dies erfordert extrem große
Multiplizierer, die die Größe des Chips
bedeutend erhöhen.
-
Daher
wäre es
wünschenswert,
wenn eine Technik eine Komprimierung eines zusammengesetzten Videosignals
direkt handhaben könnte,
ohne den Bedarf nach einer vorangehenden Trennung der Signale oder
nach einer zusätzlichen
Hardware. Es könnte
besonders wünschenswert
sein, dass eine solche Technik auf einer integrierten Schaltung
implementiert ist, ohne den Bedarf nach einer chipinternen Trennung
oder nach großen
Multiplizierern auf dem Chip. Eine solche Technik wäre ebenfalls
wünschenswert
für S-Video
und Komponenten-Video.
Im allgemeinen könnte
jedes kombinierte Videosignal, das Schwarz-und-Weiß- und Farb-Informationen
umfasst, das während
einer Komprimierung getrennt werden muss, von einer solchen Technik
profitieren.
-
Die
Handhabung der unterschiedlichen Typen von Video bei der Komprimierung
ist ein fünfter Bereich
in der bekannten Technik, der ebenfalls von verbesserten Techniken
profitieren könnte.
Es gibt drei Hauptvideotypen: zusammengesetztes Video; S-Video;
und Komponentenvideo. Ein zusammengesetztes Video ist ein einzelnes
Signal, das das Schwarz/Weiß-Signal
mit einem Farbträger
umfasst. Moduliert auf den Farbträger sind zwei Chrominanzsignale.
S-Video ist ein Kompromiss zwischen zusammengesetztem Video und
Komponentenvideo. S-Video
hat zwei Signale, ein Y-Signal für Schwarz-und-Weiß-Informationen und
ein einzelnes Chrominanzsignal. Das einzelne Chrominanzsignal besteht
aus einem Farbträger
mit U- und V-Farbsignalen, moduliert auf den Farbträger. Das
Komponentenvideo enthält
drei separate Signale. Ein Y-Signal für Schwarz-und-Weiß-Informationen,
ein U-Signal für
Chrominanz-1-Informationen und ein V-Signal für Chrominanz-2-Informationen.
Wenn eine Komprimierung eines Videosignals an einer integrierten
Schaltung in der bekannten Technik durchgeführt wird, wird die Identifikation
von einem der drei Typen von Videosignalen und das Vorverarbeiten
dieses Signals chipextern durchgeführt. Bekannte Techniken müssen jedoch
noch einen effizienten Komprimierungsalgorithmus auf einem einzelnen
Chip konstruieren, der in der Lage ist, jeden der drei Typen von
Video auf dem Chip selbst zu identifizieren und zu handhaben.
-
Die
EP 0 622 961 A2 beschreibt
ein Verfahren und eine Vorrichtung zum Codieren/Decodieren von Bildsignalen.
Die Komprimierbarkeit und die visuelle Bildqualität des Bildmusters,
dessen Zwischenfeldkorrektion der Hochfrequenz abnimmt und Zwischenfeldkorrelation
der Niederfrequenz bleibt, werden durch langsame Bewegungen verbessert. Die
separate Codierung der Zwischenfeldkomponenten wird in jedem Feld
an einem ersten und einem zweiten Feld des Bildsignals durchgeführt und
durch ein Verhindern der Wirkung der Zwischenfeldbewegung im Vorhinein
wird das Abfallen der Komprimierbarkeit durch die Bewegung vermieden
und ferner werden neue Blöcke
aufgebaut durch das Ergebnis und die Niederfrequenzkomponenten der
zwei Felder. Da die separate Komponentencodierung in dem Rahmen
durchgeführt
wird, können
die Niederfrequenzkomponenten, die nicht ohne weiteres durch die
langsame Bewegung beeinträchtigt
werden, effizient codiert werden, und als ein Ergebnis kann die Komprimierbarkeit
für ein
Bild, das langsame Bewegungen enthält, erhöht werden.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren
und eine verbesserte integrierte Schaltung zu liefern, die eine
effiziente Komprimierung von Videosignalen liefern.
-
Diese
Aufgabe wird erreicht durch ein Verfahren gemäß Anspruch 1 und durch eine
integrierte Schaltung gemäß Anspruch
17.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren und
eine integrierte Schaltung zum Dekomprimieren von Signalen geschaffen,
die gemäß der vorliegenden
Erfindung komprimiert wurden.
-
Ein
erstes Ausführungsbeispiel
der vorliegenden Erfindung verwendet eine temporäre Komprimierung von Abschnitten
eines Bildes während
der Gesamtkomprimierung der kompletten Sequenzen von Bildern, um
die Menge der benötigten
temporären
Speicherung zu reduzieren. Insbesondere reduziert dieses Ausführungsbeispiel
die temporäre
Speicherung um einen Faktor von 10, die für eine Videokomprimierung benötigt wird,
die auf einer Zwischenfeld- und Zwischenrahmen-Transformation basiert. Bei einer spezifischen
Implementierung dieses Ausführungsbeispiels
werden eingehende Bilddaten verarbeitet und Block für Block
komprimiert und in eine temporäre
Speicherung platziert und dann für
einen Vergleich mit nachfolgenden Blöcken dekomprimiert, vor der
schließlichen
endgültigen
Komprimierung der Informationen. Eine temporäre Block-für-Block-Komprimierung und die
temporäre
Komprimierung dieser Blöcke
(zwischen Rahmen z. B.) ermöglicht
nicht nur eine Reduzierung bei der benötigten temporären Speicherung,
sondern zieht ferner einen Vorteil aus der Beziehung zwischen zugeordneten
Blöcken
eines Bildes, um ein besseres Bild zu erzeugen, wenn die Informationen
schließlich
dekomprimiert werden. Das Ziehen eines Vorteils aus einem temporären Vergleich
mit nachfolgenden Blöcken
vor der schließlichen
abschließenden
Komprimierung der Informationen. Eine temporäre Block-für-Block-Komprimierung und die temporäre Komprimierung
dieser Blöcke
(z. B. zwischen Rahmen) ermöglicht
nicht nur eine Reduzierung der benötigten temporären Speicherung, sondern
zieht ferner einen Vorteil aus der Beziehung zwischen zugeordneten
Blöcken
eines Bildes, um ein besseres Bild zu erzeugen, wenn die Informationen abschließend dekomprimiert
werden. Das Ziehen eines Vorteils aus der temporären Komprimierung erzeugt ferner
ein höheres
Komprimierungsverhältnis. Insbesondere
ist diese Technik besonders nützlich für einen
Codec, der auf einer integrierten Schaltung implementiert ist, wie
z. B. wo weniger temporäre Auf-dem-Chip-Speicherung benötigt wird,
und der Chip kleiner und schneller gemacht werden kann. Eine Implementierung
eines solchen leistungsstarken Codec auf einer relativ kleinen und
kos tengünstigen
integrierten Schaltung liefert eine effiziente und hochqualitative
Videokomprimierung in einer kleinen Vorrichtung, wie z. B. einer
Kamera oder einem anderen Verbraucherartikel.
-
Kurz
gesagt komprimiert dieses erste Ausführungsbeispiel Daten Block
für Block
vor einem Vergleichen von einem Block eines ersten Bildes mit seinem
entsprechenden Block in dem nächsten nachfolgenden
Bild unter Verwendung einer Haar-Transformation.
Der resultierende Block kann dann codiert und ausgegeben werden,
in einer komprimierteren Form. Bekannte Techniken verwenden den
Vorteil nicht, einen Block temporär zu komprimieren und ihn zu
speichern, während
darauf gewartet wird, dass sein entsprechender Block eingegeben wird.
Zum Beispiel werden bei einer JPEG- und Bewegungs-JPEG-Komprimierung
Videobilder allgemein Block für
Block verarbeitet und Blöcke
werden in komprimierter Form ausgegeben. Es besteht keine Absicht
des temporären
Speicherns von komprimierten Blöcken,
um Blöcke
eines vorangehenden Bildes mit entsprechenden Blöcken eines nachfolgenden Bildes
zu vergleichen. Andere Komprimierungsalgorithmen, wie z. B. jene,
die bei MPEG verwendet werden, speichern temporär Blöcke, um einen Block eines Rahmens
mit seinem entsprechenden Block in einem späteren Rahmen zu vergleichen.
Die Speicherung dieser Blöcke
auf einer integrierten Schaltung (oder einer anderen Vorrichtung)
erfordert jedoch eine extreme Speichermenge, die die Vorrichtung
unnötig
groß macht
und eine Hemmung darstellt, einen Vergleich von entsprechenden Blöcken durchzuführen. Vorteilhafterweise
speichert die vorliegende Erfindung Blöcke in einer komprimierten Form
zum Vergleich mit entsprechenden Blöcken eines späteren Bildes.
Weit weniger Speicher wird auf der Vorrichtung benötigt, um
diese komprimierten Blöcke
zu speichern. Ferner wird weniger Speicherbandbreite zum Übertragen
dieser komprimierten Blöcke
zwischen einem Speicher und einer Verarbeitungseinheit benötigt.
-
Bei
einem spezifischen Ausführungsbeispiel wird
ein Block übertragen,
quantisiert und codiert, vor einer temporären Speicherung in einer äußerst komprimierten
Form. Später,
wenn ein entsprechender Block aus einem späteren Rahmen ankommt, wird der
entsprechende Block auf ähnliche
Weise komprimiert und gespeichert. Als nächstes werden beide Blöcke zurück in den
Transformationsbereich decodiert. Vorteilhafterweise ist es nicht
notwendig, die Rückwärtstransformation
an den gespeicherten Blöcken
nach dem Decodieren derselben auszuführen. Die zwei Blöcke können in
dem Transformationsbereich verglichen werden. Sobald die zwei Blöcke verglichen
wurden, wird das Ergebnis codiert und als ein serieller Bitstrom
in einer wesentlich komprimierten Form ausgegeben.
-
Dieses
Ausführungsbeispiel
reduziert bedeutend die Ressourcen, die in Hardware oder Software
für eine
Zwischenrahmen- oder
Zwischenfeld-Videokomprimierung erforderlich sind. Die Erfindung
ermöglicht
den vorteilhaften Vergleich von Rahmen oder Feldern, aber macht
den Bedarf für
eine temporäre
Speicherung eines vollständigen
Rahmens oder Feldes offensichtlich. Genauer gesagt umfassen die
erreichten Vorteile: weniger erforderliche temporäre Speicherung
(wie z. B. weniger RAM auf einer ASIC); geringere Speicherbandbreitenanforderungen
zwischen temporärer
Speicherung (weniger Stifte an einer Vorrichtung und/oder schnellerer Durchsatz);
reduzierte Berechnungen, die für
Zwischenrahmen- oder
Zwischenfeld-Vergleiche benötigt
werden; Nutzen mit vielen Komprimierungsschemata, wie z. B. JPEG,
MPEG, H.263 und ähnlichem, Wavelet-Komprimierungsschemata
etc.; können
mit einer Transformation verwendet werden; und können mit einer Vielzahl von
Standards verwendet werden, wie z. B. einer progressiven Abtastung
und einer Zwischenzeilenabtastung. Ferner kann das Codieren von
Blöcken
unter Verwendung von einer aus einer breiten Vielzahl von Techniken
durchgeführt
werden.
-
Ein
weiterer wichtiger Vorteil gegenüber
bekannten Komprimierungsvorrichtungen ist, dass intensive Operationen,
wie z. B. Bewegungskompensation bei MPEG, nicht durchgeführt werden.
Im Gegensatz zu bekannten Vorrichtungen, wie z. B. dem ADV601, der
von Analog Devices, Inc., verfügbar
ist, die Multiplizierer erfordern, verwendet die vorliegende Erfindung
Verschiebung und Addierung für
Berechnungen. Das Ergebnis ist eine schnellere Technik und weniger
erforderlicher Raum. Ferner sind bekannte MPEG-Komprimierungsvorrichtungen,
die eine intensive Bewegungskompensation ausführen, viel komplexer und teurer
(auf Geld bezogen) als ihre entsprechenden Dekomprimierungsvorrichtungen. Im
Gegensatz dazu weisen Komprimierung und Dekomprimierung bei der
vorliegenden Erfindung ähnliche
Komplexitäten
auf; eine Komprimierungsvorrichtung gemäß der vorliegenden Erfindung
ist relativ gesehen weniger komplex und weniger teuer als eine MPEG-Komprimierungsvorrichtung.
-
Wie
oben erwähnt
wurde, ist ein wichtiger Vorteil, dass frühere Rahmen (oder Felder oder
Blöcke),
die als Prädiktoren
verwendet wurden, fast vollständig
in komprimierter Form während
des gesamten Prozesses gehalten werden können, wodurch RAM-Anforderungen
bedeutend reduziert werden. Dies ist besonders vorteilhaft für eine Implementierung
auf einer integrierten Schaltung, wie z. B. einer ASIC, wo ein Speicherungsbereich
von einer Hälfte bis
zu zwei Drittel des Gesamtbereichs des Chips sein kann. Zum Beispiel,
für Zwischenfeldvergleiche, wird
nur ein komprimierter Feldpuffer von ungefähr 20 Kbyte pro Feld benötigt. Auf
diese Weise können Rahmenpuffer
bedeutend reduziert oder vollständig vermieden
werden. Bilder können
aus den komprimierten Daten und der Differenzierung rekonstruiert werden,
die an diesen Daten ausgeführt
wird. Da die Hardware zum Decodieren relativ kostengünstig ist, kann
der Datenwert von vier oder fünf
Rahmen gleichzeitig decodiert werden. Bei einem alternativen Ausführungsbeispiel
ist eine Differenzierung nicht erforderlich. Eine XOR-Funktion funktioniert
genauso gut ohne Überträge oder
Borgen. Hauptsächlich
sind die Zeichen aus dem Differenzierungs- (oder XOR-) Feld Null.
Ein Nullbaum kann dann verwendet werden, um diese zusätzliche
Möglichkeit
zwischenzuspeichern. Da XORs umkehrbare Berechnungen sind, ist der
einzige Grund, um zu einem vollständig unvorhergesagten Zwischenrahmen
zurückzukehren,
nur zum Editieren für
eine Fehlerwiedergewinnung.
-
Normalerweise
ist die Verzögerung
während einer
Komprimierung nur der Datenwert von einem Streifen, wenn genug Bandbreite
vorliegt, um den Ratenstreifen aufgrund einer Zwischencodierung
beizubehalten. Wenn niedrigere Raten erwünscht sind, kann die Information über mehrere
Felder ausgebreitet werden, was zweimal (einschließlich Codieren und
Decodieren) so viele Felder ergibt wie die Verzögerung. Es ist üblicherweise
eine Ratenspitze an einem Zwischenrahmen. Bei relativ langen Vorhersagedurchläufen kann
jedoch ein Bild ohne weiteres über
einige Felder oder Rahmen aufgebaut werden. An dem vorhergesagten
Feld werden die höheren Wavelets
durch Null vorhergesagt, so dass die „Korrektur" das tatsächliche Wavelet ist. Dies erreicht eine
sehr niedrige Rate mit wenigen Verzögerungsrahmen und einigen Rahmen
einer Übergangszeit
an einem Schnittpunkt.
-
Ein
zusätzlicher
Vorteil ist, dass Standbilder (wie z. B. während einer Pause), die komprimiert
und dekomprimiert wurden, dieselbe Qualität aufweisen wie laufende Bilder.
Bekannte Techniken, wie z. B. MPEG, die eine Bewegungskompensation
durchführen,
arbeiten über
eine Anzahl von Rahmen, wodurch laufende Bilder eine gute Qualität aufweisen,
aber ein Standbild viel Rauschen haben kann. Im Gegensatz dazu führt die
vorliegende Erfindung eine Komprimierung unter Verwendung von zwei
Rahmen oder mehr gleichzeitig durch (entweder mit Zwischenfeld-
oder Zwischenrahmen-Vergleichen),
und Standbilder, die komprimiert wurden, weisen eine viel höhere Qualität auf. Zusätzlich dazu
bedeutet eine solche lokale Komprimierung, die nicht von einer Bewegungskompensation
und einer Vorhersage zwischen zahlreichen Rahmen abhängt, dass
weniger temporäre Speiche rung
durch die Technik benötigt
wird oder innerhalb einer integrierten Schaltung, die dieselbe implementiert.
-
Bei
einem zweiten Ausführungsbeispiel
der vorliegenden Erfindung wird ein Verfahren einer Farbdrehung
mit einer Komprimierung integriert, die viel weniger Berechnung
verwendet. Vorteilhafterweise wird eine Farbdrehung an den Chrominanztransformationspyramiden
durchgeführt,
nach einer Transformation des Videosignals und nicht dem Durchführen einer
Drehung an dem rohen Signal selbst. Viel weniger Berechnungen werden
benötigt, um
die Farbdrehung auszuführen.
Bei einem spezifischen Ausführungsbeispiel
wird eine Farbdrehung nicht nur nach der Transformation des Signals,
sondern auch nach einer Komprimierung durchgeführt. Eine Farbdrehung kann
unter Verwendung einer seriellen Multiplikation (Verschieben und
Addieren) durchgeführt
werden, für
eine effizientere Verarbeitung, und nicht an großen Koeffizienten unter Verwendung
einer parallelen Multiplikation.
-
Eine
Farbdrehung ist ebenfalls nützlich
im Hinblick auf Farbträgerdrift. Üblicherweise
driftet der Farbträger
langsam im Hinblick auf die horizontalen Abtastlinien. Wenn er einen
halben Zyklus (180°)
außerhalb
der Synchronisierung ist, kehrt er die zwei Farbquadraturen um,
was dazu führt,
dass ein Farbnegativbild erzeugt wird. Bekannte Techniken beheben
dieses Driften ebenfalls durch Durchführen einer Farbdrehung. Eine
Korrektur einer Trägerdrift
durch Drehung profitiert ebenfalls von den wenigeren Berechnungen,
die bei diesem Ausführungsbeispiel
benötigt
werden.
-
Bei
einem dritten Ausführungsbeispiel
der vorliegenden Erfindung kann ein zusammengesetztes Videosignal,
das sowohl Farb- als auch Schwarz-und-Weiß-Informationen umfasst, direkt komprimiert
werden, ohne ein Heraustrennen der Farbinformationen aus dem Schwarz
und Weiß zu benötigen. Ein
effizienter Komprimierungsalgorithmus wird direkt an dem zusammengesetzten
Videosignal verwendet, ohne den Bedarf nach zusätzlichen analogen chipexternen
Vorrichtungen zum Heraustrennen von Farbe oder den Bedarf nach großen Multiplizierern
auf dem Chip, um Farbe herauszutrennen. Insbesondere wird eine Anzahl
von Durchläufen
verwendet, um zu ermöglichen,
dass das zusammengesetzte Videosignal direkt komprimiert wird. Eine
Demodulation des Farbträgers
unter Verwendung einer Teilbandtrennung wird bei verschiedenen der
Durchläufe
durchgeführt,
um die Farbträgerinformationen
herauszutrennen. Die Teilbandtrennung isoliert ferner die Luminanz-
und Chrominanz-Informationen aus dem zusammengesetzten Videosignal.
Dieses Ausführungsbeispiel
ist an ein kombiniertes Videosignal anwendbar (wie z. B. S-Video), das Farbinformationen
und/oder Schwarz und Weiß kombiniert.
-
Bei
einem vierten Ausführungsbeispiel
ist die vorliegende Erfindung in der Lage, Informationsblöcke unabhängig zu
behandeln, was die Komplexität der
Komprimierung bedeutend reduziert und die Hardwaremenge reduziert,
die benötigt
wird. Blöcke können unabhängig aus
einer Streifenspeicherung gelesen werden und dann transformiert,
quantisiert und codiert werden, vor einem Vergleich mit entsprechenden
Blöcken
aus anderen Rahmen oder Feldern. Vorteilhafterweise beeinträchtigt diese
unabhängige
Behandlung von Blöcken
nicht die Qualität eines
dekomprimierten Bildes. Blockbildungsartefakte, wie z. B. Geisterbilder
oder Schatten, werden bedeutend reduziert. Dieses Ausführungsbeispiel
zieht einen Vorteil aus der Korrelation zwischen naheliegenden Blöcken eines
Feldes und zwischen entsprechenden Blöcken aufeinander folgender
Felder.
-
Bei
einer spezifischen Implementierung dieses Ausführungsbeispiels wird eine quadratische Zwei-Grad-Näherung durch
Kantenpunkte an einem Block gezogen und es wird angenommen, über Blockgrenzen
fortzufahren. Wenn ein 2-6-Biorthogonalfilter verwendet wird, um
Blockinformationen in aufeinander folgenden Durchläufen zu
filtern, wird das 2-6-Filter modifiziert (ein „Grenz"-Filter), durch Liefern spezifi scher
numerischer Werte für
die anfänglichen
und abschließenden
gehobenen Differenzen (w0 und wn-1)
anstelle des einfachen Zuordnens von Nullwerten für ihre Koeffizienten,
wie es in der bekannten Technik gemacht wird. Das Zuweisen spezifischer
numerischer Werte für
die gehobenen Differenzwerte an den Blockgrenzen ermöglicht, dass
jeder Block unabhängig
behandelt wird, wobei trotzdem Blockbildungsartefakte reduziert
werden, die normalerweise auftreten würden, wenn ein Bild dekomprimiert
wird. Bei einer spezifischeren Implementierung eines modifizierten
2-6-Filters hat sich herausgestellt, dass Koeffizienten von -3/8,
1/2 und -1/8 gut für
die anfänglich
gehobene Differenz w0 funktionieren. Anders
ausgedrückt,
w0 = d0 – 3/8s0 + 1/2s1 – 1/8s2. Die Koeffizienten von 1/8, -1/2 und 3/8 funktionieren
gut für
den abschließenden
gehobenen Differenzwert wn-1; d. h. wn-1 = dn-1 + 1/8sn-3 – 1/2sn-2 + 3/8sn-1. Es
hat sich herausgestellt, dass andere spezifische Koeffizienten erwünschte Ergebnisse
auch für
unterschiedliche Typen von Wavelet-Filtern erzeugen.
-
Das
Grenzfilter dieses vierten Ausführungsbeispiels
kann bei einem dieser Durchläufe
verwendet werden, die verwendet werden, um die Videodaten zu transformieren,
und ist besonders nützlich
bei früheren
Durchläufen.
Für ein
Bild, das angemessen glatt in einem quadratischen Sinn ist, sind
viele der gehobenen Differenzwerte (der „w"-Werte) Null, und die relevanten Daten
liegen in den Summenwerten. Die Daten werden somit hoch in die Summenwerte „gequetscht" und weniger temporäre Speicherung wird
benötigt
und eine bessere Komprimierung erfolgt, da die vielen Nullwerte
während
der Codierung reduziert werden können.
-
Die
vorliegende Erfindung ist in der Lage, jeden der drei Haupttypen
von Video zu handhaben: zusammengesetztes Video; S-Video; und Komponentenvideo.
Anfänglich
wird der Typ des Videosignals durch einen Benutzer an der Vorrichtung
identifiziert, die die Erfindung implementiert, und ein Modus wird
eingestellt, um diesen Typ von Signal korrekt zu verarbeiten. Vorteilhafterweise
ist die Ausgabe aus dem horizontalen Filter die gleiche, egal welcher
Typ von Videosignal verwendet wird. Die gesamte Identifizierung
und Verarbeitung des Videosignals kann an einer einzelnen integrierten
Schaltung und einer zusätzlichen
chipexternen Hardware für eine
Identifikation durchgeführt
werden, und eine Vorverarbeitung der unterschiedlichen Typen von
Videosignalen ist nicht erforderlich.
-
Die
vorliegende Erfindung ist nützlich
mit einer Vielzahl von Typen von Bildern, wie z. B. jenen, die für Computermonitore,
Fernseher, Kameras, handgehaltene Vorrichtungen etc. vorgesehen
sind, und ist anwendbar an eine breite Vielzahl von Standards, wie
z. B. NTSC-Video, PAL und SECAM-Fernsehen etc.
-
Ausführungsbeispiele
der vorliegenden Erfindung sind insbesondere vorteilhaft bei Niedrigbitraten-Videoanwendungen
(wie z. B. in der Verbrauchertechnik), wo die Bandbreite für eine Übertragung von
komprimierten Bildern reduziert ist. Zum Beispiel werden Farbbilder üblicherweise
durch 24 Bits/Pixel dargestellt, was einer Bitrate von ungefähr 264 Mbit/Sekunde
entspricht. Die vorliegende Erfindung ist in der Lage, Farbbilder
bis hinunter zu 1/4 Bit/Pixel und kleiner zu komprimieren, während trotzdem
eine gute Qualität
erreicht wird. 1/4-Bit/Pixel-Komprimierung entspricht einer Bitrate
von ungefähr
3 Mbits/Sekunde. Somit ist die niedrigere Bitrate leichter kompatibel
mit reduzierten Bandbreitenanwendungen, wo komprimierte Bilddaten
möglicherweise
eine Bandbreite mit anderen Daten gemeinschaftlich verwenden müssen, wie
z. B. Audio und Text.
-
Kurze Beschreibung
der Zeichnungen
-
Die
Erfindung zusammen mit weiteren Vorteilen derselben ist am besten
verständlich
durch Bezugnahme auf die nachfolgen de Beschreibung in Verbindung
mit den beiliegenden Zeichnungen, in denen:
-
1 ein
bekanntes Bilddarstellungsschema darstellt, das Pixel, Abtastlinien,
Streifen und Blöcke
verwendet.
-
2 ein
bekanntes Bild darstellt, das Block für Block komprimiert wurde und
dann dekomprimiert und für
eine Betrachtung präsentiert
wurde.
-
3 bekannte
Intensitäts-
und Chrominanzsignale darstellt, die kombiniert werden, um ein zusammengesetztes
Videosignal zu bilden.
-
4 ein
System darstellt zum Komprimieren eines Videobildes gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung.
-
5A bis 5C ein
Flussdiagramm sind, das ein Ausführungsbei
spiel für
eine Komprimierung von Bildern beschreibt.
-
6 symbolisch
eine Ansicht auf hoher Ebene von Durchlauf 1 des horizontalen Filters
darstellt.
-
7 Stufe
1 des horizontalen Filters darstellt, angewendet an eine Abtastlinie.
-
8 ein
Beispiel der Abtastlinie aus 7 nach Stufe
1 ist.
-
9 Stufe
1 und 2 des horizontalen Filters darstellt, angewendet an eine Abtastlinie.
-
10 ein
Beispiel der Abtastlinie aus 9 ist nach
den Stufen 1 und 2 des horizontalen Filters.
-
11A ein spezifisches Ausführungsbeispiel der ersten Stufe
des horizontalen Filters darstellt.
-
11B Koeffizienten für die Kombinationseinheit aus 11A gemäß einem
spezifischen Ausführungsbeispiel
der Erfindung darstellt.
-
12 einen
Streifen in der Streifenspeicherung darstellt, nachdem das horizontale
Filter eine Anzahl von Abtastlinien verarbeitet hat.
-
13 einen
Block darstellt nach Durchlauf 2 des vertikalen Filterns.
-
14 einen
Block darstellt nach Durchlauf 3 des vertikalen Filterns.
-
15 einen
Block darstellt nach Durchlauf 4 des vertikalen Filterns.
-
16 einen
Block darstellt nach Durchlauf 5 des vertikalen Filterns.
-
17 das
allgemeine Konzept hinter einer Haar-Transformation darstellt.
-
18 eine
Zwischenfeld-Haar-Einheit darstellt, zum Durchführen einer modifizierten Haar-Transformation,
nachdem zwei entsprechende Blöcke
von einer Feldblockspeicherung empfangen wurden.
-
19 Rahmenabschnitte
darstellt, die Y-Farbinformationen und U-Farbinformationen eines Rahmens
darstellen.
-
20 eine
bekannte Technik darstellt für eine
Farbdrehung von Rahmenfarbinformationen in ein unterschiedliches
Farbkoordinatensystem.
-
21 eine
Farbdreheinheit darstellt zum Durchführen einer Farbdrehung in Verbindung
mit einem spezifischen Ausführungsbeispiel
der Erfindung.
-
22 ein
Flussdiagramm ist zum De komprimieren eines komprimierten Bitstroms,
der dem spezifischen Komprimierungsausführungsbeispiel aus5A – 5C entspricht.
-
23 ein
Blockdiagramm eines typischen Computersystems ist, das zum Implementieren
eines Ausführungsbeispiels
der vorliegenden Erfindung geeignet ist.
-
Detaillierte
Beschreibung der Erfindung
-
Die
verschiedenen Ausführungsbeispiele
der vorliegenden Erfindung sind geeignet für eine Implementierung unabhängig oder
in Kombination in einer breiten Vielzahl von Formen. Beispielsweise
ist die vorliegende Erfindung geeignet für eine Implementierung in Software,
wie z. B. in C++ oder einer anderen geeigneten Computersprache.
Die Beschreibung unten ist optimiert für eine eventuelle Hardwareimplementierung
(z. B. werden Multiplizierer, wo möglich, vermieden), obwohl andere
Softwareimplementierungen möglich
sind.
-
Die
vorliegende Erfindung kann ebenfalls in Hardware in standardmäßigen integrierten
Schaltungen implementiert sein, in kundenspezifischen integrierten
Schaltungen, wie z. B. ASICs, oder in einer programmierbaren Logikvorrichtung,
wie z. B. einer FPGA, einer PAL oder einer PLA. Bei einer spezifischen
Implementierung der vorliegenden Erfindung wird eine Implementierung
an einer Xylinx-FPGA verwendet, um einen VHDL-Code zu entwickeln.
Dieser VHDL-Code (oder genauer gesagt ein Makro) kann dann mit einem
anderen VHDL-Code kombiniert werden, um eine kundenspezifische integrierte
Schaltung zu erzeugen, die nützlich
für eine Platzierung
in ein Produkt ist, wie z. B. eine Videokamera. Eine solche Implementierung
an einer kundenspezifischen integrierten Schaltung ermöglicht eine
gute Komprimierung an einem relativ kleinen Siliziumbereich. Es sollte
darauf hingewiesen werden, dass die vorliegende Erfindung ebenfalls
in einer breiten Vielzahl von anderen Hardwarebeschreibungssprachen
verkörpert
sein kann.
-
Ferner
werden die Ausführungsbeispiele,
die nachfolgend beschrieben werden, im Hinblick auf ein zusammengesetztes
Videosignal beschrieben, obwohl Aspekte der Erfindung ebenfalls
an andere kombinierte Signale anwendbar sind, wie z. B. S-Video,
und an separate Signale, wie z. B. Komponentenvideo. Ferner, obwohl
der Ausdruck „Video" häufig verwendet
wird, sollte darauf hingewiesen werden, dass die vorliegende Erfindung
an Standbilder sowie Videobilder anwendbar ist, und ebenfalls an
Informationsströme
höherer
Dimension anwendbar ist. Der Ausdruck „Video", wie er hierin verwendet wird, gilt nicht
nur für
traditionelle Videoinformationen, sondern ferner für diese
anderen Typen von Bildern und Informationen.
-
BLOCKDIAGRAMM
AUF HOHER EBENE
-
4 stellt
ein System 100 zum Komprimieren eines Videobildes gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung dar. Details darüber, wie jedes der Teile des
Systems 100 arbeitet, werden nachfolgend in dem Flussdiagramm
aus 5A – 5C geliefert.
Die nachfolgende Erörterung
verwendet die Komprimierung eines Videobildes zu darstellenden Zwecken;
es sollte darauf hingewiesen werden, dass die vorliegende Erfindung
geeignet für eine
Komprimierung von einem aus einer Vielzahl von Bildern ist, die
Informationen enthalten, und nicht auf Videobilder beschränkt ist.
Ferner, für
eine einfache Erklärung,
erörtern 4 und
die nachfolgenden Figuren die Komprimierung eines Bildes, das in
einer Zwischenzeilenabtastung darge stellt ist, wo jedes Bild oder
jeder Rahmen zwei Felder enthält.
Fachleute auf dem Gebiet werden jedoch erkennen, dass die Erfindung
gleichermaßen
an eine progressive Abtastung anwendbar ist (ein Feld ist ein Rahmen),
oder an andere Standards, wo viele Felder einen Rahmen darstellen
können.
Ferner erörtert
die nachfolgende Beschreibung eine Manipulation von Pixeln, Abtastlinien,
Streifen und Blöcken.
Es sollte darauf hingewiesen werden, dass andere willkürliche Bezeichnungen zum
Darstellen der Hierarchien von Informationen ebenfalls verwendet
werden können,
ohne von dem Schutzbereich der vorliegenden Erfindung abzuweichen.
-
Im
allgemeinen wird ein eingehender Rahmen inkrementell Block für Block
komprimiert, durch Durchführen
einer Transformation an jedem Block und dann Codieren desselben.
Der codierte Block (in einer weitgehend komprimierten Form) wird
in eine temporäre
Speicherung platziert. Wenn ein entsprechender Block eines späteren Rahmens
zum Vergleich ankommt, werden Transformation und Codierung an dem
späteren
Block durchgeführt.
Beide Blöcke
werden zurück
in den Transformationsbereich decodiert und die zwei Blöcke werden
in dem Transformationsbereich verglichen, ohne den Bedarf zum Durchführen einer
Rückwärtstransformation
an den Blöcken,
um dieselben miteinander zu vergleichen. Durch Durchführen eines
Blockvergleichs in dem Transformationsbereich wird ein kostspieliger
Rückwärtstransformationsprozess
vermieden. Eine reduzierte Berechnung zum Vergleich der Blöcke resultiert
ebenfalls, da ein Großteil
der decodierten Blöcke Nullwerte
aufweist. Dieser Prozess von Codieren/Speichern/Decodieren/Vergleichen
weist viele Vorteile auf.
-
Ein
System 100 zeigt ein Bild eines Mannes 102, das
unter Verwendung der vorliegenden Erfindung komprimiert werden soll.
Ein Bild 102 kann in Schwarz und Weiß oder in Farbe sein und kann
durch das System 100 entweder als ein analoges oder ein digitales
Signal empfangen werden. Vorzugswei se wird das Bild 102 als
ein analoges Signal empfangen und wird digitalisiert und dann durch
Informationspixel dargestellt. Digitalisierte Informationen, die
das Bild 102 darstellen, werden durch ein horizontales Filter
(Durchlauf 1) 106 eine Abtastlinie nach der anderen empfangen.
Es wird ferner für
andere Typen von Video davon ausgegangen, dass Informationen ein
Block nach dem anderen oder in anderen Einheiten empfangen werden
können.
Ein horizontales Filter 106 wendet eine Filtersequenz an
jede Abtastlinie an und leitet dann das Ergebnis zu der Streifenspeicherung 110 weiter.
Abtastlinien werden kontinuierlich durch das Filter 106 empfangen,
verarbeitet und zu der Streifenspeicherung 110 gesendet.
-
Die
Streifenspeicherung 110 ist zwei Streifenpuffer, die ungefähr den Informationswert
von zwei Streifen halten. Wenn Videoinformationen von dem System 100 empfangen
werden, die komprimiert werden sollen, wird die Streifenspeicherung 110 kontinuierlich
mit zuerst geradzahligen und dann ungeradzahligen Streifen von dem
Bild 102 gefüllt. Abtastlinien
werden kontinuierlich in einen geradzahligen Streifenpuffer gespeichert,
bis der Puffer voll ist. Die nachfolgend empfangenen Abtastlinien
werden dann kontinuierlich in einem ungeradzahligen Streifenpuffer
gespeichert und während
dieser ungeradzahlige Puffer gefüllt
wird, wird der vorangehend gefüllte
geradzahlige Streifenpuffer geleert. Somit, sobald der ungeradzahlige
Streifenpuffer voll ist, wurde der vorangehend gefüllte geradzahlige
Streifenpuffer geleert und zu dem Modul 114 geliefert.
Somit, sobald der ungeradzahlige Puffer voll ist, ist der geradzahlige
Puffer wieder bereit, um den nächsten
Satz von Abtastlinien von dem Filter 106 zu empfangen. Die
Streifenpuffer wechseln sich beim Empfangen und Übertragen von Informationen
auf diese Weise ab, während
das Bild eingegeben wird.
-
Für eine Implementierung
an einer integrierten Schaltung ist es bevorzugt, dass die Speicherung 110, 118 und 126 in DRAMs
implementiert sind. DRAMs sind viel kleiner als SRAMs, aber erfordern üblicherweise
eine Auffrischschaltungsanordnung. Da jedoch Streifen und Blöcke so schnell
in ihre und aus ihren jeweiligen Speicherungsbereichen geschoben
werden, wird die Auffrischschaltungsanordnung nicht gebraucht. Somit
können
kleinere DRAMs ohne die zusätzliche
Auffrischschaltungsanordnung verwendet werden.
-
Da
die Streifenspeicherung 110 einen Streifenpuffer füllt, bevor
Informationen freigegeben werden, können Informationen aus der
Streifenspeicherung 110 Block für Block gelesen und zu dem
Modul 114 geliefert werden. Anders ausgedrückt, sobald
die Streifenspeicherung 110 mit den ersten zwei Informationsstreifen
markiert wurde, werden Blöcke
kontinuierlich aus der Speicherung 110 gelesen und zu dem
Komprimierungsmodul 114 für eine Komprimierung geliefert.
Vorzugsweise transformiert, quantifiziert und codiert das Modul 114 jeden
Block und liefert den resultierenden komprimierten Block zu der Feldblockspeicherung 118.
Somit wird ein Strom aus komprimierten Blöcken kontinuierlich von dem
Modul 114 zu der Feldblockspeicherung 118 geliefert.
Vorteilhafterweise werden diese Blöcke komprimiert und temporär gespeichert,
bevor sie miteinander in der Haar-Transformation 122 verglichen
werden. Obwohl die Komprimierung an den Blöcken an diesem Punkt nicht
so groß ist
wie die Komprimierung, die bei der abschließenden Ausgabe erzeugt wird,
ermöglicht die
temporäre
Komprimierung dieser Blöcke
bedeutend reduzierte Größen einer
Feldblockspeicherung 118 und einer Rahmenblockspeicherung 126.
-
Die
Komprimierung, die in dem Modul 114 durchgeführt wird,
kann eine geeignete Standbildkomprimierungstechnik sein. Eine Komprimierung kann
an dem gesamten Bild, an Blöcken,
Streifen oder einem geeigneten Abschnitt des Bildes durchgeführt werden.
Vorzugsweise transformiert, quantifiziert und codiert das Modul 114 jeden
Block, wie hierin beschrieben ist. Eine Transformation, wenn sie verwendet
wird, kann eine geeignete Transformation sein, die lineare Transforma tionen
umfasst, wie z. B. eine Wavelet-Transformation oder eine DCT. Sogar nichtlineare
Transformationen und andere Techniken, wie z. B. eine Vektorquantisierung,
können
verwendet werden. Bei einem bevorzugten Ausführungsbeispiel der Erfindung
wird die Transformation jedes Blocks unter Verwendung einer Vielzahl
von Durchläufen
durchgeführt,
etikettiert als Durchlauf 2, Durchlauf 3, Durchlauf 4 und Durchlauf
5; diese Durchläufe
werden nachfolgend detaillierter in 5A – 5C erklärt.
-
Die
Feldblockspeicherung 118 enthält eine Speicherung, die groß genug
ist für
etwas mehr als den Wert an komprimierten Blöcken eines Feldes. Vorteilhafterweise
kann die Speicherung 118 ungefähr sechsmal kleiner gemacht
werden als dies der Fall sein müsste,
wenn der Wert an komprimierten Blöcken eines Feldes gespeichert
werden müsste. Die
Komprimierung ist derart, dass ungefähr eineinhalb Bits/Pixel gespeichert
werden. Ein Strom aus komprimierten Blöcken, die Felder darstellen,
kommt kontinuierlich von dem Modul 114 an. Sobald der Wert
an Blöcken
eines Feldes in der Speicherung 118 gespeichert wurde und
das nächste
Feld ankommt, werden Blöcke
paarweise für
eine Lieferung zu der Zwischenfeld-Haar-Einheit 122 entfernt.
Anders ausgedrückt,
sobald Blöcke
aus dem nächsten Feld
in der Speicherung 118 ankommen, werden Paare aus entsprechenden
Blöcken
aus den zwei Feldern entfernt und zu der Einheit 122 geliefert.
Bei einem bestimmten Ausführungsbeispiel
werden Blöcke
paarweise in Abtastreihenfolge von links nach rechts und oben nach
unten entfernt. Zum Beispiel, sobald der Wert an Blöcken eines
Feldes gespeichert wurde und der erste obere linke Block des nächsten Feldes
in der Speicherung 118 ankommt, werden sein entsprechender
oberer linker Block aus dem vorangehend gespeicherten Feld beide
als ein Paar entfernt, wodurch ein Raum für mehr eingehende Blöcke erzeugt
wird. Auf diese Weise werden entsprechende Blöcke aus zwei Feldern eines
Rahmens zu der Einheit 122 in bedeutend komprimierter Form für einen
Vergleich geliefert.
-
Natürlich kann
die Speicherung 118 für
eine einfachere Speicherungszuordnung und Verarbeitung der eingehenden
und ausgehenden Blöcke
größer gemacht
werden, aber mit entsprechendem Nachteil aufgrund der größeren Größe der erforderlichen
Speicherung. Es sollte darauf hingewiesen werden, dass Blöcke in Paaren
in einer beliebigen Reihenfolge und nicht notwendigerweise in Abtastreihenfolge
entfernt werden können.
-
Die
Zwischenfeld-Haar-Einheit 122 empfängt ein Paar von entsprechenden
komprimierten Blöcken
aus zwei Feldern eines Rahmens und führt einen Vergleich unter Verwendung
einer leicht modifizierten Form der Haar-Transformation durch. Vorteilhafterweise
müssen
die zwei Blöcke
nicht vollständig
decodiert werden und es wird eine Rückwärtstransformation an denselben
durchgeführt,
um einen Vergleich in der Haar-Einheit 122 durchzuführen. Wie
nachfolgend detaillierter in 18 beschrieben wird,
wird jeder Block teilweise decodiert und diese Decodierung wird
in die Zwischenfeld-Haar-Transformation
integriert. Blöcke
müssen
nur zu dem Umfang decodiert werden, der notwendig ist, um einen
Zwischenfeldvergleich auszuführen.
Wenn eine transformationsbasierte Komprimierung durchgeführt wurde, ist
es nicht notwendig, die Transformation an den Blöcken rückgängig zu machen, da die Haar-Transformation
in dem Transformationsbereich durchgeführt werden kann. Im allgemeinen
muss eine lineare Transformation nicht rückgängig gemacht werden, aber eine
nichtlineare Transformation kann erfordern, dass die Transformation
rückgängig gemacht
wird. Sobald die integrierte Decodierung und die Haar-Transformation
durchgeführt
wurden, wird das Ergebnis wieder codiert und zu der Rahmenblockspeicherung 126 übertragen.
An diesem Punkt ist das Ergebnis des Vergleichs der zwei komprimierten Blöcke aus
aufeinander folgenden Feldern ein anderer, weiter komprimierter
Block, der die zwei entsprechenden Blöcke aus ihren entsprechenden
Feldern darstellt. Anders ausgedrückt stellt dieser komprimierte
Block die Informationen aus einem Block des Originalrahmens dar,
der in den zwei Feldern dieses Rahmens dargestellt wurde.
-
Die
Rahmenblockspeicherung 126 enthält etwas mehr als den Wert
an komprimierten Blöcken eines
Rahmens. Sobald der Wert an komprimierten Blöcken eines Rahmens in der Speicherung 126 gespeichert
wird und die komprimierten Blöcke
aus dem nächsten
nachfolgenden Rahmen beginnen, in der Speicherung 126 anzukommen,
werden entsprechende Blöcke
aus diesen zwei Rahmen aus der Speicherung 126 entfernt
und zu der Zwischenrahmen-Haar-Einheit 130 geliefert. Komprimierte
Blöcke,
die aufeinander folgende Rahmen darstellen, kommen kontinuierlich
in der Speicherung 126 an und werden in Paaren auf ungefähr die gleiche
Weise verschoben und entfernt, wie es bei der Feldblockspeicherung 118 durchgeführt wird.
-
Die
Zwischenrahmen-Haar-Einheit 130 empfängt entsprechende Paare von
Blöcken
für zwei
aufeinander folgende Rahmen aus der Speicherung 126 und
führt eine
modifizierte Haar-Transformation
an diesen zwei Blöcken
durch. Auf eine ähnliche
Weise wie bei der Einheit 122 decodiert die Haar-Einheit 130 teilweise
jeden Block auf eine integrierte Weise mit der Haar-Transformation
und codiert dann den resultierenden Block für eine Ausgabe. Vorteilhafterweise
muss die Einheit 130 keine Rückwärtstransformation an den Blöcken durchführen, sondern
ist in der Lage, die Blöcke
in dem Transformationsbereich zu verarbeiten, nachdem sie teilweise
oder vollständig
decodiert wurden. Das Ergebnis aus der Einheit 130 ist
ein serieller Bitstrom, der kontinuierliche Blöcke aus Informationen darstellt,
die bedeutend komprimiert wurden. Jeder komprimierte Block stellt
einen Block aus Informationen dar, die über vier Felder ausgebreitet
sind, anders ausgedrückt
stellt jeder komprimierte Block den Wert an Informationen von zwei
Rahmen dar.
-
Nach
der Haar-Einheit 130 ist die Farbdreheinheit 132,
die eine Farbdrehung von einem Farbkoordinatensystem in ein anderes
durchführt. Die
Einheit 132 wird nachfolgend in 21 detaillierter
erklärt.
Die resultierende komprimierte Videoausgabe 134 ist in
serieller Bitstromform kann dann über einen Draht übertragen,
rundgesendet, auf eine Platte gespeichert werden, etc. Vorteilhafterweise
erfordern diese bedeutend komprimierten Videoinformationen, die
das Bild 102 darstellen, bedeutend weniger Bandbreite, Übertragungszeit
und/oder Speicherungsraum.
-
In 4 sind
Beispiele von möglichen schlimmsten
Komprimierungen von Bitraten gezeigt. Zum Beispiel, eine Rate von
120 Mb/s wird in das Filter 106 eingegeben. Die Rate wird
nach dem Filter 106 auf 240 Mb/s verdoppelt, aufgrund der
erhöhten Präzision,
die benötigt
wird, wenn Zahlen miteinander addiert werden. Nach dem Modul 114 wird
die Rate auf 15 Mb/s reduziert und erreicht schließlich einen
niedrigen Wert von 10 Mb/s nach der Einheit 130. Natürlich sind
andere niedrigere Raten möglich, abhängig von
der Implementierung des Systems.
-
KOMPRIMIERUNGSFLUSSDIAGRAMM
-
5A, 5B und 5C sind
ein Flussdiagramm 200, das ein Ausführungsbeispiel für eine Komprimierung
von Bildern beschreibt. Dieses Flussdiagramm wird Bezug nehmend
auf 4 und 6 – 18 erklärt. Schritt 210 empfängt digitalisierte Daten
aus einem Bild 102, wie in 4 erklärt ist. Vorzugsweise
wird das analoge Signal, das das Bild 102 darstellt, bei
ungefähr
viermal der Frequenz des Farbträgers
abgetastet (üblicherweise
14,3 MHz) und digitalisiert, um eine Sequenz von 8-Bit-Pixelwerten
zu liefern. Natürlich
können
auch andere Abtastraten und Größen von
Pixelwerten verwendet werden. Bei Schritt 212 wird jeweils
eine Abtastlinie in das horizontale Filter 106 eingegeben.
Bei Schritt 214 führt
das Filter 106 eine horizontale Filterung an jeder Abtastlinie
durch, wie nachfolgend in 6 – 12 beschrieben
ist. Das Ergebnis dieser Filterung ist die Transformation der Daten
in der Abtastlinie in die vier Teilbänder, die in 12 gezeigt
sind. Sobald eine Abtastlinie gefiltert wurde, wird sie bei Schritt 216 in
die Streifenspeicherung 110 ausgegeben, um beim Vervollständigen eines
Streifens in einem der Streifenpuffer zu helfen.
-
Die
Verarbeitung von Abtastlinien und das Auffüllen von Streifenpuffern ist
ein kontinuierlicher Prozess. Geradzahlige und ungeradzahlige Streifen werden
kontinuierlich aufgefüllt
und aus der Streifenspeicherung 110 entfernt, wie in 4 beschrieben ist.
Schritt 218 beschreibt einen Zeitpunkt, zu dem einer der
geradzahligen Streifen in der Streifenspeicherung vervollständigt wird.
Sobald dieser geradzahlige Streifen vervollständigt ist, wird bei Schritt 220 mit
der Speicherung des nächsten
ungeradzahligen Streifens begonnen und der vervollständigte geradzahlige
Streifen wird Block für
Block aus der Streifenspeicherung 110 entfernt.
-
Wenn
Blöcke
entfernt werden, werden sie bei Schritt 224 komprimiert.
Eine einer breiten Vielzahl von linearen und/oder nichtlinearen
Transformationen kann verwendet werden, sowie traditionelle Komprimierungstechnilcen.
Vorzugsweise werden sie komprimiert durch Durchführen einer Sequenz von Durchläufen. Durchlauf
2 wird an einem Block durchgeführt,
wie in 13 beschrieben ist. Durchlauf
3 wird an einem Block durchgeführt,
wie in 14 beschrieben ist. Durchlauf
4 wird an einem Block durchgeführt,
wie in 15 beschrieben ist, und abschließend wird
Durchlauf 5 durchgeführt,
wie in 16 beschrieben ist. Es sollte
darauf hingewiesen werden, dass für Blöcke, die eine Größe von weniger
als oder mehr als 8 × 32
Pixel aufweisen, weniger oder mehr Durchläufe verwendet werden können. Sobald
diese fünf
Durchläufe
abgeschlossen wurden, wurde der Block erfolgreich komprimiert.
-
Schritt 226 quantisiert
den Block. Die Quantisierung, die bei den Schritten 226, 239 und 248 auftritt,
kann auf viele Weisen durchgeführt
werden. Eine Quantisierung ist nützlich
zum Reduzieren der Größe der Pixelwerte
und führt
zu einem vernachlässigbaren
Verlust von Informationen. Obwohl eine Quantisierung nicht unbedingt
notwendig ist, hilft sie beim Reduzieren der Größe der Daten. Bei einem bevorzugten
Ausführungsbeispiel
wird ein vereinfachter, praktizierbarer Quantisierungsschritt durchgeführt, der
bei Schritten 226, 239 und 248 um eine
Zweierpotenz quantisiert. Eine Quantisierung um eine Zweierpotenz
reduziert den Speicher, der in der Feldblockspeicherung 118 und
in der Rahmenblockspeicherung 126 erforderlich ist. Somit
kann die vorliegende Erfindung auf einer kleineren Hardwarevorrichtung
implementiert sein. Vorzugsweise hängt die Anzahl von Bits niedrigerer
Ordnung, die für
jeden Koeffizienten bei Schritt 226, 239 und 248 verworfen werden,
von dem Teilband ab. Die Zweierpotenz, die für jedes Band verwendet wird,
ist eine Implementierungsentscheidung, die von der Qualität des erwünschten
Bildes abhängt.
-
Sobald
der Block quantisiert wurde, wird der Block bei Schritt 232 codiert.
Eine breite Vielzahl von Codierungstechniken kann verwendet werden.
Beispielweise hat sich herausgestellt, dass eine Entropiecodierung
gut funktioniert. Zum Beispiel kann eine Huffman-Codierung, eine
arithmetische Codierung oder eine LZW-Codierung verwendet werden.
Andere proprietäre
Codierungstechniken können
ebenfalls verwendet werden, wie z. B. jene, die in dem U.S.-Patent
6,144,773 und in dem U.S.-Patent 6,381,280 beschrieben sind. Im
allgemeinen wird der Codierungsalgorithmus verwendet, um redundante Informationen
zu entfernen, und insbesondere Gruppen von Nullen, die durch eine
Quantisierung erzeugt werden. Bei einem bevorzugten Ausführungsbeispiel der
Erfindung wird eine standardmäßige Nullbaumcodierung
verwendet.
-
Bei
Schritt 234 werden die komprimierten Blöcke in die Feldblockspeicherung 118 Block
für Block
eingegeben. Sobald der Blockwert eines Feldes gespeichert ist, werden
bei Schritt 236 entsprechende Blöcke aus aufeinander folgenden
Feldern für
einen Rahmen zu der Zwischenfeld-Haar-Einheit 122 ausgegeben.
Blöcke
können
in die Feldblockspeicherung 118 auf geeignete Weise eingegeben,
in derselben verschoben und aus derselben ausgegeben werden. Vorzugsweise
ist die Speicherung 118 etwas größer als der Blockwert eines
Feldes und die Speicherung wird für die eingehenden Blöcke unter Verwendung
von Pufferpools zugeordnet (ebenfalls genannt Speicherungspools).
Zum Beispiel, sobald der Blockwert eines Feldes gespeichert ist
und der erste Block des nächsten
Feldes empfangen wird, können
die ersten entsprechenden Blöcke
aus diesen zwei Feldern entfernt werden. Wenn diese zwei Blöcke entfernt
werden, werden die nächsten
zwei Blöcke
für das
nächste
Feld eingegeben.
-
Bei
den Schritten 237 – 239 wird
eine modifizierte Zwischenfeld-Haar-Transformation an den zwei entsprechenden
Blöcken
durchgeführt,
wie in 17 und 18 beschrieben
ist. Die Haar-Transformation ist mit einer teilweisen Decodierung
der Blöcke,
einer Quantisierung und Codierung integriert. Bei Schritt 240 wird
der resultierende Block in die Rahmenblockspeicherung 126 ausgegeben.
Der resultierende Block aus der Zwischenfeld-Haar-Einheit 122 stellt
Informationen aus den zwei Feldern dar, d. h. zweimal den Informationsinhalt
eines einzelnen Blocks. Anders ausgedrückt stellt der resultierende Block
zweimal den Zeitbetrag dar, wie einer der zwei eingegebenen Blöcke.
-
Bei
Schritt 242 werden die Blöcke, die kürzlich in der Einheit 122 codiert
wurden, in die Rahmenblockspeicherung 126 Block für Block
eingegeben. Sobald der Blockwert eines Rahmens in der Speicherung 126 gespeichert
ist, beginnt Schritt 244 mit dem Ausgeben von entsprechenden
Blöcken
aus aufeinander folgenden Rahmen in die Zwischenrahmen-Haar-Einheit 130.
Eine Speicherungszuordnung innerhalb der Speicherung 126 kann
auf eine breite Vielzahl von Weisen durchgeführt werden und wird vorzugsweise
implementiert, wie im Hinblick auf die Speicherung 118 beschrieben
ist.
-
Die
Schritte 245 – 248 führen eine
modifizierte Zwischenrahmen-Haar-Transformation an den zwei entsprechenden
Blöcken
durch, um einen einzelnen resultierenden Block zu erzeugen. Diese
Zwischenrahmen-Haar-Transformation wird auf eine Weise durchgeführt, analog
zu der Zwischenfeld-Haar, die in 17 und 18 beschrieben wurde.
Der resultierende Block aus Zwischenrahmen-Haar 130 stellt
den Wert von Informationen von vier Feldern für diesen Block dar. Schritt 250 führt eine
Farbdrehung an dem resultierenden Block unter Verwendung einer Farbdreheinheit 132 durch,
wie in 21 beschrieben ist.
-
Bei
Schritt 252 wird der resultierende Block als ein serieller
Bitstrom ausgegeben. Dieser bedeutend komprimierte serielle Bitstrom,
der das Originalbild 102 darstellt, kann dann übertragen
oder effizienter gespeichert werden, aufgrund dieser bedeutend komprimierten
Form.
-
DEKOMPRIMIERUNGSFLUSSDIAGRAMM
-
Die
Dekomprimierung dieses ausgegebenen seriellen Bitstroms, um das
Originalbild 102 zu erzeugen, kann durchgeführt werden,
durch Umkehren der obigen Verfahren, wie Fachleuten auf dem Gebiet
bekannt ist. Beispielsweise stellt 22 eine
Technik zum Dekomprimieren des komprimierten Bitstroms dar, um das
Originalbild zu erzeugen, das einer Umkehrung der Schritte in 5A – 5C entspricht. Im
allgemeinen (außer
bei einer Quantisierung) ist jeder der obigen Schritte in 5A – 5C umkehrbar.
Modifikationen können
ebenfalls in die Dekomprimierung eingebracht werden. Zum Beispiel
können zusätzliche
Nullen oder ein beliebiges Rauschen eingebracht werden, um eine
Quantisierung zu kompensieren, und eine Farbdrehung muss nicht durchgeführt werden,
wenn die Daten bereits in einem Farbkoordinatensystem sind, das
für eine
Ausgabe geeignet ist. Eine Farbdre hung könnte durchgeführt werden,
falls erwünscht,
um eine Farbträgerdrift
zu korrigieren.
-
HORIZONTALES
FILTER
-
6 stellt
symbolisch eine Ansicht auf hoher Ebene eines horizontalen Filters 106 gemäß einem
Ausführungsbeispiel
dar. Das horizontale Filter 106 liefert vorteilhaft ein
Kantenfiltern, um Geisterbilder um Blöcke zu entfernen, und filtert
das Videosignal in verschiedenen Teilbändern, die nützlich beim Trennen
von Farb- und Schwarz-und-Weiß-Informationen sind.
Digitalisierte Videobilddaten werden von dem Bild 102 empfangen.
In dem Filter 106 ist ein Tiefpassfilter 302,
ein Hochpassfilter 304 und Abwärtsabtaster 306 und 308 umfasst.
Innerhalb einer zweiten Filterstufe 106 sind Tief- und
Hochpassfilter 310, 312 und Tief- und Hochpassfilter 314, 316 umfasst.
Jedes dieser Filter wird durch einen entsprechenden Abwärtsabtaster 318 – 324 gefolgt.
Die Ausgabe aus den Abwärtsabtastern 318 – 324 wird
zu der Streifenspeicherung 110 geliefert, um eine Abtastlinie
innerhalb von einem der Streifenpuffer zu füllen.
-
Bei
der ersten Stufe des Filters 106 werden Pixelwerte aus
dem Bild 102 zu jedem des Tiefpassfilters 302 und
des Hochpassfilters 304 geliefert. Im allgemeinen führt das
Filter 302 eine Form einer Summierung von jedem Pixel mit
seinem nachfolgenden Pixel durch und das Filter 304 führt eine
Form einer Differenzierung von jedem Pixel mit seinem nachfolgenden
Pixel durch. Die Abtasteinrichtungen 306 und 308 tasten
die Ergebnisse aus den Filtern 302 und 304 um
einen Faktor von zwei abwärts
ab, was bedeutet, dass jeder zweite Abtastwert verworfen wird. Ergebnisse
aus der ersten Stufe der Abtasteinrichtungen 306 und 308 werden
dann jeweils wieder durch Tief- und Hochpassfilter und Abwärtsabtaster weitergeleitet,
im wesentlichen auf dieselbe Weise, wie das Originalsignal bei der
ersten Stufe verar beitet wurde. Zum Beispiel werden summierte Pixelwerte, die
aus dem Abtaster 306 ausgegeben werden, jeweils zu dem
Tiefpassfilter 310 und dem Hochpassfilter 312 weitergeleitet.
Die Ergebnisse aus diesen Filtern werden dann abwärts abgetastet
um einen Faktor von 2 in den Abtastern 318 und 320,
und die resultierenden Werte werden zu der Streifenspeicherung 110 geliefert,
wie nachfolgend erklärt
wird. Die Ausgabe aus dem Abtaster 308 wird im Wesentlichen auf
dieselbe Weise verarbeitet.
-
Obwohl
die Abtaster 306 und 308 jeden zweiten Wert verwerfen
und die Ausgabe von jedem die Hälfte
der Originaldaten darstellt, ist der Datenbetrag, den sie in Kombination
bis Stufe 2 darstellen, derselbe Betrag an Pixeln, der vom Bild 102 empfangen
wird. Dasselbe gilt für
Stufe 2. Somit ist bei diesem Ausführungsbeispiel die Gesamtanzahl
von Pixeln, die von dem Bild 102 empfangen werden, dieselbe
wie die Anzahl von Pixeln, die zu der Streifenspeicherung 110 ausgegeben
werden.
-
7 stellt
den Prozess von Stufe 1 des Filters 106 aus 6 dar.
Die Eingangsabtastlinie 352 umfasst eine Anzahl von Pixelwerten
A, B, C und D. Die Pixel A, B und C, D werden durch ein Tiefpassfilter 302 summiert,
wie gezeigt ist, um die Pixelwerte M und N zu ergeben. Auf ähnliche
Weise werden die Pixel A, B und C, D durch das Hochpassfilter 304 differenziert,
um Pixelwerte P und Q zu ergeben. Aufgrund des Abwärtsabtasters 306 wird
die Summierung der Pixel B und C verworfen; auf ähnliche Weise verwirft der
Abtaster 308 die Differenz der Pixel B und C.
-
8 stellt
ein Beispiel der Abtastlinie 352 nach Stufe 1 von 6 dar.
Die Abtastlinie 354 umfasst Ergebnisse aus der Summierung
und Differenzierung von eingehenden Pixelwerten. Von dem Tiefpassfilter
resultierende Pixelwerte M und N werden auf der linken Seite (L)
der Abtastlinie 354 gespeichert, und von dem Hochpassfilter
resultierende Pixelwerte P und Q werden auf der rechten Seite (R) der
Abtastlinie 354 gespeichert.
-
9 stellt
den Prozess von beiden Stufen eins und zwei aus 6 dar.
Die eingehende Abtastlinie 362 umfasst Pixelwerte A, B,
C und D. Nach Stufe eins werden die Pixelwerte M und N summiert
und differenziert, um die Werte S bzw. T zu erzeugen. Auf ähnliche
Weise werden die Pixelwerte P und Q summiert und differenziert,
um die Werte V bzw. W zu erzeugen.
-
10 stellt
ein Beispiel der Abtastlinie 362 nach Stufe eins und zwei
des horizontalen Filters 106 dar. Der Pixelwert S wird
in der linken Hälfte
der linken Seite der Abtastlinie 364 (LL) gespeichert,
der Wert T wird in der rechten Hälfte
der linken Seite der Abtastlinie 364 gespeichert (LR),
der Wert V wird in der linken Hälfte
der rechten Seite der Abtastlinie gespeichert (RL) und der Wert
W wird in der rechten Hälfte
der rechten Seite der Abtastlinie (RR) gespeichert. Somit umfasst
die resultierende Abtastlinie nach dem Verarbeiten durch das horizontale
Filter 106 vier Teilbänder
(LL, LR, RL und RR), die nützlich beim
Trennen des zusammengesetzten Videosignals sind, wie nachfolgend
in 12 gezeigt ist.
-
Wie
oben erklärt
wurde, stellen 6 – 10 im
allgemeinen die Funktion des horizontalen Filters 106 dar.
Genauer gesagt verwendet das Filter 106 bei einem Ausführungsbeispiel
eine Sequenz von modifizierten 2-6-Biorthogonalfiltern, die nützlich beim
Beseitigen von Blockbildungsartefakten sind. Ein standardmäßiges 2-6-Biorthogonalfilter
ist in der Technik bekannt; das verbesserte 2-6-Biorthogonalfilter, das eine modifizierte
Summierung und Differenzierung ausführt, wird nun Bezug nehmend
auf 11A und 11B erklärt.
-
Ein
standardmäßiges 2-6-Biorthogonalfilter kann
als eine Haar-Transformation betrachtet werden, bei der die Summie rung
und Differenzierung von Pixelpaaren durchgeführt wird, gefolgt durch einen zusätzlichen
Hebeschritt. Der Hebeschritt ändert
die Differenzwerte durch Kombinieren jeder Differenz mit einer linearen
Kombination von entsprechenden Summenwerten. Vorteilhafterweise
verwendet die vorliegende Erfindung ein verbessertes 2-6-Biorthogonalfilter
mit einer eindeutigen linearen Kombination für anfängliche und abschließende gehobene
Differenzen von jedem Block, um zu ermöglichen, dass Blöcke unabhängig verarbeitet
werden.
-
11A stellt ein spezifisches Ausführungsbeispiel
der ersten Stufe 106a des horizontalen Filters 106 dar.
Die zweite Stufe wird vorzugsweise auf ähnliche Weise implementiert.
Bei diesem spezifischen Ausführungsbeispiel
ist das Filter 106a ein verbessertes 2-6-Biorthogonalfilter.
Das Filter 106a empfängt
einen Strom aus Pixelwerten xk von dem Bild 102,
die in die Summeneinheit 402 und die Differenzeinheit 404 zugeführt werden.
Eine Kombinationseinheit 406 kombiniert verschiedene Summen
mit bestimmten Koeffizienten und addiert das Ergebnis zu jeder Differenz
di in der Summierungseinheit 408. Die
Ausgabe aus dem Filter 106a ist ein Strom aus Summen si und ein Strom aus gehobenen Differenzen
wi.
-
Üblicherweise
stellt ein standardmäßiges 2-6-Biorthogonalfilter
jede Differenz ein, um eine gehobene Differenz zu erhalten, unter
Verwendung der Formel: wi = di – si-1/8 + si+1/8. Somit
wird von jeder Differenz 1/8 der vorangehenden Summe subtrahiert und
1/8 der nachfolgenden Summe wird zu derselben addiert. Bei einem
standardmäßigen 2-6-Biorthogonalfilter
wird die tatsächliche
Summe, die der Differenz entspricht, die eingestellt wird, nicht
verwendet, um die Differenz einzustellen. Vorteilhafterweise liefert
dieses Ausführungsbeispiel
der vorliegenden Erfindung eine eindeutige Kombination 406 aus
Summenwerten, um jeden Differenzwert einzustellen, um Blockbildungsartefakte
zu reduzieren.
-
11B stellt Koeffizienten für die Kombinationseinheit 406 gemäß einem
spezifischen Ausführungsbeispiel
der Erfindung dar. Um zu ermöglichen, dass
Blöcke
unabhängig
behandelt werden, und um Blockbildungsartefakte zu reduzieren, verwendet
die vorliegende Erfindung eindeutige Koeffizienten für Summenwerte,
die einen Koeffizienten ungleich Null für die Summe umfassen, die der
Differenz entspricht, die eingestellt werden soll. Genauer gesagt werden
diese eindeutigen Koeffizienten für den allerersten und den allerletzten
gehobenen Differenzwert eines Blocks (w0 und
wn-1) verwendet. 11B zeigt eine
Tabelle aus Koeffizienten 409, die zum Implementieren der
Kombinationseinheit 406 verwendet werden. Die Tabelle 409 umfasst
Spalten aus Summen 410 und Zeilen aus gehobenen Differenzen 412. Jede
Zelle der Tabelle 409 stellt den Koeffizienten dar, der
für seine
entsprechende Summe bei der Berechnung einer gehobenen Differenz
verwendet wird. Die Zeilen 422 und 432 stellen
traditionelle Koeffizienten bei einem standardmäßigen 2-6-Biorthogonalfilter
dar. Zum Beispiel die gehobene Differenz w1 =
d1 – s0/8 + s2/8, etc.
Vorteilhafterweise liefert die Tabelle 409 eindeutige Koeffizientenwerte
zur Berechnung des ersten und des letzten gehobenen Differenzwerts,
wie in den Zeilen 420 und 434 gezeigt ist. Bei diesem
spezifischen Ausführungsbeispiel
sind anfängliche
Koeffizienten -3/8, 1/2 und -1/8, und somit ist die anfängliche
gehobene Differenz w0 = d0 – 3s0/8 + s1/2 – s2/8. Die abschließenden Koeffizienten sind 1/8,
-1/2 und 3/8, und somit ist die abschließende gehobene Differenz wn-1 = dn-1 + sn-3/8 – sn-2/2 + 3sn-1/8. Diese
eindeutigen Koeffizientenwerte für
die anfängliche
und letzte gehobene Differenz des Filters 106a reduzieren
Blockbildungsartefakte bedeutend und ermöglichen, dass jeder Block unabhängig behandelt wird,
durch Beseitigen des nullten, ersten und zweiten Moments.
-
12 stellt
einen Streifen 500 in der Streifenspeicherung 110 dar,
nachdem das horizontale Filter 106 eine Anzahl von Abtastlinien
verarbeitet hat, die ausreichend ist, um den Streifen 500 zu
füllen.
Zum Beispiel, für
Blöcke,
die acht Abtastlinien hoch sind, stellt der Streifen 500 Informationen
aus acht horizontalen Abtastlinien dar. Der Streifen 500 umfasst
vier Teilbänder,
die aus den eingehenden Abtastlinien herausgearbeitet wurden, um
das Videosignal in Farb- und Schwarz-und-Weiß-Informationen zu trennen.
Das Luminanzband 502 stellt Intensitätsinformationen dar (d. h.
Schwarz-und-Weiß-Pixelwerte);
diese Informationen wurden gefiltert, um in der linken Hälfte der
linken Seite (LL) des Streifens 500 zu erscheinen. Das
Phase-l-Chrominanzband 504 stellt
Farbinformationen aus der ersten Phase des Farbträgersignals
dar; diese Farbinformationen wurden gefiltert, um in der rechten
Hälfte
der linken Seite (LR) des Streifens 500 zu erscheinen.
Das Band 506 ist hauptsächlich
Hochfrequenzdaten aufgrund von Filtern. Üblicherweise ist dieses Hochfrequenzrauschen
hauptsächlich
Nullen und kann in den meisten Situationen ignoriert werden. Das
Phase-2-Chrominanzband 508 stellt Farbinformationen aus
der zweiten Phase des Farbträgersignals
dar; diese Farbinformationen wurden gefiltert, um in der rechten
Hälfte
der rechten Seite (RR) des Streifens 500 zu erscheinen.
Eine Vielzahl von Farben kann geeignet dargestellt werden. Bei diesem
Ausführungsbeispiel
stellen die Bänder 504 und 508 U
und V Farben gedreht um 45 Grad dar.
-
DURCHLÄUFE 2 – 5
-
13 – 16 stellen
die Ergebnisse des Durchführens
der Durchläufe
2 – 5
nach einem Block aus Informationen 520 dar. Der Block 520 ist
nicht maßstabsgetreu
im Hinblick auf den Streifen 500 aus 12.
Block 520 kann auf geeignete Weise aus einem Streifen in
der Streifenspeicherung 110 gebildet werden. Vorzugsweise
wird Block 520 gebildet durch Nehmen einer Spalte aus Pixeln
aus jedem der Bänder
des Streifens 500. Zum Beispiel, um Blöcke der Größe 8 hoch mal 32 Pixel breit
zu bilden, wird eine Spalte aus Pixeln 8 hoch mal 8 breit aus jedem
der Bänder 502 – 508 genommen (Spalten 512 – 518) und
verkettet, um einen 8×32-Block
zu bilden. Bei diesem Beispiel umfasst Block 520 die Spalten 512 – 518.
Natürlich
können
Blöcke
anderer Größen gebildet
werden, unter Verwendung einer bevorzugten Kombination aus Spalten
und/oder Zeilen aus Bändern 502 – 508.
-
Die
Durchläufe
2 – 5
führen
ein abwechselndes vertikales und horizontales Filtern an den Abschnitten
von Block 520 durch, um die Luminanz- und Chrominanzinformationen
aus den jeweiligen Bändern
herauszuarbeiten, und schließlich
aus dem zusammengesetzten Originalsignal. Vorteilhafterweise liefert
das Filtern der Teilbänder
auf diese Weise die wichtigsten Luminanz- und Chrominanzinformationen
und ermöglicht,
dass Abschnitte des gefilterten Blocks, die wenig oder keine Informationen
enthalten, verworfen werden. Das Filtern des Phase-1-Chrominanzbandes 504 und
des Phase-2-Chrominanzbandes 508 demoduliert
den Originalfarbträger
aus dem zusammengesetzten Videosignal und liefert Chrominanzinformationen.
Obwohl eine Vielzahl von Filtern verwendet werden kann, ist es bevorzugt,
modifizierte Biorthogonal- und Haar-Filter zu verwenden, wie nachfolgend
beschrieben ist, um benachbarte Pixel zu summieren und differenzieren,
um Informationen herauszutrennen. Vorzugsweise wird das verbesserte
2-6-Biorthogonalfilter in den Durchläufen 3, 4 und 5 verwendet,
obwohl es ebenfalls in den Durchläufen 1 und 2 nützlich sein kann.
-
Wie
oben erwähnt
wurde, demonstrieren 13 – 16 eine
weitere Demodulation des Farbträgers
des Videosignals. Jede Phase des Farbträgers enthält DC-Informationen. Somit,
wenn jede Summe und Differenz in den Durchläufen 2 – 5 durchgeführt wurde,
werden Farbinformationen in das Summenteil bewegt. Wie in 13 – 16 gezeigt ist,
nimmt das aufeinander folgende Filtern der Teilbänder die Luminanz- und Farbinformationen
und „quetscht" sie aufwärts in die
obere linke Ecke der Abschnitte 521, 529 und 535.
Das Quetschen bildet Transformationspyramiden in den Regionen 521, 529 und 535.
Farbinformationen erscheinen in den unteren Ab schnitten 529 und 535 der
Bänder 514 und 518,
während
Luminanzinformationen in dem oberen Abschnitt 521 des Bandes 512 erscheinen,
aufgrund der Phasenumkehrung des Farbträgers von einer Abtastlinie
zu der nächsten
in dem zusammengesetzten Video.
-
13 stellt
Block 520 nach zweimaligem vertikalen Filtern in Durchlauf
2 dar. Das erste vertikale Filter kann das verbesserte Biorthogonalfilter derart
verwenden, wie in 11A und 11B gezeigt
ist. Das Luminanzband 512 ist in einen Niederfrequenzabschnitt 521 und
einen Hochfrequenzabschnitt 526 (LLB) aufgespaltet. Das
zweite vertikale Filter verwendet ein linear gehobenes 2-4-Haar-Filter (in
der Technik bekannt), bei dem Abschnitt 521 weiter in einen
niedrigeren Frequenzabschnitt 522 (LLTT) und einen höheren Frequenzabschnitt 524 (LLTB)
aufgespaltet ist. Da Luminanzinformationen in den niedrigeren Frequenzen
dieses Bandes vorhanden sind, arbeitet ein Filtern und Aufspalten
auf diese Weise vorteilhaft die wichtigen Luminanzinformationen
heraus.
-
Das
Phase-1-Chrominanzband 514 wird in einen Niederfrequenzabschnitt 528 und
einen Hochfrequenzabschnitt 529 unter Verwendung des ersten vertikalen
Filters aufgespaltet. Bei dem zweiten vertikalen Filter wird Abschnitt 529 weiter
in einen niedrigeren Frequenzabschnitt 530 (LRBT) und einen
höheren
Frequenzabschnitt 532 (LRBB) aufgespaltet. Da das Band 516 üblicherweise
das Hochfrequenzrauschen darstellt und hauptsächlich Nullwerte aufweist,
wird es nicht weiter aufgespaltet. Das Phase-2-Chrominanzband 518 wird
unter Verwendung des ersten vertikalen Filters weiter in einen Niederfrequenzabschnitt 534 (RRT)
und einen Hochfrequenzabschnitt 535 aufgespaltet. Bei dem
zweiten vertikalen Filter wird Abschnitt 535 weiter in
einen niedrigeren Frequenzabschnitt 536 (RRBT) und einen
höheren
Frequenzabschnitt 538 (RRBB) aufgespaltet. Das Aufspalten
des niedrigeren Abschnitts von jedem der Chrominanzbänder 514 und 518 wird
durchgeführt,
um die wichtigen Chrominanzinformationen herauszuarbeiten. Die niedrigeren
Abschnitte dieser Bänder
stellen ein Differenzierungsfilter dar; da die Differenz von einer
Abtastlinie zu der nächsten
das Liefern von Chrominanzinformationen unterstützt, enthalten die niedrigeren
Abschnitte dieser Bänder wertvolle
Farbinformationen.
-
14 stellt
Block 520 nach zwei horizontalen Filtern in Durchlauf 3
dar. Ein horizontales Filtern wird an den ausgewählten Regionen von Block 520 durchgeführt, um
weiter Intensitätsinformationen
aus dem Band 512, Phase-1-Chrominanzinformationen aus Band 514 und
Phase-2-Chrominanzinformationen
aus Band 518 herauszuarbeiten. Das erste horizontale Filter
verwendet vorzugsweise das verbesserte 2-6-Biorthogonalfilter und
das zweite horizontale Filter verwendet das linear gehobene 2-4-Haar-Filter.
Die Region 524 wird in zwei Hälften aufgespaltet. Die Region 522 wird
ebenfalls in zwei Hälften
gefiltert und ihre linke Hälfte
wird weiter in Regionen 542 und 544 aufgespaltet.
Die Region 532 wird in zwei Hälften aufgespaltet. Die Region 529 wird
ebenfalls in zwei Hälften
aufgespaltet und ihre linke Hälfte
wird weiter in Regionen 546 und 548 aufgespaltet.
Die Region 538 wird in zwei Hälften aufgespaltet. Die Region 536 wird
ebenfalls in zwei Hälften
aufgespaltet und ihre linke Seite wird weiter in Regionen 550 und 552 aufgespaltet.
Mit dem Durchlauf 3 werden Luminanz- und Farbinformationen weiter
in die Regionen 542, 546 und 550 „gequetscht".
-
Vorteilhafterweise,
sobald Durchlauf 3 abgeschlossen war, wurden die Luminanz- und Chrominanzinformationen
aus dem zusammengesetzten Originalsignal effektiv für eine weitere
Komprimierung herausgetrennt. An diesem Punkt stellen die getrennten
Luminanz- und Chrominanzinformationen ein Videosignal dar, als ob
es als ein Komponentenvideo empfangen wurde (d. h. drei separate
Signale), obwohl die Luminanz- und
Chrominanzinformationen an diesem Punkt ebenfalls durch die vorliegende
Erfindung transformiert und komprimiert wurden.
-
15 stellt
Block 520 nach einem vertikalen Filter in Durchlauf 4 dar.
Bei Durchlauf 4 wird das verbesserte 2-6-Biorthogonalfilter an ausgewählte Regionen
angewendet, um weiter Luminanz- und Chrominanzinformationen herauszuarbeiten
(obwohl ein standardmäßiges Haar-Filter
ebenfalls verwendet werden könnte).
Die Region 542 des Luminanzbandes 512 wird weiter
in Regionen 560 und 562 aufgespaltet. Die Region 544 wird
in Regionen 564 und 566 aufgespaltet. Die Region 546 des
Chrominanzbandes 514 wird in Regionen 570 und 572 aufgespaltet.
Auf ähnliche
Weise wird die Region 548 in Regionen 574 und 576 aufgespaltet.
Die Region 550 des Chrominanzbandes 518 wird in
Regionen 580 und 582 aufgespaltet. Auf ähnliche
Weise wird die Region 552 in Regionen 584 und 586 aufgespaltet.
Auf diese Weise werden Luminanz- und Farbinformationen weiter in
Regionen 560, 570 und 580 isoliert.
-
16 stellt
Block 520 nach einem horizontalen Filter in Durchlauf 5
dar. Bei Durchlauf 5 wird das verbesserte 2-6-Biorthogonalfilter wiederum an ausgewählte Regionen
angewendet, um weiter Luminanz- und Chrominanzinformationen herauszuarbeiten
(obwohl ein standardmäßiges Haar-Filter
ebenfalls verwendet werden könnte).
Die Region 560 des Luminanzbandes 512 wird in
Regionen 590 und 591 aufgespaltet. Die Region 570 des
Chrominanzbandes 514 wird in Regionen 594 und 595 aufgespaltet. Die
Region 580 des Chrominanzbandes 518 wird in Regionen 598 und 599 aufgespaltet.
An diesem Punkt wurden fast alle Luminanz- und Farbinformationen
aus dem Originalvideosignal in den Regionen 590, 594 und 598 isoliert.
Da die Originalblockgröße 8 Abtastlinienzeilen
mal 32 Pixel breit ist, stellen die Regionen 590, 594 und 598 einen
Pixelwert dar und ein weiteres Filtern und Aufspalten ist nicht
notwendig.
-
Der
Pixelwert 590 enthält
nun die wichtigen Luminanzinformationen für den Block, d. h. die durchschnittliche
Luminanz für
den Block. Auf ähnliche Weise
enthalten die Pixel werte 594 und 598 der Bänder 514 und 518 jeweils
die entsprechenden Durchschnittsfarben für das Chrominanzband für den Block.
Somit wurden die Luminanz- oder Farbinformationen für jedes
Band komprimiert; ein einzelner Koeffizient für jedes Band beschreibt in
relativ wenig Bits die durchschnittliche Luminanz oder Farbe für den Block.
(Das heißt,
Werte 594 und 598 halten die DC-Koeffizienten
für jedes
Band.) Diese Koeffizienten sind relativ gesehen größer als
ihre umliegenden Koeffizienten. Zum Beispiel können Koeffizienten 590, 594 und 598 9
Bits aufweisen, während
ihre naheliegendsten Koeffizienten (nach rechts und unten) 7 Bits
aufweisen, die nächsten
3 Bits aufweisen, etc. Koeffizienten um den Wert 590 liefern
die Luminanzdifferenzen von einer Seite des Blocks zu der anderen,
während
jene Koeffizienten um die Werte 594 und 598 die
Farbdifferenzen von einer Seite des Blocks zu der anderen liefern
(d. h. Farbabweichungen innerhalb des Blocks). Nach diesen Durchläufen wurden
sogenannte „Transformationspyramiden" in den Regionen 592 und 596 gebildet.
-
Es
sollte darauf hingewiesen werden, dass für Blöcke mit größeren Größen das weitere vertikale und
horizontale Filtern wünschenswert
wäre, um
die Farbträgerinformationen
weiter zu isolieren. Natürlich kann
für Blöcke mit
geringeren Größen eine
geringere Anzahl von Durchläufen
ausreichend sein.
-
MODIFIZIERTE
HAAR-TRANSFORMATION
-
17 stellt
das allgemeine Konzept hinter einer Haar-Transformation 650 dar, die
nützlich
ist bei Haar-Einheiten 122 und 130. Im allgemeinen
berechnet eine Haar-Transformation
Summen und Differenzen zwischen entsprechenden Blöcken aus Rahmen
oder Feldern. 17 stellt eine kombinierte Zwischenfeld-
und Zwischenrahmen-Haar-Transformation dar. Der Rahmen 652 umfasst
Felder 654 und 656; der Rahmen 662 umfasst
Felder 664 und 666. Der Rahmen 652 und der
Rahmen 662 folgen einander zeitlich und sind anderweitig
verwandt. Jedes der Felder enthält
einen entsprechenden Block 670a, 670b, 670c oder 670d,
die einander im Hinblick auf ihre Position innerhalb des Feldes
entsprechen. Die Blöcke 670a – 670d können einander
ebenfalls auf eine andere Weise entsprechen oder anderweitig verwandt
sein. Die Haar-Transformation beginnt durch Berechnen 680 einer
Summe und einer Differenz zwischen Blöcken 670a und 670b des
Rahmens 650. Als nächstes
liefert die Berechnung 682 die Summe und die Differenz
zwischen den Blöcken 670c und 670d des
Rahmens 662. Als nächstes
berechnet der Prozess die Summe der zwei Summen aus den zwei Rahmen
und die Differenz der Differenzen zwischen den Paaren der Felder.
Somit wird eine Gesamtsumme und eine Differenz 684 zwischen zwei
aufeinander folgenden Rahmen erzeugt. Obwohl jeder dieser Werte
als ein Ergebnis der Haar-Transformation ausgegeben werden kann,
werden üblicherweise
vier Werte ausgegeben: die Differenz zwischen den Feldern 654 und 656;
die Differenz zwischen den Feldern 664 und 666;
die Differenz zwischen diesen vorangehenden Differenzen (die Differenz
zwischen Rahmen 652 und 662); und die Summe der
Rahmen 652 und 662. Ein solcher Vergleichsprozess,
wie z. B. Haar, ist für
eine progressive, Zwischenzeilen- oder eine andere Art von Abtastung
anwendbar.
-
18 stellt
eine Zwischenfeld-Haar-Einheit 122 zum Durchführen einer
modifizierten Haar-Transformation an zwei entsprechenden Blöcken dar,
die von der Speicherung 118 empfangen werden. Die Einheit 122 empfängt entsprechende Blöcke von
geraden und ungeraden Feldern aus der Speicherung 118 in
Teildecodierern 702 bzw. 704. Die Ausrichtungseinheit 706 führt eine
zusätzliche Decodierung
nach Bedarf durch und richtet die Bitströme aus. Die Ausrichtungseinheit 706 ist
nützlich, da
die vorangehende Codierung mit variabler Länge die entsprechenden Koeffizienten
aus den entsprechenden Blöcken
außer
Ausrichtung platziert hat. Koeffizienten ungleich Null laufen durch
die Haar-Transformation 708 während Nulldurchläufen und
werden direkt zu Quantisierer/Codierer 710 und 712 weitergeleitet.
Diese Quantisierer/Codierer empfangen Ergebnisse von der Haar-Transformation 708 und
Nullläufe
von der Ausrichtungseinheit 706 und führen eine weitere Codierung
nach Bedarf durch und geben die Summe 714 und die Differenz 716 der zwei
entsprechenden Blöcke
für eine
Lieferung zu der Rahmenblockspeicherung 126 aus. Quantisierer/Codierer 710 und
712 führen
eine Quantisierung und Codierung des Blocks auf eine ähnliche
Weise zu Schritt 226 und 232 durch. Es sollte
darauf hingewiesen werden, dass unterschiedliche Parameter für eine unterschiedliche
Codierungstechnik bei diesem Schritt verwendet werden können, oder
dass eine vollständig
unterschiedliche Codierungstechnik verwendet werden kann.
-
Die
Haar-Transformation 708 ist vorzugsweise ein Bit breit,
wodurch äußerst schnelle
Vergleiche geliefert werden. Eine weitere Trennung von Chrominanzinformationen
kann hier ebenfalls durchgeführt werden.
Eine Zwischenrahmen-Haar-Einheit 130 ist vorzugsweise
im Wesentlichen auf die gleiche Weise aufgebaut wie die Einheit 122,
außer
dass Blöcke aus
entsprechenden Rahmen verglichen werden und nicht Blöcke aus
Feldern.
-
FARBDREHUNG
-
21 stellt
eine Farbdreheinheit 132 zur Verwendung beim Durchführen einer
effizienten Farbdrehung in Verbindung mit dem Ausführungsbeispiel
der beschriebenen Erfindung dar. Die Einheit 132 wandelt
Farbinformationen von einem Koordinatensystem in ein anderes um.
Vorteilhafterweise wird eine Umwandlung zwischen Systemen (wie z.
B. YIQ, YUV, RGB oder Modifikationen dieser Art) mit einer Komprimierung
integriert und erfordert keine teuren Matrixmultiplikationen. Im
allgemeinen kann eine Farbdrehung eines Farbsignals vor einer Datentransformation
in dem Modul 114 oder nach einer Transformation auftreten,
da beide Operationen sich miteinander austauschen. Vorteilhafterweise
werden Paare aus Pixeln aus Chrominanztransformationspyramiden 592 und 596 unter
Verwendung einer Drehmatrix nach einer Transformation gedreht. Nach
einer Transformation sind viele Paar Null oder sehr kleine Zahlen,
was bedeutet, dass eine Berechnung weit einfacher ist.
-
Eine
Farbdreheinheit 132 kann eine Drehung an einem geeigneten
Punkt innerhalb des Systems 100 durchführen. Vorzugsweise wird eine
Drehung nach einer Transformation in dem Modul 114 durchgeführt, um
einen Vorteil aus der Konzentration der Farbinformationen in den
Chrominanztransformationspyramiden 592 und 596 zu
ziehen (und der entsprechenden Erhöhung bei Nullwerten). Wiederum vorzugsweise
wird eine Drehung nach einer Quantisierung und Codierung in dem
Modul 114 durchgeführt,
um einen weiteren Vorteil aus der Beseitigung von Nullkoeffizienten
und vorangehenden Nullen an kleinen Koeffizienten zu ziehen. Wiederum
vorzugsweise tritt eine Drehung nach jeder Haar-Einheit 122 oder
Haar-Einheit 130 auf,
um einen weiteren Vorteil aus der Komprimierung zu ziehen, die in
diesen Einheiten durchgeführt
wird, wobei eine Farbdreheinheit 132, die nach der Haar-Einheit 130 platziert
ist, am bevorzugtesten ist, da die Daten an diesem Punkt am weitesten
komprimiert sind. Somit wird eine Drehung an einem komprimierten
Block in dem Transformationsbereich durchgeführt, der viel weniger Bits
aufweist als ein dekomprimierter Block.
-
Wie
oben erklärt
wurde, wandelt die Drehung von einem Koordinatensystem zu einem
anderen um. Bei einem bestimmten Ausführungsbeispiel der vorliegenden
Erfindung erzeugen die Durchläufe
2 – 5
Chrominanzsignale, die einem YUV-Signal entsprechen, das um 45 Grad
gedreht ist. Die Farbdreheinheit 132 wird verwendet, um
diese eingebrachte Drehung zu korrigieren, oder um das Signal in
ein anderes Farbkoordinatensystem zu platzieren. Die Einheit 132 ist
nicht unbedingt notwendig. Zum Beispiel, wenn die Videoinformationen,
die unter Verwendung des Systems 100 komprimiert wurden, nicht
in ein anderes Koordinatensystem zur Verwendung umgewandelt werden
müssen,
ist eine Farbdrehung vielleicht nicht notwendig.
-
Die
Farbdreheinheit 132 empfängt einen komprimierten Bitstrom 770 von
der Haar-Einheit 130. Der Bitstrom 770 präsentiert
Paaren aus Pixelkoeffizienten 772 ein niederwertiges Bit
(LSB) nach dem anderen zuerst in serieller Form. Vorzugsweise werden
nur signifikante Bits präsentiert.
Die Einheit 130 führt
eine Seriell-Mal-Parallel-Multiplizierung durch. Die Koeffizienten 772 werden
mit Drehmatrixelementen R(11), R(12), R(21) und R(22) multipliziert,
wie gezeigt ist, und die Ergebnisse werden summiert, um das Pixelpaar
b(U) und b(V) in einem neuen Koordinatensystem zu liefern. Das neue
Paar wird dann aus der Einheit 130 in serieller Bitstromform
ausgegeben. Werte für
die Elemente der Drehmatrix werden ausgewählt, um in das gewünschte Farbkoordinatensystem
umzuwandeln; solche Werte sind in der Technik bekannt. Pixelkoeffizienten 772 folgen
einander in dem Bitstrom, da sie aus einem Direktzugriffsspeicher
in der gewünschten
Reihenfolge gelesen werden können.
-
Eine
Seriell-Mal-Parallel-Multiplizierung ist eine bekannte Technik zum
Multiplizieren eines seriellen Multiplizierers (eines Koeffizienten)
mit einem parallelen Multiplikanden (einem Drehmatrixelement). Vorteilhafterweise
ist die Datenrate in dem System 100 niedrig genug, dass
ein solcher bitserieller Multiplizierer anstelle einer teuren parallelen
Multiplikation verwendet werden kann. Zum Beispiel ist eine Datenrate
im Bereich von 15 Mb/s niedrig genug, um zu ermöglichen, dass ein solcher bitserieller Multiplizierer
verwendet wird.
-
Eine
solche Seriell-Mal-Parallel-Multiplizierung auf binäre Weise
verwendet Schiebe- und Addierungsoperationen und wird ebenfalls
als ein paralleler Addierer bezeichnet. Eine solche Seriell-Mal-Parallel-Multiplizierung
anstelle einer Parallelmultiplikation kann in einer viel kleineren
integrierten Schaltung implementiert werden. Zum Beispiel, obwohl
eine Farbdreheinheit, die eine Parallelmultiplikation von Koeffizienten
und Matrixelementen verwendet, einen großen Raumbetrag in einer integrierten
Schaltung einnehmen könnte,
könnte
eine solche Einheit, die unter Verwendung der Techniken implementiert
wird, die hierin beschrieben sind, den Raum ebenfalls, der benötigt wird,
um einen Faktor von 10 reduzieren. Somit kann eine integrierte Schaltung, die
die vorliegende Erfindung verkörpert,
viel kleiner gemacht werden und/oder Raum für eine andere Funktionalität aufweisen.
-
Ferner,
da die Farbdrehung mit einem Komprimierungsalgorithmus integriert
ist, der in der Lage ist, Blöcke
unabhängig
zu behandeln, kann die Drehung von Pixeln lokal auftreten, wenn
der Bitstrom durch das System 100 fließt, ohne den Bedarf zum Speichern
eines Feldes oder eines Rahmens aus Informationen, bevor eine Drehung
auftreten kann. Wenn ein Block (oder ein anderer Abschnitt eines
Bildes) in komprimierter Form, der zwei Chrominanzsignale darstellt,
durch das System 100 läuft,
können die
zwei Signale durch direktes Arbeiten an dem komprimierten Block
gedreht werden. Eine Farbdrehung ist mit einer Komprimierung integriert,
ohne den Bedarf zum Durchführen
einer Drehung an einer separaten Vorrichtung.
-
COMPUTERSYSTEMAUSFÜHRUNGSBEISPIEL
-
23 stellt
ein Computersystem 900 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung dar. Das Computersystem 900 umfasst eine
beliebige Anzahl von Prozessoren 902 (ebenfalls bezeichnet
als zentrale Verarbeitungseinheiten oder CPUs), die mit Speicherungsvorrichtungen
gekoppelt sind, die eine primäre
Speicherung 906 (wie z. B. einen Direktzugriffsspeicher
oder RAM) und eine primäre
Speicherung 904 (wie z. B. einen Nur-Lese-Speicher oder
ROM) umfassen. Wie in der Technik bekannt ist, handelt eine primäre Speicherung 904 zum Übertragen
von Daten und Anwei sungen unidirektional zu der CPU, und die primäre Speicherung 906 wird üblicherweise
verwendet, um Daten und Anweisungen auf eine bidirektionale Weise zu übertragen.
Beide diese primären
Speicherungsvorrichtungen können
ein geeignetes der computerlesbaren Medien umfassen, die nachfolgend
beschrieben sind. Eine Massenspeicherungsvorrichtung 908 ist
ebenfalls bidirektional mit der CPU 902 gekoppelt und liefert
eine zusätzliche
Datenspeicherungskapazität
und kann ferner eines der nachfolgend beschriebenen computerlesbaren
Medien umfassen. Die Massenspeicherungsvorrichtung 908 kann
verwendet werden, um Programme, Daten und ähnliches zu speichern, und
ist üblicherweise
ein sekundäres
Speicherungsmedium (wie z. B. eine Festplatte), die langsamer ist
als eine primäre
Speicherung. Es wird darauf hingewiesen, dass die Informationen,
die innerhalb der Massenspeicherungsvorrichtung 908 gehalten
werden, in geeigneten Fällen auf
standardmäßige Weise
als Teil einer primären Speicherung 906 als
virtueller Speicher eingelagert sein können. Eine spezifische Massenspeicherungsvorrichtung,
wie z. B. eine CD-ROM 914, leitet Daten unidirektional
zu der CPU.
-
Die
CPU 902 ist ferner mit einer Schnittstelle 910 gekoppelt,
die eine oder mehrere Eingabe-/Ausgabevorrichtungen umfasst, wie
z. B. Videomonitore, Steuerungsbälle,
Mäuse,
Tastaturen, Mikrophone, berührungsempfindliche
Anzeigen, Wandlerkartenleser, Magnet- oder Papierbandleser, Tabletts,
Stifte, Stimm- oder Schreiberkenner, Biometrikleser oder andere
Computer. Die CPU 902 kann optional mit einem anderen Computer-
oder Telekommunikationsnetzwerk gekoppelt sein, unter Verwendung
einer Netzwerkverbindung, die allgemein bei 912 gezeigt ist.
Bei einer solchen Netzwerkverbindung wird davon ausgegangen, dass
die CPU Informationen von dem Netzwerk empfangen könnte oder
Informationen an das Netzwerk im Laufe der Durchführung der oben
beschriebenen Verfahrensschritte ausgeben könnte. Ferner können die
Verfahrensausführungsbeispiele
der vorliegenden Erfindung nur auf der CPU 902 ausgeführt werden
oder können über eine Netzwerkverbindung
ausgeführt
werden, wie z. B. das Internet, in Verbindung mit einer entfernten
CPU, die einen Abschnitt der Verarbeitung gemeinschaftlich durchführt.
-
Zusätzlich dazu
beziehen sich Ausführungsbeispiele
der vorliegenden Erfindung ferner auf Computerspeicherungsprodukte
mit einem computerlesbaren Medium, das einen Programmcode auf demselben
aufweisen kann, zum Durchführen
verschiedener computerimplementierter Operationen. Das Medium und
der Programmcode können
speziell entworfen und zu dem Zweck der vorliegenden Erfindung aufgebaut
sein, oder sie können
von der Art sein, die für
Fachleute auf dem Gebiet von Computersoftware bekannt und verfügbar ist.
Beispiele von computerlesbaren Medien umfassen, sind jedoch nicht
beschränkt
auf: magnetische Medien, wie z. B. Festplatten, Disketten und Magnetband;
optische Medien, wie z. B. CD-ROM-Platten; magnetooptische Medien,
wie z. B. floptische Platten; und Hardwarevorrichtungen, die speziell
konfiguriert sind, um einen Programmcode zu speichern und auszuführen, wie
z. B. anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare
Logikvorrichtungen (PDLs) und ROM- und RAM-Vorrichtungen. Beispiele
eines Programmcodes umfassen Maschinencode, wie z. B. durch einen
Kompilierer erzeugt wird, und Dateien, die einen Code höherer Ebene
enthalten, die durch einen Computer unter Verwendung eines Interpretierers
ausgeführt
werden.
-
Obwohl
die vorangehende Erfindung detailliert zu Zwecken der Klarheit des
Verständnisses
beschrieben wurde, ist es offensichtlich, dass bestimmte Änderungen
und Modifikationen innerhalb des Schutzbereichs der beiliegenden
Ansprüche
praktiziert werden können.
Zum Beispiel ist die vorliegende Erfindung an eine breite Vielzahl
von Standbildern, Videobildern und Daten höherer Dimensionen anwendbar.
Zum Beispiel trifft die vorliegende Erfindung auf zweidimensionale
Standbilder, dreidimensionale Videobilder und vierdimensionale seismische
Informationen zu. Im allgemeinen ist die vorliegenden Erfindung
nützlich
für die
Komprimierung und Dekomprimierung von mehrdimensionalen Informationen.
Die Erfindung ist an eine Vielzahl von Videostandards anwendbar,
einschließlich
zusammengesetztem Video, S-Video und anderen. Eine direkte Komprimierung eines
kombinierten Videosignals (das Farbe und/oder Schwarz-und-Weiß kombiniert),
ist an zusammengesetztes Video, S-Video und andere ähnliche
Signale anwendbar. Eine temporäre
Komprimierung von Blöcken
ist an eine breite Vielzahl von Komprimierungstechniken anwendbar,
zusätzlich
zu den hierin beschriebenen. Ferner kann eine Farbdrehung zwischen
einer breiten Vielzahl von Farbräumen durchgeführt werden.
Die Grenzfilter, die hierin beschrieben sind, sind ferner an andere
Abschnitte von Rahmen und Feldern zusätzlich zu Blöcken anwendbar.
Daher sollten die beschriebenen Ausführungsbeispiele als darstellend
und nicht einschränkend
genommen werden, und die Erfindung sollte nicht auf die Details
eingeschränkt
sein, die hierin gegeben sind, sondern sollte durch die nachfolgenden
Ansprüche
definiert sein.