-
GEBIET
-
Die
vorliegende Erfindung bezieht sich im Allgemeinen auf die Gebiete
der Datenverarbeitung und Datenkommunikation, und im Speziellen
auf ein Verfahren, Vorrichtung und System zum Codieren und Decodieren
von Side- bzw. Nebeninformation für Multimedia-Übertragung.
-
HINTERGRUND
-
Mit
dem Fortschreiten von Technologie und dem kontinuierlich schnelleren
Anstieg hinsichtlich des Bedarfs von Video- und Audio-Signalverarbeitung
sind effektive und effiziente Techniken zur Signalverarbeitung und
Datenübertragung
immer wichtiger für
Systemkonstruktion und Implementierung geworden. Verschiedene Standards
oder Spezifikationen für
Multimedia-Verarbeitung
und Übertragung
inklusive der Video-Signalverarbeitung wurden über die Jahre hinweg entwickelt,
um verschiedene Codierungsschemata bezüglich von Multimedia-Signalverarbeitung
zu standardisieren und zu ermöglichen. Insbesondere
eine Gruppe, die als die Moving Pictures Expert Group (MPEG) bekannt
ist, wurde eingerichtet, um ein Standard oder eine Spezifikation
für die
codierte Darstellung von bewegten Bildern und zugeordneten Audio,
gespeichert auf einem digitalen Speichermedium zu entwickeln. Im
Ergebnis wurde ein Standard entwickelt, der bekannt ist als ISO/IEC 14496-2
(Teil 2 – Visual)
CODING OF AUDIO-VISUAL OBJECTS (auch im Folgenden als MPEG-4-Standard
oder MPEG-4-Spezifikation bezeichnet), veröffentlicht im Dezember 1999,
der verschiedene Codierungsschemata für visuelle Objekte oder Videosignale
standardisiert. ISO steht für
International Organisation for Standardization bzw. IEC steht für International
Electronical Commission. Im Allgemeinen standardisiert die MPEG-Spezifikation
nicht den Codierer, sondern vielmehr den Informationstyp, den ein Codierer
benötigt,
um einen MPEG-kompatiblen Bitstrom zu erzeugen und zu schreiben
sowohl als auch die Art und Weise, wie der Decodierer diese Information
analysieren (parse), dekomprimieren und resynthetisieren muss, um
das codierte Signal wieder zu gewinnen. [Q1] Andere Codierungsstandards
beinhalten, z. B., ITU-T Recommendation H.263 „Video Coding for Low Bitrate
Communication" H.264,
etc.
-
Ein
typisches Videoverarbeitungssystem 100 ist in 1 dargestellt,
was einen Video-Codierer 110 und einen Video-Decodierer 130 beinhaltet. In
dieser Konfiguration könnte
der Video-Codierer 110 und der Video-Decodierer 130 gemäß einem
bestehenden Standard oder Spezifikation operieren. Z. B. könnte der
Video-Codierer 110 und der Video-Decodierer 130 gemäß dem MPEG-4-Standard operieren.
Somit kann auf den Video-Codierer 110 als MPEG-4-Codierer und auf
den Video-Decodierer 130 als ein MPEG-4-Decodierer Bezug
genommen werden. In der Systemkonfiguration, die in der 1 dargestellt
wird, empfängt,
auf der Sendeseite der Video-Codierer 110 Video-Eingangsdaten und
codiert die Video-Eingangsdaten, um codierten Video-Daten zu generieren
oder zu produzieren, die zu dem Video-Decodierer 130 über einen
Kanal 120 gesendet werden. Der Kanal 120 kann
ein drahtloser oder drahtgebundener Kanal sein und auf ihn wird
auch als der Hauptkanal oder Hauptstrom Bezug genommen. An dem Empfangsende
empfängt
der Video-Decodierer 130 die codierten Video-Daten, decodiert
die codierten Video-Daten, um Video-Ausgabe-Daten zu generieren
oder zu produzieren. Während
des Übertragungsprozesses über den
Kanal 120 können
Fehler aufgrund verschiedener Faktoren inklusive Rauschen, Signalinterferenz,
Schwund oder Verbindungsverlust, etc. eingeführt werden. Solche Fehler werden
negativ die Performance des Video-Decodierers 130 beeinflussen
und somit wird die Qualität
der Video-Ausgabe-Daten verschlechtert. Verschiedene herkömmliche
Fehler-Codierungs-Techniken, wie z. B. Fehlerdetektierungscodierung,
Vorwärts-Fehlerkorrektur
bzw. Forward Error Correction (FEC) oder Schemata für automatisches Wiederholen/erneutes
Senden-Anfragen
(ARQ = automatic repeat/retransmission request) können verwendet
werden, um die Fehlerrate auf einem akzeptablen Pegel zu halten.
Solche herkömmlichen
Techniken können
jedoch in einer signifikanten Ineffizienz resultieren, aufgrund
der Datenredundanz und/oder längeren
Latenzzeiten. Video-Komprimierungsstandards sehen außerdem zusätzliche
Mechanismen vor, um die nachteiligen Effekte von Fehlern, die bei der Übertragung
einge führt
wurden, zu bekämpfen. Dies
sind Resynchronisations-Markierer, Daten-Partionierung, reversible variable Längen-Codierung (RVLC
= reversible variable length coding), etc. Diese Fehlerwiderstands-Hilfsmittel
erhöhen
die Komplexität
des Codierers/Decodierers und erhöhen die Datenrate, die benötigt wird
zum Senden von Video-Informationen. Weiterhin können diese Hilfsmittel nicht
einen adäquaten
Schutz gegenüber
burst-artigen bzw. stossweisen Fehlern vorsehen, die typischerweise
in einem Spreiz-Spektrums-Kommunikationskanal,
wie z. B. einem CDMA-Netzwerk zu beobachten sind.
-
Demgemäß besteht
ein Bedarf nach einem Verfahren, einer Vorrichtung und einem System
zum Verbessern der Qualität
von Multimedia-Informationen, wie z. B. Video-Daten in Multimedia-Verarbeitungssystemen
ohne dabei eine signifikante Verarbeitungsineffizienz auftreten
zu lassen.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die
vorliegende Erfindung ist durch die Ansprüche definiert.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Verschiedene
Aspekte und Merkmale der vorliegenden Erfindung sind in der folgenden
detaillierten und unter Bezugnahme auf die beigefügten Zeichnungen
offenbart, wobei in den Zeichnungen Folgendes gezeigt ist:
-
1 ist
ein Blockdiagramm, das ein typisches Video-Verarbeitungssystem darstellt;
-
2A ist
ein Blockdiagramm, das ein Verarbeitungssystem darstellt, in dem
beide Codierer- und Decodierer-Einheiten, Zugriff auf Nebeninformation
besitzen;
-
2B ist
ein Blockdiagramm, das ein Verarbeitungssystem darstellt, in dem
nur die Decodierer-Einheit Zugriff auf Nebeninformation besitzt;
-
3 ist
ein Blockdiagramm, eines beispielhaften Verarbeitungssystems gemäß einem
Ausführungsbeispiel
der Erfindung;
-
4 ist
ein Blockdiagramm eines Nebeninformations-Codierers gemäß einem
Ausführungsbeispiel
der Erfindung;
-
5 ist
ein Diagramm, das einen quantisierten Codewort-Satz und die Partitionen
des quantisierten Codewort-Raumes darstellt;
-
6 ist
ein Diagramm, das eine Mode-4-Benennung des Raumes der quantisierten
Codeworte darstellt:
-
7 ist
ein Blockdiagramm eines Decodierungs-Untersystems, das einen Seiten-Informations-Decodierer
gemäß einem
Ausführungsbeispiel der
Erfindung beinhaltet; und
-
8 ist
ein Flussdiagramm eines Verfahrens gemäß einem Ausführungsbeispiel
der Erfindung.
-
Detaillierte Beschreibung
-
In
der nachfolgenden detaillierten Beschreibung werden zahlreiche spezifische
Details dargelegt. Es sei jedoch anzumerken, dass verschiedene Ausführungsbeispiele
der Erfindung ohne diese spezifischen Details ausgeführt werden
können.
Der Fachmann wird erkennen und verstehen, dass verschiedene Ausführungsbeispiele
der Erfindung, die unten beschrieben sind, beispielhaft sind und
zur Darstellung der Erfindung, aber nicht zu deren Einschränkung, dienen.
-
Wie
unten kurz im Detail dargestellt wird, wird gemäß einem Ausführungsbeispiel
der Erfindung ein Verfahren- und System-Framework vorgesehen zum
Codieren von einem Extra-Digital-Strom zusätzlich zu einem Hauptstrom,
der einen Multimedia-Bitstrom trägt.
Der Extra-Digital-Strom wird im Folgenden auch als Side- bzw. Nebenkanal
oder Hint- bzw. Hinweis-Kanal bezeichnet.
-
Solch
ein Extra-Digital-Kanal kann verwendet werden zum Vorsehen einer
Fehlerwiderstandsfähigkeit
für den
Multimedia-Bitstrom, der über
den Hauptkanal gesendet wird, wodurch die Qualität der Multimedia-Information
(z. B. Videodaten), die an dem Empfangsende generiert wird (z. B.
die Videodaten, die durch einen Video-Decodierer generiert werden),
verbessert wird. Zusätz lich
kann gemäß einem
Ausführungsbeispiel
der Erfindung, das unten in größerem Detail
beschrieben wird, die Menge bzw. der Betrag der Hinweis- oder Nebenkanalinformation,
die über
den Nebenkanal gesendet wird, angepasst werden oder dynamisch angepasst
werden, basierend auf verschiedenen Faktoren inklusive Kanalbedingungen,
den Schutzbetrag, den der Nebenkanal vorsehen soll, etc.
-
Die
folgende Diskussion sieht Erläuterungen und
Darstellungen für
ein Verfahrens- und System-Framework vor, das Codierung mit Nebeninformation
verwendet. Das Framework des Codierens mit Nebeninformation wurde
diskutiert von S. S. Pradhan und K. Ramchandran in einem technischen Aufsatz
betitelt: „Distributed
Source Coding Using Syndromes (DISCUS): Design and Construction", in den Proceedings
of the Data Compression Conference (DCC), März 1999. Bezugnehmend auf 2A und 2B werden
Verarbeitungssysteme 200A und 2008 dargestellt.
Verarbeitungssystem 200A beinhaltet einen Codierer 210A,
der Daten zu einem Decodierer 230A über Kanal 220A sendet. Ebenfalls
beinhaltet Verarbeitungssystem 2008 einen Codierer 2108,
der Daten zu einem Decodierer 2308 über Kanal 2208 sendet.
-
Wie
in 2A und 2B gezeigt,
wird angenommen, dass X und Y 3-Bit lange binäre Daten sind, die mit gleicher
Wahrscheinlichkeit einen jeden der acht möglichen binären 3-Tupfe annehmen können. X
und Y sind jedoch korrelierte Zufallsvariablen. Die Korrelation
zwischen ihnen ist so, dass der Hamming-Abstand zwischen X und Y höchstens
1 ist. D. h., bei einem gegebenen Wert von Y (z. B. Y = [0 1 0]),
ist der Wert von X entweder derselbe, wie der Wert von Y (d. h.
X = [0 1 0]) oder er unterscheidet sich in einem Bit bezüglich zu
dem Wert von Y. Z. B. kann sich der Wert von X in dem ersten Bit
(X = [1 1 0]) oder in dem mittleren Bit (X = [0 0 0]) oder in dem letzten
Bit (X = [0 1 1]) unterscheiden.
-
Die
folgende Diskussion wird zeigen, dass X effizient in den zwei in
der 1 dargestellten Szenarios codiert werden kann,
so dass X bei dem Decodierer korrekt rekonstruiert werden kann.
- Szenario 1: In dem ersten in der 2A gezeigten Szenario
ist Y bei beiden, dem Codierer 210A und dem Decodierer 230A,
vorhanden. In diesem Szenario kann X von Y vorhergesagt werden.
Der Rest (X ⊕ Y),
was auch mit Restdaten oder Restinformation bezeichnet, oder das
Fehlermuster von X bezüglich
Y kann 4 von einander unterschiedliche Werte annehmen und kann somit
mit 2 Bits codiert werden. Dies kann als die kleinstmögliche (beste)
Rate, die zum Codieren von X benötigt
wird bezeichnet werden. An dem Empfangsende, kann der Decodierer
den Rest Y kombinieren um X zu erhalten. In diesem Fall, wie es
in größerem Detail
beschrieben wird, ist X analog zu der momentanen Multimedia-Codiereinheit,
die über
den Hinweis-Kanal gesendet werden muss. Y ist analog zu der Rekonstruktion
der momentanen Multimedia-Codiereinheit
basierend auf dem Hauptkanal. Dieses Verfahren, wo der Rest für den Hinweiskanal
codiert wird, entspricht prädiktivem
Codieren.
- Szenario 2: In dem zweiten Szenario, das in 2B gezeigt
wird, hat der Codierer für
X (Codierer 210B) nicht Zugriff auf Y. Die Performance
dieses Szenarios ist somit begrenzt durch die Performance des ersten Szenarios.
Der Codierer für
X kennt jedoch die Korrelationsstruktur zwischen X und Y und weiß außerdem,
dass der Decodierer-Zugriff auf Y besitzt. In diesem scheinbar schlechteren
Szenario kann nachfolgend gezeigt werden, dass dieselbe Performance wie
in dem ersten Szenario erreicht werden kann. D. h. in dem zweiten
Szenario kann X ebenfalls mit 2 Bits codiert werden.
-
Dies
kann erreicht werden unter Verwendung des folgenden Ansatzes. In
diesem Ansatz kann der Raum von Codewörtern von X in 4 Sätze partitioniert
werden und wobei jeder 2 Codewörter enthält, und
zwar wie folgt:
Cosatz bzw. Coset 1, der ([000] und [1 1 1])
enthält;
Cosatz
2, der ([0 0 1] und [1 1 0]) enthält;
Cosatz 3, der ([0
1 0] und [1 0 1]) enthält;
und
Cosatz 4, der ([1 0 0] und [0 1 1]) enthält;
-
In
diesem Beispiel, kann der Codierer für X den Satz identifizieren,
der das Codewort für
X enthält,
und kann den Index für
den jeweiligen Satz anstelle von dem einzelnen Codewort senden.
Da es 4 Sätze
in dem Raum von Codewörtern
für X gibt,
können
sie mit 2 Bits indexiert werden. Der Decodierer, beim Empfang des
Cosatz-Indexes, kann Y verwenden, um eine Mehrdeutigkeit zu beheben
oder um das korrekte X aus dem Satz zu erhalten, und zwar durch
Anzeigen oder Bekanntgeben, dass das Codewort, das am nächsten zu
Y ist, die Antwort darstellt. Wie oben erwähnt, sei angemerkt, dass der
Abstand zwischen X und Y höchstens
1 ist und der Abstand zwischen den zwei Codewörtern in einem beliebigen Satz
3 ist. Somit kann das Decodieren von X in dem zweiten Szenario korrekt
ausgeführt
werden, basierend auf dem Cosatz-Index und Y. Wenn z. B. Y gleich
[0 0 1] ist und X gleich [0 1 1] ist, dann sendet der Codierer 210B anstelle
eines Sendens des individuellen Codeworts für X den Index für den entsprechenden
Satz, der den Wert von X enthält,
was Cosatz 4 für
diesen Fall ist. Demgemäß berechnet
der Decodierer 230B beim Empfangen dieses Indexes von dem
Codierer 2108 den Abstand zwischen Y [0 0 1] und einem
der Codewörter
in dem Cosatz 4 ([1 0 0]), was gleich 2 ist und zwischen Y ([0 0
1]) und dem anderen Codewort ([0 1 1]) was gleich 1 ist. Da der Decodierer 210B weiß, dass
der Abstand zwischen X und Y höchstens
1 ist, wird [0 1 1] als das beobachtete Codewort für X decodiert,
was der korrekte Wert für
X in diesem Beispiel ist. Dieser Codiermodus, bei dem der Decodierer
Zugriff auf korrelierte Neben-Information besitzt, ist als Neben-Informations-Codierung
bekannt. Die Performance eines Systems, das Codierung mit Neben-Information
verwendet, kann übereinstimmen
mit der Performance mit einem System basierend auf prädiktiver
Codierung, wenn Codelängen
groß werden.
Im Allgemeinen kann die Korrelation zwischen X und Y dabei helfen,
die Übertragungsrate
zu reduzieren. Basierend auf der vorhergehenden Diskussion werden
die folgenden Beobachtungen gemacht:
Es sei angemerkt, dass
der Cosatz 1 ein Wiederholungskanal-Code von Abstand 3 und die anderen Sätze Cosätze dieses
Codes in dem Codewort-Raum von X sind. In diesem Fall haben wir
einen Kanal-Code verwendet, der „über einstimmt" (matched) mit dem
Korrelationsabstand (z. B. Rauschen) zwischen X und Y, um den Quell-Codewort-Raum
von X zu partitionieren. Dies resultiert in einem Neben-Informations-Codiersystem,
das eine hohe Kompressions-Performance
liefert, die identisch oder vergleichbar ist mit einem prädiktiven
Codierungssystem.
-
In
der Praxis kann die Partitionierung des Quell-Codewort-Raums und
die Index-Benennung der resultierenden Cosätze (Index-Benennungen für Cosätze, auch
als Syndrome hierin bezeichnet) auf sehr recheneffiziente Art und
Weise in dem Framework von Cosatz-Codes ausgeführt werden. Somit verursacht
der Codierer in einem Neben-Informations-Codiersystem eine geringe
Codier-Komplexität.
-
Es
sei angemerkt, dass die Partitionierung von X, wie oben diskutiert,
auch universell bzw. allgemein gültig
ist. D. h. dieselbe Partitionierung von X funktioniert für alle Y
unabhängig
von dem Wert von Y, so lange beide X und Y die Korrelationsstruktur
erfüllen.
Wenn X z. B. gleich [0 1 0] ist, dann wird dieselbe Codierung für X (z.
B. Index von Co-Satz 3) für alle
Fälle von
Y (z. B. [0 1 0], [1 1 0], [0 0 0] und [0 1 1]) anwendbar sein.
Somit gibt es, im Gegensatz zu einem prädiktiven Codierungsansatz keine
Abhängigkeit
zwischen der Codierung von X und dem Wert der korrelierten Information
Y, was somit eine Allgemeingültigkeit
vorsieht. Daher wird die hier dargestellte Erfindung ebenso anwendbar
sein auf alle prädiktiven
Codierungstechniken, wie z. B. MPEG-4, H.263, H.264 etc.
-
Nun
bezugnehmend auf 3, wird ein beispielhaftes Multimedia-Verarbeitungssystem 300 dargestellt,
das einen Neben-Informations-Codierungsansatz
verwendet, und zwar gemäß einem Ausführungsbeispiel
der Erfindung. Wie in 3 gezeigt, beinhaltet das System 300 ein
Codierungs-Untersystem oder Codierungs-Komponente 310 und
ein Decodierungs-Untersystem
oder Decodierungs-Komponente 330. In einem Ausführungsbeispiel,
beinhaltet das Codierungs-Untersystem 310 einen Codierer 312,
der gemäß einem
bestehenden Standard, wie z. B. dem MPEG-4-Standard oder H.263-Standard
operiert. Der Codierer 312 wird hierin auch als ein herkömmlicher
Codierer bezeichnet. Das Codierungs-Untersystem 310 beinhaltet
weiterhin einen weiteren Codierer 316 (der hierin auch
Neben-Informations-Codierer
oder Hinweis-Informations-Codierer bezeichnet wird), der an den
Video-Codierer 312 gekoppelt ist. Der Codierer 312 empfängt und
codiert Eingangsdaten, (z. B. Videodaten), um codierte Daten zu
generieren, die zu dem Decodierungs-Untersystem 330 über einen
Hauptkanal 320 gesendet werden. Der Hauptkanal 320 kann
ein drahtloser oder ein drahtgebundener Kanal sein. Der Codierer 316 ist
gekoppelt, um Eingangdaten zu empfangen und eine Rekonstruktion
der Eingangsdaten von dem Codierer 312 und generiert codierte Neben-
oder Hinweis-Information, die zu dem Decodierungs-Untersystem 330 über einen
separaten Kanal 325 gesendet wird, der ein drahtloser oder
ein drahtgebundener Kanal sein kann. Der Kanal 325 wird
hierin auch als Neben-Kanal oder Hinweis-Kanal bezeichnet. In einem
Ausführungsbeispiel
wird die Differenz zwischen den Eingangsdaten und der Rekonstruktion
der Eingangsdaten als Restdaten bezeichnet, die Prädiktions-Fehlerinformation,
die von dem Codierer 312 generiert wird, enthalten kann.
Die Struktur und der Betrieb des Codierers 316 werden in größerem Detail
unten beschrieben.
-
In
einem Ausführungsbeispiel,
wie in 3 gezeigt, beinhaltet das Decodierungs-Untersystem 330 einen
Decodierer 332, der gemäß einem
bestehenden Standard, wie z. B. in dem MPEG-4-Standard oder dem
H.263-Standard betrieben wird. Der Decodierer 332 wird
hierin auch als ein herkömmlicher
Decodierer bezeichnet. Das Decodierungs-Untersystem 330 beinhaltet
weiterhin einen Decodierer 336 für das Decodieren von Neben-Information, empfangen über den
Nebenkanal 325. Die Information oder Daten, generiert durch
den Decodierer 332 und Decodierer 336 werden kombiniert,
um die Ausgabedaten (z. B. Ausgabe-Videodaten) zu generieren. Die
Struktur und der Betrieb des Decodierungs-Untersystems 330 und
des Decodierers 316 werden im Folgenden in größerem Detail
beschrieben.
-
4 stellt
ein detailliertes Blockdiagramm des Codierers 316 dar,
der in 3 oben gezeigt ist, und zwar gemäß einem
Ausführungsbeispiel
der Erfindung. Wie in 4 gezeigt, beinhaltet der Codierer 316 (hierin
auch als Neben-Informations-Codierer oder
einfach Neben-Codierer bezeichnet) eine Klassifizierungseinheit 410,
eine Basis-Skalar-Quantisierungseinheit 420, eine Syndrome-Codierungseinheit 430,
eine Verfeinerungs-Quantisierungseinheit 440 und eine Fehlerdetektierungs-/Schutzeinheit 450. Diese
verschiedenen Einheiten oder Komponenten des Codierers 316 werden
unten in größerem Detail beschrieben.
Es sei angemerkt, dass die Konfiguration oder Struktur des Codierers 316,
die in 4 gezeigt ist, lediglich ein Ausführungsbeispiel
oder eine Implementierung gemäß der Lehren
der Erfindung zeigt. Andere Konfigurationen, Strukturen oder Variationen
können,
basierend auf verschiedenen Anwendungen der Erfindung und/oder verschiedene
Systemumgebungen implementiert werden. Z. B. kann die Klassifizierung-
und Syndrome-Codewahl abgestimmt werden auf die gegenwärtige Kanalbedingung.
-
Es
sei angemerkt, dass in Abhängigkeit
von der erlaubten Übertragungsrate
auf dem Neben-(Hinweis)-Kanal 325 einige der Funktionen
oder Prozesse, die von dem Codierer 316 ausgeführt werden, modifiziert
oder übersprungen
werden können.
Z. B. kann die Basis-Skalar-Quantisierung modifiziert werden, in
Abhängigkeit
von den Statistiken von N und der zur Verfügung stehende Bit-Rate für Neben-Information. Ähnlich kann
der Verfeinerungs-Quantisierungsprozess
oder -Funktion modifiziert oder ausgelassen werden. Zum Zwecke der
Erläuterungen
und Darstellung bezeichnet X den momentanen Block, den es zu codieren
gilt, Y eine Rekonstruktion des momentanen Blocks auf dem Hauptkanal
und es sei angenommen, dass Y = X + N, wobei N die Differenz zwischen
X und Y darstellt und kann z. B. den Prädiktionsfehler in der Codierung
von X, Rauschen und/oder Verzerrung eingeführt in den Codierungs- und
Sendeprozess etc. entsprechen.
-
In
der folgenden Diskussion sei angenommen, dass der Video-Rahmen,
den es zu codieren gilt, unterteilt ist in nicht-überlappende
räumliche
Blöcke
von Pixeln (z. B. 16×16,
8×8 etc.).
Es ist ersichtlich und verständlich
für einen Fachmann,
dass die Lehren der vorliegenden Erfindung nicht auf eine bestimmte
Unterteilung oder Partitionierung von Video-Rahmen, die es zu codieren
gilt, beschränkt
ist. Der Codierungsprozess wird im Detail unten beschrieben, und
kann auf einer Block-zu-Block-Basis voranschreiten.
-
Klassifikation:
-
In
einem Ausführungsbeispiel
führt die
Klassifizierungseinheit 410 die Klassifizierungsfunktion oder
-Prozess wie folgt aus. Um den Kanal-Code an die Blöcke anzupassen,
werden die Blöcke
klassifiziert, basierend auf deren Korrelation mit der Haupt-Kanal-Rekonstruktion
des Momentan-Rahmens. Die Statistiken von N entsprechend zu der
bestimmten Klasse werden dann verwendet, um die geeignete Partitionierungs-Strategie
zu bestimmen oder vorzuschreiben. In einem Ausführungsbeispiel kann die Energie
in den Blockrahmen-Differenzen (z. B. eine einfache mittlere Quadrat-Fehler-Abweichung
zwischen dem momentanen Block und einem rekonstruierten Block auf
dem Hauptkanal in derselben Position) als ein Hinweis bzw. Stichwort
für die Klassifizierung
des momentanen Blocks verwendet werden. Eine Anzahl von Codier-Modi
oder -Klassen können
mit jedem verwendet werden, und zwar entsprechend zu einem unterschiedlichen
Grad der Korrelation. Ein Extrem ist z. B. ein Modus bezeichnet
als der SKIP-Modus, bei dem die Korrelation so stark ist, dass der
Block überhaupt
nicht codiert wird. Das andere Extrem ist ein Modus, der als INTRA-Modus
bezeichnet wird, bei dem die Korrelation so schwach ist, dass ein
INTRA- bzw. Zwischen-Codieren angebracht ist. Demgemäß kann es
unterschiedliche Syndrome-Codier-Modi zwischen diesen zwei Extremen geben.
-
Basis-Skalar-Quantisierung:
-
Wie
in der 4 gezeigt ist, beinhaltet die Codier-Einheit 316 eine
Basis-Skalar-Quantisierungseinheit 420,
um Quantisierung auf den Pixel-Werten auszuführen. In einem Ausführungsbeispiel
müssen
die Eingabedaten (z. B. Pixel-Werte) quantisiert werden vor dem
Codieren. Für
die Quantisierung kann die Wahl der Schrittgröße begrenzt sein durch die
Statistiken von N. Wenn z. B. eine sehr genaue bzw. feine Schrittgröße zum Codieren
von X gewählt
wird, dann können
Decodierungs-Fehler auftreten, da die Codewörter zu „eng" zu einander liegen, so dass die rekonstruierte
Information Y diese nicht korrekt von einander unterscheiden kann.
-
Dies
ist in einem Diagramm dargestellt, was in 5 gezeigt
ist. Wie in der 5 gezeigt, zeigt die obere Linie
den quantisierten Codewort-Satz für X und die zwei unteren Linien
zeigen die zwei Partitionierungen des Raumes der quantisierten Codewörter für X. Die
rechteckige Box zeigt das beobachte te Codewort, das in der ersten
Partitionierung liegt. In diesem Beispiel, da der Betrag von N größer ist
als die Quantisierungsschrittgröße, verwendet
der Decodierer die rekonstruierte Information Y, um das inkorrekte
(eingekreiste) Codewort zu decodieren. Somit wird jedes der Elemente
von X mit einer Schrittgröße proportional
zu der Standardabweichung des entsprechenden Elements in N quantisiert.
-
Syndrome-Codierung:
-
Wiederum
Bezug nehmend auf 4, führt die Syndrome-Codier-Einheit 430 Syndrome-Codierung
bezüglich
der Daten, die von der Basis-Skalar-Quantisierungs-Einheit 420 generiert
wurden, aus. In diesem Ausführungsbeispiel
kann der Raum von quantisiertern Codewörtern, der passend generiert
wurde unter Verwendung der Statistiken von N partitioniert werden,
unter Verwendung eines Kanal-Codes mit guten Abstandseigenschaften
(z. B. Euclidian Raum-Trellis-Kanal-Codes, Turbo-Codes, Niedrig-Dichte-Paritäts-Prüf-Codes bzw. LDPC-Codes
(LDPC = Low Density Parity Check) oder andere Kanal-Codes, die auf
dem Fachgebiet bekannt sind, etc.). Dies ist analog zu dem Wiederholungskanal-Code,
der verwendet wurde, um den Quell-Code-Raum, wie oben diskutiert zu partitionieren.
-
In
einem Ausführungsbeispiel
könnte
ein Raten-1/2-Trellis-Code zu diesem Zweck verwendet werden. Ein
Rate-1/2-Trellis-Code mit Blocklänge
N ist ein Unter-Raum von {0, 1, 2, 3}N (z. B. der Wiederholungskanal-Code
von Blocklänge
3 ([0 0 0] und [1 1 1]) ist ein Unter-Raum von {0, 1}3). Somit kann
er verwendet werden, um den Raum {0, 1, 2, 3}N zu partitionieren.
Aus diesem Grund muss der Raum von quantisierten Codewörtern konvertiert
werden in {0, 1, 2, 3}N. In einem Ausführungsbeispiel kann dies geschehen,
unter Verwendung einer Mod-4-Benennung des Quantisierungs-Gitters
(lattice), wie gezeigt in 6.
-
In
einem Ausführungsbeispiel
ist die Sende- oder Cosatz-Index-Rate, die in diesem Fall veranlasst
wird, 1 Bit/Sample. In diesem Beispiel hat ein Rate-1/2-Trellis-Code
mit Blocklänge
N, was einen Unter-Raum von {0, 1, 2, 3}N ist zwei N-Codewörter in
dem Raum, der Größe 4 N.
Somit gibt es 4 N/2 N = 2 N Co-Sätze,
die diesem zugeordnet sind, was durch N Bits indexiert werden kann,
was somit einer Rate von 1 Bit/Sample entspricht.
-
Die
Generierung des Cosatz-Index (Syndrome) der jedem Codewort zugeordnet
ist, kann erreicht werden auf eine recheneffiziente Art und Weise durch
die eine einfache Faltungsoperation (convolution Operation) (linear
in der Anzahl von Koeffizienten) zwischen dem quantisierten Codewort
und der Paritäts-Prüfmatrix
des Trellis-Codes.
-
Verfeinerungs-Quantisierung:
-
Wie
in 4 gezeigt, können
die Daten, die von der Syndrome-Codierungseinheit 430 generiert werden,
weiter verfeinert werden durch die Verfeinerungs-Quantisierungs-Einheit 440.
Im Allgemeinen entspricht eine Ziel-Rekonstruktionsqualität einer
bestimmten Quantisierungsschrittgröße. (Z. B. entspricht eine
höhere
gewünschte
Qualität
einer feineren Quantisierungsschrittgröße und eine niederigere Qualität entspricht
einer gröberen
Quantisierungsschrittgröße). Die
Qualität
wird typischerweise in PSNR (Peak Signal-to-Noise.Ratio bzw. Spitzensignal-zu-Rausch-Verhältnis) (dB)
gemessen, wobei PSNR = log10 (2552/MSE), wobei MSE den Mean Squared
Error bzw. das mittlere Fehlerquadrat zwischen dem Originalblock
und dem codierten Block geteilt durch die Anzahl von Pixeln in dem
Block bezeichnet.
-
Für die Pixel-Werte,
die Syndrome-codiert werden, ist die Wahl der Basis-Quantisierungsschrittgröße begrenzt
durch N. Dies geschieht, um die Wahrscheinlichkeit von Decodierungsfehlern
zu minimieren. Somit, unter der Annahme, dass das Baiss-Quantisierungs-Intervall
korrekt mit hoher Genauigkeit an den Decodierer übermittelt werden kann, kann
sie weiter verfeinert werden auf die Ziel-Quantisierungsschrittgröße. In einem
Ausführungsbeispiel
kann die Verfeinerungsoperation so einfach sein, wie ein fortschreitendes
Unterteilen des Basis-Quantisierungsintervalls in Intervalle einer Größe, die
gleich ist zu der Ziel-Quantisierungsschrittgröße. In diesem Fall wird der
Index des Verfeinerungsintervalls innerhalb des Basisintervalls
zu dem Decodierer gesendet.
-
Der
Fachmann wird erkennen, dass das Ausführen von Syndrome-Codieren
und die Verfeinerungsquantisierung nur eine mögliche Art der Implementierung
und Realisierung der Codierungsgewinne mit Neben-Information ist.
Wie oben erwähnt,
können
andere Konfigurationen Variationen oder Kombinationen der verschiedenen
Verarbeitungsstufen, die hierin beschrieben werden, implementiert
werden, in Abhängigkeit
der verschiedenen Anwendungen der vorliegenden Erfindung. Z. B.
kann die Verfeinerungsquantisierungsstufe oder -Prozess weggelassen
oder übersprungen
werden, wenn sie nicht in bestimmten Anwendungen oder bestimmten
Systemumgebungen benötigt
wird.
-
Es
sei hier angemerkt, dass die Basis-Quantisierungs- und die Verfeinerungs-Quantisierungs-Pegel
eingestellt oder angepasst werden können, basierend auf verschiedenen
Faktoren, um ein geeignetes Gleichgewicht zwischen Qualität und Effizienz
beizubehalten. Diese verschiedenen Faktoren können beinhalten (sind jedoch
nicht hierauf beschränkt):
Verfügbare
Bitrate für
die Neben-Information, die Kanalbedingungen und der Schutzbetrag, den
der Neben-Kanal vorsehen soll, um einen gewünschten Qualitätspegel
zu erreichen, etc.
-
Decodierungs-Fehlerdetektierung/Schutz:
-
Wie
in 4 dargestellt, kann der Codierer 316 eine
Fehlerdetektier/Schutzeinheit 450 beinhalten. Es sei angemerkt,
dass bei dem Codierer-Untersystem Neben-Informations-Codierung im
Prinzip ausgeführt
wird bezüglich
der Statistiken der Fehler zwischen dem Block X, der zu codieren
ist und der „besten" Vorhersage Y für diesen
Block in dem Hauptkanal-Rahmenspeicher. Da der Codierungsprozess
statistisch ist, kann es Decodierungsfehler geben, die detektiert
werden müssen.
Dies kann erreicht werden durch einen Fehlerschutz-Code, wie z. B. durch
einen zyklischen Redundanz-Prüf-Code bzw.
CRC-Code (CRC = cyclic redundancy check). In diesem Ausführungsbeispiel
sendet der Codierer 316 somit nicht nur das Syndrom bzw.
Syndrome für
die Neben- Informations-codierten
Koeffizienten, sondern auch eine CRC-Prüfung mit ausreichender Stärke der
quantisierten Sequenz von Codewörtern.
Diese CRC-Prüfung
bzw. Prüfsumme
kann als eine „Signatur" der quantisierten
Codewort-Sequenz dienen. Im Gegensatz zu einem herkömmlichen
Codierungs/Decodierungs-Paradigma, ist es die Aufgabe des Decodierers
eine Bewegungssuche in dem hier diskutieren neuen Ansatz auszuführen. In
einem Ausführungsbeispiel
sucht der Decodierer über
den Raum von Kandidaten-Vorhersagen,
und zwar einem nach dem anderen, um eine Sequenz aus dem Satz benannt
durch das Syndrome zu decodieren. Wenn die decodierte Sequenz mit
der CRC-Prüfung übereinstimmt,
wird eine Decodierung als erfolgreich bekannt gegeben. Es sei angemerkt,
dass die CRC ausreichend stark sein muss, um als eine zuverlässige Signatur
für die
Codewort-Sequenz zu fungieren.
-
Nun
bezugnehmend auf 7 wird ein detaillierteres Blockdiagramm
des Decodierungs-Untersystems 330 dargestellt. Wie in der 7 gezeigt, kann
das Decodierungs-Untersystem 330 die Decodierer-Einheit 332,
die Decodierer-Einheit 336 und eine
Schätz-
und Rekonstruktionseinheit 730 beinhalten. In einem Ausführungsbeispiel
kann der Decodierer 336 (der auch als Neben-Informations-Decodierer
oder einfach Neben-Decodierer hierin bezeichnet wird) eine Bewegungssucheinheit 710 und
eine Syndrome-Decodierungs-Einheit 720 beinhalten.
Die Operationen und Funktionen der verschiedenen Einheiten, die
in dem Decodierungs-Untersystem 330 enthalten sind, werden
in größerem Detail
unten beschrieben.
-
Bewegungssuche:
-
In
einem Ausführungsbeispiel
führt die
Bewegungssuch-Einheit 710 eine Bewegungssuche aus, um Kandidaten-Vorhersagen
bzw. -Prädiktoren zu
generieren, um die Sequenz von quantisierten Codewörtern aus
dem Satz, angezeigt durch das empfangene Syndrome zu decodieren.
Eine exhaustive bzw. erschöpfende
Halb-PixelBewegungssuche kann verwendet werden, um verschiedene
Kandidaten-Prädiktoren
zu erhalten, was ebenfalls auf der Codierseite in Standard-Video-Algorithmen
getan wird. Es sei angemerkt, dass die Verfahren und das System-Framework,
das hier diskutiert wird, angewendet werden kann, um irgendwelche
anderen ausgereiften Bewegungsschätzprozeduren aufzunehmen, wie
z. B. Multi-Frame-Prädiktion,
optischer Fluss, Steuergitter-Interpolation (control grid interpolation),
etc.
-
In
einem Ausführungsbeispiel
wird eine Bewegungssuche nicht ausgeführt, wenn der Hauptkanal keine
Fehler besitzt oder wenn Bewegungsvektoren nicht Fehler behaftet
sind. Es sei angemerkt hier, dass Bewegungssuchoperationen zeitaufwändig und rechenintensiv
sein können.
Daher, wenn die Bewegungsvektoren ohne Fehler in dem Hauptstrom
ankommen, müssen
Bewegungssuchoperationen nicht ausgeführt werden.
-
Syndrome-Decodierung:
-
Um
mit der vorliegenden Diskussion fortzufahren, wird Syndrome-Decodierung durch
die Syndrome-Decodierungs-Einheit 720 ausgeführt. In
einem Ausführungsbeispiel
wird jeder der Kandidaten-Prädiktoren,
die von der Bewegungssucheinheit 710 generiert werden,
verwendet, um eine Sequenz von quantisierten Codewörtern aus
dem Satz, angezeigt durch das Syndrome zu decodieren. Für den Fall
der Trellis-Codes kann diese Decodierung erreicht werden unter Verwendung
des Viterbi-Algorithmus. Hierbei wird der Satz von allen Sequenzen,
benannt durch das empfangene Syndrome auf einer Trellis dargestellt.
Der Viterbi-Algorithmus kann dann verwendet werden, um die Sequenz
in diesem Satz, die am „nächsten" zu dem Kandidaten-Prädiktor ist,
zu identifizieren. Für
andere Codes (z. B. Turbo-Codes) kann der entsprechende Decodierungs-Algorithmus (z.
B. iteratives Decodieren) verwendet werden. Wenn diese decodierte
Sequenz mit der CRC-Prüfung übereinstimmt
bzw. diese erfüllt,
dann wird die Decodierung als erfolgreich erklärt. Anderenfalls wird unter
Verwendung des Bewegungssuchmoduls der nächste Kandidaten-Prädiktor erhalten
und dann wird die Prozedur wiederholt.
-
Schätzung
und Rekonstruktion:
-
Sobald
die quantisierte Codewort-Sequenz durch die Syndrome-Decodierungs-Einheit 720 wieder
gewonnen wurde, wird die wieder gewonnene Codewort-Sequenz an die
Schätz-
und Rekonstruktions-Einheit 730 (auch als Kombinationseinheit
hierin bezeichnet) vorgesehen. Die wieder gewonnene Codewort-Sequenz
wird zusammen mit dem Prädiktor, der
von dem Hauptkanal zur Verfügung
steht, verwendet, um die beste Rekonstruktion der Quelldaten zu
erhalten. Wenn X, Y und N als Gauss-Zufalls-Variablen modelliert
werden, könnte
die beste lineare Schätzung
von dem Prädiktor
und das quantisierte Codewort verwendet werden, um die Quell-Rekonstruktion
zu erhalten. Ein beliebiger fortschrittlicher Signalverarbeitungs-Algorithmus
(z. B. räumlich-zeitliche
Interpolation) oder Nachverarbeitungsmechanismen kann in dem vorliegenden
Framework eingesetzt werden und solche können dazu dienen, die Gesamtperformance
des Verarbeitungssystems zu verbessern.
-
Mit
anderen Worten, wie in der 7 dargestellt,
werden die rekonstruierten Hauptstrom-Daten und die rekonstruierten
Nebenstrom-Daten durch die Kombinationseinheit 730 kombiniert,
um die Ausgabedaten (z. B. Video-Ausgabedaten)
zu generieren. Verschiedene Techniken können verwendet werden, um die
rekonstruierten Hauptstrom-Daten und die rekonstruierten Nebenstrom-Daten
zu kombinieren, um die Ausgabedaten zu generieren. Z. B. kann eine
lineare Gewichtung (basierend auf einer linearen Schätzung) oder
beliebige andere nicht-lineare Blendungs- bzw. Mischtechniken, die
auf dem Fachgebiet bekannt sind, verwendet werden, um die rekonstruierten
Hauptstromdaten und die rekonstruierten Nebenstromdaten zu kombinieren.
-
8 stellt
ein Flussdiagramm eines Verfahrens zum Verarbeiten von Informationen
z. B. Videodaten gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung dar. Bei Block 810 werden Eingabedaten
(z. B. Eingabe-Videodaten)
empfangen. Bei Block 820 werden die Eingabe-Videodaten
codiert gemäß einem
bestehenden Standard (z. B. MPEG-4- oder H.263-Standard), um codierte Daten zu generieren.
Bei Block 830 werden die Eingabedaten codiert, basierend
auf einer Rekonstruktion der Eingabedaten, um codierte Neben-Information
(auch als Hinweis-Information bezeichnet) zu generieren. Bei Block 840 werden
die codierten Daten, die bei Block 820 generiert wurden,
zu einem Ziel (z. B. einem Decodierungs-Untersystem) über einen
ersten Kanal (auch als Hauptkanal bezeichnet) gesendet und die codierte
Neben-Information wird zu dem Ziel (d. h. dem Decodierungs-Untersystem) über einen
zweiten Kanal (auch als der Neben-Kanal oder Hinweiskanal bezeichnet).
Wie zuvor hierin diskutiert wurde, wird der Informationsstrom, der über den
Hauptkanal gesendet wird, auch als Hauptstrom bezeichnet, wobei der
Informationsstrom, der über
den Neben-Kanal gesendet wird, auch als Nebenstrom bezeichnet wird.
Bei Block 850 werden bei Empfang der codierten Daten von
dem Hauptkanal und der codierten Neben-Information von dem Seitenkanal
die empfangenen codierten Daten und die empfangene Neben-Information decodiert,
um Ausgabedaten (z. B. Ausgabe-Videodaten) zu generieren.
-
Wie
oben beschrieben, ist ersichtlich, das die Verfahren und das System-Framework gemäß verschiedener
Ausführungsbeispiele
der Erfindung in verschiedenen Systemkonfigurationen, Anwendungen
und verschiedene Typen von korrelierten Daten, inklusive Video-
und Audio-Daten angewendet und implementiert werden kann. Es ist
ersichtlich aus der obigen Beschreibung, dass in einem Verarbeitungssystem,
das Neben-Informations-Codierungs/Decodierung
verwendet, wie das in der 3 dargestellte System
die Systemperformance und die Qualität der Ausgabedaten, die von
dem Decodierungs-Untersystem generiert werden, verbessert wird im
Vergleich zu dem eines herkömmlichen
Systems. Mit anderen Worten, die auf Neben-Information basierte Hinweiskanal-Verfahren/Lösung, wie
sie hierin offenbart ist, ist überlegen
im Vergleich zu herkömmlichen FEC-basierten
Fehlerwiderstandsverfahren/Lösungen,
und zwar mindestens hinsichtlich zweier Punkte: (1) Das Neben-Informations-basierte
Verfahren/Lösung
der vorliegenden Erfindung bewirkt eine viel niedrigere Latenzzeit
als FEC-basierte Lösungen bei
derselben Performancekurve, da der Hinweiskanal ein gemeinsamer
Quell-Kanalcode
(joint-source-channel code) ist, der effizient auf einer Makroblock-Basis betrieben werden
kann, im Gegensatz zu FEC-Lösungen,
die auf einer Rahmen- oder GOP-Basis operieren und somit eine signifikant
erhöhte
Latenzzeit bewirken; und (2) selbst dann, wenn keine Fehler auf
dem Hauptkanal angetroffen werden, kann der Informations-basierte
Ansatz der vorliegenden Erfindung in einer verbesserten Qualität resultieren,
aufgrund des „Blending" bzw. „Ineinanderführens" von zwei Informationsströmen, wie
es oben beschrieben wurde, wohingegen Standard-FEC-basierte Lösungen die
Qualität
in diesem Fall nicht verbessern können.
-
Während die
vorliegende Erfindung beschrieben wurde, mit Bezugnahme auf bestimmte Ausführungsbeispiele
und spezifische Beispiele, sei anzumerken und anzuerkennen durch
den Fachmann, dass diese Ausführungsbeispiele
und Beispiele darstellend sind und dass der Umfang der Erfindung
nicht durch diese Ausführungsbeispiele
begrenzt ist. Viele Variationen, Modifikationen, Zusätze und
Verbesserungen zu diesen beschriebenen Ausführungsbeispielen sind möglich. Es
ist beabsichtigt, dass diese Variationen, Modifikationen, Zusätze und Verbesserungen
innerhalb des Umfangs der Erfindung, wie er innerhalb der nachfolgenden
Ansprüche detailliert
dargelegt ist, fallen.