DE19819198B4 - Reversible DCT für verlustfreie/verlustbehaftete Kompression - Google Patents

Reversible DCT für verlustfreie/verlustbehaftete Kompression Download PDF

Info

Publication number
DE19819198B4
DE19819198B4 DE19819198A DE19819198A DE19819198B4 DE 19819198 B4 DE19819198 B4 DE 19819198B4 DE 19819198 A DE19819198 A DE 19819198A DE 19819198 A DE19819198 A DE 19819198A DE 19819198 B4 DE19819198 B4 DE 19819198B4
Authority
DE
Germany
Prior art keywords
transformation
reversible
extra
rotation
compressor
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 - Fee Related
Application number
DE19819198A
Other languages
English (en)
Other versions
DE19819198A1 (de
Inventor
Edward L. Menlo Park Schwartz
Ahmad Menlo Park Zandi
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of DE19819198A1 publication Critical patent/DE19819198A1/de
Application granted granted Critical
Publication of DE19819198B4 publication Critical patent/DE19819198B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/007Transform coding, e.g. discrete cosine transform

Abstract

Verfahren zur Erzeugung einer Nachschlagtabelle zum Runden von Offsets, wobei das Verfahren die folgenden Schritte umfasst:
eine erste Abbildung von Eingabewerten auf Transformationsausgabewerte wird erzeugt, indem ein anfängliches Runden verwendet wird; und
für jede Zeile von Kollisionen in der ersten Abbildung, bei der eine Kollision eine Abbildung von Eingaben zu denselben Transformationsausgabewerten darstellt:
– bestimme die Anzahl der Zeilen, wobei jede Extras enthält, die benötigt werden, um einen Transformationsausgabewert bereitzustellen, der nicht bei dem anfänglichen Runden verwendet werden würde, wobei jedes Extra einen Transformationsausgabewert umfasst, der nicht mit einem anfänglichen Runden verwendet werden würde;
– wähle eine Anzahl von Extras, die gleichmäßig innerhalb einer Zeile beabstandet bzw. verteilt sind, falls eine Teil-Extrazeile benötigt wird, um ein Extra für jede Kollision bereitzustellen,
– sortiere die Extras in einer Spaltenordnung bzw. Spaltenreihenfolge;
– weise Extras Kollisionen in Spaltenordnung bzw. Spaltenreihenfolge zu, um so eine zweite Abbildung...

Description

  • Die vorliegende Erfindung betrifft das Gebiet der Kompressions- und Dekompressionssysteme, insbesondere eine Kompression und ein System mit dem Kompressor und einem Dekompressor und genauer betrifft die vorliegende Erfindung die Kompression, die auf einer verlustfreien diskreten Kosinustransformation (DCT) basiert, wobei die Kompression reversibel ist.
  • Die diskrete Kosinustransformation (DCT bzw. "Discrete Cosine Transform") ist eine irrationale Transformation, die üblicherweise bei der verlustbehafteten Bildkompression verwendet wird. Sie wird in verschiedenen Modi des JPEG-Standards und des MPEG-Standards und dem zukünftigen HDTV in den Vereinigten Staaten verwendet. Hinsichtlich einer Diskussion der verschiedenen Standards wird auf die ISO-Standarddokumente ISO/IEC 10918 (JPEG), 11172 (MPEG 1), 13818 (MPEG 2) und auf William B. Pennebaker und Joan L. Mitchell, "JPEG Still Image Data Compression Standard", 1993, verwiesen. Die Basisvektoren einer DCT weisen irrationale Werte auf. Theoretisch führen ganzzahlige Eingänge zu irrationalen Transformationskoeffizienten. Deshalb ist eine unendliche Genauigkeit erforderlich, um jene Transformationen exakt auszuführen. Zur Verwendung bei der Kompression müssen die Transformationskoeffizienten auf eine endliche Darstellung gerundet werden.
  • Bei den meisten Transformations-Implementationen garantiert das Runden der Koeffizienten zu ganzen Zahlen nicht, daß jede Eingabe einer einzelnen bzw. einzigartigen ganzen Zahl zu einer anderen Ausgabe führt. Deshalb kann die inverse DCT die Eingabe nicht exakt rekonstruieren. Der Fehler, der auf die Vorwärts- und die inverse DCT Transformationen ohne Quanitisierung zurückzuführen ist, wird als systemischer Fehler bezeichnet. Dieser systemische Fehler verhindert, daß DCT Implementationen bei verlustbehafteter Kompression verwendet wird, ohne ein Differenz- oder Fehlerbild zurückzuhalten.
  • Bei praktischen DCT Implementationen werden die Transformationsbasisvektoren ebenso gerundet. Die Differenz zwischen einer gegebenen Implementation bzw. Realisierung und der idealen Transformation (oder einer hochgenaue Fließkomma-Implementation) wird als Fehlanpassung ("mismatch") bezeichnet. Eine geringe Fehlanpassung ist für einen Datenaustausch erforderlich. Es kann einen Austausch bzw. eine Wechselwirkung zwischen dem Umfang der Fehlanpassung und der Geschwindigkeit, den Kosten und anderen anzustrebenden Eigenschaften geben.
  • Eine parametrisierte Transformation, die hierin als Allen-parametrisierte Transformation (APT) bezeichnet wird, ist eine Familie von schnellen Transformationen, die die DCT oder rationale Transformationen implementieren können, die beliebig nahe bei der DCT liegen. Die APT wird ebenso als generalisierte Chen-Transformation (GCT) bezeichnet. Hinsichtlich einer ausführlicheren Information über die APT wird auf folgendes verwiesen: J. Allen "Generalized Chen Transform: A Fast Transform for Image Compression", Journal of Electronic Imaging, Band 3(4), Oktober 1994, Seiten 341–347; J. Allen "An Approach to Fast Transform Coding in Software", Signal Processing: Image Communication, Band 8, Seiten 3–11, 1996; und US-Patent Nr. 5,129,015.
  • Die vorliegende Erfindung liefert eine reversible blockbasierte Transformation, wie z. B. eine reversible DCT. Die DCT der vorliegenden Erfindung kann in einem Kompressor/Dekompressor, der auf DCT basiert, mit aufgenommen werden, wobei der Kompressor/Dekompressor in einem verlustfreien Kompressions-/Dekompressionssystem verwendet werden kann. Die vorliegende Erfindung stellt ebenso eine DCT Transformation dar, die keine systemischen Fehler und keine (oder eine geringe) Fehlanpassung hat.
  • Diese Aufgabe wird durch die Gegenstände der unabhängigen Ansprüche gelöst. Vorteilhafte Weiterbildungen gehen aus den abhängigen Ansprüchen hervor.
  • Es wird eine reversible diskrete Kosinustransformation (DCT) beschrieben. Die reversible DCT kann ein Teil eines Kompressors in einem System sein. Das System kann einen Dekompressor mit einer reversiblen inversen DCT zur verlustfreien Dekompression oder einen "Vermächtnis"-Dekompressor ("Legacy-Dekompressor") mit einer inversen DCT zur verlustbehafteten Dekompression enthalten.
  • Bei einer Ausführungsform umfaßt der Kompressor einen DCT Kompressor mit mehreren Rotationen bzw. Drehungen (im folgenden "Rotation" genannt) (z. B. 2-Punkt-(2x2)-Ganzzahl-Rotationen), eine 4-Punkt-parametrisierte Transformation und ein subsidiäre Matrix. Die 4-Punkt-Transformation umfaßt eine Rotation durch bzw. um B, während die subsidiäre Matrix eine Rotation durch bzw. um A und eine Rotation durch bzw. um C umfaßt.
  • Die vorliegende Erfindung stellt ebenso ein Verfahren bereit, um eine Nachschlagtabelle für Rundungsversätze bzw. Rundungsoffsets zur Verwendung bei einer reversiblen DCT zu erzeugen.
  • Die vorliegende Erfindung wird vollständiger von der detaillierten Beschreibung verstanden werden, die im folgenden gegeben wird, und von den beigefügten Zeichnungen verschiedener Ausführungsformen der Erfindung. Dabei werden weitere vorteilhafte Merkmale der Erfindung offenbart. Verschiedene Merkmale unterschiedlicher Ausführungsformen können kombiniert werden.
  • 1A ist ein Blockdiagramm einer Ausführungsform eines verlustfreien und verlustbehafteten Kompressionssystems, das auf DCT basiert.
  • 1B ist ein Blockdiagramm einer Ausführungsform des Kompressors der vorliegenden Erfindung.
  • 1C ist ein Blockdiagramm einer alternativen Ausführungsform des Kompressors der vorliegenden Erfindung.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Video-Autorensystems.
  • 3A zeigt ein Blockdiagramm eine Ausführungsform einer eindimensionalen (1D) 8-Punkt-vorwärts-parametrisierten Transformation.
  • 3B zeigt Zwischenwerte bei einer parametrisierten Trasformation, die denselben Skalierungsfaktor haben.
  • 4 zeigt die Hein-Form der subsidiären Matrix (auch Nebenmatrix oder Tochtermatrix genannt) der 3A.
  • 5A ist ein Blockdiagramm einer Ausführungsform einer 8-Punkt-Hadamard-Transformation gemäß der vorliegenden Erfindung.
  • 5B ist ein Blockdiagramm einer Ausführungsform einer 8-Punkt-Haar-Transformation gemäß der vorliegenden Erfindung.
  • 5C ist ein Blockdiagramm einer Ausführungsform einer 4-Punkt-Sinus-Transformation gemaß der vorliegenden Erfindung.
  • 5D ist ein Blockdiagramm einer Ausführungsform einer 4-Punkt-Slant-Transformation gemäß der vorliegenden Erfindung.
  • 6 zeigt eine Ausführungsform einer Vorwärts-Siebkette bzw. eines Vorwärts-Leiterfilters ("forward ladder filter") einer 2-Punkt-Rotation.
  • 7 zeigt eine Ausführungsform einer inversen Siebkette bzw. eines inversen Leiterfilters ("inverse ladder filter") einer 2-Punkt-Rotation.
  • 8 zeigt einen Abschnitt der Abbildung bzw. der Umsetzung (des "mapping") für eine 45°-Drehung.
  • 9 zeigt Extras ("+") und Kollisionen ("o") für eine 45°-Drehung.
  • 10 ist eine Darstellung von Kollisionen und Extras bei einer 2,1 fast ausgeglichenen Transformation.
  • 11 zeigt eine Ausführungsform einer Nachschlagtabelle eines Teils einer "B"-2-Punkt-Rotation.
  • 12 ist ein Blockdiagramm einer Ausführungsform einer Rotation gemäß der vorliegenden Erfindung.
  • Es werden ein reversibler Kompressions-/Dekompressionsapparat, der auf DCT basiert, und ein entsprechendes Verfahren beschrieben. Bei der folgenden detaillierten Beschreibung der vorliegenden Erfindung werden zahlreiche spezifische Details dargelegt, wie z. B. die Typen der Transformationen, die Koeffizientengrößen usw., um ein tiefes Verständnis der vorliegenden Erfindung bereitzustellen. Jedoch ist es offensichtlich, daß die vorliegende Erfindung von einem Fachmann ohne diese spezifischen Details praktiziert werden kann. In anderen Fällen sind gut bekannte Strukturen und Vorrichtungen in Blockdiagrammform gezeigt, anstatt sie im Detail zu zeigen, um eine Verschleierung der vorliegenden Erfindung zu vermeiden.
  • Einige Abschnitte der detaillierten Beschreibung, die folgt, werden in Form von Algorithmen und symbolischen Darstellungen von Operationen mit Datenbits innerhalb eines Computerspeichers dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind diejenigen Mittel, die die Fachleute auf dem Gebiet der Datenverarbeitung verwenden, um den wesentlichen Inhalt ihrer Arbeit anderen Fachleute zu vermitteln. Ein Algorithmus wird hier im allgemeinen als eine selbstkonsistente Abfolge von Schritten verstanden, die zu einem gewünschten Ergebnis führen. Bei den Schritten handelt es sich um solche, die physikalische Manipulationen von physikalischen Quantitäten bzw. Einheiten erfordern. Üblicherweise aber nicht notwendigerweise nehmen diese Quantitäten die Gestalt von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen oder sonstwie manipuliert werden können. Es hat sich als praktisch erwiesen, hauptsächlich zum Zweck einer gemeinsamen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen und dergleichen zu bezeichnen.
  • Einige Abschnitte der detaillierten Beschreibung, die folgt, werden in Termen von Algorithmen und symbolischen Darstellungen von Operationen mit Datenbits innerhalb eines Computerspeichers dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die von den Fachleuten auf dem Gebiet der Datenverarbeitung verwendet werden, um am wirksamsten den wesentlichen Inhalt ihrer Arbeit anderen Fachleuten zu vermitteln. Ein Algorithmus wird hierin und im allgemeinen als eine selbstkonsistente Abfolge von Schritten verstanden, die zu einem gewünschten Ergebnis führt. Bei diesen Schritten handelt es sich um jene, die physikalische Manipulationen von physikalischen Quantitäten erfordern. Üblicherweise, aber nicht notwendigerweise, nehmen diese Quantitäten die Gestalt von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen oder sonstwie manipuliert werden können. Es hat sich als praktisch erwiesen, aus Gründen einer allgemeinen Übereinkunft, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen und dergleichen zu bezeichnen.
  • Man sollte jedoch im Kopf behalten, daß all diesen und ähnlichen Termen bzw. Ausdrücken passende physikalische Quantitäten zugeordnet werden sollen und es sich hierbei lediglich um praktische Bezeichnungen handelt, die diesen Quantitäten zugeordnet werden. Außer es wird explizit bemerkt, wie von der folgenden Diskussion klar sein wird, beziehen sich Diskussionen, die Ausdrücke, wie z. B. "Verarbeiten" oder "Berechnen" oder "Bestimmen" oder "Darstellen" oder dergleichen, verwenden, auf die Wirkung und auf Verarbeitungen eines Computersystems oder einer ähnlichen elektronischen Berechnungsvorrichtung, die Daten manipuliert und transformiert, die als physikalische (elektronische) Quantitäten bzw. Einheiten innerhalb der Register und Speicher des Computersystems dargestellt werden, und zwar in andere Daten, die in ähnlicher Weise als physikalische Quantitäten bzw. Einheiten innerhalb der Register oder Speicher oder andere derartige Informationsspeicher, Übertragungs- oder Anzeigevorrichtungen dargestellt werden. Derartige Computersysteme verwenden typischerweise einen oder mehrere Prozessoren, um Daten zu verarbeiten, die mit einem Speicher oder mehreren Speichern über einen Bus oder mehrere Busse verbunden sind.
  • Die vorliegende Erfindung betrifft ebenso einen Apparat, um die hierin beschriebenen Operationen durchzuführen. Dieser Apparat kann speziell für die erforderlichen Zwecke aufgebaut sein oder er kann einen Allzweckcomputer umfassen, der selektiv durch ein Computerprogramm, das in dem Computer gespeichert ist, aktiviert oder rekonfiguriert wird. Ein derartiges Computerprogramm kann in einem lesbaren Speichermedium, wie z. B. irgendeinem Typ von Scheiben, einschließlich Disketten, optischen Scheiben, CD-ROMS und magneto-optischen Disks, Nur-Lese-Speicher (ROMS), Speicher mit wahlfreiem Zugriff (RAMs), EPROMs, EEPROMs, magnetischen oder optischen Karten oder jeglichem Typ von Medium gespeichert werden, das zum Speichern elektronischer Instruktionen bzw. Befehlen geeignet ist, wobei jedes mit einem Computersystembus verbunden ist. Die Algorithmen und Anzeigen, die hierin dargestellt werden, stehen nicht inhärent mit irgendeinem bestimmten Computer oder Apparat in Beziehung. Verschiedene Allzweckgeräte können mit Programmen in Übereinstimmung mit den Lehren hierin verwendet werden oder sie können sich als geeignet erweisen, um einen spezialisierteren Apparat aufzubauen, um die erforderlichen Verfahrensschritte durchzuführen. Der notwendige Aufbau für eine Vielfalt von diesen Geräten ergibt sich aus der folgenden Beschreibung. Zusätzlich wird die vorliegende Erfindung nicht unter Bezugnahme auf irgendeine bestimmte Programmiersprache beschrieben. Man wird erkennen, daß eine Vielfalt von Programmiersprachen verwendet werden kann, um die Lehren der Erfindung, wie sie hierin beschrieben ist, umzusetzen.
  • Die vorliegende Erfindung stellt eine reversible Transformation bereit, die es ermöglicht, daß eine auf DCT basierende Kompression verlustbehaftet und verlustfrei ist.
  • Reversibe Transformationen sind effiziente Transformationen, die mit einer Ganzzahl-Arithmetik implementiert wer den und deren Kompressionsergebnisse wieder zum Ursprünglichen hergestellt werden können. Eine Ausführungsform der reversiblen Transformation stellt eine Ausweitung der APT dar.
  • Die reversiblen Transformationen der vorliegenden Erfindung sind dahingehend wirksam (oder fast wirksam), daß sie nicht in den niedrigstwertigen Bits der Koeffizienten redundant sind. Das heißt, die Transformationen der vorliegenden Erfindung sind dahingehend effizient, daß sie nicht eine große Anzahl von Präzisionsbits benötigt (die ansonsten bei einem Versuch, den systemischen Fehler zu beseitigen, verwendet werden würden). Die Effizienz bzw. Wirksamkeit führt zu einer besseren verlustfreien Kompression als die Verwendung einer nicht-reversiblen Transformation mir einem Differenzbild. Verschiedene Verfahren des Aufbaus reversibler APT Implementationen werden im folgenden beschrieben. Die reversible APT hat viele Anwendungen, wie z. B. Video-Autorensysteme.
  • Während Transformationskoeffizienten auf jeden Grad von Präzision gerundet werden können, rundet die vorliegende Erfindung Transformationskoeffizienten auf ganze Zahlen. Eine Rundung, die grober ist als ganze Zahlen, beseitigt Information und stellt einen Typ einer Quantisierung dar. Eine Rundung, die feiner ist als ganze Zahlen bzw. eine Rundung auf ganze Zahlen, führt zu Redundanzen in den niedrigstwertigen Bits der Transformationskoeffizienten, was eine Kompression behindert.
  • Die vorliegende Erfindung stellt DCT Transformationen bereit, die keinen systemischen Fehler aufweisen. Da es keinen systemischen Fehler gibt, handelt es sich bei den Transformationen um reversible oder verlustfreie Transformationen. Die reversiblen Transformationen können für eine verlustfreie Kompression verwendet werden.
  • Die vorliegende Erfindung liefert reversible DCT Transformationen, die eine geringe Fehlanpassung aufweisen. Minimum-Quantisierungsmatrizen werden für eine ±1-Fehlanpassung quantisierter Koeffizienten gegeben. Falls die minimale Quantisierung oder die größere Quantisierung verwendet wird, können die sich ergebenden Koeffizienten mit jeder inversen DCT verwendet werden.
  • Die vorliegende Erfindung kann in Hardware oder Software oder einer Kombination davon implementiert bzw. realisiert werden.
  • Systemübersicht
  • Die reversible DCT der vorlegenden Erfindung kann bei verlustfreien oder verlustbehafteten Systemen verwendet werden, die entweder eine reversible inverse DCT enthalten, um exakt zu erzielen, was ursprünglich eingegeben wurde, oder eine (nichtreversible) inverse DCT nach dem Stand der Technik enthalten. Eine DCT nach dem Stand der Technik wäre dazu in der Lage, den Ausgang bzw. die Ausgabe der reversiblen DCT wegen ihrer ausreichend geringen Fehlanpassung mit der wahren DCT heranzuziehen, um genau dasselbe Ergebnis wie die normale DCT zu erzielen. Mit anderen Worten kann ein MPEG- oder JPEG-Decoder mit einem "Vermächtnis"-DCT Decoder mit der reversiblen DCT der vorliegenden Erfindung verwendet werden.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines verlustfreien und verlustbehafteten Kompressionssystems, das auf DCT basiert. Bemerkenswert ist, daß, obwohl die vorliegende Erfindung manchmal in Termen eines Systems, das auf DCT basiert, beschrieben wird, die vorliegende Erfindung auf andere Transformationen, die auf Blöcken basieren, anwendbar ist. Nimmt man Bezug auf 1, so werden die Eingangsdaten 100 (z. B. ein Eingangsbild) mit einem reversiblen Kompressor 101 der vorliegenden Erfindung, der auf DCT basiert, komprimiert. Das Eingangsbild 100 kann von einem Speicher wiedergewonnen werden oder von einem Kanal empfangen werden, die beide nicht gezeigt wurden, um eine Verschleierung der Erfindung zu vermeiden. Das Eingangsbild kann durch eine Kamera, einen Digitalisierer, einen Scanner, ein Vollbilderfassungsgerät bzw. einen Frame-Grabber oder andere gut bekannte oder ähnlich funktionierende Vorrichtungen erzeugt werden. Die Ergebnisse der Kompression sind eine Vielzahl von Koeffizienten, die zu einem Kanal oder zu einer Speichervorrichtung ausgegeben werden können. Bemerkenswert ist, daß andere Kompressionstypen der Verwendung des Kompressors, der auf DCT basiert, folgen können oder diesem vorausgehen können.
  • Für eine verlustfreie Dekompression wird eine Dekompressor mit einer reversiblen inversen DCT (IDCT) 102 auf unquantifizierte Koeffizienten angewendet, um das Original exakt zu rekonstruieren. Bei der verlustbehafteten Dekompression werden die Transformationskoeffizienten quantifiziert und dann können sie mit einem Dekompressor dekomprimiert werden, indem irgendeine inverse DCT (IDCT) 103 verwendet wird. Wie oben diskutiert wurde, kann es sich bei dem verlustbehafteten Dekompressor um ein "Vermächtnis"-System ("Legacy"-System), wie z. B. einen JPEG- oder MPEG-konformen bzw. -kompatiblen Decoder, handeln.
  • Bei einer Ausführungsform empfängt der DCT Kompressor Pixelkomponenten in einer DCT Transformation, deren Ausgabe eine Zickzackordnung durchmacht, um Frequenzkoeffizienten zu erzeugen. Danach machen die Koeffizienten typischerweise eine verlustfreie Entropiecodierung durch. In ähnlicher Weise machen bei dem inversen DCT Kompressor Frequenzkoeffizienten ein verlustfreies Entropiecodieren mit und werden dann in einen Zickzack-Entordnungsblock und danach zu einer DCT Transformation eingegeben, um die Pixelkomponenten wiederzugewinnen.
  • Der Kompressor 101 ist so gezeigt, daß er mit Dekompressoren 102 und 103 durch einen Kanal oder eine Speichervorrichtung 104 verbunden ist. Sie müssen überhaupt nicht physisch miteinander verbunden sein. Das heißt, die Daten können komprimiert und gespeichert werden, indem der Kompressor verwendet wird, und ein völlig getrenntes Dekompressionssystem kann auf die Information oder Kopien davon zugreifen, um auf die komprimierte Information zuzugreifen. Auf diese Art und Weise ist der Kanal oder der Speicher transparent.
  • 1B ist ein Blockdiagramm einer Ausführungsform des Kompressors der vorliegenden Erfindung. Nimmt man Bezug auf 1B, so beinhaltet der Prozessor einen Farbraum- oder Unterabtastblock 121, der eine Farbraumkonversion oder eine Unterabtastung der Eingangsdaten durchführt. Es handelt sich hierbei um einen optionalen Block und er muß nicht in manchen Kompressoren enthalten sein. Bei einer Ausführungsform ist der Farbraum, der durch den Block 121 durchgeführt wird, reversibel.
  • Die Ausgabe des Farbraum-/Unterabtastblocks 121 ist an der reversiblen DCT 122 angeschlossen. Die transformierten Werte, die von der reversiblen DCT 122 ausgegeben werden, sind mit dem Eingang des Zickzack-Ordnungsblocks 123 verbunden, der die gut bekannten Zickzack-Ordnungstechniken ("zig-zag"-Ordnungstechniken) durchchführ. Bemerkens wert ist, daß dieser Zickzack-Ordnungsblock 123 ebenso optional ist. Der Ausgang des Zickzack-Ordnungsblockes 123 ist mit dem Lauflängenblock 124 verbunden, der die Lauflängen von Nullen identifiziert. Die Ausgabe des Lauflängenblocks 124 ist mit dem Eingang eines Huffman-Codierers 125 verbunden, der die Huffman-Codierung durchführt. Der Ausgang des Huffman-Codierungsblocks ist mit dem Eingang des Signalisierungsblockes 126 verbunden, der die Signalisierung für den Decoder bekanntgibt, um dem Decoder anzuzeigen, welcher Typ von Quantisierungs- oder Decodierungsoptionen genommen wurde, um den Decoder in die Lage zu versetzen, die codierten Daten effektiv zu decodieren. Bei einer Ausführungsform erzeugt der Signalisierungsblock 126 einen Kopf bzw. einen "Header", der den komprimierten Daten vorangeht und dem Decoder die Information anzeigt, um ein Decodieren zu ermöglichen.
  • Optional kann eine Quantisierung mit Skalierungsfaktoren nach dem reversiblen DCT Block 122 und vor dem Zickzack-Ordnungsblock 123 angewendet werden. Eine derartige Quantisierung mit Skalenfaktoren wird im folgenden detaillierter beschrieben.
  • 1C ist ein Blockdiagramm einer alternativen Ausführungsform des Kompressors der vorliegenden Erfindung. Nimmt man Bezug auf 1C, so ist der Farbraum/Unterabtastblock 121 mit der reversiblen DCT 122 verbunden. Der Ausgang der reversiblen DCT 122 ist mit einem optionalen Block 127 für die Quantisierung mit Skalenfaktoren verbunden. Der Ausgang des Blocks 127 für die Quantisierung mit Skalenfaktoren ist mit dem Eingang eines Kontextmodelles 133 verbunden. Das Kontextmodell 133 erzeugt den Kontext für die Daten. Diese Kontexte werden zu der Wahrscheinlichkeits-Schätzmaschine (PEM)134 weitergegeben. Die PEM 134 erzeugt Wahrscheinlichkeitsschätzungen für die Daten basierend auf den empfangenen Kontexten. Diese Wahrscheinlichkeitsschätzungen werden zu dem Bitstromgenerator (BG) 135 ausgegeben, der den Ausgangsbitstrom basierend auf dem Kontext von dem Kontextmodell 133 und den Wahrscheinlichkeitsschätzungen von der PEM 134 erzeugt. Der Ausgang des Bitstromgenerators 135 ist mit dem Signalisierungsblock 126 verbunden.
  • 2 ist ein Blockdiagramm einer Beispielanwendung der vorliegenden Erfindung, und zwar auf dem Gebiet des Video-Autorensystems. Nimmt man Bezug auf 2, so erfassen eine Eingabevorrichtung oder mehrere Eingabevorrichtungen, wie z. B. Kameras 201, Videobilder oder erhalten diese. Während der Erfassung werden die Videodaten verlustfrei durch den verlustfreien Kompressor 202 komprimiert, der mit der Kamera bzw. den Kameras 201 verbunden ist. Bei einer Ausführungsform ermöglicht dies näherungsweise Einsparungen in der Bandbreite und im Speicher von einem Faktor 2, während keinerlei Verschlechterungen eingeführt werden. Mit anderen Worten, es gibt keine Artifakte. Obwohl das letztendliche Soll-Kompressionsverhältnis für Video typischerweise 100 : 1 beiverlustbehafteter Kompression beträgt, bewahrt eine anfängliche verlustfreie Kompression die Information für digitale Effekte zur Hervorhebung bzw. zur Verbesserung und jedes Vollbild stellt ein Hochqualitäts-I-Vollbild (zur Videokompression) dar. I-Vollbilder bzw. I-Frames sind auf dem Gebiet der Videokompression gut bekannt und werden wie ein Standbild gemäß den Kompressionsstandards, wie MPEG und HDTV komprimiert.
  • Die Ausgabe des Kompressors 202 ist mit einem Extraktionsblock 203 verbunden. Zum Editieren können quantisierte DCT Koeffizienten durch den Block 203 extrahiert werden (falls notwendig transcodiert werden) und zu einem Bewegungs-JPEG-Dekompressor 204 zugeführt werden, mit dem er verbunden ist. Der Extraktionsblock 203 kann so arbeiten, daß er bestimmt, welche Vollbilder gewünscht sind und/oder daß er nur eine gewisse Anzahl von Bits eines jeden Koeffizienten auswählt. Zum Beispiel zeigt die Tabelle 13, die unten beschrieben ist, die Anzahl von Bits an, die zu verwerfen bzw. auszusortieren sind (mir anderen Worten, welche Bits behalten werden). Bei einer Ausführungsform kann der Extraktionsblock 203 nur einige der Blöcke auswählen, wodurch das Bild abgeschnitten bzw. begrenzt wird.
  • Der Bewegungs-JPEG-Dekompressor 204 kann eine preisgünstige Vorrichtung oder irgendeine "Vermächtnis"-Vorrichtung bzw. "Legacy"-Vorrichtung sein. Da die komprimierten Daten bereits in dem DCT Transformationsraum sind, wird die Berechnung, die erforderlich ist, um unterschiedliche Schnitte zu versuchen und mit verschiedenen Quantisierungen zu experimentieren, reduziert. Somit erlaubt diese Ausführungsform, daß Information als Echtzeit-Video betrachtet wird, ohne sehr viel Extraverarbeitung.
  • Nachdem der Editor entschieden hat, welche Information beizubehalten ist (z. B. welche Vollbilder in der Endversion sein werden), kann ein verlustfreier Dekompressor, wie z. B. ein Dekompressor 205, verwendet werden, um die Originaldaten wiederzugewinnen. Bemerkenswert ist, daß die Daten von einem Speicher beschafft werden können, der nur die editierten Daten enthält oder der alle oder einen Teil der ursprünglichen Eingangsdaten enthält. In diesem Fall wären eine gewisse Logik oder eine Verarbeitung erforderlich, um auf die korrekte Information zur Dekompression zuzugreifen. Diese Verarbeitung/Logik wäre einem Fachmann gut bekannt.
  • Ein Verbesserungsmechanismus 206 kann mit einem Dekompressor 205 gekoppelt sein, um die ursprünglichen Daten zu verbessern oder vorzuverarbeiten, falls erforderlich, und zwar ohne die Möglichkeit, daß Kompressionsartifakte überbetont werden. Beispiele einer derartigen Verbesserung oder Vorverarbeitung stellen die Vergrößerung eines Teils eines Bildes, die Interpolation zwischen Vollbildern zur Zeitlupenbewegung, die Erhöhung der Schärfe, die Verringerung des Rauschens usw. dar. Diese und andere gut bekannte Verbesserungsmechanismen sind in der Fachwelt gut bekannt.
  • Nach irgendeiner Verbesserung führt ein Kompressor 207 eine volle MPEG-Kompression mit einer Bewegungskompensation durch, um die endgültigen komprimierten Daten zu erzeugen. Der Kompressor 207 ist in der Fachwelt gut bekannt.
  • Während die reversible DCT nur jeglicher verlustfreier Dekompressionsanwendung verwendet werden könnte, ist es am nützlichsten, wenn sie mit "Vermächtnis"-Systemen, die auf einer verlustbehafteten DCT basieren, verwendet wird. Andere vereinheitlichte verlustbehaftete/verlustfreie Kompressionssysteme, wie z. B. die Kompression mit reversiblen Wavelets, können verwendet werden, falls eine "Vermächtnis"-Systemkompatibilität nicht wichtig ist.
  • Die vorliegende Erfindung kann auf jegliche Transformation, die auf einem Block basiert, oder auf jegliche nicht überlappte Transformation ausgedehnt werden, die in 2-Punkt-Rotationen unterteilt bzw. aufgeteilt werden kann. Zum Beispiel kann die vorliegende Erfindung mit den folgenden Transformationen verwendet werden: DFT/unitäre DFT, Kosinus-, Sinus-, Hadamard-, Haar-, Slant-, Karhunen-Loeve-, schnelle KC-, sinusartige Transformationen, eine SVD-Transformation, eine orthogonale Überlapp-Transformation (LOT bzw. "Lapped Orthogonal Transform"), sowie andere. Diesbezüglich wird auf Jain, Anil K., Fundamentals of Digital Processing, Prentice-Hall, Inc., 1989, Seiten 132–138, verwie sen. Anhand dieser Beispiele und der im folgenden beschriebenen Beispiele ist es für einen Fachmann offensichtlich, andere Transformationen zu implementieren.
  • Schnelle DCT Zerlegungen mit der APT
  • Die Allen-parametrisierte Transformation (APT), die im allgemeinen als generalisierte Chen-Transformation (GCT) bezeichnet wird, reduziert die DCT und eine Familie von anderen dazu in Beziehung stehenden Transformationen zu einer Kaskade von "Ganzzahl-Rotationen". Bei einer Ausführungsform umfaßt jede Rotation eine Transformation, wobei der Absolutwert für deren Determinante 1 beträgt. Die vorliegende Erfindung erzielt eine reversible DCT, indem die DCT in eine Vielzahl reversibler Komponenten dekomprimiert wird. Weil die einzelnen Teile reversibel sind, ist die DCT reversibel.
  • 3A zeigt ein Blockdiagramm einer 1D, 8-Punkt-Vorwärts-APT. Der Hauptteil der APT Transformation besteht aus 2-Punkt-Rotationen, die durch den Arcus-Tangents eines Rotationswinkels bezeichnet sind. (Die Rotationen sind "im Uhrzeigersinn" gezeigt, wobei ihre Determinante gleich –1 ist.)
  • Nimmt man Bezug auf 3A, so kann 8-Punkt-Transformation in vier antangliche Rotationen um 45° (arctan = 1) 340, eine 4-Punkt-APT 320 und eine "subsidiäre Matrix" 330 gruppiert werden. Die subsidiäre Matrix 330 enthält zwei Multiplationen zusätzlich zu mehreren 2-Punkt-Rotationen.
  • Somit gibt es drei Sätze von Rotationen, die die Vorwärts-APT Transformation ausbilden. Als erstes liefert ein Satz von 2-Punkt-(2×2)-Rotationen 301 bis 304 eine Eingangsstufe. Ausgänge von jeder der Rotationen 301 bis 304 sind mit den Eingängen eines 4-Punkt-APT Blocks 320 verbunden, der 2-Punkt-Rotationen 305 bis 308 enthält, und mit einer subsidiären Matrix 330 verbunden, die 2-Punkt-Rotationen 309 und 312 bis 315 und Multiplizierer 310 und 311 enthält.
  • Insbesondere empfängt die Rotation 301 Eingänge 0 und 7, die den zwei Eingangsdatenwerten entsprechen und erzeugt ein Ausgangssignal zu einem Eingang einer Rotation 305 und ein Ausgangssignal zu einem Eingang einer Rotation 312. Die Rotation 302 ist angeschlossen, um Eingangsdatenwerte 1 und 6 zu empfangen und empfangt zwei Ausgangssignale, wobei einer mit einem Eingang einer Rotation 306 verbunden ist und einer mir dem Eingang einer Rotation 309 verbunden ist. Die Rotation 303 ist angeschlossen, um Eingangsdatenwerte 2 und 5 zu empfangen und erzeugt zwei Ausgangssignale, von denen eines mit dem anderen Eingang einer Rotation 306 verbunden ist und ein anderes mit dem anderen Eingang einer Rotation 309 verbunden ist. Die Rotation 304 ist angeschlossen, um Eingangsdatenwerte 3 und 4 zu empfangen und erzeugt zwei Ausgangssignale, von denen eines mit dem anderen Eingang einer Rotation 305 und einem Eingang zur Rotation 313 verbunden ist.
  • Die Rotation 305 erzeugt zwei Ausgangssignale, von denen eines mit einem Eingang einer Rotation 307 verbunden ist und das andere mit einem Eingang einer Rotation 308. Die Rotation 306 erzeugt zwei Ausgangssignale, von denen eines mit dem anderen Eingang einer Rotation 307 verbunden ist und das andere davon mit dem anderen Eingang zur Rotation 308 verbunden ist. In Antwort auf diese Eingänge erzeugt die Rotation 307 die 0- und 4-Ausgangssignale, während die Rotation 308 die 2- und 6-Ausgangsignale erzeugt.
  • Bezüglich der subsidiären Matrix erzeugt die Rotation 309 zwei Eingangssignale, die mit Blöcken 310 und 311 zur Multiplikation mit R gekoppelt sind. Der Ausgang des Blocks 310 zur Multiplikation mit R ist mit dem anderen Eingang der Rotation 312 verbunden, während der Ausgang des Blockes 311 zur Multiplikation mit R mit dem anderen Eingang der Rotation 313 verbunden ist. In Antwort auf ihre Eingangssignale erzeugt die Rotation 312 zwei Ausgangssignale, die mit einem Eingang der Rotationen 314 und 315 verbunden sind. In ähnlicher Weise erzeugt die Rotation 313 in Antwort auf ihre Eingangssignale Ausgangssignale, die mir einem Eingang der Rotation 314 und einem Eingang der Rotation 315 verbunden sind. In Antwort auf diese Ausgangssignale erzeugen die Rotationen 314 und 315 die 1- und 7-Ausgangssignale und die 3- und 5-Ausgangssignale, und zwar jeweilig. Die A-, B- und C-Rotationen werden im folgenden detaillierter beschrieben. Bei einer Ausführungsform kann es sich bei jeder der Rotationen 301 bis 304 um die S-Transformation handeln. Jedoch kann in einem derartigen Fall eine Fehlanpassung leiden.
  • Die subsidiäre Matrix, die in 3A gezeigt ist, ist die Chen-Form. Eine Alternative, die auf Hein und Allen, J. Allen zurückzuführen ist und von J. Allen in "Generalized Chen Transform: A Fast Transform for Image Compression", Journal of Electronic Imaging, Band 3(4), Oktober 1994, Seiten 341–347, beschrieben ist, ist in 4 gezeigt. Nimmt man Bezug auf 4, so umfaßt die subsidiäre Matrix sechs Rotationen (um einen Winkel). Ein Paar von Rotationen um einen Winkel einer Rotation von 45° (oder arctan = 1) ist angeschlossen, um jeweils zwei Eingangssignale zu empfangen und zwei Ausgangssignale zu erzeugen. Eines der Ausgangssignale von sowohl der Rotation 401 als auch der Rotation 402 ist mit den Eingangssignalen der Rotation 403 verbunden, während die anderen beiden Ausgänge der Rotationen 401 und 402 mit den Eingängen der Rotation 404 verbunden sind. In Antwort auf diese Eingangssignale erzeugen die Rotationen 403 und 404 zwei Ausgangssignale. Die Rotationen 403 und 404 umfassen die B-Rotation. Eines der Ausgangssignale einer jeden Rotation 403 und 404 ist mir den Eingangssignalen der Rotation 405 verbunden, während die anderen Ausgangssignale sowohl der Rotation 403 als auch der Rotation 404 mit den Eingängen der Rotation 406 verbunden ist. Die Rotationen 405 und 406 umfassen jeweilig die Rotation A und C. Jede der Rotationen 405 und 406 erzeugt zwei Ausgangssignale, 1 und 7 und 5 und 3, und zwar jeweilig.
  • Bei einer Ausführungsform handelt es sich bei den Rotationen um 2-Punkt-(2× 2)-Rotationen. Jede Rotation kann eine 2-Punkt-Transformation oder einen Filter umfassen.
  • Die Ausgangssignale werden skaliert, um mit der DCT übereinzustimmen bzw. daran angepaßt zu sein. Das heißt, die vorliegende Erfindung erzeugt Ausgangssignale, die die Verwendung von Skalierungsfaktoren erforderlich machen, um die Ausgangssignale so zu ändern, daß sie mit jenen zusammenpassen, die sich ergeben würden, wenn eine Fließkomma-DCT verwendet worden wäre. Für eine verlustfreie Kompression/Dekompression können Skalierfaktoren mir Quanitisierungsfaktoren kombiniert werden. Die Skalierfaktoren, die für jeden Ausgang verwendet werden, können von dem Produkt einzelner Skalierfaktoren für jede 2-Punkt-Rotation bestimmt werden. Für die 2-Punkt-Rotationsmatrix der Gestalt, wie in 3A gezeigt ist, wird der Skalierfaktor für beide Ausgangssignale einer jeden Rotation durch die folgende Gleichung gegeben:
    Figure 00060001
  • Für die folgende 2-Punkt-Transformation:
    Figure 00060002
    beträgt der Skalierfaktor
  • Figure 00060003
  • Für die folgende 2-Punkt-Transformation:
    Figure 00060004
    beträgt der Skalierfaktor 1/(a2+b2)1/2 für ein Ausgangssignal, das auf a, b zurückzuführen ist und 1/(c2+d2)1/2 für einen Ausgang, der c, d entspricht.
  • Die separierbare zweidimensionale (2D), 64-Punkt-DCD (APT) kann mit acht 1D, 8-Punkt-DCTs (APTs), einer transponierten Matrix und anderen acht 1D, 8-Punkt-DCTs (APTs) implementiert werden.
  • 3B zeigt Zwischenwerte in der APT, die denselben Skalierfaktor haben. Nimmt man Bezug auf 3B, so zeigt jede schattierte Leitung Eingänge, die denselben Skalierfaktor bzw. Skalenfaktor aufweisen. Die Verwendung derselben Skalierfaktoren beschränkt die Divisoren in 2-Punkt-Transformationen bzw. legt ihnen Nebenbedingungen auf. Zum Beispiel ist es für alle Rotationen mit 1 (alle bis auf 309) nicht erforderlich, denselben Skalierfaktor (im folgenden auch "Skalenfaktor" genannt) für beide Ausgangssignale zu haben, so daß eine unausgeglichene bzw. eine nicht-balancierte Transformation, wie z. B. die S-Transformation verwendet werden könnte. Im Gegensatz hierzu muß die Kaskade einer Rotation mit 1 gefolgt von der Multiplikation niit R (309) dieselben Skalenfaktoren am Ausgang wie der Eingang haben.
  • Nimmt man Bezug auf 3B, so haben die zwei Eingänge für die Rotation 307 dieselben Skalenfaktoren. Die zwei Eingänge zur Rotation 308 haben dieselben Skalenfaktoren. Die zwei Eingänge zur Rotation 314 haben dieselben Skalenfaktoren und die Eingänge zur Rotation 315 haben dieselben Skalenfaktoren. Die Eingänge zu den Rotationen 305 und 306 sind die gleichen. In dem Fall einer Rotation 305 würde dies die oberen Zweige sowohl der Rotation 301 als auch der Rotation 304 beschränken. Bezüglich der Rotationen 312 und 313 haben nicht nur ihre Eingänge dieselben Skalenfaktoren, sondern ebenso die unteren Zweige von jeder der Rotationen 301 und 304 haben dieselben Skalenfaktoren. Weil die Skalenfaktoren bzw. Skalierfaktoren des Ausgangs der unteren Zweige von den Rotationen 301 und 304 dieselben Skalenfaktoren wie die Ausgänge der unteren Zweige der Rotationen 302 und 303 haben, sind dann die Skalenfaktoren aller Eingänge der subsidiären Matrix dieselben.
  • Das Produkt der Skalenfaktoren von zwei Ausgängen stellt den Umfang einer Ausdehnung bzw. Expansion dar. Um eine Effizienz zu gewährleisten, muß deshalb das Produkt beider Skalenfaktoren Idealerweise 1 sein, um eine Ausdehnung zu verhindern. Bei einer Ausführungsform sind beide Skalenfaktoren, damit sie reversibel sind, 1. Bei alternativen Ausführungsformen können die Skalenfaktoren leicht unterschiedlich sein. Zum Beispiel könnten beide Skalenfaktoren 0,99 betragen.
  • Tabelle 1 zeigt Werte für APT Parameter für drei unterschiedliche Ausführungsformen. Der erste Satz von Parametern stellt die irrationalen Zahlen dar, die sich aus der DCT ergeben. Die DCT Implementationen (APT oder andere) zur Kompression können nicht die irrationalen Werte verwenden. Alle aktuellen DCT Implementationen nähern irrationale Parameter an, selbst wenn die Annäherungen sehr genaue Hochpräzisions-Fließkomma-Annäherungen sind. Die APT verwendet rationale Annäherungen mit kleinen ganzen Zahlen, die zu verfolgbaren reversiblen Implementationen führen.
  • Tabelle 1 – APT Parameter
    Figure 00070001
  • Die Tabelle 1 zeigt drei Sätze von APT Parametern, die einen Kompromiß zwischen Einfachheit und Fehlanpassung darstellen. Die APT 1 ist einfach und gut für die Kompression. Die anderen Beispiele, APT 2 und APT 3, stellen Annäherungen dar, die näher an der irrationalen Transformation liegen. Die APT 3 erfüllt den Genauigkeitstest gemäß CCITT-Empfehlung H.261 (IEEE-Standard 1180–1990).
  • Die Wahl der APT Parameter ist nicht nur eine Quelle für eine Fehlanpassung bei einer reversiblen Transformation. Reversible wirksame Transformationen erfordern ein sorgfältiges (reversibles) Runden der ganzen Zahlen bei jedem Schritt der Transformation. Diese Rundungsoperationen verursachen ebenso eine Fehlanpassung. Manche Fehlanpassung ist unvermeidbar, weil Verfahren, die zu denselben Koeffizienten führen, wie eine Fließkomma-Implementation nicht effizient reversibel sein können. Da eine Fehlanpassung aufgrund des Rundens im allgemeinen die Fehlanpassung aufgrund einer Parameterwahl dominiert, können die APT 1-Parameter eine gute Wahl darstellen. Jedoch können die Techniken dieser Erfindung auch auf andere Parameter angewendet werden.
  • Bemerkenswert ist, daß diese APT Parameter eingestellt bzw. angepaßt werden können, um andere Transformationen zu erzielen, die reversibel sein können oder nicht.
  • Reversible DCT Implementationen
  • Bei der vorliegenden Erfindung ist jede 2-Punk-Rotation bei den APT Komponenten reversibel gemacht. Indem jede reversibel gemacht wird, wird die gesamte APT reversibel gemacht, da jeder Schritt umgekehrt werden kann. Zusätzlich zu der Effizienz sind zwei andere Eigenschaften wünschenswert: ausgeglichene Skalierfaktoren und kein internes Runden.
  • Eine 2-Punkt-Transformation hat die Skalenfaktoren "ausgeglichen", falls die Skalenfaktoren für beide Ausgänge dieselben sind. Damit eine Transformation effizient ist (oder nahezu effizient), beträgt ihre Determinante ±1 (oder fast ±1). Falls die Determinante darauf beschränkt bzw. begrenzt ist, ±1 zu betragen, beträgt das Produkt des Skalierfaktors für die zwei Ausgänge 1. Es ist wünschenswert, daß beide Skalierfaktoren bzw. Skalenfaktoren gleich 1 sind. Bei einer anderen Ausführungsform ist der eine Skalierfaktor reziprok zu dem anderen. In diesem Fall ist ein Skalierfaktor größer als 1. Auf diese Art und Weise wird die Determinante ±1 betragen. Ein Skalierfaktor größer als 1 bewirkt eine Quantisierung, was zu einer Fehlanpassung fuhrt.
  • Bemerkenswert ist, daß die Skalierfaktoren in der Gleichung, die oben angegeben ist, für eine APT gedacht sind, die nicht effizient ist, so daß ihr Produkt nicht 1 ist. Wenn beide Skalenfaktoren kleiner als 1 sind, Führt dies zu einem guten Rundungsergebnis, was eine geringe Fehlanpassung ermöglicht, aber ein derartiges System ist nicht effizient reversibel.
  • Ein Runden bei jedem Schritt ermöglicht eine Reversibilität. Eine 2-Punkt-Rotation mit "keinem internen Runden" zeigt an, daß höchstens nur zwei Rundungsoperationen am Ausgang einer jeden Stufe ausgeführt werden. Manche Implementationen weisen zusätzliche Rundungsoperationen innerhalb der Stufe auf, z. B. die Leiterfilter-Implementationen bzw. die Siebketten-Implementationen, die unten beschrieben werden. Extra-Rundungsoperationen erhöhen die Fehlanpassung.
  • Wenn die DCT für eine verlustbehaftete Kompression verwendet wird, so ist die DCT unitär, so daß dieselbe Transformation sowohl für die Vorwärtstransformation als auch für die inverse Transformation verwendet werden kann. Jedoch invertiert bei der vorliegenden Erfindung die inverse Transformation bezüglich reversibler Implementationen das Runden. Deshalb weist die inverse Transformation den inversen Datenfluß der 3 auf, wobei jede Vorwärts-2-Punkt-Transformation und Multiplikation durch die entsprechende inverse Transformation ersetzt wird.
  • Reversible Implementationen ohne internes Runden oder Nachschlagtabellen
  • Gemäß einer Ausführungsform stellt die vorliegende Erfindung reversible Implementationen von 2-Punkt-Rotationen und Multiplikationen vor, die nicht ein internes Runden oder Nachschlagtabellen erfordern. Für Parameter, die effiziente ausgeglichene 2-Punkt-Rotationen dieses Typs aufweisen, stellen diese wichtige Bausteine bzw. Baublöcke dar. Manche 2-Punkt-Transformationen werden unten beschrieben, die nicht ausgeglichen bzw. balanciert sind oder nur nahezu effizient sind. Leiterfilter- und Nachschlagtabellen-Alternativen werden bereitgestellt.
  • Die Wahl von Offsets steuert häufig das Erreichen einer Reversibilität. Die Diskussion, wie nur manche Offsets zu reversiblen Transformationen führen, wird im folgenden geführt.
  • "1": 1,1-Transformation, S-Trasformation – unbalanciert
  • Bei einer Ausführungsform können die "1"-Blöcke mit der folgenden Transformation implementiert bzw. realisiert werden, wo a und b die Eingänge zu der Vorwärtstransformation und x und y die Ausgänge zu der Vorwärtstransformation darstellen:
    Figure 00080001
  • Bemerkenswert ist, daß die Bodenfunktion (⎿.⏌) und die Deckenfunktionen (⎾.⏋) ein Runden nach negativ unendlich und positiv unendlich jeweilig bedeuten.
  • Figure 00080002
  • Bei einer Ausführungsform betragen die Skalierfaktoren √2 und 1/√2 jeweilig.
  • "A": 5,1-Transformation – unbalanciert
  • Das folgende ist eine Ausführungsform der "A"-Rotation.
    Figure 00080003
    wobei die wiedergewonnen niedrigstwertigten Bits durch die folgende Gleichung gegeben werden (d. h. die weggerundeten Bits): δ = (5y – 13) mod 26
  • Bei dieser Ausführungsform betragen die Skalierfaktoren jeweilig √26 und 1/√26.
  • "A": 5,1-Transformation – balanciert, ineffizient
  • Das folgende ist eine alternative Ausführungsform der A-Rotation.
    Figure 00080004
    wobei δ ≡ (–(25x + 5y – 12))mod 26 δ1 = δ mod 5
    Figure 00080005
  • Diese Transformation hat die Determinante 26/25 = 1,04. Deshalb beträgt die Redundanz log2 1,04 = 0,06 Bits. Sie ist ineffizient aber nahe genug daran, effizient zu sein, um für eine verlustfreie Kompression nützlich zu sein. Da sie balanciert ist, ist sie für eine verlustbehaftete nützlicher als die balancierte effiziente Version.
  • Bei einer Ausführungsform sind beide Skalierfaktoren 5/√26.
  • "A": 60,11-Transformation – balanciert, effizient
  • Eine andere alternative Ausführungsform der "A"-Rotation ist wie folgt:
    Figure 00090001
    Diese Trasformation ist balanciert und effizient. Diese Transformation verwendet 11, 60, 61, was ein pythagoreisches Triplet a, b, c darstellt, wobei b + 1 = c und a2 = 2b + 1. Jedoch ist das Ergebnis von 60/11 ≅ 5,4545, was eine nicht sehr gute Annäherung für tan 7π/16 ≅ 5,0273 darstellt. Hier wurde die Nähe zu der DCT einer balancierten, effizienten und einfachen Berechnung geopfert.
  • In diesem Fall sind die Skalierfaktoren beide 1.
  • "B": 12,5-Transformation
  • Das folgende stellt eine Ausführungsform für die "B"-Rotation dar.
  • Figure 00090002
  • Diese ist sowohl balanciert als auch effizient. Die Ziffern 5, 12, 13 sind ein pythagoreisches Triplet a, b, c mit b+1 = c und a2 – 2b+1. Dies führt zu einer sehr guten 4-Punkt-APT (DCT).
  • Dies Skalierfaktoren sind beide 1.
  • Bemerkenswert ist, daß Offsets für die Reversibilität sehr wichtig sind. Die Wahl von +6 für beide Offsets in der Vorwärtstransformation der obigen Gleichung führt zu einer reversiblen Transformation, während dies andere Offsets nicht tun. Falls z. B. die Offsets beide Null sind, wie dies bei dem ersten Satz der unteren Gleichungen der Fall ist, dann führen die Eingänge a=0, b=0 und a=1, b=0 beide zu x=0, y=0.
  • Figure 00090003
  • Es ist offensichtlich von diesem Ergebnis, daß die Auswahl des Offsets die Reversibilität steuern kann.
  • Ein anderes Beispiel ist unten gezeigt, wo beide Offsets +5 betragen. In diesem Fall führen die Eingänge a=4, b=0 und a=4, b=1 beide zu x=4, y=1.
  • Figure 00090004
  • Die meisten Paar-Offsets führen nicht zu einer reversiblen Transformation. Von den möglichen 169 Paaren von Offsets (Offsets sind 0 bis 12), die einzigen 13 Paare von Offsets, die zu einer Reversibilität führen, sind 0,10; 1,5; 2,0; 3,8; 4,3; 5,11; 6,6; 7,1; 8,9; 9,4; 10,12; 11,7 und 12,2.
  • "C": 3,2-Transformation – unbalanciert
  • Eine Ausführungsform der "C"-Rotation ist die folgende:
    Figure 00100001
    δ ≡ (6 – 5y)mod 13
  • Dies ist eine effiziente Transformation. In diesem Fall betragen die Skalierfaktoren jeweilig √13 und 1/√13.
  • "C": 3,2-Transformation – unbalanciert mit wachsender Summe
  • Eine alternative Ausführungsform der "C"-Rotation, die unbalanciert mit wachsender Summe ist, jedoch effizient ist, lautet wie folgt:
    Figure 00100002
    δ ≡ (6 + 5x)mod 13
  • In diesem Fall betragen die Skalierfaktoren jeweilig 1/√13 und √13.
  • Es ist bei unbalancierten Transformationen üblich, die Summe durch den größeren Divisor zu teilen. Dies fuhrt zu einem minimalen Wachstum in der Koeffizientengröße. Jedoch führt die Summe zu visuell relevanteren Koeffizienten. Wendet man den größeren Divisor auf die Differenz an und erlaubt man ein größeres Wachsen hinsichtlich der Summe, so führt dies zu einer geringeren Fehlanpassung hinsichtlich der eher visuell relevanten Koeffizienten.
  • "C": 4,3-Transformation – balanciert
  • Eine alternierende Ausführungsform der "C"-Rotation, die balanciert ist, lautet wie folgt:
    Figure 00110001
  • Diese Transformation ist balanciert und effizient. Wieder handelt es sich bei dem Ziffernsatz 3, 4, 5 um ein pythagoreisches Triplet a, b, c mit b+ 1 = c und a2 = 2b+1. Jedoch ist 4/3 1,3333 keine sehr gute Annäherung für tan 5π/16 1,4966.
  • Die Skalierfaktoren betragen beide 1.
  • Der Multiplizierer "R":√2
  • Bei einer Ausführungsform verwendet der Multiplizierfaktor eine ganzzahlige Annäherung von √2. Der R-Faktor normalisiert die subsidäre Matrix.
    Figure 00110002
    δ = (90 – 181x)mod 256 0 ≤ δ < 181
  • Nicht-DCT-Transformationen
  • 5A zeigt eine 8-Punkt-Hadamard-Transformation. Nimmt man Bezug auf 5A so umfassen Rotationen 501 bis 512 2-Punkt-Rotationen, um tan(π/4) = 1. Die Rotation 501 ist angeschlossen, um Eingangsdatenwerte 0 und 7 zu empfangen und um Ausgaben zu den Rotationen 505 und 507 zu erzeugen. Die Rotation 502 ist angeschlossen, um Eingangsdatenwerte 1 und 6 zu empfangen und Ausgangssignale für die Rotationen 506 und 508 zu erzeugen. Die Rotation 503 ist angeschlossen, um Eingangsdatenwerte 2 und 5 zu empfangen und um Ausgangssignale für die Rotationen 506 und 508 bereitzustellen, während die Rotation 504 angeschlossen ist, um Eingangsdaten-Abtastwerte 3 und 4 zu empfangen und um Ausgangssignale für die Rotation 505 und 508 bereitzustellen.
  • In Antwort auf ihre Eingangssignale erzeugt die Rotation 505 Ausgangssignale für die Rotationen 509 und 510. In Antwort auf ihre Eingangssignale erzeugt die Rotation 506 Ausgangssignale bzw. Ausgaben zu den Rotationen 509 und 510. In Antwort auf diese Eingaben bzw. Eingangssignale erzeugt die Rotation 509 Ausgabeabtastwerte 0 und 4 und in Antwort auf ihre Eingaben erzeugt die Rotation 510 Ausgabenabtastwerte 2 und 6.
  • Die Rotation 507 erzeugt Ausgaben zu den Rotationen 511 und 512. Die Rotation 508 erzeugt ebenso Ausgaben zu der Rotation 511 und 512. In Antwort auf diese Eingaben erzeugt die Rotation 505 Ausgabeabtastwerte 1 und 5, während die Rotation 512 Ausgabeabtastwerte 3 und 7 erzeugt.
  • 5B zeigt eine 8-Punkt-Haar-Transformation. Nimmt man Bezug auf 5B, so umfaßt die Haar-Transformation Rotationen 520 bis 526, die jeweils 2-Punkt-Rotationen um tan(π/4) = 1 darstellen. Die Rotation 520 ist angeschlossen, um Eingangsdatenwerte 0 und 1 zu empfangen und um Ausgangsdatenwerte 4 und eine Ausgabe zu der Rotation 524 zu erzeugen. Die Rotation 521 ist angeschlossen, um Eingangsdatenwerte 2 und 3 zu empfangen und Ausgaben zu der Rotation 524 und den Ausgangsdatenwert 5 zu erzeugen. Die Rotation 522 ist angeschlossen, um Eingangsdatenwerte 4 und 5 zu empfangen und Ausgaben zu der Rotation 525 und einen Ausgangsdatenwert 6 zu erzeugen. Die Rotation 523 ist angeschlossen, um Eingangsdatenwerte 6 und 7 zu empfangen und um Ausgangssignale zu der Rotation 525 und dem Ausgangsdatenwert 7 zu erzeugen. In Antwort auf ihre Eingänge, erzeugt die Rotation 524 den Ausgangsdatenwert 2 und ein Ausgabe zu der Rotation 526. Die Rotation 525 erzeugt eine Ausgabe zu der Rotation 526 und erzeugt einen Ausgangsdatenwert 3. Die Rotation 526 gibt Werte 0 und 1 in Antwort auf ihre Eingänge aus.
  • 5C zeigt eine Ausführungsform der 4-Punkt-Sinustransformation. Nimmt man Bezug auf 5C, so umfaßt die Sinustransformation Rotationen 531 bis 534. Die Rotationen 531 und 532 umfassen 2-Punkt-Rotationen um tan(π/4) = 1, während die Rotationen 533 und 534 Rotation um D umfassen, was als tan(0,1762π) dargestellt ist.
  • Die Rotation 531 ist angeschlossen, um die Eingangsdatenwerte 0 und 3 zu empfangen und um Ausgaben zu den Rotationen 533 und 534 zu erzeugen, während die Rotation 532 angeschlossen ist, um Eingangsdatenwerte 2 und 1 zu empfangen und um Ausgaben zu den Rotationen 533 und 534 zu erzeugen. In Antwort auf ihre jeweiligen Eingaben, erzeugt die Rotation 533 Ausgangsdatenwerte 0 und 2, während die Rotation 534 Ausgangswerte 3 und 1 erzeugt.
  • 5D zeigt eine Ausführungsform der 4-Punkt-Slant-Transformation. Nimmt man Bezug auf 5D, so umfaßt die Slant-Transformation Rotationen 540 bis 543. Die Rotationen 540 bis 542 umfassen 2-Punkt-Rotationen um tan(π/4) = 1, während die Rotation 543 eine 2-Punkt-Rotation um tan(0,1024π) umfaßt. Die Rotation 540 ist angeschlossen, um Eingangsdatenwerte 0 und 3 zu empfangen und sie liefert Ausgaben zu den Rotationen 542 und 543, während die Rotation 541 angeschlossen ist, um Eingangsdatenwerte 2 und 1 zu empfangen und Ausgaben zu den Rotationen 542 und 543 zu erzeugen. In Antwort auf ihre Eingaben bzw. Eingänge erzeugt die Rotation 542 Ausgangsdatenwerte 0 und 2, während die Rotation 543 Ausgangswerte 3 und 1 erzeugt. Unter der Voraussetzung der oben beschriebenen Beispiele kann ein Fachmann andere Transformationen ebenso implementieren.
  • Effiziente, reversible 2-Punkt-Rotationen, die Leiterfilter verwenden
  • Die Leiterfilter bzw. die Siebketten können verwendet werden, um jede 2-Punkt-Rotation in einer reversiblen, effizienten, balancierten Art und Weise zu implementieren. Die Leiterfilter weisen beide Skalierfaktoren gleich 1 auf. Die untenstehende Gleichung stellt eine Leiterfilterzerlegung für eine Rotation mit der Determinante 1 (entgegen dem Uhrzeigersinn) dar.
  • Figure 00120001
  • Um reversibel und effizient zu sein, folgt jeder Multiplikation eine Rundung zu einer ganzen Zahl, wie in den 6 und 7 gezeigt ist. Um reversibel zu sein, werden Multiplikationen mit irrationalen Zahlen genauso bei der Vorwärts- und inversen Transformation durchgeführt.
  • Nimmt man Bezug auf 6, so ist eine Leiterfilter-Implementation gezeigt, die die Eingänge 610 und 611 aufweist. Der Eingang 611 ist an einem Multiplizierer 602 angeschlossen, der den Eingang 610 mit der Quantität von cosθ – 1 geteilt durch sinθ multipliziert. Das Ergebnis der Multiplikation wird auf die nächstliegende ganze Zahl bei Block 603 gerundet. Die Ergebnisse des Rundens werden zu dem Eingang 611 durch den Addierer 604 hinzugefügt. Der Ausgang des Addierers 604 ist an dem Multiplizierer 606 angeschlossen, der den Ausgang des Addierers 604 mit sinθ multipliziert. Das Ergebnis wird auf die ganze Zahl beim Block 604 gerundet. Die Ergebnisse des Rundens werden zu dem Eingang 610 hinzugefügt, indem der Addierer 601 verwendet wird. Der Ausgang des Addierers 601 stellt eine Ausgabe des Leiterfilters, die Ausgabe 612, dar. Die Ausgabe des Addierers 601 wird ebenso in den Multiplizierer 607 eingegeben, der den Ausgang des Addierers 601 mit dem Wert von cosθ – 1 dividiert durch sinθ multipliziert. Die Ergebnisse der Mu1tiplikation werden auf eine ganze Zahl durch den Block 608 gerundet. Die Ergebnisse des Rundens werden zu dem Ausgang des Addierers 604 hinzugefügt, indem der Addierer 609 verwendet wird. Der Ausgang des Addierers 609 stellt den anderen Ausgang des Leiterfilters dar, den Ausgang 613.
  • Nimmt man Bezug auf 7, so werden 2 Eingänge, der Eingang 701 und 702, in den Leiterfilter eingegeben. Der Eingang 702 wird in den Multiplizierer 703 eingegeben, der den Eingang 701 mit (cosθ – 1)/sinθ multipliziert. Die Ergebnisse der Multiplikation werden auf eine ganze Zahl durch den Block 704 gerundet. Die Ergebnisse des Rundens werden von dem Eingang 702 durch den Subtrahierer 705 subtrahiert. Der Ausgang des Substrahierers 705 ist an den Eingang des Multiplizierers 706 angeschlossen, der ihn mit sinθ multipliziert. Die Ergebnisse der Multiplikation werden auf eine ganze Zahl durch den Block 707 gerundet. Die Ergebnisse des Rundens werden von dem Eingang 701 durch den Subtrahierer 708 abgezogen. Der Ausgang des Subtrahierers 708 stellt einen Ausgang des Leiterfilters, den Ausgang 712 dar.
  • Der Ausgang des Subtrahierers 708 ist ebenso an den Eingang eines Multiplizierers 709 angeschlossen, der ihn mit (cosθ – 1)/sinθ multipliziert. Die Ergebnisse der Multiplikation werden auf eine ganze Zahl durch den Block 710 gerundet. Die Ergebnisse des Rundens werden von dem Ausgang des Subtrahierers 705 durch den Subtrahierer 711 subtrahiert. Der Ausgang des Subtrahierers 711 stellt den anderen Ausgang des Leiterfilters, den Ausgang 713 dar.
  • Der Effekt der drei Rundungsoperationen und der Effekt der Präzision der Implementation der irrationalen Multiplikationen verursacht einen Fehlanpassungsfehler. Die Leiterfilter-Implementationen weisen häufig mehr Fehlanpassungsfehler auf als andere Implementationen.
  • Anstelle der Zerlegung der gesamten DCT in 2×2-Rotationen, können größere Leiterfilter konstruiert werden. Zum Beispiel kann die 4-Punkt-DCT als ein Leiterfilter implementiert werden, indem er in drei Matrizen zerlegt wird, wie im folgenden gezeigt ist:
    Figure 00120002
  • Diese Matrizen enthalten die folgenden Konstanten:
    Figure 00130001
    Figure 00140001
  • Somit liefert die vorliegende Erfindung eine neue 4-Punkt-Reversible, wobei weiter eine effiziente, reversible 2×2-Zerlegung für die 4-Punkt-(4×4)-Rotation durchgeführt wird.
  • Bemerkenswert ist, daß obwohl bei der obigen Beschreibung die Transformation eine 2-Punkt-DCT, eine 4-Punkt-APT und eine 8-Punkt×8 Nichttrivialmatrix enthält, die vorliegende Erfindung auf andere Größen, wie z. B. 16×16, ausgedehnt werden kann.
  • Nachschlagtabellen für effiziente, reversible 2-Punkt-Rotationen
  • Leiterfilter können verwendet werden, um eine effiziente, reversible Implementation für jede 2-Punkt-Rotation auszuführen. Die vorliegende Erfindung stellt ein Verfahren und einen Apparat, die auf einer Nachschlagtabelle basieren, bereit, um das Runden zu steuern, um effiziente, reversible Transformation zu erzeugen, die ein verbessertes Runden aufweisen. Ein verbessertes Runden reduziert den Fehlanpassungsfehler. Balancierte Transformationen können konstruiert werden, und falls eine Transformation balanciert ist, sind beide Skalierfaktoren 1.
  • Unter der Voraussetzung einer Transformation mit einer Determinante größer oder gleich 1 ist eine Eins-zu-Eins- oder eine Eins-zu-Viele-Abbildung von Eingangswerten auf transformierte Werte möglich. Für reversible Transformationen ist nur eine Einszu-Eins-Abbildung von Interesse. Für Transformationen mit einer Determinante, die etwas größer als 1 ist, kann eine geringe Anzahl der möglichen transformierten Werte ungenutzt sein und die Abbildung kann als 1 : 1 behandelt werden.
  • Es gibt 2-Punkt-Ganzzahl-Rotationen, die nicht reversibel mit jeglicher festgelegter Wahl von Rundungsoffsets reversibel gemacht werden können. Man betrachte z. B. die folgenden Gleichungen, die eine 45°-Rotation darstellen, wobei die Näherung verwendet wird, die für den APT Parameter R in der Tabelle 1 gegeben ist.
  • Figure 00150001
  • Dies ist nicht reversibel für alle konstanten Rundungsoffsets. Jedoch, falls die Rundungsoffsets Funktionen der Eingaben sind, kann die Funktion reversibel gemacht werden. Das heißt, das Runden variiert als eine Funktion der Eingaben. Weiter sind in diesem Fall die Rundungsoffsets nur Funktionen der Summe und der Differenz der Eingabenmodulo, dem Divisor von 181. Ein Beispiel der Funktion ist unten in Verbindung mit Tabelle 2 beschrieben. Deshalb gibt es nur 181·181 = 32761 Paare von Rundungsoffsets.
  • Bei einer anderen Ausführungsform ist der Moduloteil der obigen Gleichung entfernt.
  • 8 zeigt einen Abschnitt der Abbildung von Eingangswerten zu transformierten Ausgangswerten für die 45°-Rotation. Die obige Gleichung kann wie folgt neu geschrieben werden:
    Figure 00150002
  • Die Summe und die Differenz der Eingänge sind jeweilig s und d (s = a+b, d = a–b). Bemerkenswert ist, daß die Parität der Summe und die Differenz gleich sind; d. h. beide sind gerade oder beide sind ungerade. Die schattierten Flächen bzw. Vierecke zeigen Paare von Werten, die nicht auftreten können, da die Parität nicht dieselbe ist. Nur die nichtschattierten Paare von Werten treten tatsächlich auf. Ebenso ist s und d geteilt durch √2 mit einer normalen Rundung auf eine ganze Zahl gezeigt. Die dicken Linien gruppieren Paare von Werten mit dem gleichen s/√2 und d/√2. Die Abbildung ist bereits 1 : 1 für jeden Bereich mit dicker Linie, der ein einziges unschattiertes Viereck aufweist. Bereiche mit 2 unschattierten Vierecken zeigen Probleme, wo "Kollisionen" oder "Löcher" auftreten, wo ein normales Runden zwei mögliche Eingaben auf dieselben Transformationswerte abbilden und sie beide dieselbe Antwort ergeben würden. Bereiche mit nur einem schattierten Viereck zeigen "Extras", d. h. Transformationsausgabewerte, die bei einem normalen Runden nicht verwendet werden würden. Die Pfeile zeigen, wie mit einem geeigneten Runden die Abbildung so gemacht werden kann, daß sie 1 : 1 ist, indem die Ausgabewerte für Extras für die Eingabewerte verwendet werden, die Kollisionen darstellen.
  • Zum Beispiel wird dort, wo die s und d Eingaben 2 und 2 sind, die Ausgabe nicht 1,1 sein, statt dessen wird sie 0,2 sein (siehe Pfeil 801). Wenn das Inverse durchgeführt wird, würde ein Nachschlagtabelleneintrag für 0,2 auf die Ausgabe 1,1 zeigen. Die Bedingung, daß die Determinante ≥ 1 ist, garantiert, daß für jede Kollision es wenigstens ein Extra gibt. Falls die Kollisionen durch nah beieinanderliegende Extras dargestellt werden, wird eine Fehlanpassung aufgrund des Rundens reduziert und kann minimiert werden.
  • 9 zeigt die Kollisionen ("O") und die Extras ("+") für eine 45°-Rotation unter der Verwendung der Approximation 1/√2 ≃ 29/41 = 0,7073. (Der kleinere Nenner 41 wird anstelle von 181 verwendet, so daß alle Möglichkeiten auf der Seite gezeigt werden können. Die entsprechende Figur bzw. Darstellung für einen Nenner 181 ist ähnlich.) In diesem Beispiel liegt die Determinante sehr nahe bei 1 (1,0006) und die Anzahl der Extras ist gleich der Anzahl der Kollisionen.
  • Die Anzahl der Kollisionen oder die Anzahl der Extras, die nicht ein Paar haben, weist auf die Ausdehnung bzw. Expansion der Transformation hin.
  • Tabelle 2 zeigt eine Beispiel-Abbildung für eine 5°-Rotation, wobei die Näherung 1/√2 ≅ = 5/7 = 0,7143 verwendet wird.
  • Tabelle 2 – Beispiel-Abbildung
    Figure 00160001
  • Dies ist nicht sehr genau, aber der Zähler ist ausreichend klein, so daß die Ergebnisse aller möglichen (Summe, Differenz) Paare von Eingaben auf einer Seite aufgelistet erden können. Für jedes Paar wird die Summe des squadierten Fehlers aufgelistet.
  • Bemerkenswert ist, daß, ausgenommen den Fall, wo beide Eingaben Null sind, es einen gewissen Fehler selbst dann gibt, falls das beste Runden zu einer ganzen Zahl verwendet wird. Der mittlere RMSE bzw. mittlere quadratische Fehler zum Runden Paaren zu der nächstliegenden ganzen Zahl beträgt 1/√2 ≅ 0,289. Die 5/7-Näherung weist vier Kollisionen aus 25 möglichen Eingabepaaren auf. Diese vier Kollisionen erhöhen den RMSE auf 0,6529 für diese Näherung. Die Spalte, die "Rundungsoffset" ("Rundungsversetz") genannt wird, stellt die Ausgabe der Nachschlagtabellen dar Für die Vorwärtstransformation stellt die Spalte "Summe-, Differenzeingaben" die Eingaben dar und für die inverse Transformation stellt die Spalte "ganzzahlige Ausgabe für Reversibilität" die Eingaben dar.
  • Die 128/181-Näherung, die in der Tabelle 1 gegeben ist, ist in vernünftigem Rahmen genau. Der Zähler 128 stellt eine Potenz von 2 dar, was hinsichtlich der Berechnung nützlich ist. Die Determinante beträgt 1,0002 (logt 1,0002 = 0,0003 Bits), so daß sie sehr nahe daran ist, effizient zu sein. Der mittlere RMSE beträgt bei einer guten Nachschlagtabelle 0,4434 und der Spitzenfehler beträgt 1,92.
  • Vorwärtsberechnung
  • Eine vollständige Vorwärtsberechnung einer Rotation für die 2×2-DCT wird wie folgt bewerkstelligt. Die Näherung 1/√2 ≅ 128/181 wird für dieses Beispiel angenommen. Als erstes wird zur Berechnung des Vorwärtigen die Summe und Differenz der Eingaben a und b gemäß der folgenden Gleichung berechnet. Summe = a + b Differenz = a – b
  • Als nächstes werden die Summe und die Differenz durch 181 geteilt, wobei der Rest aufbewahrt bzw. gespeichert wird, und zwar gemäß der folgenden Gleichungen. (Bemerkenswert ist, daß 128/181 ≅ 181/286 bei manchen Implementationen verwendet werden kann, um die Division zu beschleunigen.) ss = Summe/181 dd = Differenz/181 s = Summe mod 181 d = Differenz mod 181
  • Die Nachschlagtabelle gibt an, daß das Paar der Modulo-181-Werte s, d dieselbe Parität haben (sie sind beide entweder gerade oder beide ungerade). Falls ss und dd nicht dieselbe Parität aufweisen, dann wird die Parität von einem der Modulo-Werte geändert. Die Änderung wird so durchgeführt, daß Werte in dem Bereich 0...180 bleiben. Bei dem folgenden Pseudo-Code bedeutet "^" Exklusiv-ODER. Dieser Schritt wird für ungerade Nenner benötigt, er wird nicht für gerade Nenner benötigt.
  • Der Pseudo-Code lautet wie folgt:
    falls (ss ist ungerade und dd ist gerade) oder (ss ist gerade und dd ist ungerade) falls (d = = 180) s' = s^1 ansonsten d' = d^1
  • Die Quadratwurzel von 1/2 multipliziert mit s und d kann bestimmt werden, indem 128/181 (oder 181/256) oder eine Nachschlagtabelle verwendet wird. Der Rundungsversatz bzw. der Rundungsoffset kann in der Nachschlagtabelle gefunden werden. Bei einer Ausführungsform betragen die Rundungsoffsets –1 ... 1, so daß die Datenbreite der Nachschlagtabellen zwei Bits betragen kann. Die Quadratwurzel des Teiles der Eingaben, die durch ss und dd dargestellt werden, beträgt jeweils 128 ss und 128 dd, was durch eine Verschiebung implementiert werden kann. Bei der folgenden Gleichung steht "sqrt" für die Wurzelfunktion: x = sqrt(1/2)·s' + LUT_f[s',d'] + 128·ss y = sqrt(1/2)·d' + LUT_g[s',d'] + 128·ddfür die Gleichung:
    Figure 00170001
  • Alternativ kann die Nachschlagtabelle sowohl die Quadratwurzel von s (oder d) als auch den Rundungsoffset wiedergeben. Bei einer Ausführungsform haben derartige Nachschlagtabellen eine Datenbreite von 7 Bits. x = LUT_sqrt1/2_f[s',d'] + 128·ss y = LUT_sqrt1/2_g[s',d'] + 128·dd
  • Die Abkürzung "sqrt" steht für Quadratwurzel. Die Werte von s und d variieren von 0 bis 180, aber nicht alle Paare treten auf. In manchen Fällen, wo f und g 10-dimensionale Felder bzw. Arrays sind, würde die Indizierung einer ID-Nachschlagtabelle mit s+181·d nahezu die Hälfte der Speicherstellen verschwenden. Weil 181 ungerade ist, handhabt die Verwendung von s'/2+181·d'/2 nicht korrekt Randbedingungen. Das folgende Indizierungsschema kann verwendet werden. Index = s'/2 + d'·90 + (d + 1)/2
  • 12 ist ein Blockdiagramm einer Ausführungsform einer Rotation gemäß der vorliegenden Erfindung. Nimmt man Bezug auf 12, so werden Eingaben a und b durch einen Addierer 1201 addiert, um eine Summe (s) zu erzeugen, wohingegen Eingaben a und b in einen Subtrahierer 1202 eingegeben werden, der die Differenz (d) von a–b bestimmt. Die Summe (s) wird in den Dividierer 1203 eingegeben, der sie durch 183 dividiert. Die Restausgabe des Dividierers 1203 ist an die Eingänge des Paritätskorrekturblockes 1205 angeschlossen und die Quotientenausgabe ist an den Multiplizierer 1206 angeschlossen. Die Differenzausgabe von dem Subtrahierer 1202 wird zu dem Dividierer 1204 eingegeben, der sie durch 181 dividiert und das Restergebnis zu dem anderen Eingang des Paritätskonekturblockes 1205 ausgibt und den Quotienten zu dem Eingang des Multiplizierers 1207 ausgibt. Der Paritätskorrektorblock 1205 führt die Paritätskorrektur durch, die oben beschrieben ist, und gibt s' und d' aus, die jeweilig an die zwei Eingänge der Nachschlagtabelle (LUT bzw. "Look-Up Table") 1208 und an die Multiplizierer 1209 und 1210 jeweilig angeschlossen sind.
  • Der Multiplizierer 1206 multipliziert die ss-Ausgabe vom Dividierer 1203 durch 128 und gibt das Ergebnis zu dem Addierer 1211. Der Multiplizierer 1207 multipliziert die Ausgabe der dd-Ausgabe des Dividierers 1204 mit 128 und gibt das Ergebnis zu dem Addierer 1212 aus. Der Multiplizierer 1209 multipliziert s' mit √½ und gibt das Ergebnis zu dem Addierer 1211, wohingegen der Multiplizierer 1210d' mir √½ multipliziert und das Ergebnis zu dem Addierer 1212 ausgibt.
  • Die LUT 1208 erzeugt die f- und g-Werte, wie oben beschrieben ist und gibt sie jeweilig zu den Addierern 1211 und 1212. Der Addierer 1211 addiert die Eingaben zusammen, um die x-Ausgabe der Rotation zu erzeugen, während der Addierer 1212 seine Eingaben bzw. Eingänge addiert, um die y-Ausgabe zu erzeugen.
  • Inverse Berechnung
  • Bei einer Ausführungsform wird, um die komplette Inversion zu berechnen, die Näherung von √½ ≅ 128/181 angenommen.
  • Als erstes werden die Eingänge x und y durch 128 geteilt, während der Rest bewahrt bzw. gespeichert wird, und zwar gemäß den folgenden Gleichungen: ss = x/128 dd = y/128 i = x mod 128 j = y mod 128
  • Als nächstes werden die Modulo-128-Werte mit der Quadratwurzel von 2 multipliziert und die Rundungsoffsets werden subtrahiert. (Dies kann in einer LUT kombiniert werden.) Da i und j jeder Wert von 0 bis 127 sein kann, können alle (oder die meisten, falls es ungenutzte Extras gibt) Nachschlagtabelleneinträge verwendet werden, ohne daß ein ausgefallenes Indizierschema benötigt wird. s = sqrt(2)·i – LUT_f_inverse[i,j] d = sqrt(2)·j – LUT_g_inverse[i,j]
  • Danach wird eine Kompensation für den Fall durchgeführt, wenn die ss-Parität nicht dieselbe ist wie die dd-Partität für ungerade Nenner, indem bei einer Ausführungsform der folgende Pseudo-Code verwendet wird:
    falls (ss ist ungerade und dd ist gerade) oder (ss ist gerade und dd ist ungerade) falls (d = = 180) s = s^1ansonsten d' = d^1
  • Die Summe und die Differenz werden gemäß den folgenden Gleichungen berechnet: Summe = s' + 180·ss Differenz = d' + 181·dd
  • Als letztes werden die Summe und die Differenz zurück zu ihren Originalwerten gemäß der folgenden Gleichung geändert: a = Summe/2 + (Differenz + 1)/2 b = Summe/2 – Differenz/2
  • Das Inverse kann in einer ähnlichen Art und Weise implementiert werden, wie jene, die in 12 gezeigt ist, mit der Ausnahme, daß die Richtung umgekehrt ist. Eine derartige Implementation wäre für einen Fachmann angesichts der 12 offensichtlich.
  • Erzeugen von Nachschlagtabellen für Rundungsoffsets
  • Ein Extra wird jedem Loch zugewiesen. Für sehr kleine Nachschlagtabellen kann eine sehr erschöpfende Suche verwendet werden, um die beste Abbildung zu finden. Für größere Nachschlagtabellen gibt es einige Techniken, die verwendet werden können, um sukzessive Nachschlagtabellen zu verfeinern bzw. zu verbessern.
  • Die erste Technik ist eine deterministische Zuweisung von Extras zu Kollisionen. Bei einer Ausführungsform ist die Anzahl der Extras nicht geringer als die Anzahl der Kollisionen. Die Extras werden bezüglich der Kollisionen, denen sie zugewiesen sind, in Abständen verteilt. Diese Technik ist schnell und erlaubt es, daß der Prozeß an beiden Enden repliziert wird. Diese Technik vermeidet ebenso, daß eine Nachschlagtabelle übertragen werden muß, wenn eine fliegend erzeugt werden könnte.
  • Für jede Kollisions_Zeile
  • Bestimme die Anzahl der Extra_Zeilen, die benötigt werden, um ein Extra für jede Kollision in der aktuellen Kollisions-zeile bereitzustellen.
  • Falls eine Teil-Extrazeile benötigt wird, wähle die passende Anzahl von Extras, die innerhalb der Zeile gleichmäßig beabstandet sind.
  • Sortiere die zu verwendenden Extras in einer Spaltenreihenfolge. Weise Extras Kollisionen in Spaltenreihenfolge zu.
  • Die Beabstandung, die auftritt, basiert auf der Anzahl der Kollisionen gegenüber den Extras. Indem die Anzahl der Kollisionen durch die Anzahl der Extras geteilt wird, wird ein Indexfaktor erzeugt. Ein Runden auf die nächste ganze Zahl für jeden stellt einen Satz von ganzen Zahlen bereit, die darauf hinweist, welche Kollisionen zu verwenden sind.
  • Zur Erläuterung betrachte man das Muster von Kollisionen und Extras, das in 9 gezeigt ist. Dort gibt es 144 Kollisionen in 12 Zeilen mit jeweils 12. Es gibt 144 Extras in 8 Zeilen von jeweils 9 und 9 Zeilen von jeweils B. Die Zuweisung für die ersten drei Zeilen von Kollisionen sind wie folgt, die übrigen Zeilen werden in einer ähnlichen Art und Weise zugewiesen.
    12 Kollisionen in der ersten Zeile
    Verwende Extrazeile, die 8 Extras in den Spalten 3, 7, 13, 17, 21, 27, 31, 37 hat
    Benötige 4 Extras von der zweiten Extrazeile aus insgesamt 9, verwende diejenigen in Spalten 4, 14, 24, 34
    Die Zuweisungen sind (Extrazeile, Extraspalte Kollisionsspalte) 1,3 → 2; 2,4 → 6; 1,7 → 8; 1,13 → 12; 2,14 → 16; 1,17 → 18; 1,21 → 22; 2,24 → 26; 1,27 → 30; 1,31 → 32; 2,34 → 36; 1,37 → 40
    12 Kollisionen in der zweiten Zeile
    Verwende verbliebene 5 Extras von der zweiten Extrazeile aus insgesamt 8, verwende diejenigen in den Spalten 0, 10, 20, 28, 38
    Verwende 7 Extras von der dritten Zeile aus insgesamt 8, verwende diejenigen in den Spalten 3, 7, 13, 17, 21, 27, 31
    Die Zuweisungen sind (Extrazeile, Extraspalte Kollisionsspalte) 2,0 → 2; 3,3 → 6; 3,7 → 8; 2,10 → 12; 3,13 → 16; 3,17 → 18; 2,20 → 22; 3,21 → 26; 3,27 → 30; 2,28 → 32; 3,31 → 36; 2,38 → 40
    12 Kollisionen in der dritte Reihe
    Verwende verbliebenes 1 Extra von der dritten Extrazeile aus insgesamt 8, verwende dasjenige in Spalte 37
    Verwende 9 Extras von den vier Extrazeile in Spalten 0, 4, 10, 14, 20, 24, 28, 34, 38
    Verwende 2 Extras von der fünften Extrazeile aus insgesamt 8, verwende 3, 21
    Die Zuweisungen sind (Extrazeile, Extraspalte Kollisionsspalte) 4,0 → 2; 5,3 → 6; 4,4 → 8; 4,10 → 12; 4,14 → 16; 4,20 → 18; 5,21 → 22; 4,24 → 26; 4,28 → 30; 4,34 → 32; 3,36; 4,40
  • Geht man von einer Startabbildung aus, so können die Abbildungen durch allmähliches Verbessern (Tausch/Extrakollision-Zuweisungen, falls Fehlanpassung reduziert wird) oder ähnliche Optimierungsprozeduren (z B. simuliertes "Aushärten" usw.) verbessert werden. Andere Optimierungsprozeduren werden in B. Kerninghan, Lin, An Efficient Heuristic Procedure for Partitioning Graphics, Bell Syst. Tech. J., Seiten 291–307, 1970, beschrieben. Eine Optimierung kann durchgeführt werden, indem nur Kollisionen und Extras berücksichtigt werden oder alle Eingangs- und Ausgangswerte berücksichtigt werden. Eine Optimierung kann ebenso durchgeführt werden, indem Paare von Eingaben und Ausgaben getauscht werden oder indem Triplets von Eingaben und Ausgaben rotiert werden. Bei einer Ausführungsform werden Austauschvorgänge und Rotationen, die den quadrierten Fehler reduzieren, durchgeführt, bis keine Verbesserungen mehr möglich sind.
  • Der folgende Pseudo-Code stellt eine Ausführungsform eines Optimierungsverfahrens hohen Niveaus dar. Dies erläutert ein Verbesserungsverfahren. Dieses Verfahren ermöglicht das Austauschen von Paaren (vorhergehenden Zuweisungen). Es erlaubt, ein unzugewiesenes Extra mit dem Extra in einem zugewiesenen Kollision-zu-Extra-Paar auszutauschen. Es erlaubt, ein Austauschen dort, wo der Fehler sich nicht ändert, d. h. wo die Richtung des Fehlers das einzige Thema darstellt. Ein Tausch, der den Fehler nicht ändert, wird durchgeführt, wenn er es ermöglicht, daß ein zukünftiger Tausch den Fehler verbessert. Dies ist Teil eines Dreifachtausches oder einer Rotation von drei Paaren.
  • Für jede Kollision
    Berechne quadrierten Fehler der aktuellen Zuweisung
    Führe folgendes durch
    Für jedes Extra
    initialisiere Extra-Paar-Tausch zu "noch nicht getauscht" (z. B. –1)
    initialisiere Extra-Dreifach-Tausch "noch nicht getauscht" (z. B. –1)
    initialisiere Tausch-Gewinn bzw. Tausch-Verstärkung auf Null
    für k = ersten Tausch-Kandidat-Extra (z. 8. 0) bis letzten Tausch-Kandidat-Extra (z. B. Anzahl von Extras –1) versuche und finde eine bessere Zuweisung für Extra [k]
    falls irgendwelche besseren Zuweisungen gefunden werden, führe Tauschvorgänge durch solange irgendwelche besseren Zuweisungen gefunden werden.
  • Da Programmiersprachen häufig auf englischen Sprachelementen basieren, wird zum leichtern Verständnis der oben dargestellte Pseudo-Code nochmals in englischer Sprache wiederholt:
    for each collision
    compute squared error of current asignment do
    for each extra
    initialize extra pair swap to "not swapped yet" (eg. –1)
    initialize extra triple swap "not swapped yet" (eg. –1)
    initialize swap gain to zero
    for k = first swap candidate extra (eg. p) to last swap candidate extra (eg. number of extras –1) try and find a better assignment for extra[k]
    if any better assignments are found perform swaps while any better assignients are found
  • Um den quadrierten Fehler zu berechnen, und zwar bei einer Drehung um einen Winkel q, wird das folgende Verfahren verwendet.
    sei XC die erste Koordinate einer Kollision
    sei YC die zweite Koordinate einer Kollision
    sei XE die erste Koordinate eines Extras
    sei YE die zweite Koordinate eines Extras
    sei SIN = sin q
    sei COS = cos q
    quadrierter Fehler = (COS·XC-Runden(COS·CXE))^2+(COS·YC-Runden(COS·YE))^2
  • Der Pseudo-Code für eine Ausführungsform der "Suche und finde eine bessere Zuweisung für ein Extra [k] "-Routine lautet wie folgt:
    Initialisiere Quadratfehler-beste_Verbesserung für besten Tausch auf Null Suche für besten Paartausch zwischen Extra [k] und Extras [n, n > k] Falls bester Paartausch denselben quadrierten Fehler bzw. Quadratfehler wie ohne Tausch hat
    suche nach bestem Dreifachtausch zwischen Extra [k], Extra [n] und Extras [m, m > n oder n > m > k]
    falls Extra [n] oder Extra [k] oder Extra [m] bereits für Tausch markiert wurden, ignoriere besten Dreifachtausch
    falls der beste Tausch den Quadratfehler reduziert
    falls Extra [n] bereits für einen Paartausch markiert worden ist, markiere das zu tauschende Extra mit Extra [n] als "noch nicht getauscht"
    falls Extra [n] bereits für einen Dreifachtausch markiert worden ist, markiere die zu tauschenden Extras mit Extra [n] als "noch nicht getauscht"
    falls Extra [k] bereits für einen Dreifachtausch markiert worden ist, markiere die zu tauschenden Extras mit Extra [k] als "noch nicht getauscht"
    falls ein Dreifachtausch der beste Tausch ist und Extra [m] bereits für einen Dreifachtausch markiert worden ist, markiere die zu tauschenden Extras mit Extra [n] als "noch nicht getauscht"
    falls ein Paartausch der beste Tausch ist, markiere Extra [n] als mit Extra [k] zu tauschen markiere Extra [k] als mit Extra [n] zu tauschen
    ansonsten
    markiere Extra [n] als dreifach zu tauschen markiere Extra [k] als dreifach zu tauschen markiere Extra [m] als mit Extra [n] und Extra [k] dreifach zu tauschen
  • Der Pseudo-Code für eine Ausführungsform der "Suche nach bester Paartausch"-Routine lautet wie folgt:
    Für jedes Extra [n]
    berechne Tausch-Fehler = Quadratfehler für Extra [n], Kollision [k] + Quadratfehler Für Extra [k], Kollision [n]
    berechne aktuellen Fehler = die Summe von Quadratfehler für die aktuellen Zuweisungen von Extra [n], Extra [k] diese_Verbesserung = aktueller Fehler – Tausch-Fehler
    falls (diese_Verbesserng > =0) und (diese_Verbesserung > = beste_Verbesserung)
    beste Verbesserung = diese Verbesserung
    bester bis jetzt gefundener Tausch ist n
  • Der Pseudo-Code für eine Ausführungsform der "Suche nach bestem Dreifachtausch"-Routine lautet wie folgt:
    Für jedes Extra [n]
    berechne Tausch-Fehler = Quadratfehler für Extra [m], Kollision [k] + Quadratfehler für Extra [n], Kollision [m] + Quadratfehler für Extra [k], Kollision [n]
    berechne aktuellen Fehler = aktueller Fehler – Tauschfehler falls (diese_Verbesserung > =0) und (diese-Verbesserung > = beste_Verbesserung)
    beste_Verbesserung = diese Verbesserung
    bester bis jetzt gefundener Tausch ist n
  • Der Pseudo-Code für eine Ausführungsform der "Führe Tauschvorgänge durch"-Routine lautet wie folgt:
    Für jedes Extra [k]
    falls Extra [k] markiert
    n = Extra zu Tausch mit Extra [k]
    falls n < k
    tausche Extra [n] und Extra [k]
    berechne Quadratfehler von aktueller Zuweisung
  • Aus oben genannten Gründen wird der eben deutsch wiedergegebene Pseudo-Code nochmals in Englisch wiedergegeben:
    for each extra [k]
    if extra [k] marked
    n = extra to swap with extra [k]
    if n < k
    swap extra [n] and extra [k]
    calculate squared error of current asignment
  • Insgesamt wird insbesondere hinsichtlich der Pseudo-Codes auf die beigefügte prioritätsbegründende Anmeldung verwiesen, die für den Fachmann aufgrund der ihm vielleicht bekannteren Programmierelemente, wie "for each", "if ... else" und "n = x to y" usw., eventuell besser verständlich sein dürften.
  • Eine nahe balancierte DCT Implementation
  • Ein Runden, das auf einer Nachschlagtabelle basiert, erlaubt die Implementation von beliebigen 2-Punkt-Rotationen mit geringer Fehlanpassung. Die vorliegende Erfindung erlaubt die Erzeugung von Transformationen, die effizient sind und nahezu balanciert sind und die dann reversibel mit der Nachschlagtabellentechnik der vorliegenden Erfindung (oder irgendeiner anderen Technik) implementiert werden können.
  • Eine balancierte wirksame Transformation ist gegeben, wenn die Determinante der Transformation ein perfektes Quadrat darstellt. Eine nahezu balancierte Transformation wird erzeugt, indem alle Werte in der Transformationsmatrix mit einer Konstante multipliziert werden. Diese Konstante wird derartige ausgewählt, daß die Determinante in zwei nahezu gleiche Faktoren faktorisiert werden kann. Tabelle 3 zeigt einige Beispiel für nahezu balancierte Transformationen.
  • Tabelle 3 – Nahezu balancierte Transformationen
    Figure 00220001
  • Die LCM-Spalte in Tabelle 3 enthält einen geringsten gemeinsamen Vielfachen der Nenner, nachdem jegliche gemeinsame Faktoren in den Zählern entfernt worden sind. Eine Nachschlagtabelle der Größe LCM2 ist ausreichend, um die Transformation zu implementieren. Große Werte werden in einen Quotienten und einen Rest nach der Division durch die LCD aufgebrochen. Alle Nachschlagtabellen, die für Transformationen in Tabelle 3 benötigt werden, sind zu groß, um leicht durch Beispiele verstanden zu werden. Die 2,1 nahezu balancierte Transformation mit dem Multiplizierer 2 wird als ein Beispiel in der unteren Gleichung gegeben.
  • Figure 00220002
  • Die zwei Divisoren bzw. Teiler sind 5 und 4, was ein Balancierverhältnis von 1,25 ergibt. Dieses Beispiel benötigt nur eine Tabellengröße von 102 – 100 und die Tabelle weist eine einfache Struktur auf.
  • Tabelle 4 stellt die Nachschlagtabelle für die Transformation dar. Alle, bis auf die hervorgehobenen Rechtecke, werden unter Verwendung der folgenden Gleichung bestimmt. Die hervorgehobene Rechtecke zeigen Kollisionen an, die Extras zugewiesen sind.
  • Figure 00220003
  • Tabelle 4 – Nachschlagtabelle für 2,1-fast balancierte Transformation
    Figure 00220004
  • 10 stellt eine Darstellung bzw. einen Plot von x,y-Paaren dar, die sich aus der obigen Gleichung ergeben, wenn a und b in dem Bereich 0...10 liegen. Die Kreise und die Pfeile zeigen das Abbilden der Kollisionen auf Extras. Der An hang A enthält eine Ausführungsform eines Source-Codes bzw. Quell-Codes, der diese Transformation implementiert. Sie enthält sowohl die Nachschlagtabelle als auch die Quotient-Rest-Verarbeitung, die benötigt wird, um beliebig große Werte handzuhaben.
  • 8×8-Transformationen
  • Eine Vielfalt von Baublöcken bzw. Bausteinen, die oben beschrieben wurden, können in verschiedenen 8×8-reversiblen APTs verwendet werden, von denen einige in der Tabelle 5 gezeigt sind. Die Chen-Zerlegung der subsidiären Matrix, die in 3 gezeigt ist, wird mit Ausnahme der APT verwendet, die Hein genannt wird bzw. so bezeichnet wird, die die subsidiäre Matrix verwendet, die in 4 gezeigt ist. Die "effiziente" und "effiziente" Hein verwendet die Baublöcke bzw. Bausteine der reversiblen Implementationen, die oben beschrieben wurden, die keine internen Rundungen oder Nachschlagtabellen aufweisen, und zwar mit der Ausnahme für die "1" und "R" in der subsidiären Matrix, die mit einer Nachschlagtabelle abgehandelt werden. Eine andere APT verwendet Leiterfilter-Baublöcke. Die "nahezu effiziente" APT liegt näher an der balancierten, die zu einer guten "verlustbehafteten" Leistungsfähigkeit führt. Die "nahezu effiziente" APT weist eine Determinante von 1,04 auf (log2 1,04 = 0,06 Bits an Redundanz).
  • Tabelle 5 – Baublöcke, die zur Erzeugung von 8×8-reversiblen APTs verwendet werden
    Figure 00230001
  • Bei einer Ausführungsform codieren und decodieren ein Entropiekodierer mit einem Automaten mit finiten Zuständen (FSM-Entropiecodierer bzw. "Finite State Machine"-Entropiecodierer) und ein gewöhnliches Kontextmodell verlustfrei mit verschiedenen Transformationen, wie z. B. jene, die in 1C gezeigt sind. Ein Beispiel eines FSM-Codierers ist in US-Patenten Nrn. 5,272,478, 5,363,099 und 5,475,388 gezeigt, von denen jedes hiermit durch Bezugnahme aufgenommen wird.
  • Die Tabelle 6 zeigt das Wachsen hinsichtlich der Größe der Koeffizienten (Anzahl der Bits) für die effiziente reversible 1D-8-Punkt-APT.
  • Tabelle 6 – Größenwachstum der Koeffizienten für effiziente reversibel 8-Punkt-APT
    Figure 00240001
  • Zum Beispiel würden bei dieser Transformation, falls die Eingaben 8 Bits sind, die insgesamt 64 Bits von Eingaben um 18 Bits wachsen und das würde zu einer 82-Bit-Ausgabe führen. Das Wachstum für die 2D-8×8-Transformation kann bestimmt werden, indem die 1D-Ergebnisse horizontal und vertikal angewendet werden. Tabelle 7 zeigt das Wachstum in der Größe der Koeffizienten für die "fast effiziente" reversible 1D-8-Punkt-APT.
  • Tabelle 7 – Größenwachstum der Koeffizienten für "fast effiziente" reversible 8-Punkt-APT
    Figure 00240002
  • Zum Beispiel würden bei dieser Transformation, falls die Eingaben 8 Bits betragen, die gesamten 64 Bits der Eingabe um 21 Bits wachsen und würden zu einer 85-Bit-Ausgabe führen (wenn das Wachstum aller Bits zusammenaddiert wird). Ebenso gibt es z. B. in dem 2-D-Fall, wo 1D-Ergebnisse horizontal und vertikal auf den Horizontalkoeffizienten 2 und den Vertikalkoeffizienten 3 angewendet werden, zusätzlich 10 Bits (da beide addiert werden, 2 + 8 = 10). Die guten Kompressionsergebnisse lassen sich darauf zurückführen, daß es keine redundanten niedrigstwertigen Bits gibt; das Wachstum ist meistens leicht, um signifikantere Bits zu komprimieren.
  • Um reversibel zu sein, muß eine APT unterschiedliche Koeffizienten ausgeben als eine Fließkomma-DCT, so daß eine gewisse Fehlanpassung unvermeidbar ist. Jedoch ist eine reversible APT ohne Quantisierung verlustfrei. Die verlustfreie Eigenschaft ermöglicht keinen systemischen Fehler, ist die inverse Transformation, ist die inverse reversible APT. Falls es durch eine Anwendung erforderlich ist, können reversible APT Koeffizienten invers zu den ursprünglichen Pixeln transformiert werden und dann vorwärts transformiert werden, und zwar mit einer Fließkomma-DCT, falls DCT Koeffizienten benötigt werden. Dies würde wiederum zu keiner Fehlanpassung führen.
  • Tabellen 8–10 zeigen minimale Quantisierungsmatrizen für verschiedene 8×8-APTs. Minimale Quantisierungsmatrizen geben eine Menge bzw. einen Umfang oder mehr der Quantisierung an, die falls sie angewendet werden würde, zu dem reversiblen APT Koeffizienten führen würden, der sich von den wahren DCT Koeffizienten um nicht mehr als ±1 unterscheidet. Je kleiner die minimalen Quanitisierungswerte, umso kleiner ist der Fehlanpassungsfehler in der Transformation. Der DC-Quantisierer ist in der oberen linken Ecke gezeigt und die AC-Quantisierer sind in der Standard-DCT (nicht "Zickzack")-Ordnung. Die effiziente reversible "8×8"-APT und die APT, die auf dem Leiterfilter basiert, weisen beide relativ große minimale Quantisierer für DC und Koeffizienten nahe DC auf. Diese Transformationen würden deshalb nur die DCT gut bei geringer Kompression hoher Qualität annähern. Die "nahezu effiziente" APT weist geringere minimale Werte im allgemeinen auf und weist viel kleinere Werte für DC und nahe DC auf. Diese APT nähert die DCT gut mit typischen JPEG-Kompressionsverhältnissen an.
  • Die "nahezu effiziente" APT weist die höchste Fehlanpassung (höchste minimale Quantisierer) hinsichtlich der Koeffizient auf, die mit dem "C"-APT-Parameter erzeugt werden. Eine Nachschlagtabelle, die auf einer "C"-2-Punkt-Rotation basiert, kann weiter die Fehlanpassung reduzieren.
  • Tabelle 8 – Minimale Quantisierungsmatrix für effiziente reversible 8×8-APT
    Figure 00240003
    Tabelle 9 – Minimale Quantisierungsmatrix für effiziente reversible 8×8-APT, die einen Leiterfilter verwendet
    Figure 00250001
    Die Struktur der minimalen Quantisierungsmatrizen für gewisse Transformationen wird durch die Struktur der APT Skalierfaktor-Matrizen erläutert. Die Leiterfilter-Implementation ist eine Ausnahme, alle Werte bei ihrer Skalierfaktormatrix sind 1. Tabellen 11 und 12 zeigen die Skalierfaktoren für die effiziente reversible 8×8-APT und die "nahezu effiziente" Version. Große Skalierfaktoren (größer als 1) führen zu großen minimalen Quantisierungswerten.
  • Tabelle 10 – Minimale Quantisierungsmatrix für "nahezu effiziente" reversible 8×8-APT
    Figure 00250002
  • Tabelle 11 – Skalierfaktoren für effiziente reversible 8×8-APT
    Figure 00250003
  • Tabelle 12 – Skalierfaktoren für "nahezu effiziente" reversible 8×8-APT
    Figure 00260001
  • Verlustbehaftetes Codieren
  • Verlustbehaftetes Codieren mit der reversiblen APT beginnt mit der verlustfreien Codierung, indem die reversible APT verwendet wird. Die Decodierung ist verlustbehaftet und kann einen Dekompressor, der auf einer "Vermächtnis"-DCT basiert, wie z. B. einen JPEG-Decoder, verwenden.
  • Die reversiblen APT Koeffizienten können bei einem verlustbehafteten Kompressionssystem, wie z. B. JPEG, in derselben Art und Weise wie reguläre APT Koeffizienten verwendet werden. Eine JPEG-Quantisierungsmatrix wird ausgewählt. Jeder Quantisierer wird durch die entsprechenden APT Skalierfaktoren geteilt, was zu einem neuen kombinierten Quanitisierer und Skalenfaktor bzw. Skalierfaktor führt. Die APT und die kombinierte Quantisierung und die Skalierfaktormatrix werden als ein Ersatz für die DCT und die Quanitisierung bei JPEG verwendet. Jede Quantisierungsmatrix kann verwendet werden; jedoch wird eine Fehlanpassung auftreten, falls der Skalierfaktor größer als der Quantisierer ist.
  • Bei einer alternativen Ausführungsform wird die Quantisierungs-Division/Multiplikation mit einer Verschiebung ersetzt, um gewünschte Bits auszuwählen. Dies reduziert die Berechnungskosten bzw. den Berechnungsaufwand. Es ermöglicht ein eingebettetes oder Vielverwendungssystem, wo mehrere Bits für eine höhere Qualität bis zu einer verlustfreien Qualität ausgewählt werden können, wenn alle Bits ausgewählt werden. Die Quantisierer werden so ausgewählt, daß, wenn sie durch den entsprechende Skalierfaktor geteilt werden, sie eine Potenz von 2 (oder ungefähr eine Potenz von 2) darstellen.
  • JPEG weist einen progressiven Modus auf, der sukzessive Approximation genannt wird. (Obwohl dieser Modus weniger gut bekannt ist und weniger häufig verwendet wird als der sequentielle Grundlinienmodus ("base line sequential mode") von JPEG) Ein Ausrichtungsschema kann ausgewählt werden, das zu einer bestimmten JPEG-Quantisierung führt. Dies kann ebenso verwendet werden, um codierte Daten für die erste Stufe einer sukzessiven Approximation zu erzeugen, die sehr ähnlich zu sequentiellen Grundliniendaten ("base line sequential data") sind, falls eine spektrale Auswahl nicht verwendet wird. Die sukzessive Approximation ermöglicht, daß die übrigen Daten bitebenenweise bzw. Bitebene für Bitebene in einer eingebetteten Art und Weise codiert werden. Das progressive JPEG weist ebenso eine spektrale Auswahl auf. Die spektrale Auswahl erlaubt es, daß Bitebenen nur spezifizierter Koeffizienten codiert werden. Eine spektrale Auswahl kann verwendet werden, um zu spezifizieren, welche Koeffizienten Bits in einer Bitebene haben, und zwar gegenüber Koeffizienten, die bereits voll beschrieben wurden. Falls große Quantisierungswerte für die erste Stufe gewählt werden, würden alle (oder fast) alle Koeffizienten Bitebenen-codiert bzw. gemäß einer Bitebene codiert werden.
  • Falls es nicht erwünscht war, einen progressiven JPEG-Modus zu verwenden, kann Transcodieren verwendet werden, um sequentielle verlustfreie JPEG-Codeströme mit verschiedenen Genauigkeiten ("fidelities") zu verwenden. Die APT Koeffizienten können verlustfrei mit einem gewissen Verfahren codiert werden, das nicht notwendigerweise mit JPEG kompatibel ist. Um einen Strom zu erzeugen, wird ein verlustfreies Codieren durchgeführt, eine gewünschte Quantisierung wird entweder durch Division oder Verschiebung durchgeführt. Die quantisierten Koeffizienten können dann in einer Art und Weise codiert werden, die mit JPEG kompatibel ist. Es gibt hinsichtlich der Berechnungen Einsparungen gegenüber verlustfreien Codierverfahren, die nicht die reversible APT verwenden, da keine DCT während des Transcodierens benötigt wird.
  • Tabelle 13 zeigt ein Beispiel für nach rechts zu schiebende Bits für jeden APT Koeffizienten, wobei die "nahezu effiziente" reversible 8×8-APT verwendet wird. Dies entspricht einem Quantisier-/Skalierfaktor von 2n, wobei n die Anzahl der Bits, die nach rechts zu schieben sind, darstellt. Tabelle 14 stellt die äquivalente JPEG-DCT-Quantisierungsmatrix dar, die die Verschiebungen in Tabelle 13 implementiert. Tabelle 14 ähnelt den Luminanz-Quantisierungstabellen, die psychophysikalisch bzw. psychophysisch gewichtet sind, die typischerweise bei JPEG verwendet werden.
  • Hinsichtlich eines Grundliniensystems ("base line system"), Luminanzquantisierung, AC-Koeffizienten, DC-Koeffizienten, progressiven Prozessen, die auf DCT basieren, Ausdehnungen bzw. Extensionen usw. wird auf das Buch "Techniques and Standards for Image, Video, and Audio Coding" von K.R. Rao und J.J. Hwang, erschienen bei Prentice Hall PTR, 1996.
  • Tabellen 15 und 16 zeigen die zu verschiebenden Bits ("bits to shift") und die entsprechenden Quantisierer für eine nahezu homogene bzw. gleichförmige Quantisierung, die die "fast effiziente" reversible 8×8-APT verwendet.
  • Tabelle 13 – Nach rechts zu verschiebende Bits für eine Quantisierung, die auf eine "psychovisuellen" Verschiebung basiert
    Figure 00270001
  • Tabelle 14 – Quantisierungsmatrix für "psychovisuelle" Verschiebungen
    Figure 00270002
  • Eine gleichförmige bzw. homogine Quantisierung ergibt die beste Rate/Verzerrung ("best rate/distortion") gemäß der Metric bezüglich des mittleren quadratischen Fehlers (MSE-Metric).
  • Tabelle 15 – Nach rechts zu schiebende Bits für eine Quantisierung, die auf einer "normalisierten" Verschiebung basiert
    Figure 00270003
  • Tabelle 16 – Quantisierungsmatrix von "normalisierten" Verschiebungen
    Figure 00280001
  • Implementations-Thematiken
  • Die reversible APT weist eine größere Rechenbelastung bzw. Berechnungskosten auf als eine reguläre APT, weil bei jedem Schritt eine Skalierung und ein Runden vorgenommen wird. Um diesen Nachteil teilweise auszugleichen, wird die Registerbreite für die reversible APT bei jedem Schritt reduziert. Eine kleine Registerbreite und die einfachen Parameter, die bei den Berechnungen verwendet werden, helfen der Implementation. Bei der Software können die Multiplikations- und Divisionsoperationen durch Nachschlagtabellen ersetzt werden. Bei der Hardware können dazu bestimmte bzw. spezialisierte Schaltungen mit geringen Hardwarekosten für eine Multiplikation mit N und für eine Division durch N verwendet werden.
  • Man denke z. B. an die Implementation eines Teils der "B"-2-Punkt-Rotation mit zwei Nachschlagtabellen, die im folgenden beschrieben sind und in 11 gezeigt sind. Bezüglich der Hardware könnten die zwei Nachschlagtabellen mir einer dazu bestimmten Logik ersetzt werden.
  • Figure 00280002
  • Nimmt man Bezug auf 11, so arbeiten die LUTs 1201 und 1202 wie folgt:
    Figure 00280003
  • Dies erzeugt das folgende Ergebnis: x = d1 + d2 wenn r1 + r2 < 13 x = d1 + d2 + 1 wenn r1 + r2 ≥ 13
  • Reversible Transformationen für vereinheitlichte bzw. vereinigte verlustbehaftete und verlustfreie Kompressionen werden ausgedehnt, um die diskrete Kosinustransformation (DCT) zu enthalten, wobei es sich um die populärste Transformation für die Bildcodierung handelt. Die reversible parametrisierte Allen-Transform (reversible APT) implementiert die DCT als eine Kaskade von "Ganzzahl-Rotationen", von denen jede reversibel implementiert wird. Man hat gefunden, daß die Entropie reversibler APT Koeffizienten der Entropie reversibler Wavelet-Koeffizienten ähnelt. Eine "nahezu balancierte" reversible APT bietet eine ausreichend kleine Fehlanpassung zu der Fließkomma-DCT, so daß ein "Vermächtnis"-JPEG-Decoder für eine verlustbehaftete Dekompression verwendet werden kann.
  • Der hierin verwendete Begriff "effiziente Transformation" bezeichnet eine Transformation, die die beste Energie-Verdichtung hinsichtlich der Koeffizienten erzielt, während die minimale Anzahl von Bits verwendet werden, um diese Koeffizienten darzustellen. Der Begriff "Energie-Verdichtung" wird in der Fachwelt der Kompression und Kodierung auch als "energy compaction" bezeichnet.
  • Erfindungsgemäß wird hinsichtlich der reversiblen diskreten Cosinustransformation insbesondere zur Kompression wie folgt vorgegangen:
    • a) Ein Bild wird in kleine quadratische bzw. rechteckige Blöcke aufgeteilt.
    • b) Die geteilten Bilder werden einer ortogonalen Transformation unterzogen.
    • c) Die Ergebnisse der ortogonalen Transformation werden zu einer Summe einer Anzahl von zueinander ortogonalen Basisbildern entwickelt.
    • d) Die Koeffizienten für die jeweiligen Basisbilder werden kodiert. Infolgedessen werden insbesondere 64 Transformationskoeffizienten erhalten.
  • Die Erfindung läßt sich insbesondere wie folgt zusammenfassen: Eine reversible diskrete Kosinustransformation (DCT) wird beschrieben. Die reversible DCT kann Teil eines Kompressors in einem System sein. Das System kann einen Dekompressor mit einer reversiblen inversen DCT für verlustfreie Dekompression oder einen "Vermächtnis"-Dekompressor mit einer inversen DCT zur verlustbehafteten Dekompression enthalten.
  • Anhang A
  • Nahezu balancierter 2,1-Transformations-Source-Code
  • Der folgende Source-Code implementiert die nahezu balancierte 2,1-Transformation, wobei eine Nachschlagtabelle, wie oben beschrieben, verwendet wird.
  • Figure 00290001
  • Figure 00300001
  • Figure 00310001
  • Fig. 1B
  • 121
    Farbraum/Unterabtasten (optional) (reversibel)
    127
    Quantisierung mit Skalierfaktoren (optional)
    123
    optional/zickzack
    124
    Lauflängen von Nullen
    125
    Huffman-Code
    126
    Signalisieren
  • Fig. 1C
  • 121
    Farbraum/Unterabtasten (optional) (reversibel)
    127
    Quantisierung mit Skalierfaktoren (optional)
    133
    Kontextmodell
    126
    Signalisieren

