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

Reversible DCT für verlustfreie/verlustbehaftete Kompression

Info

Publication number
DE19819198A1
DE19819198A1 DE19819198A DE19819198A DE19819198A1 DE 19819198 A1 DE19819198 A1 DE 19819198A1 DE 19819198 A DE19819198 A DE 19819198A DE 19819198 A DE19819198 A DE 19819198A DE 19819198 A1 DE19819198 A1 DE 19819198A1
Authority
DE
Germany
Prior art keywords
transformation
rotations
rotation
reversible
point
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.)
Granted
Application number
DE19819198A
Other languages
English (en)
Other versions
DE19819198B4 (de
Inventor
Edward L Schwartz
Ahmad 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

Description

Die vorliegende Erfindung betrifft das Gebiet der Kompressions- und Dekompressions­ systeme, 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. Hinsicht­ lich 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. Theore­ tisch 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 Transformations­ koeffizienten auf eine endliche Darstellung gerundet werden.
Bei den meisten Transformations-Implementationen garantiert das Runden der Koeffi­ zienten 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 Fehl­ anpassung ist für einen Datenaustausch erforderlich. Es kann einen Austausch bzw. eine Wechselwirkung zwischen dem Umfang der Fehlanpassung und der Geschwindig­ keit, den Kosten und anderen anzustrebenden Eigenschaften geben.
Eine parametrisierte Transformation, die hierin als Allen-parametrisierte Transforma­ tion (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 Kom­ pressor/Dekompressor, der auf DCT basiert, mit aufgenommen werden, wobei der Kompressor/Dekompressor in einem verlustfreien Kompressions-/Dekompressions­ system 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 Dekom­ pression 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 meh­ reren Rotationen bzw. Drehungen (im folgenden "Rotation" genannt) (z. B. 2-Punkt- (2×2)-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 Nachschlagtabel­ le 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 Zeichnun­ gen verschiedener Ausführungsformen der Erfindung. Dabei werden weitere vorteilhaf­ te Merkmale der Erfindung offenbart. Verschiedene Merkmale unterschiedlicher Ausführungsformen können kombiniert werden.
Fig. 1A ist ein Blockdiagramm einer Ausführungsform eines verlustfreien und verlustbehafteten Kompressionssystems, das auf DCT basiert.
Fig. 1B ist ein Blockdiagramm einer Ausführungsform des Kompressors der vorliegenden Erfindung.
Fig. 1C ist ein Blockdiagramm einer alternativen Ausführungsform des Kom­ pressors der vorliegenden Erfindung.
Fig. 2 ist ein Blockdiagramm einer Ausführungsform eines Video-Autoren­ systems.
Fig. 3A zeigt ein Blockdiagramm eine Ausführungsform einer eindimensionalen (1D) 8-Punkt-vorwärts-parametrisierten Transformation.
Fig. 3B zeigt Zwischenwerte bei einer parametrisierten Transformation, die denselben Skalierungsfaktor haben.
Fig. 4 zeigt die Hein-Form der subsidiären Matrix (auch Nebenmatrix oder Tochtermatrix genannt) der Fig. 3A.
Fig. 5A ist ein Blockdiagramm einer Ausführungsform einer 8-Punkt-Hadamard-Transformation gemäß der vorliegenden Erfindung.
Fig. 5B ist ein Blockdiagramm einer Ausführungsform einer 8-Punkt-Haar-Transformation gemäß der vorliegenden Erfindung.
Fig. 5C ist ein Blockdiagramm einer Ausführungsform einer 4-Punkt-Sinus-Transformation gemaß der vorliegenden Erfindung.
Fig. 5D ist ein Blockdiagramm einer Ausführungsform einer 4-Punkt-Slant-Transformation gemäß der vorliegenden Erfindung.
Fig. 6 zeigt eine Ausführungsform einer Vorwärts-Siebkette bzw. eines Vor­ wärts-Leiterfilters ("forward ladder filter") einer 2-Punkt-Rotation.
Fig. 7 zeigt eine Ausführungsform einer inversen Siebkette bzw. eines inversen Leiterfilters ("inverse ladder filter") einer 2-Punkt-Rotation.
Fig. 8 zeigt einen Abschnitt der Abbildung bzw. der Umsetzung (des "map­ ping") für eine 45°-Drehung.
Fig. 9 zeigt Extras ("+") und Kollisionen ("o") für eine 45°-Drehung.
Fig. 10 ist eine Darstellung von Kollisionen und Extras bei einer 2,1 fast ausge­ glichenen Transformation.
Fig. 11 zeigt eine Ausführungsform einer Nachschlagtabelle eines Teils einer "B"-2-Punkt-Rotation.
Fig. 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 Be­ schreibung 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 Vor­ richtungen 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 Datenver­ arbeitung verwenden, um den wesentlichen Inhalt ihrer Arbeit anderen Fachleute zu vermitteln. Ein Algorithmus wird hier im allgemeinen als eine selbstkonsistente Abfol­ ge von Schritten verstanden, die zu einem gewünschten Ergebnis führen. Bei den Schritten handelt es sich um solche, die physikalische Manipulationen von physika­ lischen Quantitäten bzw. Einheiten erfordern. Üblicherweise aber nicht notwendiger­ weise nehmen diese Quantitäten die Gestalt von elektrischen oder magnetischen Signa­ len 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, Zei­ chen, 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 Datenver­ arbeitung 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 Manipu­ lationen von physikalischen Quantitäten erfordern. Üblicherweise, aber nicht notwendi­ gerweise, nehmen diese Quantitäten die Gestalt von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen oder sonstwie manipu­ liert 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 zu­ geordnet 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 Anzeige­ vorrichtungen dargestellt werden. Derartige Computersysteme verwenden typischer­ weise 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 Spei­ chermedium, 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, magneti­ schen 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 erforderli­ chen Verfahrensschritte durchzuführen. Der notwendige Aufbau für eine Vielfalt von diesen Geräten ergibt sich aus der folgenden Beschreibung. Zusätzlich wird die vorlie­ gende Erfindung nicht unter Bezugnahme auf irgendeine bestimmte Programmier­ sprache 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 er­ möglicht, daß eine auf DCT basierende Kompression verlustbehaftet und verlustfrei ist.
Reversibe Transformationen sind effiziente Transformationen, die mit einer Ganzzahl- Arithmetik implementiert werden 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 Koeffi­ zienten 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 mit 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-Fehl­ anpassung 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 vorliegenden Erfindung kann bei verlustfreien oder verlustbe­ hafteten Systemen verwendet werden, die entweder eine reversible inverse DCT enthalten, um exakt zu erzielen, was ursprünglich eingegeben wurde, oder eine (nicht­ reversible) 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 re­ versiblen 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-De­ coder mit der reversiblen DCT der vorliegenden Erfindung verwendet werden.
Fig. 1 ist ein Blockdiagramm einer Ausführungsform eines verlustfreien und verlustbe­ hafteten 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 Fig. 1, so werden die Ein­ gangsdaten 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 wer­ den, die beide nicht gezeigt wurden, um eine Verschleierung der Erfindung zu vermei­ den. 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 Kom­ pression 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 Dekom­ pressor 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 Frequenz­ koeffizienten 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-Trans­ formation 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 ge­ trenntes 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.
Fig. 1B ist ein Blockdiagramm einer Ausführungsform des Kompressors der vorliegen­ den Erfindung. Nimmt man Bezug auf Fig. 1B, so beinhaltet der Prozessor einen Farbraum- oder Unterabtastblock 121, der eine Farbraumkonversion oder eine Unter­ abtastung der Eingangsdaten durchführt. Es handelt sich hierbei um einen optionalen Block und er muß nicht in manchen Kompressoren enthalten sein. Bei einer Aus­ führungsform ist der Farbraum, der durch den Block 121 durchgeführt wird, re­ versibel.
Die Ausgabe des Farbraum-/Unterabtastblocks 121 ist an der reversiblen DCT 122 angeschlossen. Die transformierten Werte, die von der reversiblen DCT 122 ausge­ geben werden, sind mit dem Eingang des Zickzack-Ordnungsblocks 123 verbunden, der die gut bekannten Zickzack-Ordnungstechniken ("zig-zag"-Ordnungstechniken) durch­ führt. Bemerkenswert 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ängen­ blocks 124 ist mit dem Eingang eines HufIman-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 verset­ zen, 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.
Fig. 1C ist ein Blockdiagramm einer alternativen Ausführungsform des Kompressors der vorliegenden Erfindung. Nimmt man Bezug auf Fig. 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 Kon­ textmodell 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 Kon­ texten. 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 verbun­ den.
Fig. 2 ist ein Blockdiagramm einer Beispielanwendung der vorliegenden Erfindung, und zwar auf dem Gebiet des Video-Autorensystems. Nimmt man Bezug auf Fig. 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 er­ mö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 Her­ vorhebung 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 Kompres­ sionsstandards, 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-Dekom­ pressor 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 verwer­ fen bzw. auszusortieren sind (mit anderen Worten, welche Bits behalten werden). Bei einer Ausführungsform kann der Extraktionsblock 203 nur einige der Blöcke aus­ wä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 Be­ rechnung, 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 wiederzugewin­ nen. 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. Bei­ spiele 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-Kom­ pression 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 mit jeglicher verlustfreier Dekompressionsanwendung verwendet werden könnte, ist es am nützlichsten, wenn sie mit "Vermächtnis"-Syste­ men, die auf einer verlustbehafteten DCT basieren, verwendet wird. Andere verein­ heitlichte verlustbehaftete/verlustfreie Kompressionssysteme, wie z. B. die Kompression mit reversiblen Wavelets, können verwendet werden, falls eine "Vermächtnis"-System­ kompatibilitä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, verwiesen. 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 "Ganz­ zahl-Rotationen". Bei einer Ausführungsform umfaßt jede Rotation eine Transforma­ tion, wobei der Absolutwert für deren Determinante 1 beträgt. Die vorliegende Erfin­ dung erzielt eine reversible DCT, indem die DCT in eine Vielzahl reversibler Kompo­ nenten dekomprimiert wird. Weil die einzelnen Teile reversibel sind, ist die DCT reversibel.
Fig. 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 Fig. 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 aus­ bilden. 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 Eingangs­ datenwerten 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 empfängt zwei Ausgangssignale, wobei einer mit einem Eingang einer Rotation 306 verbunden ist und einer mit 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 Rota­ tion 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 mit 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 folgen­ den 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 Fig. 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 Fig. 4 gezeigt. Nimmt man Bezug auf Fig. 4, so umfaßt die subsidiäre Matrix sechs Rotatio­ nen (um einen Winkel). Ein Paar von Rotationen um einen Winkel einer Rotation von 45° (oder arctan = 1) ist angeschlossen, um jeweils zwei Eingangssignale zu emp­ fangen 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 mit 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 umfas­ sen.
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/Dekom­ pression können Skalierfaktoren mit 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 Fig. 3A gezeigt ist, wird der Skalierfaktor für beide Ausgangssignale einer jeden Rotation durch die folgende Gleichung gegeben:
Für die folgende 2-Punkt-Transformation:
beträgt der Skalierfaktor
Für die folgende 2-Punkt-Transformation:
beträgt der Skalierfaktor 1/(a2+b2)1/2 für ein Ausgangssignal, das auf a, b zurück­ zufü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.
Fig. 3B zeigt Zwischenwerte in der APT, die denselben Skalierfaktor haben. Nimmt man Bezug auf Fig. 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 Nebenbedingun­ gen auf. Zum Beispiel ist es für alle Rotationen mit 1 (alle bis auf 309) nicht er­ forderlich, denselben Skalierfaktor (im folgenden auch "Skalenfaktor" genannt) für beide Ausgangssignale zu haben, so daß eine unausgeglichene bzw. eine nicht-ba­ lancierte 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 mit R (309) dieselben Skalenfaktoren am Ausgang wie der Eingang haben.
Nimmt man Bezug auf Fig. 3B, so haben die zwei Eingänge für die Rotation 307 dieselben Skalenfaktoren. Die zwei Eingänge zur Rotation 308 haben dieselben Skalen­ faktoren. 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 Skalen­ faktoren, 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 Skalenfakto­ ren 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 Aus­ dehnung 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
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 Trans­ formation. Diese Rundungsoperationen verursachen ebenso eine Fehlanpassung. Manche Fehlanpassung ist unvermeidbar, weil Verfahren, die zu denselben Koeffizien­ ten 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 Effi­ zienz sind zwei andere Eigenschaften wünschenswert: ausgeglichene Skalierfaktoren und kein internes Runden.
Eine 2-Punkt-Transformation hat die Skalenfaktoren "ausgeglichen", falls die Skalen­ faktoren 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 De­ terminante 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 Skalier­ faktoren 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 führt.
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-Im­ plementationen 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 Implementa­ tionen das Runden. Deshalb weist die inverse Transformation den inversen Datenfluß der Fig. 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 Implementa­ tionen 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. Bau­ blö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-Transfonnation, S-Transformation - 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ärtstrans­ formation und x und y die Ausgänge zu der Vorwärtstransformation darstellen:
Bemerkenswert ist, daß die Bodenfunktion (└.┘) und die Deckenfunktionen (┌.┐) ein Runden nach negativ unendlich und positiv unendlich jeweilig bedeuten.
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.
wobei die wiedergewonnen niedrigstwertigten Bits durch die folgende Gleichung gege­ ben 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.
wobei
Diese Transformation hat die Determinante 26/25 = 1,04. Deshalb beträgt die Redun­ danz 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:
Diese Transformation 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.
Diese ist sowohl balanciert als auch effizient. Die Ziffern 5, 12, 13 sind ein pythago­ reisches 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.
Es ist offensichtlich von diesem Ergebnis, daß die Auswahl des Offsets die Reversibili­ tä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.
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:
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:
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 führt 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 hinsicht­ lich 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:
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.
Nicht-DCT-Transformationen
Fig. 5A zeigt eine 8-Punkt-Hadamard-Transformation. Nimmt man Bezug auf Fig. 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 Aus­ gaben 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-Abtast­ werte 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.
Fig. 5B zeigt eine 8-Punkt-Haar-Transformation. Nimmt man Bezug auf Fig. 5B, so umfaßt die Haar-Transformation Rotationen 520 bis 526, die jeweils 2-Punkt-Rotatio­ nen um tan(π/4) = 1 darstellen. Die Rotation 520 ist angeschlossen, um Eingangsdaten­ werte 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 Ausgangs­ datenwert 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.
Fig. 5C zeigt eine Ausführungsform der 4-Punkt-Sinustransformation. Nimmt man Bezug auf Fig. 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 Aus­ gaben 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.
Fig. 5D zeigt eine Ausführungsform der 4-Punkt-Slant-Transformation. Nimmt man Bezug auf Fig. 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 implementie­ ren. 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.
Um reversibel und effizient zu sein, folgt jeder Multiplikation eine Rundung zu einer ganzen Zahl, wie in den Fig. 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 Fig. 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θ multi­ pliziert. Das Ergebnis wird auf die ganze Zahl beim Block 604 gerundet. Die Ergeb­ nisse 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 Multiplizie­ rer 607 eingegeben, der den Ausgang des Addierers 601 mit dem Wert von cosθ-1 dividiert durch sinθ multipliziert. Die Ergebnisse der Multiplikation 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 Fig. 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 Run­ dens 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 Sub­ trahierers 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 Multiplika­ tion 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 Leiter­ filters, den Ausgang 713 dar.
Der Effekt der drei Rundungsoperationen und der Effekt der Präzision der Implementa­ tion 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 Leiterfil­ ter konstruiert werden. Zum Beispiel kann die 4-Punkt-DCT als ein Leiterfilter im­ plementiert werden, indem er in drei Matrizen zerlegt wird, wie im folgenden gezeigt ist:
Diese Matrizen enthalten die folgenden Konstanten:
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 Eins­ zu-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 verwen­ det wird, die für den APT-Parameter R in der Tabelle 1 gegeben ist.
Dies ist nicht reversibel für alle konstanten Rundungsoffsets. Jedoch, falls die Run­ dungsoffsets 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 Verbin­ dung 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.
Fig. 8 zeigt einen Abschnitt der Abbildung von Eingangswerten zu transformierten Ausgangswerten für die 45°-Rotation. Die obige Gleichung kann wie folgt neu ge­ schrieben werden:
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 un­ schattiertes Viereck aufweist. Bereiche mit 2 unschattierten Vierecken zeigen Proble­ me, 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 ge­ macht werden kann, daß sie 1 : 1 ist, indem die Ausgabewerte für Extras für die Ein­ gabewerte 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 wenig­ stens ein Extra gibt. Falls die Kollisionen durch nah beieinanderliegende Extras dargestellt werden, wird eine Fehlanpassung aufgrund des Rundens reduziert und kann minimiert werden.
Fig. 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
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 Kollisio­ nen erhöhen den RMSE auf 0,6529 für diese Näherung. Die Spalte, die "Rundungsoff­ set" ("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 (log2 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 Ein­ gaben 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 Rundungs­ versatz 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.dd
für die Gleichung:
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-dimensio­ nale Felder bzw. Arrays sind, würde die Indizierung einer 1D-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
Fig. 12 ist ein Blockdiagramm einer Ausführungsform einer Rotation gemäß der vorliegenden Erfindung. Nimmt man Bezug auf Fig. 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 Rest­ ergebnis zu dem anderen Eingang des Paritätskorrekturblockes 1205 ausgibt und den Quotienten zu dem Eingang des Multiplizierers 1207 ausgibt. Der Paritätskorrektor­ block 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 1210 d' mit √½ 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ˆ1
ansonsten
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 Fig. 12 gezeigt ist, mit der Ausnahme, daß die Richtung umgekehrt ist. Eine derartige Implementation wäre für einen Fachmann angesichts der Fig. 12 offensicht­ lich.
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 Nachschlagta­ belle ü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 Kollisionszeile bereit­ zustellen.
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 Fig. 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 8. 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 dieje­ nigen 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, ver­ wende 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, ver­ wende 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 Kollisio­ nen und Extras berücksichtigt werden oder alle Eingangs- und Ausgangswerte berück­ sichtigt 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 Verbesse­ rungen 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. B. 0) bis letzten Tausch-Kandi­ dat-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 assigninents 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 Zu­ weisung 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_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 "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 priori­ tä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 geringe 20437 00070 552 001000280000000200012000285912032600040 0002019819198 00004 20318r 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
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 Transformatio­ nen 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.
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.
Tabelle 4 - Nachschlagtabelle für 2,1-fast balancierte Transformation
Fig. 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 Anhang 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 Fig. 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 Fig. 4 gezeigt ist. Die "effiziente" und "effiziente" Hein verwendet die Baublöcke bzw. Bausteine der re­ versiblen Implementationen, die oben beschrieben wurden, die keine internen Rundun­ gen 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
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 Fig. 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
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
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 Horizontalkoeffizien­ ten 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- Koeffrzienten 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-Kompressions­ verhä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
Tabelle 9 - Minimale Quantisierungsmatrix für effiziente reversible 8×8-APT, die einen Leiterfilter verwendet
Die Struktur der minimalen Quantisierungsmatrizen für gewisse Transformationen wird durch die Struktur der APT-Skalierfaktor-Matrizen erläutert. Die Leiterfilter-Im­ plementation 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
Tabelle 11 - Skalierfaktoren für effiziente reversible 8×8-APT
Tabelle 12 - Skalierfaktoren für "nahezu effiziente" reversible 8×8-APT
Verlustbehaftetes Codieren
Verlustbehaftetes Codieren mit der reversiblen APT beginnt mit der verlustfreien Codierung, indem die reversible APT verwendet wird. Die Decodierung ist verlustbe­ haftet 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 Kompressions­ system, wie z. B. JPEG, in derselben Art und Weise wie reguläre APT-Koeffizienten verwendet werden. Eine JPEG-Quantisierungsmatrix wird ausgewählt. Jeder Quantisie­ rer 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 sequen­ tiellen 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 notwendi­ gerweise 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-Koeffi­ zienten, 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. psycho­ physisch 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 ent­ sprechenden 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
Tabelle 14 - Quantisierungsmatrix für "psychovisuelle" Verschiebungen
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
Tabelle 16 - Quantisierungsmatrix von "normalisierten" Verschiebungen
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 vor­ genommen 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 Im­ plementation. 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 Fig. 11 gezeigt sind. Bezüglich der Hardware könnten die zwei Nachschlagtabellen mit einer dazu bestimm­ ten Logik ersetzt werden.
Nimmt man Bezug auf Fig. 11, so arbeiten die LUTs 1201 und 1202 wie folgt:
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 Bildcodie­ rung handelt. Die reversible parametrisierte Allen-Transform (reversible APT) im­ plementiert 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 Trans­ formation, 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.
Bezugszeichenliste
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 (49)

1. System mit einem Kompressor, der eine reversible diskrete Kosinustransforma­ tion (DCT) aufweist bzw. durchführt und einem Dekompressor.
2. System nach Anspruch 1, bei welchem der Dekompressor einen Dekompressor mit einer reversiblen inversen DCT ist.
3. System nach Anspruch 1, bei welchem der Dekompressor einen "Vermächtnis"- Dekompressor bzw. Legacy-Dekompressor mit einer inversen DCT umfaßt.
4. System nach Anspruch 1, bei welchem die DCT eine Anzahl von 2-Punkt- Rotationen umfaßt.
5. System nach Anspruch 4, bei welchem eine Anzahl von 2-Punkt-Rotationen Transformationen umfassen.
6. System nach Anspruch 5, bei welchem jede der Transformationen balancierte bzw. ausgeglichene Skalierfaktoren aufweist.
7. System nach Anspruch 6, bei welchem die Skalierfaktoren beider Ausgaben einzelner bzw. individueller Transformationen gleich sind.
8. System, das im Anspruch 6 festgelegt ist, bei welchem das Produkt der Skalier­ faktoren für zwei Ausgaben einer Transformation 1 ist.
9. System, das im Anspruch 6 festgelegt ist, bei welchem beide Skalierfaktoren von Ausgaben einer Transformation geringer als 1 sind.
10. System, das im Anspruch 4 festgelegt ist, bei welchem jede der Anzahl von 2- Punkt-Rotationen reversibel ist.
11. System, das im Anspruch 10 festgelegt ist, bei welchem die Anzahl von 2- Punkt-Rotationen kein internes Runden aufweist.
12. System nach Anspruch 4, bei welchem wenigstens eine der 2-Punkt-Rotationen eine S-Transformation umfaßt.
13. System nach Anspruch 4, bei welchem wenigstens eine der 2-Punkt-Rotationen eine unbalancierte 5,1-Transformation umfaßt.
14. System nach Anspruch 4, bei welchem wenigstens eine der 2-Punkt-Rotationen eine balancierte 5,1-Transformation umfaßt.
15. System, das im Anspruch 4 festgelegt ist, bei welchem wenigstens eine der 2- Punkt-Rotationen eine 60,11-Transformation umfaßt.
16. System, das im Anspruch 4 festgelegt ist, bei welchem wenigstens eine der 2- Punkt-Rotationen eine 12,5-Transformation umfaßt.
17. System, das im Anspruch 4 festgelegt ist, bei welchem wenigstens eine der 2- Punkt-Rotationen eine 3,2-Transformation umfaßt.
18. System, das im Anspruch 4 festgelegt ist, bei welchem wenigstens eine der 2- Punkt-Rotationen eine 4,3-Transformation umfaßt.
19. System, das im Anspruch 4 festgelegt ist, bei welchem wenigstens eine der 2- Punkt-Rotationen ein Leiterfilter bzw. eine Siebkette umfaßt.
20. System, das im Anspruch 19 festgelegt ist, bei welchem Ergebnisse einer jeden Multiplikation, die in dem Leiterfilter bzw. dem Siebkreis durchgeführt werden, auf einen ganzzahligen Wert gerundet werden.
21. System, das im Anspruch 4 festgelegt ist, bei welchem wenigstens eine der 2- Punkt-Rotationen Rundungsoffsets bzw. Rundungsversatz aufweist, die eine Funktion ihrer Eingaben darstellen.
22. System nach Anspruch 4, bei welchem wenigstens eine der 2-Punkt-Rotationen Rundungsoffsets aufweist, die Funktionen der Summe und der Differenz ihrer Eingaben modulo eines Divisors sind.
23. Transformationskompressor, der auf einem Block basiert und folgendes umfaßt:
eine erste Anzahl von Rotationen;
eine parametrisierte 4-Punkt-Transformation, die mit einem ersten Satz von Ausgaben der ersten Anzahl von Rotationen verbunden ist und die eine zweite Anzahl von Rotationen einschließlich einer Rotation durch B bzw. eine B- Rotation umfaßt; und
eine subsidiäre Matrix, die mit einem zweiten Satz von Ausgaben der ersten Anzahl von Rotationen verbunden ist, wobei welchem die subsidiäre Matrix eine Rotation durch A bzw. eine A-Rotation und eine Rotation durch C bzw. C- Rotation umfaßt; bei welchem die erste Anzahl von Rotationen, die parametrisierte 4-Punkt- Transformation und die subsidiäre Matrix als eine reversible Transformation, die auf einem Block basiert, arbeiten.
24. Kompressor, der im Anspruch 23 festgelegt ist, bei welchem die Rotation durch B eine 12,5-Transformation umfaßt.
25. Kompressor, der im Anspruch 23 festgelegt ist, bei welchem die erste Anzahl von Rotationen 2-Punkt-Rotationen umfaßt.
26. Kompressor, der im Anspruch 23 festgelegt ist, bei welchem die subsidiäre Matrix folgendes umfaßt:
eine erste 2-Punkt-Rotation mit zwei Eingängen bzw. Eingaben, die mit ersten zwei Ausgaben bzw. Ausgängen der ersten Anzahl von Rotationen verbunden sind;
ein Paar von Multiplizierern, die mit einzelnen Ausgängen der ersten 2-Punkt- Rotation verbunden sind;
ein erstes Paar von 2-Punkt-Rotationen, die angeschlossen sind, um Ausgaben von dem Paar von Multiplizierern und zweite zwei Ausgaben von der ersten Anzahl von Rotationen zu empfangen;
die Rotation durch C und die Rotation durch A, die angeschlossen sind, um Ausgaben des ersten Paares von 2-Punkt-Rotationen zu empfangen.
27. Kompressor, der folgendes umfaßt:
einen Eingang;
eine reversible DCT mit wenigstens einer Transformation, die eine Nach­ schlagtabelle umfaßt, die eine Abbildung von Transformationseingabewerten zu Transformationsausgabwerten umfaßt, und bei welchem die Abbildung Eingabe­ werte von einer ersten Gruppe abbildet, in der ein Runden Eingaben zu densel­ ben Transformationswerten abbildet, um Ausgabewerte zu transformieren, die nicht beim Runden verwendet worden wären.
28. Kompressor nach Anspruch 27, bei welchem wenigstens eine Transformation eine Determinante aufweist, die größer oder gleich 1 ist.
29. Verfahren zur Erzeugung einer Nachschlagtabelle zum Runden von Offsets, wobei das Verfahren die folgenden Schritte umfaßt:
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 wer­ den, um einen Transformationsausgabewert bereitzustellen, der nicht bei dem anfänglichen Runden verwendet werden würde, wobei jedes Extra einen Trans­ formationsausgabewert umfaßt, der nicht mit einem anfänglichen Runden verwendet werden würde,
wähle eine Anzahl von Extras, die gleichmäßig innerhalb einer Zeile beabstan­ det 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.
30. Verfahren nach Anspruch 29, das weiter den Schritt umfaßt, bei welchem Paare von Eingangswerten und Transformationsausgabewerten getauscht werden.
31. Verfahren nach Anspruch 30, das weiter den Schritt umfaßt, bei welchem Triplets von Eingabewerten und von Transformationsausgabewerten rotiert werden.
32. Verfahren zum Erzeugen einer Nachschlagtabelle zum Runden von Offsets, wobei das Verfahren die folgenden Schritte umfaßt:
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.
33. Verfahren nach Anspruch 32, bei welchem die vorbestimmten Kriterien einen Quadratfehler bzw. quadratischen Fehler umfassen und ein Tausch identifiziert wird, bei dem der quadratische Fehler reduziert ist.
34. Kompressor, der folgendes umfaßt:
eine reversible Transformation, die auf einem Block bzw. auf Blöcken basiert;
einen Codierer, der mit der reversiblen auf Blöcken basierenden Transformation verbunden ist, um Daten zu codieren, die von einer Ausgabe der reversiblen auf Blöcken basierenden Transformation getrieben bzw. gesteuert werden.
35. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine DFT-Transformation umfaßt.
36. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine Kosinustransformation umfaßt.
37. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine Sinustransformation umfaßt.
38. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine Hadamard-Transformation umfaßt.
39. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine Haar-Transformation umfaßt.
40. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine Slant-Transformation umfaßt.
41. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine Karhunen-Loeve-Transformation umfaßt.
42. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine schnelle KL-Transformation umfaßt.
43. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine sinusförmige Transformation umfaßt.
44. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine SVD-Transformation umfaßt.
45. Kompressor, der im Anspruch 34 festgelegt ist, bei welchem die Transforma­ tion eine überlappte bzw. "lapped" oder orthogonale Transformation umfaßt.
46. Computerlesbares Medium, das ein ausführbares Programm mit einer Abfolge von Instruktionen speichert, die, wenn sie vom einem Prozessor ausgeführt werden, den Prozessor veranlassen, die folgenden Schritte auszuführen:
Eingangsdaten werden empfangen; und
eine reversible DCT-Transformation wird ausgeführt.
47. Medium nach Anspruch 46, bei welchem die Sequenzen von Instruktionen weiter den Prozessor veranlassen, den Schritt der Quantisierung von Koeffizien­ ten durchzuführen, die erzeugt werden, indem die reversible DCT-Transforma­ tion ausgeführt wird, wobei die Quantisierung mit Skalierfaktoren ausgeführt wird.
48. Medium, das im Anspruch 46 festgelegt ist, bei welchem die Sequenzen von Instruktionen weiter den Prozessor veranlassen, die folgenden Schritt auszufüh­ ren:
Zickzack-Ordnen;
Lauflängen von Nullen werden erzeugt; und
Huffman-Codieren wird ausgeführt.
49. Medium nach Anspruch 46 bis 48, bei welchem die Sequenzen von Instruktio­ nen weiter den Prozessor veranlassen, 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 Wahrschein­ lichkeitsschä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 true DE19819198A1 (de) 1998-11-19
DE19819198B4 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
WO2000031878A1 (en) * 1998-11-20 2000-06-02 Interval Research Corporation Low cost video compression using fast, modified z-coding of wavelet pyramids
US8068544B2 (en) * 1998-12-21 2011-11-29 Zin Stai Pte. In, Llc Compression with doppler enhancement
US7671864B2 (en) 2000-01-14 2010-03-02 Roman Kendyl A Faster image processing
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
US20080250458A1 (en) * 1998-12-21 2008-10-09 Roman Kendyl A Media exchange for handheld wireless receivers and other media user devices
US8290034B2 (en) * 1998-12-21 2012-10-16 Zin Stai Pte. In, Llc Video transmission and display including bit-wise sub-sampling video compression
US8170095B2 (en) * 1998-12-21 2012-05-01 Zin Stai Pte. In, Llc Faster image processing
US20030005428A1 (en) * 2001-05-26 2003-01-02 Roman Kendyl A. Global media exchange
US7233619B1 (en) * 1998-12-21 2007-06-19 Roman Kendyl A Variable general purpose compression for video images (ZLN)
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
AU6118700A (en) * 1999-07-23 2001-02-13 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
MXPA06003508A (es) * 2003-09-29 2007-01-25 Agency Science Tech & Res Metodo para transformar una senal digital del dominio de tiempo al dominio de frecuencia y viceversa.
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
US20050196055A1 (en) * 2004-03-04 2005-09-08 Sheng Zhong Method and system for codifying signals that ensure high fidelity reconstruction
US8335811B2 (en) * 2004-03-04 2012-12-18 Broadcom Corporation Method and system for high fidelity IDCT and DCT algorithms
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
US7805476B2 (en) * 2005-06-27 2010-09-28 The Aerospace Corporation Extended Haar transform
US7640283B2 (en) * 2005-06-27 2009-12-29 The Aerospace Corporation Shared Haar wavelet transform
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
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
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
US7995649B2 (en) 2006-04-07 2011-08-09 Microsoft Corporation Quantization adjustment based on texture level
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
WO2014127153A1 (en) 2013-02-14 2014-08-21 Red. Com, Inc. Video camera
US10257394B2 (en) 2016-02-12 2019-04-09 Contrast, Inc. Combined HDR/LDR video streaming
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
WO2018031441A1 (en) 2016-08-09 2018-02-15 Contrast, Inc. Real-time hdr video for vehicle control
WO2019010233A1 (en) 2017-07-05 2019-01-10 Red. Com, Llc PROCESSING VIDEO IMAGE DATA IN ELECTRONIC DEVICES
CA3109667A1 (en) * 2018-08-14 2020-02-20 Contrast, Inc. Image processing noise reduction
EP3837635A4 (de) * 2018-08-14 2022-04-27 Contrast, Inc. Bildkomprimierung
US11955227B2 (en) 2018-09-05 2024-04-09 Translational Imaging Innovations, Inc. Methods, systems and computer program products for retrospective data mining
WO2021209748A1 (en) * 2020-04-14 2021-10-21 V-nova International Ltd. Transformed coefficient ordering for entropy coding
CN116671022A (zh) * 2020-12-02 2023-08-29 伊顿智能动力有限公司 多峰感测信号的压缩
CN113553002A (zh) * 2021-06-11 2021-10-26 宁乐 一种利用无理数的特性进行数据压缩和存储的方法

Family Cites Families (19)

* 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
JPH05115007A (ja) * 1991-10-21 1993-05-07 Canon Inc 画像伝送方法
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
US5604494A (en) * 1993-09-28 1997-02-18 Sony Corporation Efficient encoding/decoding apparatus
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

Also Published As

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

Similar Documents

Publication Publication Date Title
DE19819198B4 (de) Reversible DCT für verlustfreie/verlustbehaftete Kompression
DE19983253B4 (de) Die Kompression von Farbbildern auf der Grundlage einer zweidimensionalen diskreten Wavelet-Transformation, die ein scheinbar verlustloses Bild hervorbringt
DE4133460C2 (de) Verfahren zum Verdichten von Bildern
DE69434862T2 (de) Segmentierungs-basiertes entfernen von artefakten aus einem jpeg-bild
DE69723550T2 (de) Kodierung und dekodierung von grafischen symbolen
DE19861377B4 (de) Ein verbessertes Kompressions- und Dekompressionssystem mit reversiblen Wavelets und verlustbehafteter Rekonstruktion
DE19626615C2 (de) Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet
DE69831961T2 (de) Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten
DE69634962T2 (de) Extrapolation von Pixelwerten eines in einem Block enthaltenen Videoobjektes
DE19626600C2 (de) Kodierer und Verfahren zum Kodieren
DE4428517C2 (de) Verfahren zum Behandeln eines Teiles eines komprimierten Bildes sowie Bildaufbereitungseinrichtung zur Durchführung dieses Verfahrens
DE69833085T2 (de) Verfahren und Vorrichtung für die reversible Farbumwandlung
DE112009004344T5 (de) Parallele Implementierung einer Rechenmaschine nach dem Pipelineverfahren auf einerintegrierten Schaltung
DE60203850T2 (de) System und Verfahren zum Verarbeiten von Bildern mit aufgelöster Mosaikstruk- tur, um durch Farb-Aliasing hervorgerufenen Artefakte zu verringern.
DE69818751T2 (de) Dekompression von interpolierten Bildern
DE19534730A1 (de) Verfahren zum Codieren und Decodieren von Daten
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
DE69820148T2 (de) Verfahren zur Kompression/Dekompression von Bilddaten
DE102016003681A1 (de) Datenkompression mittels adaptiven Unterabtastens
WO1998034406A1 (de) Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes
DE3545106C2 (de)
DE69918980T2 (de) Videokompression mit speicherreduktion, farbrotation und kombinierter signal- und blockrandfilterung

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