DE60308255T2 - 2D-Transformationen zur Bild- und Videokodierung - Google Patents

2D-Transformationen zur Bild- und Videokodierung Download PDF

Info

Publication number
DE60308255T2
DE60308255T2 DE60308255T DE60308255T DE60308255T2 DE 60308255 T2 DE60308255 T2 DE 60308255T2 DE 60308255 T DE60308255 T DE 60308255T DE 60308255 T DE60308255 T DE 60308255T DE 60308255 T2 DE60308255 T2 DE 60308255T2
Authority
DE
Germany
Prior art keywords
matrix
transformation
data block
transform
functions
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
DE60308255T
Other languages
English (en)
Other versions
DE60308255D1 (de
Inventor
Srinivasan Sridhar
Regunathan Shankar
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 DE60308255D1 publication Critical patent/DE60308255D1/de
Publication of DE60308255T2 publication Critical patent/DE60308255T2/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/007Transform coding, e.g. discrete cosine transform
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Discrete Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Multimedia (AREA)
  • Algebra (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Television Systems (AREA)

Description

  • Die vorliegende Erfindung betrifft Verfahren zum digitalen Kodieren und Verarbeiten von Signalen. Im Besondern betrifft die Erfindung die Erstellung und die Verwendung einer Klasse von recheneffizienten Transformationen beim Kodieren und Dekodieren von Signalen wie beispielsweise die von Bild und Video.
  • Die Transformationskodierung ist ein Kompressionsverfahren, das in vielen Audio-, Bild- und Video-Kompressionssystemen angewendet wird. Nicht-komprmierte digitale Bild- und Videodaten werden typischerweise als Samples von Bildelementen oder Farben an Orten in einem Bild- oder Videoframe repräsentiert oder erfasst, der in einem zweidimensionalen Gitter angeordnet ist. So besteht beispielsweise ein typisches Format für Bilder aus einem Stream von 14-Bit-Farbbildelement-Samples, die als ein Gitter angeordnet sind. Jedes Sample ist eine Nummer, die die Farbenkomponenten an einem Pixelort in dem Gitter innerhalb eines Farbraums repräsentiert, wie beispielsweise RGB [Rot-Grün-Blau] oder der fast identische Farbraum YIQ. Verschiedene Bild und Videosysteme können unterschiedliche Farb-, Raum- und Zeitauflösungen für das Sampling verwenden.
  • Nicht-komprimierte digitale Bild- und Videosignale können eine enorme Speicher- und Übertragungskapazität verbrauchen. Durch Transformationskodierung wird die Größe der digitalen Bilder und Videos durch Transformieren der räumlichen Bereichsrepräsentation des Signals in eine Frequenzbereich- (oder andere ähnliche Transformationsbereiche) Repräsentation, und durch das anschließende Reduzieren der Auflösung von bestimmten im Allgemeinen weniger wahrnehmbaren Frequenzkomponenten der Transformationsbereichs-Repräsentation reduziert. Dadurch wird im Allgemeinen eine viel weniger wahrnehmbare Verschlechterung des digitalen Signals verglichen mit dem Reduzieren der Farb- oder Raumauflösung der Bilder oder Videos in dem räumlichen Bereich erzeugt.
  • Genauer gesagt, werden bei einem typischen Transformationskodierungsverfahren die nicht-komprimierten digitalen Bildpixel in zweidimensionale Blöcke einer festgelegten Größe unterteilt, wobei jeder Block möglicherweise mit anderen Blöcken überlappend angeordnet ist. Es wird eine lineare Transformation, bei der räumliche Frequenzanalyse durchgeführt wird, an einem jedem Block angewendet, wodurch die beabstandeten Samples innerhalb des Blockes in einen Satz von Frequenz- (oder Transformations-) Koeffizienten, die allgemeinen die Stärke des digitalen Signals in den entsprechenden Frequenzbändern über das Blockintervall hinweg darstellen, umgewandelt werden. Für die Kompression können die Transformationskoeffizienten selektiv Quantisierung unterzogen werden (das heißt, in ihrer Auflösung reduziert werden, wie bei dem Ablegen der am wenigsten signifikanten Bits der Koeffizientenwerte oder anderenfalls dem Abbilden der Werte in einer höheren Auflösungsanzahl, die auf eine geringere Auflösung eingestellt ist), uns sie können auch durch Entropiekodierung oder variable Längenkodierung in einen komprimierten Datenstream umgewandelt werden. Beim Dekodieren werden die Transformationskoeffizienten invers transformiert, um nahezu das ursprüngliche Farb-/Raum-gesamplete Bild-/Videosignal zu erzeugen.
  • Viele Bild- und Videokompressionssysteme wie beispielsweise MPEG und Windows Media wenden Transformationen auf Basis der Diskreten Kosinustransformation (DCT [Discrete Cosinus Transform]) an. Das DCT-Verfahren ist dafür bekannt, dass es günstige Energieverdichtungseigenschaften besitzt, die in einer fast optimalen Datenkompression resultieren. In diesen Kompressionssystemen wird die inverse DCT (IDCT) in den Rekonstruierungsschleifen sowohl in der Kodiereinrichtung als auch in der Dekodiereinrichtung des Kompressionssystems zum Rekonstruieren der einzelnen Bildblöcke angewendet. Eine exemplarische Implementierung der IDCT ist in „ISSS Standard Specification for the Implementations of 8 × 8 Inverse Discrete Cosine Transform.", IEEE Std. 1180-1990, 6. Dezember, 1990, beschrieben.
  • Ein Nachteil der IDCT-Transformation, so wie dies auch in IEE Std. 1180 bis 1990 dargelegt ist, besteht darin, dass die Berechnung der Transformation eine Matrixmultiplikation von 64-Bit-Gleitkommazahlen beinhaltet, was aus der rechnerischen Perspektive kostenintensiv ist. Dadurch kann die Leistung des Bild- oder Videokompressionssystems, insbesondere beim Streamen von Medien- und medienähnlichen Abspielanwendungen, bei denen das IDCT-Verfahren an großen Mengen von komprimierten Daten auf einer Echtzeit-Basis oder unter anderen zeitähnlichen Einschränkungen durchgeführt wird, gemindert werden.
  • Dokument US-A-325 215 schlägt einen Matrixfaktor zum Multiplizieren einer Eingangssignal-Matrix mit einer Koeffizienten-Matrix vor, die so konfiguriert ist, dass sie so viele konstante Faktoren wie absolute Werte der Koeffizienten in der Transformations-Koeffizientenmatrix zum Handlen der Signalmatrix als gemeinsame Multiplikatoren, eine Vielzahl von Selektoren zum Auswählen von Werten, die zum Berechnen der Elemente des Matrixproduktes aus den Multiplikationsergebnissen, welche durch die konstanten Faktoren ausgegeben werden, notwendig sind und einen jeweilige Akkumulator, der einem jeden der Selektoren zum Akkumulieren der ausgewählten Werte zum abschließenden Erzeugen eines Elementes des Matrixproduktes zugewiesen wird, umfasst.
  • Xin Li et al.: "On implementing transforms from integers to integers", Konferenzdokumente der IEE International Conference on Image Processing, Oktober 1998, Seiten 881 bis 885, bezieht sich auf das Ersetzen der linearen Transformationen, die auf Integerwert-Datensequenzen angewendet werden, wodurch nicht-Integer-Ausgänge erzeugt werden, mit nicht-linearen Transformationen, wodurch Integer-Ausgänge erzeugt werden, die mit den Ausgängen entsprechend den linearen Transformationen so nahe wie möglich übereinstimmen.
  • Rubino et al.: „Improved Chen-Smith image coder", Konferenzdokumente des IEEE International Symposium on Circuits and Systems, Vol. 2, Mai 1993, Seiten 167 bis 270, beschreibt ein auf Transformationskodierung basierendes Bildkompressionssystem, bei dem die Diskrete Kosinustransformation DCT durch die orthogonale Transformation mit überlappenden Blöcken (LOT [lapped orthogonal transform]) ersetzt wird.
  • Dokument US-A-5 590 066 schlägt ein zweidimensionales DCT-System und ein zweidimensionales IDCT-System vor, bei dem beide Elemente zum Multiplizieren, Berechnen und Neuordnen besitzen, wobei jedes dieser Elemente eingerichtet ist, um Daten in serieller Form zu empfangen, um die empfangenen Daten in ihrer seriellen Form zu verarbeiten und die Daten in einer seriellen Form auszugeben, womit Seriell-zu-Parallel-Konverter und Parallel-zu-Seriell-Konverter nicht mehr erforderlich sind.
  • „Implementing JPEG with TMS320C2xx Assembly Language Software",TEXAS INSTRUMENT APPLICATION REPORT SPRA615, Januar 2000, Seiten 1 bis 48, ist ein Anwendungsbericht von V. Shao, der sich mit der Implementierung des JPEG-Kompressions-/Dekompressionsverfahrens mit Hilfe der TMS320C2xx Assembly Language Software von Texas Instruments beschäftigt. Im Abschnitt 3.1 wird ein kurzer Überblick über die Diskrete Kosinustransformation zusammen mit einem Beispiel für das Programmieren einer zweidimensionalen 8 × 8-Diskreten Kosinustransformation im Anhang A gegeben. Darüber hinaus werden im Anhang C Tabellen für die Koeffizienten der Diskreten Kosinustransformation aufgeführt, wobei die Koeffizienten durch Integer-Zahlen dargestellt werden.
  • „An 8 × 8 Discrete Cosine Transform Implementation on the TMS320C25 or the TMS320C30", TEXAS INSTRUMENT APPLICATION REPORT SPRA115, 1990, Seiten 1 bis 25, ist ein Anwendungsbericht von W. Hohl, der sich mit einer 8 × 8-Diskreten Kosinustransformation-Implementierung mit Hilfe von TMS320C25 oder TMS320C30 beschäftigt. Insbesondere repräsentiert die Gleichung (7) auf Seite 7 ein Erstellungsschema für eine DCT-Matrix.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zum Umwandeln eines Mediendatenblocks in einer recheneffizienteren Weise ebenso wie ein entsprechendes Computer-lesbares Medium und einen entsprechenden Konverter bereitzustellen.
  • Die Aufgabe wird durch den Gegenstand der unabhängigen Ansprüche erfüllt. Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung sind in den abhängigen Ansprüchen definiert.
  • Im Folgenden werden eine Klasse einer ein- und einer zweidimensionalen Transformation, Verfahren zum Erstellen solcher Transformationen und Medienkodierungs- und Mediendekodierungssysteme, die solche Transformationen anwenden, beschrieben.
  • Die beschriebenen Transformationen besitzen Implementierungen, die auf Vorgängen der Matrixmultiplikation an Integer-Zahlen zum Erhalten einer Recheneffizienz basieren. In typischen allgemeinen und Grafikprozessoren können Vorgänge der Matrixmultiplikation an Integerzahlen viel schneller als an Gleitkommazahlen durchgeführt werden. Darüber hinaus ermöglichen eine Reihe von 32-Bit-Prozessoren gleichzeitige Multiplikationsoperationen an zwei 16-Bit-Integerzahlen. In einem exemplarischen Ausführungs beispiel werden die beschriebenen Transformationen mit Matrixmultiplikationen von 16-Bit-Integerzahlen durchgeführt. Die Implementierung der beschriebenen Transformationen mit Integerzahl-Matrixmultiplikation beschleunigt die Durchführung des Kodierens und des Dekodierens in einem Medienkodierungs-/dekodierungssystem.
  • Die beschriebenen Transformationen können mit Hilfe einer in diesem Dokument beschriebenen Erstellungsvorgehensweise konstruiert werden. Mit der Erstellungsvorgehensweise werden die Transformationen der Transformationsklasse auf Basis des Auswählens eines Satzes von Transformationskoeffizienten, die bestimmten Einschränkungen unterliegen, erstellt. Die Einschränkungen können beinhalten, dass die Transformation eine skalierte Integerzahl-Implementierung hat, dass sie eine perfekte oder nahezu perfekte Rekonstruierung gewährleistet, dass sie eine DCT-ähnliche Basis hat, dass sie auf Koeffizienten innerhalb eines Bereiches für die Repräsentation in n-Bits (zum Beispiel ist n 16 Bits) beschränkt ist und Basisfunktionen hat, die in ihren Beträgen nahezu übereinstimmen und dass sie ausreichend Headroom für einen Überlauf des Bereiches bereitstellt.
  • Durch Verwenden der beschriebenen Konstruierungsvorgehensweise gibt ein Satz von Transformationen mit 4 und 8-Punkt-Komponenten in einer Dimension Anlass zu 8 × 8-, 8 × 4-, und 4 × 4-Block-Transformationen in zwei Dimensionen. Kompressionssysteme, die auf den Transformationen basieren, die Implementierungen unter Verwendung von 16-Bit- Matrixmultiplikationen zulassen, können ein recheneffizienteres Kodieren und Dekodieren gewährleisten.
  • Zusätzliche Leistungsmerkmale und Vorteile der Erfindung werden anhand der folgenden ausführlichen Beschreibung der Ausführungsbeispiele ersichtlich, die zusammen mit den beigefügten Zeichnungen betrachtet werden sollte.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm eines Videokodierers, der auf einer in diesem Dokument beschriebenen Klasse von Transformationen basiert.
  • 2 ist ein Videodekodierer, der auf der beschriebenen Klasse von Transformationen basiert.
  • 3 ist ein Blockdiagramm, dass eine zweidimensionale Transformation darstellt.
  • 4 ist ein Datenflussdiagramm, das die Transformationskodienang unter Verwendung der beschriebenen Klasse von Transformationen mit dem in den 1 und 2 dargestellten Videokodierer und Videodekodierer illustriert.
  • 5 ist ein Blockdiagramm einer Implementierung der inversen Transformation für die beschriebene Klasse von Transformationen.
  • 6 ist ein Ablaufplan eines Prozesses zum Erstellen einer der beschriebenen Klasse von Transformationen.
  • 7 ist ein Blockdiagramm einer Implementierung der Vorwärtstransformation für die beschriebene Klasse von Transformationen.
  • 8 ist ein Blockdiagramm einer geeigneten Rechenumgebung für die in den 1 und 2 dargestellten Videokodierer/Videodekodierer, die auf der beschriebenen Klasse von Transformationen basieren.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung konzentriert sich auf eine Klasse von ein- und zweidimensionalen Transformationen zum Erhalten einer Recheneffizienz, auf Verfahren zum Erstelen solcher Transformationen, die bestimmten Kriterien unterliegen, und auf die Verwendung solcher Transformationen bei der Signalverarbeitung, und insbesondere auf Medienkompressionssysteme, die auf solchen Transformationen basieren. Eine exemplarische Anwendung der Transformation ist in einem Bild- oder Videokodierer und- dekodierer enthalten wie beispielsweise einem Kodierer und Dekodierer, der eine Variation des Microsoft Windows Media Video-(WMV) Dateiformats anwendet. Dennoch sind die Transformationen, die wie im Folgenden beschrieben erstellt werden, nicht auf dieses Format beschränkt und können ebenso auf andere Medienkodierungsformate ange wendet werden. Dementsprechend werden die Transformationen im Kontext eines allgemeinen Bild- oder Videokodierers und- dekodierers beschrieben, sie können jedoch alternativ dazu in verschiedenen Typen von Mediensignal-Kodierern und -dekodierern eingesetzt werden.
  • 1. Allgemeiner Videokodierer und -dekodierer
  • 1 ist ein Blockdiagramm eines allgemeinen Videokodierers (100), und 2 ist ein Blockdiagramm eines allgemeinen Videodekodierers (200).
  • Die Beziehungen zwischen den Modulen innerhalb des Kodierers und des Dekodierers zeigen den Hauptfluss von Informtationen in dem Kodierer und dem Dekodierer an; weitere Beziehungen sind aus Gründen der Einfachheit nicht dargestellt. Insbesondere die 1 und 2 zeigen für gewöhnlich keine Zusatzinformationen, die die Einstellungen, die Modi, die Tabellen und so weiter, die für eine Videosequenz, einen Frame, einen Makroblock, einen Block und so weiter verwendet werden, anzeigen. Solche Zusatzinformationen werden in dem Ausgangsbitstrom, typischerweise nach dem Entropiekodieren der Zusatzinformationen, gesendet. Das Format des Ausgangs-Bitstroms kann ein Windows Media Video-Format oder ein anderes Format sein.
  • Der Kodierer (100) und der Dekodierer (200) arbeiten auf Block-Basis und verwenden ein 4:2:0-Makroblock-Format, bei dem jeder Makroblock 4 8 × 8-große Luminanzblöcke (mitunter als ein 16 × 16-Makroblock behandelt) und zwei 8 × 8-große Chrominanzblöcke enthält. Alternativ dazu arbeiten der Kodierer (100) und der Dekodierer (200) auf Objekt-Basis, verwenden ein anderes Makroblock- oder Blockformat, oder führen Operation an Sätzen von Pixeln durch, die eine andere Größe oder Konfiguration als die 8 × 8-Blöcke und die 16 × 16-Makroblöcke haben.
  • Je nach Implementierung und Typ von gewünschter Kompression können Module des Kodierers oder des Dekodierers hinzugefügt, weggelassen, in eine Vielzahl von Modulen aufgeteilt, mit anderen Modulen kombiniert und/oder durch gleichartige Module ersetzt werden. In alternativen Ausführungsbeispielen führen Kodierer oder Dekodierer mit anderen Modulen und/oder anderen Modulkonfigurationen ein oder mehrere der beschriebenen Verfahren durch.
  • A. Videokodierer
  • 1 ist ein Blockdiagramm eines allgemeinen Videokodierersystems (100). Das Kodierersystem (100) empfängt eine Sequenz von Videoframes einschließlich eines aktuellen Frames (105) und erzeugt komprimierte Videoinformationen (195) als Ausgang. Bestimmte Ausführungsbeispiele von Videokodierern verwenden typischerweise eine Variation oder eine ergänzte Version des allgemeinen Kodierers (100).
  • Das Kodierersystem (100) komprimiert vorhergesagte Frames und Key-Frames. Im Sinne der geeigneten Darstellung zeigt 1 einen Pfad für Key-Frames über das Kodierersystem (100) und einen Pfad für vorwärts-vorhergesagte Frames. Viele der Komponenten des Kodierersystems (100) werden für das Komprimieren von sowohl Key-Frames als auch vorhergesagten Frames verwendet. Die genauen Operationen, die durch diese Komponenten durchgeführt werden, variieren in Abhängigkeit von dem Typ an Informationen, die jeweils komprimiert werden.
  • Ein vorhergesagter Frame [auch P-Frame, B-Frame für bidirektionale Vorhersage oder interkodierter Frame genannt] wird hinsichtlich der Vorhersage (oder der Differenz) von einem oder mehreren anderen Frames repräsentiert. Ein Vorhersagerest ist die Differenz zwischen dem, was vorhergesagt worden ist, und dem ursprünglichen Frame. Im Gegensatz dazu wird ein Key-Frame [auch I-Frame, intrakodierter Frame genannt] ohne Bezug auf andere Frames komprimiert.
  • Wenn der aktuelle Frame (105) ein vorwärts-vorhergesagter Frame ist, sagt ein Bewegungsschätzer (119) die Bewegung von Makroblöcken oder anderen Sätzen von Pixeln des aktuellen Frames (105) in Bezug auf einen Referenzframe vorher, der der rekonstruierte vorhergehende Frame (125), der in dem Frame-Speicher (120) zwischengespeichert worden ist, ist. In alternativen Ausführungsbeispielen ist der Referenzframe ein nachfolgend angeordneter Frame, oder der aktuelle Frame wird bidirektional vorhergesagt. Der Bewegungsschätzer (110) gibt als Zusatzinformationen Bewegungsinformationen (115) wie beispielsweise Bewegungsvektoren aus. Ein Bewegungskompensator (130) wendet die Bewegungsinformationen (115) auf den rekonstruierten vorhergehenden Frame (125) an, um einen bewegungskompensierten aktuellen Frame (135) zu er zeugen. Die Vorhersage ist jedoch in den seltensten Fällen perfekt, und die Differenz zwischen dem bewegungskompensierten aktuellen Frame (135) und dem ursprünglichen aktuellen Frame (105) ist der Vorhersagerest (145). Alternativ dazu wenden ein Bewegungsschätzer und ein Bewegungskompensator einen anderen Typ von Bewegungsvorhersage/Bewegungskompensation an. Ein Frequenztransformator (160) wandelt die räumlichen Bereichs-Videoinformationen in Frequenzbereich- (das heißt spektrale) Daten um. Für block-basierte Videoframes wendet der Frequenztransformator (160) eine Transformation an, die in den folgenden Abschnitten beschrieben wird und die Eigenschaften besitzt, die der Diskreten Kosinustransformation [„DCT"] ähnlich sind. In einigen Ausführungsbeispielen wendet der Frequenztransformator (160) eine Frequenztransformation an Blöcken mit räumlichem Vorhersageresten für Key-Frames an. Der Frequenztransformator (160) kann eine 8 × 8-, eine 8 × 4-, eine 4 × 8- oder eine Frequenztransformation einer anderen Größe anwenden.
  • Ein Quantisierer (170) quantisiert anschließend die Blöcke der spektralen Datenkoeffizienten. Der Quantisierer wendet eine einheitliche, skalare Quantisierung auf die Spektraldaten mit einer Schrittgröße an, die auf einer Frame-zu-Frame-Basis oder einer anderen Basis variiert. Alternativ dazu wendet der Quantisierer einen anderen Typ von Quantisierung auf die Spektraldaten-Koeffizienten wie beispielsweise eine nicht-einheitliche Vektor- oder eine nicht-adaptive Quantisierung an, oder er quantisiert direkt räumliche Bereichsdaten in einem Kodierersystem, das keine Frequenztransformationen verwendet. Zusätzlich zu der adaptiven Quantisierung kann der Kodierer (100) auch Frame-Dropping, adaptives Filtern oder andere Verfahren zur Ratesteuerung anwenden.
  • Wenn ein rekonstruierter Frame für eine anschließende Bewegungsvorhersage/Bewegungskompensation benötigt wird, führt ein inverser Quantisierer (176) eine inverse Quantisierung an den quantisierten Spektraldaten-Koeffizienten durch. Anschließend führt ein inverser Frequenztransformator (166) die Umkehrung der Operationen des Frequenztransformators (160) durch, wodurch ein rekonstruierter Vorhersagerest (für einen vorhergesagten Frame) oder ein rekonstruierter Key-Frame erzeugt wird. Wenn der aktuelle Frame (105) ein Key-Frame war, wird der rekonstruierte Key-Frame als der rekonstruierte aktuelle Frame (nicht dargestellt) verwendet. Wenn der aktuelle Frame (105) ein vorhergesagter Frame war, wird der rekonstruierte Vorhersagerest zu dem bewegungskompensierten aktuellen Frame (135) hinzugefügt, um den rekonstruier ten aktuellen Frame zu erzeugen. Der Frame-Speicher (120) führt eine Zwischenspeicherung des rekonstruierten aktuellen Frames für die Verwendung in dem nächsten Frame durch. In einigen Ausführungsbeispielen wendet der Kodierer einen deblockierenden Filter auf den rekonstruierten Frame an, um Unregelmäßigkeiten in den Blöcken des Frames adaptiv auszugleichen.
  • Der Entropiekodierer (180) komprimiert den Ausgang des Quantisierers (170) ebenso wie bestimmte Zusatzinformationen (beispielsweise Bewegungsinformationen (115), Quantisierungsschrittgröße). Typische Entropiekodierverfahren umfassen das arithmetische Kodieren, Differentialkodieren, die Huffman-Kodierung, die Lauflängenkodierung, LZ-Kodierung, Dictionary-Kodierung sowie Kombinationen der oben genannten Verfahren. Der Entropiekodierer (180) verwendet typischerweise verschiedene Kodierungsverfahren für verschiedene Arten von Informationen (beispielsweise DC-Koeffizienten, AC-Koeffizienten, verschiedene Arten von Zusatzinformationen) und kann innerhalb eines bestimmten Kodierverfahrens aus einer Vielzahl von Code-Tabellen auswählen.
  • Der Entropiekodierer (180) fügt die komprimierten Videoinformationen (195) in den Zwischenspeicher (190) ein. Ein Zwischenspeicher-Level-Indikator wird zu Bitrate-adaptiven Modulen zurückgemeldet. Die komprimierten Videoinformationen (195) werden bei einer konstanten oder relativ konstanten Bitrate aus dem Zwischenspeichert (190) entfernt und für das anschließende Streaming bei dieser Bitrate gespeichert. Alternativ dazu führt das Kodierersystem (100) ein Streaming der komprimierten Videoinformationen sofort nach der Kompression durch.
  • Vor oder nach dem Zwischenspeicher (190) können die komprimierten Videoinformationen (195) einer Kanalkodierung für die Übertragung über das Netzwerk unterzogen werden. Die Kanalkodierung kann eine Fehlerkorrektur und Korrekturdaten auf die komprimierten Videoinformationen (195) anwenden.
  • B. Videodekodierer
  • 2 ist ein Blockdiagramm eines allgemeinen Videodekodierersystems (200). Das Dekodierersystem (200) empfängt Informationen (295) für eine komprimierte Sequenz von Videoframes und erzeugt einen Ausgang einschließlich einem rekonstruierten Fra me (205). Bestimmte Ausführungsbeispiele von Videodekodierern verwenden typischerweise eine Variation oder eine ergänzte Version des allgemeinen Dekodierers (200).
  • Das Dekodierersystem (200) dekomprimiert die vorhergesagten Frames und die Key-Frames. Im Sinne der Darstellung zeigt 2 einen Pfad für Key-Frames über das Dekodierersystem (200) und einen Pfad für die vorwärts-vorhergesagten Frames. Viele der Komponenten des Dekodierersystems (200) werden für das Komprimieren von sowohl den Key-Frames als auch den vorhergesagten Frames verwendet. Die genauen Operationen, die durch diese Komponenten durchgeführt werden, können in Abhängigkeit von dem Typ von Informationen, die komprimiert werden, variieren.
  • Ein Zwischenspeicher (290) empfängt die Informationen (295) für die komprimierte Videosequenz und stellt die empfangenen Informationen dem Entropiedekodierer (280) zur Verfügung. Der Zwischenspeicher (290) empfängt typischerweise die Informationen bei einer Rate, die im Verlauf der Zeit ziemlich konstant ist, und er enthält einen Jitter-Buffer zum Ausgleichen von kurzzeitigen Abweichungen in der Bandbreite oder der Übertragung. Der Zwischenspeicher (290) kann einen Abspiel-Zwischenspeicher und andere Zwischenspeicher enthalten. Alternativ dazu empfängt der Zwischenspeicher (29) Informationen bei einer sich ändernden Rate. Vor oder nach dem Zwischenspeicher (290) können die komprimierten Videoinformationen einer Kanaldekodierung unterzogen werden und hinsichtlich Fehlererfassung und -korrektur verarbeitet werden.
  • Der Entropiedekodierer (280) führt Entropiekodierung an den entropiekodierten quantisierten Daten ebenso wie an den entropiekodierten Zusatzinformationen (beispielsweise Bewegungsinformationen, Quantisierungsschrittgröße) durch, wobei typischerweise die Umkehrung der in dem Kodierer durchgeführten Entropiekodierung angewendet wird. Entropiedekodierverfahren umfassen das arithmetische Dekodieren, das Differentialkodieren, die Huffman-Dekodierung, die Lauflängendekodierung, die LZ-Dekodierung, die Dictionary-Kodierung sowie Kombinationen der oben genannten Verfahren. Der Entropiedekodierer (280) verwendet oftmals verschiedene Dekodierverfahren für die unterschiedlichen Arten von Informationen (beispielsweise DC-Koeffizienten, AC-Koeffizienten, verschiedene Arten von Zusatzinformationen) und kann innerhalb eines bestimmten Dekodierverfahrens aus einer Vielzahl von Code-Tabellen auswählen.
  • Wenn der zu rekonstruierende Frame (205) ein vorwärts-vorhergesagter Frame ist, wendet ein Bewegungskompensator (230) Bewegungsinformationen (215) auf einen Referenzframe (225) an, um eine Vorhersage (235) des Frames (205), der rekonstruiert wird, zu erstellen. So verwendet der Bewegungskompensator (230) beispielsweise einen Makroblock-Bewegungsvektor, um einen Makroblock in dem Referenzframe (225) zu finden. Ein Framespeicher (220) speichert die vorhergehend rekonstruierten Frames für die Verwendung als Referenzframes. Alternativ dazu wendet der Bewegungskompensator einen anderen Typ von Bewegungskompensation an. Die Vorhersage durch den Bewegungskompensator ist in den seltensten Fällen perfekt, weshalb der Dekodierer (200) auch Vorhersagereste rekonstruiert.
  • Wenn der Dekodierer einen rekonstruierten Frame für die anschließende Bewegungskompensation benötigt, führt der Framespeicher (220) eine Zwischenspeicherung des rekonstruierten Frames für die Verwendung in der Vorhersage des nächsten Frames durch. In einigen Ausführungsbeispielen wendet der Kodierer einen deblockierenden Filter auf den rekonstruierten Frame an, um Unregelmäßigkeiten in den Blöcken des Frames adaptiv auszugleichen.
  • Ein inverser Quantisierer (270) führt eine inverse Quantisierung der entropiedekodierten Daten durch. Im Allgemeinen wendet der inverse Quantisierer eine einheitliche skalare Quantisierung an den entropiedekodierten Daten mit einer Schrittgröße an, die auf einer Frame-zu-Frame-Basis oder einer anderen Basis variiert. Alternativ dazu wendet der inverse Quantisierer einen anderen Typ von inverser Quantisierung an den Daten, beispielsweise eine nicht-einheitliche, Vektor- oder nicht adaptive Quantisierung an, oder führt direkt eine inverse Quantisierung der räumlichen Bereichsdaten in dem Dekodierersystem durch, das keine inverse Frequenztransformation verwendet.
  • Ein inverser Frequenztransformator (260) wandelt die quantisierten Frequenzbereichsdaten in räumliche Bereichs-Videoinformationen um. Für blockbasierte Videoframes wendet der inverse Frequenztransformator (260) eine in den folgenden Abschnitten beschriebene inverse Transformation an. In einigen Ausführungsbeispielen wendet der inverse Frequenztransformator (260) eine inverse Frequenztransformation an Blöcken mit räumlichen Vorhersageresten für Key-Frames an. Der inverse Frequenztransformator (260) kann eine 8 × 8-, eine 8 × 4-, eine 4 × 8- oder eine inverse Frequenztransformation einer anderen Größe anwenden.
  • II. Transformations-Überblick
  • 3 illustriert eine zweidimensionale Transformation 300 und eine inverse Transformation 310, die in dem in den 1 und 2 dargestellten Videokodierer und Videodekodierer verwendet werden. Die Transformation 300 und die inverse Transformation 310 sind von einer Klasse von Transformationen, die, wie im Folgenden beschrieben, bei ihrer Erstellung bestimmten Einschränkungen unterliegen.
  • Die zweidimensionale Transformation 300 wandelt einen zweidimensionalen (n × m) Block 320 mit Medieninhalt, der durch räumlich-bezogene Samples des Medieninhaltes repräsentiert wird, in einen Transformationsbereichs-Block um. So kann der Block beispielsweise ein Abschnitt eines digitalen Bild- oder eines digitalen Videoframes sein, wobei ein solcher als eine Gruppe von Farbsamples (Pixel), die in einheitlich zueinander beabstandeten Gitter-Orten positioniert sind, repräsentiert sein kann. Dies wird als räumliche Bereichs-Repräsentation des Medieninhaltes bezeichnet. Der Transformationsblock ist darüber hinaus auch aus n × m Samplen, und zwar in einer, was in diesem Dokument als Transformationsbereichs-Repräsentation bezeichnet wird, gebildet.
  • Die inverse Transformation 320 wandelt einen Block von Samples von dem Transformationsbereich zurück in den ursprünglichen oder den räumlichen Bereich um.
  • III. Transformations-basiertes Kodieren
  • Im Allgemeinen verwendet das Transformations-basierte Kodieren 400 von Medieninhalt, wie beispielsweise in dem Videokodierer und -dekodierer wie oben beschrieben, die Transformation 300 (3) und die inverse Transformation 310 (3) zusammen mit der Quantisierung, um den Medieninhalt zu einer komprimierten Form zu kodieren. Zunächst wendet die Transformations-basierte Kodierung die Transformation 300 in einer Transformationsstufe 410 auf einen Eingangsblock des Medieninhaltes für die Umwandlung zu einem Transformationsbereich an. Anschließend führt die Transformations-basierte Kodierung Quantisierung (das heißt, reduziert die Auflösung) von be stimmten Transformationsbereichs-Samplen (beispielsweise die, die eine weniger wahrnehmbare Verschlechterung des Medieninhaltes aufweisen) in einer Quantisierungsstufe 420 durch. Die quantisierten Transformationsbereichs-Samples können verwendet werden, um die komprimierte Form des Medieninhaltes zu erzeugen.
  • Die Transformations-basierte Kodierung 400 weist darüber hinaus auch eine inverse Quantisierungsstufe 430 und eine inverse Transformationsstufe 440 auf. In der inversen Quantisierungsstufe 430 führt die Transformations-basierte Kodierung ein Mapping der quantisierten Transformationsbereichs-Samples zurück zu ihrer ursprünglichen Auflösung in Vorbereitung auf die inverse Transformation 310 durch. Die Transformations-basierte Kodierung führt in der inversen Transformationsstufe inverse Transformation an den dequantisierten Transformationsbereichs-Samplen durch, um anschließend den Medieninhaltblock zu rekonstruieren.
  • Die Transformations-basierte Kodierung 400 kann an verschiedenen Stellen in dem Videokodierer- und dekodierer durchgeführt werden. So kann der Videokodierer beispielsweise auch eine Rekonstruierungsschleife mit den Stufen der inversen Quantisierung und der inversen Transformation enthalten, die bei den Verfahren der Differenzial-Kodierung und der Interframe-Kodierung verwendet wird.
  • III. Recheneffiziente Implementierung der inversen Transformation
  • Im Folgenden sind in Bezug auf 5 die Transformation 300 und die inverse Transformation 310 (3) vorzugsweise als eine Vorher-Multiplikation 510 des zweidimensionalen Datenblockes (aus räumlichen Bereichssamplen für die Transformation 300, und aus Transformationsbereichs-Samplen für die inverse Transformation) durch eine Vorher-Multiplikationsmatrix (T) und als eine Nachher-Multiplikation 530 durch eine Nachher-Multiplikationsmatrix (T') implementiert. Die Zeilen der Vorher-Multiplikationsmatrix (T) repräsentieren die Basisfunktionen der Transformation, die in der Vorher-Multiplikation 510 auf die Spalten des Datenblockes angewendet werden. Auf ähnliche Weise sind die Spalten der Nachher-Multiplikationsmatrix (T') die Basisfunktionen der Transformation, die auf die Zeilen des Datenblockes in der Nachher-Multiplikation 530 angewendet werden.
  • Um eine Recheneffizienz zu erhalten, sind die Transformationsmatrizen (T und T') sowie der Datenblock aus Integerzahlen innerhalb von Bereichen gebildet, die zulassen, dass die Matrixmultiplikationen unter Verwendung der Integer-Multiplikationsoperationen des Computer- oder des Grafikprozessors durchgeführt werden können. So ist es beispielsweise mit vielen aktuell verwendeten Prozessoren, die 16-Bit-Integer-Multiplikationsoperationen bereitstellen, der Fall, dass die Matrizen vorzugsweise aus Integerzahlen innerhalb eines Bereiches gebildet sind, der zulässt, dass die Matrixmultiplikationen unter Verwendung der 16-Bit-Integer-Multiplikationsoperationen durchgeführt werden können. Alternativ dazu können die Matrizen aus Integerzahlen in kleineren oder größeren Bereichen für die Prozessoren gebildet sein, die Integer-Multiplikationsoperationen von Integerzahlen anderer Größenordnungen bereitstellen.
  • Durch die Vorher-Multiplikation und die Nachher-Multiplikation des Datenblockes durch die Basisfunktionen der Transformation, die aus Integerzahlen gebildet sind, werden die resultierenden Datenblockwerte in einem größeren Bereich erzeugt. Die Implementierung 500 kompensiert diese Vergrößerung durch die Basisfunktions-Multiplikation, die die Skalierungsoperationen 520, 540 jeweils nach der Vorher-Multiplikation und nach der Nachher-Multiplikation verwendet. Um eine Recheneffizienz zu erhalten, sind die Skalierungsoperationen 520, 540 vorzugsweise Verschiebungsoperationen (die eine Teilung durch eine Zweierpotenz bewirken), die jeweils die Werte einer Anzahl von Bitpositionen S1 und S2 verschieben.
  • In der illustrierten Implementierung 500 sind die Werte in dem Datenblock Integerzahlen, die jeweils beim Eingang und dem Ausgang der Vorher-Multiplikation 510, der Skalierung 520, der Nachher-Multiplikation 530, der Skalierung 540 Bitgrößen haben, die jeweils als A bis E repräsentiert werden. So sind beispielsweise die Werte des Datenblockes an dem Eingang der Vorher-Multiplikationsstufe 510 Integerzahlen, die eine Größe von A-Bits aufweisen.
  • Es ist ein zugrundeliegendes Prinzip in der Ausführung dieser Transformation, dass ihre Implementierung 500 als Paar aus Vorwärts- und inverser Transformation ausgeführt ist, wobei die Letztere in Integer-Arithmetik beschränkter Präzision implementiert ist, bei der die inverse Transformation sicherstellt, dass ein bedeutungsvolles Ergebnis für die Ein gangsdaten erzeugt wird, die durch den entsprechenden Vorwärtstransformationsprozess (unterliegt gültiger Quantisierung und Dequantisierung) erzeugt worden sind.
  • IV. Transformations-Erstellung
  • Die recheneffizienten Transformationen werden durch Auswählen von Koeffizientenwerten für die Basisfunktionen der Transformation (das heißt die Werte in der Vorher-Multiplikationsmatrix T und in der Nachher-Multiplikationsmatrix T'), die bestimmten Beschränkungen unterliegen, welche im Folgenden beschrieben werden, erstellt. Dieses Konstruierungsverfahren kann eine Reihe von beschränkten, orthogonalen oder biorthogonalen Transformationen hervorbringen.
  • Beschränkungen.
  • Skalierte Integer-Implementierung. Die Transformationskoeffizienten sind Integerzahlen mit einer möglichen Skalierung durch eine Zweierpotenz. Dadurch wird die Implementierung auf einem Standardcomputer erleichtert.
  • Perfekte Rekonstruierung. Bei Nicht-Vorhandensein von Quantisierung (beispielsweise der in 4 dargestellten Quantisierungs- und inversen Quantisierungsstufe 420, 430) führt die inverse Transformation eine perfekte Rekonstruierung der ursprünglichen räumlichen Bereichsdaten aus den durch die Transformation erzeugten Transformationsbereichsdaten durch. Die erste Anforderung für eine Transformation, die zum Komprimieren von Daten verwendet wird, besteht darin, dass die Vorwärts- und die inverse Transformation bei Nicht-Vorhandensein von Quantisierung und Runden ein Paar für eine perfekte Rekonstruierung bilden. Dies kann durch Orthonormalität oder Bi-Orthonormalität gewährleistet werden. In dem ersteren Fall sind die Vorwärts- und die inverse Transformation einander identisch, wobei sie sich in dem letzteren Fall voneinander unterscheiden.
  • DCT-ähnliche Basis. Die Transformation und die inverse Transformation besitzen Eigenschaften, die der Diskreten Kosinustransformation (DCT) ähnlich sind. Um eine gute Leistung beim Kodieren zu erhalten, wird es bevorzugt, dass die Transformation mit der DCT annähernd übereinstimmt. Die DCT ist dafür bekannt, dass sie günstige Energie verdichtungseigenschaften besitzt, die in einer nahezu optimalen Datenkompression resultieren. Die DC-Basisfunktion der DCT ist ein konstanter Wert. Dies beschränkt die Transformationskoeffizienten der Nullten" Basis dahingehend, dass sie konstante Werte besitzen.
  • Bereich. Der Bereich der Datenwerte und der Transformationskoeffizienten ermöglicht eine Implementierung unter Verwendung von recheneffizienten Integer-Multiplikationsoperationen auf dem Zielcomputer- oder Grafikprozessor (beispielsweise in 16-Bit-Integer-Operationen). In einem bevorzugten Ausführungsbeispiel, sind die Werte auf einen Bereich beschränkt, der eine 16-Bit-Implementierung der inversen Transformation ermöglicht. In dieser Implementierung ist die 16-Bit-Integer-Operation eine arithmetische Operation an Integerzahlen, die mit einem 16-Bit-Akkumulator durchgeführt werden kann und die Modulo- oder Rollover-arithmetisch auf die Basis 216 signiert werden kann, das heißt ein Akkumulator mit einem Datenbereich von [–32768 ... 32767]. Die Multiplikation von zwei 16-Bit-Zahlen resultiert in lediglich den niederwertigen 16 Bits des erhaltenen Produkts. Alternativ dazu kann der Bereich für andere Zielplattformen, die eine andere Bitgröße der Integer-Operationen unterstützen, variieren.
  • Die Multiplikation der Samples in dem Datenblock durch die Transformations-Basisfunktionen bewirkt eine Erweiterung des Bereichs, der mit der Anzahl von Samplen (Punkten) in der Transformations-Basisfunktion variiert. In Videokompressionssystemen werden zweidimensionale (N × M-Punkte) Transformationen von 8 × 8-, 4 × 8-, 8 × 4- und 4 × 4-Punkten gemeinsam verwendet. Zwischen der 4- und der 8-Punkt-Transformation, platziert die 8-Punkt-Transformation die strikteren Beschränkungen auf den Bereich der Integer-Transformationskoeffizienten. Dies geschieht deshalb, da die mit der N-Punkt-Transformation assoziierte Erweiterung größer als die mit der M-Punkt-Transformation assoziierte Erweiterung ist, wenn N > M ist. Der DC-Wert erweitert sich als √N für eine N-Punkt-Transformation. Dementsprechend betrachten wir zunächst die 8-Punkt-Transformation, da sie die strikteren Beschränkungen repräsentiert.
  • So ist beispielsweise ein gemeinsamer Bereich für die Samples des räumlichen Bereichsdatenblocks in Videokompressionssystemen [–255 ... 255], von dem die Auflösung 9-Bits ist. Für solche 9 Bits, die entsprechend einem Bereich von [–255 ... 255] eingegeben werden, kann die 8 × 8-Transformation Werte in dem Bereich von [–2047 2047] an nehmen, wobei eine Auflösung von 12 Bits erforderlich wird. Tatsächlich resultiert jede 8-Punkt-Transformation in einer Erweiterung von 1,5 Bits. Für eine zweidimensionale Transformation wird eine 8-Punkt-Transformation zwei Mal angewendet, wobei Zeilen-Transformationen in der Vorher-Multiplikationsstufe 510 (5) und die Spalten-Transformationen in der Nachher-Multiplikationsstufe 530 (5) so durchgeführt werden, dass die resultierenden Transformationsbereichs-Samples durch 3 Bits erweitert werden (zu einer 12-Bit-Auflösung).
  • Anhand eines noch spezielleren Bezuges auf 5 wird ersichtlich, dass der Eingangs-Transformationsbereichs-Datenblock beim Eingang A für die inverse Transformation in einem exemplarischen Ausführungsbeispiel einen Bereich von 12 Bits hat, wobei der rekonstruierte räumliche Bereichsdaten-Block beim Ausgang E einen Bereich von 9 Bits hat. Zwei inverse Transformationsoperationen (Vorher-Multiplikation 510 und Nachher-Multiplikation 530) veranlassen eine Skalierung oder eine Bereichserweiterung von ITI2, die durch zwei Verschiebungen von jeweils s1-Bits und s2-Bits kompensiert wird. Dies erfordert, dass die Bereichserweiterung, die durch die Transformationen veranlasst wird, der ausgleichenden Skalierung annähernd gleich ist, beziehungsweise, dass ITI2 ≈ 2(s1 + s2) ist. Angenommen, die Transformationsmatrix (T) ist eine normalisierte Matrix (bei der T1 = T/ITI), dann liegt der dynamische Bereich des resultierenden Datenblockes (B = T × A) nach der Vorher-Multiplikation ungefähr bei 10,5 Bits. Der resultierende Datenblock (B) hat demzufolge einen Bereich von 10,5 + log2(ITI) Bits. Auf die gleiche Weise besitzt der Datenblock (D = C × T') der Nachher-Multiplikation einen Bereich von 9 + 2 × log2 (ITI) – s1 Bits. Um eine recheneffiziente Implementierung der inversen Transformation unter Verwendung von 16-Bits-Integer-Operationen zu erhalten, sind die folgenden Relationen erforderlich (wobei log2(ITI) mit L bezeichnet wird): 10,5 + L <= 16 (1) 9 + 2L – s1 <= 16 (2) 2L ≈ s1 + s2 (3)
  • Daraus ergibt sich, dass (9 + m <= 16), das heißt m = 6; und L <= 5,5 oder ITI <= 2048 ist.
  • Wenn darüber hinaus die DC-Basisfunktion der inversen Transformation durch [d d d d d d d d] dargestellt ist, erfordert die Bereichsbeschränkung, dass 8 d2 <= 2048, oder d <= 16 ist.
  • Beträge der Basisfunktionen. Die Beträge der Basisfunktionen für die Transformation stimmen nahezu miteinander überein.
  • In allgemeinen orthogonalen und bi-orthogonalen Integer-Transformationen ist es zugelassen, dass unterschiedliche Zeilen der Transformationsmatrix T entsprechend unterschiedlichen Basisfunktionen unterschiedliche Beträge haben. Der Gedanke hinter dieser Flexibilität ist der, dass die Auswirkung einer Ungleichheit zwischen den Beträgen während der Quantisierung und der inversen Quantisierung für die Vorwärts- und die inverse Transformation annulliert werden kann. In der Praxis stellt die Normalisierung zwei Schwierigkeiten dar – (1) durch Normalisierung wird insbesondere die Dekodierer-Seite komplexer und (2) es sei denn, die Normalisierungs-Faktoren sind kleine Integerzahlen, wird die Normalisierung für eine kurze Integerzahl- (16 Bit) Implementierung unmöglich.
  • Wenn es erforderlich ist, dass die Beträge aller Basisfunktionen übereinstimmen, wird eine zusätzliche erneute Normalisierung nicht notwendig. Eine beliebige Normalisierungs-Bedingung kann in eine inverse Quantisierung gebracht werden. Die Auswirkung von Quantisierung von Werten kann in diesem Prozess ein wenig verschoben werden (das heißt der Rate-Distortion-Punkt eines bestimmten Quantisierungspunktes (QP) kann sich weg bewegen, jedoch entlang der Rate-Distortion-(R-D) Kurve von seinem ursprünglich berechneten Wert, das heißt unter Verwendung einer normalisierten Transformation absoluter Präzision).
  • Wird eine 4- und 8-Punkt-Transformation durchgeführt, trifft dieselbe Logik zu. Es kann erforderlich sein, dass die Beträge aller Basisfunktionen, egal ob 4- oder 8-Punkt, übereinstimmen müssen, so dass die Normalisierung wegfallen kann. In der Praxis ist es für beachtlich kleine Integer-Basen unmöglich, einen Satz von Transformationskoeffizienten zu finden, der einer Beschränkung unterliegt, bei der alle Beträge sämtlicher Basisfunktionen übereinstimmen. Die Beschränkung hierbei lässt einen geringen Grad von Flexibilität durch Zulassen von nur denjenigen Basisfunktionen zu, von denen die Beträge annähernd übereinstimmen.
  • Headroom. Obgleich in einer Implementierung der Bereich des gültigem Eingangs (der räumliche-Bereichsdatenblock) zu der Vorwärtstransformation bei 9 Bits liegt, besteht die Möglichkeit, dass der rekonstruierte Datenblock nach der Quantisierung (Stufe 420 in 4) einen Überlauf über oder unter den Bereich +255 bis –255 erfährt. Die Implementierung der kurzen Integerzahl muss dies notwendigerweise berücksichtigen, indem sie ausreichend Headroom für solche Situationen verfügbar hat.
  • Zusammenfassend erstellt die in diesem Dokument beschriebene Konstruierungsvorgehensweise Transformationen, die den folgenden Beschränkungen unterliegen: (1) skalierte Integer-Implementierung, (2) Orthonormalität oder perfekte Rekonstruierung; (3) DCT-ähnliche Basis für Energieverdichtung und (4) beschränkter Bereich für eine Integer-basierte Implementierung (beispielsweise in 16-Bit-Integer-Operationen). Für einen jeweils gegebene Bereichsbeschränkung erweist es sich als schwierig, alle der oben genannten Beschränkungen zu erfüllen. Als ein bestimmtes Beispiel, ist es nicht möglich, eine solche Transformation zu erstellen, die die ersten drei der genannten Beschränkungen erfüllt und darüber hinaus auch noch eine Bereichsbeschränkung auf 16 Bits erfüllen soll. Mit dem im Folgenden beschriebenen Konstruierungsprozess werden effiziente, Bereichs-beschränkte Transformationen durch ein leichtes Lockern einer oder mehrerer Beschränkungen (beispielsweise durch Lockern der Orthonormalitäts-Beschränkung in der illustrierten Transformations-Implementierung) erzeugt. In der dargestellten Transformations-Implementierung wird von dem Transformations-Paar lediglich erfordert, dass es orthogonal ist, währenddessen die Beträge leicht voneinander abweichen können. Diese zusätzliche Flexibilität erweitert den Suchbereich für Transformationen, wodurch das Konstruieren effizienter Bereichs-beschränkter Transformationen machbar wird, die wiederum die anderen Beschränkungen erfüllen. Wie im weiteren Verlauf diskutiert wird, kann die Auswirkung der leichten Ungleichheit in den Beträgen durch eine erneute Normalisierung während der Quantisierungsstufe annulliert werden. Mit der erneuten Normalisierung, die in der Quantisierungsstufe implementiert wird, wird die resultierende Zunahme an Komplexität lediglich im Kodierer bewirkt. Dadurch wird die Komplexität des gesamten Systems insgesamt erheblich reduziert, währenddessen die Effizienz bei der Kompression aufrechterhalten wird.
  • Konstruierung.
  • Im Folgenden wird in Bezug auf 6 ein Prozess 600 zum Konstruieren einer recheneffizienten Transformation, die diesen Beschränkungen unterliegt, ersichtlich, und der einen Satz von orthogonalen Transformationskoeffizienten für die Matrizen der Vorher-Multiplikation und der Nachher-Multiplikation (T und T') für die in 5 dargestellte Transformations-Implementierung erzeugt. Einige der Toleranzschwellenwerte, die in dieser Konstruierungs-Vorgehensweise zum Erstellen dieser exemplarischen recheneffizienten Transformations-Implementierung verwendet werden, sind beliebig gewählt und können noch weiter gelockert werden, um weitere Lösungen zu erzielen. Obgleich festzuhalten gilt, dass aufgrund solcher gelockerten Schwellenwerte solche alternativen Transformations-Implementierungen eine schlechtere Kodierungs-Leistung aufweisen können.
  • Ein exemplarischer Satz von recheneffizienten Transformationen, der unter Verwendung dieses Prozesses 600 konstruiert wird, enthält zweidimensionale Transformationen, die 4 und 8-Punkt-Basisfunktionen verwenden. Auf Basis der 4- und 8-Punkt-Basisfunktionen werden Transformationsmatrizen für 8 × 8-, 4 × 8-, 8 × 4- und 4 × 4-Transformationen erzeugt. Alternativ dazu kann der Konstruierungsprozess jedoch auch so variiert werden, dass Transformationen mit Basisfunktionen erzeugt werden, die eine andere Anzahl von Punkten oder Blockdimensionen aufweisen.
  • Ein erster Schritt 610 in dem Konstruierungsprozess 600 besteht darin, den konstanten Faktor der DC-Basisfunktion zu finden. Für die 4-Punkt- und die 8-Punkt-Basisfunktionen werden die konstanten Faktoren jeweils mit d4 und d8 bezeichnet. Gemäß der Beträge-Beschränkung, die voranstehend diskutiert wurde, werden diese konstanten Faktoren in der folgenden Relation dargestellt: d4 ≈ √2d8, so dass d8 ≤ 16 ist. Die einzigen Integer-Paare {d4, d8}, die diese Beträge-Beschränkung innerhalb von ungefähr 1 % erfüllen sind {7, 5}, {10, 7}, {17, 12} und {20, 14}. Für die 8-Punkt-Transformation ist der Betrag im Quadrat der DC-Basis 8d8 2. Die zulässigen 8-Punkt-Beträge im Quadrat für die DC-Basis mit diesen Integer-Paaren sind demzufolge 200, 392, 1152 und 1568.
  • Ein zweiter Schritt 620 in dem Konstruierungsprozess 600 besteht darin, die ungeraden Basisfunktionen (auch als die ungeraden „Frequenzen" bezeichnet) der Transformation zu bestimmen. In Übereinstimmung mit der „DCT-ähnlichen Basis"-Beschränkung, die voranstehend diskutiert wurde, sollten die Transformationen Eigenschaften haben, die der DCT-Transformation ähnlich sind, die für die 8-Punkt-DCT-Transformation die folgenden ungeraden Basisfunktionen hat:
    Figure 00220001
  • Vier konstante Faktoren bestimmen diese ungeraden Basisfunktionen der 8-Punkt-DCT. Aufgrund der Struktur der Basen können die Faktoren C1, C2, C3 und C4 zum Ersetzen der eindeutigen absoluten Koeffizienten verwendet werden, wodurch die folgende Basis entsteht:
    Figure 00220002
  • Die Konstruierung fährt mit dem Durchsuchen des Raumes {C1, C2, C3, C4} fort, wobei die folgenden Bedingungen gelten:
    • 1. Orthogonalität der Basis. Orthogonalität der ungeraden Bedingungen mit geraden Frequenzbedingungen ist in Anbetracht der komplementären Struktur gerader Frequenzen implizit. Aus diesem Grund reduziert sich diese Bedingung auf Orthogonalität der ungeraden Basisfunktionen.
    • 2. DCT-ähnliche Basis. Der Vektor [C1, C2, C3, C4] korreliert „gut" mit dem entsprechenden DCT-Koeffizienten-Vektor [0,4904 0,4157 0,2778 0,0975]. Die Korrelation wird durch den Kosinus des Winkels zwischen den Vektoren gemessen und ist wünschenswerterweise so nahe wie möglich bei 1. Es können ebenso andere Messungen für die Korrelation verwendet werden.
    • 3. Die Beträge der ungeraden Basen stimmen annähernd mit dem DC-Betrag überein. Dies kann wie folgt ausgedrückt werden: C1 2 + C2 2 + C3 2 + C4 2 ≈ einer von {100, 196, 576, 784}
  • Innerhalb einer Toleranz von 5 % des Betrages (Bedingung 3) und der zulässigen Korrelation „Kosinus" von 0,99 (Bedingung 2) ist nur ein Satz von Integerkoeffizienten vorhanden, der die Beschränkungen für die ungeraden 8-Punkt-Basisfunktionen erfüllt.
  • Dieser Satz ist [16 15 9 4] und hat einen Betrag von 578, der definitiv nahe bei dem gewünschten Betrag von 576 liegt. Die Korrelation ist eine günstige und beträgt 0,9984.
  • Ein dritter Schritt 630 des Konstruierungsprozesses besteht darin, die geraden Basisfunktionen oder die geraden Frequenzen für die Transformation zu bestimmen. Erneut sollten gemäß der Beschränkung der DCT-ähnlichen Basis die geraden Basisfunktionen gut mit denen der DCT-Transformation korrelieren. Für die 8-Punkt-DCT-Transformation werden die geraden Basisfunktionen wie folgt ausgedrückt:
    Figure 00230001
  • Die Betragsbeschränkung auf den Frequenzen 2 und 6 wird durch C5 2 + C6 2 ≈ 288 ausgedrückt. Das Integerpaar {16, 6} erfüllt diese Betragsbeschränkung innerhalb von ungefähr 1 %.
  • Die resultierende 8-Punkt-Transformationsmatrix (unter Verwendung der in den Schritten 2 und 3 bestimmten Integerkoeffizienten) ist die folgende:
    Figure 00230002
  • Ein vierter Schritt 640 des Konstruierungsprozesses 600 erzeugt die 4-Punkt-Transformation. Für die 8-Punkt-Transformation, die wie oben beschrieben erstellt wurde (Schritte 610 bis 630), ist der konstante Faktor der DC-Basisfunktion de = 12. Der konstante Faktor für die 4-Punkt-Transformation ist demzufolge d4 = 17. Für eine DCT-ähnliche Basis ergibt sich, dass die Koeffizienten D1 und D2 in den folgenden Basisfunktionen zu erzeugen sind:
    Figure 00240001
  • Die Matrix mit oben beschriebenen Basisfunktionen ist inhärent orthogonal für eine beliebige Auswahl von D1 und D2. Gemäß der Beschränkung der DCT-ähnlichen Basis werden die Koeffizienten jedoch durch den DCT-Twiddle-Factor ins Verhältnis gesetzt (das heißt das Verhältnis D1/D2), wobei dieser √2 + 1 entspricht. Darüber hinaus unterliegen die Koeffizienten der Betragsbeschränkung D12 + D22 ≈ 578. Ein Integerpaar, das die Beschränkung der Orthogonalität, die Beschränkung der DCT-ähnlichen Basis und die Beschränkung des Betrages innerhalb bis zu ungefähr 1 % erfüllt, ist das Integerpaar {22, 10}. Daraus ergeben sich die folgenden Basisfunktionen für die 4-Punkt-Transformation:
    Figure 00240002
  • V. Transformations-Implementierung (Fortsetzung)
  • Unter nochmaliger Bezugnahme auf 5 definieren die Transformationsmatrizen, die unter Verwendung des oben beschrieben Konstruierungsprozesses erzeugt werden, die Transformationen maßgeblich. Für eine zweidimensionale Transformation werden die Basisfunktionen in jeder Dimension auf den Sample-Datenblock angewendet. In der illustrierten Transformations-Implementierung 500 werden die Basisfunktionen in der Vorher-Multiplikation 510 auf Zeilen des Sample-Datenblockes angewendet und anschließend in der Nachher-Multiplikation 530 auf Spalten des Sample-Datenblockes. Da die Transformation so konstruiert ist, dass sie orthogonal ist, werden die identischen Transformationsmatrizen für die Vorwärts- 300 und für die inverse Transformation 310 verwendet. Mit den Transformations-Basisfunktionen mit nicht-einheitlichen Beträgen, enthält die illustrierte Transformations-Implementierung darüber hinaus auch Skalierungsstufen 520 und 540 bei der inversen Transformation, um die Bereichserweiterung zu kompensieren, die durch die Transformationen verursacht worden ist. Solch ein Be reichs-beschränkende Transformation kann auch für die Vorwärtstransformation verwendet werden, jedoch ist im Kontext des Videokodierens das Beschränken des Bereiches bei der Vorwärtstransformation oftmals redundant. Da der Kodierungsprozess langsamer von statten geht als der Dekodierungsprozess, und da die verfügbaren Rechenressourcen in dem Kodierer oftmals eine Größenordnung höher als die im Dekodierer sind, kann der Kodierer im höherem Präzisions- (beispielsweise 32 Bit) Integer oder sogar doppeltem Präzisions-Gleitkomma implementiert sein. Dementsprechend betrachtet die folgende Diskussion zunächst eine exemplarische Implementierung der inversen Transformation unter Verwendung der oben beschriebenen Transformationsmatrizen.
  • Implementierung der Inversen Transformation
  • Bei der Transformations-Implementierung 500, werden, wie voranstehend beschrieben wurde, die Zeilen des Transformationsbereichs-Datenblockes (den wir in der folgenden Diskussion als D bezeichnen) in der Vorher-Multiplikationsstufe 510 inverser Transformation unterzogen, indem eine Matrixmultiplikation mit der Transformationsmatrix der geeigneten Größe (beispielsweise die oben stehende Matrix T8 für einen 8 × 8-Datenblock) durchgeführt wird. Die Spalten des Transformationsbereichs-Datenblockes werden in der Nachher-Multiplikationsstufe 530 durch eine Matrixmultiplikation ebenfalls mit der Transformationsmatrix inverser Transformation unterzogen. Diese Reihenfolge kann zwar umgekehrt werden, würde jedoch dann zu einer Ungleichheit führen. Die Transformationsmatrix für die Vorher-Multiplikations- und die Nachher-Multiplikationsstufen ist die, die wie oben beschrieben konstruiert wurde.
  • Für die Skalierungsstufen 520 und 540 wird das Skalieren in der exemplarischen Transformations-Implementierung bestimmt, indem es der oben beschriebenen Beschränkung der skalierten Integerimplementierung unterliegt (das heißt, die Skalierung erfolgt bei einer Zweierpotenz, um die Berechnung auf einem Standardsystem- und einem Grafikprozessor zu ermöglichen). Dementsprechend wird die Skalierung als die Zweierpotenz ausgewählt, die dem Betrag im Quadrat der Basisfunktion der Transformationsmatrix am nächsten ist.
  • Genauer gesagt, kann die vorschriftsmäßige Formel für die inverse Transformation wie folgt dargestellt werden:
    Figure 00260001
    wobei D den Transformationsbereichs-Datenblock an dem Eingang (A) zu der inversen Transformation bezeichnet. In der folgenden Diskussion stellt D1 den Datenblock-Ausgang von der ersten Multiplikationsstufe 510 der Transformations-Implementierung 500 dar, und R stellt den rekonstruierten Ausgang nach der zeilen- und spaltenweisen inversen Transformation dar. Der Nenner s ist der Skalierungsfaktor. D, D1 und R sind isomorphische 8 × 8-, 8 × 4- oder 4 × 8-Matrizen. Entgegen der üblichen mathematischen Darstellungsart sind die Operationen, die eine Matrix und einen Skalar verwenden, einträgeweise Operationen an der Matrix sind. Auf die gleiche Weise sind skalare Operationen mit einem Matrixargument einträgeweise skalare Operationen an der Matrix.
  • Der Nenner s wird als die Zweierpotenz ausgewählt, die dem Betrag im Quadrat der Basisfunktionen am nächsten ist. Für die 8 × 8-Transformation sind die Werte der Beträge im Quadrat der eindimensionalen 8-Punkt-Basisfunktionen {1152, 1156, 1168}. Aus diesem Grund wird der Nenner mit 1024 (das heißt, s = 1024) ausgewählt, der die Zweierpotenz ist, die diesen Werten der Beträge im Quadrat am nächsten ist. Da das Verhältnis zwischen den eigentlichen Beträgen und diesem Nenner (das heißt, Beträge/s ≈ 1,12) nahe bei 1 ist, besteht eine enge Übereinstimmung zwischen dem Quantisierungsparameter, der für die Standard-IDCT und dem, der für die illustrierte Transformations-Implementierung verwendet wird. Hierbei wird kein zusätzlicher Fehler hervorgerufen, da die gesamte verbleibende Normalisierung (im Wesentlichen durch 1024/Betrag im Quadrat der Basisfunktion) in dem im Folgenden beschriebenen Vorwärtstransformationsprozess durchgeführt wird.
  • Gemäß der oben geführten Diskussion zu der Bereichsbeschränkung hat der Transformationsbereichs-Datenblock D an dem Eingang der inversen Transformation in der illustrierten Transformations-Implementierung einen Bereich von 12 Bits. (Aufgrund der Normalisierung wird der Bereich des Transformationsbereichs-Datenblockes, der von der Vorwärtstransformation erzeugt wird, tatsächlich auf ± 2048/1,12 reduziert.) Die vorschriftsmäßige Zwischenmatrix (nach der inversen Transformation in einer Dimension) ist
    Figure 00260002
    und hat einen Bereich von etwas weniger als 10,5 Bits.
  • In einer inversen Transformations-Implementierung 500 können die Skalierungsstufen 520 und 540 jeweils die Datenblockwerte um 5 Bitstellen (effektiv eine Division durch 32) abrunden oder verschieben, wodurch insgesamt eine Verschiebung um 10 Bitstellen (für eine Division durch 1024) erreicht wird. Dadurch werden die Bereichsbeschränkungen in den Multiplikationsstufen 510 und 530 innerhalb eines 16-Bit-Bereichs aufrechterhalten.
  • Eine alternative Implementierung bewahrt arithmetische Präzision für die zweite, die Nachher-Multiplikationsstufe, indem die Menge des Skalierens und des Rundens in der ersten Skalierungsstufe 520 reduziert wird. Da der Ergebnis-Datenblock D1 nach der ersten Multiplikationsstufe einen Bereich von 10,5 Bits verwendet, und die 8-Punkt-Transformation den Bereich um 4 Bits erweitert, kann höchstens 1 Bit weniger des Skalierens in der ersten Skalierungsstufe zugelassen werden, um die 16-Bit-Bereichsbeschränkung in beiden Multiplikationsstufen einzuhalten. Demzufolge kann die alternative Implementierung eine Verschiebung um 4 Bits in der ersten Skalierungsstufe 520 und eine Verschiebung um 6 Bits in der zweiten Skalierungsstufe 540 bewirken. Die vorschriftsmäßige Darstellung der Transformation lautet nun:
    Figure 00270001
  • Diese alternative Implementierung lässt zu, dass ein zusätzlicher Präzisionsbit an D1 einbehalten wird. Die gleiche Skalierung kann für die 4-Punkt-Transformation verwendet werden, da der größte Faktor in der 4-Punkt-Transformationsmatrix immer noch, obgleich sehr knapp, innerhalb des verfügbaren Headrooms (4,5 Bits) liegt.
  • Zum Einbehalten eines zweiten zusätzlichen Präzisionsbits an dem Zwischen-Datenblock D1, zerlegt eine weitere alternative Implementierung die Transformationsmatrix wie folgt: T8 = 2·T8 0 + T8 0 T4 = 2·T4 c + T4 0
  • Hierbei können die Matrizen der ungeraden Komponenten T8 0 und T4 0 lediglich die Werte 0, 1 und –1 als Einträge haben. Da die meisten der Einträge von T8 gerade sind, ist T8 0 eine Matrix mit leerem Bereich. Auf die gleiche Weise hat T4 0 eine Struktur die in hohem Maße mit T4 C korreliert. Die vorschriftsmäßige Darstellung dieser weiteren alternativen inversen Transformations-Implementierung wird nun wie folgt definiert:
    Figure 00280001
  • Die erste Skalierungsstufe 520 bewirkt nun eine Verschiebung nach unten um lediglich 3 Bits, wobei ein extra Präzisionsbit für die zweite Multiplikationsstufe 530 einbehalten wird. Da die gerade Komponente die Hälfte des Bereiches von T8 hat, und da die ungerade Komponente T8 0 darauf beschränkt ist, 0, 1 und –1 als Einträge zu haben, besitzt der resultierende Zähler eine Beschränkung des Bereichs auf 16 Bits. Es gibt eine geringfügige Rechenstrafe, die für den zusätzlichen Präzisionsbit an D1 zu entrichten ist. Nichtsdestotrotz resultiert diese Zerlegung der Transformationsmatrix in einer verbesserten arithmetischen Genauigkeit zu verschwindend geringen Kosten.
  • In anderen alternativen Implementierungen kann die Transformation T im allgemeineren Sinne in Komponenten-Transformationsmatrizen Ta und Tb zerlegt werden, die in Bezug zu der Transformationsbasis T als T = 2x × Ta + Tb stehen. Die Gleichung der Transformation
    Figure 00280002
    kann dann definiert sein als:
    Figure 00280003
  • Diese Gleichung kann unter Verwendung der Matrixmultiplikations- und Verschiebungsoperation wie folgt implementiert werden: D·Ta + ((D·Tb) >> x)) >> (y – x).
  • In nochmaligem Bezug auf die bestimmte alternative Implementierung der Transformation T8 werden die ungeraden und die geraden Komponenten der 8-Punkt-Transformation wie untenstehend dargestellt:
    Figure 00290001
  • Hierbei ist zu beachten, dass T8 0 lediglich zwei eigenständige nicht-Null-Spalten hat. Nachher-Multiplikation durch T8 0 ist gleichbedeutend mit kaum zwei Additionen (und Negationen): W × T8 0 = [W1 W2 W2 W1 – W1 – W2 – W2 – W1]wobei
    Figure 00300001
  • Die geraden und die ungeraden Komponenten der inversen 4-Punkt-Transformation sind:
    Figure 00300002
  • In dieser weiteren alternativen Implementierung führt die zeilenweise oder die Vorher-Multiplikationsstufe 510 und die erste Skalierungsstufe 520 die folgende Operation für die inverse 8 × 8-Transformation durch: D1 = (D × T8 + 4) >> 3
  • Die spaltenweise oder die Nachher-Multiplikationsstufe 530 und die Skalierungsstufe 540 in dieser inversen Transformations-Implementierung ist zunächst durch Berücksichtigung der ungeraden Komponente von T8 zum Berechnen der zwei gemeinsamen Zeilen von 8 Elementen definiert. Diese werden um ein Bit nach rechts verschoben und anschließend zu dem geraden Komponentenprodukt hinzugefügt (oder von ihm subtrahiert), bevor das Ergebnis um 6 Bits nach unten abgerundet wird. Die Operationen, die in diesen Stufen durchgeführt werden, werden dementsprechend wie folgt ausgedrückt:
    Figure 00310001
  • Für die inverse 4 × 8-Transformation in der weiteren alternativen Implementierung (die sich entsprechend der in diesem Dokument verwendeten Konvention auf eine Gruppe mit 4 Spalten und 8 Zeilen bezieht) führen die zeilenweise oder die Vorher-Multiplikationsstufe 510 und die Skalierungsstufe 520 eine 4-Punkt-Operation durch, die folgendermaßen definiert wird: D1 = (D × T4 + 4) >> 3
  • Für den zweiten Teil der Transformation ist die spaltenweise oder die Nachher-Multiplikationsstufe 530 und die Skalierungsstufe 540 identisch mit der für die inverse 8 × 8-Transformation, die soeben beschrieben worden ist.
  • Für die inverse 8 × 4-Transformation arbeitet die weitere alternative Implementierung in der zeilenweisen Stufe 510 und in der Skalierungsstufe 520 an den 4 Zeilen/8 Spalten der Transformationsbereichs-Daten entsprechend der folgenden Gleichung: D1 = (D × T8 + 4) >> 3
  • Die inverse 4-Punkt-Transformation für die spaltenweise Stufe 530 und die Skalierungsstufe 540 wird wie untenstehend definiert:
    Figure 00320001
  • Für die inverse 4 × 4-Transformation werden die Stufen 510, 530 der inversen 4 × 4-Transformation wie oben beschrieben jeweils für die zeilenweise Stufe 510 der inversen 4 × 8-Transformation und für die spaltenweise Stufe 530 der inversen 8 × 4-Transformation durchgeführt.
  • Implementierung der Vorwärtstransformation
  • Bei der Vorwärtstransformation können auch Implementierungen mit Bereichsbeschränkung, so wie die in 5 dargestellten, einschließlich Skalierungsstufen angewendet werden, in dem Kontext der Videokodierung ist eine solche Vorgehensweise jedoch oftmals redundant. Da der Kodierungsprozess langsamer von statten geht als das Dekodieren und die verfügbarem Rechenressourcen im Kodierer oftmals eine Größenordnung höher als die in dem Dekodierer sind, kann der Kodierer in Integern höheren Präzision (beispielsweise 32 Bit) oder sogar in Gleitkommas einer zweifachen Präzision implementiert sein. Mit anderen Worten bedeutet dies, dass die Skalierungsstufen 520, 540 in der Implementierung der Vorwärtstransformation weggelassen werden können.
  • In einer in 8 dargestellten bevorzugten Implementierung der Vorwärtstransformation wird eine Stufe der erneuten Normalisierung 740 auf der Vorwärtstransformations- Seite durchgeführt (nach der zeilenweisen und der spaltenweisen Multiplikation 710 und 730), um sicherzustellen, dass die Transformationen selbst eine minimale Fehlermenge bei der Rekonstruierung verursachen. Dadurch wird die leichte Abweichung bei den Beträgen der Basisfunktionen kompensiert und der Rechenaufwand in dem Dekodierer reduziert, in dem möglicherweise weniger Rechenressourcen verfügbar sind. Alternativ dazu kann für Systeme, die über ausreichende Rechenressourcen in dem Dekodierer verfügen die Kompensation (Skalierung der Transformationsdaten) in dem Dekodierer durchgeführt werden.
  • In der folgenden Diskussion bezeichnet das Symbol
    Figure 00330001
    das komponentenweise Produkt der Matrizen gleicher Größe. Das ursprüngliche 2-D-Signal (Sample-Datenblock) wird mit X bezeichnet, und seine Transformation wird mit Y bezeichnet (X1 bezeichnet den Zwischenblock nach der zeilenweisen Transformation). Die Matrizen X und Y haben dieselbe Größe und decken die Fälle der 8 × 8-, 8 × 4-, und der 4 × 8-Vorwärtstransformation ab. Es werden die folgenden Skalierungsfaktoren verwendet:
    Figure 00330002
  • Für die 8 × 8-Vorwärtstransformation wird die Verarbeitung in den Stufen 710, 730 und 740 wie folgt beschrieben:
    Figure 00340001
  • Für die 4 × 8-Vorwärtstransformation, führen die Stufen folgenden Operationen durch:
    Figure 00340002
  • Die 8 × 4-Vorwärtstransformation ist andererseits auch die Umstellung der oben beschriebenen 4 × 8-Vorwärtstransformation.
  • Die 4 × 4-Vorwärtstransformation führt die Skalierung wie folgt durch:
    Figure 00340003
  • VI. Geeignete Rechenumgebung
  • Die oben beschriebenen Transformationen können in einem beliebigen von einer Auswahl von Geräten implementiert werden, in denen Bild- und Videosignalverarbeitung durchgeführt wird, einschließlich Computern; Bild- und Videoaufzeichnungsgeräten, Sende- und Empfangsgeräten; tragbaren Videoabspielgeräten; Videokonferenzgeräten; und so weiter. Die Verfahren zum Kodieren der Bild- und Videodaten können in Hardwareschaltungen aber ebenso auch in Bild- und Videoverarbeitungssoftware implementiert werden, die innerhalb einer Computer- oder einer anderen Rechenumgebung, wie in 8 dargestellt, arbeiten.
  • 8 illustriert ein allgemeines Beispiel einer geeigneten Rechenumgebung (800), in der die beschriebenen Ausführungsbeispiele implementiert werden können. Es ist nicht die Absicht, dass die Rechenumgebung (800) irgendeine Beschränkung hinsichtlich des Nutzungsumfanges oder der Funktionalität der Erfindung vorschlägt, da die vorliegende Erfindung in verschiedenen allgemeinen oder speziellen Rechenumgebungen implementiert werden kann.
  • In Bezug auf 8 umfasst die Rechenumgebung (800) wenigstens eine Verarbeitungseinheit (810) und einen Speicher (820). In 8 ist diese grundlegendste Konfiguration (830) innerhalb einer gestrichelten Linie dargestellt. Die Verarbeitungseinheit (810) führt Computer-ausführbare Instruktionen aus und kann ein realer oder ein virtueller Prozessor sein. In einem Simultanverarbeitungssystem führen simultane Verarbeitungseinheiten Computer-ausführbare Instruktionen aus, um die Verarbeitungsleistung zu erhöhen. Der Speicher (820) kann ein flüchtiger Speicher (beispielsweise Register, Cache-Speicher, Schreib-/Lesespeeicher RAM), ein nicht-flüchtiger Speicher (beispielsweise Festwertspeicher ROM, elektrisch löschbarer programmierbarer Lesespeicher EEPROM, Flash-Speicher und so weiter) oder eine Kombination aus beiden sein. Der Speicher (820) speichert die Software (880), die die beschriebenen Bild- und/oder Videokodierer/Dekodierer und die Transformationen implementiert.
  • Eine Rechenumgebung kann darüber hinaus weitere Leistungsmerkmale umfassen. So enthält die Rechenumgebung (800) beispielsweise einen Speicher (840), ein oder mehrere Eingabegeräte (850), ein oder mehrere Ausgabegeräte (860) und eine oder mehrere Kommunikationsverbindungen (870). Eine Vorrichtung zur Zusammenschaltung (nicht dargestellt) wie beispielsweise ein Bus, ein Kontroller oder ein Netzwerk schaltet die Komponenten der Rechenumgebung (800) zusammen. Typischerweise stellt die Betriebssystemsoftware (nicht dargestellt) eine Betriebsumgebung für weitere Software be reit, die in der Rechenumgebung (800) arbeitet und die Aktivitäten der Komponenten der Rechenumgebung (800) koordiniert.
  • Der Speicher (840) kann ein entnehmbarer oder ein nicht-entnehmbarer Speicher sein und umfasst Magnetplatten, Magnetbänder- oder kassetten, CD-ROMs, CD-RWs, DVDs oder ein beliebiges anderes Medium, das zum Speichern von Informationen verwendet werden kann, auf die innerhalb der Rechenumgebung zugegriffen werden kann. Der Speicher (840) speichert die Instruktionen für die Software (880), die den Audiokodierer implementiert, der die Quantisierungsmatrizen erzeugt und komprimiert.
  • Das/die Eingabegeräte (850) kann ein Touch-Eingabegerät wie beispielsweise eine Tastatur, eine Maus, ein Pen oder Trackball, ein Spracheingabegerät, ein Scanngerät oder eine andere Vorrichtung sein, mit der eine Eingabe in die Rechenumgebung (800) getätigt werden kann. Für Audio kann das/die Eingabegerät/e eine Soundkarte oder eine ähnliche Vorrichtung, die eine Audioeingabe in analoger oder digitaler Form akzeptiert, oder ein CD-ROM-Leser sein, der der Rechenumgebung Audiosamples zur Verfügung stellt. Das/die Ausgabegerät/e (860) kann ein Anzeige, ein Drucker, ein Lautsprecher, eine CD-Schreibvorrichtung oder ein anderes Gerät sein, das eine Ausgabe von der Rechenumgebung (800) ermöglicht.
  • Die Kommunikationsverbindung(en) (870) ermöglicht die Kommunikation über ein Kommunikationsmedium zu einer anderen Recheneinheit. Das Kommunikationsmedium überträgt Informationen wie beispielsweise Computer-ausführbare Instruktionen, komprimierte Audio- oder Videoinformationen oder andere Daten in einem modulierten Datensignal. Ein moduliertes Datensignal ist ein Signal, das ein oder mehrere seiner Eigenschaften so eingestellt oder geändert hat, dass es die in dem Signal enthaltenen Informationen kodiert. Um ein Beispiel zu nennen, was allerdings nicht im restriktiven Sinne zu betrachten ist, umfassen Kommunikationsmedien kabelbasierte oder kabellose Verfahren, die mit einem elektrischen, einem optischen, einem RF-, einem Infrarot-, einem akustischen oder einem anderen Träger implementiert sind.
  • Die in diesem Dokument beschriebenen Transformations- und Kodierungs-/Dekodierungsverfahren können in dem allgemeinen Kontext von Computer-lesbaren Medien beschrieben werden. Computer-lesbare Medien sind jede beliebigen verfügba ren Medien, auf die innerhalb einer Rechenumgebung zugegriffen werden kann. Um ein Beispiel zu nennen, was allerdings nicht im restriktiven Sinne zu betrachten ist, umfassen mit der Rechenumgebung (800) Computer-lesbare Medien Speicher (820), Speichervorrichtungen (840), Kommunikationsmedien und Kombinationen aus beliebigen der oben genannten.
  • Die in diesem Dokument beschriebenen Transforrations- und Kodierungs-/Dekodierungsverfahren können in dem allgemeinen Kontext von Computerausführbaren Instruktionen, wie beispielsweise die, die in den Programmmodulen enthalten sind, die in einer Rechenumgebung auf einem realen oder virtuellen Zielprozessor ausgeführt werden, beschrieben werden. Im Allgemeinen umfassen Programmmodule Routinen, Programme, Bibliotheken, Objekte, Klassen, Komponenten, Datenstrukturen und so weiter, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Die Funktionen der Programmmodule können zwischen den Programmmodulen kombiniert oder aufgeteilt werden, so wie die in jeweiligen Ausführungsbeispielen gewünscht wird. Computer-ausführbare Instruktionen für Programmmodule können innerhalb einer lokalen oder verteilten Rechenumgebung ausgeführt werden.
  • Im Sinne der Darstellung verwendet die ausführliche Beschreibung Begriffe wie „bestimmen", „erzeugen", „anpassen" und „anwenden", um in einer Rechenumgebung ausgeführte Computeroperationen zu beschreiben. Bei diesen Begriffen handelt es sich um Abstraktionen auf hoher Ebene, und sie beziehen sich auf Operationen, die durch einen Computer ausgeführt werden, weshalb sie nicht mit Handlungen, die durch eine Person ausgeführt werden, verwechselt werden sollten. Die eigentlichen Operationen, die diesen Begriffen entsprechen, variieren je nach Implementierung.
  • VII. Erweiterungen
  • Die oben beschriebenen Transformationen und ihre Implementierungen können auf verschiedene Art und Weise erweitert werden, dazu gehören die folgenden Möglichkeiten:
    Abwandlungen der Transformations-Implementierungen können abwechselndes Runden, „Butterfly"-Implementierung und biorthogonale Formeln umfassen.
  • Darüber hinaus kann der oben beschriebene Konstruierungsprozess so weitergeführt werden, das er unterschiedlichen Bitbereichsbeschränkungen unterliegt, um Transformationsvarianten mit unterschiedlichen Koeffizientenbereichen zu erzeugen.
  • Die Schwellenwertparameter der Beschränkungen, die in dem Konstruierungsprozess verwendet werden, können so variiert werden, dass sie einen größeren Satz von Beanstandungstransformationen enthalten.
  • Der Transformations-Satz kann so erweitert werden, dass er weitere Blockgrößen enthält (beispielsweise die 4 × 4-Block- oder Transformationen anderer Blockgrößen). Auf die gleiche Weise muss der erzeugte Transformationssatz nicht notwendigerweise die Größen der oben illustrierten Implementierungen (das heißt die 8 × 8-, die 8 × 4- und die 4 × 8-Transformation) enthalten. Die Transformationen können auch auf andere Blockgrößen und höhere Dimensionen (> 2) ausgedehnt werden.
  • Die Wahl der Bittiefe ist ein variabler Parameter und kann beliebig für das illustrierte Beispiel geändert werden (mit einer 8-Bit-Aiflösung von unverarbeiteten Pixelwerten und 16-Bits für Zwischenergebnisse).
  • Die Implementierung der Vorwärtstransformation kann ebenfalls einer Bereichsbeschränkung unterliegen, indem die Vorgehensweise angewendet wird, die für die Bereichsbeschränkung der Implementierung der inversen Transformation beschrieben wurde.
  • Der oben beschriebene Konstruierungsprozess kann so weitergeführt werden, dass er Transformationen erzeugt, die annähernd anderen jedoch Nicht-DCT-Basisfunktionen entsprechen. So kann der Konstruierungsprozess beispielsweise Transformationen erzeugen, die annähernd FFT-, Wavelet-, oder anderen überlappenden Transformationen entsprechen, wobei die Beschränkungen zu skalierten Integerzahlen, der perfekten Rekonstruierung und die Bereichsbeschränkung erfüllt werden.
  • In Anbetracht der beschriebenen und illustrierten Prinzipien unserer Erfindung in Bezug auf die beschriebenen Ausführungsbeispiele wird ersichtlich, dass die beschriebenen Ausführungsbeispiele im Aufbau und Detail modifiziert werden können, ohne dabei von solchen Prinzipien abzuweichen. Es wird darauf hingewiesen, dass die in diesem Dokument beschriebenen Programme, Prozesse oder Verfahren nicht in Beziehung zu einem bestimmten Typ von Rechenumgebung stehen oder auf diesen beschränkt sind, es sei denn es wird anderweitig darauf hingewiesen. Es können verschiedene Typen von allgemeinen oder speziellen Rechenumgebungen für die Ausführung der Operationen in Übereinstimmung mit den in diesem Dokument beschriebenen Schritten verwendet werden. Es können Elemente der beschriebenen Ausführungsbeispiele, die in der Software dargestellt sind, auch in der Hardware implementiert sein und umgekehrt.
  • Während die Transformations-Kodierverfahren in diesem Dokument an Stellen als Bestandteil eines einzigen, integrierten Systems beschrieben sind, können die Verfahren auch separat voneinander und möglicherweise in Kombination mit anderen Verfahren angewendet werden. So implementiert in alternativen Ausführungsbeispielen ein Signalverarbeitungswerkzeug mit Ausnahme von einem Kodierer oder einem Dekodierer eins oder mehrere der Verfahren.
  • Die beschriebenen Transformationen und Transformations-Kodierungs-Ausführungsbeispiele führen verschiedene Verfahren durch. Obgleich die Operationen für diese Verfahren typischerweise im Sinne der Darstellung in einer bestimmten sequenziellen Reihenfolge beschrieben sind, sollte hierbei angemerkt werden, dass diese Art und Weise der Beschreibung auch geringfügige Umstellungen in der Reihenfolge der Operationen umfasst, es sei denn, es wird eine bestimmte Reihenfolge verlangt. So können beispielsweise Operationen, die in einer bestimmten Reihenfolge beschrieben sind, in einigen Fällen in eine andere Reihenfolge gebracht werden oder auch gleichzeitig durchgeführt werden. Darüber hinaus zeigen der Einfachheit halber Ablaufpläne typischerweise nicht die verschiedenen Möglichkeiten, in denen die bestimmten Verfahren zusammen mit anderen Verfahren verwendet werden können.
  • In Anbetracht der vielen möglichen Ausführungsbeispiele, auf die die Prinzipien unserer Erfindung angewendet werden können, erheben wir Anspruch auf alle solche Ausführungsbeispiele, die in den Umfang der folgenden Ansprüche fallen können.

Claims (34)

  1. Verfahren zum Umwandeln eines Mediendatenblocks, der die Dimensionen n und m hat, umfassend: Erstellen einer Transformationsmatrix, die aus Integerkoeffizienten besteht, die eine zweite Transformationsmatrix, die Nicht-Integerkoeffizienten hat, gemäß vorbestimmter Toleranzen und vorbestimmter Beschränkungen annähert; und Ausführen einer Transformation durch das Ausführen mindestens einer Matrixmultiplikation des Mediendatenblocks mit der Transformationsmatrix, die aus Integerkoeffizienten besteht, zum Erlangen eines transformierten Mediendatenblocks; dadurch gekennzeichnet, dass der Schritt des Erstellens einer Transformationsmatrix die folgenden Schritte umfasst: (a) Ermitteln eines konstanten Faktors aus n- und m-Punkt-DC-Basisfunktionen, die innerhalb einer Toleranz Beschränkungen unterliegen, dass Beträge der n- und m-Punkt-DC-Basisfunktionen übereinstimmen, und dass Basisfunktionen Transformationsbereichsdaten innerhalb eines begrenzten Bereichs von Integerwerten erzeugen; (b) Ermitteln einer Reihe von konstanten Faktoren aus ungeraden Basisfunktionen von einem grösseren der n- oder m-Punkte, die innerhalb einer Toleranz Beschränkungen unterliegen, dass solche ungeraden Basisfunktionen orthogonal sind, zu entsprechenden konstanten Basisfunktionsfaktoren der zweiten Transformationsmatrix gut korrelieren und mit den DC-Basisfunktionen betragsmässig übereinstimmen; und (c) Ermitteln einer Reihe von konstanten Faktoren aus geraden Basisfunktionen von dem grösseren der n- oder m-Punkte, die innerhalb einer Toleranz Beschränkungen unterliegen, dass solche geraden Basisfunktionen orthogonal sind, zu entsprechenden konstanten Basisfunktionsfaktoren der zweiten Transformationsmatrix gut korrelieren und mit den DC- und ungeraden Basisfunktionen betragsmässig übereinstimmen.
  2. Verfahren gemäß Anspruch 1, das des Weiteren die folgenden Schritte umfasst: Quantisieren des transformierten Mediendatenblocks; Dequantisieren der transformierten Mediendaten; und Ausführen einer Invers-Transformation, die als eine Sequenz von Matrixmultiplikationen implementiert ist.
  3. Verfahren gemäß Anspruch 2, wobei die Beschränkungen auch eine Beschränkung, dass Basisfunktionen der Transformation betragsmässig nahe beieinander sind, und eine Beschränkung, dass es genügend Headroom gibt, umfassen.
  4. Verfahren gemäß Anspruch 3, das des Weiteren das Ausgleichen irgendwelcher Ungleichheiten der Basisfunktionsbeträge bei der Quantisierung umfasst.
  5. Verfahren gemäß Anspruch 3, das des Weiteren das Ausgleichen irgendwelcher Ungleichheiten der Basisfunktionsbeträge bei der Dequantisierung umfasst.
  6. Verfahren gemäß Anspruch 3, das des Weiteren das Ausgleichen irgendwelcher Ungleichheiten der Basisfunktionsbeträge zum Teil bei der Quantisierung und zum Teil bei der Dequantisierung umfasst.
  7. Verfahren gemäß Anspruch 1, wobei mindestens eine Dimension des Mediendatenblocks 8 Punkte hat, der Schritt des Erstellens zu einer 8-Punkt-Transformationsmatrix
    Figure 00420001
    führt und das Verfahren des Weiteren den Schritt des Skalierens des resultierenden Matrixprodukts umfasst, um innerhalb eines Bit-Bereichslimits zu bleiben.
  8. Verfahren gemäß Anspruch 7, wobei der Mediendatenblock ein 8 × 8-Block ist, und das Ausführen mindestens einer Matrixmultiplikation das Ausführen von reihenweisen und spaltenweisen Matrixmultiplikationen des Mediendatenblocks mit der Transformationsmatrix umfasst.
  9. Verfahren gemäß Anspruch 8, wobei das Skalieren eine eintragsweise Verschiebungsfunktion nach jeder der reihenweisen und spaltenweisen Matrixmultiplikationen umfasst, um eine Teilung durch eine Zweierpotenz zu bewirken.
  10. Verfahren gemäß Anspruch 9, wobei die eintragsweise Verschiebungsfunktion nach einer ersten der Matrixmultiplikationen eine Verschiebung durch weniger Bit-Positionen ist als nach einer zweiten der Matrixmultiplikationen.
  11. Verfahren gemäß Anspruch 9, wobei die eintragsweisen Verschiebungsfunktionen Verschiebungen durch eine gleiche Anzahl von Bit-Positionen nach jeder der Matrixmultiplikationen sind.
  12. Verfahren gemäß Anspruch 7, wobei der Schritt des Skalierens das Ausführen eines komponentenweisen Produkts unter Verwendung einer Matrix
    Figure 00430001
    ist, wobei gilt:
    Figure 00430002
  13. Verfahren gemäß Anspruch 1, wobei mindestens eine Dimension des Mediendatenblocks 4 Punkte hat, der Schritt des Erstellens zu einer 4-Punkt-Transformationsmatrix
    Figure 00430003
    führt und das Verfahren des Weiteren den Schritt des Skalierens des resultierenden Matrixprodukts umfasst, um innerhalb eines Bit-Bereichslimits zu bleiben.
  14. Verfahren gemäß Anspruch 13, wobei der Mediendatenblock ein 4 × 4-Block ist, und das Ausführen mindestens einer Matrixmultiplikation das Ausführen von rei henweisen und spaltenweisen Matrixmultiplikationen des Mediendatenblocks mit der Transformationsmatrix umfasst.
  15. Verfahren gemäß Anspruch 14, wobei das Skalieren eine eintragsweise Verschiebungsfunktion nach jeder der reihenweisen und spaltenweisen Matrixmultiplikationen umfasst, um eine Teilung durch eine Zweierpotenz zu bewirken.
  16. Verfahren gemäß Anspruch 14, wobei die eintragsweise Verschiebungsfunktion nach einer ersten der Matrixmultiplikationen eine Verschiebung durch weniger Bit-Positionen ist als nach einer zweiten der Matrixmultiplikationen.
  17. Verfahren gemäß Anspruch 14, wobei die eintragsweisen Verschiebungsfunktionen Verschiebungen durch eine gleiche Anzahl von Bit-Positionen nach jeder der Matrixmultiplikationen sind.
  18. Verfahren gemäß Anspruch 13, wobei der Schritt des Skalierens das Ausführen eines komponentenweisen Produkts unter Verwendung einer Matrix
    Figure 00440001
    ist, wobei gilt:
    Figure 00440002
  19. Verfahren gemäß Anspruch 1, das des Weiteren den folgenden Schritt umfasst: (d) Ermitteln einer Reihe von Faktoren aus Basisfunktionen von einem kleineren der n- oder m-Punkte, die auch innerhalb der Toleranz Beschränkungen unterliegen, dass solche Basisfunktionen orthogonal sind, zu entsprechenden konstanten Basisfunktionsfaktoren der zweiten Transformationsmatrix gut korrelieren und mit den gösseren der n- oder m-Punkte-Basisfunktionen betragsmässig übereinstimmen.
  20. Verfahren gemäß Anspruch 19, wobei die zweite Transformation eine DCT-Transformation ist.
  21. Verfahren gemäß Anspruch 19, wobei die zweite Transformation eine DCT-, FFT-, Wavelet- oder Overlapped-Transformation ist.
  22. Verfahren gemäß Anspruch 19, wobei die Dimensionen n und m gleich sind.
  23. Verfahren gemäß Anspruch 19, wobei die Dimensionen n und m gleich 4 und 8 sind.
  24. Verfahren gemäß Anspruch 19, wobei die Dimensionen des Mediendatenblocks 4 und 8 Punkte sind, und die Schritte (a) bis (c) zu einer 8-Punkt-Matrix der Form
    Figure 00450001
    führen, und der Schritt (d) zu einer 4-Punkt-Matrix der Form
    Figure 00450002
    führt, und der Schritt des Ausführens einer Transformation das Ausführen von reihenweisen und spaltenweisen Matrixmultiplikationen des Mediendatenblocks mit beiden Matrizen T8 und T4 umfasst.
  25. Verfahren gemäß Anspruch 24, das des Weiteren den Schritt des Skalierens des resultierenden Matrixprodukts umfasst, um innerhalb eines Bit-Bereichslimits zu bleiben.
  26. Verfahren gemäß Anspruch 24 oder 25, wobei der Datenblock Dimensionen von 4 × 8 Punkten hat, und der Vorgang des Ausführens der Matrixmultiplikationen gemäß der Relation Y = (T8·X·T'4) ausgeführt wird, wobei X den Datenblock darstellt und Y das resultierende Matrixprodukt ist.
  27. Verfahren gemäß Anspruch 24 oder 25, wobei der Datenblock Dimensionen von 8 × 4 Punkten hat, und der Vorgang des Ausführens der Matrixmultiplikationen gemäß der Relation Y = (T4·X·T'8) ausgeführt wird, wobei X den Datenblock darstellt und Y das resultierende Matrixprodukt ist.
  28. Verfahren gemäß Anspruch 25, wobei der Schritt des Skalierens das Ausführen eines komponentenweisen Produkts unter Verwendung einer Matrix
    Figure 00460001
    ist, wobei gilt:
    Figure 00470001
  29. Verfahren gemäß Anspruch 1, wobei die Transformationsmatrix T in T = 2x·Ta + Tb zerlegt wird, wobei Ta und Tb Subkomponentenmatrizen sind, und wobei der Schritt des Ausführens der Transformation umfasst: Ausführen von Matrixmultiplikationen des Datenblocks mit jeder von ersten und zweiten Transformations-Subkomponentenmatrizen; Verschieben eines Produkts des Datenblocks und der zweiten Subkomponentenmatrix durch x Bit-Positionen; Summieren eines Produkts des Datenblocks und der ersten Subkomponentenmatrix mit dem verschobenen Produkt des Datenblocks und der zweiten Subkomponentenmatrix; und Verschieben einer Summe der Produkte durch y Bit-Positionen, um das Ergebnis
    Figure 00470002
    mit D als dem Datenblock zu erzielen; wodurch der Headroom der Transformation erweitert wird.
  30. Verfahren gemäß Anspruch 29, wobei die Transformations-Basisfunktionsmatrix
    Figure 00480001
    ist; und wobei die Transformations-Subkomponentenmatrizen
    Figure 00480002
    sind.
  31. Verfahren gemäß Anspruch 29, wobei die Transformations-Basisfunktionsmatrix
    Figure 00480003
    ist; und wobei die Transformations-Subkomponentenmatrizen
    Figure 00490001
    sind.
  32. Computer-lesbares Medium, das Computer-ausführbare Instruktionen aufweist, die eingerichtet sind einen Computer zu befähigen, das Verfahren von einem der Ansprüche 1 bis 31 auszuführen.
  33. Konverter zum Konvertieren eines Mediendatenblocks, der die Dimensionen n und m aufweist, umfassend: einen Ersteller zum Erstellen einer Transformationsmatrix, die aus Integerkoeffizienten besteht, die eine zweite Transformationsmatrix, die Nicht-Integerkoeffizienten hat, gemäß vorbestimmter Toleranzen und vorbestimmter Beschränkungen annähert; und eine Transformationsstufe zum Ausführen einer Transformation durch das Ausführen mindestens einer Matrixmultiplikation des Mediendatenblocks mit der Transformationsmatrix, die aus Integerkoeffizienten besteht, zum Erlangen eines transformierten Mediendatenblocks; dadurch gekennzeichnet, dass der Ersteller eingerichtet ist, die Transformationsmatrix durch folgende Schritte zu erstellen: (a) Ermitteln eines konstanten Faktors aus n- und m-Punkt-DC-Basisfunktionen, die innerhalb einer Toleranz Beschränkungen unterliegen, dass Beträge der n- und m-Punkt-DC-Basisfunktionen übereinstimmen, und dass Basisfunktionen Transformationsbereichsdaten innerhalb eines begrenzten Bereichs von Integerwerten erzeugen; (b) Ermitteln einer Reihe von konstanten Faktoren aus ungeraden Basisfunktionen von einem grösseren der n- oder m-Punkte, die innerhalb einer Toleranz Beschränkungen unterliegen, dass solche ungeraden Basisfunktionen orthogonal sind, zu entsprechenden konstanten Basisfunktionsfaktoren der zweiten Transformationsmatrix gut korrelieren und mit den DC-Basisfunktionen betragsmässig übereinstimmen; und (c) Ermitteln einer Reihe von konstanten Faktoren aus geraden Basisfunktionen von dem grösseren der n- oder m-Punkte, die innerhalb einer Toleranz Beschränkungen unterliegen, dass solche geraden Basisfunktionen orthogonal sind, zu entsprechenden konstanten Basisfunktionsfaktoren der zweiten Transformationsmatrix gut korrelieren und mit den DC- und ungeraden Basisfunktionen betragsmässig übereinstimmen.
  34. Konverter gemäß Anspruch 33, des Weiteren umfassend: eine Quantisierungsstufe, die die Wirkung ausübt, den Transformations-Bereichsblock zu quantisieren; eine Dequantisierungsstufe, die die Wirkung ausübt, den Transformations-Bereichsblock zu dequantisieren; und eine Invers-Transformationsstufe zum Ausführen einer Invers-Transformation des Transformations-Bereichsblocks, um ein einen rekonstruierten Block zu erzeugen, wobei die Invers-Transformation als eine Sequenz von Matrixmultiplikationen durch eine Transformationsmatrix implementiert ist, die aus Integerzahlen besteht, die innerhalb einer vorgegebenen Toleranz bestimmte Beschränkungen erfüllen, wobei die Beschränkungen eine skalierte Integerbeschränkung, eine perfekte Rekonstruierungsbeschränkung, eine DCT-ähnliche Basisbeschränkung und eine Integer-Bereichslimitierungsbeschränkung umfassen.
DE60308255T 2002-05-02 2003-03-21 2D-Transformationen zur Bild- und Videokodierung Expired - Lifetime DE60308255T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US37729802P 2002-05-02 2002-05-02
US377298P 2002-05-02
US10/376,147 US7242713B2 (en) 2002-05-02 2003-02-28 2-D transforms for image and video coding
US376147P 2003-02-28

Publications (2)

Publication Number Publication Date
DE60308255D1 DE60308255D1 (de) 2006-10-26
DE60308255T2 true DE60308255T2 (de) 2006-12-28

Family

ID=29273051

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60308255T Expired - Lifetime DE60308255T2 (de) 2002-05-02 2003-03-21 2D-Transformationen zur Bild- und Videokodierung

Country Status (8)

Country Link
US (1) US7242713B2 (de)
EP (1) EP1359546B1 (de)
JP (1) JP4425561B2 (de)
KR (1) KR100965704B1 (de)
CN (1) CN100379292C (de)
AT (1) ATE339744T1 (de)
DE (1) DE60308255T2 (de)
HK (1) HK1060205A1 (de)

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6882685B2 (en) 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
IL147370A (en) * 2001-12-27 2007-07-24 Itzhak Florentin Method and system for guiding a remote vehicle via a retarded communication channel
US7129962B1 (en) * 2002-03-25 2006-10-31 Matrox Graphics Inc. Efficient video processing method and system
US7242713B2 (en) 2002-05-02 2007-07-10 Microsoft Corporation 2-D transforms for image and video coding
US7760950B2 (en) * 2002-09-26 2010-07-20 Ntt Docomo, Inc. Low complexity and unified transforms for video coding
US6831868B2 (en) * 2002-12-05 2004-12-14 Intel Corporation Byte aligned redundancy for memory array
US7471726B2 (en) * 2003-07-15 2008-12-30 Microsoft Corporation Spatial-domain lapped transform in digital media compression
JP4699685B2 (ja) * 2003-08-21 2011-06-15 パナソニック株式会社 信号処理装置及びそれを用いた電子機器
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7369709B2 (en) * 2003-09-07 2008-05-06 Microsoft Corporation Conditional lapped transform
US7813574B2 (en) * 2003-09-24 2010-10-12 Ntt Docomo, Inc. Low complexity and unified transforms for video coding
KR20050075578A (ko) * 2004-01-16 2005-07-21 삼성전자주식회사 폐루프 최적화를 지원하는 스케일러블 비디오 엔코딩 방법및 장치
US7487193B2 (en) * 2004-05-14 2009-02-03 Microsoft Corporation Fast video codec transform implementations
US8045614B2 (en) 2005-05-11 2011-10-25 Dolby Laboratories Licensing Corporation Quantization control for variable bit depth
WO2006034603A1 (en) * 2004-09-28 2006-04-06 Huawei Technologies Co., Ltd Video image encoding method
US7428342B2 (en) * 2004-12-17 2008-09-23 Microsoft Corporation Reversible overlap operator for efficient lossless data compression
US7471850B2 (en) * 2004-12-17 2008-12-30 Microsoft Corporation Reversible transform for lossy and lossless 2-D data compression
US7305139B2 (en) * 2004-12-17 2007-12-04 Microsoft Corporation Reversible 2-dimensional pre-/post-filtering for lapped biorthogonal transform
AU2005239628B2 (en) * 2005-01-14 2010-08-05 Microsoft Technology Licensing, Llc Reversible 2-dimensional pre-/post-filtering for lapped biorthogonal transform
US8311088B2 (en) * 2005-02-07 2012-11-13 Broadcom Corporation Method and system for image processing in a microprocessor for portable video communication devices
US7953161B2 (en) * 2005-04-27 2011-05-31 Broadcom Corporation System and method for overlap transforming and deblocking
US8422546B2 (en) * 2005-05-25 2013-04-16 Microsoft Corporation Adaptive video encoding using a perceptual model
US8036274B2 (en) * 2005-08-12 2011-10-11 Microsoft Corporation SIMD lapped transform-based digital media encoding/decoding
US20070047655A1 (en) * 2005-08-26 2007-03-01 Vannerson Eric F Transpose buffering for video processing
WO2007027418A2 (en) * 2005-08-31 2007-03-08 Micronas Usa, Inc. Systems and methods for video transformation and in loop filtering
EP1947862B1 (de) * 2005-10-14 2016-04-27 NEC Corporation Verfahren zur wiederkodierung von bildblöcken, einrichtung damit und computerprogramm
JP2007195117A (ja) * 2006-01-23 2007-08-02 Toshiba Corp 動画像復号装置
JP2007243427A (ja) * 2006-03-07 2007-09-20 Nippon Hoso Kyokai <Nhk> 符号化装置及び復号化装置
US8059721B2 (en) * 2006-04-07 2011-11-15 Microsoft Corporation Estimating sample-domain distortion in the transform domain with rounding compensation
US7995649B2 (en) 2006-04-07 2011-08-09 Microsoft Corporation Quantization adjustment based on texture level
US8503536B2 (en) 2006-04-07 2013-08-06 Microsoft Corporation Quantization adjustments for DC shift artifacts
US8711925B2 (en) 2006-05-05 2014-04-29 Microsoft Corporation Flexible quantization
JP4829019B2 (ja) * 2006-07-06 2011-11-30 株式会社東芝 通信端末装置
US8238424B2 (en) 2007-02-09 2012-08-07 Microsoft Corporation Complexity-based adaptive preprocessing for multiple-pass video compression
US8942289B2 (en) 2007-02-21 2015-01-27 Microsoft Corporation Computational complexity and precision control in transform-based digital media codec
US8498335B2 (en) 2007-03-26 2013-07-30 Microsoft Corporation Adaptive deadzone size adjustment in quantization
US20080240257A1 (en) * 2007-03-26 2008-10-02 Microsoft Corporation Using quantization bias that accounts for relations between transform bins and quantization bins
US8243797B2 (en) 2007-03-30 2012-08-14 Microsoft Corporation Regions of interest for quality adjustments
US8442337B2 (en) 2007-04-18 2013-05-14 Microsoft Corporation Encoding adjustments for animation content
US8331438B2 (en) 2007-06-05 2012-12-11 Microsoft Corporation Adaptive selection of picture-level quantization parameters for predicted video pictures
US8255445B2 (en) 2007-10-30 2012-08-28 The Chinese University Of Hong Kong Processes and apparatus for deriving order-16 integer transforms
US8331454B2 (en) * 2007-11-12 2012-12-11 Cisco Technology, Inc. Integer transform function for video compression systems
CN100461095C (zh) * 2007-11-20 2009-02-11 浙江大学 一种支持多模式的媒体增强流水线乘法单元设计方法
US8189933B2 (en) 2008-03-31 2012-05-29 Microsoft Corporation Classifying and controlling encoding quality for textured, dark smooth and smooth video content
US8102918B2 (en) 2008-04-15 2012-01-24 The Chinese University Of Hong Kong Generation of an order-2N transform from an order-N transform
US8175165B2 (en) 2008-04-15 2012-05-08 The Chinese University Of Hong Kong Methods and apparatus for deriving an order-16 integer transform
US8369638B2 (en) 2008-05-27 2013-02-05 Microsoft Corporation Reducing DC leakage in HD photo transform
US8447591B2 (en) * 2008-05-30 2013-05-21 Microsoft Corporation Factorization of overlapping tranforms into two block transforms
US8897359B2 (en) 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
US8687692B2 (en) * 2008-08-12 2014-04-01 Lg Electronics Inc. Method of processing a video signal
US8275209B2 (en) * 2008-10-10 2012-09-25 Microsoft Corporation Reduced DC gain mismatch and DC leakage in overlap transform processing
US9183181B2 (en) * 2011-01-10 2015-11-10 Cisco Technology, Inc. Integer matrix transform video compression system, method and computer program product
US9110849B2 (en) 2009-04-15 2015-08-18 Qualcomm Incorporated Computing even-sized discrete cosine transforms
US9069713B2 (en) * 2009-06-05 2015-06-30 Qualcomm Incorporated 4X4 transform for media coding
US8762441B2 (en) * 2009-06-05 2014-06-24 Qualcomm Incorporated 4X4 transform for media coding
KR101805531B1 (ko) 2009-06-07 2018-01-10 엘지전자 주식회사 비디오 신호의 디코딩 방법 및 장치
US9635368B2 (en) 2009-06-07 2017-04-25 Lg Electronics Inc. Method and apparatus for decoding a video signal
US9118898B2 (en) 2009-06-24 2015-08-25 Qualcomm Incorporated 8-point transform for media data coding
US9081733B2 (en) 2009-06-24 2015-07-14 Qualcomm Incorporated 16-point transform for media data coding
US9075757B2 (en) 2009-06-24 2015-07-07 Qualcomm Incorporated 16-point transform for media data coding
US8817875B2 (en) * 2009-08-13 2014-08-26 The Johns Hopkins University Methods and systems to encode and decode sequences of images
WO2011048099A1 (en) 2009-10-20 2011-04-28 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using a region-dependent arithmetic coding mapping rule
EP2517200B1 (de) 2010-01-12 2015-04-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio-kodierer, audio-dekodierer, verfahren zur kodierung einer audio-information, verfahren zur dekodierung einer audio-information und computer-programm, unter verwendung einer modifizierung einer numerischen darstellung eines vorherigen kontextes
TWI415474B (zh) * 2010-07-19 2013-11-11 Mstar Semiconductor Inc 視訊編/解碼器與其方法
BR122020016581B1 (pt) 2010-09-28 2022-03-03 Samsung Electronics Co., Ltd. Método de decodificação de vídeo, e método de codificação de vídeo
CN101977321B (zh) * 2010-11-04 2014-03-12 深圳市融创天下科技股份有限公司 一种视频编码的整数变换方法
US9824066B2 (en) 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding
GB2492333B (en) * 2011-06-27 2018-12-12 British Broadcasting Corp Video encoding and decoding using transforms
TWI601419B (zh) 2011-06-30 2017-10-01 三星電子股份有限公司 視訊解碼方法
JP5662887B2 (ja) * 2011-07-01 2015-02-04 日本放送協会 符号化装置、復号装置及びプログラム
KR20140098114A (ko) * 2011-11-07 2014-08-07 브이아이디 스케일, 인크. 홀수-짝수 정수 변환 백그라운드를 사용하는 비디오 및 데이터 처리
US8719321B2 (en) * 2011-12-11 2014-05-06 Hong Kong Applied Science and Technology Research Institute Company Limited Adaptive block-size transform using LLMICT
US9749633B2 (en) * 2012-01-19 2017-08-29 Vid Scale, Inc. System and method of video coding quantization and dynamic range control
CN103905825B (zh) * 2012-12-27 2018-02-13 中国电信股份有限公司 视频图像的运动补偿方法和装置
JP6102707B2 (ja) * 2013-12-05 2017-03-29 Nttエレクトロニクス株式会社 デジタル符号化装置
CN104901703B (zh) * 2015-04-08 2018-04-03 河海大学 一种整数序列快速压缩存储算法
US20180213223A1 (en) * 2015-07-31 2018-07-26 Ent. Services Development Corporation Lp Translate data structure to video frame structure
US10567800B2 (en) 2016-11-29 2020-02-18 Qualcomm Incorporated Transform hardware architecture for video coding
CN106954070B (zh) * 2017-04-28 2023-04-11 河南工程学院 一种滑动像素块整数dct核心矩阵变换运动补偿器及方法
US11049219B2 (en) 2017-06-06 2021-06-29 Gopro, Inc. Methods and apparatus for multi-encoder processing of high resolution content
CN111713104B (zh) * 2018-02-14 2022-04-26 索尼公司 图像处理装置和方法
US11647214B2 (en) * 2018-03-30 2023-05-09 Qualcomm Incorporated Multiple transforms adjustment stages for video coding
US11228781B2 (en) 2019-06-26 2022-01-18 Gopro, Inc. Methods and apparatus for maximizing codec bandwidth in video applications
US11481863B2 (en) 2019-10-23 2022-10-25 Gopro, Inc. Methods and apparatus for hardware accelerated image processing for spherical projections
KR20220147339A (ko) 2021-04-27 2022-11-03 성균관대학교산학협력단 이미지의 암호화 방법

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63219066A (ja) 1987-03-06 1988-09-12 Matsushita Electric Ind Co Ltd 直交変換装置
US5357594A (en) * 1989-01-27 1994-10-18 Dolby Laboratories Licensing Corporation Encoding and decoding using specially designed pairs of analysis and synthesis windows
US5379351A (en) * 1992-02-19 1995-01-03 Integrated Information Technology, Inc. Video compression/decompression processing and processors
US5319724A (en) 1990-04-19 1994-06-07 Ricoh Corporation Apparatus and method for compressing still images
JP2945487B2 (ja) * 1990-12-26 1999-09-06 株式会社日立製作所 行列乗算器
JPH04282988A (ja) 1991-03-12 1992-10-08 Sony Corp データ変換装置及び方法
US5168375A (en) * 1991-09-18 1992-12-01 Polaroid Corporation Image reconstruction by use of discrete cosine and related transforms
JPH0645949A (ja) 1992-07-27 1994-02-18 Victor Co Of Japan Ltd 直交変換装置及び逆直交変換装置
JPH0645948A (ja) 1992-07-27 1994-02-18 Victor Co Of Japan Ltd 直交変換装置及び逆直交変換装置
JPH0654307A (ja) 1992-07-29 1994-02-25 Casio Comput Co Ltd データ圧縮装置
JP3069455B2 (ja) * 1992-12-22 2000-07-24 富士写真フイルム株式会社 画像データ圧縮伸張装置における量子化・逆量子化回路
US5995539A (en) * 1993-03-17 1999-11-30 Miller; William J. Method and apparatus for signal transmission and reception
JP3697717B2 (ja) * 1993-09-24 2005-09-21 ソニー株式会社 2次元離散コサイン変換装置および2次元逆離散コサイン変換装置
US5864637A (en) * 1995-04-18 1999-01-26 Advanced Micro Devices, Inc. Method and apparatus for improved video decompression by selective reduction of spatial resolution
US6002801A (en) * 1995-04-18 1999-12-14 Advanced Micro Devices, Inc. Method and apparatus for improved video decompression by selection of IDCT method based on image characteristics
JP2914226B2 (ja) 1995-06-16 1999-06-28 日本電気株式会社 可逆変換を可能にするディジタル信号の変換符号化方式
US5701263A (en) * 1995-08-28 1997-12-23 Hyundai Electronics America Inverse discrete cosine transform processor for VLSI implementation
US5995670A (en) * 1995-10-05 1999-11-30 Microsoft Corporation Simplified chain encoding
US6957350B1 (en) * 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
JPH1091614A (ja) 1996-09-13 1998-04-10 Hitachi Ltd Idctの整数化法
US5883823A (en) 1997-01-15 1999-03-16 Sun Microsystems, Inc. System and method of a fast inverse discrete cosine transform and video compression/decompression systems employing the same
US6058215A (en) * 1997-04-30 2000-05-02 Ricoh Company, Ltd. Reversible DCT for lossless-lossy compression
US6134270A (en) * 1997-06-13 2000-10-17 Sun Microsystems, Inc. Scaled forward and inverse discrete cosine transform and video compression/decompression systems employing the same
US6057855A (en) * 1997-07-02 2000-05-02 Hewlett-Packard Company Method and apparatus for providing polygon pixel sub-sample information using incremental means
EP0957638A4 (de) * 1997-12-01 2008-06-04 Matsushita Electric Ind Co Ltd Bilddatenprozessor und varialbler längenkodierer und dekodierer
ES2251116T3 (es) * 1997-12-19 2006-04-16 Infineon Technologies Ag Dispositivo para la multiplicacion con factores constantes y su utilizacion para la compresion de video (mpeg).
US6115689A (en) * 1998-05-27 2000-09-05 Microsoft Corporation Scalable audio coder and decoder
US6029126A (en) * 1998-06-30 2000-02-22 Microsoft Corporation Scalable audio coder and decoder
US6073153A (en) * 1998-06-03 2000-06-06 Microsoft Corporation Fast system and method for computing modulated lapped transforms
US6154762A (en) * 1998-06-03 2000-11-28 Microsoft Corporation Fast system and method for computing modulated lapped transforms
US6301304B1 (en) * 1998-06-17 2001-10-09 Lsi Logic Corporation Architecture and method for inverse quantization of discrete cosine transform coefficients in MPEG decoders
GB9819648D0 (en) * 1998-09-10 1998-11-04 Nds Ltd Determining visually noticeable differences between two images
US6363117B1 (en) * 1998-12-31 2002-03-26 Sony Corporation Video compression using fast block motion estimation
US6473534B1 (en) * 1999-01-06 2002-10-29 Hewlett-Packard Company Multiplier-free implementation of DCT used in image and video processing and compression
US6496795B1 (en) * 1999-05-05 2002-12-17 Microsoft Corporation Modulated complex lapped transform for integrated signal enhancement and coding
US6487574B1 (en) * 1999-02-26 2002-11-26 Microsoft Corp. System and method for producing modulated complex lapped transforms
US6370502B1 (en) * 1999-05-27 2002-04-09 America Online, Inc. Method and system for reduction of quantization-induced block-discontinuities and general purpose audio codec
US6507614B1 (en) * 1999-10-19 2003-01-14 Sony Corporation Efficient de-quantization in a digital video decoding process using a dynamic quantization matrix for parallel computations
JP3593944B2 (ja) * 2000-03-08 2004-11-24 日本電気株式会社 画像データ処理装置及びそれに用いる動き補償処理方法
US8374237B2 (en) 2001-03-02 2013-02-12 Dolby Laboratories Licensing Corporation High precision encoding and decoding of video images
US20030112873A1 (en) 2001-07-11 2003-06-19 Demos Gary A. Motion estimation for video compression systems
US7123655B2 (en) * 2001-08-09 2006-10-17 Sharp Laboratories Of America, Inc. Method for reduced bit-depth quantization
US6882685B2 (en) * 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
JP2003348598A (ja) 2002-04-12 2003-12-05 Seiko Epson Corp メモリ効率のいい圧縮領域ビデオ処理のための且つ因数分解及び整数近似法を用いる高速逆動き補償のための方法並びに装置
US7242713B2 (en) 2002-05-02 2007-07-10 Microsoft Corporation 2-D transforms for image and video coding

Also Published As

Publication number Publication date
US7242713B2 (en) 2007-07-10
ATE339744T1 (de) 2006-10-15
CN1455599A (zh) 2003-11-12
KR100965704B1 (ko) 2010-06-24
CN100379292C (zh) 2008-04-02
JP4425561B2 (ja) 2010-03-03
KR20030086423A (ko) 2003-11-10
JP2003333598A (ja) 2003-11-21
HK1060205A1 (en) 2004-07-30
EP1359546A1 (de) 2003-11-05
DE60308255D1 (de) 2006-10-26
EP1359546B1 (de) 2006-09-13
US20030206582A1 (en) 2003-11-06

Similar Documents

Publication Publication Date Title
DE60308255T2 (de) 2D-Transformationen zur Bild- und Videokodierung
DE60307354T2 (de) Chrominanz-Bewegungsvektorrundung
DE19626615C2 (de) Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet
DE69737514T2 (de) System und verfahren zum bearbeiten wellenartiger und umgekehrten wellenartigen transformationen von digitalen daten
DE69723550T2 (de) Kodierung und dekodierung von grafischen symbolen
DE19626600C2 (de) Kodierer und Verfahren zum Kodieren
DE60310800T2 (de) Approximierter Kubikfilter
DE69633129T2 (de) Waveletbaum-bildcoder mit überlappenden bildblöcken
DE60302602T2 (de) Sub-Pixel-Interpolation in Bewegungsschätzung und Bewegungskompensation
KR100912415B1 (ko) 변환 및 연속되는 양자화의 구현
Walker et al. Wavelet-based image compression
JP4425824B2 (ja) 動画像コーデック変換の高速実装
DE112010004109B4 (de) Verfahren zum Dekodieren eines Bitstroms
DE69838729T2 (de) Verfahren und vorrichtung zur verringerung des benötigten speicherplatzes zur speicherung von referenzbildern in einem videodekoder
DE69813349T2 (de) Vorrichtung zur Kontrolle der Datenmenge und Kodierer dieselbige anwendend
DE19534943A1 (de) Vorrichtung zur Komprimierung unter Verwendung von eingebetteten Kleinwellen
DE602004001993T2 (de) Transformations basiertes restbewegungsrahmen kodierungsverfahren mit übervollständiger basis und zugehörige vorrichtung zur videokompression
US8331454B2 (en) Integer transform function for video compression systems
Kofidis et al. Wavelet-based medical image compression
DE102005051723A1 (de) Vorrichtung und Verfahren zur Bildverarbeitung
DE10300057B4 (de) Zweidimensionales Orthogonaltransformations- und Quantisierungsverfahren sowie Vorrichtung und Programm dafür
Bernabé et al. A lossy 3D wavelet transform for high-quality compression of medical video
Chokchaitam et al. A new unified lossless/lossy image compression based on a new Integer DCT
DE602004011213T2 (de) Intraframe-komprimierung und dekomprimierung von videosignalen mit fester bitrate
DE69738610T2 (de) MPEG-Codierer/Decodierer

Legal Events

Date Code Title Description
8364 No opposition during term of opposition