DE69839100T2 - Verbesserte Videokodierung unter Verwendung von adaptiven Blockparametern für kodierte/unkodierte Blöcke - Google Patents

Verbesserte Videokodierung unter Verwendung von adaptiven Blockparametern für kodierte/unkodierte Blöcke Download PDF

Info

Publication number
DE69839100T2
DE69839100T2 DE69839100T DE69839100T DE69839100T2 DE 69839100 T2 DE69839100 T2 DE 69839100T2 DE 69839100 T DE69839100 T DE 69839100T DE 69839100 T DE69839100 T DE 69839100T DE 69839100 T2 DE69839100 T2 DE 69839100T2
Authority
DE
Germany
Prior art keywords
macroblock
frame
macroblocks
video
level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69839100T
Other languages
English (en)
Other versions
DE69839100D1 (de
Inventor
Ming-Chieh Bellevue Lee
Wei-ge Issaquah Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE69839100D1 publication Critical patent/DE69839100D1/de
Publication of DE69839100T2 publication Critical patent/DE69839100T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Description

  • Die Erfindung betrifft eine Videokodierung, insbesondere ein verbessertes Videokodierverfahren, das in Videokodierern und -dekodierern genutzt wird.
  • Vollbewegung-Videoanzeigen, die auf analogen Videosignalen basieren, sind seit langem in Form des Fernsehens verfügbar. Aufgrund neuer Fortschritte bei der Verfügbarkeit und den Fähigkeiten der Computerverarbeitung werden Vollbewegung-Videoanzeigen, die auf digitalen Videosignalen basieren, in größerem Umfang verfügbar. Digitale Videosysteme liefern wesentliche Verbesserungen gegenüber herkömmlichen analogen Videosystemen beim Erzeugen, Modifizieren, Übertragen, Speichern und Abspielen von Bewegungsbild-Videosequenzen.
  • Digitale Videoanzeigen umfassen eine große Anzahl von Bildrahmen, die nacheinander bei Frequenzen zwischen 30 und 75 Hz gespielt und aufbereitet werden. Jeder Bildrahmen ist ein Standbild, das aus einer Anordnung von Pixeln bzw. Bildpunkten gebildet wird, die auf der Anzeigeauflösung eines speziellen Systems beruhen. Beispielsweise haben Systeme basierend auf VHS eine Anzeigeauflösung von 320 × 480 Bildpunkten. NTSC-basierte Systeme weisen eine Anzeigeauflösung von 720 × 486 Bildpunkten auf. Hochauflösende Fernsehsysteme (HDTV), die entwickelt werden, haben Anzeigeauflösungen von 1360 × 1024 Bildpunkten.
  • Die von Videosequenzen umfaßte Menge digitaler Rohinformation ist groß. Das Speichern und das Übertragen dieser Mengen an Videoinformation ist mit herkömmlicher Personalcomputerausrüstung nicht möglich. Es sei beispielsweise eine digitalisierte Form eines VHS-Bildformats von relativ niedriger Auflösung mit einer Bildpunktauflösung von 320 × 480 betrachtet. Ein Vollbewegungsbild von zwei Stunden bei dieser Auflösung entspricht 100 Gigabyte digitaler Videoinformation. Zum Vergleich weisen herkömmliche optische CDs Kapazitäten von etwa 0,6 Gigabyte auf. Magnetische Festplatten verfügen über Kapazitäten von 1–2 Gigabyte. Optische CDs, die noch in der Entwicklung sind, verfügen über Kapazitäten von bis zu 8 Gigabyte.
  • Um die Begrenzungen beim Speichern und beim Übertragen solch großer Mengen digitaler Videoinformationen anzugehen, wurden verschiedene Videokomprimierstandards oder Videokomprimierverfahren entwickelt, einschließlich MPEG-1, MPEG-2 und H.26x. Diese Videokomprimiertechniken nutzen Ähnlichkeiten zwischen aufeinanderfolgenden Bildrahmen, die als zeitliche Korrelation oder Zwischenrahmen-Korrelation bezeichnet werden, um eine Zwischenrahmen-Kompressionen zu liefern, bei der Bewegungsdaten und Fehlersignale benutzt werden, um Veränderungen zwischen Rahmen zu kodieren.
  • Darüber hinaus nutzen die herkömmlichen Videokomprimiertechniken Ähnlichkeiten innerhalb von Bildrahmen, die als räumliche Korrelation oder Intrarahmenkorrelation bezeichnet werden, um die Intrarahmen-Kompressionen zu liefern, bei der Bildproben innerhalb eines Bildrahmens komprimiert werden. Intrarahmen-Kompression basiert auf herkömmlichen Prozessen zum Komprimieren von Standbildern, beispielsweise dem diskreten Kosinus-Transformkodieren (DCT). Diese Art des Kodierens wird manchmal als "Textur- oder Umwandel-Kodieren" bezeichnet. Eine "Textur" bezieht sich allgemein auf eine zweidimensionale Anordnung von Bildprobenwerten bzw. eine Anordnung an Farbwerten und Leuchtdichte-Werten oder eine Anordnung von α-Werten (Opazität). Der Term "Umwandeln" in diesem Zusammenhang bezieht sich darauf, wie die Bildproben während des Kodierprozesses in räumliche Frequenzkomponenten umgewandelt werden. Die Nutzung des Terms "Umwandeln" sollte von einer geometrischen Umwandlung unterschieden werden, die zum Abschätzen von Szenen- bzw. Stellenänderungen in einigen Zwischenrahmen-Kompressionsverfahren genutzt wird.
  • Zwischenrahmen-Kompressionen nutzen typischerweise Bewegungsschätzung und Bewegungskompensation zum Kodieren von Szenenänderungen zwischen Rahmen. Eine Bewegungsschätzung ist ein Verfahren zum Schätzen der Bewegung von Bildproben (beispielsweise Bildpunkten) zwischen Rahmen. Mit Hilfe der Bewegungsschätzung versucht der Kodierer, Blöcke von Bildpunkten in einem Rahmen mit entsprechenden Bildpunkten in einem anderen Rahmen in Übereinstimmung zu bringen. Nachdem der am ähnlichsten ausgebildete Block in einer vorgegebenen Suchfläche gefunden ist, wird die Positionsänderung der Bildpunktorte der entsprechenden Bildpunkte genähert und als Bewegungsdaten repräsentiert, beispielsweise als ein Bewegungsvektor. Bewegungskompensation ist ein Verfahren zum Bestimmen eines vorhergesagten Bildes und zum Verarbeiten des Fehlers zwischen dem vorhergesagten Bild und dem ursprünglichen Bild. Mittels der Bewegungskompensation wendet der Kodierer die Bewegungsdaten auf ein Bild an und verarbeitet ein vorhergesagtes Bild. Der Unterschied zwischen dem vorhergesagten Bild und dem Eingangsbild wird Fehlersignal genannt. Weil das Fehlersignal nur eine Anordnung von Werten ist, die den Unterschied zwi schen Bildprobenwerten repräsentieren, kann es mit Hilfe des selben Textur-Kodierverfahrens komprimiert werden, was für das Intrarahmen-Kodieren von Bildproben genutzt wird.
  • Obwohl sich spezifische Implementierungen von MPEG-1, MPEG-2 und H.26x unterscheiden, sind die Videokompressionsstandards bezüglich einiger Aspekte ähnlich. Die folgende Beschreibung des MPEG-2-Videokompressionsstandard ist allgemein anwendbar für andere.
  • MPEG-2 liefert eine Zwischenrahmen-Kompression und eine Intrarahmen-Kompression auf Basis von viereckigen Blöcken oder Anordnungen von Bildpunkten in Videobildern. Ein Videobild wird in Bildprobenblöcke unterteilt, die als Makroblöcke bezeichnet werden und Abmessungen von 16 × 16 Bildpunkten aufweisen. In MPEG-2 umfaßt ein Makroblock vier Leuchtdichte-Blöcke (jeder Block entspricht 8 × 8 Leuchtdichte-Proben (Y)) und zwei Farbwert-Blöcke (ein 8 × 8-Probenblock für Cb und Cr).
  • In MPEG-2 wird das Zwischenrahmen-Kodieren an Makroblöcken ausgeführt. Ein MPEG-2-Kodierer führt eine Bewegungsschätzung und eine Bewegungskompensation aus, um Bewegungsvektoren und Blockfehlersignale zu berechnen. Für jeden Block MN in einem Bildrahmen N wird eine Suche über das Bild eines nächsten nachfolgenden Videorahmens N + 1 oder eines unmittelbar vorhergehenden Bildrahmens N – 1 (d. h. bidirektional) ausgeführt, um den entsprechenden ähnlichsten Block MN+1 oder MN-1 zu identifizieren. Der Ort des ähnlichsten Blocks relativ zum Block MN wird mit einem Bewegungsvektor (DX, DY) kodiert. Der Bewegungsvektor wird dann genutzt, um einen Block vorhergesagter Probewerte zu berechnen. Diese vorhergesagten Probewerte werden mit dem Block MN verglichen, um das Blockfehlersignal zu bestimmen. Das Fehlersignal wird mittels eines Textur-Kodierverfahrens komprimiert, beispielsweise mit Hilfe des diskreten Kosinus-Umwandelkodierens (DCT – "Discrete Cosine Transform").
  • Objektbasierte Videokodiertechniken wurden als Verbesserung gegenüber herkömmlichen rahmenbasierten Kodierstandards vorgeschlagen. Beim objektbasierten Kodieren werden beliebig geformte Bildeigenschaften von den Rahmen in der Videosequenz mit Hilfe eines Verfahrens separiert, das "Segmentation" genannt wird. Die Videoobjekte oder "Segmente" werden unabhängig kodiert. Objektbasiertes Kodieren kann die Kompressionsrate verbessern, weil es die Zwischenrahmen-Korrelation zwischen Videoobjekten in aufeinanderfolgenden Rahmen vergrößert. Es ist darüber hinaus für mehrere Anwendungen vorteilhaft, die den Zugriff auf und das Verfolgen von Objekte(n) in einer Videosequenz verlangen.
  • Bei den für den MPEG-4-Standard vorgeschlagenen objektbasierten Videokodierverfahren werden die Form, die Bewegung und die Textur der Videoobjekte unabhängig kodiert.
  • Die Form eines Objekts wird von einer Binär- oder Alphamaske repräsentiert, die die Grenze des willkürlich geformten Objekts im Videorahmen definiert. Die Bewegung eines Objekts ist ähnlich zu den Bewegungsdaten nach MPEG-2, mit der Ausnahme, daß sie sich auf ein willkürlich geformtes Bild eines Objekts bezieht, das aus einem rechteckigen Rahmen segmentiert ist. Eine Bewegungsschätzung und eine Bewegungskompensation werden für Blöcke einer "Videoobjekt-Ebene" ausgeführt, eher als das dies für den gesamten Rahmen durchgeführt wird. Die Videoobjekt-Ebene ist der Name für das geformte Bild eines Objekts in einem Einzelrahmen.
  • Die Textur eines Videoobjekts ist die Bildprobeninformation in einer Videoobjekt-Ebene, die in die Form des Objekts fällt. Das Textur-Kodieren von Bildproben eines Objekts und von Fehlersignalen eines Objekts wird mittels ähnlicher Textur-Kodierverfahren ausgeführt, wie dies im Fall des rahmenbasierten Kodierens der Fall ist. Beispielsweise kann ein segmentiertes Bild in ein Grenzrechteck eingepaßt werden, daß aus Makroblöcken gebildet ist. Das mittels des Grenzrechtecks gebildete rechteckige Bild kann wie ein rechteckiger Rahmen komprimiert werden, mit der Ausnahme, daß transparente Makroblöcke nicht kodiert werden müssen. Bei einer Technik, die als "Auffüllen" bezeichnet wird, werden teilweise transparente Blöcke mit Probenwerten nach dem Füllen in die Abschnitte des Blocks kodiert, die außerhalb der Formgrenze des Objekts liegen.
  • Rahmenbasierte Kodiertechniken, wie MPEG-2 und H.26X, und objektbasierte Kodiertechniken, die für MPEG-4 vorgeschlagen werden, sind ähnlich, derart, daß sie Intrarahmen- und Zwischenrahmen-Kodieren an Makroblöcken ausführen. Das Zwischenrahmen-Kodierformat für diese Techniken nutzt ein spezielles Bit zum Anzeigen, ob der Zwischenrahmen-Makroblock kodiert ist. Das spezielle Bit wird manchmal als das COD-Bit oder das "nichtkodierte" Bit bezeichnet. Aus Gründen der Konsistenz bezeichnen wir diese Art von Parameter als COD-Bit oder COD-Parameter. Das COD-Bit zeigt an, ob der kodierte Makroblock Bewegungsdaten und texturkodierte Fehlerdaten umfaßt oder nicht. In Fällen, in denen die Be wegungsdaten und die Fehlersignaldaten Null sind, vermindert das COD-Bit die Information, die notwendig ist, um den Makroblock zu kodieren, weil eher nur ein einzelnes Bit anstelle zusätzlicher Bits gesendet wird, welches anzeigt, daß der Bewegungsvektor und die Textur-Daten nicht kodiert sind.
  • Zusätzlich zu den COD-Bits umfaßt die Kodiersyntax für Makroblöcke kodierte Blockparameter (CBP – "Coded Block Parameter"), die anzeigen, ob die kodierten Umwandel-Koeffizienten für den Farbwert und die Leuchtdichte für den Makroblock übertragen werden. Wenn die Umwandel-Koeffizienten für einen Block alle Null sind, besteht kein Bedarf, Textur-Daten für den Block zu senden. Die kodierten Blockparameter für den Farbwert (CBPC – "CBP for Chrominance") sind zwei Bits, die anzeigen, ob kodierte Textur-Daten für jeden der zwei Farbwert-Blöcke übertragen werden oder nicht. Das kodierte Blockmuster für die Leuchtdichte (CBPY – "CBP for Luminance") sind vier Bits, die anzeigen, ob kodierte Textur-Daten für jeden der vier Leuchtdichte-Blöcke übertragen werden oder nicht.
  • Die CBPC-Bits werden zusammen mit einem anderen Flag kodiert, welches Informationen über die Art der Quantisierung für den Makroblock liefert. Diese Flags werden kombiniert, um einen Parameter zu bilden, der MCBPC genannt wird. Der MCBPC ist "entropie"-kodiert, wobei ein "Entropie"-Kodierverfahren genutzt wird, beispielsweise Huffmann-Kodieren oder arithmetisches Kodieren. Die CBPY-Flags sind ebenfalls "entropie"-kodiert mittels des Huffman-Kodierens oder des arithmetischen Kodierens.
  • Während das COD-Bit beim Kodieren von Szenen mit wenig Bewegung vorteilhaft ist, ist es für Szenen ineffizient, die sich häufig ändern und nur wenige Makroblöcke mit Null-Bewegungsblöcken (d. h. Bewegungsvektoren, die eine Null-Bewegung anzeigen) aufweisen. Deshalb besteht Bedarf für eine effizientere Anwendung des COD-Bits für diese Szenenarten.
  • Der variable Längencode für CBPY basiert auf der Annahme, daß Intrarahmen-Makroblöcke mehr kodierte Leuchtdichte-Blöcke als nicht kodierte Blöcke aufweisen, während für Zwischen-Makroblöcke das Gegenteil gilt. Die Annahme wird in einigen Fällen verletzt und führt deshalb zum ineffizienten Kodieren der CBPY-Flags.
  • „Information Technology – Generic Code of Moving Pictures and Associated Audio-Information: „Video" ITU-T Recommendation H.262, ITU-T, ISO/IEC 13818 – 2. Juli 1995, XP 000198491, beschreibt einen Kodier- und Dekodierprozess für Videodaten. Der Kodieralgorithmus ist ein Hybrid aus bewegungskompensierter Vorhersage und DCT, wobei ausgelassene Makroblöcke (d. h. Makroblöcke, für die keine Daten kodiert sind) durch die Differenz in der Adresse des momentanen Makroblocks und der Adresse des vorhergehenden Makroblocks identifiziert werden.
  • Die Erfindung gemäß den beigefügten Ansprüchen sieht ein verbessertes Verfahren zum Kodieren von Blockparametern für Videosequenzen vor, die mittels Bewegungsschätzung und Bewegungskompensation kodiert werden.
  • In einem ersten Aspekt sieht die Erfindung ein Computerimplementiertes Verfahren zum Dekodieren mehrerer Videoframes in einer Videosequenz vor, wobei jeder der mehreren Videoframes mehrere Makroblöcke umfasst, mit folgenden Verfahrensschritten:
    Empfangen komprimierter Videodaten in einem Bitstrom, wobei der Bitstrom eine Kodiersyntax mit mehreren Syntaxebenen aufweist, wobei die mehreren Syntaxebenen eine Frame-Ebene und eine Makroblock-Ebene umfassen; und Dekomprimieren eines vorhergesagten Videoframes der mehreren Videoframes unter Verwendung einer Inter-Frame-Dekompression. Das Dekomprimieren unter Verwendung der Inter-Frame-Dekompression umfasst: Wiedergewinnen von Information auf der Frame-Ebene für den vorhergesagten Videoframe, auf der Grundlage der wiedergewonnenen Information, Ermitteln, ob die mehreren Indikatorbits in dem Bitstrom für die mehreren Makroblöcke des vorhergesagten Videoframes vorhanden sind; wenn die mehreren Indikatorbits in dem Bitstrom für die mehreren Makroblöcke des vorhergesagten Videoframes vorhanden sind, Ausführen der folgenden Schritte für jeden Makroblock der mehreren Makroblöcke des vorhergesagten Videoframes: Wiedergewinnen eines einzelnen Indikatorbits der mehreren Indikatorbits für den Makroblock auf der Makroblock-Ebene; Ermitteln, ob der Makroblock übersprungen wird oder nicht, gestützt auf das wieder gewonnene einzelne Indikatorbit, und wenn der Makroblock nicht übersprungen wird, Wiedergewinnen von Bewegungsinformation und kodierter Blockmusterinformation für den Makroblock auf der Makroblock-Ebene.
  • In einem zweiten Aspekt sieht die Erfindung ein Computerimplementiertes Verfahren zum Kodieren mehrerer Videoframes in einer Videosequenz vor, wobei jeder der mehreren Videoframes mehrere Makroblöcke umfasst, mit folgenden Verfahrensschritten:
    Komprimieren von Videodaten in einen Bitstrom, wobei der Bitstrom eine Kodiersyntax mit mehreren Syntaxebenen aufweist und die mehreren Syntaxebenen eine Frame-Ebene und eine Makroblock-Ebene umfassen, und wobei das Komprimieren von Videodaten zu einem Bitstrom das Komprimieren eines vorhergesagten Videoframes der mehreren Videoframes mittels einer Inter-Frame-Kompression umfasst. Das Komprimieren unter Verwendung der Inter-Frame-Kompression umfasst folgende Schritte: Ausgeben von Information auf der Frame-Ebene, für den vorhergesagten Videoframe auf der Grundlage der wiedergewonnenen Information, Ermitteln, ob die mehreren Indikatorbits in dem Bitstrom für die mehreren Makroblöcke des vorhergesagten Videoframes vorhanden sind; und wenn die mehreren Indikatorbits in dem Bitstrom für die mehreren Makroblöcke des vorhergesagten Videoframes vorhanden sind, Ausführen der folgenden Schritte für jeden Makroblock der mehreren Makroblöcke des vorhergesagten Videoframes: Ausgeben eines einzelnen Indikatorbits der mehreren Indikatorbits für den Makroblock auf der Makroblock-Ebene, wobei das einzelne Indikatorbit angibt, ob der Makroblock übersprungen wird oder nicht; und wenn der Makroblock nicht übersprungen wird, Ausgeben von Bewegungsinformation und kodierter Blockmusterinformation für den Makroblock auf der Makroblock-Ebene.
  • Es wird ein Verfahren zum adaptiven Kodieren eines COD-Parameters beschrieben, welcher angibt, ob Texturdaten und Bewegungsdaten für Zwischenrahmen (Inter-Frame)-Makroblöcke kodiert sind. Es wird ein weiteres Verfahren zum adaptiven Auswählen eines Entropiekodiermodus für die kodierten Blockparameter für Luminanz basierend auf den kodierten Blockparametern für Chrominanz beschrieben. Diese beiden Gesichtspunkte gelten für Objekt-basierte und Frame-basierte Videokodierung.
  • Das adaptive Kodieren des COD-Parameters verbessert die Kodiereffizienz für eine Anzahl von Videokodieranwendungen, insbesondere für Szenen mit wenigen Makroblöcken mit Null-Bewegung. Das adaptive Kodieren des COD-Parameters bezieht sich auf ein Verfahren zum selektiven Sperren des COD-Parameters auf Basis der Anzahl nicht kodierter Makroblöcke in einem Videobild. Das adaptive Kodieren des COD-Parameters wird in einem Kodierer mit Hilfe des Bestimmens der Anzahl von Makroblöcken in einem Bild mit Null-Textur und Null-Bewegung ("übersprungene Makroblöcke") implementiert. Der COD-Parameter wird dann für Zwischenrahmen-Makroblöcke in dem Bild gesperrt, wenn die Anzahl übersprungener Makroblöcke kleiner als ein Schwellwert ist.
  • Die Schwellwertanzahl wird von der Gesamtanzahl an Makroblöcken in dem Bild und der Anzahl von Bits abgeleitet, die benötigt werden, um Bewegung und Textur in einem Zwischenrahmen-Makroblock zu kodieren, in welchem die Bewegungs- und Textur-Daten alle Null. An dem Schwellwertpunkt werden weniger Bits zum Kodieren aller Makroblöcke ohne COD-Parameter benötigt, weil mehr COD-Bits als Bits vorhanden sind, die benötigt werden, um Bewegungsdaten und Textur-Daten für Zwischenrahmen-Blöcke zu Kodieren, für welche die Textur-Daten und die Bewegungsdaten Null sind. Beispielsweise ist die Schwellwertanzahl ein Fünftel der Gesamtanzahl an Makroblöcken für das Bild, wenn fünf Bits notwendig sind, um Null-Bewegung und -Textur für einen Makroblock zu Kodieren.
  • Das adaptive Sperren des COD-Parameters wird mittels der Nutzung eines COD-Sperrflags repräsentiert, das mit jedem Zwischenrahmen-Bild geliefert wird. Dieses Flag zeigt an, ob der COD-Parameter von jedem Makroblock in dem Bild umfaßt wird. Der Kodierer bestimmt den Wert dieses Flags nach dem Ausführen der Bewegungsschätzung, der Bewegungskompensation und des Textur-Kodierens für das Bild, weil diese Prozesse anzeigen, wie viele Blöcke Makroblöcke mit Null-Textur-Daten und Null-Bewegungsdaten haben. Der Dekodierer nutzt das COD-Sperrflag, um zu bestimmen, ob der COD-Parameter für jeden Makroblock zu dekodieren ist.
  • Die Kodiereffizienz kann weiter mittels des adaptiven Auswählen der Entropie-Kodierbetriebsart für das kodierte Blockmuster der Leuchtdichte (CBPY) auf Basis des kodierten Blockmusters für den Farbwert (CBPC) verbessert werden. Dieses verbesserte Kodierverfahren selektiert das Entropie-Kodieren für CBPY in Zwischenrahmen-Makroblöcken, basierend darauf, ob die CBPC-Bits für den Makroblock gesetzt sind. Wenn CBPC-Bits in einem Zwischenrahmen-Makroblock gesetzt sind ("11"), ist es wahrscheinlicher, daß die Leuchtdichte-Blöcke von Null verschiedene Umwandel-Koeffizienten aufweisen. Als solches wird das Entropie-Kodieren so gewählt, daß weniger Bits zum Kodieren von CBPY für kodierte Leuchtdichte-Blöcke genutzt werden. Im Gegensatz dazu wird das Entropie-Kodieren so gewählt, daß weniger Bits zum Kodieren von CBPY für nicht kodierte Leuchtdichte-Blöcke verwendet werden, wenn eines der CBPC-Bits nicht gesetzt ist.
  • Die oben zusammengefaßten Verfahren verbessern die Kodiereffizienz für Zwischenrahmen-Makroblöcke in Videoszenen mit wenigen Makroblöcken, die Null-Bewegung und häufige Änderungen von Rahmen zu Rahmen aufweisen. Das adaptive Sperren des COD-Parameters kann bis zu 2–3% der Gesamtbitrate für Anwendungen mit niedriger Bitrate einsparen. Es wurde gezeigt, daß die adaptive Auswahl der CBPY-Kodierbetriebsart für Zwischenrahmen-Blöcke die Anzahl von Bits, die zum Kodieren von CBPY benötigt werden, um mehr als 25% reduziert. Diese Verfahren verbessern die Kodiereffizienz ohne die Komplexität des Kodierer- und des Dekodiererdesigns zu vergrößern oder Kompatibilitätsprobleme zu erzeugen.
  • Zusätzliche Merkmale und Vorteile der Erfindung ergeben sich aus der folgenden detaillierten Beschreibung unter Bezugnahme auf eine Zeichnung. Hierbei zeigen:
  • 1 ein Blockdiagramm eines Videokodierers;
  • 2 ein Blockdiagramm eines Videodekodierers;
  • 3 ein Flußdiagramm, welches einen Kodiererprozess für adaptives Sperren des COD-Parameters bei Zwischenrahmen-Makroblöcken illustriert;
  • 4 ein Flußdiagramm, welches illustriert, wie ein Dekodierer Makroblöcke interpretiert, für welche der COD-Parameter freigegeben oder gesperrt ist;
  • 5 ein Flußdiagramm, welches illustriert, wie ein Kodierer-Prozeß Entropie-Kodieren von CBPY-Parametern auf Basis der Werte von CBPC-Parametern handhabt; und
  • 6 ein Flußdiagramm, welches illustriert, wie ein Dekoder CBPY-Parameter von Zwischenrahmen-Makroblöcken auf Basis der Werte der CBPC-Parameter interpretiert.
  • Der erste Abschnitt liefert eine Beschreibung eines Videokodierers und eines Videodekodierers. Folgende Abschnitte beschreiben, wie das Kodieren mittels eines 1) adaptiven Freigebens eines Blockparameters, welcher anzeigt, ob Bewegung und Textur für einen Block kodiert ist, und mittels 2) Verbesserns des Entropie-Kodierens von Blockparametern verbessert wird, welche anzeigen, ob Leuchtdichte-Blöcke für einen Makroblock kodiert sind.
  • Die Erfindung bezieht sich auf rahmenbasiertes und objektbasiertes Videokodieren. Die Erfindung verbessert das Kodieren von Sequenzen an Bildern, die Videoobjekt-Ebenen repräsentieren, welche von einer Sequenz an Rahmen oder ganzen Rahmen abgeleitet sind. Objektbasiertes Kodieren umfaßt ähnliche Bewegungs- und Texturkodierkomponenten, die beim rahmenbasierten Kodieren als auch beim Formkodieren genutzt werden. Die für die Erfindung relevante Block-Syntax ist ähnlich zu dem rahmenbasierten und dem objektbasierten Kodieren. Der Kodierer und der Dekodierer, die im nächsten Abschnitt beschrieben werden, sind objektbasiert, sie liefern deshalb eine ausreichende Basis zum Erklären, wie die Erfindung in rahmenbasierten und objektbasierten Kodierschemata implementiert wird.
  • Beschreibung eines beispielhaften Kodierers und eines beispielhaften Dekodierers
  • 1 ist ein Blockdiagramm, welches eine Implementierung eines objektbasierten Videokodierers zeigt. Die Eingabe 30 an den Kodierer umfaßt eine Folge von Objekten, deren Forminformation und graphische Begrenzungslinien. Die Forminformation ist deshalb verfügbar, bevor der Kodierer Textur-Daten und Bewegungsdaten kodiert. Das rahmenbasierte Kodieren unterscheidet sich dadurch, daß der gesamte Rahmen ohne Forminformation codiert wird.
  • Das Formkodiermodul 32 empfängt die Definition eines Objekts, einschließlich dessen graphischer Begrenzungslinien, und erstreckt die graphischen Begrenzungslinien auf ganzzahlige Vielfache von Makroblöcken. Die Forminformation für ein Objekt umfaßt eine Maske oder eine "Alpha-Ebene". Das Formkodiermodul 32 liest die Maske und komprimiert sie, wobei beispielsweise ein herkömmliches Kettenkodierverfahren zum Kodieren der Kontur des Objekts genutzt wird.
  • Ein Bewegungsschätzmodul 32 liest ein Objekt, einschließlich deren graphischer Begrenzungslinien, und ein vorher rekonstruiertes Bild 1636 und berechnet Bewegungsschätzdaten, die genutzt werden, um die Bewegung eines Objektes von einem Rahmen zu einem anderen vorherzusagen. Das Bewegungsschätzmodul 1634 sucht den ähnlichsten Makroblock in dem rekonstruierten Bild für jeden Makroblock in dem laufenden Bild, um die Bewegungsdaten für jeden Makroblock zu berechnen. Das spezifische Format der Bewegungsdaten von dem Bewegungsschätzmodul 1634 kann in Abhängigkeit von dem genutzten Bewegungsschätzverfahren variieren. Beispielsweise können Bewegungsdaten Bewegungsdedektoren oder geo metrische Umwandel-Koeffizienten umfassen, beispielsweise verwandte Umwandel-Koeffizienten, die genutzt werden, um die Bewegung des Makroblocks vorherzusagen. Im Standardbewegungskodieren umfassen die Bewegungsdaten einen Bewegungsvektor für jeden Makroblock oder vier Bewegungsvektoren entsprechend den vier Leuchtdichte-Blöcken in dem Makroblock.
  • Das Bewegungskompensationsmodul 38 liest die Bewegungsdaten, die mittels des Bewegungsschätzmoduls berechnet wurden, und das vorher rekonstruierte Bild 36 und berechnet ein vorhergesagtes Bild für den laufenden Rahmen. Der Kodierer findet die Differenz zwischen den Bildprobenwerten in dem Eingabebildblock gemäß der Spezifikation in der Eingabe 30 und die entsprechenden Probenwerte in den vorhergesagten Bildblock gemäß der Berechnung in dem Bewegungskompensationsmodul 38, um das Fehlersignal für den Makroblock zu bestimmen.
  • Das Textur-Kodiermodul 40 komprimiert dieses Fehlersignal für zwischenrahmen-kodierte Objekte und komprimiert die Bildprobenwerte für das Objekt aus dem Eingabedatenstrom 30 für intrarahmen-kodierte Objekte. Der Rückkopplungsweg 42 von dem Textur-Kodiermodul 40 repräsentiert das Fehlersignal. Der Kodierer nutzt die Fehlersignalblöcke zusammen mit den vorhergesagten Bildblöcken von dem Bewegungskompensationsmodul, um das vorher rekonstruierte Bild 36 zu berechnen.
  • Das Textur-Kodiermodul 40 kodiert Intrarahmen- und Fehlersignaldaten für ein Objekt mittels irgendeiner von mehreren Standbild-Kompressionstechniken. Kompressionstechniken umfassen beispielsweise DCT, "wavelet" als auch andere herkömmliche Bildkompressionsverfahren.
  • Der Bitstrom der komprimierten Videosequenz umfaßt dekodierte Form-, Bewegungs- und Texturinformation von dem Formkodier-, dem Bewegungs-, dem Bewegungsschätz- und dem Textur-Kodiermodul. Ein Multiplexer 44 kombiniert und formatiert diese Daten in die geeignete Syntax und gibt sie an den Puffer 46 aus.
  • Obwohl der Kodierer in Hard- oder Software implementiert werden kann, wird eine Implementierung in Software bevorzugt. Bei einer Software-Implementierung repräsentieren die Module in dem Kodierer Software-Routinen, die in einem Speicher eines Computers ausge führt werden, und Speicher, der zum Speichern der Videodaten genutzt wird. Ein Software-Kodierer kann gespeichert werden und auf verschiedenen herkömmlichen computerlesbaren Medien verteilt werden. Bei Hardware-Implementierungen werden die Kodierermodule in digitaler Logik implementiert, vorzugsweise in einer integrierten Schaltung. Einige der Kodiererfunktionen können mittels spezieller digitaler Logikeinrichtungen in einer Computerperipherie optimiert werden, um Arbeitslast von einem Gastcomputer auszulagern.
  • 2 ist ein Blockdiagramm, welches einen Dekodierer für ein objektbasiertes Videokodierverfahren zeigt. Ein Demultiplexer 60 empfängt einen Bitstrom, der eine komprimierte Videosequenz repräsentiert, und separiert kodierte Form-, Bewegungs- und Texturdaten für jeweils ein Objekt. Das Form- bzw. Zustandsdekodiermodul 64 decodiert die Form oder die Kontur für das laufende Objekt, welches verarbeitet wird. Um dieses auszuführen, wendet es einen Formdekodierer an, der das inverse des Formkodierverfahrens implementiert, welches in dem Kodierer nach 2 genutzt wurde. Die sich ergebenden Formdaten bilden eine Maske, beispielsweise eine binäre Alpha-Ebene oder eine Grauskala-Alpha-Ebene, die die Form bzw. den Zustand des Objekts repräsentiert.
  • Das Bewegungsdekodiermodul 66 dekodiert die Bewegungsinformation in dem Bitstrom. Die dekodierte Bewegungsinformation umfaßt in Abhängigkeit von der Art des in dem Kodierer genutzten Schätz- bzw. Näherungsverfahrens Bewegungsdaten, wie Bewegungsvektoren für Makroblöcke, Blöcke oder geometrische Umwandel-Koeffizienten. Das Bewegungsdekodiermodul 66 liefert diese Bewegungsinformation an das Bewegungskompensationsmodul 68. Das Bewegungskompensationsmodul 68 wendet die Bewegungsdaten auf die vorher rekonstruierten Objektdaten 70 an.
  • Das Texturdekodiermodul 74 dekodiert Fehlersignale für zwischenrahmen-kodierte Texturdaten und eine Anordnung von Farbwerten für Intrarahmen-Texturdaten und übergibt diese Information an ein Modul 72 zum Berechnen und zum Ansammeln des rekonstruierten Bildes. Für zwischenrahmen-kodierte Objekte wendet dieses Modul 72 die Fehlersignaldaten auf die vorhergesagte Bildausgabe von dem Bewegungskompensationsmodul an, um das rekonstruierte Objekt für den laufenden Rahmen zu berechnen. Für intrarahmen-kodierte Objekte dekodiert das Texturdekodiermodul 74 die Bildprobenwerte für das Objekt und plaziert das rekonstruierte Objekt in dem rekonstruierten Objektmodul 72. Früher rekonstruierte Objekte werden zeitweise in einem Objektspeicher 70 gespeichert und genutzt, um das Objekt für andere Rahmen zu konstruieren.
  • Ähnlich wie der Kodierer kann der Dekodierer in Hardware, Software oder in einer Kombination von beidem implementiert werden. Bei Softwareimplementierungen sind die Module des Dekodierers Software-Routinen, die im Speicher eines Computers ausgeführt werden, und Speicher, der zum Speichern der Videodaten genutzt wird. Ein Software-Dekodierer kann gespeichert werden und auf mehreren herkömmlichen computerlesbaren Medien vertrieben werden. Bei Hardwareimplementierungen werden die Dekodierermodule in digitaler Logik implementiert, vorzugsweise in einer integrierten Schaltung. Einige der Dekodiererfunktionen können mit Hilfe spezieller digitaler Logikeinrichtungen in einer Computerperipherie optimiert werden, um Bearbeitungslast von einem Gastcomputer auszulagern.
  • Verbessertes Kodieren eines COD-Parameters
  • Bei bekannten und vorgeschlagenen Videokodierstandards wird der COD-Parameter genutzt, um anzuzeigen, ob Bewegung und Textur für einen Zwischenrahmen-Makroblock kodiert sind. Die Nutzung des COD-Bits ist für das Kodieren von niedrigen Bewegungsszenen mit einer sehr geringen Bitrate optimiert. Für viele Anwendungen, insbesondere bei Internet-Anwendungen kann die Nutzung des COD-Bits ineffizient sein. Bei diesen Anwendungen gilt beispielsweise folgendes:
    • – die verfügbare Bitrate für Video ist typischerweise 10+ kb/s (kbps);
    • – der Bildbereich ist typischerweise QCIF (QCIF ist eine Standardrahmengröße mit 99 Makroblöcken);
    • – die Rahmenrate ist typischerweise 5+ pro Sekunde; und
    • – die Szenenänderung ist häufig, und die Bewegung zwischen Rahmen ist meistens von Null verschieden.
  • Bei diesen Bedingungen weist die Mehrheit der Texturdaten für Makroblöcke/Blöcke von Null verschiedenen Koeffizienten auf. Das COD-Bit ist unter diesen Umständen nicht effektiv, weil das Kodieren für wenige Makroblöcke übersprungen wird und trotzdem der COD-Parameter für alle Zwischenrahmen-Makroblöcke gesendet wird, unabhängig davon, ob sie übersprungen werden oder nicht. Die Bitrate für den COD-Parameter beträgt etwar 0,5 kbps.
  • Das unten im Detail beschriebene Verfahren sperrt adaptiv das COD-Bit und spart potentiell 2–3% der Gesamtbitrate.
  • Um die Effizienz des COD-Parameters zu verbessern, sperrt der Kodierer diesen Parameter für zwischenrahmen-kodierte Bilder, in welchen die Anzahl von nicht kodierten Makroblöcken den Schwellwert übersteigt, adaptiv. Bei objektbasiertem Kodieren addiert der Kodierer einen Flag zu der Kodiersyntax auf dem Videoobjektebenen-Niveau, um anzuzeigen, ob der COD-Parameter für alle Zwischenrahmen-Makroblöcke in der Videoobjektebene gesperrt ist. Die Videoobjektebene ist ein Bild, welches ein Objekt in einem Rahmen repräsentiert.
  • Beim rahmenbasierten Kodieren addiert der Kodierer ein Flag zu der Kodiersyntax auf dem Rahmenniveau, um anzuzeigen, ob der COD-Parameter für alle Makroblöcke in dem Rahmen gesperrt ist. Es wird darauf hingewiesen, daß sowohl bei der objektbasierten als auch bei der rahmenbasierten Lösung der COD-Parameter für Zwischenrahmen-Makroblöcke gesperrt ist.
  • Der Videokodierer nach 1 kodiert ein Videobild in zwei primären Stufen. Die erste Stufe führt eine Bewegungsschätzung und eine Bewegungskompensation aus, und die zweite Stufe konstruiert den Bitstrom in die geeignete Kodiersyntax. Deshalb wird die Anzahl an Makroblöcken, für die die Bewegegungsvektoren und die Texturdaten alle Null sind, in der ersten Stufe als Null bestimmt. Basierend auf der Anzahl dieser Makroblöcke bestimmt die zweite Stufe, ob der COD-Parameter für alle Makroblöcke in dem Videobild zu sperren ist.
  • 3 ist ein Flußdiagramm, welches ein Prozeß zum adaptiven Sperren des COD-Parameters während des Kodierens eines Videobilds zeigt. Der Kodierer führt eine Bewegungsschätzung und eine Bewegungskompensation (100, 102) aus und notiert, ob die Bewegungsvektoren Null sind. Weil der Kodierer ein Umwandlungskodieren für jeden Zwischenrahmen-Makroblock und -Block (104) ausführt, registriert der Kodierer, ob die DCT-Umwandel-Koeffizienten für den Makroblock alle Null sind. Dieses kann in Fällen auftreten, bei denen die Fehlerwerte für alle Bildproben in einem Makroblock Null oder näherungsweise Null sind.
  • Wenn das Bewegungs- und das Texturkodieren für das Bild abgeschlossen sind, bestimmt die zweite Stufe des Kodierers die Anzahl an Blöcken, für welche die Bewegungsvektoren und die Umwandel-Koeffizienten alle Null sind (106). Diese Blöcke werden manchmal als über sprungene Blöcke bezeichnet, weil das Kodieren der Bewegungsvektoren und der Umwandel-Koeffizienten für diese Makroblöcke übersprungen wird. Wenn die Anzahl übersprungener Makroblöcke einen Schwellwert übersteigt, ist es effizient, den COD-Parameter für jeden Block zu nutzen, welcher anzeigt, ob der Makroblock kodiert ist. In diesem Fall wird der COD-Parameter durch das Löschen eines COD-Sperrflags für das Bild beigegeben (110). Andernfalls wird das COD-Sperrflag für das Bild gesetzt.
  • Die Kodiersyntax für das Bild umfaßt das COD-Sperrflag, um anzuzeigen, ob die Makroblock-Syntax den COD-Parameter umfaßt. Der COD-Parameter wird auf Eins gesetzt, wenn die Transform-Koeffizienten für einen Zwischenmakroblock alle Null sind, andernfalls wird der COD-Parameter auf Null gesetzt.
  • Die folgende Tabelle hilft zu zeigen, wie das COD-Sperrflag die Kodiereffizienz für ein Bild verbessert. Die Syntax für einen Zwischenrahmen-Makroblock ist wie folgt.
    COD MCBPC CBPY MVD DCT-Block
  • Wenn das COD-Bit gesetzt ist, werden für den Block MCBPC, CBPY, MVD (Bewegungsvektordaten) und der DCT-Block nicht gesendet. Dieses wird als ein übersprungener Makroblock bezeichnet. Im Gegensatz dazu umfaßt der Makroblock entropiekodierte Bits für MCBPC und CBPY, einen kodierten Bewegungsvektor oder kodierte Bewegungsvektoren (MVD) und wenigstens einen DCT-Block, wenn das COD-Bit bei herkömmlichen Kodierstandards nicht gesetzt ist. Bewegungsvektoren sind typischerweise als Differenzbewegunsgvektoren kodiert. Ein Differenzbewegungsvektor ist eine Vektormenge (weist beispielsweise ein vertikale und eine horizontale Komponente auf), die die Differenz zwischen zwei Bewegungsvektoren repräsentiert, beispielsweise die Differenz zwischen den Bewegungsvektoren für den laufenden und den früheren Makroblock.
  • In Szenen mit wenigen Makroblöcken an Null-Bewegung und häufigen Änderungen existieren wahrscheinlich nur wenige übersprungene Makroblöcke. Unter diesen Umständen ist das COD-Bit ineffizient, weil es zu dem Makroblock ein Extrabit hinzufügt. Wenn der COD-Parameter gesperrt ist, weist jeder der kodierten Makroblöcke relativ zu dem Fall, bei dem COD freigegeben ist, ein Bit weniger auf. Wird beispielsweise angenommen, daß das Huffman-Kodieren zum Kodieren von MCBPC und CBPY genutzt wird, hat jeder der Makroblöcke mit Null-Bewegung und Null-Texturdaten Extrabits für MCBPC (1 Bit), CBPY (2 Bits) und MVD (2 oder mehr Bits). Die Bewegung und die Textur für diese Art von Makroblock verlangt das Kodieren von wenigstens 5 Bits (MCBPC + CBPY + MV > 5). Wegen des Sperrens des COD-Parameters verlangt dieser Makroblock deshalb das Kodieren von wenigstens 5 Bits anstelle von nur einem Bit in dem Fall, bei dem das COD freigegeben ist.
  • Die Schwellwertanzahl übersprungener Makroblöcke kann auf der Basis der Gesamtanzahl an Makroblöcken in dem Bild und den Bits analytisch bewertet werden, die notwendig sind, um einen Makroblock mit Null-Bewegung und Null-Texturdaten und einem COD-Parameter zu kodieren. Der folgende Ausdruck gibt ein Beispiel für einen Schwellwert: (1/x) MBGesamt = MBÜbersprungen wobei MBÜbersprungen die Anzahl der übersprungenen Makroblöcke, MBGesamt die Gesamtanzahl der Makroblöcke in dem Bild und x die Anzahl von Bits sind, die benötigt wird, um einen Makroblock zu kodieren, wenn die Bewegungs- und die Texturdaten alle Null sind. Die Schwellwertanzahl ist: (1/x) MBGesamt.
  • Es ist wichtig darauf hinzuweisen, daß dieser Schwellwert nur ein Beispiel ist. Die Anzahl der Bits, die zum Kodieren eines Makroblocks mit Null-Bewegungs- und Null-Texturdaten benötigt werden, kann in Abhängigkeit von dem spezifischen Kodierverfahren variieren. Beispielsweise ist es in Fällen, in denen das Huffman-Kodieren genutzt wird, leichter als in dem oben beschriebenen Beispiel, die Anzahl von Bits abzuschätzen, die benötigt werden, um MCBPC und CBPY zu kodieren. In Fällen, in denen ein arithmetisches Kodieren genutzt wird, ist es schwieriger, die Anzahl der zum Kodieren eines Makroblocks mit Null-Bewegungs- und Null-Texturdaten benötigten Bits zu berechnen. Eine zu der oben beschriebenen ähnliche Lösung kann jedoch in Fällen des arithmetischen Kodierens mittels einer konservativen Schätzung der Anzahl von Bits genutzt werden, die benötigt werden, um die Parameter in einem Makroblock mit Null-Textur- und Null-Bewegungsdaten zu kodieren.
  • Es gibt eine Reihe heuristischer und analytischer Verfahren zum Auswählen einer Schwellwertgröße. Ein Weg besteht darin, eine mittlere Anzahl von Bits zu berechnen, die benötigt werden, um Makroblöcke mit Null-Bewegungs- und Null-Texturdaten für einen Rahmen zu kodieren, und anschließend eine Formel zu nutzen, die ähnlich zu einer der oben beschriebenen ist (beispielsweise (1/xMittel)MBGesamt), um eine Schwellwertgröße für den Rahmen zu berechnen. Ein anderer Weg besteht darin, auf einer Rahmen-zu-Rahmen-Basis die Anzahl von Bits zu vergleichen, die benötigt werden, um den Rahmen mit und ohne den COD-Parameter zu kodieren, und anschließend die Lösung auszuwählen, die weniger Bits nutzt.
  • Der Dekodierer muß zum Unterstützen des adaptiven Freigebens und Sperrens des COD-Parameters modifiziert werden. 4 ist ein Flußdiagramm, welches zeigt, wie ein Dekodierer Makroblöcke interpretiert, für welche der COD-Parameter freigegeben und gesperrt ist. In einer rahmenbasierten Lösung wird das COD-Sperrflag auf dem Rahmenniveau kodiert, es existiert ein Einzelflag für jeden Rahmen. Bei einer objektbasierten Lösung wird das COD-Sperrflag vorzugsweise auf dem Videoobjektebene-Niveau kodiert. Dies bedeutet mit anderen Worten, daß jedes der zwischenrahmen-kodierten Objekte ein COD-Sperrflag für jeden Rahmen aufweist. Wenn der Dekodierer die Rahmenniveau- oder die Objektniveau-Parameter dekodiert, dekodiert er das COD-Sperrflag (120) und bestimmt, ob der COD-Parameter freigegeben oder gesperrt ist (122).
  • Wenn der COD-Parameter freigegeben ist, werden die Parameter auf dem Makroblock-Niveau so interpretiert, als ob sie einen COD-Parameter für jeden Makroblock in dem Bild aufweisen (124). In diesem Fall dekodiert der Dekodierer selektiv einen Bewegungsvektor und kodierte Blockparameter für jeden Makroblock, für den der COD-Parameter gesetzt ist.
  • Wenn der COD-Parameter gesperrt wird, werden die Parameter auf dem Makroblock-Niveau so interpretiert, als ob sie für jeden Makroblock keinen COD-Parameter aufweisen (128). Der Dekodierer dekodiert als solcher den Bewegungsvektor und kodierte Blockparameterdaten für jeden Makroblock.
  • Adaptives Kodieren von CBPY
  • Die Kodiereffizienz von Szenen mit wenigen Makroblöcken mit Null-Bewegung kann mit Hilfe des adaptiven Auswählens einer Entropie-Kodierbetriebsart für die CBPY-Bits auf Basis der CBPC-Bits verbessert werden. 5 ist ein Flußdiagramm, welches zeigt, wie ein Kodierprozeß ein Entropie-Kodieren von CBPY auf Basis der Werte von CBPC handhabt.
  • Der Kodierer bewertet die CBPC-Bits für jeden Makroblock (130). Es existieren zwei Bits, ein Bit für jeden Leuchtdichte-Block. Wenn beide Bits gesetzt sind, was bedeutet, daß beide Leuchtdichte-Blöcke von Null verschiedene Umwandel-Koeffizienten aufweisen, ist es wahrscheinlich, daß wenigstens einer der vier Leuchdichte-Blöcke auch von Null verschiedenen Umwandel-Koeffizienten aufweist. Der Kodierer wählt adaptiv einen Entropie-Code für CBPY auf Basis des Werts der CBPC-Parameter aus. Wenn die CBPC-Bits gesetzt sind, wählt der Kodierer eine Entropie-Kodierbetriebsart aus, die den kodierten Leuchtdichte-Blöcken eine höhere Wahrscheinlichkeit zuordnet (134). Im Gegensatz dazu wählt der Kodierer eine Entropie-Kodierbetriebsart aus, die den nicht kodierten Leuchtdichte-Blöcken eine höhere Wahrscheinlichkeit zuordnet, wenn wenigstens eines der CBPC-Bits nicht gesetzt ist (136). Diese Lösung wird mittels des adaptiven Auswählens zwischen zwei Entropie-Kodiertabellen für Zwischenrahmen-Makroblöcke auf Basis der CBPC-Bits implementiert.
  • Die herkömmliche Lösung in vorgeschlagenen Standards, wie H263 wird als eine erste Entropie-Kodiertabelle (beispielsweise eine Huffman-Tabelle) genutzt, um einen Entropie-Code für alle Intrarahmen-Makroblöcke zu erzeugen, und eine zweite Entropie-Kodiertabelle wird genutzt, um einen Entropie-Code für alle Zwischenrahmen-Makroblöcke zu erzeugen. Die folgende Tabelle zeigt ein Beispiel für Entropie-Kodiertabellen, die genutzt werden, um einen variablen Längencode (VLC) zu berechnen. Tabelle 1 ist die herkömmliche VLC-Tabelle für Intra-Makroblöcke, und Tabelle 2 ist die herkömmliche VLC-Tabelle für Zwischen-Makroblöcke. Die CBPY-Bits zeigen eine Eins (1) für einen kodierten Block und eine Null (0) für einen unkodierten Block an. Es ist darauf hinzuweisen, daß urkodierte Blöcke für Zwischen-Makroblöcke als wahrscheinlicher angesehen werden und deshalb mit einem Code kodiert werden, der eine kürzere Länge als für kodierte Blöcke aufweist. Im Gegensatz dazu werden kodierte Blöcke für Intra-Makroblöcke als wahrscheinlicher angesehen und deshalb mit einem Code kodiert, der eine kürzere Länge als für kodierte Blöcke aufweist.
    Index Tabelle 1: CBPY Tabelle 2: CBPY Anzahl von Bits Code
    (1 2 3 4) (1 2 3 4)
    0.00 00 11
    00 11 4 0011
    1 00 11
    01 10 5 0010 1
    2 00 11
    10 01 5 00100
    3 00 11
    11 00 4 1001
    4 01 10
    00 11 5 0001 1
    5 01 10
    01 10 4 0111
    6 01 10
    10 01 6 0000 10
    7 01 10
    11 00 4 1011
    8 10 01
    00 11 5 0001 0
    9 10 01
    01 10 6 0000 11
    10 10 01
    10 01 4 0101
    11 10 01
    11 00 4 1010
    12 11 00
    00 11 4 0100
    13 11 00
    01 10 4 1000
    14 11 00
    10 01 4 0110
    15 11 00
    11 00 2 11
  • Ein verbessertes Verfahren zum Kodieren von CBPY besteht darin, Tabelle 1 für Zwischenrahmen-Makroblöcke auszuwählen, wenn die CBPC-Blöcke beide kodiert sind, und Tabelle 2 für Zwischenrahmen-Makroblöcke auszuwählen, wenn wenigstens einer der CBPC-Blöcke nicht kodiert ist. Experimente haben gezeigt, daß das adaptive Auswählen von Tabelle 1 und 2 für Zwischenrahmen-Makroblöcke die Anzahl von Bits reduziert, die benötigt werden, um CBPY für Standardtestvideosequenzen zu kodieren, um einige Prozente oder mehr als 26% vermindert. In dem Testfall Akiyo, bei dem eine kleine Änderung von Rahmen zu Rahmen auftritt, erzeugt das adaptive Auswählen der CBPY-Tabellen einen leichten Anstieg der Anzahl von Bits für CBPY (weniger als 0,1%). Die Vorteile dieses verbesserten Kodierens von CBPY sind signifikanter für kleinere Quantifizierungsschrittgrößen und komplexere Szenen.
  • Es ist wichtig darauf hinzuweisen, daß die obige Beschreibung des adaptiven Kodierens von CBPY nur eine mögliche Implementierung ist. Es existieren drei mögliche Zustände für CBPC-Bits im Kontext des adaptiven Kodierens von CBPY: (1) beide gesetzt (CBPC = 11); (2) beide leer (CBPC = 00); und (3) ein Bit gesetzt und ein Bit leer (CBPC = 01 oder 10). Bei der obigen Implementierung wird eine Entropie-Kodierbetriebsart für den Zustand (1) und eine zweite Entropie-Kodierbetriebsart für die Zustände (2) und (3) benutzt. Bei einigen Anwendungen ist es vorteilhaft, den Zustand (2) mit der Entropie-Kodierbetriebsart für den Zustand (1) zu gruppieren. Mehrere verschiedene Kombinationen von Entropie-Kodierbetriebsarten und CBPC-Zuständen sind möglich, und mehr als zwei Entropie-Kodierbetriebsarten könnten auch genutzt werden. Beispielsweise könnten drei verschiedene Kodierbetriebsarten für drei verschiedene Zustände von CBPC genutzt werden.
  • Das adaptive Kodieren von COD und CBPY kann zusammen genutzt werden. Weil das adaptive Kodieren von CBPY auf CBPC-Bits basiert, die bereits in dem Makroblock-Format sind, ist es nicht notwendig, ein zusätzliches Flag hinzuzufügen, welches anzeigt, ob dieses Merkmal freigegeben ist. Das adaptive Kodieren von CBPY kann jedoch ein- und ausgeschaltet werden, indem ein adaptives CBPY-Kodierflag genutzt wird. Eine Art der Implementierung dieses Flags kombiniert es mit dem COD-Sperrflag. In diesem Falle können COD und CBPY zusammen freigegeben und gesperrt werden.
  • Das adaptive Kodieren von CBPY kann in dem Dekodierer mittels Auswählens der Tabelle implementiert werden, die zum Dekodieren von CBPY auf Basis von CBPC-Bits genutzt wird. 6 ist ein Flußdiagramm, welches zeigt, wie ein Dekodierer CBPY-Parameter eines Zwischenrahmen-Makroblocks auf Basis der Werte der CBPC-Parameter interpretiert. In einer typischen Dekodieroperation dekodiert der Dekodierer die CBPC-Bits für einen Makroblock (140). Er bestimmt dann, ob CBPC = 11 (142). Wenn dies der Fall ist, dekodiert der Dekodierer VLC für CBPY, wobei Tabelle 1 genutzt wird. Wenn dies nicht der Fall ist, dekodiert der Dekodierer CBPY mittels Tabelle 2.
  • Wenn das verbesserte Kodieren von CBPY wie oben beschrieben implementiert ist, erhöht es nicht die Komplexität des Kodierers oder des Dekodierers und verursacht keine Startcodeemulations-Bedenken. "Startcodeemulation" bezieht sich auf ein Kompatibilitätsproblem, welches durch die Nutzung eines Kodierformats verursacht wird, das mit einem Code verwechselt werden kann, der für eine Synchronisation genutzt wird und als "Startcode" bezeichnet wird.

