DE19819198A1 - Reversible DCT für verlustfreie/verlustbehaftete Kompression - Google Patents
Reversible DCT für verlustfreie/verlustbehaftete KompressionInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/007—Transform coding, e.g. discrete cosine transform
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Discrete Mathematics (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Image Processing (AREA)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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
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
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.
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
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]
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
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
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.
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.
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
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
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.
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
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
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
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
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
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
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.
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.
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 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
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
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.
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.
Der folgende Source-Code implementiert die nahezu balancierte 2,1-Transformation,
wobei eine Nachschlagtabelle, wie oben beschrieben, verwendet wird.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/846352 | 1997-04-30 | ||
US08/846,352 US6058215A (en) | 1997-04-30 | 1997-04-30 | Reversible DCT for lossless-lossy compression |
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 (87)
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 |
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 |
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 |
US7671864B2 (en) | 2000-01-14 | 2010-03-02 | Roman Kendyl A | 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) |
US8068544B2 (en) * | 1998-12-21 | 2011-11-29 | Zin Stai Pte. In, Llc | Compression with doppler enhancement |
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 |
EP1668534A4 (de) * | 2003-09-29 | 2013-08-21 | Agency Science Tech & Res | Verfahren zum transformieren eines digitalen signals aus der zeitdomäne in die frequenzdomäne und umgekehrt |
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 |
WO2006049412A1 (en) * | 2004-11-01 | 2006-05-11 | Electronics And Telecommunications Research Institute | Method for encoding/decoding a video sequence based on hierarchical b-picture using adaptively-adjusted gop structure |
US7720299B2 (en) * | 2005-05-10 | 2010-05-18 | The Aerospace Corporation | Compressed data multiple description transmission and resolution conversion system |
US8422546B2 (en) * | 2005-05-25 | 2013-04-16 | Microsoft Corporation | Adaptive video encoding using a perceptual model |
US7613761B2 (en) * | 2005-06-27 | 2009-11-03 | The Aerospace Corporation | Haar wavelet transform embedded lossless type II discrete cosine transform |
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 |
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 |
US7995649B2 (en) * | 2006-04-07 | 2011-08-09 | Microsoft Corporation | Quantization adjustment based on texture level |
US7974340B2 (en) | 2006-04-07 | 2011-07-05 | Microsoft Corporation | Adaptive B-picture quantization control |
US8503536B2 (en) | 2006-04-07 | 2013-08-06 | Microsoft Corporation | Quantization adjustments for DC shift artifacts |
US8711925B2 (en) | 2006-05-05 | 2014-04-29 | Microsoft Corporation | Flexible quantization |
US8238424B2 (en) | 2007-02-09 | 2012-08-07 | Microsoft Corporation | Complexity-based adaptive preprocessing for multiple-pass video compression |
US8942289B2 (en) * | 2007-02-21 | 2015-01-27 | Microsoft Corporation | Computational complexity and precision control in transform-based digital media codec |
US8498335B2 (en) | 2007-03-26 | 2013-07-30 | Microsoft Corporation | Adaptive deadzone size adjustment in quantization |
US8243797B2 (en) | 2007-03-30 | 2012-08-14 | Microsoft Corporation | Regions of interest for quality adjustments |
US8237830B2 (en) | 2007-04-11 | 2012-08-07 | Red.Com, Inc. | Video camera |
BRPI0809662A2 (pt) | 2007-04-11 | 2014-10-14 | Red Com Inc | Câmaras de vídeo e métodos de gravação de vídeo de movimento com câmara e de processamento de imagens |
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 |
US10264196B2 (en) | 2016-02-12 | 2019-04-16 | Contrast, Inc. | Systems and methods for HDR video capture with a mobile device |
US10257394B2 (en) | 2016-02-12 | 2019-04-09 | Contrast, Inc. | Combined HDR/LDR video streaming |
US10243744B2 (en) * | 2016-06-21 | 2019-03-26 | The King Abdulaziz City For Science And Technology | Residue message authentication code |
US10554901B2 (en) | 2016-08-09 | 2020-02-04 | Contrast Inc. | Real-time HDR video for vehicle control |
KR102620350B1 (ko) | 2017-07-05 | 2024-01-02 | 레드.컴, 엘엘씨 | 전자 디바이스에서의 비디오 이미지 데이터 처리 |
US10951888B2 (en) | 2018-06-04 | 2021-03-16 | Contrast, Inc. | Compressed high dynamic range video |
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 |
EP3847657A1 (de) | 2018-09-05 | 2021-07-14 | Translational Imaging Innovations LLC | Verfahren, systeme und computerprogrammprodukte für retrospektive datenextraktion |
GB2608962A (en) * | 2020-04-14 | 2023-01-18 | V Nova Int 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)
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 |
EP0671816B1 (de) * | 1993-09-28 | 2000-03-29 | Sony Corporation | Gerät zur kodierung/dekodierung mit rundung auf ausschliesslich gerade oder ungerade werte |
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 |
-
1997
- 1997-04-30 US US08/846,352 patent/US6058215A/en not_active Expired - Fee Related
-
1998
- 1998-04-20 JP JP10941398A patent/JP3763968B2/ja not_active Expired - Fee Related
- 1998-04-20 GB GB9808331A patent/GB2325368B/en not_active Expired - Fee Related
- 1998-04-29 DE DE19819198A patent/DE19819198B4/de not_active Expired - Fee Related
-
1999
- 1999-08-20 US US09/378,652 patent/US6466699B2/en not_active Expired - Fee Related
- 1999-08-20 US US09/378,616 patent/US6195466B1/en not_active Expired - Lifetime
-
2001
- 2001-02-12 US US09/782,234 patent/US6792155B2/en not_active Expired - Fee Related
-
2004
- 2004-04-06 US US10/819,570 patent/US7313286B2/en not_active Expired - Fee Related
-
2005
- 2005-09-12 JP JP2005263701A patent/JP4183196B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB9808331D0 (en) | 1998-06-17 |
US6792155B2 (en) | 2004-09-14 |
US6058215A (en) | 2000-05-02 |
US20020009235A1 (en) | 2002-01-24 |
US20010031096A1 (en) | 2001-10-18 |
JP2006094490A (ja) | 2006-04-06 |
JP3763968B2 (ja) | 2006-04-05 |
US6195466B1 (en) | 2001-02-27 |
JP4183196B2 (ja) | 2008-11-19 |
US20040202376A1 (en) | 2004-10-14 |
DE19819198B4 (de) | 2004-08-26 |
GB2325368A (en) | 1998-11-18 |
US6466699B2 (en) | 2002-10-15 |
US7313286B2 (en) | 2007-12-25 |
GB2325368B (en) | 1999-11-24 |
JPH10322219A (ja) | 1998-12-04 |
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 | |
DE69322351T2 (de) | Verbesserte Dekomprimierung von Standard ADCT-komprimierten Bildern | |
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 | |
DE69029976T2 (de) | Verfahren und Einrichtung zur Bilddatenkompression durch mathematische Transformation | |
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 | |
DE69222766T2 (de) | System zur adaptiven kompression der blockgrössen eines bildes | |
DE69833085T2 (de) | Verfahren und Vorrichtung für die reversible Farbumwandlung | |
DE112009004344T5 (de) | Parallele Implementierung einer Rechenmaschine nach dem Pipelineverfahren auf einerintegrierten Schaltung | |
DE69818751T2 (de) | Dekompression von interpolierten Bildern | |
DE69421795T2 (de) | Vorrichtung und verfahren zur kodierung von bildern | |
DE60119904T2 (de) | Vorrichtung und Verfahren zur Entfernung des Mosaikeffekts in Rohbilddaten im Hinblick auf die Datenkompression | |
DE112022004563T5 (de) | Hybride, auf einem neuronalen netzwerk basierende, end-to-end-bild- und video-codierverfahren | |
DE19739266A1 (de) | Verfahren und Vorrichtung zum Kodieren binärer Formen | |
DE69905428T2 (de) | Ungleiche Komprimierung von MSBs und LSBs mit hierarchischer Vektorquantisierung | |
EP0956539A1 (de) | Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes | |
DE69523419T2 (de) | Effiziente iterative Dekomprimierung von standard-ADCT-komprimierten Bildern | |
DE60015755T2 (de) | Verlustfreie adaptive codierung von daten eines endlichen alphabets | |
DE19819405A1 (de) | Implementation eines reversiblen eingebetteten Wavelet-Systems |
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 |