DE112010004109B4 - Verfahren zum Dekodieren eines Bitstroms - Google Patents

Verfahren zum Dekodieren eines Bitstroms Download PDF

Info

Publication number
DE112010004109B4
DE112010004109B4 DE112010004109.1T DE112010004109T DE112010004109B4 DE 112010004109 B4 DE112010004109 B4 DE 112010004109B4 DE 112010004109 T DE112010004109 T DE 112010004109T DE 112010004109 B4 DE112010004109 B4 DE 112010004109B4
Authority
DE
Germany
Prior art keywords
transform
path
block
coefficients
procedure
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.)
Active
Application number
DE112010004109.1T
Other languages
English (en)
Other versions
DE112010004109T5 (de
Inventor
Robert A. Cohen
Anthony Vetro
Huifang Sun
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of DE112010004109T5 publication Critical patent/DE112010004109T5/de
Application granted granted Critical
Publication of DE112010004109B4 publication Critical patent/DE112010004109B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Ein Verfahren zum Dekodieren eines Bitstroms (15), wobei der Bitstrom einem kodierten Video (1) entspricht, wobei das kodierte Video (1) eine Folge von Frames beinhaltet, wobei jeder Frame in kodierte Blöcke aufgeteilt ist, für jeden kodierten Block umfassend die Schrittedes Bestimmens einer Menge von Pfaden (1102) in dem kodierten Block, wobei jeder Pfad (1102), in Bezug auf eine vertikale Richtung (1103), unter einem Transformationswinkel (1105) orientiert ist, der aus einem Transformationsindex in dem Bitstrom (15) bestimmt ist;des Erlangens von Transformationskoeffizienten (192) aus dem Bitstrom (15), wobei die Transformationskoeffizienten einen DC Koeffizienten für jeden Pfad (1102) beinhalten;des Anwendens einer primären inversen Transformation (25) auf die Transformationskoeffizienten auf jedem Pfad (1102) zum Erzeugen eines dekodierten Videos (2), wobei die Schritte des Bestimmens, des Erlangens und des Anwendens in einem Dekodierer (20) durchgeführt werden; wobei jeder Pfad (1102) an einem Startpixel des Blocks entsprechend des DC Koeffizienten des Pfades (1102) beginnt und generiert wird indem wiederholt ein benachbartes Pixel in Richtung des Transformationswinkels inkludiert wird, wobei an einer Kante des Blocks eine Kehrtwende gemacht wird, wobei der Pfad (1102) an der Kante endet wenn die Pfadlänge größer oder gleich Lmin ist, wobei Lmin> 2 und Lminfür den jeweiligen Block spezifiziert ist.

Description

  • Technisches Gebiet
  • Die Erfindung bezieht sich allgemein auf Video-Codecs und im Speziellen auf gerichtete Transformationen, die während des Kodierens und des Dekodierens von Blöcken von Pixeln in Videoframes und Bildern verwendet werden.
  • Stand der Technik
  • Codecs
  • Ein digitaler Video-Codec komprimiert und dekomprimiert ein Video. Codecs finden sich in Einrichtungen zum Ausstrahlen, in der Fernsehtechnik, in PCs, in Videorecordern und Videoabspielgeräten, Satelliten und in mobilen und Online-Geräten. Codecs teilen jeden Frame des Videos in Blöcke von Pixeln auf und verarbeiten die Blöcke einer nach dem anderen.
  • Während des Kodierens werden räumliche und zeitliche Redundanzen eliminiert, um die Datenrate zu reduzieren. Die Erfindung beschäftigt sich insbesondere mit den Transformationen, die während des Kodierens und des Dekodierens von Videos verwendet werden. Die gängigste Transformation ist eine diskrete Cosinus-Transformation (DCT), wie sie in den MPEG- und H.264/AVC-Standards spezifiziert ist. Die DCT konvertiert Pixelintensitäten aus dem räumlichen Bereich in Transformationskoeffizienten im Frequenzbereich. Die Koeffizienten werden dann quantisiert und entropie-kodiert, um einen komprimierten Bitstrom zu erzeugen. Der Bitstrom kann auf einem Medium (DVD) gespeichert werden oder unmittelbar an den Dekodierer kommuniziert werden. Während des Dekodierens werden die Schritte umgedreht. Nach einem Entropie-Dekodieren und einer inversen Quantisierung wird eine inverse Transformation angewendet, um das ursprüngliche Video wieder herzustellen.
  • Im Allgemeinen übersteigt die Anzahl von Dekodierern, beispielsweise Konsumgüter auf der ganzen Welt, bei Weitem die Anzahl der Kodierer. Demgemäß sind, um die Interoperabilität sicherzustellen, lediglich der Bitstrom und das Dekodierverfahren standardisiert. Das Kodierverfahren wird typischerweise in einem Standard überhaupt nicht spezifiziert.
  • Transformationen
  • Die DCT beinhaltet eine horizontale 1-D DCT, die auf jede Reihe von Pixeln in dem Block angewendet wird und eine vertikale 1-D DCT, die auf jede Spalte angewendet wird. Für Blöcke mit in erster Linie horizontalen oder vertikalen Eigenschaften ist die 2-D DCT effizient. Jedoch transformiert die 2-D DCT Blöcke, die Eigenschaften beinhalten, die nicht horizontal oder vertikal sind, beispielsweise gerichtete Eigenschaften, bei denen sich eine Richtung auf Orientierungen, die nicht horizontal und vertikal sind, beziehen, nicht effizient.
  • Im Allgemeinen existieren zwei Verfahren, die gerichtete Transformationen implementieren. Das erste Verfahren wendet die 2-D DCTs entlang vordefinierter Pfade innerhalb des Blockes an. Das zweite Verfahren wendet einen Richtungsfilter an, gefolgt von der 2-D DCT. Typischerweise teilt ein Fächerfilter die Blöcke in eine Menge von gerichteten Unterbändern auf. Transformationen werden danach auf jedes Unterband angewendet. Richtungstransformationen wie beispielsweise Contourlets werden auf diese Art und Weise implementiert. Contourlets transformieren Frames effizient, die gleichmäßige Regionen, die durch gekrümmte Grenzen getrennt werden, beinhalten.
  • Richtungstransformationen sind verwendet worden, um die existierenden 2-D DCT oder DCT-ähnliche Transformationen für existierende Videokodierverfahren, wie beispielsweise H.264/AVC zu ergänzen. Während des Kodierprozesses wählt der H.264/AVC Kodierer aus einer Menge von Transformationen, wie beispielsweise der konventionellen 2-D Transformationen und einer Menge von Richtungstransformationen aus. Die einzelne Transformation, die im Sinne der Rate/Störung die besten Eigenschaften aufweist, wird dann zum Kodieren und zum Dekodieren ausgewählt.
  • Nach der Transformation können Verbesserungen in dem Entropie-Kodieren der entsprechenden Daten gemacht werden, indem Statistiken der gerichteten Daten wirksam eingesetzt werden. In H.264/AVC wird ein kontext-adaptiver binärer arithmetischer Kodierer (CABAC von Englisch context adaptive binary arithmetic coder) oder ein kontext-adaptiver variabler Längenkodierer (CAVLC von Englisch context adaptive variable length coder) verwendet, um unterschiedliche Typen von Daten einer Entropie-Kodierung zu unterwerfen. Die eingegebenen Symbole werden auf binäre Codewörter abgebildet und durch einen arithmetischen Kodierer komprimiert. Kontexte werden verwendet, um die Statistiken, die durch den arithmetischen Kodierer verwendet werden, anzupassen. Jeder Kontext speichert das wahrscheinlichste Symbol (entweder 0 oder 1) und die entsprechende Wahrscheinlichkeit.
  • Der H.264/AVC-Standard ist zum Verwenden der 2-D DCT ausgebildet. Bestehende Verfahren können gerichtete Transformationen verwenden, um die Eigenschaften der H.264/AVC-Kodierer auszudehnen. Jedoch erzeugen diese und kodieren diese Verfahren nach wie vor die richtungsbezogenen Entscheidungen und Daten unter Verwendung des konventionellen H.264/AVC-Rahmens. Somit besteht eine Notwendigkeit, gerichtete Informationen effizient zu repräsentieren, ebenso wie eine Notwendigkeit, Kodiereffizienzen zu verbessern.
  • Der Zweck der Transformation ist es einen Block variierender Pixelwerte in einen Block von Koeffizienten, bei dem die meisten der Koeffizienten Null sind, umzuwandeln. Im Falle der DCT wird eine Array-Menge von Pixeln in eine Menge von DCT-Koeffizienten, die niedrigfrequente bis hochfrequente Daten in dem Block repräsentieren, umgewandelt. Die tiefste Frequenz ist der DC-Koeffizient, der sich auf den Durchschnittswert aller Pixel, die durch die Transformationen umgewandelt wurden, bezieht. Der nächste Koeffizient repräsentiert die Größe der Cosinus-Welle der tiefsten Frequenz, die in dem Signal enthalten ist. Nachfolgende Koeffizienten entsprechen größer werdenden Frequenzen. Wenn die Daten für die DCT gut geeignet sind, dann sind viele der Frequenzkoeffizienten Null und werden vom Dekodierer nicht benötigt, um das Video zu rekonstruieren.
  • Ein Problem mit existierenden gerichteten Transformationen, die eine Menge von parallelen 1-D Transformationen verwenden, ist, dass die Länge jeder 1-D Transformation in Abhängigkeit von der Position der Transformation in dem Block variieren kann. Beispielsweise hat, um einen 8x8 Block unter Verwendung einer auf 45° orientierten gerichteten Transformation zu transformieren, die 1-D Transformation entlang der Hauptdiagonalen des Blockes acht Elemente und die anliegende 1-D hat sieben Elemente usw. bis zu Transformationen von einem oder zwei Elementen, die ineffizient sind. Eine einelementige Transformation ist bestenfalls ein Skalieren eines Pixelwertes, was wenig zum Verbessern der Kodiereffizienz beiträgt. Demgemäß existiert eine Notwendigkeit für ein Verfahren zum Transformieren von Blöcken unter Verwendung dieser Transformationen auf eine Art und Weise, die nicht unter den Ineffizienzen, die durch kleine Transformationspfade an den Tag gelegt werden, leiden, aber immer noch die gerichteten Eigenschaften der Originaltransformation aufrechterhalten.
  • Darüber hinaus besteht auch eine Notwendigkeit nach einem Verfahren um eine zweite Menge von Transformationen auf die Ausgabe der ersten Menge von Transformationen in einer Art und Weise anzuwenden, die die Kodiereffizienz weiter verbessert, ohne die Eigenschaften auf die Art und Weise, wie es eine 2-D DCT tun würde, zu verschlechtern, wenn die Daten in der zweiten orthogonalen Richtung unkorreliert sind.
  • Darüber hinaus existiert eine Notwendigkeit für partitionierte Versionen dieser Transformation, die zur Kodiervorhersage übrigbleibender Blöcke, die üblicherweise in Vorhersagekodierern, wie beispielsweise H.264/AVC gefunden werden, geeignet sind.
  • Chang und Girod: „Direction-adaptive partitioned block transform for image coding“, 15th IEEE Conference on Image Processing 2008, pp. 145 - 148 offenbart eine richtungsadaptive Blocktransformation, welche die Richtungsabhängigkeit in Bildern ausnutzt um die Komprimierung zu verbessern.
    Xu, Xu und Wu: „Lifting-Based Directional DCT-Like Transform for Image Coding“, IEEEE Transactions on Circuits and Systems for Video Technology, vol. 17(10), pp. 1323 - 1335 offenbart eine Verbesserung der üblicherweise verwendeten horizontalen und vertikalen Transformationen durch eine primäre richtungsabhängige Transformation unter Verwendung einer Transformationsmatrix, die anhand eines Richtungswinkels bestimmt wurde.
    Zeng und Fu: „Directional Discrete Cosine Transforms - A New Framework for Image Coding“, IEEE Transactions on Circuits and Systems for Video Technology, vol. 18(3), pp. 305 - 313 offenbart die Verwendung einer Transformation zur Videokodierung, die einer anderen Richtung als der vertikalen oder horizontalen Richtung folgt.
    Kauff und Schüür : „Shape-Adaptive DCT with Block-Based DC Separation and ΔDC Correction“, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 8(3), pp. 237 - 242 offenbart eine Erweiterung des formadaptiven DCT Algorithmus von Sikora und Makai.
  • Zusammenfassung der Erfindung
  • Ein Bitstrom beinhaltet eine Folge von Frames. Jeder Frame wird in kodierte Blöcke aufgeteilt. Bei einem Verfahren zum Dekodieren des Bitstroms wird für jeden Block eine Menge von Pfaden an einem Transformationswinkel in Bezug auf eine vertikale Richtung, der aus einem Transformationsindex in dem Bitstrom bestimmt wurde, bestimmt. Transformationskoeffizienten werden aus dem Bitstrom erhalten. Die Transformationskoeffizienten beinhalten einen DC-Koeffizienten für jeden Pfad. Eine inverse Transformation wird auf die Transformationskoeffizienten angewendet, um ein dekodiertes Video zu erzeugen. Dabei beginnt jeder Pfad an einem Startpixel des Blocks entsprechend des DC Koeffizienten des Pfades und jeder Pfad wird generiert indem wiederholt ein benachbartes Pixel in Richtung des Transformationswinkels inkludiert wird, wobei an einer Kante des Blocks eine Kehrtwende gemacht wird, wobei der Pfad an der Kante endet wenn die Pfadlänge größer oder gleich Lmin ist, wobei Lmin > 2 und Lmin für den jeweiligen Block spezifiziert ist.
  • Figurenliste
    • 1A ist ein Blockdiagramm eines Videosystems gemäß Ausführungsformen der Erfindung;
    • 1B ist ein Blockdiagramm eines Dekodierers gemäß Ausführungsformen der Erfindung;
    • 1C ist ein Blockdiagramm eines Kodierers gemäß Ausführungsformen der Erfindung;
    • 2 ist ein Blockdiagramm eines Unterblock- und Partition-Richtungsverarbeitungsmoduls gemäß Ausführungsformen der Erfindung;
    • 3 ist ein Blockdiagramm eines Transformationstyp- und Richtungsentscheidungsmoduls gemäß Ausführungsformen der Erfindung;
    • 4 ist ein Blockdiagramm des Richtungsinterferenzmoduls gemäß Ausführungsformen der Erfindung;
    • 5 ist ein Blockdiagramm eines Richtungsvorhersagemoduls gemäß Ausführungsformen der Erfindung;
    • 6 ist ein Blockdiagramm eines Richtungsindex-Kodiermoduls gemäß Ausführungsformen der Erfindung;
    • 7 ist ein Schema einer ersten Ausführungsform des Richtungsindex-Kodiermoduls gemäß Ausführungsformen der Erfindung;
    • 8 ist ein Schema einer zweiten Ausführungsform des Richtungsindex-Kodiermoduls gemäß Ausführungsformen der Erfindung;
    • 9 - 10 sind Flussdiagramme für ein Kontexterzeugungsmodul gemäß Ausführungsformen der Erfindung;
    • 11A - 11B sind Schemata von Pfaden für primäre und für sekundäre gerichtete Transformationen gemäß Ausführungsformen der Erfindung;
    • 12A - 12F sind Blockdiagramme für primäre gerichtete Transformationen für 8x8 Blöcke von Pixeln gemäß Ausführungsformen der Erfindung; und
    • 13 ist ein Blockdiagramm einer Menge von partitionierten gerichteten Transformationen gemäß Ausführungsformen der Erfindung.
  • Beschreibung von Ausführungsformen
  • Codec
  • 1A zeigt ein Videosystem gemäß Ausführungsformen unserer Erfindung. Das System beinhaltet einen Kodierer 10 und einen Dekodierer 20, in Kombination ein Codec 30. Der Codec kann in Prozessoren, die Speicher und Eingangs/Ausgangs-Interfaces beinhalten, wie sie aus dem Stand der Technik bekannt sind, implementiert werden.
  • Der Kodierer komprimiert ein eingegebenes Video 1 in einen Bitstrom 15. Der Kodierer wendet eine Transformation, eine Quantisierung und eine Entropie-Kodierung auf das eingegebene Video an, wie nachfolgend im Detail beschrieben wird. Um sicherzustellen, dass das ausgegebene Video das eingegebene Video akkurat wiedergibt, führt der Dekodierer 20 die umgekehrten Schritte in einer umgekehrten Reihenfolge durch. Darüber hinaus beinhaltet der Kodierer typischerweise das Äquivalent des Dekodierers, um für den Kodierprozess eine Rückmeldung zur Verfügung zu stellen. Da alle Kodiervariablen ohne weiteres im Kodierer zur Verfügung stehen, ist der Dekodierer in dem Kodierer vergleichsweise einfach. Die Erfindung beschäftigt sich insbesondere mit den inversen gerichteten Transformationen 25.
  • Wie nachfolgend beschrieben und in 11B gezeigt, können die Transformationen primäre und sekundäre Transformationen beinhalten. Während des Kodierens wirkt die primäre Transformation auf Pixelintensitäten ein, um Transformationskoeffizienten, beispielsweise DC und AC Koeffizienten, zu bestimmen. Die sekundäre Transformation wirkt lediglich auf die DC Koeffizienten 1160 ein, um sekundäre Transformationskoeffizienten 1170 zu erzeugen, um Datenredundanzen weiter zu reduzieren. Die umgekehrten bzw. inversen Transformationen beinhalten eine sekundäre inverse Transformation 26, um die DC Koeffizienten zu rekonstruieren, und die primären inversen Transformationen 27 stellen die Pixelintensitäten für das dekodierte Video wieder her.
  • Um eine Interoperabilität zwischen dem Kodierer und dem Dekodierer sicherzustellen, spezifizieren Videokodierstandards typischerweise lediglich den Bitstrom und das Dekodierverfahren. Es ist jedoch klar, dass eine Beschreibung des Kodierverfahrens, wie nachfolgend detailliert beschrieben, ausreicht, um das inverse Dekodierverfahren durch einen Fachmann exakt abzuleiten.
  • Dekodierer
  • 1B zeigt relevante Abschnitte unseres Dekodierers 20. Der Dekodierer empfängt den Kodier-Bitstrom 15 und Informationen 160. Der Bitstrom wird einem CABAC Entropie-Dekodierer 191 zur Verfügung gestellt, der quantisierte Transformationskoeffizienten 192 gemäß der Informationen erzeugt. Für den ersten Block können die Informationen einen ursprünglichen Kontext darstellen. Danach beziehen sich die Informationen auf vorhergehend verarbeitete (dekodierte) Blöcke.
  • Die Koeffizienten werden invers quantisiert 24 und invers transformiert 25, so dass die dekodierten Blöcke das ausgegebene oder dekodierte Video 2 ausbilden. Die Transformation kann eine inverse diskrete Cosinus-Transformation (IDCT) sein. Die Transformationen können eine 2D inverse diskrete Cosinus-Transformation beinhalten und eine Menge von inversen gerichteten Transformationen. Sekundäre inverse Transformationen können ebenfalls angewendet werden, wie es nachfolgend noch detaillierter beschrieben wird.
  • Die Informationen 160 werden dem Kontexterzeugungsmodul (CGM von Englisch context generation module) des Dekodierers zur Verfügung gestellt, das ausgewählte Kontexte 921-922 an den CABAC Dekodierer weitergibt. Vorhergesagte Transformationsindikatoren (PTI von Englisch predicted transform indicators) 501 der vorher dekodierten Blöcke 160 werden an ein gerichtetes Indexdekodiermodul (DIDM von Englisch directional index decoding module) 601 übergeben, das einen Transformationsindikator 602 für die inverse Transformation 25 erzeugt. Die inverse Transformation kann jede der inversen Transformationen verwenden, beispielsweise 1D horizontale und 1D vertikale inverse DCTs (2D IDCT) 41, eine Menge von inversen gerichteten Transformationen 42 und jegliche andere bekannte inverse Transformationen 43.
  • Es ist festzustellen, dass gegenwärtige Videokodierstandards lediglich eine einzelne, vorher spezifizierte Transformation verwenden, so dass ein Index für unterschiedliche Transformationen nicht benötigt wird. Ebenso berücksichtigen gegenwärtige Standards keine Seiteninformationen, die sich auf vorher dekodierte Blöcke während der inversen Transformation beziehen.
  • Kodierer
  • 1C zeigt die relevanten Details des Kodierers 10. Der Kodierer verwendet gerichtete Transformationen gemäß der Ausführungsformen der Erfindung. Die Schritte des gezeigten Verfahrens können in einem Prozessor eines Kodierers durchgeführt werden. Der Prozessor beinhaltet Speicher und Eingangs/Ausgangs-Interfaces, wie es aus dem Stand der Technik bekannt ist.
  • In den Kodierer wird ein Block 101 eines Frames eines zu kodierenden Videos eingegeben. Wie hierin definiert, enthalten Blöcke Makroblöcke, Unterblöcke und Blockpartitionen, im Allgemeinen ein Array von Pixeln. In den meisten Kodieranwendungen werden die Operationen vorzugweise mit Makroblöcken und Unterblöcken durchgeführt. Der Block kann ursprüngliche Videodaten beinhalten, Restwerte von einer räumlichen oder bewegungskompensierten Vorhersage von Videodaten oder andere texturbezogene Daten, die zu transformieren sind. Der Block kann durch ein Unterblockpartitionsrichtungsverarbeitungsmodul (SPDPM von Englisch sub-block partition directional processing module) 200 in Unterblöcke aufgeteilt sein. Darin werden die Unterblöcke einer nach dem anderen als „Blöcke“ verarbeitet.
  • Jeder Block wird unter Verwendung von Transformationen, die aus einer konventionellen zweidimensionalen diskreten Cosinus-Transformation (2D DCT) 120, einer Menge von gerichteten Transformationen 130 oder anderen Transformationen, generell Transformationen 125, ausgewählt worden sind, transformiert. Die Ausgabe der Transformation wird durch ein Transformationstyp- und Richtungsentscheidungsmodul (TTDDM von Englisch transform type and direction decision module) 300 gemessen. Das TTDDM verwendet eine Metrik, wie beispielsweise Raten/Störungs-Kosten, um zu bestimmen, welche der Transformationen die besten Eigenschaften aufweist. Die Raten/Störungs-Kosten sind eine Summe einer Kodierrate und eines Skalars multipliziert mit der Störung. Der Transformationstyp und die Richtung, die minimale Kosten haben, werden für das Transformieren ausgewählt. Die Eigenschaften können ein Maß für die Kodiereffizienz sein, sind jedoch nicht darauf beschränkt. Die Idee ist, dass diejenige Transformation, die die besten Eigenschaften hat, für das Kodieren ausgewählt wird, und die ausgewählte Transformation wird dem Dekodierer in einem Index 16 in dem Bitstrom mitgeteilt.
  • Das TTDDM kann auch eine Eingabe von einem Richtungsableitungsmodul (DIM von Englisch direction inference module) 400 empfangen. Die Eingabe an das DIM ist eine Sammlung von Daten 160, die die Transformationen und die Richtungen anzeigen, die für benachbarte vorher verarbeitete Blöcke verwendet werden. Die Ausgabe des DIM ist ein Wert oder eine Menge von Werten, entsprechend der Daten 160, wie beispielsweise bevorzugte Richtungen 431. Das TTDDM verwendet diese Information um die Entscheidung zu treffen, welche Transformationen und Richtungen zum Kodieren des Blocks 101 verwendet werden. Das TTDDM kann auch einen finalen Partitionierungsindikator (FPI von Englisch final partitioning indicator) 141 an das SPDPM als Richtlinie für das Partitionieren weiterleiten. Das TTDDM Modul erzeugt den transformierten Block 102 und einen ausgewählten Transformationsindikator (STI von Englisch selected transform indicator) 145, der die ausgewählte Transformation und die ausgewählte Richtung repräsentiert.
  • Dann kann der transformierte Block 102 passend kodiert 150 werden, unter Verwendung einer Entropie-Kodierung, um einen kodierten Ausgangsblock 17 zu erzeugen.
  • Das Richtungsvorhersagemodul (DPM von Englisch direction prediction module) 500 empfängt auch Informationen von dem DIM und Informationen, die sich auf vorher verarbeitete Blöcke 160 beziehen. Das DPM verwendet diese Informationen, um einen vorhergesagten Transformationsindikator (PTI von Englisch predicted transform indicator) 501 zu erzeugen. Der PTI wird in ein Richtungsindexkodiermodul (DIEM von Englisch directional index encoding module) 600 zusammen mit dem STI 145 eingegeben. Das DIEM konvertiert die Repräsentation in ein binäres Codewort 603 zum Kodieren durch einen kontext-adaptiven binären arithmetischen Kodierer (CABAC von Englisch context-adaptive binary arithmetic coder) 190.
  • Die durch den CABAC verwendeten Kontexte werden durch ein Kontexterzeugungsmodul (CGM von Englisch context generation module) 900 bestimmt. Die Eingabe an das CGM sind Informationen über die Transformationen und Richtungen, die durch benachbarte vorher kodierte Blöcke verwendet wurden, von dem DIM oder bereits kodierte Informationen von dem gegenwärtigen Block. Das CGM erzeugt Kontexte für den CABAC zum Kodieren des binären Richtungsindexes. Der CABAC gibt einen kodierten Transformationsindex 16 aus.
  • Unterblock- und Partitionsrichtungsverarbeitungsmodul
  • 2 zeigt Details des SPDPM 200. Die Pixel in dem eingegebenen Block 101 können videobezogene Informationen repräsentieren, wie beispielsweise Videoframedaten, bewegungskompensierte Vorhersagerestwerte und räumliche Vorhersagerestwerte. Das SPDPM teilt den Block in Partitionen 210, im Allgemeinen Arrays von Pixeln, auf. Die konventionellen oder gerichteten Transformationen 125 werden auf die Partitionen angewendet. Der finale Partitionsindikator 141, der durch das TTDDM erzeugt wird, zeigt an, welche Partitionen für die besten Eigenschaften zu verwenden sind.
  • Transformationstyp und Richtungsentscheidungsmodul
  • 3 zeigt das TTDDM 300 zum Auswählen der besten Transformation und der besten Richtung zum Verwenden für die Transformation des Blockes 210. Ein Transformationswähler 310 wählt, welche unter den verfügbaren Transformationstypen an das Messmodul 320 zu senden sind, das eine Metrik 321 bestimmt, wie beispielsweise die Raten/Störungs-(RD)-Kosten, die zur Auswahl der Transformation verwendet wird.
  • Der Transformationswähler kann durch das DIM 400 beeinflusst werden. Beispielsweise kann das DIM benachbarte Blöcke untersuchen, um zu bestimmen, welche Richtungen eine höhere Wahrscheinlichkeit aufweisen, für den gegenwärtigen Block gut zu funktionieren. Das Messen kann dann auf eine Untermenge von verfügbaren Richtungen beschränkt werden, was die Verarbeitungszeit reduziert. Nachdem diese Messungen verwendet werden, um die beste Richtung oder Transformation zu bestimmen, werden der ausgewählt Transformationsindikator 145 und der entsprechende transformierte Block 102 ausgegeben. Wenn das TTDDM auf einer Auswahl von Partitionen arbeitet, dann wird der finale Partitionsindikator 141, der die besten Eigenschaften ergibt ebenfalls an das SPDPM ausgegeben.
  • Richtungsinterferenzmodul
  • 4 zeigt das DIM 400. Das Blockauswahlmodul verwendet die vorher bearbeiteten Blöcke und Seiteninformationen 160, um mögliche Transformationsrichtungen 411 für den gegenwärtigen Block zu bestimmen. Die möglichen Transformationsrichtungen werden zum Bestimmen einer Menge von bevorzugten Richtungen 431 verwendet. Dies wird nachfolgend durch das DPM verwendet, um die Anzahl von Bits, die notwendig sind, um diese Information zu repräsentieren, zu reduzieren, was in einer verbesserten Effizienz in dem Kodierer und dem Dekodierer resultiert.
  • Ein Blockauswahlmodul (BSM von Englisch block selection module) 410 wählt aus den Blöcken 160, basierend auf Kriterien, wie beispielsweise einem Abstand der ausgewählten Blöcke zum gegenwärtigen Block, aus. Das Zuverlässigkeitsentscheidungsmodul (RDM von Englisch reliability decision module) 420 schätzt die Zuverlässigkeit der ausgewählten Blöcke ab. Das RDM Modul kann Texturinformationen verwenden, die Position und andere Blockdaten 412. Ein Zuverlässigkeitsfaktor 421 für jeden der ausgewählten Blöcke und die entsprechende Transformationsrichtung 411 werden in das Bestimmungsmodul für die bevorzugte Richtung (PDDM von Englisch preferential direction determination module) eingegeben, wo die bevorzugten Richtungen 431 identifiziert werden.
  • Richtungsvorhersagemodul
  • 5 zeigt das DPM 500 zum Bestimmen des vorhergesagten Transformationsindikators 501 für das DIEM 600 und das CGM. Ein erster Stufenvorhersager 510 wählt Kandidaten 515 aus den bevorzugten Richtungen 431 aus. Ein zweiter Stufenvorhersager 420 verwendet diese Kandidaten und die kodierten Seiteninformationen 160, um den bevorzugten Transformationsindikator 501 auszuwählen.
  • Zum Kodieren von transformierten Texturrestdaten kann der ausgewählt Transformationsrichtungsindikator 145 mit einem Texturvorhersager korreliert werden, wie beispielsweise einem Intra-Vorhersagemodus der in H.264/AVC verwendet wird. Demgemäß können die in das DPM eingegebenen Seiteninformationen beispielsweise den Intra-Vorhersagemodus zum Auswählen des Indikators 501 beinhalten.
  • Richtungsindexkodiermodul
  • 6 zeigt das DIEM 600. Eine Eingabe beinhaltet den ausgewählten Transformationsindikator 145 und den vorhergesagten Transformationsindikator 501, die auf eine sinnvolle Repräsentation der Richtungen abgebildet 605-606 werden. Unterschiedliche können für den ausgewählten und den vorhergesagten Transformationsindikator verwendet werden. Ein Unterschied zwischen den zwei Richtungen wird als eine Transformationsindikatordifferenz 612 bestimmt 610. Da die Vorhersage eine vernünftige Approximation der ausgewählten Transformationsrichtung ist, sollten geringe Winkelunterschiede in ähnlichen Codewörtern resultieren, die effektiv kodiert werden können. Die Differenz wird in das Codewort 603 binarisiert, das durch den CABAC 190 als der kodierte Transformationsindex 16 entropie-kodiert wird. Selbstverständlich kann jeder kontext-adaptive Entropie-Kodierer verwendet werden, ebenso wie eine variable Längenkodierung (VLC von Englisch variable length coding). Die Differenzberechnung kann wie nachfolgend beschrieben umgangen werden 611.
  • 7 zeigt schematisch eine erste Ausführungsform des DIEM 600. Beispielsweise gibt es acht mögliche Transformationsrichtungen 701 und entsprechende Vorhersagen 702. Die Transformationsrichtung wird durch den ausgewählten Transformationsindikator 145 ausgewählt und die Vorhersage wird durch den PTI 501 ausgewählt. Die Transformationsindikatoren werden auf einen Graucode abgebildet, in welchem benachbarte Richtungen sich lediglich um 1 Bit unterscheiden. Die Codewörter für die ausgewählte und für die vorhergesagte Richtung werden Bit für Bit mit einer exklusiven oder (XOR) Operation 610 verglichen, um die Differenz 611 zu erhalten. Für einen präzisen Vorhersager resultiert dies in einem Bitstrom mit meistens Nullen für eine niedrige Entropie. Da die Indikatorabbildungen 605-606 binäre Repräsentationen verwenden, wird die Binarisierung 620 nicht verwendet.
  • 8 zeigt eine zweite Ausführungsform des DIEM. In dieser Ausführungsform werden die Richtungen durch eine uniforme kontinuierliche Folge von Zahlen repräsentiert. Die Differenz 610 ist Δ = ( I S I P + N ) mod N
    Figure DE112010004109B4_0001
    wobei Is und IP abgebildete Indices des ausgewählten bzw. des vorhergesagten Richtungsindikators sind und N die Anzahl von möglichen Richtungen ist, beispielsweise acht. Da geringe Differenzen wahrscheinlicher sind, kodiert die Binarisierung 620 Differenzen nahe an Null (0, 1, N-1, 2, N-2, ...) mit weniger Bits. Die Differenzberechnung kann umgangen werden 611 und der abgebildete Transformationsindikator wird unmittelbar an das Binarisierungsmodul 620 übergeben. In diesem Fall verwendet das Kontexterzeugungsmodul 900 den vorhergesagten Transformationsindikator, um einen geeigneten Kontext auszuwählen.
  • Kontexterzeugungsmodul
  • 9 - 10 zeigen Ausführungsformen des CGM 900. Das CGM wählt Kontexte 921-922 für den CABAC 190 aus. Mehr als zwei Kontexte können auch ausgewählt werden. Um die Kontexte zu bestimmen, kann das CGM die bevorzugte verarbeitete Blockinformation 160, die PTI 501 und die bevorzugten Richtungen 431 verwenden. Die Kontexte A und B unterscheiden genau vorhergesagte Richtungen und ungenaue Vorhersagen. 9 zeigt, wie die bevorzugten Richtungen 431 verwendet werden, um die Kontexte zu bestimmen. Eine maximale Differenz φ wird bestimmt 910 und mit einer vorherbestimmten Schwelle T verglichen 920. Wenn die Differenz kleiner als die Schwelle ist, dann ist die Vorhersage genau im Kontext A 921, andernfalls ist der Kontext B 922 ungenau. Wenn beispielsweise das DIEM verwendet wird, dann sind die dem CABAC übergebenen Bits meistens Nullen und Kontext A wird ausgewählt, um auf diese Wahrscheinlichkeit zu passen. Die Kontextauswahl des CGM 900 kann auch andere Faktoren berücksichtigen, wie beispielsweise eine Bit-Position, um zwischen mehr als zwei Kontexten zu entscheiden.
  • Die Ausführungsform, die in 10 gezeigt ist, nimmt an, dass das DI-EM die Differenzberechnung 610 umgeht 611. Der vorhergesagte Transformationsindikator 501 und ein Positionsindex i 1001, der repräsentiert, welches Bit aus dem Index 603 zu kodieren ist, sind Eingaben. Der PTI 501 wird auf ein binäres Codewort mit derselben Indikatorabbildung 605, die in dem DIEM verwendet wird, abgebildet, 1010. Da beide Codewörter dieselben sein sollten, sollte das wahrscheinlichste Bit des CABAC dasselbe sein, wie das gegenwärtige Bit CWf[i] von 1030. Demgemäß wird, wenn der Vergleich 1030 anzeigt, dass das gegenwärtige Bit 1 ist, der Kontext A 921, der 1 bevorzugt, ausgewählt, andernfalls wird der Kontext B 922, bei dem 0 das bevorzugte Bit ist, ausgewählt.
  • Primäre und sekundäre gerichtete Transformationen
  • 11A zeigt die gerichtete Transformation gemäß Ausführungsformen von unserer Erfindung. Selbstverständlich ist während des Dekodierens die Transformation eine inverse Transformation. Die Transformation (oder ihre Inverse) arbeitet mit einem MxN Block 1100 von Pixeln. Zum Zwecke der Transformation können die mit den Pixeln assoziierten Werte 1101 Intensitäten oder Transformationskoeffizienten sein, abhängig von der Stufe des Kodierens oder des Dekodierens.
  • Die Transformation beinhaltet eine Menge von 1-D Transformationen {T0, T1, ..., TN-1} 1102, wobei N die Gesamtzahl von 1-D Transformationen, die auf den Block angewendet werden, ist. Die Länge li von Transformationen Ti zeigt die Anzahl von Pixeln, auf denen die 1-D Transformation arbeitet, an. Demgemäß haben die Transformationen {T0, T1,...,TN-1} in der Menge entsprechende Längen {l0, l1, ..., lN-1}.
  • Jede Transformation wird auf Pixel entlang eines Pfades 1102 in dem Block angewendet. Ein Pfad beinhaltet typischerweise eine Menge von zusammenhängenden oder benachbarten Pixeln. Jedoch können auch nicht zusammenhängende Pixel in dem Pfad mit eingeschlossen sein.
  • Wie in 11B gezeigt ist, wenn die Werte der Pixel auf dem Pfad Koeffizienten sind, dann der erste Koeffizient für jeden Pfad der DC Koeffizient, gefolgt von den AC Koeffizienten. Alle der ersten Koeffizienten 1150 werden in einer Menge von sekundären Transformationskoeffizienten (STC) 1170 gesammelt. Der erste sekundäre Koeffizient in der Menge ist ein sekundärer DC (SDC) Koeffizient.
  • Während des Dekodierens kann die sekundäre gerichtete Transformation 26 auf die Menge von sekundären Transformationskoeffizienten angewendet werden, um den DC Koeffizienten jedes Pfades zu rekonstruieren. Während des Kodierens wird der erste oder der DC Koeffizient von jedem Pfad verworfen, nachdem die Menge von sekundären Transformationskoeffizienten 1170 ausgebildet ist.
  • Jeder Pfad ist, in Bezug auf die vertikale Richtung 1103, unter einem Transformationswinkel θ 1105 orientiert, der durch den Richtungstransformationsindex bestimmt wird. Wie oben beschrieben ist der Transformationsindex, der während des Kodierens bestimmt wird, ein Teil des zu dekodierenden Bitstroms.
  • Die Pfade für einen bestimmten Block und eine bestimmte Transformation sind im Allgemeinen in dieselbe Richtung orientiert. Die Pfade werden wie folgt erzeugt.
  • Ein minimaler Pfad der Transformationslänge Lmin 1110 wird für den Block spezifiziert. Der Transformationspfad beginnt typischerweise bei einem Startpixel 1120, das an einer Kante (oder Ecke) des Blocks 1100 lokalisiert ist. Wie vorstehend beschrieben ist, ist, wenn die Werte für die Pixel Koeffizienten sind, der Wert für das Startpixel der DC Koeffizient.
  • Der Pfad setzt sich entlang des Winkels θ fort, bis ein Endpixel 1121 an einer anderen Kante erreicht ist. Die Pfadlänge, in Pixeln, ist m. Wenn das Startpixel an einer Kante oder Ecke ist, dann ist die Länge m = 1.
  • Wenn m ≥ Lmin ist, dann wird der Pfad als komplett angesehen. Wenn der Block immer noch irgendwelche Pixel nicht auf einem Pfad beinhaltet, dann wird ein neuer Pfad gestartet. Der neue Pfad kann an jedem untransformierten Pixel in dem Block starten. Typischerweise beginnt der nächste Pfad bei einem Pixel, das benachbart zu oder nahe dem Beginn des vorhergehenden Pfades ist, oder der Pfad kann an einer gegenüberliegenden Ecke des Blockes starten, so dass die Verteilung der Pfadlängen innerhalb des Blockes im Wesentlichen symmetrisch ist. Das Verfahren fährt mit Schritt 2 fort, bis alle Pixel transformiert sind.
  • Wenn m < Lmin ist, dann ist der Pfad zu kurz und das Verfahren fährt fort, indem es ein Pixel benachbart zu einem vorher verarbeiteten Pixel inkludiert. Wenn es mehr als ein benachbartes Pixel gibt, dann werden andere Pfade in dem Block verwendet, um den gegenwärtigen Pfad zu bestimmen. Wenn ein unverarbeitetes Pixel vorhanden ist, wird das Pixel zu einem Teil des Pfades gemacht, und die Pfadlänge m wird erhöht und das Verfahren fährt mit Schritt 2 in der Richtung (180 - θ) fort, bis die Kante des Blockes erreicht ist. Demgemäß wird die Richtung θ auf (180 - θ) gesetzt, tatsächlich eine Kehrtwende, bevor mit Schritt 2 weitergemacht wird.
  • 12A-C zeigen gerichtete Transformationen für Lmin = 3 und Winkel von 45, 30 bzw. 90 Grad. 12D-F zeigen gerichtete Transformationen für Lmin = 5. Alternative Ausführungsformen sind möglich, wenn Pfade innerhalb des Blockes statt an einer Kante enden.
  • Die inverse Transformation 26 arbeitet entlang derselben Pfade, wie oben beschrieben, abgesehen davon, dass inverse Transformationskoeffizienten verwendet werden. Beispielsweise würde, wenn eine 1-D DCT für jeden Pfad verwendet wird, dann die inverse Transformation die 1-D inverse DCT (IDCT) verwenden.
  • Sekundäre gerichtete Transformation
  • 11B zeigt die sekundäre gerichtete Transformation 26. Nachdem die primäre gerichtete Transformation angewendet worden ist, kann die sekundäre Transformation adaptiv auf jeden Block entlang eines Pfades beinhaltend die ursprünglichen Koeffizienten von jedem Pfad der ursprünglichen Transformation angewendet werden. Diese Koeffizienten entsprechen typischerweise den DC Koeffizienten einer 1-D Transformation, wie beispielsweise der DCT.
  • Die inverse sekundäre Transformation arbeitet entlang desselben Pfades wie oben beschrieben, abgesehen davon, dass inverse sekundäre Transformationskoeffizienten verwendet werden. Die inverse sekundäre gerichtete Transformation wird durchgeführt, bevor die inverse gerichtete Transformation während des Dekodierens durchgeführt wird.
  • Die sekundäre Transformation reduziert darüber hinaus eine Redundanz in den DC Komponenten der gerichteten Transformationskoeffizienten. Alternativ kann die DC Komponente einer gerichteten Transformation verwendet werden, um die DC Komponente einer anderen gerichteten Transformation vorherzusagen.
  • Aufgeteilte gerichtete Transformationen
  • 13 zeigt eine aufgeteilte gerichtete Transformation. Ein MxN (8x8) Block 1300 von Pixeln wird in zwei Blockpartitionen A und B ungefähr entlang einer Linie 1310 mit einem Partitionswinkel φin Bezug auf die Vertikale aufgeteilt. Der Partitionswinkel ist senkrecht zu dem Transformationswinkel θ 1105.
  • Dann werden gerichtete Transformationen unter Verwendung der oben beschriebenen Schritte erzeugt, mit der Einschränkung, dass Blockpartition A eine Menge von Pfaden, die am Winkel θA orientiert sind, aufweist, und dass Partition B eine Menge von Pfaden, die am Winkel θB orientiert sind, aufweist. Der primäre Winkel der gerichteten Transformation θ wird als derselbe angesehen, wie θA. Da ein Pfad innerhalb der Partition erzeugt wird, approximiert die Linie 1310 die Kante der Partition. Demgemäß ist jedes Pixel in der gerichteten Transformation entweder in Partition A oder B. Die Winkel θA und θB können unterschiedlich sein.
  • In einer Ausführungsform der Erfindung wird die sekundäre gerichtete Transformation auf beide Partitionen B angewendet. Um den Prozess umzukehren, wird die sekundäre inverse Transformation angewendet und dann werden die inversen gerichteten Transformationen unabhängig auf die Partitionen A und B angewendet. In einem anderen Ausführungsbeispiel der Erfindung wird die sekundäre Transformation unabhängig auf jede Partition angewendet.
  • D.h. entweder beide inverse sekundäre Transformationen können vor der inversen primären Transformation angewendet werden oder die inverse sekundäre Transformation und die inverse primäre Transformation können unabhängig auf die Partitionen angewendet werden. Diese Entscheidung wird adaptiv auf einer Pro-Block-Basis getroffen.
  • Skalierungs- und Quantisierungsreihenfolge
  • Nachdem die primäre und die sekundäre Transformation beendet wurden, werden die resultierenden Koeffizienten skaliert, geordnet und quantisiert.
  • Das Skalieren der Transformationskoeffizienten hängt von der Länge m des Pfades jeder 1-D gerichteten Transformation oder einem Ort des Koeffizienten in dem Block ab. Eine 1-D Transformation der Länge m hat einen Skalierungsfaktor Sm. Demgemäß werden alle Koeffizienten in dem Pfad der Länge m durch Sm skaliert. Typischerweise wird der Skalierungsfaktor so ausgewählt, dass die Größen der DC Koeffizienten dieselben sind, wenn identische Pixelwerte transformiert werden. Wenn eine Transformation mit einer Länge m = 4 vier Pixel, jeder mit Wert v, transformiert und eine Transformation mit einer Länge m = 5 fünf Pixel, jeder mit einem Wert v, transformiert, dann wird der Skalierungsfaktor Sm so ausgewählt, dass beide Transformationen die ersten (DC) Koeffizienten mit demselben Wert ausgeben.
  • Alternative Skalierungsverfahren sind auch möglich. Kürzeren Transformationen können kleinere oder größere Skalierungsfaktoren basierend auf der Länge m oder Richtung θ gegeben werden. Die Skalierung kann auch zu einem Teil der Transformation selbst gemacht werden, um die Implementierung dieses Prozesses zu vereinfachen.
  • Die skalierten Koeffizienten werden in einer Abtastreihenfolge angeordnet. In einer Ausführungsform wird die Menge von Koeffizienten {T0, T1, ..., TN-1} unabhängig und in Folge abgetastet. In jeder Transformation wird der erste DC Koeffizient zuerst abgetastet, gefolgt von den folgenden AC Koeffizienten in derselben Folge als dem Pfad für diese Transformation.
  • In einer anderen Ausführungsform werden alle die ersten DC Koeffizienten von jeder Transformation abgetastet, gefolgt von all den zweiten Koeffizienten von jeder Transformation usw. bis zur letzten Transformation. In der zweiten Ausführungsform kann die Folge, in der die Transformationen abgetastet werden, variieren. Beispielsweise können die Transformationen infolge ihres Indexes abgetastet werden, d.h., der erste Abtastung verwendet die DC Koeffizienten aus der Menge von Transformationen {T0, T1,...,TN-1} in der Reihenfolge {0, 1, ..., N-1}. Alternativ können die Transformationen infolge ihrer Länge {l0, l1, ..., lN-1} abgetastet werden. Die Koeffizienten können basierend auf ihrer relativen Position in dem Block abgetastet werden. Beispielsweise können alle die Koeffizienten entlang einer Kante des Blockes zuerst abgetastet werden, gefolgt von Koeffizienten, die von der Kante beabstandet sind.
  • Auch wenn die Erfindung durch Beispiele von bevorzugten Ausführungsformen beschrieben worden ist, ist es selbstverständlich, dass verschiedene andere Anpassungen und Modifikationen innerhalb des Gedankens und Umfangs der Erfindung durchgeführt werden können. Demgemäß ist es die Aufgabe der angehängten Ansprüche, alle diese Variationen und Modifikationen, die innerhalb des wahren Gedankens und Umfangs der Erfindung stattfinden, abzudecken.

Claims (13)

  1. Ein Verfahren zum Dekodieren eines Bitstroms (15), wobei der Bitstrom einem kodierten Video (1) entspricht, wobei das kodierte Video (1) eine Folge von Frames beinhaltet, wobei jeder Frame in kodierte Blöcke aufgeteilt ist, für jeden kodierten Block umfassend die Schritte des Bestimmens einer Menge von Pfaden (1102) in dem kodierten Block, wobei jeder Pfad (1102), in Bezug auf eine vertikale Richtung (1103), unter einem Transformationswinkel (1105) orientiert ist, der aus einem Transformationsindex in dem Bitstrom (15) bestimmt ist; des Erlangens von Transformationskoeffizienten (192) aus dem Bitstrom (15), wobei die Transformationskoeffizienten einen DC Koeffizienten für jeden Pfad (1102) beinhalten; des Anwendens einer primären inversen Transformation (25) auf die Transformationskoeffizienten auf jedem Pfad (1102) zum Erzeugen eines dekodierten Videos (2), wobei die Schritte des Bestimmens, des Erlangens und des Anwendens in einem Dekodierer (20) durchgeführt werden; wobei jeder Pfad (1102) an einem Startpixel des Blocks entsprechend des DC Koeffizienten des Pfades (1102) beginnt und generiert wird indem wiederholt ein benachbartes Pixel in Richtung des Transformationswinkels inkludiert wird, wobei an einer Kante des Blocks eine Kehrtwende gemacht wird, wobei der Pfad (1102) an der Kante endet wenn die Pfadlänge größer oder gleich Lmin ist, wobei Lmin > 2 und Lmin für den jeweiligen Block spezifiziert ist.
  2. Das Verfahren nach Anspruch 1, wobei jeder Pfad einen ersten Koeffizienten (1150) zum Ausbilden einer Menge von ersten Koeffizienten (1150) aufweist, und wobei das Erlangen darüber hinaus umfasst: das Anwenden einer sekundären inversen Transformation auf die Menge von ersten Koeffizienten (1150), um den DC Koeffizienten (1150) für jeden Pfad zu erhalten.
  3. Das Verfahren nach Anspruch 1, wobei jeder Pfad einen ersten Koeffizienten (1150) zum Ausbilden einer Menge von ersten Koeffizienten aufweist, und wobei das Erlangen darüber hinaus umfasst: das Vorhersagen der DC Komponente für jeden Pfad aus der Menge von ersten Koeffizienten (1150).
  4. Das Verfahren gemäß Anspruch 1, darüber hinaus umfassend: das Assoziieren einer Länge mit jedem Pfad.
  5. Das Verfahren nach Anspruch 4, wobei die Längen unterschiedlich sind.
  6. Das Verfahren nach Anspruch 1, wobei die primäre inverse Transformation (25) auf einer inversen diskreten Cosinus-Transformation basiert.
  7. Das Verfahren nach Anspruch 1, darüber hinaus umfassend: das Aufteilen des Blocks in eine Menge von Partitionen gemäß eines Partitionswinkels (1105).
  8. Das Verfahren nach Anspruch 7, wobei der Partitionswinkel senkrecht zu dem Transformationswinkel ist.
  9. Das Verfahren nach Anspruch 1, wobei die Blöcke Makroblöcke, Unterblöcke, Blockpartitionen oder ein Array von Pixeln beinhalten.
  10. Das Verfahren nach Anspruch 1, weiterhin umfassend das inverse Quantisieren der Transformationskoeffizienten gemäß eines Quantisierungsparameters; und das Skalieren der Transformationskoeffizienten gemäß eines Ortes der Transformationskoeffizienten in dem Block.
  11. Das Verfahren nach Anspruch 4, darüber hinaus umfassend: das inverse Quantisieren der Transformationskoeffizienten gemäß eines Quantisierungsparameters; und das Skalieren der Transformationskoeffizienten gemäß der Längen.
  12. Das Verfahren nach Anspruch 1, wobei eine Abtastreihenfolge für die Koeffizienten von einer Folge, in der die Koeffizienten quantisiert sind, abhängt.
  13. Das Verfahren nach Anspruch 1, wobei eine Abtastreihenfolge für jede inverse Transformation unabhängig ausgeführt wird.
DE112010004109.1T 2009-10-21 2010-09-16 Verfahren zum Dekodieren eines Bitstroms Active DE112010004109B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/603,100 US20110090952A1 (en) 2009-10-21 2009-10-21 Directional Transforms for Video and Image Coding
US12/603,100 2009-10-21
PCT/JP2010/066621 WO2011048909A2 (en) 2009-10-21 2010-09-16 Method for decoding a bitstream

Publications (2)

Publication Number Publication Date
DE112010004109T5 DE112010004109T5 (de) 2012-11-15
DE112010004109B4 true DE112010004109B4 (de) 2022-11-10

Family

ID=43879261

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010004109.1T Active DE112010004109B4 (de) 2009-10-21 2010-09-16 Verfahren zum Dekodieren eines Bitstroms

Country Status (12)

Country Link
US (1) US20110090952A1 (de)
EP (1) EP2491716B1 (de)
JP (1) JP5409909B2 (de)
KR (1) KR101351714B1 (de)
CN (1) CN102763410B (de)
BR (1) BR112012009533B1 (de)
DE (1) DE112010004109B4 (de)
ES (1) ES2793499T3 (de)
MX (1) MX2012004642A (de)
PL (1) PL2491716T3 (de)
RU (1) RU2486691C1 (de)
WO (1) WO2011048909A2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8537899B1 (en) * 2010-02-19 2013-09-17 Otoy, Inc. Fast integer and directional transforms for data encoding
US20110243220A1 (en) * 2010-04-05 2011-10-06 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image and method and apparatus for decoding image using adaptive coefficient scan order
JP2011259205A (ja) * 2010-06-09 2011-12-22 Sony Corp 画像復号化装置と画像符号化装置およびその方法とプログラム
CN102281435B (zh) * 2010-06-11 2013-10-02 华为技术有限公司 编码方法、解码方法、编码装置、解码装置及编解码系统
US9392301B2 (en) 2011-07-01 2016-07-12 Qualcomm Incorporated Context adaptive entropy coding for non-square blocks in video coding
KR101550726B1 (ko) 2011-10-17 2015-09-07 주식회사 케이티 영상 부호화/복호화 방법 및 그 장치
US9167261B2 (en) 2011-11-07 2015-10-20 Sharp Laboratories Of America, Inc. Video decoder with constrained dynamic range
US20130114685A1 (en) * 2011-11-07 2013-05-09 Sharp Laboratories Of America, Inc. Video decoder with constrained dynamic range
JP6080375B2 (ja) 2011-11-07 2017-02-15 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
US20140307780A1 (en) * 2013-04-11 2014-10-16 Mitsubishi Electric Research Laboratories, Inc. Method for Video Coding Using Blocks Partitioned According to Edge Orientations
CN109076226B (zh) * 2016-05-13 2021-08-13 索尼公司 图像处理装置和方法
FR3057429A1 (fr) * 2016-10-07 2018-04-13 B<>Com Procede de codage d'une image numerique, procede de decodage, dispositifs et programmes d'ordinateurs associes
EP3451663A1 (de) * 2017-08-31 2019-03-06 Thomson Licensing Pools aus transformationen zur lokalen auswahl eines satzes von transformationen in videocodierung
CN107547814B (zh) * 2017-09-28 2019-10-15 维沃移动通信有限公司 一种视频录制方法、移动终端
US11297348B2 (en) * 2018-04-13 2022-04-05 Mediatek Inc. Implicit transform settings for coding a block of pixels
US10999604B2 (en) 2018-04-13 2021-05-04 Mediatek Inc. Adaptive implicit transform setting
GB2587982B (en) * 2018-06-08 2023-01-04 Kt Corp Method and apparatus for processing video signal
US11025937B2 (en) * 2019-03-16 2021-06-01 Tencent America LLC Method and apparatus for video coding
US11616966B2 (en) * 2019-04-03 2023-03-28 Mediatek Inc. Interaction between core transform and secondary transform

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080294962A1 (en) 2007-05-25 2008-11-27 Nvidia Corporation Efficient Encoding/Decoding of a Sequence of Data Frames

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3298915B2 (ja) * 1991-12-28 2002-07-08 ソニー株式会社 符号化装置
JPH0683442A (ja) * 1992-09-04 1994-03-25 Sanyo Electric Co Ltd 走行ロボット
US5883678A (en) * 1995-09-29 1999-03-16 Kabushiki Kaisha Toshiba Video coding and video decoding apparatus for reducing an alpha-map signal at a controlled reduction ratio
KR100324610B1 (ko) * 1996-05-28 2002-02-27 모리시타 요이찌 화상예측 복호화장치 및 방법
US6671322B2 (en) * 2001-05-11 2003-12-30 Mitsubishi Electric Research Laboratories, Inc. Video transcoder with spatial resolution reduction
JP2003309848A (ja) * 2002-04-12 2003-10-31 Canon Inc 画像符号化装置及びその制御方法
CN101232618B (zh) * 2002-04-23 2013-03-27 诺基亚有限公司 用于在视频编码系统中指示量化器参数的方法与设备
US7376280B2 (en) * 2002-07-14 2008-05-20 Apple Inc Video encoding and decoding
JP4253572B2 (ja) * 2003-12-08 2009-04-15 株式会社東芝 画像符号化装置、画像符号化方法および画像符号化プログラム
US7599435B2 (en) * 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
US7565020B2 (en) * 2004-07-03 2009-07-21 Microsoft Corp. System and method for image coding employing a hybrid directional prediction and wavelet lifting
RU2368095C1 (ru) * 2005-07-22 2009-09-20 Мицубиси Электрик Корпорейшн Кодер изображения и декодер изображения, способ кодирования изображения и способ декодирования изображения, программа кодирования изображения и программа декодирования изображения и компьютерно-считываемый носитель записи, на котором записана программа кодирования изображения, и компьютерно-считываемый носитель записи, на котором записана программа декодирования изображения
US7933337B2 (en) * 2005-08-12 2011-04-26 Microsoft Corporation Prediction of transform coefficients for image compression
KR100750145B1 (ko) * 2005-12-12 2007-08-21 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
KR100772873B1 (ko) * 2006-01-12 2007-11-02 삼성전자주식회사 스무딩 예측을 이용한 다계층 기반의 비디오 인코딩 방법,디코딩 방법, 비디오 인코더 및 비디오 디코더
US7756348B2 (en) * 2006-10-30 2010-07-13 Hewlett-Packard Development Company, L.P. Method for decomposing a video sequence frame
US8331444B2 (en) * 2007-06-26 2012-12-11 Qualcomm Incorporated Sub-band scanning techniques for entropy coding of sub-bands
JP2009272727A (ja) * 2008-04-30 2009-11-19 Toshiba Corp 予測誤差の方向性に基づく変換方法、画像符号化方法及び画像復号化方法
EP2373031A1 (de) * 2008-08-12 2011-10-05 Lg Electronics Inc. Verfahren zur Dekodierung von Videosignalen
US8514942B2 (en) * 2008-12-31 2013-08-20 Entropic Communications, Inc. Low-resolution video coding content extraction
US8451903B2 (en) * 2009-05-14 2013-05-28 Massachusetts Institute Of Technology Selecting transforms for compressing visual data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080294962A1 (en) 2007-05-25 2008-11-27 Nvidia Corporation Efficient Encoding/Decoding of a Sequence of Data Frames

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
B. Zeng and J. Fu: "Directional Discrete Cosine Transforms—A New Framework for Image Coding" in IEEE Transactions on Circuits and Systems for Video Technology, vol. 18, no. 3, pp. 305-313, March 2008.
Chuo-Ling Chang and B. Girod: "Direction-adaptive partitioned block transform for image coding", 15th IEEE International Conference on Image Processing, San Diego, CA, 2008, pp. 145-148.
H. Xu, J. Xu and F. Wu: "Lifting-Based Directional DCT-Like Transform for Image Coding" in IEEE Transactions on Circuits and Systems for Video Technology, vol. 17, no. 10, pp. 1325-1335, Oct. 2007.
KAUFF, Peter ;SCHÜÜR, Klaas: Shape-Adaptive DCT with Block-Based DC Separation and Delta-DC Correction. In: IEEE Transactions on Circuits and Systems for Video Technology, Vol. 8, 1998, No. 3, S. 237-242. - ISSN 1051-8215

Also Published As

Publication number Publication date
BR112012009533B1 (pt) 2021-09-28
WO2011048909A3 (en) 2012-05-18
PL2491716T3 (pl) 2020-08-24
ES2793499T3 (es) 2020-11-16
EP2491716B1 (de) 2020-04-29
CN102763410B (zh) 2016-04-27
RU2486691C1 (ru) 2013-06-27
WO2011048909A2 (en) 2011-04-28
KR101351714B1 (ko) 2014-01-16
CN102763410A (zh) 2012-10-31
JP2013507794A (ja) 2013-03-04
KR20120079137A (ko) 2012-07-11
US20110090952A1 (en) 2011-04-21
JP5409909B2 (ja) 2014-02-05
DE112010004109T5 (de) 2012-11-15
MX2012004642A (es) 2012-05-29
BR112012009533A2 (pt) 2020-07-07
EP2491716A2 (de) 2012-08-29

Similar Documents

Publication Publication Date Title
DE112010004109B4 (de) Verfahren zum Dekodieren eines Bitstroms
Cheng et al. Learned image compression with discretized gaussian mixture likelihoods and attention modules
DE102016125117B4 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE60309375T2 (de) Parametrisierung für verlauf-kompensation
DE69735838T2 (de) Videokodierer mit Transformationskoeffizientenprädiktion
DE60305325T2 (de) System und verfahren zur ratenverzerrungsoptimierten datenpartitionierung zur videocodierung unter verwendung von rückwärtsadaption
DE19861377B4 (de) Ein verbessertes Kompressions- und Dekompressionssystem mit reversiblen Wavelets und verlustbehafteter Rekonstruktion
DE10300048B4 (de) Verfahren und Vorrichtung zur Bildcodierung und -decodierung
DE60308255T2 (de) 2D-Transformationen zur Bild- und Videokodierung
DE69635369T2 (de) Videokodierungsvorrichtung
US6985632B2 (en) Image processing system, image processing apparatus, and image processing method
EP1635578B1 (de) Verfahren und Anordnung zur Videocodierung, wobei die Videocodierung Texturanalyse und Textursynthese sowie Texturverzerrung umfasst, sowie ein entsprechendes Computerprogramm und ein entsprechendes computerlesbares Speichermedium
DE69738494T2 (de) Videokodierungs- und Videodekodierungsvorrichtung
DE69835528T2 (de) Eingebetteter dct-basierte standbildkodierungsalgorithmus
JP5700970B2 (ja) 画像シーケンスを表す符号化データストリームの復号方法と画像シーケンスの符号化方法
DE19758761B4 (de) Verfahren zum Intrakodieren eines von einer Pixelmatrix gebildeten Bildes
DE102013105461A1 (de) Ratensteuerverfahren für mehrschichtige Videocodierung, sowie Videocodiervorrichtung und Videosignalverarbeitungsvorrichtung, welche das Ratensteuerverfahren verwenden
DE10253418A1 (de) Verfahren zum Codieren/Decodieren eines Bildsignals
EP1995971A1 (de) Verfahren und vorrichtung zur realisierung von quantisierung beim codieren/decodieren
CN106210748A (zh) Hevc视频编码中的逻辑帧内模式命名
DE602004001993T2 (de) Transformations basiertes restbewegungsrahmen kodierungsverfahren mit übervollständiger basis und zugehörige vorrichtung zur videokompression
DE112011104625T5 (de) Verfahren zum Codieren von Videos unter Verwendung von Wörterbüchern
DE102019103346A1 (de) Ssim-basierte rate-distortion-optimierung für eine verbesserte wahrnehmbare qualität bei videos
DE10204617B4 (de) Verfahren und Vorrichtungen zur Kompression und Dekompression eines Videodatenstroms
Boopathiraja et al. A near lossless three-dimensional medical image compression technique using 3D-discrete wavelet transform

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04N0007300000

Ipc: H04N0019600000

Effective date: 20131205

R084 Declaration of willingness to licence
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final