Claims (6)

  1. Computerimplementiertes Verfahren zum Decodieren mehrerer Videoframes in einer Videosequenz, wobei jeder der mehreren Videoframes mehrere Makroblöcke umfasst, mit folgenden Verfahrensschritten: Empfangen komprimierter Videodaten in einem Bitstrom, wobei der Bitstrom eine Codiersyntax mit mehreren Syntaxebenen aufweist, wobei die mehreren Syntaxebenen eine Frame-Ebene und eine Makroblock-Ebene umfassen; und Dekomprimieren eines vorhergesagten Videoframes der mehreren Videoframes unter Verwendung einer Inter-Frame-Dekompression, wobei das Dekomprimieren unter Verwendung der Inter-Frame-Dekompression folgendes umfasst: Wiedergewinnen von Information auf der Frame-Ebene, um anzuzeigen, ob die Makroblock-Syntax mehrere Indikatorbits enthält, für die mehreren Makroblöcke des vorhergesagten Videoframes, um für jeden Makroblock anzuzeigen, ob der Makroblock übersprungen werden soll; wenn die mehreren Indikatorbits in dem Bitstrom für die mehreren Makroblöcke des vorhergesagten Videoframes vorhanden sind, Ausführen der folgenden Schritte für jeden Makroblock der mehreren Makroblöcke des vorhergesagten Videoframes: Wiedergewinnen eines einzelnen Indikatorbits der mehreren Indikatorbits für den Makroblock auf der Makroblock-Ebene, Ermitteln, ob der Makroblock übersprungen wird oder nicht, gestützt auf das wieder gewonnene einzelne Indikatorbit, und wenn der Makroblock nicht übersprungen wird, Wiedergewinnen von Bewegungsinformation und codierter Blockmusterinformation für den Makroblock auf der Makroblock-Ebene, und wenn in dem Bitstrom die mehreren Indikatorbits nicht vorhanden sind, Ausführen des folgenden Schrittes für jeden der mehreren Makroblöcke des vorhergesagten Videoframes: Wiedergewinnen von Bewegungsinformation und codierter Blockmusterinformation für den Makroblock auf der Makroblock-Ebene.
  2. Verfahren nach Anspruch 1, wobei die wieder gewonnene Information auf der Frame-Ebene ein einzelnes Bit ist.
  3. Computerimplementiertes Verfahren zum Codieren mehrerer Videoframes in einer Videosequenz, wobei jeder der mehreren Videoframes mehrere Makroblöcke umfasst, mit folgenden Verfahrensschritten: Komprimieren von Videodaten in einen Bitstrom, wobei der Bitstrom eine Codiersyntax mit mehreren Syntaxebenen aufweist und die mehreren Syntaxebenen eine Frame-Ebene und eine Makroblock-Ebene umfassen, und wobei das Komprimieren von Videodaten zu einem Bitstrom das Komprimieren eines vorhergesagten Videoframes der mehreren Videoframes mittels einer Inter-Frame-Kompression umfasst, und wobei das Komprimieren unter Verwendung der Inter-Frame-Kompression folgende Schritte umfasst: Ausgeben von Information auf der Frame-Ebene, um anzuzeigen, ob die Makroblock-Syntax mehrere Indikatorbits enthält, für die mehreren Makroblöcke des vorhergesagten Videoframes, um für jeden Makroblock anzuzeigen, ob der Makroblock übersprungen werden soll; wenn die mehreren Indikatorbits in dem Bitstrom für die mehreren Makroblöcke des vorhergesagten Videoframes vorhanden sind, Ausführen der folgenden Schritte für jeden Makroblock der mehreren Makroblöcke des vorhergesagten Videoframes: Ausgeben eines einzelnen Indikatorbits der mehreren Indikatorbits für den Makroblock auf der Makroblock-Ebene, wobei das einzelne Indikatorbit angibt, ob der Makroblock übersprungen wird oder nicht, und wenn der Makroblock nicht übersprungen wird, Ausgeben von Bewegungsinformation und codierter Blockmusterinformation für den Makroblock auf der Makroblock-Ebene, und wenn die mehreren Indikatorbits in dem Bitstrom nicht vorhanden sind, Durchführen des folgenden Schritts für jeden der mehreren Makroblöcke des vorhergesagten Videoframes: Ausgeben von Bewegungsinformation und codierter Blockmusterinformation und Sperren des Indikatorbits für den Makroblock auf der Makroblock-Ebene.
  4. Verfahren nach Anspruch 3, wobei die auf der Frame-Ebene ausgegebene Information ein einzelnes Bit ist.
  5. Verfahren nach einem der vorangehenden Ansprüche, wobei jeder der mehreren Makroblöcke vier 8 × 8 Luminanzpixelblöcke und zwei 8 × 8 Chrominanzpixelblöcke umfasst.
  6. Computerlesbares Medium, auf dem durch einen Computer ausführbare Befehle gespeichert sind, um das Computersystem zu veranlassen, das Verfahren nach einem der vorangehenden Ansprüche auszuführen.
