Beschreibung
Verfahren zur Header-Kompression bei einer Video-Codierung
Die Erfindung betrifft ein Verfahren zur Komprimierung von zu übertragenden Daten mit Header-Informationen durch Reduzierung der Header-Information bei einer Video-Codierung.
Mit dem Begriff Header wird im allgemeinen der Teil eines Datenpaketes bezeichnet, in dem keine Nutzdaten, sondern diverse Verwaltungsdaten enthalten sind (z.B. Adresse, Paketnummer, Senderkennung, Paketstatus etc.). Daten zur Fehlererkennung bzw. zur Fehlerkorrektur (z.B. Cyclic Redundancy Check CRC) werden i.A. zu den Nutzdaten gezählt.
Auch bei der Codierung von Videodaten werden in der Regel neben den eigentlichen Bildinformationen als Nutzdaten zusätzlich solche Header-Informationen übertragen. Diese dienen einerseits der Synchronisation, beispielsweise bei gestörten Kanälen, andererseits zur Erhöhung einer Kompression bzw. der Übermittlung von besonderen Funktionalitäten. Im Fall komprimierter Daten werden z.B. über die Header-Information Daten zur Dekompression übertragen, ohne die eine empfängerseitige Decodierung nicht möglich wäre.
Auch im Bereich der Datenübertragung über Netzwerke spielen Header-Informationen eine große Rolle, indem die Nutzdaten in kleinen Datenpaketen mehrfach gekappselt werden. Legt man z.B. das OSI-Referenzmodell mit seinen sieben Schichten zugrunde, so wird deutlich, dass das vergleichsweise kleine Datenpaket in jeder Schicht mit einer eigenen Header- Information versehen wird. Insbesondere bei niedrigen Datenraten nimmt solche Header-Information einen beträchtlichen Teil der zur Verfügung stehenden Bandbreite ein.
Die Entwicklung der Video-Codierung erlaubt heute bereits eine Video-Übertragung in Echtzeit. Die Qualität wird im wesentlichen durch die zur Verfügung stehende Bandbreite bestimmt. Vor allem bei niedrigen Bandbreiten verbraucht jedoch auch hierbei häufig die Header-Information bereits einen großen Teil der Bandbreite.
Die Erfindung nimmt sich diesem Problem zunehmend komplexerer Header-Informationen an und versucht die Menge der Header- Informationen zu reduzieren.
In der Videocodierung ist bisher kein Verfahren bekannt, in dem eine zu übertragende Header-Information reduziert wird.
Aufgabe der vorliegenden Erfindung ist es daher, eine optimierte Möglichkeit zur wirksamen Codierung von Header- Information zu schaffen.
Gemäß der vorliegenden Erfindung wird diese Aufgabe durch ein Verfahren zur Komprimierung von zu übertragenden Datenblöcken mit Header-Informationen gelöst, wobei alle möglichen Header- Elemente oder die am häufigsten auftretenden Header-Elemente mittels einer Codeworttabelle codiert werden, indem jedem dieser Header-Elemente ein Codewort zugeordnet wird, das anstelle der eigentlichen Header-Information übertragen wird, wobei eine aktuelle Header-Information anhand jeweiliger Codeworte für die zugehörigen Header-Elemente pradiziert wird und wobei die Codewortlänge entsprechend einer Auftrittswahrscheinlichkeit eines Header-Elementes gewählt wird, insbesondere umgekehrt proportional dazu. Dies geschieht dadurch, dass die Header-Informationen aus zeitlich vorangehenden Datenblöcken statistisch ausgewertet werden und die Codeworttabelle zur Codierung des aktuellen oder eines nachfolgenden Datenblocks anhand der dabei gewonnenen Verteilungen für einzelne Header-Elemente so umsortiert wird, dass einem zuletzt statistisch nächstbedeutendsten Header- Element das nächstkürzeste Codewort zugeordnet wird.
Der Begriff "prädizieren" stammt dabei aus der Quellcodierung und -decodierung und ist dem Fachmann geläufig. Ein Prädiktor ermittelt z.B. aus vorangegangenen Signalen nach einer festgelegten Vorschrift einen Schätzwert für das nächste erwartete Signal . Bei einem adaptiven Prädiktor ist diese Vorschrift variabel und hängt z.B. von den vorangegangenen Werten und anderen kurzzeitigen Charakteristika des Signals ab.
Eine statistische Auswertung zeitlich vorangehender Datenblöcke zur Umsortierung der Codetabelle erfolgt vorzugsweise entweder anhand empirisch ermittelter Datenblöcke vor einer Übertragung oder aber dynamisch während einer Übertragung.
Zur Komprimierung der Header-Informationen von VideoSequenzen lässt sich das erfindungsgemäße Verfahren auch vorteilhaft einsetzen, wenn Bildinformationen eines Datenblocks in eine Mehrzahl von Makroblöcken untergliedert sind, die separate
Header-Informationen aufweisen und separat codiert werden, indem die Header-Information eines Makroblocks jeweils aus dem entsprechenden Makroblock des zeitlich vorangehenden Datenblocks pradiziert wird.
Dabei hat es sich als besonders günstig erwiesen, wenn nicht der Header-Elemente selbst, sondern alle möglichen Übergänge eines Header-Elementes eines Makroblocks eines vorangehenden Datenblocks auf das entsprechende Header-Element eines entsprechenden Makroblocks eines nachfolgenden Datenblocks oder die am häufigsten auftretenden Übergänge mittels einer Codeworttabelle codiert werden, indem jedem dieser Übergänge ein Codewort zugeordnet wird, das anstelle der eigentlichen Header-Information übertragen wird, wobei eine aktuelle Header-Information anhand eines jeweiligen Codewortes pradiziert wird.
Eine besonders vorteilhafte Ausgestaltung des Verfahrens nach der vorliegenden Erfindung lässt sich zur Komprimierung von zu übertragenden Daten von Videosequenzen einsetzen, wenn Bildinformationen eines Datenblocks in eine Mehrzahl von Makroblöcken untergliedert sind, die jeweilige Header- Informationen aufweisen und separat codiert werden, indem
- die Header-Information eines Makroblocks jeweils aus dem entsprechenden Makroblock des zeitlich vorangehenden Datenblocks pradiziert wird, wobei alle möglichen Übergänge eines Header-Elementes eines Makroblocks eines vorangehenden Datenblocks auf einen entsprechenden Makroblock eines nachfolgenden Datenblocks oder die am häufigsten auftretenden Übergänge mittels einer Codeworttabelle codiert werden, indem jedem dieser Übergänge ein Codewort zugeordnet wird, das anstelle der eigentlichen Header-Information übertragen wird, wobei eine aktuelle Header-Information anhand eines jeweiligen Codewortes pradiziert wird, indem
- die Header-Informationen aller Makroblöcke eines aktuellen Datenblocks mit den entsprechenden Header-Informationen der Makroblöcke eines vorangehenden Datenblocks verglichen werden und
- eine Entropiecodierung erfolgt, indem eine jeweilige Codeworttabelle in Abhängigkeit von der Häufigkeit ermittelter Differenzen zwischen Header-Informationen der Makroblöcke eines aktuellen Datenblocks mit den Makroblöcken eines vorangehenden Datenblocks ermittelt wird.
Der Begriff der Entropie stammt aus der Informationstheorie und wird auch als Informationsgehalt bezeichnet. Die Entropiecodierung bezeichnet dabei die optimale minimale
Anzahl von Bit, mit der ein mit einer bestimmten Wahrscheinlichkeit auftretendes Symbol unter dem Aspekt der Redundanzreduzierung minimal codiert werden kann. Falls aus einem Zeichenvorrat von n Symbolen das Symbol Si mit einer Wahrscheinlichkeit pi auftritt, ergibt sich die Entropie H aus :
n
H = ∑ pi log2 Pi i=l
Dabei hat es sich als besonders effektiv erwiesen, wenn ein Vergleich von Header-Informationen im einzelnen realisiert wird durch
- Organisation des resultierenden Videodatenstroms derart, dass die Header-Informationen aller Makroblöcke dieses
Datenblocks als ein zusammenhängender Header-Block vorliegen,
- Vergleichen der Header-Informationen des aktuellen Header- Blocks mit denen des Header-Blocks des vorangegangenen Datenblocks und Ermitteln eines Differenz-Header-Blocks, indem im aktuellen Header-Block Felder unveränderter Header- Informationen durch Leerfelder ersetzt werden und
- Transformation des Differenz-Header-Blocks durch U ordnung der Reihenfolge der einzelnen Felder ausgehend vom Zentrum spiralförmig bis zum Rand (sog. spiral reading) .
Weiter hat es sich als besonders vorteilhaft erwiesen, wenn die Entropiecodierung im einzelnen realisiert wird durch
- Codierung des transformierten Differenz-Header-Blocks durch Angabe von jeweiligem Positionswert und Feldinhalt, wobei Leerfelder mit unveränderter Header-Information nicht übertragen werden, indem in einem resultierenden Header- Datenstrom anstelle von Leerfeldern jeweils die Anzahl solcher aufeinanderfolgender Leerfelder vor oder nach einer expliziten Header-Information angegeben wird und - Codierung des Header-Datenstroms mit Codeworten der aktuellen Codeworttabelle, indem zugeordnete Codeworte explizite Header-Informationen, die sich im Vergleich zum Vorgänger-Makroblock verändert haben, im resultierenden Header-Datenstrom ersetzen und - Umordnung der Codeworttabelle für einen folgenden
Datenblock anhand der ermittelten Vergleichsergebnisse zwischen Header-Informationen, indem die Codewortlänge stets
umgekehrt proportional zu einer Auftrittswahrscheinlichkeit eines Übergangs zwischen Header-Elementen gewählt wird.
Eine Decodierung eines erfindungsgemäß komprimierten Header- Datenstroms erfolgt vorteilhaft mit den folgenden Verfahrensschritten :
- Rekonstruktion der Felder eines Differenz-Header-Blocks und Lokalisierung der Positionen von explizit übertragenen Header-Informationen, die sich im Vergleich zum Vorgänger- Makroblock verändert haben,
- Konvertierung der Feldinhalte an solchermaßen lokalisierten Positionen durch das einem Feldinhalt zugeordnete Header- Element anhand der inversen aktuellen Codeworttabelle und
- Ersetzen der übrigen Feldinhalte durch die Header- Informationen an den entsprechenden Positionen aus dem vorangegangenen Datenblock.
Es existiert also ein Zusammenhang zwischen der
Auftrittswahrscheinlichkeit eines Header-Elementes und dem Header-Element an der gleichen Stelle in einem vorhergehenden
Bild/Datenblock. Da einem Decoder in der Regel das vorhergehende Bild/Datenblock bekannt ist, kann eine Codierung eines aktuellen Bildes unter diesen Annahmen erfolgen, indem Header-Elemente durch eine Codeworttabelle codiert werden, in der jedem Header-Element ein Codewort zugeordnet ist. Die Codewortlänge ist entsprechend der Auftrittswahrscheinlichkeit des jeweiligen Header-Elementes geordnet, vor allem umgekehrt proportional dazu. Die Codewortlänge wird so im Mittel kürzer. Weiter erfolgt die Codierung durch Neuordnung der Codeworttabelle in
Abhängigkeit vom Codewort für das jeweilige Header-Element im vorangehenden Bild/Datenblock. Diese Neuordnung kann sowohl dynamisch (on the fly) erfolgen, als auch vorher statistisch ermittelt werden.
Besonders effektiv lässt sich die Erfindung zur Header- Kompression für eine Videocodierung nach dem H.26L-Standard einsetzen.
Besonders vorteilhaft kann das Verfahren der Erfindung mit den einzelnen beschriebenen Ausführungsformen durch eine Vorrichtung mit einer Codiereinheit und mit einer Decodiereinheit mit jeweils geeignet programmiertem Mikroprozessor realisiert werden.
Weitere Vorteile und Details der Erfindung ergeben sich anhand der folgenden Beschreibung vorteilhafter Ausführungsbeispiele und in Verbindung mit den Figuren. Es zeigt jeweils in Prinzipdarstellung:
FIG 1 die hierarchische Untergliederung der Bilddaten gemäß dem H.26L-Standard, FIG 2 die Syntax eines resultierenden Video-Datenstroms, FIG 3 eine Prädiktion durch Mittelwertbildung der Header- Informationen aller oder einiger der umgebenden anderen Makroblöcke, FIG 4 eine Prädiktion durch Suche eines Makroblocks, dessen Header-Information genau denselben Wert aufweist, wie das Header-Element des aktuellen Makroblocks,
FIG 5 das Prinzip einer Codeworttabelle, die eine Code- Nummer liefert ausgehend von einer zu codierenden Header-Information MBtype und der bereits codierten Header-Information MBtype_n-l des entsprechenden Makroblocks in dem vorangegangenen Frame,
FIG 6 eine konkrete Codeworttabelle gemäß dem Prinzip aus
FIG 5 für den H.26L-Standard, FIG 7 die Bildung eines Differenz-Header-Blocks durch
Vergleich des aktuellen Blocks mit den Header- Elementen aller aktuellen Makroblöcke mit dem vorangehenden Block aller Makroblöcke des
Vorgänger-Datenblocks ,
FIG 8 eine Prinzipskizze zur Darstellung des ' spiral reading' , FIG 9 eine Prinzipskizze der eigentlichen Codierung zur
Bildung des zu übertragenden Datenstroms nach einer vorteilhaften Ausführungsform und FIG 10 eine konkrete Codeworttabelle gemäß dem Prinzip aus
FIG 5 für das Ausführungsbeispiel nach FIG 7 bis
FIG 9 für den H.26L-Standard.
Die Erfindung soll im folgenden exemplarisch anhand der Videocodierung nach dem H.26L-Standard erläutert werden. Der besseren Verständlichkeit halber wird zunächst ein kurzer Überblick über die technischen Grundlagen dieses Standards gegeben.
H.26L ist ein blockbasierter Video-Codec bei dem jeder Datenblock mit Bilddaten, ein sog. Frame, in kleinere Unterblöcke, sog. Makroblöcke MB, aufgespaltet wird. Daraus resultiert eine hierarchische Struktur, die in der Abbildung gemäß FIG 1 gezeigt ist. Jeder Makroblock besitzt in der Regel eine 16x16 Pixelmatrix, aus der jeweils ein entsprechender Chrominanzblock C (8x8 Pixel durch Subsampling) und Luminanzblock L (4x4 Pixel) abgeleitet wird.
Der Codierung liegt die Überlegung zugrunde, dass sich zwei aufeinanderfolgende Bilder bzw. Sequenzen S1...S4 nicht signifikant unterscheiden und aus diesem Grund lediglich die Differenzinformation nach einer erfolgten BewegungsSchätzung der sich bewegenden Regionen codiert wird.
Um die Codierungsentscheidungen zu signalisieren, wird Header-Information hinzugefügt. Neben einem Bild-Header eines Frames erhält auch jeder Makroblock MB Header-Information. Aus der Vielzahl der Makroblöcke MB pro Frame wird dabei schnell deutlich, wie umfangreich die daraus resultierende Header-Information werden kann.
In der Darstellung gemäß FIG 2 ist die Syntax eines resultierenden Video-Datenstroms gezeigt. Dabei sind die jeweiligen Header-Informationen gezeigt. Es bezeichnen dabei im einzelnen:
- Psync: ein Bildsynchronisierungs-Codewort
- Ptype: Signalisierung, ob INTER- oder INTRA-Codierung vorliegt - MBtype: Signalisierung, auf welche Weise ein Makroblock MB codiert ist
- Intra_pred_mode : Prädiktionsinformation für den Fall, dass ein MB INTRA-codiert ist
- RefFrame: Angabe des Referenz-Frames, der für die Pradiktion des Makroblocks MB genutzt wurde
- MVD: Bewegungsvektordifferenz, um aus den prädizierten Bewegungsvektoren auf die tatsächlichen Bewegungsvektoren zu schließen
- CBP: kennzeichnet die Existenz und das Muster von Chrominanz- und Luminanz-Koeffizienten
- Tcoeff : Chrominanz- und Luminanz-Koeffizienten
Für das weitere Ausführungsbeispiel ist vor allem MBtype bedeutsam. MBtype wird für jeden einzelnen Makroblock MB gebildet. Abhängig vom Wert, den MBtype annimmt, treten die weiteren Header-Elemente RefFrame, Intra_pred_mode und CBP entweder auf oder nicht.
Im Folgenden werden nun mögliche Ausführungen zur Header- Komprimierung gezeigt.
Eine zentrale Überlegung der Erfindung besteht nun darin, dass einzelne Header-Elemente anhand von räumlichen und/oder zeitlichen Abhängigkeiten zwischen verschiedenen Datenblöcken pradiziert werden.
Dies kann beispielsweise erreicht werden, indem durch ein Codewort signalisiert, dass sich ein durch die Header- Information repräsentierter Datenblocktyp im Vergleich zum zeitlich vorangehenden Datenblock nicht geändert hat. Dies kann insbesondere ein 1-Bit-Codewort sein. Dieses Codewort wird anstelle der eigentlichen Header-Information übertragen und die aktuelle Header-Information aus der Header- Information des vorangehenden Datenblocks pradiziert, insbesondere gleichgesetzt.
Eine andere Möglichkeit besteht in einer Differenz-Codierung zwischen dem aktuellen Wert einer aktuellen Header- Information MBtype und dem Wert des entsprechenden Makroblocks MB in dem vorangehenden Datenblock/Frame. Eine mögliche Codetabelle kann folgendermaßen aussehen:
Code-Nummer Differenz
0 0 1 1
2 -1
3 2
4 -2
5 3 6 -3
Anstelle des Wertes für MBtype wird dann das jeweils ermittelte Codewort, die Code-Nummer, übertragen. Decoderseitig wird anhand des empfangenen Codewortes der Wert für MBtype pradiziert.
Alternativ kann auch die Differenz der MBtype Werte zweier benachbarter Makroblöcke MB innerhalb desselben Datenblocks/Frames (vgl. FIG 1) zur Erstellung einer Codetabelle herangezogen werden.
In beiden Fällen müssen nicht unbedingt alle möglichen Differenzwerte codiert werden. Wenn nämlich einige sehr seltene Differenzwerte auftreten, so reicht es aus, wenn nur die häufigen Differenzwerte codiert werden, während im Fall des Auftretens eines seltenen Differenzwertes die Header- Information, also der Wert für MBtype, explizit übertragen wird.
Besonders günstig ist es, wenn die Codeworte bzw. Code- Nummern derart codiert werden, dass für die den häufigsten
Differenzwerten zugeordneten Codeworte eine möglichst geringe Codelänge gewählt wird, während solchen Differenzwerten mit kleiner Auftrittswahrscheinlichkeit entsprechend längere Codeworte zugeordnet werden. Damit wird eine besonders effektive Codierung erreicht, da im Durchschnitt wesentlich mehr kurze Codeworte übertragen werden, als lange Codeworte. Dadurch kann somit eine weitere Reduktion der Bitrate für Header-Information erreicht werden.
Eine andere Möglichkeit besteht in einer Prädiktion durch
Bildung von Mittelwerten. Dies kann beispielsweise dadurch erfolgen, dass die Header-Informationen der den aktuellen Makroblock MB umgebenden bzw. benachbarten Makroblöcke desselben Frames ,Frame_n' sowie evtl. auch des vorangehenden Frames ,Frame_n-l' herangezogen werden, um einen
Prädiktionswert zu ermitteln. In FIG 3 ist ein solches Szenario skizziert mit Frame_n-1 (gestrichelt skizziert) und einem aktuellen Frame_n mit dem zu codierenden Makroblock MB (dunkel hinterlegt) und vier beispielhaften benachbarten Makroblöcken. Die aktuelle Header-Information von MB kann dann durch Mittelwertbildung der Header-Informationen aller oder einiger dieser umgebenden anderen Makroblöcke pradiziert werden .
Eine weitere Ausführungsform der Erfindung besteht darin, eine Prädiktion dadurch vorzunehmen, dass ein Makroblock gesucht wird, dessen Header-Information genau denselben Wert
aufweist, wie das Header-Element des aktuellen Makroblocks. Dabei kann auf eine Vielzahl verschiedener anderer Makroblöcke zurückgegriffen werden.
In FIG 4 sind einige der möglichen Kandidaten gezeigt. Dies sind zum einen Makroblöcke wie ein Makroblock MB_v, auf den durch einen oder mehrere ermittelte Bewegungsvektoren verwiesen wird. Zum anderen kann es der gleiche Makroblock MB_n-l des vorangehenden Frames sein, der also an der gleichen Stelle liegt wie der aktuell zu codierende
Makroblock MB. Außerdem kommen auch noch die benachbarte Makroblöcke des aktuellen Frames in Betracht, von denen exemplarisch der linke und der darüber liegende Makroblock (jeweils dunkel hinterlegt) skizziert sind. Allen diesen Auswahlmöglichkeiten ist gemeinsam, dass die zugehörigen Header-Informationen bereits übertragen wurden bzw. e pfängerseitig pradiziert wurden und damit bekannt sind.
Bei der Codierung wird überprüft, ob die Header-Information eines dieser anderen Makroblöcke der Header-Information des aktuell zu codierenden Makroblocks MB entspricht. Wenn ja, so wird in einer Codeworttabelle über entsprechende Code-Nummern signalisiert, von welchem dieser Kandidaten die Prädiktion gewählt wird, indem die aktuelle Header-Information gleich der durch das Codewort verknüpften Header-Information gewählt wird.
Auch hierbei ist es günstig, wenn die Codeworte bzw. Code- Nummern derart codiert werden, dass für die den häufigsten Auswahlmöglichkeiten zugeordneten Codeworte eine möglichst geringe Codelänge gewählt wird, während solchen Kandidaten mit kleiner Auftrittswahrscheinlichkeit entsprechend längere Codeworte zugeordnet werden. Damit wird eine besonders effektive Codierung erreicht, da im Durchschnitt wesentlich mehr kurze Codeworte übertragen werden, als lange Codeworte. Dadurch kann somit eine weitere Reduktion der Bitrate für Header-Information erreicht werden.
In diesem Zusammenhang haben Experimente gezeigt, dass für den H.26L-Standard vor allem die Header-Informationen eines entsprechenden Makroblocks in einem zeitlich vorangehenden Datenblock/Frame häufig übereinstimmt. Eine Prädiktion auf Grundlage der Annahme, dass sich die Header-Information MBtype gegenüber der entsprechenden des Vorgänger-Frames nicht ändert, hat sich also als besonders vielversprechend erwiesen.
Ausgehend von dieser Erkenntnis lässt sich die Wahrscheinlichkeit dafür schätzen, dass ein Makroblock mit einer gegebenen Header-Information MBtype direkt vom MBtype abhängt, die dieser Makroblock im vorangehenden Frame hatte,
Eine besonders vorteilhafte Ausführungsform der Erfindung besteht deshalb darin, eine Codeworttabelle zu bestimmen, die eine Code-Nummer liefert ausgehend von einer zu codierenden Header-Information MBtype und der bereits codierten Header- Information MBtyρe_n-l des entsprechenden Makroblocks in dem vorangegangenen Frame. Es werden somit alle möglichen Übergänge von einem Vorgänger-MBtype auf einen aktuellen MBtype codiert. Dieses Konzept ist in der Darstellung gemäß FIG 5 veranschaulicht. Die Zeilen beschreiben die möglichen Werte der Header-Informationen für MBtype__n-l, also des entsprechenden Vorgängermakroblocks . Die Spalten beschreiben die Header-Information MBtype des gleichen Makroblocks im aktuellen Frame. Das entsprechende Codewort CODE ergibt sich im Schnittpunkt.
Eine solche Codeworttabelle ist senderseitig und empfängerseitig vorgesehen. Senderseitig wird das entsprechende Codewort gewählt und anstelle der eigentlichen Header-Information MBtype übertragen. Empfängerseitig wird anhand des empfangenen Codeworts anhand der invertierten
Codeworttabelle auf den aktuelle Wert für MBtype geschlossen.
Eine solchermaßen konzipierte Codeworttabelle ist zur Anwendung für H.26L ist in FIG 6 gezeigt, wobei nur die häufigsten neun Werte der 32 möglichen Werte für MBtype codiert sind. Dabei wurde auch berücksichtigt, dass für die den häufigsten Übergängen zugeordneten Codeworte eine möglichst geringe Codelänge gewählt wird, während solchen Übergänge mit kleiner Auftrittswahrscheinlichkeit entsprechend längere Codeworte zugeordnet werden.
In diesem Zusammenhang hat es sich auch als günstige
Alternative erwiesen, wenn eine räumliche Prädiktion der Header-Information eines Makroblocks aus ermittelten Bewegungsvektoren der Makroblöcke eines Datenblocks erfolgt, indem solche Bewegungsvektoren die Prädiktionsrichtung signalisieren.
Es kann somit festgehalten werden: die Codeworttabelle wird vorzugsweise in Abhängigkeit von dem - oder den vorangegangenen Bildern erstellt. Im Allgemeinen kann gemessen werden, welcher Header-Typ (z.B. MBtype) wie häufig vorkommt. Dabei können neben zeitlichen auch räumliche Abhängigkeiten von der Bewegung/ Bewegungsvektoren oder einem Quantisierungsparameter berücksichtigt werden.
In einem nächsten Schritt kann eine entscheidende
Verbesserung der Codierung erreicht werden, indem mit solchen ermittelten Abhängigkeiten die Zuordnung der Codeworte zu ihrer Bedeutung innerhalb der Codeworttabelle umgeordnet wird. Damit werden kürzere Codeworte für häufigere Typen angewendet, was wiederum zu einer Ersparnis in der Bitrate führt .
Wie bereits vorangehend dargestellt, besteht ein erfolgreicher Spezialfall darin, für den zu codierenden Makroblock im aktuellen Bild/Datenblock den MBtype für den gleichen Makroblock aus dem vorangegangenen Bild als den
wahrscheinlichsten anzunehmen und mit dem kürzesten Codewort auszustatten. Es liegt also die Annahme zugrunde, dass sich der MBtype für einen bestimmten Macroblock von einem Bild zum nächsten nicht ändert. Um die Tabelle zu vervollständigen können auch von den umliegenden Makroblöcken im vorangegangenen Bild/ Datenblock die MBtypen als nächst wahrscheinlich angenommen werden.
Eine entsprechende statistische Auswertung besteht .darin, dass über das gesamte vorhergehende Bild ermittelt wird, welcher MBtype wie häufig vorkommt. Diese Anzahl kann abhängig sein von z.B. der im Bild enthaltenen Bewegung oder auch der verwendeten Quantisierung. Damit wäre es möglich, für bestimmte Quantisierungsparameter die Codeworttabellen vorher festzulegen oder aber ein Bewegungsmaß zur Bestimmung der zu verwendenden Codeworttabellen festzulegen.
Es können aber alternativ auch verschiedene andere Statistiken verwandt werden. Weiterhin kann z.B. nur die unmittelbare Umgebung des entsprechenden Makroblocks im vorangegangenen Bild betrachtet werden. Es ist auch möglich, im aktuellen Bild die Häufigkeit bis zum gerade zu codierenden Makroblock zu verwenden, nur die unmittelbare Umgebung des Makroblocks zu betrachten, oder über mehrere Bilder/Datenblöcke , Frame ' einer Sequenz S1...S4 die Verteilung zu ermitteln.
Grundsätzlich kann eine weitere Verbesserung erreicht werden, wenn z.B. sog. , Streaming' zugrunde gelegt wird. Es wird erst das ganze Bild codiert, bevor es gesendet wird. Es entstehen damit andere Codeworttabellen als die in FIG 6 gezeigte. Diese Ausführungsmöglichkeit soll im Folgenden ebenfalls anhand des bereits bekannten H.26L-Standards beschrieben werden .
Zentraler Aspekt hierbei ist gemäß der Erfindung, dass für den Fall, dass ein Makroblock seinen MBtype aus dem
vorangegangenen Bild/Datenblock beibehalten hat, die zugehörige Header-Information MBtype überhaupt nicht mehr übertragen wird.
Dazu wird der Videodatenstrom geeignet umsortiert, indem ein sog. , riority layered bitstream' gebildet wird. Dies erfolgt, indem jedes Layer einen bestimmten Typ von Information aufweist, also z.B. Header-Informationen. Damit wird erreicht, dass die Werte eines Header-Elementes für ale Makroblöcke MB gemeinsam bzw. blockweise übertragen werden. Dadurch ergeben sich neue Möglichkeiten einer Codierung von Header-Informationen.
Aufbauend auf der Erkenntnis, dass abhängig von der Art einer Videosequenz in der Regel zwischen 36% und 69% der Header- Information MBtype gegenüber der Header-Information des gleichen Makroblocks im vorangehenden Frame unverändert bleibt, lässt sich die damit verbundene räumliche Redundanz dazu verwenden, eine verbesserte Reihenfolge einer Anordnung der Header-Elemente im Layer zu erreichen.
In der der Codeworttabelle nach FIG 6 zugrunde liegenden Codierung wurden Header-Elemente MBtype Reihe für Reihe gelesen, z.B. ausgehend von der linken oberen Ecke bis zur unteren rechten Ecke. Nunmehr lässt sich jedoch eine effektive Umorganisation der Header-Elemente erreichen. Im Folgenden wird eine Möglichkeit mit besonders guten Ergebnissen dargestellt.
Zunächst wird der aktuelle Block/Layer B_n mit den Header-
Elementen aller aktuellen Makroblöcke mit dem vorangehenden Block/Layer B_n-1 aller Makroblöcke des Vorgänger-Datenblocks verglichen. Die Vorgehensweise ist in FIG 7 skizziert. Es sind Blöcke B_n und B_n-1 über die Zeit t aufgetragen und im rechten Bereich von FIG 7 ist der aus dem Vergleich resultierende Differenz-Header-Block DIFF gezeigt. Auf diese Weise kann die Information der Header-Elemente ermittelt
werden, die sich im Vergleich zum Vorgängerblock B_n-1 geändert haben. Solche veränderte Werte für MBtypes sind mit dem jeweils aktuellen MBtype-Wert eingetragen (grau hinterlegte Felder, wobei verschiedene Graustufen für entsprechende Header-Werte stehen) , während die Felder unveränderter Header-Elemente im Differenz-Header-Block DIFF leer bleiben (weiße Felder, sog. holes) . Der Differenz- Header-Block weist somit Leerfelder bzw. holes für unveränderte Header-Elemente auf .
Im nächsten Verarbeitungsschritt wird ein sog. "spiral reading" angewandt, um möglichst lange Folgen von nicht zu übertragenen Header-Elementen MBtype zu erhalten. Diese lassen sich wiederum sehr effektiv codieren.
Dazu erfolgt eine Transformation durch spiralförmiges Auslesen des Differenz-Header-Blocks DIFF. Indem man ausgehend von der Mitte spiralförmig bis zum Rand von DIFF ausliest, wird nur die Reihenfolge der Felder von DIFF manipuliert, ohne dass Werte verändert werden. Unter der
Annahme, dass die wichtigste Bildinformation in der Mitte eines Frames angesiedelt ist und dort auch die meisten Bewegungen der Bildinformation erfolgen, wird dadurch erreicht, dass der resultierende Datenstrom die wichtigste Information zuerst aufweist und zusätzlich möglichst lange
Folgen von Leerfeldern entstehen, die sich besonders effektiv codieren lassen. Diese Vorgehensweise ist in der Darstellung gemäß FIG 8 skizziert, wobei durch Pfeile das , spiral reading' des Differenz-Header-Blocks DIFF gezeigt ist und im rechten Figurenbereich der daraus resultierende transformierte Datenstrom angedeutet ist.
Dieser transformierte Datenstrom stellt zur eigentlichen Codierung Datenfelder und Leerfelder zur Verfügung und besitzt eine vorgegebene Länge L, die sich aus der Anzahl von Makroblöcken pro Datenblock/Frame ergibt. Ziel ist es nun, diese Daten zu übertragen, wobei aufgrund der Leerfeider
folgende Vorgehensweise gewählt wird. Es wird ein codierter Datenstrom mit zwei Arten von Informationen gebildet, nämlich Positionswerten von Feldern und Feldinhalten. Besonders effektiv erfolgt dies, indem alle Positionen gefolgt von einzelnen MBtypes gesendet werden. Die FIG 9 zeigt eine besonders vorteilhafte Art einer solchen Codierung, wobei die Position eines Wertes jeweils mit der letzten Position als Referenz angegeben wird, indem die Anzahl von Leerfeldern (unveränderter MBtype) zwischen zwei Werten (veränderter MBtype) angegeben wird.
In FIG 9 ist für einen Datenstrom der Länge L gezeigt, dass die Positionsinformationen indirekt durch Angabe der Anzahl von Leerfeldern vor dem nächsten konkreten Wert eines veränderten Header-Elementes MBtype übertragen wird. Die angegebenen beispielhaften Werte weisen u.a. unbestimmte Größen a und b auf, weil aus Platzgründen nicht der gesamte Datenstrom gezeigt werden kann, sondern nur dessen Anfang und Ende. Aus diesem Grund können in dem durch punktierte Felder skizzierten mittleren Bereich auch keine konkreten Werte angegeben wird. Das Prinzip wird jedoch deutlich und lautet somit: Anzahl an Leerfeldern assoziiert mit der nachfolgenden oder vorangehenden Code-Nummer .
Daran wird bereits deutlich, dass die konkret zu übertragenden Werte von veränderten Header-Elementen wiederum über eine entsprechende Codeworttabelle codiert werden können und die entsprechend zugehörigen Codenummern übertragen werden .
Eine Codeworttabelle kann auf ähnliche Weise wie bereits in Verbindung mit FIG 6 erläutert bestimmt werden, indem eine Tabelle gebildet wird, die eine Code-Nummer in Abhängigkeit vom Wert MBtype des gleichen Makroblocks im vorangehenden Frame liefert. Der Unterschied ist hier jedoch, dass nunmehr ein MBtype nicht mehr der gleiche sein kann wie im vorangehenden Frame, eben weil solche MBtypes nicht mehr
explizit übertragen werden (vgl. vorangehende Erläuterungen). Aus diesem Grund weist eine für die vorangehend beschriebene Ausführungsform geeignete Codeworttabelle eine etwas andere Struktur auf, die in FIG 10 beispielhaft abgebildet ist.
In dem in FIG 10 gezeigten Beispiel sind wiederum nur die häufigsten neun Werte der 32 möglichen Werte für MBtype codiert. Dabei wurde auch berücksichtigt, dass für die den häufigsten Übergängen zugeordneten Codeworte eine möglichst geringe Codelänge gewählt wird, während solchen Übergänge mit kleiner Auftrittswahrscheinlichkeit entsprechend längere Codeworte zugeordnet werden.
Auch hier kann die Zuordnung der Codeworte zu ihrer Bedeutung dynamisch oder statistisch umgeordnet werden. Z.B. kann man wiederum ein zeitlich vorangegangenes Bild insgesamt statistisch auswerten. Mit den gewonnenen Verteilungen für die einzelnen Header-Elemente MBtype kann dann die Codeworttabelle umsortiert bzw. neue bestimmt werden, um zu gewährleisten, dass für die den häufigsten Übergängen zugeordneten Codeworte eine möglichst geringe Codelänge gewählt wird. Diese neue Codeworttabelle gilt dann für das nächste Bild usw..
Eine Decodierung kann dann auf besonders einfache Weise erfolgen, was eine besonders kostengünstige Ausführung von Decodiereinheiten ermöglicht. Der Decoder erstellt das Datenfeld aus dem empfangenen Datenstrom und lokalisiert die Positionen der Header-Elemente MBtype, die sich verändert hatten. Mit diesen Informationen kann der Differenz-Header-
Block DIFF decoderseitig rekonstruiert werden. Anhand der inversen Codeworttabelle können nun die empfangenen Code- Nummern durch die zugehörigen Header-Elemente MBtype ersetzt werden. Schließlich werden noch die übrigen Felder durch die Header-Werte MBtype des vorangegangen decodierten Datenblocks ersetzt. Damit liegt decoderseitig die vollständige Header- Information vor.
Die gleiche Vorgehensweise ist auch für die anderen geschilderten Kandidaten zur Prädiktion geeignet. Ebenso lassen sich die exemplarisch anhand der Header-Information MBtype beschriebenen Maßnahmen der Erfindung vom Prinzip her auch auf beliebige andere Header-Informationen anwenden, insbesondere auch auf die weiteren Header-Informationen RefFrame und CBP des H.26L-Standards . Eine geeignete Codeworttabelle für CBP kann beispielsweise von den Header- Informationen MBtype eines Makroblocks in einem vorangehenden Datenblock statistisch abhängen.