Claims (22)

  1. Verfahren zur Erzeugung einer Nachschlagtabelle zum Runden von Offsets, wobei das Verfahren die folgenden Schritte umfasst: eine erste Abbildung von Eingabewerten auf Transformationsausgabewerte wird erzeugt, indem ein anfängliches Runden verwendet wird; und für jede Zeile von Kollisionen in der ersten Abbildung, bei der eine Kollision eine Abbildung von Eingaben zu denselben Transformationsausgabewerten darstellt: – bestimme die Anzahl der Zeilen, wobei jede Extras enthält, die benötigt werden, um einen Transformationsausgabewert bereitzustellen, der nicht bei dem anfänglichen Runden verwendet werden würde, wobei jedes Extra einen Transformationsausgabewert umfasst, der nicht mit einem anfänglichen Runden verwendet werden würde; – wähle eine Anzahl von Extras, die gleichmäßig innerhalb einer Zeile beabstandet bzw. verteilt sind, falls eine Teil-Extrazeile benötigt wird, um ein Extra für jede Kollision bereitzustellen, – sortiere die Extras in einer Spaltenordnung bzw. Spaltenreihenfolge; – weise Extras Kollisionen in Spaltenordnung bzw. Spaltenreihenfolge zu, um so eine zweite Abbildung zur Verwendung bei der Nachschlagtabelle zu erzeugen.
  2. Verfahren nach Anspruch 1, das weiter den Schritt umfasst, bei welchem Paare von Eingangswerten und Transformationsausgabewerten getauscht werden.
  3. Verfahren nach Anspruch 2, das weiter den Schritt umfasst, bei welchem Triplets von Eingabewerten und von Transformationsausgabewerten rotiert werden.
  4. Verfahren zum Erzeugen einer Nachschlagtabelle zum Runden von Offsets, wobei das Verfahren die folgenden Schritte umfasst: für jede Kollision, bei der es eine Abbildung einer Anzahl von Eingaben zu denselben Transformationsausgabewerten gibt, für jedes Extra, bei dem es einen Transformationsausgabewert gibt, der nicht mit einem anfänglichen Runden verwendet werden würde, identifiziere einen Tausch mit einem anderen Extra, und zwar basierend auf vorbestimmten Kriterien, und führe den Tausch durch.
  5. Verfahren nach Anspruch 4, bei welchem die vorbestimmten Kriterien einen Quadratfehler bzw. quadratischen Fehler umfassen und ein Tausch identifiziert wird, bei dem der quadratische Fehler reduziert ist.
  6. Kompressor, der folgendes umfasst: eine reversible Transformation, die auf einem Block bzw. auf Blöcken basiert, wobei die Transformation Transformationseingabewerte auf Transformationsausgabewerte abbildet, dadurch gekennzeichnet, dass die reversible Transformation ein Runden umfasst, wobei das Runden als Funktion der Transformationseingabewerte variiert wird, um ein Abbilden verschiedener Transformationseingabewerte auf dieselben Transformationsausgabewerte zu vermeiden.
  7. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine DFT-Transformation umfasst.
  8. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine Kosinustransformation umfasst.
  9. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine Sinustransformation umfasst.
  10. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine Hadamard-Transformation umfasst.
  11. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine Haar-Transformation umfasst.
  12. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine Slant-Transformation umfasst.
  13. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine Karhunen-Loeve-Transformation umfasst.
  14. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine schnelle KL-Transformation umfasst.
  15. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine sinusförmige Transformation umfasst.
  16. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine SVD-Transformation umfasst.
  17. Kompressor, der im Anspruch 6 festgelegt ist, bei welchem die Transformation eine überlappte bzw. "lapped" oder orthogonale Transformation umfasst.
  18. Verfahren zum Komprimieren von Daten, bei welchem mittels einer block-basierten Transformation Transformationseingabewerte auf Transformationsausgabewerte abgebildet werden, dadurch gekennzeichnet, dass ein Runden durchgeführt wird, bei dem ein Abbilden verschiedener Transformationseingabewerte auf dieselben Transformationsausgabewerte vermieden wird, indem das Runden als Funktion der Transformationsausgabewerte durchgeführt wird.
  19. Computerlesbares Medium, das ein ausführbares Programm mit einer Abfolge von Instruktionen speichert, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen, die Schritte des Verfahrens nach Anspruch 18 auszuführen.
  20. Medium nach Anspruch 19, bei welchem die Transformation eine reversible DCT-Transformation umfasst und die Instruktionen weiter den Prozessor veranlassen, den Schritt der Quantisierung von Koeffizienten durchzuführen, die erzeugt werden, indem die reversible DCT-Transformation ausgeführt wird, wobei die Quantisierung mit Skalierfaktoren ausgeführt wird.
  21. Medium, das im Anspruch 19 festgelegt ist, bei welchem die Instruktionen weiter den Prozessor veranlassen, die folgenden Schritt auszuführen: Zickzack-Ordnen; Lauflängen von Nullen werden erzeugt; und Huffman-Codieren wird ausgeführt.
  22. Medium nach Anspruch 21, bei welchem die Instruktionen weiter den Prozessor veranlassen, zum Huffman-Codieren die folgenden Schritte auszuführen, Kontexte für jedes Datum werden erzeugt; Wahrscheinlichkeitsschätzungen werden erzeugt, die jedem Kontext zugeordnet sind; und ein Bitstrom wird erzeugt, und zwar basierend auf Kontexten und Wahrscheinilichkeitsschätzungen.