DE69839100T 1997-12-31 1998-09-30 Verbesserte Videokodierung unter Verwendung von adaptiven Blockparametern für kodierte/unkodierte Blöcke Expired - Lifetime DE69839100T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/001,573 US5946043A (en) 1997-12-31 1997-12-31 Video coding using adaptive coding of block parameters for coded/uncoded blocks
US1573 1997-12-31

Publications (2)

Publication Number Publication Date
DE69839100D1 DE69839100D1 (de) 2008-03-20
DE69839100T2 true DE69839100T2 (de) 2009-01-29

Family

ID=21696758

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69805099T Expired - Lifetime DE69805099T2 (de) 1997-12-31 1998-09-30 Verbesserte videocodierung und decodierung unter verwendung von adaptiven blockparametern für codierte/uncodierte blöcke
DE69839100T Expired - Lifetime DE69839100T2 (de) 1997-12-31 1998-09-30 Verbesserte Videokodierung unter Verwendung von adaptiven Blockparametern für kodierte/unkodierte Blöcke

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69805099T Expired - Lifetime DE69805099T2 (de) 1997-12-31 1998-09-30 Verbesserte videocodierung und decodierung unter verwendung von adaptiven blockparametern für codierte/uncodierte blöcke

Country Status (10)

Country Link
US (1) US5946043A (de)
EP (3) EP1528813B1 (de)
JP (1) JP3689334B2 (de)
AT (2) ATE216824T1 (de)
CA (1) CA2316848C (de)
DE (2) DE69805099T2 (de)
DK (1) DK1528813T3 (de)
ES (1) ES2299787T3 (de)
PT (1) PT1528813E (de)
WO (1) WO1999034603A1 (de)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6215910B1 (en) * 1996-03-28 2001-04-10 Microsoft Corporation Table-based compression with embedded coding
US6571016B1 (en) * 1997-05-05 2003-05-27 Microsoft Corporation Intra compression of pixel blocks using predicted mean
EP2173103A3 (de) * 1997-02-13 2010-09-08 Mitsubishi Denki Kabushiki Kaisha Vorhersagesystem für bewegliche Bilder
US7177355B1 (en) * 1997-12-01 2007-02-13 Samsung Electronics Co., Ltd. Method for representing encoding upon coding information
US6816618B1 (en) * 1998-03-03 2004-11-09 Minolta Co., Ltd. Adaptive variable length image coding apparatus
KR100281464B1 (ko) * 1998-03-14 2001-02-01 전주범 물체 기반 부호화 시스템의 보조 정보 부호화 장치
GB2336058B (en) * 1998-04-02 2002-03-27 Daewoo Electronics Co Ltd Apparatus and method for adaptively coding an image signal
US6904174B1 (en) 1998-12-11 2005-06-07 Intel Corporation Simplified predictive video encoder
US6400831B2 (en) 1998-04-02 2002-06-04 Microsoft Corporation Semantic video object segmentation and tracking
US7263127B1 (en) 1998-04-02 2007-08-28 Intel Corporation Method and apparatus for simplifying frame-based motion estimation
US7046734B2 (en) * 1998-04-02 2006-05-16 Intel Corporation Method and apparatus for performing real-time data encoding
US6031872A (en) * 1998-06-16 2000-02-29 Daewoo Electronics Co., Ltd. Method and apparatus for encoding a video signal
US6711278B1 (en) 1998-09-10 2004-03-23 Microsoft Corporation Tracking semantic objects in vector image sequences
JP2000102007A (ja) * 1998-09-28 2000-04-07 Matsushita Electric Ind Co Ltd マルチメディア情報合成装置、及び圧縮映像信号生成装置
US6563953B2 (en) 1998-11-30 2003-05-13 Microsoft Corporation Predictive image compression using a single variable length code for both the luminance and chrominance blocks for each macroblock
US6983018B1 (en) * 1998-11-30 2006-01-03 Microsoft Corporation Efficient motion vector coding for video compression
US6223162B1 (en) 1998-12-14 2001-04-24 Microsoft Corporation Multi-level run length coding for frequency-domain audio coding
US6300888B1 (en) 1998-12-14 2001-10-09 Microsoft Corporation Entrophy code mode switching for frequency-domain audio coding
US6404931B1 (en) 1998-12-14 2002-06-11 Microsoft Corporation Code book construction for variable to variable length entropy encoding
US6499060B1 (en) 1999-03-12 2002-12-24 Microsoft Corporation Media coding for loss recovery with remotely predicted data units
US6476805B1 (en) 1999-12-23 2002-11-05 Microsoft Corporation Techniques for spatial displacement estimation and multi-resolution operations on light fields
US6502097B1 (en) 1999-12-23 2002-12-31 Microsoft Corporation Data structure for efficient access to variable-size data objects
AU2908701A (en) * 1999-12-27 2001-07-09 Diamondback Vision, Inc. Scene model generation from video for use in video processing
US6738424B1 (en) 1999-12-27 2004-05-18 Objectvideo, Inc. Scene model generation from video for use in video processing
KR100683380B1 (ko) * 2000-02-21 2007-02-15 주식회사 팬택앤큐리텔 영상 압축 부호화를 위한 변환 및 역변환 방법 및 장치
US6356213B1 (en) * 2000-05-31 2002-03-12 Lucent Technologies Inc. System and method for prediction-based lossless encoding
GB2365240B (en) * 2000-07-19 2002-09-25 Motorola Inc Apparatus and method for image transmission
FR2813001B1 (fr) * 2000-08-11 2002-12-20 Thomson Multimedia Sa Procede de conversion de format couleur d'une sequence d'images
EP2364025B1 (de) * 2000-08-15 2015-09-16 Microsoft Technology Licensing, LLC Verfahren, Systeme und Datenstrukturen zur Zeitcodierung von Media-mustern
FR2813484A1 (fr) * 2000-08-31 2002-03-01 Koninkl Philips Electronics Nv Traitement de donnees en une serie temporelle d'etapes
US20020089602A1 (en) * 2000-10-18 2002-07-11 Sullivan Gary J. Compressed timing indicators for media samples
WO2002035854A1 (en) * 2000-10-24 2002-05-02 Eyeball Networks Inc. Dct-based scalable video compression
US6677868B2 (en) 2001-03-16 2004-01-13 Sharp Laboratories Of America, Inc. Entropy coding with adaptive syntax to replace high probability symbols with lower probabilities symbols
FR2824988B1 (fr) * 2001-05-21 2003-08-01 Thomson Licensing Sa Procede et dispositif de codage video utilisant la norme mpeg4
US6909745B1 (en) * 2001-06-05 2005-06-21 At&T Corp. Content adaptive video encoder
US6968006B1 (en) 2001-06-05 2005-11-22 At&T Corp. Method of content adaptive video decoding
US6970513B1 (en) 2001-06-05 2005-11-29 At&T Corp. System for content adaptive video decoding
US6810086B1 (en) 2001-06-05 2004-10-26 At&T Corp. System and method of filtering noise
US7773670B1 (en) * 2001-06-05 2010-08-10 At+T Intellectual Property Ii, L.P. Method of content adaptive video encoding
WO2003043345A1 (en) * 2001-11-16 2003-05-22 Ntt Docomo, Inc. Image encoding method, image decoding method, image encoder, image decode, program, computer data signal, and image transmission system
WO2003053066A1 (en) 2001-12-17 2003-06-26 Microsoft Corporation Skip macroblock coding
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
FR2834162A1 (fr) * 2001-12-20 2003-06-27 Koninkl Philips Electronics Nv Systeme de communication de donnees selon un principe de commutation par paquets
US6925125B2 (en) * 2002-01-09 2005-08-02 Hiroshi Akimoto Enhanced aperture problem solving method using displaced center quadtree adaptive partitioning
US7505485B2 (en) * 2002-01-22 2009-03-17 Microsoft Corporation Methods and systems for start code emulation prevention and data stuffing
US7149247B2 (en) 2002-01-22 2006-12-12 Microsoft Corporation Methods and systems for encoding and decoding video data to enable random access and splicing
WO2003090470A2 (en) * 2002-04-19 2003-10-30 Microsoft Corporation Methods and systems for preventing start code emulation at non-byte aligned and/or bit-shifted locations
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
KR100523052B1 (ko) * 2002-08-30 2005-10-24 한국전자통신연구원 다중 디스플레이 방식을 지원하는 다시점 동영상의 객체 기반 부호화 장치 및 그 방법과 그를 이용한 객체 기반 송수신 시스템 및 그 방법
US7433824B2 (en) * 2002-09-04 2008-10-07 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
EP1734511B1 (de) 2002-09-04 2009-11-18 Microsoft Corporation Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus
US7095786B1 (en) 2003-01-11 2006-08-22 Neo Magic Corp. Object tracking using adaptive block-size matching along object boundary and frame-skipping when object motion is low
US7424493B2 (en) * 2003-04-21 2008-09-09 Microsoft Corporation Replication-based propagation mechanism for pipelines
US7426308B2 (en) * 2003-07-18 2008-09-16 Microsoft Corporation Intraframe and interframe interlace coding and decoding
US10554985B2 (en) 2003-07-18 2020-02-04 Microsoft Technology Licensing, Llc DC coefficient signaling at small quantization step sizes
US7830963B2 (en) * 2003-07-18 2010-11-09 Microsoft Corporation Decoding jointly coded transform type and subblock pattern information
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
US7738554B2 (en) 2003-07-18 2010-06-15 Microsoft Corporation DC coefficient signaling at small quantization step sizes
US7269288B2 (en) * 2003-07-30 2007-09-11 Mediatek Inc. Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof
US7839930B2 (en) * 2003-11-13 2010-11-23 Microsoft Corporation Signaling valid entry points in a video stream
US7567617B2 (en) 2003-09-07 2009-07-28 Microsoft Corporation Predicting motion vectors for fields of forward-predicted interlaced video frames
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US8085844B2 (en) * 2003-09-07 2011-12-27 Microsoft Corporation Signaling reference frame distances
US8107531B2 (en) * 2003-09-07 2012-01-31 Microsoft Corporation Signaling and repeat padding for skip frames
US7782954B2 (en) * 2003-09-07 2010-08-24 Microsoft Corporation Scan patterns for progressive video content
US7852919B2 (en) * 2003-09-07 2010-12-14 Microsoft Corporation Field start code for entry point frames with predicted first field
US7609762B2 (en) * 2003-09-07 2009-10-27 Microsoft Corporation Signaling for entry point frames with predicted first field
US7577200B2 (en) 2003-09-07 2009-08-18 Microsoft Corporation Extended range variable length coding/decoding of differential motion vector information
US7606308B2 (en) * 2003-09-07 2009-10-20 Microsoft Corporation Signaling macroblock mode information for macroblocks of interlaced forward-predicted fields
US7577198B2 (en) * 2003-09-07 2009-08-18 Microsoft Corporation Number of reference fields for an interlaced forward-predicted field
US7317839B2 (en) 2003-09-07 2008-01-08 Microsoft Corporation Chroma motion vector derivation for interlaced forward-predicted fields
US7924921B2 (en) * 2003-09-07 2011-04-12 Microsoft Corporation Signaling coding and display options in entry point headers
US7961786B2 (en) * 2003-09-07 2011-06-14 Microsoft Corporation Signaling field type information
US8213779B2 (en) * 2003-09-07 2012-07-03 Microsoft Corporation Trick mode elementary stream and receiver system
US7092576B2 (en) * 2003-09-07 2006-08-15 Microsoft Corporation Bitplane coding for macroblock field/frame coding type information
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
US7688894B2 (en) * 2003-09-07 2010-03-30 Microsoft Corporation Scan patterns for interlaced video content
US20050120340A1 (en) * 2003-12-01 2005-06-02 Skazinski Joseph G. Apparatus, system, and method for automated generation of embedded systems software
US7627037B2 (en) * 2004-02-27 2009-12-01 Microsoft Corporation Barbell lifting for multi-layer wavelet coding
US7580461B2 (en) 2004-02-27 2009-08-25 Microsoft Corporation Barbell lifting for wavelet coding
US20080089413A1 (en) * 2004-06-28 2008-04-17 Canon Kabushiki Kaisha Moving Image Encoding Apparatus And Moving Image Encoding Method
US7697610B2 (en) * 2004-09-13 2010-04-13 Microsoft Corporation Variable block size early termination for video coding
KR100681242B1 (ko) * 2004-12-16 2007-02-09 삼성전자주식회사 동영상 복호화 방법, 동영상 복호화 장치 및 이를 가지는시스템 온 칩 시스템
US8634413B2 (en) 2004-12-30 2014-01-21 Microsoft Corporation Use of frame caching to improve packet loss recovery
TWI266541B (en) * 2005-06-08 2006-11-11 Via Tech Inc Computing method of motion vector
US7693709B2 (en) * 2005-07-15 2010-04-06 Microsoft Corporation Reordering coefficients for waveform coding or decoding
US7684981B2 (en) * 2005-07-15 2010-03-23 Microsoft Corporation Prediction of spectral coefficients in waveform coding and decoding
US7599840B2 (en) * 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
US20070297517A1 (en) * 2005-07-15 2007-12-27 Samsung Electronics Co., Ltd. Entropy encoding and decoding apparatuses, and entropy encoding and decoding methods
US7933337B2 (en) * 2005-08-12 2011-04-26 Microsoft Corporation Prediction of transform coefficients for image compression
US7565018B2 (en) * 2005-08-12 2009-07-21 Microsoft Corporation Adaptive coding and decoding of wide-range coefficients
US8599925B2 (en) * 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
US9077960B2 (en) * 2005-08-12 2015-07-07 Microsoft Corporation Non-zero coefficient block pattern coding
US20070116117A1 (en) * 2005-11-18 2007-05-24 Apple Computer, Inc. Controlling buffer states in video compression coding to enable editing and distributed encoding
US8031777B2 (en) * 2005-11-18 2011-10-04 Apple Inc. Multipass video encoding and rate control using subsampling of frames
US8780997B2 (en) * 2005-11-18 2014-07-15 Apple Inc. Regulation of decode-side processing based on perceptual masking
US8233535B2 (en) 2005-11-18 2012-07-31 Apple Inc. Region-based processing of predicted pixels
US8295343B2 (en) 2005-11-18 2012-10-23 Apple Inc. Video bit rate control method
US8848789B2 (en) * 2006-03-27 2014-09-30 Qualcomm Incorporated Method and system for coding and decoding information associated with video compression
US8184710B2 (en) * 2007-02-21 2012-05-22 Microsoft Corporation Adaptive truncation of transform coefficient data in a transform-based digital media codec
US7774205B2 (en) * 2007-06-15 2010-08-10 Microsoft Corporation Coding of sparse digital media spectral data
US8254455B2 (en) 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
US8189666B2 (en) 2009-02-02 2012-05-29 Microsoft Corporation Local picture identifier and computation of co-located information
US9082278B2 (en) * 2010-03-19 2015-07-14 University-Industry Cooperation Group Of Kyung Hee University Surveillance system
US8356114B2 (en) 2010-04-15 2013-01-15 Canon Kabushiki Kaisha Region of interest-based image transfer
EP3285490B1 (de) * 2010-04-22 2021-03-10 HFI Innovation Inc. Bewegungsvorhersageverfahren
US8755441B2 (en) 2010-05-10 2014-06-17 Canon Kabushiki Kaisha Region of interest-based video transfer
TWI595776B (zh) * 2012-06-27 2017-08-11 Sony Corp Image processing device and method
CN104244004B (zh) * 2014-09-30 2017-10-10 华为技术有限公司 低功耗编码方法及装置
US10271069B2 (en) 2016-08-31 2019-04-23 Microsoft Technology Licensing, Llc Selective use of start code emulation prevention
JP6849508B2 (ja) * 2017-04-03 2021-03-24 日本特殊陶業株式会社 保持装置の製造方法
KR102527184B1 (ko) 2018-03-29 2023-05-03 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 변환 계수 블록 코딩

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5351086A (en) * 1991-12-31 1994-09-27 Daewoo Electronics Co., Ltd. Low-bit rate interframe video encoder with adaptive transformation block selection
JPH06153180A (ja) * 1992-09-16 1994-05-31 Fujitsu Ltd 画像データ符号化方法及び装置
US5448297A (en) * 1993-06-16 1995-09-05 Intel Corporation Method and system for encoding images using skip blocks
US5465118A (en) * 1993-12-17 1995-11-07 International Business Machines Corporation Luminance transition coding method for software motion video compression/decompression
JP3474005B2 (ja) * 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
US5552832A (en) * 1994-10-26 1996-09-03 Intel Corporation Run-length encoding sequence for video signals
KR100211917B1 (ko) * 1995-10-26 1999-08-02 김영환 물체 모양정보 부호화 방법
EP0786907A3 (de) * 1997-01-24 2001-06-13 Texas Instruments Incorporated Videokodierer
US5880784A (en) * 1997-06-17 1999-03-09 Intel Corporation Method and apparatus for adaptively switching on and off advanced prediction mode in an H.263 video coder
US5870148A (en) * 1997-06-17 1999-02-09 Intel Corporation Method and apparatus for adaptively enabling and disabling PB frames in an H.263 video coder

