-
Diese Erfindung betrifft Verfahren
zum Codieren eines Videosignals und Codierer zum Komprimieren eines
Videosignals.
-
Gegenwärtige Videosysteme verwenden
viele verschiedene Videokomprimierungstechniken bei der Übertragung
von Videodaten. Diese Techniken enthalten die Verwendung von Video-Codebüchern, Entropiecodierern
und Quantisierern.
-
Ein Quantisierer ist eine Vorrichtung,
die ein Signal, das eine große
Anzahl von Werten darstellen kann, durch ein Signal ersetzt, das
eine geringere Anzahl von Werten darstellen kann. Es gibt zwei grundlegende
Arten von Quantisierern, die bei der Übertragung von Daten zwischen
einer Quelleneinheit und einer Zieleinheit verwendet werden: skalare Quantisierer
und Vektor-Quantisierer.
Skalare Quantisierer bearbeiten Signale mit einem einzigen Freiheitsgrad.
Eine Art von skalarem Quantisierer ist ein Analog/Digital-Wandler.
Ein Analog/Digital-Wandler nimmt ein kontinuierlich variierendes
oder analoges Signal, das eine Spannung aufweist, die einen von mehreren
verschiedenen Werten annehmen kann, und wandelt dieses Signal in
ein digitales Signal mit nur einer begrenzten Anzahl von Werten
um. Zum Beispiel kann ein Vier-Bit-Analog/Digital-Wandler den Wert
eines analogen Signals durch ein digitales Signal darstellen, das
nur einen von sechzehn verschiedenen Werten haben kann.
-
Vektor-Quantisierer bearbeiten andererseits Signale
mit mehreren Freiheitsgraden. Eine Art von Vektor-Quantisierer ist
ein Video-Codec, der für
eine Videobildkomprimierung sorgt. Es kann behauptet werden, dass
ein Vektor-Quantisierer im Wesentlichen ein Bild in zahlreiche kleine
Elemente, sogenannte Pixel, unterteilt. Zum Beispiel kann ein Bild
eines Autos in ein 600 × 600
Pixelgitter geteilt werden, wobei jedes Pixel im We sentlichen ein
Punkt in dem Bild des Autos ist. Von einer Gruppe dieser Pixel kann
behauptet werden, dass sie einen Vektor oder ein Teilbild des Autobildes
formt. Das heißt,
von jeder N × N-Teilfläche von
Pixeln des Bildes wird behauptet, dass sie einen Bildvektor bildet.
Somit kann ein Bild durch eine Gruppe von Bildvektoren dargestellt werden,
wobei die Anzahl von Bildvektoren, die zur Darstellung des gesamten
Bildes notwendig ist, von der Größe jedes
Bildvektors abhängig
ist.
-
Ein Codebuch ist ein Speicher, der
einen bestimmten Satz von Vektoren speichert, welche die am häufigsten
vorgefundenen Vektoren in einem Bild darstellen. Zum Beispiel kann
ein Codebuch einen Vektor mit einer N × N-Teilfläche von schwarzen Pixeln, einer
N × N-Teilfläche von
weißen
Pixeln und/oder einer N × N-Teilfläche, in
der eine Hälfte
der Pixel weiß und
die andere Hälfte
schwarz sind, enthalten. Jedem Codebuch-Vektor wird ein einzigartiger
Identifizierungscode oder eine Adresse in dem Speicher, in dem er
enthalten ist, zugeordnet. Zum Beispiel kann der vollständig weißen N × N-Teilfläche von
Pixeln oder dem Codebuch-Vektor ein ID-Code oder eine Adresse #01
zugeordnet werden, während dem
vollständig
schwarzen Codebuch-Vektor ein ID-Code oder eine Adresse #02 zugeordnet
werden kann. Der Schlüssel
ist, dass das Videokomprimierungssystem ein Codebuch mit einer ausreichenden Vielzahl
an Vektoren hat, so dass wenigstens ein Codebuch-Vektor mit jedem
der vielen Vektoren eng übereinstimmt,
die in dem Bild auftreten können.
-
Wenn daher ein Vollbild quantisiert
wird, unterteilt ein Vektor-Quantisierer das Vollbild in eine Reihe
von Bildvektoren. Für
jeden Bildvektor identifiziert der Vektor-Quantisierer einen eng übereinstimmenden
Codebuch-Vektor und erzeugt ein neues Signal, das aus dem Identifizierungscode
oder der Adresse des am engsten übereinstimmenden
Codebuch-Vektors besteht, der in dem Codebuch für jeden Bildvektor gefunden
wird.
-
Die Entropiecodierung ist eine Technik
einer verlustlosen Datenkomprimierung, welche die statistischen
Eigenschaften einer Datenquelle nutzt, um eine kompakte Datendarstellung
zu erreichen. Daher verwendet ein Entropiecodierer ein Verfahren
zur Verringerung der Informationsbit, die übertragen werden müssen, unter
Nutzung einer gewissen Eigenschaft der Datenquelle und/oder der
Daten, die von dieser Quelle kommen. Wenn zum Beispiel eine Quelle
häufig
denselben Bildvektor sendet, setzt die Entropiecodierung (auch als
variable Längencodierung
(VLC) bekannt) die Eingangsdaten, die häufig ein Format unveränderlicher
Länge aufweisen,
in Codes variabler Längen
um. Das grundlegende Konzept hinter VLC ist die Darstellung häufigerer
Daten durch kürzere
Codes und weniger häufiger
Daten durch längere
Codes, wodurch die durchschnittliche Codelänge kürzer als eine Darstellung unveränderlicher
Länge wird.
-
Die Lauflängencodierung ist eine weitere Technik
zur Darstellung von Videodaten. Sie ist zur Darstellung einer Sequenz
von Werten zweckdienlich, wenn viele der Werte Null sind und Werte
ungleich Null unter diesen verteilt sind. In der Lauflängencodierung
wird die Sequenz durch Senden von Zahlenpaaren übertragen. Die erste stellt
die Zahl aufeinander folgender Nullen vor einem Wert ungleich Null
dar, und die zweite stellt den Wert ungleich Null dar. Betrachten
wir zum Beispiel die Sequenz 000030000002001. Eine solche Sequenz
könnte durch
Senden der Paare (4,3), (6,2), (2,1) übertragen werden. Solche Sequenzen
treten auf, wenn die Bildvektoren skalar quantisiert sind und viele
Komponenten nachfolgend durch 0 dargestellt sind. Viele Videocodierer
verwenden sowohl die Lauflängencodierung
als auch die Entropiecodierung, indem eine variable Längen-(Entropie-)Codierung
an den Paaren angewandt wird, die von dem Lauflängencodierer erzeugt werden.
-
In heutigen Videosystemen, die ein
Codebuch zur Komprimierung der Videodaten verwenden, sendet das
System entweder den Codebuch-Index (d. h., die Codebuch-Adresse
des Bildvektors, der mit dem tatsächlichen Videoblock am engsten übereinstimmt)
oder eine skalare quantisierte Version des tatsächlichen Videoblocks, abhängig davon,
welche weniger Bit benötigt.
Dadurch kann die Regenerierung des Vollbildes beim Decodierer durch
eine Vorrichtung ausgeführt
werden, die ein Kopie des Codebuchs hat, das beim Codierer verwendet
wird. Eine solche Vorrichtung regeneriert das Bild durch Ersetzen
jeder Codebuch-Adresse durch ihren entsprechenden Codebuch-Vektor.
Da die Codebuch-Einträge
nicht exakt mit den Originalbildvektoren übereinstimmen, unterscheidet
sich jedoch das regenerierte Bild von dem Originalbild durch einen
gewissen Restwert oder eine Verzerrung.
-
Dem Fachmann ist bekannt, dass die
gesamte Systemverzerrung durch Erhöhen der Anzahl von Codebuch-Einträgen verringert
werden kann. Es ist jedoch auch bekannt, dass die Erhöhung der
Anzahl von Codebuch-Einträgen die
Anzahl von Rechenschritten erhöht,
die notwendig sind, um einen Codebuch-Vektor mit dem tatsächlichen
Videodatenblock, der gesendet wird, in Übereinstimmung zu bringen.
Es ist auch bekannt, dass die Erhöhung der Anzahl von Einträgen die
Anzahl von Bit erhöht,
die zum Adressieren des Codebuchs notwendig sind, wodurch die Rate
erhöht
wird. Daher sind gegenwärtige
Systeme durch die Größe des Codebuchs
begrenzt, das zum Komprimieren von Videodaten verwendet werden kann,
wodurch Videosystemkonstrukteure gezwungen sind, die Bildqualität der Geschwindigkeit
zu opfern.
-
EP-A-0679033 beschreibt eine Vektorquantisierungscodierungsvorrichtung,
die ein Codebuch zur Aufzeichnung repräsentativer Vektoren umfasst und
die auch Mittel zum Wählen
eines repräsentativen
Codebuch-Vektors mit der geringsten Verzerrung und zum Generieren
von Indexdaten für
den gewählten
Vektor umfasst. Der Eingangsvektor und der gewählte Vektor werden zum Generieren
eines Differenzvektors verwendet, der zum Ändern des gewählten Vektors
verwendet wird, um die Norm des Differenzvektors entweder vor oder
nach dem Decodierungsprozess zu verringern.
-
Gemäß einem Aspekt dieser Erfindung
wird ein Verfahren nach Anspruch 1 bereitgestellt.
-
Gemäß einem anderen Aspekt dieser
Erfindung wird ein Codierer nach Anspruch 5 bereitgestellt.
-
Die vorliegende Erfindung betrifft
ein Hochgeschwindigkeitsverfahren und eine Vorrichtung zum Komprimieren
von Daten, ohne die Qualität
der Datenrekonstruktion zu verringern. Um dies zu erreichen, drückt die
vorliegende Erfindung jeden Eingangsvektor oder Block von Originaldaten
als eine Kombination aus einem Codebuch-Index und einem Fehlerdifferenzial aus
oder als eine komprimierte Version des Originaldatenblocks, abhängig davon, welche
weniger Bit benötigt.
-
In einer Ausführungsform wird ein Satz von Codebuch-Vektoren erzeugt
und in einem Codebuch gespeichert, wobei die Codebuch-Vektoren durch
einen einzigartigen Identifizierungscode abrufbar und identifizierbar
sind. Die Originaldaten sind als ein Satz von Eingangsvektoren organisiert.
Für jeden Eingangsvektor
wird ein Codebuch-Vektor, der mit dem Eingangsvektor eng übereinstimmt,
gewählt, und
ein Fehlerdifferenzial oder ein Abstand zwischen dem gewählten, eng übereinstimmenden
Codebuch-Vektor und dem Eingangsvektor wird berechnet. Danach wird
jeder Eingangsvektor entweder als eine Kombination aus dem Identifizierungscode
des eng übereinstimmenden
Codebuch-Vektors und dem berechneten Fehlerdifferenzial, oder als
eine komprimierte Version der Originaldaten ausgedrückt, abhängig von
der Anzahl von Bit, die notwendig sind, um jede auszudrücken.
-
In einer anderen Ausführungsform
wird die Flexibilität,
Videodaten in einem komprimierten Format oder als eine Kombination
aus einem Codebuch-Index plus einem Fehlerdifferenzial zwischen den
Originaldaten und dem übereinstimmenden
Codebuch-Vektor auszudrücken,
durch ein Videosystem bereitgestellt, das ein Codebuch, einen skalaren Quantisierer
und einen Entropiecodierer verwendet. In jeder Ausführungsform
stellt die Vorrichtung und das Verfahren der vorliegenden Erfindung
ein flexibles Mittel zum Komprimieren von Daten bereit, so dass
erhöhte
Kompressionsraten in gegenwärtigen Systemen
erreicht werden können,
ohne auf Qualität zu
verzichten. Somit überwindet
die vorliegende Erfindung in hohem Maße die Einschränkungen
nach dem Stand der Technik.
-
In verschiedenen Ausführungsformen
können
die Eingangsvektoren, die komprimiert sind, als Alternative Blöcke der
Originalbilddaten oder Datenblöcke
umfassen, die auf verschiedene Weisen vorverarbeitet sind. Zum Beispiel
können
die Eingangsvektoren Blöcke
umfassen, die aus der räumlichen Domäne z. B.
in eine Frequenz-Domäne
transformiert wurden, die unter Verwendung einer herkömmlichen
Transformation, wie der allgemein bekannten Discrete Cosine Transformation
(DCT) erzeugt wurden. Wenn das Eingangssignal ein Videosignal umfasst,
können
die Eingangsvektoren ferner "intercodierte" Blockdaten umfassen
(d. h., Daten, welche die Differenz zwischen einem aktuellen Bilddatenblock
und einem entsprechenden vorhergehenden Bilddatenblock darstellen),
die durch herkömmliche Bewegungsvorhersagetechniken
("Motion Prediction Techniques") "bewegungskompensiert" sein können oder
nicht, im Gegensatz zu "intracodierten" Blockdaten (d. h.,
Daten, die nur den aktuellen Bildblock darstellen). Es ist zu beachten,
dass jede dieser Techniken dem Fachmann vertraut ist.
-
Diese und andere Merkmale der Erfindung sind
in der folgenden ausführlichen
Beschreibung der Ausführungs formen
der Erfindung in Zusammenhang mit den Zeichnungen ausführlicher
beschrieben. Der Schutzumfang der Erfindung ist jedoch nur durch
die beiliegenden Ansprüche
begrenzt.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein Ausführungsbeispiel
eines flexiblen Datenverdichters, der für eine erhöhte Komprimierung sorgt, ohne
im Wesentlichen die Systemqualität
zu verringern, und die vorliegende Erfindung verkörpert.
-
2 ist
ein Flussdiagramm einer Ausführungsform
eines Verfahrens der Erfindung zur Breitstellung der dynamischen
Optimierung der Datenkomprimierung.
-
Ausführliche
Beschreibung von Ausführungsbeispielen
der Erfindung
-
Unter Bezugnahme nun auf 1 ist eine Ausführungsform
eines flexiblen Datenverdichters dargestellt, der in der Folge als
Verdichter 10 bezeichnet wird. Wie dargestellt, hat der
Verdichter 10 ein Codebuch 11 mit einem Eingang 12,
der an einen skalaren Quantisierer 19 und einen Addierer 13 gekoppelt
ist, und einem Ausgang 14, der an den Addierer 13 und
einen Schalter 15 gekoppelt ist. Der skalare Quantisierer 19 ist
an einen Lauflängencodierer 6 gekoppelt,
der seinerseits an einen Entropiecodierer 16 gekoppelt
ist. Der Addierer 13 ist an einen skalaren Quantisierer 17 gekoppelt,
der seinerseits an einen Lauflängencodierer 5 gekoppelt
ist. Der Lauflängencodierer 5 ist
an einen Entropiecodierer 18 gekoppelt. Die Entropiecodierer 16 und 18 sind
an den Schalter 15 gekoppelt. Wie zuvor beschrieben, hat das
Codebuch 11 einen bestimmten Satz von Codebuch-Vektoren,
von welchen jeder an einer einzigartigen Adresse oder einem Index
in dem Codebuch gespeichert ist.
-
In Betrieb drückt der Verdichter 10 einen
bestimmten Block von Originaldaten oder einen Eingangsvektor in
einer von zwei Formen aus, abhängig von
dem Pfad des Eingangsvektors durch den Verdichter 10. Das
heißt,
abhängig
davon, ob die Eingangsdaten durch den Pfad 30 oder 31 ausgedrückt werden,
wie in 1 dargestellt,
nimmt der Eingangsvektor eine von zwei komprimierten Formen an:
(1) eine komprimierte Version des Eingangsvektors oder (2) eine
Kombination aus einem Codebuch-Index
und einem Rest oder Fehlerdifferenzialvektor.
-
Bei der Bewegung durch den Pfad 30 wird der
Eingangsvektor in das Codebuch 11 durch einen Eingangsport 12 eingegeben.
Ein Datenvektor, der mit dem Eingangsvektor eng übereinstimmt, wird in dem Codebuch 11 identifiziert,
und der identifizierte, eng übereinstimmende
Datenvektor wird gemeinsam mit seiner einzigartigen Codebuch-Adresse
ausgelesen. Die ausgelesene Codebuch-Adresse wird durch eine Leitung 21 an
den Schalter 15 ausgegeben und der entsprechende übereinstimmende
Codebuch-Vektor wird durch eine Leitung 22 an den Addierer 13 ausgegeben.
Der Originaldatenvektor wird auch um das Codebuch 11 zu
dem Addierer 13 geleitet, in dem eine Differenz zwischen
dem Originaldatenvektor und dem übereinstimmenden
Datenvektor zur Bestimmung eines Fehlerdifferenzialvektors berechnet
wird. Der Fehlerdifferenzialvektor oder der Rest wird vom Addierer 13 an
den skalaren Quantisierer 17 ausgegeben, der den quantisierten
Rest an den Lauflängencodierer 5 ausgibt,
der seinerseits den komprimierten codierten Rest an den Entropiecodierer 18 ausgibt.
Der Entropiecodierer 18 gibt seinerseits den komprimierten
codierten Rest an den Schalter 15 aus. Infolgedessen leitet
der Pfad 30 einen komprimierten codierten Rest und den
Codebuch-Index an
den Schalter 15 zur Darstellung an einem Ziel (nicht dargestellt).
-
Bei der Bewegung durch den Pfad 31 wird der
Eingangsvektor zu dem skalaren Quantisierer 19, dem Lauflängen codierer 6 und
dem Entropiecodierer 16 gesendet, der eine komprimierte
codierte Version des Eingangsvektors an den Schalter 15 ausgibt.
Der Schalter 15 ist seinerseits betätigbar, um eine Wahl zu treffen,
ob der Eingangsvektor als eine Kombination aus dem komprimierten
codierten Rest und dem Codebuch-Index, wie zuvor beschrieben, oder
als die komprimierte codierte Version des Eingangsvektors, wie zuvor
beschrieben, ausgedrückt
wird. In einer Ausführungsform
kann die Wahl von der Anzahl von Bit abhängen, die notwendig ist, um
die Kombination aus komprimiertem codierten Rest und Codebuch-Index
zu senden, im Vergleich zu der Anzahl von Bit, die zum Senden nur
der komprimierten Version des Eingangsvektors notwendig ist, die über den
Pfad 31 bereitgestellt wird. Infolgedessen stellt der Verdichter 10 ein
flexibles Mittel zur dynamischen Optimierung der Komprimierungsgeschwindigkeit
und -effizienz ohne Beeinträchtigung
der Datenqualität
bereit.
-
Unter Bezugnahme nun auf 2 ist eine Ausführungsform
eines Verfahrens zur Bereitstellung der dynamischen Optimierung
einer Datenkomprimierung dargestellt, die in der Folge als Datenkomprimierungsmethode 40 bezeichnet
wird. Wie dargestellt, erstellt die Datenkomprimierungsmethode 40 einen
Satz von Codebuch-Vektoren, Schritt 41, wobei jeder Codebuch-Vektor
durch einen einzigartigen Identifizierungscode identifiziert ist.
Dann werden in Schritt 42 die Originaldaten oder Eingangsdaten
als ein Satz von Eingangsvektoren organisiert. Die Eingangsvektoren
werden dann in einem Codebuch nach einem eng übereinstimmenden Codebuch-Vektor
durchsucht, Schritt 43. Dann wird in Schritt 44 der übereinstimmende
Codebuch-Vektor von dem Eingangsvektor subtrahiert, um einen Fehlerdifferenzialvektor
oder Restvektor zwischen den beiden zu bestimmen. Der Restvektor,
der einzigartige Identifizierungscode, der für den übereinstimmenden Codebuch-Vektor
identifiziert wurde, und der Eingangsvektor werden alle in Schritt 45 zu
einem Schalter 15 gesendet.
-
Der Schalter gibt dann in Schritt 46 entweder eine
Kombination aus dem einzigartigen Identifizierungscode und dem Restvektor
oder eine komprimierte Version des Eingangsvektors aus, abhängig von
der Anzahl von Bit, die zum Senden jedes einzelnen notwendig ist.
Insbesondere gibt der Schalter den Eingangsvektor als eine komprimierte
Version des Eingangsvektors aus, wenn dies effizienter ist, d. h.,
weniger Bit benötigt,
als der Ausdruck des Eingangsvektors als eine Kombination aus dem
Identifizierungsindex und dem Restvektor. Somit wird ein Mittel
zur Optimierung der Komprimierungseffizienz ohne Verringerung der
Systemqualität
bereitgestellt.
-
In einer anderen Ausführungsform
stellen die Vorrichtung und das Verfahren der vorliegenden Erfindung
eine flexible Datenkomprimierung für Videodaten in einem Videokommunikationssystem
bereit. Die vorangehende Beschreibung enthält jedoch Ausführungsbeispiele
und Verfahren zur Ausführung
der vorliegenden Erfindung. Verweise auf spezifische Beispiele und
Ausführungsformen
in der Beschreibung sollten in keiner Weise als Einschränkung der vorliegenden
Erfindung verstanden werden und dienen nur dem Zweck der Beschreibung
der allgemeinen Prinzipien der vorliegenden Erfindung. Für den Durchschnittsfachmann
ist offensichtlich, dass die vorliegende Erfindung durch andere
Ausführungsformen
ausgeführt
werden kann.