DE19819198A 1997-04-30 1998-04-29 Reversible DCT für verlustfreie/verlustbehaftete Kompression Expired - Fee Related DE19819198B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/846,352 US6058215A (en) 1997-04-30 1997-04-30 Reversible DCT for lossless-lossy compression
US08/846352 1997-04-30

Publications (2)

Publication Number Publication Date
DE19819198A1 DE19819198A1 (de) 1998-11-19
DE19819198B4 true DE19819198B4 (de) 2004-08-26

Family

ID=25297660

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19819198A Expired - Fee Related DE19819198B4 (de) 1997-04-30 1998-04-29 Reversible DCT für verlustfreie/verlustbehaftete Kompression

Country Status (4)

Country Link
US (5) US6058215A (de)
JP (2) JP3763968B2 (de)
DE (1) DE19819198B4 (de)
GB (1) GB2325368B (de)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058215A (en) * 1997-04-30 2000-05-02 Ricoh Company, Ltd. Reversible DCT for lossless-lossy compression
US6130894A (en) * 1998-03-09 2000-10-10 Broadcom Homenetworking, Inc. Off-line broadband network interface
AUPP248498A0 (en) * 1998-03-20 1998-04-23 Canon Kabushiki Kaisha A method and apparatus for encoding and decoding an image
US7130351B1 (en) * 1998-05-14 2006-10-31 Vulcan Patents Llc Storage reduction during compression
US7257158B1 (en) 1998-05-18 2007-08-14 Kendyl A. Román System for transmitting video images over a computer network to a remote receiver
US6415058B2 (en) * 1998-10-27 2002-07-02 Hewlett-Packard Company System for compression of digital images comprising low detail areas
US6570924B1 (en) * 1998-11-20 2003-05-27 Interval Research Corp Low cost video compression using fast, modified Z-coding of wavelet pyramids
US20080250458A1 (en) * 1998-12-21 2008-10-09 Roman Kendyl A Media exchange for handheld wireless receivers and other media user devices
US7671864B2 (en) 2000-01-14 2010-03-02 Roman Kendyl A Faster image processing
US7233619B1 (en) * 1998-12-21 2007-06-19 Roman Kendyl A Variable general purpose compression for video images (ZLN)
US8416847B2 (en) * 1998-12-21 2013-04-09 Zin Stai Pte. In, Llc Separate plane compression using plurality of compression methods including ZLN and ZLD methods
US8170095B2 (en) * 1998-12-21 2012-05-01 Zin Stai Pte. In, Llc Faster image processing
US8290034B2 (en) * 1998-12-21 2012-10-16 Zin Stai Pte. In, Llc Video transmission and display including bit-wise sub-sampling video compression
US8068544B2 (en) 1998-12-21 2011-11-29 Zin Stai Pte. In, Llc Compression with doppler enhancement
US20030005428A1 (en) * 2001-05-26 2003-01-02 Roman Kendyl A. Global media exchange
US8004572B2 (en) * 1999-05-17 2011-08-23 Zin Stai Pte. In, Llc System for transmitting a video stream over a computer network to a remote receiver
WO2001008001A1 (en) * 1999-07-23 2001-02-01 Trustees Of Boston University Integer discrete cosine transform using integer operations
US7191462B1 (en) * 1999-11-08 2007-03-13 Kendyl A. Román System for transmitting video images over a computer network to a remote receiver
US6754383B1 (en) 2000-07-26 2004-06-22 Lockheed Martin Corporation Lossy JPEG compression/reconstruction using principal components transformation
US7194128B1 (en) 2000-07-26 2007-03-20 Lockheed Martin Corporation Data compression using principal components transformation
DE10129240A1 (de) * 2001-06-18 2003-01-02 Fraunhofer Ges Forschung Verfahren und Vorrichtung zum Verarbeiten von zeitdiskreten Audio-Abtastwerten
US20020191845A1 (en) * 2001-06-19 2002-12-19 Talley Harlan A. Method and apparatus for improving decompression and color space conversion speed
US6819803B2 (en) * 2001-07-02 2004-11-16 International Business Machines Corporation Faster lossless rotation of JPEG images
US7082450B2 (en) * 2001-08-30 2006-07-25 Nokia Corporation Implementation of a transform and of a subsequent quantization
US6882685B2 (en) * 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
US7024441B2 (en) * 2001-10-03 2006-04-04 Intel Corporation Performance optimized approach for efficient numerical computations
US7245769B2 (en) * 2002-02-12 2007-07-17 Visioprime Archival of transformed and compressed data
US7242713B2 (en) * 2002-05-02 2007-07-10 Microsoft Corporation 2-D transforms for image and video coding
US7003170B1 (en) * 2002-09-20 2006-02-21 Pegasus Imaging Corporation Methods and apparatus for improving quality of block-transform coded images
US7260265B2 (en) * 2002-10-04 2007-08-21 International Business Machines Corporation Enhancing compression while transcoding JPEG images
US7395210B2 (en) * 2002-11-21 2008-07-01 Microsoft Corporation Progressive to lossless embedded audio coder (PLEAC) with multiple factorization reversible transform
US20040252965A1 (en) * 2003-06-10 2004-12-16 Rafael Moreno Portable video storage and playback device
US8126951B2 (en) 2003-09-29 2012-02-28 Agency For Science, Technology And Research Method for transforming a digital signal from the time domain into the frequency domain and vice versa
US7298925B2 (en) * 2003-09-30 2007-11-20 International Business Machines Corporation Efficient scaling in transform domain
US8069201B2 (en) * 2003-11-25 2011-11-29 Texas Instruments Incorporated 8×8 transform and quantization
US8335811B2 (en) * 2004-03-04 2012-12-18 Broadcom Corporation Method and system for high fidelity IDCT and DCT algorithms
US20050196055A1 (en) * 2004-03-04 2005-09-08 Sheng Zhong Method and system for codifying signals that ensure high fidelity reconstruction
US7487193B2 (en) * 2004-05-14 2009-02-03 Microsoft Corporation Fast video codec transform implementations
JP4378245B2 (ja) * 2004-08-23 2009-12-02 キヤノン株式会社 データ変換装置及び方法
US20090080519A1 (en) * 2004-10-18 2009-03-26 Electronics And Telecommunications Research Institute Method for encoding/decoding video sequence based on mctf using adaptively-adjusted gop structure
US8184702B2 (en) * 2004-11-01 2012-05-22 Electronics And Telecommunications Research Institute Method for encoding/decoding a video sequence based on hierarchical B-picture using adaptively-adjusted GOP structure
US7720299B2 (en) * 2005-05-10 2010-05-18 The Aerospace Corporation Compressed data multiple description transmission and resolution conversion system
US8422546B2 (en) * 2005-05-25 2013-04-16 Microsoft Corporation Adaptive video encoding using a perceptual model
US7613761B2 (en) * 2005-06-27 2009-11-03 The Aerospace Corporation Haar wavelet transform embedded lossless type II discrete cosine transform
US7634525B2 (en) * 2005-06-27 2009-12-15 The Aerospace Corporation Haar wavelet transform embedded lossless type IV discrete cosine transform
US7640283B2 (en) * 2005-06-27 2009-12-29 The Aerospace Corporation Shared Haar wavelet transform
US7805476B2 (en) * 2005-06-27 2010-09-28 The Aerospace Corporation Extended Haar transform
US7689052B2 (en) * 2005-10-07 2010-03-30 Microsoft Corporation Multimedia signal processing using fixed-point approximations of linear transforms
US20070200738A1 (en) * 2005-10-12 2007-08-30 Yuriy Reznik Efficient multiplication-free computation for signal and data processing
US8595281B2 (en) 2006-01-11 2013-11-26 Qualcomm Incorporated Transforms with common factors
US8849884B2 (en) * 2006-03-29 2014-09-30 Qualcom Incorporate Transform design with scaled and non-scaled interfaces
US7995649B2 (en) * 2006-04-07 2011-08-09 Microsoft Corporation Quantization adjustment based on texture level
US8059721B2 (en) * 2006-04-07 2011-11-15 Microsoft Corporation Estimating sample-domain distortion in the transform domain with rounding compensation
US8130828B2 (en) 2006-04-07 2012-03-06 Microsoft Corporation Adjusting quantization to preserve non-zero AC coefficients
US7974340B2 (en) 2006-04-07 2011-07-05 Microsoft Corporation Adaptive B-picture quantization control
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
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
US8243797B2 (en) 2007-03-30 2012-08-14 Microsoft Corporation Regions of interest for quality adjustments
US8237830B2 (en) 2007-04-11 2012-08-07 Red.Com, Inc. Video camera
ES2486295T3 (es) 2007-04-11 2014-08-18 Red.Com, Inc. Cámara de vídeo
US8442337B2 (en) 2007-04-18 2013-05-14 Microsoft Corporation Encoding adjustments for animation content
US20080288568A1 (en) * 2007-05-14 2008-11-20 Hou Hsieh S Low power Fast Hadamard transform
US8331438B2 (en) 2007-06-05 2012-12-11 Microsoft Corporation Adaptive selection of picture-level quantization parameters for predicted video pictures
US8437564B2 (en) * 2007-08-07 2013-05-07 Ntt Docomo, Inc. Image and video compression using sparse orthonormal transforms
US8189933B2 (en) 2008-03-31 2012-05-29 Microsoft Corporation Classifying and controlling encoding quality for textured, dark smooth and smooth video content
US8897359B2 (en) 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
CN101600029B (zh) * 2008-06-06 2013-05-08 博通集成电路(上海)有限公司 背景噪声降低系统及方法
US20110150073A1 (en) * 2009-12-21 2011-06-23 General Instrument Corporation Scalable video transcoding device
KR101219309B1 (ko) * 2010-09-29 2013-01-08 전북대학교산학협력단 신호 처리 소자 및 이미지 처리 소자
US8781000B2 (en) * 2010-12-30 2014-07-15 Vixs Systems, Inc. Dynamic video data compression
US8607129B2 (en) * 2011-07-01 2013-12-10 Intel Corporation Efficient and scalable cyclic redundancy check circuit using Galois-field arithmetic
JP2016508700A (ja) 2013-02-14 2016-03-22 レッド.コム,インコーポレイテッド ビデオカメラ
US10257393B2 (en) 2016-02-12 2019-04-09 Contrast, Inc. Devices and methods for high dynamic range video
US10264196B2 (en) 2016-02-12 2019-04-16 Contrast, Inc. Systems and methods for HDR video capture with a mobile device
US10243744B2 (en) * 2016-06-21 2019-03-26 The King Abdulaziz City For Science And Technology Residue message authentication code
AU2017308749A1 (en) 2016-08-09 2019-02-21 Contrast, Inc. Real-time HDR video for vehicle control
EP3649783A1 (de) 2017-07-05 2020-05-13 Red.Com, Llc Videobilddatenverarbeitung in elektronischen vorrichtungen
WO2020036955A1 (en) * 2018-08-14 2020-02-20 Contrast, Inc. Image processing noise reduction
CA3109671A1 (en) * 2018-08-14 2020-02-20 Contrast, Inc. Image compression
US11955227B2 (en) 2018-09-05 2024-04-09 Translational Imaging Innovations, Inc. Methods, systems and computer program products for retrospective data mining
CN115486070A (zh) * 2020-04-14 2022-12-16 威诺瓦国际有限公司 熵编码的变换系数排序
US20240097702A1 (en) * 2020-12-02 2024-03-21 Eaton Intelligent Power Limited Compression of multimodal sensed signals
CN113553002A (zh) * 2021-06-11 2021-10-26 宁乐 一种利用无理数的特性进行数据压缩和存储的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0539155A2 (de) * 1991-10-21 1993-04-28 Canon Kabushiki Kaisha Verfahren zur Bildübertragung

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5992688A (ja) * 1982-11-19 1984-05-28 Fuji Photo Film Co Ltd 適応形画像圧縮方式
US4774587A (en) * 1987-06-02 1988-09-27 Eastman Kodak Company Still video transceiver processor
FR2646046B1 (fr) * 1989-04-18 1995-08-25 France Etat Procede et dispositif de compression de donnees d'image par transformation mathematique a cout reduit de mise en oeuvre, notamment pour la transmission a debit reduit de sequences d'images
FR2660139B1 (fr) * 1990-03-23 1995-08-25 France Etat Procede de codage et de transmission a au moins deux niveaux de qualite d'images numeriques appartenant a une sequence d'images, et dispositifs correspondants.
US5129015A (en) * 1990-04-19 1992-07-07 Ricoh Company Ltd. Apparatus and method for compressing still images without multiplication
JPH05265709A (ja) * 1992-03-23 1993-10-15 Nec Corp 丸め演算回路
KR0150955B1 (ko) * 1992-05-27 1998-10-15 강진구 비트고정을 위한 영상압축방법과 신장방법 및 그 장치
US5394349A (en) * 1992-07-10 1995-02-28 Xing Technology Corporation Fast inverse discrete transform using subwords for decompression of information
WO1995009487A1 (en) * 1993-09-28 1995-04-06 Sony Corporation High efficiency encoding/decoding device
JPH07153195A (ja) * 1993-11-30 1995-06-16 Sony Corp ディジタル記録装置
US6356663B1 (en) * 1994-09-09 2002-03-12 Intel Corporation Processing image signals using spatial decomposition
JP2914226B2 (ja) * 1995-06-16 1999-06-28 日本電気株式会社 可逆変換を可能にするディジタル信号の変換符号化方式
JP3274593B2 (ja) * 1995-09-27 2002-04-15 日本電気株式会社 可逆変換可能な変換装置及び逆変換装置
US5850294A (en) * 1995-12-18 1998-12-15 Lucent Technologies Inc. Method and apparatus for post-processing images
US6058410A (en) * 1996-12-02 2000-05-02 Intel Corporation Method and apparatus for selecting a rounding mode for a numeric operation
JPH10294854A (ja) * 1997-04-21 1998-11-04 Fuji Photo Film Co Ltd 画像合成方法
US6058215A (en) * 1997-04-30 2000-05-02 Ricoh Company, Ltd. Reversible DCT for lossless-lossy compression
AUPP248498A0 (en) * 1998-03-20 1998-04-23 Canon Kabushiki Kaisha A method and apparatus for encoding and decoding an image

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0539155A2 (de) * 1991-10-21 1993-04-28 Canon Kabushiki Kaisha Verfahren zur Bildübertragung

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
JAYANT, N.S., NOLL, Peter: Digital Coding of Waveforms: Principles and Applications to Speech and Video *
JAYANT, N.S., NOLL, Peter: Digital Coding of Waveforms: Principles and Applications to Speech and Video; Prentice-Hall 1984, S. 546-563
Prentice-Hall 1984, S. 546-563 *
RABBANI, Majid, JONES, Paul W.: Digital Image Compression Techniques *
RABBANI, Majid, JONES, Paul W.: Digital Image Compression Techniques; SPIE Optical Engineering Press 1991, S. 75, 76, 102-111
SPIE Optical Engineering Press 1991, S. 75, 76, 102-111 *