Also Published As

Publication number Publication date
WO1999034603A1 (en) 1999-07-08
EP1156680A3 (de) 2004-05-26
EP1044566A1 (de) 2000-10-18
DE69805099D1 (de) 2002-05-29
JP3689334B2 (ja) 2005-08-31
CA2316848C (en) 2004-06-01
JP2002500483A (ja) 2002-01-08
EP1156680A2 (de) 2001-11-21
DE69839100D1 (de) 2008-03-20
DE69805099T2 (de) 2002-11-28
ES2299787T3 (es) 2008-06-01
ATE385652T1 (de) 2008-02-15
ATE216824T1 (de) 2002-05-15
CA2316848A1 (en) 1999-07-08
US5946043A (en) 1999-08-31
EP1528813B1 (de) 2008-02-06
EP1044566B1 (de) 2002-04-24
EP1528813A1 (de) 2005-05-04
PT1528813E (pt) 2008-04-11
DK1528813T3 (da) 2008-05-19

Similar Documents

Publication Publication Date Title
DE69839100T2 (de) Verbesserte Videokodierung unter Verwendung von adaptiven Blockparametern für kodierte/unkodierte Blöcke
DE69937462T2 (de) Effiziente macroblockheaderkodierung zur videokompression
DE69817460T2 (de) Bildsequenzdekodierungsverfahren
DE69738262T2 (de) Videokodierungs- und Videodekodierungsvorrichtung
DE602004008763T2 (de) Videotranskodierung
DE60305325T2 (de) System und verfahren zur ratenverzerrungsoptimierten datenpartitionierung zur videocodierung unter verwendung von rückwärtsadaption
DE69813911T2 (de) VERFAHREN ZUR BESTIMMUNG VON BEWEGUNGSVEKTORFELDERN MIT LOKALER BEWEGUNGSSCHäTZUNG
DE69233620T2 (de) Adaptive Kodierung und Dekodierung von Vollbildern und Halbbildern von Videosignalen
DE60015566T2 (de) Verfahren und vorrichtung zur komprimierung eines bewegungsvektorfeldes
DE69635369T2 (de) Videokodierungsvorrichtung
DE19704439C2 (de) Verfahren und Vorrichtung zur Bewegungsschätzung in einem digitalen Videocodierer unter Verwendung von Trajektorien
EP1246131A2 (de) Verfahren und Vorrichtung zur Reduzierung von Störungen in dekodierten Bildern mit Nachfilterung
DE112011103365T5 (de) Tonwertumsetzung von Videosignalen mit hohem Dynamikumfang
DE4305578A1 (de)
DE19825042A1 (de) Verfahren zur Bewegungsvektorcodierung bei MPEG-4
KR20020077884A (ko) 블록 매칭 프로세스를 사용하는 비디오 코딩 방법
DE60302456T2 (de) System und verfahren zur verbesserung der schärfe für codierte digitale videosignale
DE69915843T2 (de) Teilbandkodierung/-dekodierung
DE102020125206A1 (de) Verfahren und system zur mehrkanalvideocodierung mit frameratenänderung und kanalübergreifender referenzierung
DE19749604A1 (de) Verfahren zum Kodieren eines Modus beim Kodieren binärer Formen
KR100319916B1 (ko) 계층구조를갖는스케일러블디지탈화상압축/복원방법및장치
EP0981909B1 (de) Verfahren und vorrichtung zur codierung und decodierung eines digitalisierten bildes
WO2001062009A1 (de) Verfahren und anordnung zur kodierung bzw. zur kodierung und dekodierung einer zahlenfolge
EP1121809B1 (de) Verfahren und anordnung zur codierung eines digitalisierten bildes, verfahren und anordnung zur decodierung eines digitalisierten bildes
Benabdellah et al. Choice of rererence images for video compression

Legal Events

Date Code Title Description
8364 No opposition during term of opposition