Also Published As

Publication number Publication date
US20020009235A1 (en) 2002-01-24
US20040202376A1 (en) 2004-10-14
JPH10322219A (ja) 1998-12-04
JP3763968B2 (ja) 2006-04-05
US6195466B1 (en) 2001-02-27
US6792155B2 (en) 2004-09-14
US6058215A (en) 2000-05-02
US20010031096A1 (en) 2001-10-18
US6466699B2 (en) 2002-10-15
US7313286B2 (en) 2007-12-25
DE19819198A1 (de) 1998-11-19
JP4183196B2 (ja) 2008-11-19
GB9808331D0 (en) 1998-06-17
JP2006094490A (ja) 2006-04-06
GB2325368B (en) 1999-11-24
GB2325368A (en) 1998-11-18

Similar Documents

Publication Publication Date Title
DE19819198B4 (de) Reversible DCT für verlustfreie/verlustbehaftete Kompression
DE4133460C2 (de) Verfahren zum Verdichten von Bildern
DE69922486T2 (de) Nachbearbeitung von dekomprimierten bildern
DE69434862T2 (de) Segmentierungs-basiertes entfernen von artefakten aus einem jpeg-bild
DE19983253B4 (de) Die Kompression von Farbbildern auf der Grundlage einer zweidimensionalen diskreten Wavelet-Transformation, die ein scheinbar verlustloses Bild hervorbringt
DE69907798T2 (de) Umwandlungen von komprimierten Bildern
DE19861377B4 (de) Ein verbessertes Kompressions- und Dekompressionssystem mit reversiblen Wavelets und verlustbehafteter Rekonstruktion
DE69726042T2 (de) Abwärtsabtastung über schnell-DCT-Domänen und inverser Bewegungsausgleich
DE4428517C2 (de) Verfahren zum Behandeln eines Teiles eines komprimierten Bildes sowie Bildaufbereitungseinrichtung zur Durchführung dieses Verfahrens
DE69633129T2 (de) Waveletbaum-bildcoder mit überlappenden bildblöcken
DE69736329T2 (de) Verschachtelte verteilte kodierung von spärlich bestückten datensätzen
DE69833085T2 (de) Verfahren und Vorrichtung für die reversible Farbumwandlung
DE69818751T2 (de) Dekompression von interpolierten Bildern
DE60203850T2 (de) System und Verfahren zum Verarbeiten von Bildern mit aufgelöster Mosaikstruk- tur, um durch Farb-Aliasing hervorgerufenen Artefakte zu verringern.
DE60119904T2 (de) Vorrichtung und Verfahren zur Entfernung des Mosaikeffekts in Rohbilddaten im Hinblick auf die Datenkompression
DE19739266A1 (de) Verfahren und Vorrichtung zum Kodieren binärer Formen
EP0956539A1 (de) Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes
DE19819405B4 (de) Implementation eines reversiblen eingebetteten Wavelet-Systems
DE60015755T2 (de) Verlustfreie adaptive codierung von daten eines endlichen alphabets
EP0956703A1 (de) Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes
DE3545106C2 (de)
DE2647774C3 (de) Schaltungsanordnung zur Kodierung und Dekodierung von Bildern durch Matrizentransformation mit gewichtetem Beitrag mehrerer Bildpunkte zu einem transformierten Bildpunkt
EP0929975B1 (de) Verfahren und anordnung zur vektorquantisierung und zur inversen vektorquantisierung eines digitalisierten bildes
EP1110407B1 (de) Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes mit anwendung eines gesamtbewegungsvektors
EP0241745B1 (de) Verfahren zur Datenreduktion digitaler Bildsignale durch Vektorquantisierung von durch orthonormale Transformation mittels einer symmetrischen fastzyklischen Hadamard-Matrix gewonnenen Koeffizienten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04N0007260000

Ipc: H04N0019000000