DE19626615A1 - Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet - Google Patents
Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendetInfo
- Publication number
- DE19626615A1 DE19626615A1 DE19626615A DE19626615A DE19626615A1 DE 19626615 A1 DE19626615 A1 DE 19626615A1 DE 19626615 A DE19626615 A DE 19626615A DE 19626615 A DE19626615 A DE 19626615A DE 19626615 A1 DE19626615 A1 DE 19626615A1
- Authority
- DE
- Germany
- Prior art keywords
- encoder
- bit
- coefficients
- coefficient
- data
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/148—Wavelet transforms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/15—Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/156—Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/162—User input
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/1883—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/196—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/36—Scalability techniques involving formatting the layers as a function of picture distortion after decoding, e.g. signal-to-noise [SNR] scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
- H04N19/635—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by filter definition or implementation details
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
- H04N19/64—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
- H04N19/647—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/98—Adaptive-dynamic-range coding [ADRC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/637—Control signals issued by the client directed to the server or network components
- H04N21/6377—Control signals issued by the client directed to the server or network components directed to server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/115—Selection of the code volume for a coding unit prior to coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
Description
Die vorliegende Erfindung betrifft das Gebiet der Datenkompression und
Dekompressionssysteme; insbesondere betrifft die vorliegende Erfindung ein Verfahren
und ein Apparat für verlustfreies ("lossless") und verlustreiches ("lossy") Kodieren und
Dekodieren von Daten in Kompressions-/Dekompressions-Systemen. (Die Anmeldung
geht auf eine US-Anmeldung mit der Seriennummer 08/310 146 zurück, die den Titel
trägt "Apparatus for Compresson Using Reversible Embedded Wavelets", eingereicht am
20. September, 1994).
Datenkompression ist ein extrem nützliches Werkzeug, um große Datenmengen zu
speichern und zu übertragen. Zum Beispiel wird die Zeit, die zur Übertragung eines Bildes
nötig ist, wie zum Beispiel bei einer Faksimileübertragung eines Dokuments, drastisch
reduziert, wenn eine Kompression verwendet wird, um die Anzahl der Bits zu verringern,
die erforderlich sind, um das Bild wieder herzustellen.
Es gibt im Stand der Technik viele unterschiedliche Kompressionstechniken. Die
Kompressionstechniken können in zwei breite Kategorien aufgeteilt werden, nämlich
verlustreiches bzw. verlustbehaftetes Kodieren und verlustfreies Kodieren.
Verlustbehaftetes Kodieren führt zu dem Verlust von Information, und zwar derart, daß
es keine Garantie für eine perfekte Rekonstruktion der Originaldaten gibt. Das Ziel einer
verlustbehafteten Kompression ist, daß Änderungen an den Originaldaten auf eine solche
Art und Weise durchgeführt werden, daß sie nicht beanstandbar oder feststellbar sind.
Bei der verlustfreien Kompression wird alle Information aufrechterhalten bzw. behalten
und die Daten werden in einer Art und Weise komprimiert, die eine perfekte
Rekonstruktion erlaubt.
Bei der verlustfreien Kompression werden Eingangssymbole oder Intensitätsdaten in
Ausgangskodewörtern konvertiert. Der Eingang bzw. die Eingangssignale kann bzw.
können Bild-, Audio-, eindimensionale (z. B. Daten, die sich räumlich oder zeitlich
ändern), zweidimensionale (z. B. Daten, die sich in zwei räumliche Richtungen ändern
(oder in einer räumlichen und einer zeitlichen Dimension)) oder vieldimensiona
le/multispektrale Daten beinhalten. Falls die Kompression erfolgreich ist, werden die
Kodewörter in weniger Bits dargestellt, als die Anzahl der Bits beträgt, die für die
unkodierten Eingangssymbole (oder Intensitätsdaten) benötigt werden. Verlustfreie
Kodierverfahren beinhalten Wörterbuch-Verfahren bzw. lexikalische Verfahren
("dictionary methods") des Kodierens (z. B. Lempel-Ziv), Lauflängen-Kodieren ("run
length coding"), aufzuzählendes bzw. enumeratives Kodieren und Entropie-Kodieren. Bei
verlustfreien Bildkompressionen, basiert die Kompression auf Vorhersagen bzw.
Prädiktionen oder Kontexte und zusätzlich Kodieren. Der JBIG-Standard für
Faksimilekompression und DPCM (differentielle Pulskode-Modulation - eine Option
bei dem JPEG-Standard) für Halbton-Bilder sind Beispiele für eine verlustfreie
Kompression für Bilder. Bei der verlustreichen bzw. verlustbehafteten Kompression
("lossy compression") werden Eingangssymbole bzw. Eingangszeichen oder
Intensitätsdaten vor der Konversion in Ausgangskodewörter quantisiert. Die
Quantisierung soll relevante Charakteristiken der Daten aufrechterhalten, während
unwichtige Charakteristiken eliminiert bzw. beseitigt werden. Vor der Quantisierung
verwenden verlustbehaftete Kompressionssysteme häufig eine Transformation, um eine
Energie-Verdichtung ("energy compaction") bereitzustellen. JPEG ist ein Beispiel eines
verlustbehafteten Kodierverfahrens für Bilddaten.
Jüngste Entwicklungen in der Bildsignalverarbeitung konzentrieren weiterhin ihre
Aufmerksamkeit auf ein Bedürfnis nach effizienten und exakten Formen des
Datenkompressions-Kodierens. Verschiedene Formen der Transformation oder
pyramidaler Signalverarbeitung wurden vorgeschlagen, einschließlich der Multi-
Auflösungs-Pyramidalen-Verarbeitung ("multiresolution pyramidal processing") und der
Wavelet-Pyramidalen-Verarbeitung. Diese Formen werden ebenso als Unterband-
Verarbeitung ("subband processing") und hierarchische Verarbeitung ("hierarchical
processing") bezeichnet. Die Wavelet-Pyramidalen-Verarbeitung von Bilddaten ist eine
besondere Art der Multi-Auflösungs-Pyramidalen-Verarbeitung, die Quadratur-
Spiegelfilter ("quadrature mirror filters" bzw. QMFs) verwenden, um eine Unterband-
Zerlegung eines Originalbildes zu erzeugen. Bemerkenswert ist, daß andere Typen von
Nicht-QMF-Wavelets existieren. Bezüglich weiterer Information betreffend Wavelet-
Verarbeitung, siehe Antonini, M., et al., "Image Coding Using Wavelet Transform", IEEE
Transactions on Image Processing, Band 1, Nr. 2, April 1992; Shapiro, J., "An Embedded
Hierarchical Image Coder Using Zerotrees of Wavelet Coefficients", Proc. IEEE Data
Compression Conference, S. 214 bis 223, 1993.
Ein Problem, das eine Menge mit der Wavelet-Verarbeitung nach dem Stand der Technik
zu tun hat, ist, daß ein großer Speicher benötigt wird, um alle Daten zu speichern,
während sie verarbeitet werden. Mit anderen Worten müssen bei der Durchführung einer
Wavelet-Verarbeitung alle Daten untersucht werden, bevor ein Kodieren mit den Daten
durchgeführt wird. In einem derartigen Fall gibt es keine Datenausgabe, bis wenigstens
ein voller Durchlauf (bzw. Durchgang oder "Pass") durch alle Daten durchgeführt worden
ist. Tatsächlich beinhaltet die Wavelet-Verarbeitung typischerweise Mehrfachdurchläufe
durch die Daten. Deswegen wird häufig ein großer Speicher benötigt. Es ist
wünschenswert, eine Wavelet-Verarbeitung zu verwenden und gleichzeitig das
Erfordernis eines großen Speichers zu vermeiden. Weiter ist es wünschenswert, eine
Wavelet-Verarbeitung durchzuführen, die nur einen einzigen Durchlauf ("single pass")
durch die Daten verwendet.
Viele Wavelet- oder Unterband-Transformations-Implementationen erfordern Filter in
einer bestimmten kanonischen Form. Zum Beispiel müssen Tiefpaß- und Hochpaß-Filter
dieselbe Länge haben, die Summe der Quadrate der Koeffizienten muß eins sein, der
Hochpaß-Filter muß die Umkehrung des Tiefpaß-Filters sein, usw. (siehe US-Patent Nr.
5,014,134, herausgegeben im Mai 1991 für Lawton et al.). Es ist wünschenswert, eine
breitere Klasse von Filtern zu ermöglichen. Das heißt, es ist wünschenswert, Wavelet-
oder Unterband-Transformations-Implementationen bereitzustellen, die Tiefpaß- und
Hochpaß-Filter verwenden, die nicht dieselbe Länge haben, wo die Summe der Quadrate
der Koeffizienten nicht eins zu sein braucht, wo der Hochpaß-Filter nicht die Umkehrung
des Tiefpaß-Filters bezüglich der Zeit und der Frequenz zu sein braucht, etc.
Die vorliegende Erfindung stellt eine verlustbehaftete und verlustfreie Kompression
bereit, die eine Transformation verwendet, die eine gute Energieverdichtung ("energy
compaction") liefert.
Ein Kompressions- und ein Dekompressions-System wird beschrieben. Bei dem
Kompressions-System kodiert ein Kodierer Eingangsdaten in einen komprimierten
Datenstrom. Bei einer Ausführungsform weist der Kodierer einen reversiblen Wavelet-
Filter auf, einen ordnenden und modellierenden Mechanismus und einen Entropie-
Kodierer. Der reversible Wavelet-Filter transformiert die Eingangsdaten in eine Vielzahl
von Koeffizienten. Der ordnende und modellierende Mechanismus empfängt die
Koeffizienten und erzeugt einen eingebetteten Kodestrom. Der Entropie-Kodierer führt
ein Entropie-Kodieren an dem eingebetteten Kodestrom durch, um den komprimierten
Datenstrom zu erzeugen.
Die vorliegende Erfindung wird durch die unten gegebene detaillierte Beschreibung und
durch die beigefügten Zeichnungen von verschiedenen Ausführungsformen der Erfindung
verständlicher, wobei diese jedoch nicht als eine Beschränkung der Erfindung auf die
bestimmten Ausführungsformen angesehen werden sollen, sondern nur der Erklärung
und dem Verständnis dienen.
Fig. 1 ist ein Blockdiagramm einer Ausführungsform des Kodierabschnitts des
Kodiersystems der vorliegenden Erfindung.
Fig. 2 ist ein Blockdiagramm einer Ausführungsform des Koeffizientendaten-
Ordnens und -Modellierens der vorliegenden Erfindung.
Fig. 3A ist ein Blockdiagramm eines Wavelet-Analyse/Synthese-Systems.
Fig. 3B zeigt eine Vorwärts- und eine Rückwärts- bzw. reverse Darstellung von
Transformations-Systemen zur Filterung mit nicht minimallangen
überlappten reversiblen-Filtern.
Fig. 4 ist ein Blockdiagramm, das alternative Ausführungsformen eines 2-D-
reversiblen-Filters zeigt.
Fig. 5 zeigt Ergebnisse einer Durchführung einer vierstufigen Zerlegung bzw.
einer Zerlegung mit vier Niveaus.
Fig. 6 zeigt das Mutterverhältnis bzw. elterliche Verhältnis zwischen zwei
aufeinanderfolgenden Stufen bzw. Niveaus ("levels").
Fig. 7 ist ein Blockdiagramm einer dreistufigen pyramidalen Transformation.
Fig. 8 ist ein Blockdiagramm einer zweidimensionalen, zweistufigen
Transformation.
Fig. 9 ist ein Blockdiagramm, das eindimensionale Filter zeigt, die eine Multi-
Auflösungs-Dekomprimierung durchführen.
Fig. 10 ist ein Blockdiagramm eines Systems, das die reversiblen Wavelets der
vorliegenden Erfindung verwendet.
Fig. 11 sind Blockdiagramme eines Verbesserungs- und Analyse-Systems, das
die reversiblen Wavelets der vorliegenden Erfindung verwendet.
Fig. 12A zeigt die Koeffizientengröße bei der vorliegenden Erfindung.
Fig. 12B ist eine Ausführungsform der Multiplizierer für die Frequenzbänder, die
für die Koeffizienten-Ausrichtung in der vorliegenden Erfindung
verwendet werden.
Fig. 13 ist ein Flußdiagramin einer Ausführungsform des Kodierprozesses der
vorliegenden Erfindung.
Fig. 14 ist ein Flußdiagramm einer Ausführungsform des Dekodierprozesses der
vorliegenden Erfindung.
Fig. 15 ist ein Flußdiagramm des modellierenden Prozesses der vorliegenden
Erfindung.
Fig. 16 ist eine Ausführungsform des Vorwärts-Wavelet-Filters der vorliegenden
Erfindung.
Fig. 17 ist ein Blockdiagramm einer Ausführungsform eines Rückwärts-Wavelet-
Filters der vorliegenden Erfindung.
Fig. 18 zeigt den Koeffizientenbereich bzw. die Koeffizientenspanne
verschiedener Transformationen.
Fig. 19A und 19B zeigen zwei Ausführungsformen von Kontextmodellen, die Nachschlagta
bellen verwenden.
Fig. 20 zeigt eine Ausführungsform von Wavelet-Zerlegungs-Schritten bzw.
Wavelet-Zerlegungs-Stufen ("stages")
Fig. 21 zeigt eine Kodiereinheit.
Fig. 22 zeigt vertikale Durchgänge bzw. Durchläufe mit der TS-Transformation.
Fig. 23 zeigt Pufferung und Koeffizienten-Berechnung.
Fig. 24A zeigt eine Ausfürungsform einer Kodestrom-Konfiguration.
Fig. 24B zeigt eine Ausführungsform einer Kodestrom-Konfiguration für ein Ziel
mit niedriger Auflösung.
Fig. 25 zeigt die Nachbar-Beziehung zwischen Koeffizienten (oder Pixel).
Fig. 26A-D zeigen Ausführungsformen von Kontext-Modellen.
Fig. 27 ist ein Blockdiagramm einer Ausführungsform des Kontext-Modells der
vorliegenden Erfindung.
Fig. 28 ist ein Blockdiagramm einer Ausfürungsform der Vorzeichen/Betrag-
Einheit der vorliegenden Erfindung.
Fig. 29 zeigt die dynamische Zuordnung bzw. eines Speichers für kodierte Daten
für einen Ein-Durchgangs-Betrieb bzw. eine "One-Pass"-Operation.
Fig. 30 zeigt eine Ausführungsform eines Kanalmanagers bzw. Kanalverwalters.
Fig. 31 zeigt die Speicherverwendung bei der vorliegenden Erfindung.
Fig. 32 zeigt einen Bitstrom bei der vorliegenden Erfindung.
Fig. 33 zeigt den Aufbau eines Segments.
Fig. 34 zeigt Ziel-Vorrichtungen als Funktion eines Parameterraums.
Fig. 35A und 35B zeigen verschiedene Ausführungsformen des Parsers bzw. Analysesystems
der vorliegenden Erfindung.
Ein Verfahren und ein Apparat zur Kompression und Dekompression wird beschrieben.
In der folgenden detaillierten Beschreibung der vorliegenden Erfindung werden zahlreiche
besondere Details dargelegt, wie zum Beispiel Arten von Kodierern, Anzahlen von Bits,
Signalnamen, etc., um ein gründliches Verständnis der vorliegenden Erfindung
bereitzustellen. Jedoch wird es für Fachleute verständlich sein, daß die vorliegende
Erfindung ohne diese spezifischen Details durchgeführt werden kann. In anderen Fällen
werden gut bekannte Strukturen und Vorrichtungen eher in der Form eines
Blockdiagramms als detailliert gezeigt, um zu vermeiden, daß die vorliegende Erfindung
verschleiert wird.
Einige Abschnitte der detaillierten Beschreibung, die folgt, werden mittels Algorithmen
und symbolischen Darstellungen von Operationen mit Datenbits innerhalb eines
Computerspeichers dargestellt. Diese algorithmischen Beschreibungen und Darstellungen
sind die Mittel, die von Fachleuten des Datenverarbeitungsbereichs verwendet werden,
um am effektivsten das Wesen ihrer Arbeit anderen Fachleuten zu übermitteln. Ein
Algorithmus wird hier und im allgemeinen als eine selbstkonsistente Sequenz bzw. Folge
von Schritten verstanden, die zu einem gewünschten Ergebnis führen. Bei den Schritten
handelt es sich um solche, die physikalische Manipulationen von physikalischen Größen
erfordern. Üblicherweise, jedoch nicht notwendig, nehmen diese Größen die Form von
elektrischen oder magnetischen Signalen an, die in der Lage sind, gespeichert, übertragen,
kombiniert, verglichen oder in anderer Weise manipuliert zu werden. Es hat sich
manchmal als vorteilhaft bzw. bequem erwiesen, hauptsächlich aus Gründen der
allgemeinen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen,
Terme, Zahlen oder dergleichen zu bezeichnen.
Es sollte jedoch im Kopf behalten werden, daß alle diese und ähnliche Terme den
passenden bzw. geeigneten physikalischen Größen zugeordnet werden sollen und daß
es sich bei ihnen nur um herkömmliche Label bzw. Bezeichnungen handelt, die diesen
Größen zugeordnet werden. Soweit es nicht speziell anders festgestellt wird, wie dies von
den folgenden Diskussionen offensichtlich ist, ist es zu verstehen, daß durchgehend bei
der vorliegenden Erfindung die Diskussionen, die Terme, wie zum Beispiel "Verarbeiten"
oder "Rechnen" oder "Berechnen" oder "Bestimmen" oder "Darstellen" oder dergleichen
auf die Tätigkeit und auf Prozesse eines Computersystems oder einer ähnlichen
elektronischen Rechenvorrichtung bezugnehmen, das bzw. die Daten manipuliert oder
transformiert, die als physikalische (elektronische) Größen innerhalb der Register und
Speicher des Computersystems dargestellt werden, und zwar in andere Daten, die in
ähnlicher Weise als physikalische Größen innerhalb der Speicher oder Register oder
anderer derartiger Informationsspeicher Transmissions- oder Anzeigevorrichtungen
dargestellt werden.
Die vorliegende Erfindung bezieht sich ebenso auf einen Apparat zur Durchführung der
hierin beschriebenen Operationen bzw. Arbeitsgänge. Dieser Apparat kann speziell für
die erforderlichen Zwecke konstruiert werden oder er kann einen Allzweckcomputer
aufweisen, der mittels eines Computerprogramms, das in dem Computer gespeichert ist,
selektiv aktiviert oder rekonfiguriert wird. Die Algorithmen und Anzeigen bzw. Displays,
die hierin dargestellt werden, stehen nicht inhärent in Beziehung zu irgendeinem
bestimmten Computer oder anderen Apparat. Verschiedene Allzweckmaschinen können
mit Programmen in Übereinstimmung mit der hierin beschriebenen Lehre verwendet
werden oder es kann sich als geeignet erweisen, spezialisiertere Apparate zu konstruieren
bzw. aufzubauen, um die erforderlichen Verfahrensschritte durchzuführen. Die
erforderliche Struktur für eine Vielzahl dieser Maschinen wird sich aus der folgenden
Beschreibung ergeben. Zusätzlich wird die vorliegende Erfindung nicht unter
Bezugnahme auf irgendeine bestimmte Programmiersprache beschrieben. Es wird begrüßt
werden, daß eine Vielzahl von Programmiersprachen verwendet werden kann, um die
Lehre der Erfindung, wie sie hierin beschrieben ist, zu implementieren.
Die folgenden Terme bzw. Bezeichnungen werden in der folgenden Beschreibung
verwendet. Es wurde eine Definition für diese verschiedenen Bezeichnungen bzw. Terme
mit aufgenommen. Jedoch sollte die bereitgestellte Definition nicht in dem Umfang als
beschränkend aufgefaßt werden, in dem die Terme im Fachbereich bekannt sind. Diese
Definitionen werden als Hilfe bei dem Verständnis der vorliegenden Erfindung
bereitgestellt.
Bit-Wertigkeit bzw. Bit-Signifikanz:
Eine Zahldarstellung, ähnlich zu Vorzeichen-Betrag, mit Kopf-Bits bzw. Head-Bits, gefolgt von dem Vorzeichen-Bit, gefolgt von Schwanz-Bits ("Tail"-Bits), falls es welche gibt. Die Einbettung kodiert in Bitebenen-Ordnung unter Bezugnahme auf diese Darstellung.
Eine Zahldarstellung, ähnlich zu Vorzeichen-Betrag, mit Kopf-Bits bzw. Head-Bits, gefolgt von dem Vorzeichen-Bit, gefolgt von Schwanz-Bits ("Tail"-Bits), falls es welche gibt. Die Einbettung kodiert in Bitebenen-Ordnung unter Bezugnahme auf diese Darstellung.
Kodiereinheit:
Eine Einheit von Koeffizienten, die zusammen kodiert sind und die in beliebiger Ordnung sein können. In einer Ausführungsform umfaßt eine Kodiereinheit eine oder mehrere Bäume, die in einem Rechteck angeordnet sind. Eine Kodiereinheit kann aus einem ganzen Bild, ein Satz von Bildern oder anderen Datensätzen bestehen. Die Kodiereinheit hat einen wesentlichen Einfluß auf die Puffergröße, die zur Berechnung einer Transformation erforderlich ist. Ebenso können bei einer Ausführungsform keine Inhalte aus den Koeffizienten außerhalb der gegenwärtigen Kodiereinheit abgeleitet werden. Jedoch können die Entropie-Kodes innerhalb einer Kodiereinheit oder nach vielen Kodiereinheiten zurückgesetzt bzw. neu eingestellt werden. Die Kodiereinheit kann nicht notwendigerweise willkürlich bzw. regellos adressiert werden.
Eine Einheit von Koeffizienten, die zusammen kodiert sind und die in beliebiger Ordnung sein können. In einer Ausführungsform umfaßt eine Kodiereinheit eine oder mehrere Bäume, die in einem Rechteck angeordnet sind. Eine Kodiereinheit kann aus einem ganzen Bild, ein Satz von Bildern oder anderen Datensätzen bestehen. Die Kodiereinheit hat einen wesentlichen Einfluß auf die Puffergröße, die zur Berechnung einer Transformation erforderlich ist. Ebenso können bei einer Ausführungsform keine Inhalte aus den Koeffizienten außerhalb der gegenwärtigen Kodiereinheit abgeleitet werden. Jedoch können die Entropie-Kodes innerhalb einer Kodiereinheit oder nach vielen Kodiereinheiten zurückgesetzt bzw. neu eingestellt werden. Die Kodiereinheit kann nicht notwendigerweise willkürlich bzw. regellos adressiert werden.
Kontext-Modell:
Verfügbare Information relativ zu dem gegenwärtigen Bit, das zu kodieren ist, die historisch gelernte Information über das gegenwärtige Bit gibt. Dies ermöglicht eine Abschätzung bedingter Wahrscheinlichkeit für das Entropie-Kodieren.
Verfügbare Information relativ zu dem gegenwärtigen Bit, das zu kodieren ist, die historisch gelernte Information über das gegenwärtige Bit gibt. Dies ermöglicht eine Abschätzung bedingter Wahrscheinlichkeit für das Entropie-Kodieren.
Bäume:
Die Koeffizienten und die Pixels, die zu einem einzigen Koeffizienten in dem LL der Wavelet-Zerlegung auf höchstem Niveau in Beziehung stehen. Die Zahl der Koeffizienten ist eine Zahl der Zahl der Niveaus.
Die Koeffizienten und die Pixels, die zu einem einzigen Koeffizienten in dem LL der Wavelet-Zerlegung auf höchstem Niveau in Beziehung stehen. Die Zahl der Koeffizienten ist eine Zahl der Zahl der Niveaus.
Band:
Die Koeffizienten und die Pixel, die zu einer einzigen Reihe oder Zeile von Koeffizienten in dem LL der Wavelet-Zerlegung höchsten Niveaus für zweidimensionale Daten in Beziehung stehen. Bänder werden für Daten anderer Dimensionen ähnlich definiert.
Die Koeffizienten und die Pixel, die zu einer einzigen Reihe oder Zeile von Koeffizienten in dem LL der Wavelet-Zerlegung höchsten Niveaus für zweidimensionale Daten in Beziehung stehen. Bänder werden für Daten anderer Dimensionen ähnlich definiert.
Zerlegungsniveau:
Ein Stelle bzw. ein Ort in der Wavelet-Zerlegungspyramide.
Ein Stelle bzw. ein Ort in der Wavelet-Zerlegungspyramide.
Eingebettete Quantisierung:
Quantisierung, die durch den Kodestrom impliziert wird. Zum Beispiel, falls die Wichtigkeits-Niveaus in Reihenfolge plaziert werden, und zwar von dem wichtigsten zu dem am wenigsten wichtigsten, dann wird die Quantisierung durch ein einfaches Abschneiden des Kodestroms durchgeführt. Dieselbe Wirkung bzw. Funktionsfähigkeit ist mit Kennzeichen, Markern, Zeigern oder anderen Hinweiseinrichtungen verfügbar.
Quantisierung, die durch den Kodestrom impliziert wird. Zum Beispiel, falls die Wichtigkeits-Niveaus in Reihenfolge plaziert werden, und zwar von dem wichtigsten zu dem am wenigsten wichtigsten, dann wird die Quantisierung durch ein einfaches Abschneiden des Kodestroms durchgeführt. Dieselbe Wirkung bzw. Funktionsfähigkeit ist mit Kennzeichen, Markern, Zeigern oder anderen Hinweiseinrichtungen verfügbar.
Entropie-Kodierer:
Eine Vorrichtung, die ein gegenwärtiges Bit basierend auf seinen Kontext kodiert. Der Kontext erlaubt die Wahrscheinlichkeitsabschätzung für die beste Darstellung des gegenwärtigen Bits (oder Mehrfach-Bits).
Eine Vorrichtung, die ein gegenwärtiges Bit basierend auf seinen Kontext kodiert. Der Kontext erlaubt die Wahrscheinlichkeitsabschätzung für die beste Darstellung des gegenwärtigen Bits (oder Mehrfach-Bits).
Fest-Rate bzw. festgelegte Rate:
Eine Anwendung oder ein System, die eine bestimmte Pixel-Rate aufrechterhält und einen Kanal mit beschränkter Bandweite aufweist. Dies erfordert, daß eher eine lokale mittlere Kompression erreicht wird, als eine globale mittlere Kompression. Beispiel: MPEG.
Eine Anwendung oder ein System, die eine bestimmte Pixel-Rate aufrechterhält und einen Kanal mit beschränkter Bandweite aufweist. Dies erfordert, daß eher eine lokale mittlere Kompression erreicht wird, als eine globale mittlere Kompression. Beispiel: MPEG.
Fest-Größe bzw. festgelegte Größe:
Eine Anwendung oder ein System, das einen Puffer mit beschränkter Größe aufweist. In einem derartigen Fall wird eine globale mittlere Kompression erreicht, zum Beispiel ein Druckpuffer. (Eine Anwendung kann sowohl eine Fest-Raten-Anwendung als auch eine Fest-Größen-Anwendung oder beides sein.)
Eine Anwendung oder ein System, das einen Puffer mit beschränkter Größe aufweist. In einem derartigen Fall wird eine globale mittlere Kompression erreicht, zum Beispiel ein Druckpuffer. (Eine Anwendung kann sowohl eine Fest-Raten-Anwendung als auch eine Fest-Größen-Anwendung oder beides sein.)
Fest-Länge bzw. festgelegte Länge:
Ein System, das einen bestimmten Block von Daten in einen bestimmten Block von komprimierten Daten, zum Beispiel BTC umwandelt. Fest-Längen-Kodes dienen Fest- Raten- und Fest-Größen-Anwendungen; jedoch ist die Raten-Verzerrungs- Leistungsfähigkeit oft schlecht im Vergleich zu Systemen mit variabler Rate.
Ein System, das einen bestimmten Block von Daten in einen bestimmten Block von komprimierten Daten, zum Beispiel BTC umwandelt. Fest-Längen-Kodes dienen Fest- Raten- und Fest-Größen-Anwendungen; jedoch ist die Raten-Verzerrungs- Leistungsfähigkeit oft schlecht im Vergleich zu Systemen mit variabler Rate.
Horizont-Kontext-Modell:
Ein Kontext-Modell zur Verwendung mit einem Entropie-Kodierer (in einer Ausführungsform), das hierin als Teil der vorliegenden Erfindung definiert ist.
Ein Kontext-Modell zur Verwendung mit einem Entropie-Kodierer (in einer Ausführungsform), das hierin als Teil der vorliegenden Erfindung definiert ist.
Kopf bzw. Head:
In der Bit-Wertigkeit-Darstellung sind die Kopf-Bits bzw. Head-Bits die Betrag-Bits, und zwar von dem höchstwertigen bis einschließlich zu dem ersten Bit ungleich-null.
In der Bit-Wertigkeit-Darstellung sind die Kopf-Bits bzw. Head-Bits die Betrag-Bits, und zwar von dem höchstwertigen bis einschließlich zu dem ersten Bit ungleich-null.
Überlappte Transformation bzw. Überlapp-Transformation:
Eine Transformation, bei der ein einziger Quellenabtastpunkt zu mehreren Koeffizienten derselben Frequenz beiträgt. Beispiele beinhalten viele Wavelets und die "Lapped Orthogonal Transform" ("überlappte orthogonale Transformation").
Eine Transformation, bei der ein einziger Quellenabtastpunkt zu mehreren Koeffizienten derselben Frequenz beiträgt. Beispiele beinhalten viele Wavelets und die "Lapped Orthogonal Transform" ("überlappte orthogonale Transformation").
Progressiv bzw. fortschreitend:
Ein Kodestrom, der so geordnet ist, daß ein kohärentes bzw. zusammenhängendes dekomprimiertes Ergebnis von einem Teil der kodierten Daten verfügbar bzw. erhältlich ist, das mit weiteren Daten verfeinert werden kann. Bei manchen Ausführungsformen, ein Kodestrom, der mit tiefergehenden bzw. sich vertiefenden Bit-Ebenen von Daten geordnet ist; in diesem Fall nimmt er üblicherweise auf Wavelet-Koeffizienten-Daten bezug.
Ein Kodestrom, der so geordnet ist, daß ein kohärentes bzw. zusammenhängendes dekomprimiertes Ergebnis von einem Teil der kodierten Daten verfügbar bzw. erhältlich ist, das mit weiteren Daten verfeinert werden kann. Bei manchen Ausführungsformen, ein Kodestrom, der mit tiefergehenden bzw. sich vertiefenden Bit-Ebenen von Daten geordnet ist; in diesem Fall nimmt er üblicherweise auf Wavelet-Koeffizienten-Daten bezug.
Pyramidal:
Eine Folge von Auflösungen, wo jede niedrigere Auflösung einen linearen Faktor von zwei größer ist (ein Faktor von vier in der Ebene).
Eine Folge von Auflösungen, wo jede niedrigere Auflösung einen linearen Faktor von zwei größer ist (ein Faktor von vier in der Ebene).
Reversible Transformation bzw. Umkehr-Transformation:
Eine wirksame bzw. effiziente Transformation, die mit einer Integer-Arithmetik bzw. Ganzzahl-Arithmetik implementiert ist, die eine exakte Rekonstruktion aufweist.
Eine wirksame bzw. effiziente Transformation, die mit einer Integer-Arithmetik bzw. Ganzzahl-Arithmetik implementiert ist, die eine exakte Rekonstruktion aufweist.
S-Transformation:
Ein bestimmtes reversibles Wavelet-Filter-Paar mit einem 2-Abgriff-Tiefpaß-("2-tap low pass") und einem 2-Abgriff-Hochpaß-("2-tap high pass")Filter.
Ein bestimmtes reversibles Wavelet-Filter-Paar mit einem 2-Abgriff-Tiefpaß-("2-tap low pass") und einem 2-Abgriff-Hochpaß-("2-tap high pass")Filter.
Schwanz bzw. Tail:
In der Bitwertigkeitsdarstellung sind die Schwanz-Bits bzw. Tail-Bits die Betrags-Bits mit einer niedrigeren Wertigkeit, als das höchstwertige Bit ungleich-null.
In der Bitwertigkeitsdarstellung sind die Schwanz-Bits bzw. Tail-Bits die Betrags-Bits mit einer niedrigeren Wertigkeit, als das höchstwertige Bit ungleich-null.
Schwanz-Information bzw. Tail-Information:
Bei einer Ausführungsform, vier Zustände, die für einen Koeffizienten möglich sind, der in der Bit-Wertigkeits-Darstellung dargestellt ist. Sie ist eine Funktion des Koeffizienten und der gegenwärtigen Bit-Ebene und wird für das Horizontal-Kontext-Modell verwendet.
Bei einer Ausführungsform, vier Zustände, die für einen Koeffizienten möglich sind, der in der Bit-Wertigkeits-Darstellung dargestellt ist. Sie ist eine Funktion des Koeffizienten und der gegenwärtigen Bit-Ebene und wird für das Horizontal-Kontext-Modell verwendet.
Schwanz-ein bzw. Tail-ein ("tail-on"):
Bei einer Ausführungsform, zwei Zustände, die davon abhängen, ob der Schwanz- Informations-Zustand bzw. der Tail-Informations-Zustand null oder nicht-null ist. Er wird für das Horizont-Kontext-Modell verwendet.
Bei einer Ausführungsform, zwei Zustände, die davon abhängen, ob der Schwanz- Informations-Zustand bzw. der Tail-Informations-Zustand null oder nicht-null ist. Er wird für das Horizont-Kontext-Modell verwendet.
TS-Transformation:
Zwei-Sechs-Transformation ("Two-Six transform"), ein bestimmtes Wavelet-Filterpaar mit einem 2-Abgriff-Tiefpaß-("2-tap low pass") und einem 6-Abgriff-Hochpaß-("6-tap high pass")Filter.
Zwei-Sechs-Transformation ("Two-Six transform"), ein bestimmtes Wavelet-Filterpaar mit einem 2-Abgriff-Tiefpaß-("2-tap low pass") und einem 6-Abgriff-Hochpaß-("6-tap high pass")Filter.
Verlustfrei/verlustbehaftet vereinigt:
Dasselbe Kompressions-System liefert einen kodierten Datenstrom, der zur verlustfreien oder verlustbehafteten Rekonstruktion in der Lage ist. Im Fall der vorliegenden Erfindung, wie im folgenden beschrieben werden wird, ist dieser Kodestrom zu beiden in der Lage, und zwar ohne Einstellungen bzw. Einstellen des Kodierers oder Instruktionen an den Kodierer.
Dasselbe Kompressions-System liefert einen kodierten Datenstrom, der zur verlustfreien oder verlustbehafteten Rekonstruktion in der Lage ist. Im Fall der vorliegenden Erfindung, wie im folgenden beschrieben werden wird, ist dieser Kodestrom zu beiden in der Lage, und zwar ohne Einstellungen bzw. Einstellen des Kodierers oder Instruktionen an den Kodierer.
Visuelle Wichtigkeits-Pegel:
Durch Festlegung des bestimmten Systems bzw. spezifischen Systems werden die Eingangsdaten (Pixeldaten, Koeffizienten, Fehlersignaie, etc.) logisch in Gruppen mit demselben visuellen Eindruck bzw. mit denselben visuellen Auswirkungen aufgeteilt. Zum Beispiel ist die höchstwertige Bit-Ebene bzw. sind die höchstwertigen Bit-Ebenen wahrscheinlich visuell wichtiger als niedrigere Ebenen. Ebenso ist Information niedriger Frequenz im allgemeinen wichtiger als die hoher Frequenz. Die meisten Arbeits- Definitionen bzw. System-Festlegung der "visueller Wertigkeit" bzw. "visueller Signifikanz", einschließlich der vorliegenden Erfindung, wie im folgenden beschrieben wird, beziehen sich auf manche Fehler-Metrik. Bessere visuelle Metriken könnten jedoch in die System-Definition von visueller Wichtigkeit mit eingebracht werden. Wechselnde Datentypen weisen wechselnde Wichtigkeits-Niveaus auf, zum Beispiel weisen Audio- Daten Audio-Wichtigkeits-Niveaus auf.
Durch Festlegung des bestimmten Systems bzw. spezifischen Systems werden die Eingangsdaten (Pixeldaten, Koeffizienten, Fehlersignaie, etc.) logisch in Gruppen mit demselben visuellen Eindruck bzw. mit denselben visuellen Auswirkungen aufgeteilt. Zum Beispiel ist die höchstwertige Bit-Ebene bzw. sind die höchstwertigen Bit-Ebenen wahrscheinlich visuell wichtiger als niedrigere Ebenen. Ebenso ist Information niedriger Frequenz im allgemeinen wichtiger als die hoher Frequenz. Die meisten Arbeits- Definitionen bzw. System-Festlegung der "visueller Wertigkeit" bzw. "visueller Signifikanz", einschließlich der vorliegenden Erfindung, wie im folgenden beschrieben wird, beziehen sich auf manche Fehler-Metrik. Bessere visuelle Metriken könnten jedoch in die System-Definition von visueller Wichtigkeit mit eingebracht werden. Wechselnde Datentypen weisen wechselnde Wichtigkeits-Niveaus auf, zum Beispiel weisen Audio- Daten Audio-Wichtigkeits-Niveaus auf.
Wavelet-Filter:
Die Hoch- und Tiefpaß-Synthese- und Analyse-Filter, die bei der Wavelet-Transformation
verwendet werden.
Wavelet-Transformation:
Eine Transformation mit sowohl "Frequenz-" und "Zeit- (oder Raum-) "Bereichs- Nebenbedingungen bzw. Abhängigkeiten. Bei einer beschriebenen Ausführungsform handelt es sich um eine Transformation, die aus einem Hochpaßfilter und einem Tiefpaß Filter besteht. Die sich ergebenen Koeffizienten werden um zwei dezimiert (kritisch gefiltert) und die Filter werden auf Tiefpaß-Koeffizienten angewendet.
Eine Transformation mit sowohl "Frequenz-" und "Zeit- (oder Raum-) "Bereichs- Nebenbedingungen bzw. Abhängigkeiten. Bei einer beschriebenen Ausführungsform handelt es sich um eine Transformation, die aus einem Hochpaßfilter und einem Tiefpaß Filter besteht. Die sich ergebenen Koeffizienten werden um zwei dezimiert (kritisch gefiltert) und die Filter werden auf Tiefpaß-Koeffizienten angewendet.
Die vorliegende Erfindung stellt einen Kompressions/Dekompressions-System mit einem
Kodierabschnitt und einem Dekodierabschnitt bereit. Der Kodierabschnitt ist für das
Kodieren von Eingangsdaten verantwortlich, um komprimierte Daten zu erzeugen,
während der Dekodierabschnitt für das Dekodieren zuvor kodierter Daten verantwortlich
ist, um eine rekonstruierte Version der Originaleingangsdaten zu erzeugen. Die
Eingangsdaten können eine Vielzahl von Datentypen, wie zum Beispiel Bild (still oder
bewegt), Audio, etc. aufweisen. Bei einer Ausführungsform handelt es sich bei den Daten
um digitale Signaldaten; jedoch sind digitalisierte Analogdaten, Textdatenformate und
andere Formate möglich. Bei der Quelle der Daten kann es sich um einen Speicher oder
einem Kanal für den Kodierabschnitt und/oder den Dekodierabschnitt handeln.
Bei der vorliegenden Erfindung können Teile bzw. Einheiten des Kodierabschnitts
und/oder des Dekodierabschnitts in Hardware oder Software implementiert werden, und
zwar beispielsweise so,wie jene, die bei einem Computersystem verwendet werden. Die
vorliegende Erfindung stellt ein verlustfreies Kompressions/Dekompressions-System
bereit. Die vorliegende Erfindung kann ebenso so konfiguriert werden, daß sie
verlustbehaftete Kompression/Dekompression durchführt.
Fig. 1 ist ein Blockdiagramm einer Ausführungsform des Kodierabschnitts des Systems.
Bemerkenswert ist, daß der Dekodierabschnitt des Systems zusammen mit dem Datenfluß
in einer umgekehrten Ordnung arbeitet. Nimmt man Bezug auf Fig. 1, so werden die
Eingangs-Bilddaten 101 durch den Wavelet-Transformations-Block 102 empfangen. Der
Ausgang des Wavelet-Transformations-Blocks 102 ist mit dem Block 103 zum
Koeffizientendaten-Ordnen und -Modellieren verbunden. In Antwort auf den Ausgang
von dem Wavelet-Transformations-Block 102 erzeugt der ordnende/modellierende Block
103 wenigstens einen Bit-Strom, der durch einen Entropie-Kodierer 104 empfangen wird.
In Antwort auf den Eingang von dem ordnenden/modellierenden Block 103 erzeugt der
Entropie-Kodierer 104 einen Kodestrom 107.
In einer Ausführungsform umfaßt der ordnende/modellierende Block 103 eine
Vorzeichen/Betrag-Formatier-Einheit 201 und ein Gesamt-Raum/Frequenz-Kontext-
Modell 202 so, wie es in der Fig. 2 gezeigt ist. Bei einer Ausführungsform umfaßt das
Gesamt-Raum/Frequenz-Kontext-Modell 202, ein Horizont-Kontext-Modell, wie im
folgenden beschrieben wird. Der Eingang der Vorzeichen/Betrag-Einheit 201 ist mit dem
Ausgang des Wavelet-Transformations-Kodier-Blocks 102 verbunden. Der Ausgang der
Vorzeichen/Betrag-Einheit 201 ist mit dem Gesamt-Raum/Frequenz-Modellier-Block
202 verbunden. Der Ausgang des JSF-Kontext-Modells 202 ("JSF" steht für "joint
space/frequency" bzw. "Gesamt-Raum/Frequenz") ist mit dem Eingang des Entropie-
Kodierers 104 verbunden, der den Ausgangs-Kodestrom 107 erzeugt.
Nimmt man nun wieder Bezug auf Fig. 1, so werden bei der vorliegenden Erfindung
die Bilddaten 102 empfangen und transformationskodiert ("transform coded"), indem
reversible Wavelets im Wavelet-Transformations-Block 102, wie weiter unten definiert,
verwendet werden, um eine Serie von Koeffizienten zu erzeugen, die eine Multi-
Auflösungs-Zerlegung des Bildes darstellen. Die reversible Wavelet-Transformationen
der vorliegenden Erfindung sind bezüglich der Berechnung nicht kompliziert. Die
Transformationen können mit Software oder Hardware ohne einen systematischen Fehler
durchgeführt werden. Weiter sind die Wavelets der vorliegenden Erfindung hervorragend
für eine Energie-Verdichtung ("energy compaction") und für die Kompressions-
Leistungsfähigkeit. Diese Koeffizienten werden von dem ordnenden/modellierenden
Block 103 empfangen.
Der ordnende/modellierende Block 103 stellt Koeffizienten-Ordnen und -Modellieren
bereit. Das Koeffizienten-Ordnen liefert einen eingebetteten Datenstrom. Der eingebettete
Datenstrom erlaubt es, daß ein resultierender Kodestrom zu der Kodierzeit,
Transmissionszeit oder Dekodierzeit quantisiert wird. Bei einer Ausführungsform ordnet
und konvertiert der ordnende/modellierende Block 103 die Koeffizienten in ein
Vorzeichen-Betrag-Format und die formatierten Koeffizienten werden basierend auf ihrer
Wertigkeit bzw. Signifikanz (wie später beschrieben wird) einem eingebetteten
modellierenden Verfahren unterworfen. Bei einer Ausführungsform werden die
Koeffizienten einem Gesamt-Raum/Frequenz-Modellieren unterworfen.
Die Ergebnisse des Ordnens und des Modellierens umfassen Entscheidungen (oder
Symbole), die von dem Entropie-Kodierer zu kodieren sind. Bei einer Ausführungsform
werden alle Entscheidungen zu einem einzigen Kodierer gesandt. Bei einer anderen
Ausführungsform werden die Entscheidungen gemäß ihrer Wertigkeit bzw. Signifikanz
etikettiert bzw. bezeichnet, und Entscheidungen bezüglich jedes Wertigkeits-Niveaus
werden durch unterschiedliche (physikalische oder virtuelle) Mehrfach-Kodierer bzw.
durch mehrere verschiedene (physikalische oder virtuelle) Kodierer verarbeitet.
Nimmt man nun Bezug auf Fig. 2, so wird der Bitstrom bzw. werden die Bitströme,
der bzw. die von dem JSF-Kontextmodell-Block 201 resultiert bzw. resultieren,
verbunden, und zwar in der Ordnung der Wertigkeit, indem ein Entropie-Kodierer 104
verwendet wird. Bei einer Ausführungsform umfaßt der Entropie-Kodierer 104 einen
oder mehrere binäre Entropie-Kodierer.
Die vorliegende Erfindung führt anfänglich die Zerlegung eines Bildes (in der Form von
Bilddaten) oder anderen Datensignalen durch, indem reversible Wavelets verwendet
werden. Bei der vorliegenden Erfindung umfaßt eine reversible Wavelet-Transformation
eine Implementation eines Exakt-Rekonstruierungs-Systems in Ganzzahlarithmetik, so
daß ein Signal mit Ganzzahl-Koeffizienten verlustfrei wiedergewonnen werden kann.
Indem reversible Wavelets verwendet werden, ist die vorliegende Erfindung in der Lage,
verlustfreie Kompression mit einer Arithmetik endlicher Präzision ("finite precision
arithmetic") zu liefern. Bei den Ergebnissen, die durch das Anwenden der reversiblen
Wavelet-Transformation auf die Bilddaten erzeugt werden, handelt es sich um eine Reihe
bzw. Serie von Koeffizienten.
Die reversible Wavelet-Transformation der vorliegenden Erfindung kann implementiert
werden, indem ein Satz von Filtern verwendet wird. Bei einer anderen Ausführungsform
handelt es sich bei den Filtern um einen 2-Abgriff-Tiefpaß-Filter ("two-tap low-pass
filter") und um einen 6-Abgriff-Hochpaß-Filter ("six-tap high-pass filter"). Bei einer
Ausführungsform werden diese Filter implementiert, indem nur Additions- und
Subtraktionsoperationen (mit zusätzlich festverdrahteter Bit-Verschiebung) verwendet
werden. Ebenso erzeugt bei einer Ausführungsform der vorliegenden Erfindung der
Hochpaß-Filter seinen Ausgang bzw. seine Ausgabe, indem die Ergebnisse des Tiefpaß-
Filters verwendet werden. Die sich ergebenden Hochpaß-Koeffizienten sind nur um ein
paar Bits größer als die Pixeltiefe und die Tiefpaß-Koeffizienten sind dasselbe wie die
Pixeltiefe. Da nur die Tiefpaß-Koeffizienten wiederholt in einer pyramidalen Zerlegung
gefiltert werden, wird die Koeffizienten-Auflösung bei Multi-Niveau-Zerlegungen nicht
erhöht.
Bei wechselnden Ausführungsformen könnten die Ausgangskoeffizienten des Tiefpaß-
Filters an Größe zunehmen, und zwar anstelle der Ausgangskoeffizienten der Hochpaß-
Filter.
Ein Wavelet-Transformations-System wird durch ein Paar von FIR-Analysefiltern h₀(n),
h₁(n) und ein Paar von FIR-Synthesefiltern g₀(n), g₁(n) definiert. Bei der vorliegenden
Erfindung handelt es sich bei h₀ und g₀ um Tiefpaß-Filter und bei h ₁und g₁um Hochpaß-
Filter. Ein Blockdiagramm des Wavelet-Systems ist in der Fig. 3A gezeigt. Nimmt man
nun Bezug auf Fig. 3A, so werden bezüglich eines Eingangssignals x(n) die Analysefilter
h₀ und h₁ angelegt und die Ausgänge um 2 dezimiert (kritisch unterabgetastet), um die
transformierten Signale y₀(n) und y₁(n) zu erzeugen, auf die hierin als Tiefpaß-(Glatt-)
(bzw. tiefpaß-gefilterte) und Hochpaß-(Detail-) (bzw. hochpaß-gefilterte) Koeffizienten
jeweilig bezuggenommen wird. Die Analysefilter und ihre entsprechenden Dezimierungs-
oder Unterabtastungs-Blocks bilden den Analyseabschnitt des Wavelets-Tranformations
systems. Die Kodierer/Dekodierer beinhalten die gesamte Verarbeitungslogik und
Routinen, die in dem transformierten Bereich (z. B. Vorhersage bzw. Prädiktion,
Quantisierung, Kodierung etc.) durchgeführt werden. Das Wavelet-System, das in der
Fig. 3A gezeigt ist, beinhaltet ebenso einen Syntheseabschnitt, in dem die
transformierten Signale um 2 hinaufabgetastet ("upsampled") (z. B. eine Null wird nach
jedem zweiten Term eingefügt) werden und dann durch Synthesefilter g₀(n) und g₁(n)
hindurchgeführt werden. Die Tiefpaß-(Glatt-) Koeffizienten y₀(n) werden durch die
Tiefpaß-Synthesefilter g₀ hindurchgeführt und die Hochpaß-(Detail-)Koeffizienten y₁(n)
werden durch die Hochpaß-Filter g₁ hindurchgeführt. Der Ausgang der Filter g₀(n) und
g₁(n) werden verbunden, um (n) zu erzeugen.
Während ein Hinunterabtasten ("downsampling") und ein Hinaufabtasten ("upsampling")
bei manchen Ausführungsformen durchgeführt wird, werden bei anderen
Ausführungsformen Filter derartig verwendet, daß Berechnungen, die aufgrund des
Hinunterabtastens und des Hinaufabtastens unnötig sind, nicht durchgeführt werden.
Das Wavelet-System kann in Termen der Z-Transformation beschrieben werden, wobei
X(Z), (Z) das Eingangssignal bzw. das Ausgangssignal ist, Y₀(Z), Y₁(Z) die tiefpaß- und
hochpaß-transformierten Signale sind, H₀(Z), H₁(Z) die Tiefpaß- und die Hochpaß-
Analysefilter sind und schließlich G₀(Z), G₁(Z) Tiefpaß- und Hochpaß-Synthesefilter sind.
Falls es keine Änderung oder Quantisierung in dem Transformationsbereich (bzw. in der
Tranformationsdomäne) gibt, so ist der Ausgang (Z) in Fig. 3 durch folgendes gegeben.
Bei der vorliegenden Erfindung wird der zweite Term vom (Z), der als "Alias-"Term
bezeichnet wird, gestrichen, weil die Synthesefilter festgelegt sind, der quadratische
Spiegel des Analysefilters zu sein, d. h.:
In Termen der Filterkoeffizienten gilt,
Deshalb ergibt sich für quadratische Spiegel-Filter-Paare nach der Substitution der
Ausgang bzw. die Ausgabe folgendermaßen:
Somit wird bei dem quadratischen Spiegel-System der vorliegenden Erfindung der
Ausgang nur in Termen des Analysefilters festgelegt. Die Wavelet-Transformation wird
rekursiv auf die transformierten Signale angewendet, und zwar in der Weise, daß die
Ausgänge, die durch die Filter erzeugt werden, als Eingänge in die Filter direkt oder
indirekt verwendet werden. Bei der beschriebenen Ausführungsform wird nur die tiefpaß
transformierte Komponente y₀(n) rekursiv transformiert, so daß das System pyramidal
ist. Ein Beispiel für ein derartiges pyramidales System ist in der Fig. 6 gezeigt.
Die Z-Transformation ist eine übliche Notation, um die Arbeitsweise bzw. die Operation
von Hardware und/oder Software an Daten auszudrücken. Eine Multiplikation mit Z-m
modelliert eine m-Takt-Zyklusverzögerung in der Hardware und einen Feldzugriff zu
dem m-ten vorhergehenden Element in der Software. Derartige Hardwareim
plementationen beinhalten Speicher, Rohrstufen bzw. "Pipestages", Schiebeeinrichtungen,
Register etc.
Bei der vorliegenden Erfindung sind die Signale x(n) und (n) bis auf eine
Multiplikationskonstante und einem Verzögerungsterm identisch, d. h. ausgedrückt in
der Z-Transformation:
(Z) = cZ-mX(Z).
Dies wird ein exaktes Rekonstruktions-System genannt. Somit ist bei einer
Ausführungsform der vorliegenden Erfindung die Wavelet-Transformation, die anfänglich
auf die Eingangsdaten angewendet wird, exakt rekonstruierbar.
Eine Ausführungsform der vorliegenden Erfindung, die die Hadamard-Transformation
verwendet, ist ein exaktes Rekonstruktions-System, das in normalisierter Gestalt bzw.
Form die folgende Darstellung in dem Z-Bereich bzw. in der Z-Domäne aufweist:
Nach dem Einfügen ergibt sich folgender Ausgang:
(Z) = Z-1X(Z),
der offensichtlich eine Exakt-Rekonstruktion ist. Für weitere Informationen zu der
Hadamard-Transformation, siehe Anil K. Jain, Fundamentals of Image Processing, S.
155.
Eine reversible Version der Hadamard-Transformation wird hierin als S-Transformation
bezeichnet. Bezüglich weiterer Informationen zur S-Transformation, siehe Said, A. und
Pearlman, W. "Reversible Image Compression via Multiresolution Representation and
Predictive Coding," Dept. of Electrical, Computer and Systems Engineering, Renssealaer
Polytechnic Institute, Troy, NY 1993. Da die Hadamard-Transformation eine exakte
Rekonstruktions-Transformation ist, handelt es sich bei der folgenden unnormalisierten
Version (die sich von der Hadamard-Transformation durch einen konstanten Faktor
unterscheidet) ebenso um eine exakte Rekonstruktions-Transformation:
Sind die Abtastungen des Eingangssignals als x₀, x₁ gegeben, so ist die S-Transformation
eine reversible Implementation dieses Systems als
Die S-Transformation kann durch die Ausgänge mit einem generischen Index, n, wie folgt
definiert werden:
Bemerkenswert ist, daß der Faktor 2 in der Transformations-Koeffizienten-Adressierung
das Ergebnis einer implizierten bzw. vorausgesetzten Unterabtastung ("subsampling")
um zwei ist. Diese Transformation ist reversibel und das Inverse lautet:
Die Notation bedeutet, daß abgerundet oder abgeschnitten wird und sie wird
manchmal als die Bodenfunktion bzw. "Floor"-Funktion bezeichnet. Ähnlich bedeutet
die Deckenfunktion bzw. "Ceiling"-Funktion F ein Aufrunden zu der nächsten ganzen
Zahl.
Der Beweis, daß es sich bei dieser Implementation um eine reversible handelt, folgt aus
der Tatsache, daß die einzige Information, die bei der Näherung verloren wurde, das
niedrigstwertige Bit von x(0) + x(1) ist. Da aber die niedrigstwertigen Bits von x(0) +
x(1) und x(0) - x(1) identisch sind, kann dies von dem Hochpaß-Ausgang y₁(0)
wiedergewonnen werden. Mit anderen Worten:
Die S-Transformation ist eine nicht-überlappende Transformation, die Minimallängen-
Umkehrfilter bzw. Minimallängen-Reversible-Filter verwendet. Minimallängen-Filter
umfassen ein Paar von Filtern, bei denen beide Filter zwei Abgriffe bzw. zwei Taps
aufweisen. Eine Minimallängen-Transformation liefert keine gute Energie-Verdichtung
("energy compaction"). Minimallängen-Filter implementieren eine nicht-überlappte
Transformation, da die Länge der Filter gleich der Anzahl der Filter ist. Überlappte
Transformationen verwenden wenigstens einen Filter, der eine Länge aufweist, die größer
ist, als die Anzahl der Filter. Überlappte Transformationen, die längere (nicht-
minimallange) Filter verwenden, können eine bessere Energie-Verdichtung bereitstellen.
Die vorliegende Erfindung stellt nicht-minimallange reversible Filter bereit, die eine
überlappte Transformation erlauben.
Ein anderes Beispiel eines Exakt-Rekonstruktions-Systems umfaßt die Zwei/Sechs (TS)-
Transformation bzw. "Two/Six-Transform", die die Z-Bereichs-Definition hat,
Nach der Substitution ergibt sich als Ausgang:
(Z) = 2Z-3X(Z),
was eine Exakt-Rekonstruktions-Transformation ist.
Die rationale unnormalisierte Version der TS-Transformation umfaßt:
Falls x(0), x(1), . . .x(5) sechs Abtastungen des Signals sind, dann werden die ersten drei
Tiefpaß-Koeffizienten y₀(0), y₀(1), y₀(2) und der erste Hochpaß-Koeffizient y₁(0) durch
folgendes gegeben:
Jedoch ist die einfache bzw. direkt gerichtete Implementation der rationalen
unnormalisierten Version der TS-Transformation nicht reversibel. Das folgende Beispiel
zeigt, daß die Implementation lokal nicht-reversibel ist. Eine längere Folge bzw. Sequenz
kann als ein Beispiel für den globalen Fall konstruiert werden. Da
-(x(0)+x(1))+(x(4)+x(5))≠y₀(0)+y₀(2)
ist diese Transformation wegen des Rundens zur Berechnung von y₀(0) und y₀(2) nicht
reversibel bei der Verwendung lokaler Information.
Zum Beispiel, falls x(0)=1, x(1)=1, x(2)=3, x(3)=1, x(4)=1, x(5)=1, dann
und falls x(0)=1, x(1)=2, x(2)=4, x(3)=1, x(4)=1, x(5)=1, dann
Da y₀(0), y₀(1), y₀(2) und y₁(0) für zwei verschiedene Sätze von Eingängen x(0) . . . x(5)
gleich sind, ist die Transformation nicht reversibel, da bei gegebenen y₀(0), . . . y₁(0) von
dieser lokalen Information nicht bestimmt werden kann, welche der zwei Sätze der
Eingang bzw. die Eingabe waren. (Bemerkenswert ist, daß bewiesen werden kann, daß
die Transformation nicht reversibel ist, wenn man globale Information von allen
Koeffizienten verwendet.)
Betrachtet man nun eine TS-Transformation, die hierin als RTS-Transformation
bezeichnet wird, die eine verschiedene Hochpaß-Filteroperation liefert.
Falls x(0), x(1), x(2), x(3), x(4), x(5) sechs Abtastungen des Signals sind, dann sind die
ersten drei Tiefpaß-Koeffizienten y₀(0), y₀(1), y₀(2) und der erste Hochpaß-Koeffizient
y₁(0) durch folgendes gegeben:
Da
ist dann x(2)-x(3) vollständig bekannt. Mit
und x(2)-x(3) und x(2)-x(3), das oben definiert ist, kann x(2) und x(3) wiedergewonnen
werden, weil die niedrigwertigsten Bits von x(0)+x(1) und x(0)-x(1) identisch sind.
Insbesondere sei:
Bei einer Ausführungsform der RTS-Transformation sowie bei jener der S-
Transformation wird eine Division-Durch-Acht als eine Division-Durch-Zwei und dann
eine Division-Durch-Vier implementiert, um eine zusätzliche Genauigkeit zu liefern.
Bemerkenswert ist, daß mathematisch die Gleichung
und die Gleichung
dieselben sind, denn sie mit der unendlichen Präzisionsarithmetik bzw. der "infinite
precision arithmetic" durchgeführt werden. Der Grund, warum die zweite Gleichung einen
reversiblen Filter darstellt, ist offensichtlich, wenn sie physikalisch mit Ganzzahl-
Arithmetik implementiert wird. Beispielhafte Hardware-Implementationen der Tiefpaß-
Filter und der Hochpaß-Filter werden in Verbindung mit den Fig. 16 und 17
beschrieben.
Bemerkenswert ist, daß sowohl bei der S-Transformation als auch bei der RTS-
Transformation der Tiefpaß-Filter implementiert wird, so daß der Bereich des
Eingangssignals x(n) derselbe ist, wie der des Ausgangssignals y₀(n). Zum Beispiel, falls
das Signal ein 8-Bit-Bild ist, ist der Ausgang des Tiefpaß-Bildes ebenso 8 Bits. Dies ist
eine wichtige Eigenschaft für ein pyramidales System, wo der Tiefpaß-Filter
aufeinanderfolgend angewendet wird, weil bei Systemen nach dem Stand der Technik
der Bereich bzw. die Spanne der Ausgangssignale größer ist, als jener der
Eingangssignale, wodurch sukzessive Anwendungen des Filters erschwert werden.
Zusätzlich weist das Tiefpaß-Filter nur zwei Abgriffe auf, die es zu einem nicht
überlappenden Filter machen. Diese Eigenschaft ist für die Hardware-Implementation,
wie sie weiter unten später beschrieben wird, wichtig.
Bei einem generischen Format, wird die reversible TS-Transformation durch den
Ausdruck von zwei Ausgängen eines Tiefpaß- und eines Hochpaß-Filters festgelegt:
Der Ausdruck für d(n) kann vereinfacht werden und geschrieben werden unter der
Verwendung von s(n) (darüberhinaus kann die Ganzzahl-Division durch 4 gerundet
werden, indem eine 2 zu dem Zähler addiert wird). Dies führt zu folgendem Ergebnis:
Die TS-Transformation ist reversibel und die Inverse ist:
wo p(n) zuerst durch folgendes berechnet werden muß:
Die Ergebnisse von dem Tiefpaß-Filter können zweimal (in dem ersten und dem dritten
Termen) in dem Hochpaß-Filter verwendet werden. Deshalb müssen nur zwei andere
Additionen durchgeführt werden, um zu den Ergebnissen des Hochpaß-Filters zu
gelangen.
Die TS-Transformation ist, außer daß sie reversibel ist, zusätzlich ebenso effizient. Somit
eignet sie sich ziemlich gut für die verlustfreie Kompression. Die TS-Transformation
(ähnlich wie die S-Transformation) weist kein Wachsen in dem glatten Ausgang bzw.
in der geglätteten Ausgabe auf, d. h. falls das Eingangssignal b Bits tief ist, so ist es ebenso
der glatte Ausgang. Dies ist nützlich für ein pyramidales System, das in dem nächsten
Abschnitt definiert ist, wo der glatte Ausgang weiter zerlegt wird. Es gibt keinen
systematischen Fehler, der auf Rundungen bei der Ganzzahl-Implementation der
Transformation zurückzuführen ist, so daß alle Fehler bei einem verlustbehafteten System
durch Quantisierung gesteuert bzw. kontrolliert werden können.
Unter den vier Filtern, die an einer Wavelet-Transformation teilhaben, ist das Tiefpaß-
Synthesefilter das wichtigste, weil es die quantisierten Koeffizienten kombiniert und
ebenso die Artifakte glättet. Diese Tatsache hat zu der Wahl eines relativ langen (sechs-
Abgriff- bzw. "six-tap-") und insbesondere gut funktionierenden Filters für die Tiefpaß-
Synthesefilter bei der vorliegenden Erfindung geführt. Bemerkenswert ist, daß es in einem
QMF-System nur zwei unabhängige Filter gibt.
Viele überlappte, nicht-minimallange reversible Filter können bei der vorliegenden
Erfindung verwendet werden. Derartige Vorwärts- und inverse Darstellungen des
Transformations-Systems für das Filtern mit überlappten, nicht-minimallange reversiblen
Filtern ist in Fig. 3B gezeigt. Zum Beispiel kann die folgende Klasse von Filtern bei
der vorliegenden Erfindung verwendet werden. Für eine ganze Zahl L z gilt:
und
und
Die Länge des Hochpaß-Filters ist 2L. Falls L ungerade ist, kann der Filter näher an einem
symmetrischen Filter sein. Falls ai, b, ci und k ganze Zahlen sind und k b, dann ist der
Filter reversibel. Falls ai, b, ci und k Potenzen von zwei (oder das negative oder das
komplementäre einer Potenz von zwei) sind, dann kann die Implementation des Filters
vereinfacht werden. Falls k = b (ungeachtet der Werte von ai und ci) dann wird der Bereich
des Ausgangs bzw. der Ausgabe des Hochpaß-Filters yi minimiert. Für jedes ai, falls es
genau ein cj gibt, wo ai = -cj, wird dann der Hochpaß-Filter keine Antwort auf einen
konstanten Eingang aufweisen. Falls ai = -cj, wenn j-(L-1)=i, dann kann der Filter näher
an einem symmetrischen Filter sein.
Eine andere nützliche Eigenschaft lautet:
Dies läßt den Hochpaß-Filter keine Antwort auf eine lineare Änderung des Eingangs
aufweisen, wenn m=1, und auf einen quadratisch sich ändernden Eingang, wenn m=2,
etc., wo m die Moment-Bedingung ist. Diese Eigenschaft ist der Hauptgrund dafür, daß
die RTS-Transformation eine bessere Energie-Verdichtung aufweist, als die S-
Transformation.
Während Filter die minimalen Nebenbedingungen für Reversibilität für verschiedene
Anwendungen erfüllen müssen, können Filter verwendet werden, die keine, manche oder
alle der anderen Eigenschaften erfüllen. Bei einigen Ausführungsformen wird einer der
folgenden Beispiels-Hochpaß-Filter verwendet. Die Filter werden in einer Notation
aufgelistet, die nur die Ganzzahl-Koeffizienten der rationalen Version der Filter auflistet,
um eine Verschleierung der Erfindung zu vermeiden.
Der letzte Filter wird als (Zwei/Zehn bzw. "Two/Ten") TT-Filter bezeichnet und er hat
die Eigenschaft, daß er nicht auf kubisch zunehmende Funktionen anspricht.
Bemerkenswert ist, daß, da 22=16+2×3 und 3=2+1, dieser Filter mit insgesamt sieben
Additionen und Subtraktionen implementiert werden kann.
Bei einer Ausführungsform können die Filter kombiniert werden und auf einen Block
angewendet werden, so daß sowohl der horizontale als auch der vertikale Durchgang bei
einer Operation durchgeführt wird. Fig. 4 zeigt die Filter die der Durchführung der
kombinierten Operation dienen. Konfiguration (a) zeigt die Verwendung von zwei
separaten 1-D-reversiblen Filtern, eine für jeden Durchgang, der einen 1-D-Filter und
ein 1-D-Rundung beinhaltet. Konfiguration (b) zeigt einen 1-D-Filter 401, gefolgt von
einem anderen 1-D-Filter 402 und abschließend mit einer 2-D-Rundungsoperation 403.
Diese Konfiguration erzeugt dahingehend präzisere Ergebnisse, daß sie eine bessere
Rundung erlaubt.
Die strikten Erfordernisse bezüglich der Reversibilität für die Filter können erleichtert
bzw. entspannt werden, indem das folgende bemerkt wird. Hochpaß-Koeffizienten werden
in der gewissen Ordnung kodiert und dekodiert. Pixelwerte, die vorhergehenden
dekodierten Hochpaß-Koeffizienten entsprechen, sind exakt bekannt, so daß sie beim
laufenden bzw. gegenwärtigen Hochpaß-Filtern verwendet werden können. Zum Beispiel
kann der folgende Filter verwendet werden, wenn eine Rasterordnung verwendet wird.
Die Verwendung eines einzigen festen Hochpaß-Filters ist nicht erforderlich. Adaptive
Filter können verwendet werden oder Mehrfach-Filter können verwendet werden. Die
Daten, die verwendet werden, um anzupassen oder unter mehreren Filtern auszuwählen,
müssen auf Daten beschränkt werden, die in dem Dekodierer vor einer bestimmten
inversen Filter-Operation verfügbar sind.
Eine Art und Weise, um Mehrfach-Filter zu verwenden, ist, es die Hochpaß-Koeffizienten
progressiv bzw. fortschreitend zu verarbeiten. Wechselnde Hochpaß-Filter-Operationen
(y₁(0), y₁(2), y₁(4), . . .) können zuerst mit einem reversiblen Filter, wie zum Beispiel dem
RTS-Hochpaß-Filter verarbeitet werden. Die übrige Verarbeitung (y₁(1), y₁(3), y₁(5), . . .)
kann einen nicht-reversiblen Filter mit bis zu sechs-Abgriffen ("six taps") verwenden,
weil die exakten Werte der Eingänge zu dem Überlapp-Abschnitt des Filters bekannt sind.
Zum Beispiel kann jeder der folgenden Filter verwendet werden.
Bemerkenswert ist, daß QMF-Filter in einigen Ausführungsformen nicht verwendet
werden.
Bei einigen Ausführungsformen, kann der Hochpaß-Filter durch eine
Prädiktion/Interpolations-Operation ersetzt werden. Ein Prädiktor/Interpolator kann den
Unterschied zwischen einem Paar von Eingängen vorhersagen, die jegliche Daten
verwenden, die in dem Dekoder vor einer bestimmten Prädiktion/Interpolations-Operation
verfügbar sind. Die vorhergesagte Differenz wird von der aktuellen Differenz der
Eingänge bzw. Eingaben abgezogen und das Ergebnis wird ausgegeben. Bei einer
Ausführungsform werden Prädiktions-Methoden bzw. Vorhersagemethoden nach dem
Stand der Technik, die in DPCM verwendet werden, progressives Kodieren oder
Raumbereichs-Kodieren ("spatial domain coding") verwendet.
Bei einer Ausführungsform können nicht-lineare Filter, wie zum Beispiel morphologische
Filter (z. B. ein Median-Filter) verwendet werden. Bei einer Ausführungsform wird der
1,1-Filter in Verbindung mit einem Differenz-Filter für den Hochpaß verwendet. Ein
derartiges Filter-System muß in der Lage sein, die Differenz zwischen zwei Pixels zu
übertragen. Basierend auf irgendwelchen Daten, die der Dekoder hat, kann eine
Vorhersage bzw. Prädiktion dahingehend getroffen werden, was die Differenz sein sollte.
Ein nicht-linearer morphologischer Filter kann verwendet werden, um die Abschätzung
vorzunehmen. Die vorliegende Erfindung berechnet den Median um einen Pixel, indem
die aktuellen Pixels auf der kausalen Seite des Fensters verwendet werden und indem
sie in den Filter eingegeben werden. Auf der nicht-kausalen Seite des Filters werden die
Tiefpaß-Koeffizienten anstelle von Pixelwerten verwendet.
Unter der Verwendung von Tiefpaß- und Hochpaß-Filtern der vorliegenden Erfindung
wird eine Multi-Auflösungs-Zerlegung durchgeführt. Die Anzahl der Niveaus der
Zerlegung ist variabel und kann irgendeine Zahl sein; jedoch ist gegenwärtig die Anzahl
der Zerlegungsniveaus gleich zwei bis fünf Niveaus.
Die häufigste Art und Weise der Durchführung der Transformation an zweidimensionalen
Daten, wie zum Beispiel einem Bild, ist es, die eindimensionalen Filter getrennt
anzuwenden, d. h. entlang der Reihen und dann entlang der Spalten. Das erste Niveau der
Zerlegung führt zu vier verschiedenen Bändern von Koeffizienten, auf die hierin als LL,
HL, LH und HH bezuggenommen wird. Die Buchstaben stehen für niedrig (L wie "low")
und hoch (H) entsprechend der Anwendung von Glatt- bzw. Detail-Filtern, die oben
definiert wurden. Somit besteht das LL-Band aus Koeffizienten von dem Glatt-Filter
sowohl in Reihen- als auch Spalten-Richtung. Es ist allgemeine Praxis, die Wavelet-
Koeffizienten in dem Format, wie in den Fig. 5A bis 5D, zu plazieren.
Jeder Unterblock in einer Wavelet-Zerlegung kann weiter zerlegt werden. Die
allgemeinste Praxis ist es, nur den LL-Unterblock weiter zu zerlegen, aber dies kann eine
Anzahl von Malen getan werden. Eine derartige Zerlegung wird Pyramidal-Zerlegung
genannt (Fig. 5A bis 5D). Die Bezeichnung LL, LH, HL, HH und die Zerlegungs-
Niveau-Zahl bezeichnet jede Zerlegung. Bemerkenswert ist, daß mit beiden Filtern, S
oder TS der vorliegenden Erfindung eine pyramidale Zerlegung nicht die
Koeffizientengröße vergrößert.
Zum Beispiel, falls die reversible Wavelet-Transformation rekursiv auf ein Bild
angewendet wird, operiert bzw. arbeitet das erste Niveau der Zerlegung an dem feinsten
Detail oder der Auflösung. Bei einem ersten Zerlegungsniveau wird das Bild in vier
Unterbilder (z. B. Unterbänder) zerlegt. Jedes Unterband stellt ein Band von Raum-
Frequenzen bzw. räumlichen Frequenzen dar. Die ersten Niveau-Unterbänder werden
als LL₀, LH₀, HL₀ und HH₀ bezeichnet. Das Verfahren der Zerlegung des Originalbildes
beinhaltet die Unterabtastung um zwei, und zwar sowohl in horizontaler als auch
vertikaler Dimension, so daß die ersten Niveau-Unterbänder LL₀, LH₀HL₀ und HH₀jede
ein Viertel so viele Koeffizienten aufweist, wie der Eingang Pixel (oder Koeffizienten)
des Bildes, wie das in der Fig. 5A gezeigte, aufweist.
Unterband LL₀ beinhaltet gleichzeitig Tieffrequenz-Horizontal- und Tieffrequenz-
Vertikal-Informationen. Typischerweise wird ein großer Anteil der Bild-Energie ("image
energy") in diesem Unterband konzentriert. Das Unterband LH₀ beinhaltet Tieffrequenz-
Horizontal- und Hochfrequenz-Vertikal-Informationen (z. B. horizontale Kanten
informationen). Das Unterband HL₀ beinhaltet Hochfrequenz-Horizontal-Informationen
und Tieffrequenz-Vertikal-Informationen (z. B. vertikale Kanteninformationen).
Unterband HH₀ beinhaltet Hochfrequenz-Horizontal-Informationen und Hochfrequenz-
Vertikal-Informationen (z. B. Struktur- oder Diagonalkanten-Informationen).
Jede der folgenden zweiten, dritten und vierten tieferen Zerlegungs-Niveaus wird durch
Zerlegung des Tieffrequenz-LL-Unterbandes des vorhergehenden Niveaus erzeugt. Das
Unterband LL₀ des ersten Niveaus wird zerlegt, um Unterbänder LL₁, LH₁, HL₁ und HH₁
des zweiten Niveaus mit moderaten Details, wie in der Fig. 5B gezeigt, zu erzeugen.
Ähnlich wird das Unterband LL₁ zerlegt, um grobe Detail-Unterbänder LL₂, LH₂, HL₂
und HH₂ des dritten Niveaus, wie in der Fig. 5C gezeigt, zu erzeugen. Ebenso wird das
Unterband LL₂ zerlegt, um Unterbänder LL₃, LH₃, HL₃ und HH₃ mit groberen Details
des dritten Niveaus, wie in der Fig. 5D gezeigt, zu erzeugen. Aufgrund der
Unterabtastung mit zwei bzw. um zwei weist jedes zweite Niveau-Unterband 1/16 der
Größe des Originalbildes auf. Jede Abtastung (z. B. Bildelement bzw. Pixel) bei diesem
Niveau stellt ein moderates Detail in dem Originalbild bei demselben Ort dar. Ahnlich
beträgt jedes dritte Niveau-Unterband 1/64 der Größe des Originalbildes. Jedes
Bildelement bzw. Pixel auf diesem Niveau entspricht einem relativ groben Detail in dem
Originalbild bei demselben Ort. Ebenso beträgt jedes vierte Niveau-Unterband 1/256 der
Größe des Originalbildes.
Da die zerlegten Bilder physikalisch kleiner sind, als die Originalbilder, und zwar aufgrund
der Unterabtastung, kann derselbe Speicher, der zur Speicherung des Originalbildes
verwendet wird, verwendet werden, um alle zerlegten Unterbänder zu speichern. Mit
anderen Worten werden das Originalbild und die zerlegten Unterbänder LL₀ und LL₁
gelöscht und nicht in einer Dreiniveau-Zerlegung gespeichert.
Obwohl nur vier Unterband-Zerlegungsniveaus gezeigt sind, können zusätzliche Niveaus
in Übereinstimmung mit den Erfordernissen eines bestimmten Systems entwickelt werden.
Ebenso können mit anderen Transformationen, wie zum Beispiel der DCT oder linear
beabstandeten Unterbändern, verschiedene Mutter-Kind-Beziehungen ("parent-child
relationships") festgelegt werden.
Es gibt eine natürliche und nützliche Baumstruktur für Wavelet-Koeffizienten bei einer
pyramidalen Zerlegung. Bemerkenswert ist, daß es einen einzigen LL-Unterblock gibt,
der einem letzten Niveau der Zerlegung entspricht. Auf der anderen Seite gibt es soviele
LH, HL und HH-Bänder, wie die Zahl der Niveaus beträgt. Die Baumstruktur legt die
Mutter ("parent") eines Koeffizienten in einem Frequenzband so fest, daß sie ein
Koeffizient in einem gleichen Frequenzband bei einer niedrigeren Auflösung ist und zu
derselben räumlichen Örtlichkeit in Beziehung stehen. Fig. 6 zeigt das Mutter- bzw.
Elternverhältnis zwischen zwei aufeinanderfolgenden Niveaus.
Nimmt man nun Bezug zu Fig. 6, so ist der Koeffizient bei A direkte Mutter zu B, C
und D aber ebenso Mutter zu den Koeffizienten, die B, C und D als Mutter haben.
Insbesondere ist B Mutter zu den vier Koeffizienten um E und den 16 Koeffizienten um
H etc.
Die Verarbeitung einer Multi-Auflösungs-Zerlegung kann durchgeführt werden, indem
ein Filtersystem verwendet wird, wie dasjenige, das in Fig. 7 gezeigt ist. Ein
Eingangssignal, das ein eindimensionales Signal mit Länge L darstellt, wird tiefpaß- und
hochpaß-gefiltert durch die Filtereinheiten 701 und 702, bevor es über zwei Einheiten
703 und 704 unterabgetastet wird. Ein unterabgetastetes Ausgangssignal von der Einheit
703 wird durch die Einheiten 705 und 706 tiefpaß- und hochpaß-gefiltert, bevor es durch
zwei Einheiten 707 und 708 jeweilig unterabgetastet wird. Unterbandkomponenten L
und H erscheinen als jeweilige Ausgänge bzw. Ausgaben der Einheiten 707 und 708. In
ähnlicher Weise wird das Ausgangssignal aus der Einheit 705 tiefpaß- bzw. hochpaß-
gefiltert durch die Einheiten 709 bzw. 710, bevor es durch die Einheiten 711 bzw. 712
unterabgetastet wird. Unterband-Komponenten L und H erscheinen bei entsprechenden
Ausgängen der Einheiten 711 und 712. Wie oben beschrieben, handelt es sich bei den
Filtern, die bei einer Ausführungsform der vorliegenden Erfindung bei der Unterband-
Zerlegung verwendet werden, um digitale Quadratur-Spiegel-Filter zur Aufspaltung der
horizontalen und vertikalen Frequenzbänder in Tieffrequenz- und Hochfrequenz-Bänder.
Fig. 8 zeigt eine zweidimensionale, Zweiniveau-Transformation. Fig. 9 zeigt ebenso
eine zweidimensionale, Zweiniveau-Transformation, die implementiert ist, indem
eindimensionale Filter, wie zum Beispiel jene, die in den Fig. 16 und 17 gezeigt sind,
verwendet werden. Die eindimensionalen Filter werden auf jede zweite Position
angewendet, um Berechnungen zu vermeiden, die durch das Unterabtasten unnötig
gemacht wurden. Bei einer Ausführungsform teilen eindimensionale Filter die
Berechnung zwischen Tiefpaß- und Hochpaß-Berechnung auf.
Deshalb liefert die vorliegende Erfindung ein System zur Kompression und
Dekompression, indem nicht-minimallange, überlappte reversible Filter verwendet
werden. Fig. 10 ist ein Blockdiagramm für eine Ausführungsform eines derartigen
Systems. Nimmt man Bezug auf Fig. 10, so wird eine hierarchische Zerlegung
anfänglich durchgeführt. Die Ergebnisse der hierarchischen Zerlegung werden zu einem
Kompressor bzw. zu einer Kompressionseinrichtung zur Kompression gesendet. Die
durchgeführte Kompression kann eine Vektor-Quantisierung, eine Skalar-Quantisierung,
Null-Lauf-Längenkodierung ("zero run length coding"), Huffman-Kodierung, Tunstall,
etc. beinhalten. Der Ausgang des Kompressors bzw. der Kompressionseinrichtung
komprimiert Daten, die eine komprimierte Version der Originaleingangsdaten darstellen.
Ein Dekompressor bzw. eine Dekompressionseinrichtung kann die Daten irgendwann
in der Zukunft empfangen und die Daten dekomprimieren. Die vorliegende Erfindung
führt dann eine inverse Zerlegung durch, indem nicht-minimallange, überlappte reversible
Filter verwendet werden, um eine rekonstruierte Version der Originaldaten zu erzeugen.
Bemerkenswert ist, daß die nicht-minimallangen, überlappten reversiblen Filter ("non
minimal length, overlapped reversible filter") Nicht-S-Transformations-Filter aufweisen.
Die reversiblen Wavelet-Filter der vorliegenden Erfindung können ebenso bei
beispielhafter Analyse und Verbesserungssystemen, wie zum Beispiel in Fig. 11 gezeigt,
verwendet werden. Nimmt man Bezug auf Fig. 11, so wird die hierarchische Zerlegung
von Eingangsdaten durchgeführt, indem nicht-minimallange, überlappte reversible
Wavelet-Filter verwendet werden. Die Analyseeinheit empfängt die Koeffizienten, die
durch die Filter erzeugt werden, und klassifiziert sie in Entscheidungen, zum Beispiel
werden nur relevante Informationen extrahiert, und zwar eher, als daß eine vollständige
Kodierung der Koeffizienten vorgenommen wird. Zum Beispiel könnten in einem
Dokumenten-Archivierungssystem leere Seiten erkannt werden, indem nur das gröbste
Tiefpaß-Unterband verwendet wird. Ein anderes Beispiel wäre es, nur Hochpaß-
Informationen aus einem bestimmten Unterband zu verwenden, um zwischen Bild eines
Textes und Bildern natürlicher Szenen zu unterscheiden. Die hierarchische Zerlegung
kann zur Registrierung ("registering") von Mehrfach-Bildern bzw. mehreren Bildern
derart verwendet werden, daß eine grobe Registrierung zuerst mit groben Unterbändern
durchgeführt wird. Bei einer anderen Ausführungsform durchlaufen die Koeffizienten
eine Verbesserung ("enhancement") oder einer Filterung, gefolgt von einer inversen
Zerlegung. Schärfung, Kantenverbesserungen, Rausch-Steuerung etc. kann durchgeführt
werden, indem eine hierarchische Zerlegung verwendet wird. Somit liefert die vorliegende
Erfindung eine Wavelet-Transformation zur Verwendung in einer Gesamt-Zeit/Raum-
und Frequenz-Bereichs-Analyse und in Filter/Verbesserungs-Systemen.
Bei der vorliegenden Erfindung werden die Koeffizienten, die als ein Ergebnis der
Wavelet-Zerlegung erzeugt wurden, entropie-kodiert. Bei der vorliegenden Erfindung
durchlaufen die Koeffizienten anfänglich eingebettetes Kodieren, bei dem die
Koeffizienten in einer visuell signifikanten Ordnung oder allgemeiner unter Bezugnahme
auf eine bestimmte Fehlermetrik (z. B. Verzerrungs-Metrik bzw. "distortion"-metric)
geordnet werden. Fehler- oder Verzerrungs-Metriken beinhalten Spitzenfehler und
mittleren quadratischen Fehler (MSE). Zusätzlich kann Ordnen durchgeführt werden,
um einem Bitwertigkeits-Raumort Vorzug, Relevanz für Datenbasis-Abfragen, gerichtet
(vertikal, horizontal, diagonal etc.), zu geben.
Das Ordnen der Daten wird durchgeführt, um die eingebettete Quantisierung des
Kodestromes zu erzeugen. Bei der vorliegenden Erfindung werden zwei ordnende
Systeme verwendet: Ein erstes, um die Koeffizienten zu ordnen und ein zweites, um die
binären Werte innerhalb eines Koeffizienten zu ordnen. Das Ordnen der vorliegenden
Erfindung erzeugt ein Bitstrom, der nachfolgend mit einem binären Entropie-Kodierer
kodiert wird.
Bei einer Ausführungsform weist das Koeffizienten-Ordnen und -Modellieren M-ary-
Kodieren auf. Bei einer alternativen Ausführungsform kann es nur band-gemäß anstatt
bit-gemäß bzw. nur durch Band geordnet anstatt durch Bit geordnet eingebettet sein.
Ebenso kann für verlustfreies Kodieren oder für ein verlustbehaftetes Kodieren
einzigartiger Eigenschaft (z. B. die Quantisierung wird bei dem Kodierer spezifiziert)
nicht-eingebettetes Kodieren bei dem Koeffizienten-Ordnen oder -Modellieren verwendet
werden.
Bei der vorliegenden Erfindung ist eine Kodiereinheit ein rechteckiger Satz von Bäumen,
die unabhängig von dem Rest des Bildes kodiert werden. Die Kodiereinheit stellt die
kleinste Einheit von kodierten Daten dar (obwohl es Quantisierungs-Optionen gibt, die
es erlauben würden, daß partielle Kodiereinheiten kodiert werden). Alle Daten einer
Kodiereinheit sind für den Kodierer zu einer Zeit verfügbar, zum Beispiel gepuffert im
Speicher.
Die Wahl einer Kodiereinheit hängt von der Implementation ab. Die Kodiereinheit kann
als das gesamte Bild (oder als ein anderer Datensatz) oder als ein einziger Baum der
vorliegenden Erfindung oder als irgendein Rechteck dazwischen bzw. darinnen definiert
sein. Bei einer Ausführungsform kann die Auswahl der Kodiereinheit einen Kompromiß
zwischen der Kompressions-Wirksamkeit und der Speicherverwendung mit sich bringen.
Bei einer Ausfürungsform sind alle Koeffizienten innerhalb einer Kodiereinheit in einem
Speicher mit wahlfreiem Zugriff bzw. RAM verfügbar. Da alle Koeffizienten innerhalb
einer Kodiereinheit in einem Speicher mit wahlfreiem Zugriff verfügbar sind, kann die
Einbettungs-Ordnung zwischen den Koeffizienten innerhalb einer Kodiereinheit von
irgendeiner beliebigen Ordnung sein. Diese Ordnung ist sowohl dem Kodierer als auch
dem Dekodierer bekannt. Aber da der Entropie-Kodierer kausal bezüglich dieses Ordnens
ist, hat die Ordnung einen wesentlichen Einfluß auf die Kompression und wird sorgfältig
gewählt. Eine Ausführungsform mit einem bestimmten Ordnen wird unten beschrieben.
Bei der vorliegenden Erfindung umfaßt das Gesamt-Raum/Frequenz-Modellieren ein
eingebettes Kodiersystem, das verwendet wird, um die Koeffizienten zu kodieren, die
durch die Wavelet-Transformation der vorliegenden Erfindung erzeugt werden. Das
Gesamt-Raum/Frequenz-Modellieren nutzt sowohl die bekannten Frequenzbänder als
auch die benachbarten Pixel (oder Daten) aus. Eine Ausführungsform des Gesamt-
Raum/Frequenz-Modellierens wird hierin als Horizont-Modellieren bezeichnet.
Die Daten werden anfänglich im Vorzeichen-Betrag-Format formatiert, dem folgt, daß
die Daten, basierend auf ihrer Wertigkeit, sortiert werden.
Bei einer anderen Ausführungsform können die Koeffizienten, um den Arbeitsraum-
Speicher weiter zu reduzieren, in einer Betrag/Mantissen-Form anstelle einer
Vorzeichen/Betrag-Form gespeichert werden.
Nachdem die Daten bezüglich der gegebenen Wertigkeits-Metrik sortiert wurden, werden
die Daten kodiert.
Nimmt man an, daß ein digitales Signal x(n) für jedes x(n) mit R-Bits an Präzision
dargestellt wird, dann kodiert das eingebettete Kodieren der vorliegenden Erfindung das
höchstwertige Bit (oder Bits) eines jeden x(n) des Signals, dann das nächstwertige Bit
(oder Bits) usw. Zum Beispiel für den Fall eines visuell definierten Ordnens kann ein
Bild, das eine bessere Qualität im Zentrum erfordert, als entlang der Ecken oder nahe
der Kanten (z. B. wie einige medizinische Bilder) derartig dem Kodieren unterworfen
werden, daß die Bits niedriger Ordnung der zentralen Pixel vor den Bits hoher Ordnung
der Randpixel kodiert werden können.
Bei einer Ausführungsform ist die eingebettete Ordnung, die für Binärwerte innerhalb
eines Koeffizienten verwendet wird, eine bitebenen-gemäße bzw. eine durch Bit-Ebenen
geordnete. Die Koeffizienten werden in Bitwertigkeits-Darstellung ausgedrückt.
Bitwertigkeit ist eine Vorzeichen-Betrag-Darstellung, wo eher das Vorzeichenbit als das
höchstwertige Bit (MSB) kodiert wird, und zwar mit dem ersten Betrag-Bit ungleich null.
Es gibt drei Typen von Bits bei einer Zahl, die in der Bitwertigkeits-Form dargestellt wird:
Kopf bzw. Head (im folgenden auch nur Head genannt), Schwanz bzw. Tail (im folgenden
auch nur Tail genannt) und Vorzeichen. Die Head-Bits sind all die Null-Bits von dem
MSB bis zu dem ersten Betrag-Bit ungleich-null plus dem ersten Bit ungleich-null. Die
Bit-Ebene, wo das erste Betrags-Bit ungleich-null auftritt, legt die Wertigkeit der
Koeffizienten fest. Die Bits nach dem ersten Betrag-Bit ungleich-null bis zu dem LSB
sind die Tail-Bits. Das Vorzeichen-Bit bezeichnet einfach das Vorzeichen. Eine Zahl mit
einem Bit ungleich-null als das MSB hat nur ein Head-Bit. Ein Null-Koeffizient hat kein
Tail- oder Vorzeichen-Bit.
Für den Fall, daß die Werte nicht-negative ganzen Zahlen sind, was zum Beispiel
bezüglich der Intensität von Pixeln auftritt, ist die Ordnung, die verwendet werden kann,
die Bit-Ebenen-Ordnung (z. B. von der höchstwertigen zu der niedrigstwertigen Bit-
Ebene). In Ausführungsformen, bei denen zweier-komplementäre negative ganze Zahlen
ebenso erlaubt sind, ist die eingebettete Ordnung des Vorzeichen-Bits dieselbe wie das
erste Bit ungleich-null des absoluten Wertes der ganzen Zahl. Deshalb wird das
Vorzeichen-Bit nicht betrachtet, bis ein Bit ungleich-null kodiert wird. Zum Beispiel,
wenn man die Vorzeichen-Betrag-Notation verwendet, lautet die 16-Bit-Zahl -7:
1000000000000111.
1000000000000111.
Auf einer Bit-Ebenen-Basis werden die ersten 12 Entscheidungen "unsignifikant" oder
null sein. Das erste Bit tritt bei der 13. Entscheidung auf. Als nächstes wird das
Vorzeichen-Bit ("negativ") kodiert werden. Nachdem das Vorzeichen-Bit kodiert ist,
werden die Tail-Bits bzw. Schwanz-Bits verarbeitet. Die 15. und 16. Entscheidung ist
jeweils "1".
Die Koeffizienten stellen in den verschiedenen Unterblöcken verschiedene Frequenzen
dar, ähnlich der FFT oder der DCT. Die Quantisierung wird durch Ausrichtungs-
Koeffizienten bezüglich einander durchgeführt, und zwar vor der Bit-Ebenen-Kodierung.
Die weniger schwer quantifizierten Koeffizienten werden zu den früheren Bit-Ebenen
hin (z. B. nach links verschoben) ausgerichtet. Somit, falls der Strom abgeschnitten wird,
werden diese Koeffizienten mehr Bits umfassen, die sie definieren als die schwerer
quantifizierten Koeffizienten.
Bei einer Ausführungsform sind die Koeffizienten in Termen von SNR oder MSE für
die beste Raten-Verzerrungsfähigkeit ausgerichtet. Alternativ könnte die Ausrichtung
eine psychovisuelle Quantisierung der Koeffizientendaten ermöglichen. Die Ausrichtung
hat einen wesentlichen Einfluß auf die Evolution bzw. Entwicklung der Bildqualität (oder
mit anderen Worten auf die Raten-Störungs-Kurve bzw. Raten-Verzerrungs-Kurve), aber
sie hat einen vernachlässigbaren Einfluß auf das End-Kompressions-Verhältnis des
verlustfreien Systems.
Die Bit-Tiefen der verschiedenen Koeffizienten bei einer Zwei-Niveau-TS-
Transformations-Zerlegung von einem Eingangsbild mit b-Bits pro Pixel sind in Fig.
12 gezeigt. Um die Koeffizienten auszurichten, wird die 1-HH-Koeffizientengröße als
eine Referenz verwendet und Verschiebungen werden bezüglich dieser Größe angegeben.
Tabelle 1 zeigt ein Beispiel dieses Ausricht-Prozesses.
Bemerkenswert ist, daß das Vorzeichen-Bit nicht das MSB ist und mit dem ersten Tail-Bit
kodiert ist. Es ist wichtig zu bemerken, daß die Ausrichtung einfach die Ordnung steuert,
in der die Bits zu dem Entropie-Kodierer gesandt werden. Tatsächliches Auftüllen,
Verschieben, Speichern oder Kodieren von Extranull-Bits wird nicht durchgeführt.
Eine Ausführungsform des Horizontal-Kontext-Modells, das in der vorliegenden
Erfindung verwendet wird, wird unten beschrieben. Dieses Modell verwendet Bits
innerhalb einer Kodiereinheit, die auf den räumlichen und spektralen Abhängigkeiten
der Koeffizienten basieren. Die verfügbaren Binärwerte der benachbarten Koeffizienten
und Mutter-Koeffizienten können verwendet werden, um Kontexte zu erzeugen. Die
Kontexte sind jedoch ursächlich bzw. kausal für die Dekodierbarkeit und in kleiner
Anzahl für eine effiziente Anpassung.
Bei einer Ausführungsform wird das Entropie-Kodieren, das durch die vorliegende
Erfindung durchgeführt wird, mittels Binär-Entropie-Kodierer durchgeführt. Bei einer
Ausführungsform umfaßt der Entropie-Kodierer 104 einen Q-Kodierer, einen QM-
Kodierer, eine Finalautomaten-Kodierer ("finite state machine coder"), einen
Hochgeschwindigkeitsparallel-Kodierer, etc. Ein einziger Kodierer kann verwendet
werden, um einen einzigen Ausgangs-Kodestrom zu erzeugen. Alternativ können mehrere
(physikalische oder virtuelle) Kodierer verwendet werden, um mehrere (physikalische
oder virtuelle) Datenströme zu erzeugen.
Bei einer Ausführungsform umfaßt der Binär-Entropie-Kodierer der vorliegenden
Erfindung einen Q-Kodierer. Bezüglich weiterer Information zu dem Q-Kodierer, siehe
Pennebaker, W.B., et al., "An Overview of the Basic Principles of the Q-coder Adaptive
Binary Arithmetic, "IBM Journal of Research and Development", Vol. 32, S. 717-26, 1988.
Bei einer alternativen Ausführungsform verwendet ein binärer Entropie-Kodierer einen
QM-Kodierer, der ein bekannter und wirksamer binärer Entropie-Kodierer ist. Er ist
insbesondere wirksam bezüglich Bits mit einer hohen Wahrscheinlichkeits-Asymmetrie
bzw. mit einem hohen Wahrscheinlichkeits-Versatz. Der QM-Kodierer wird sowohl bei
den JPEG- als auch bei den JBIG-Standards verwendet.
Der Binär-Entropie-Kodierer kann einen Finalautomat- bzw. einen "finite state machine-"
(FSM)Kodierer aufweisen. Ein derartiger Kodierer liefert die einfache Umwandlung von
einer Wahrscheinlichkeit und von einem Ergebnis zu einen komprimierten Bit-Strom.
Bei einer Ausführungsform wird ein Finalautomat-Kodierer implementiert, indem
Nachschlagtabellen sowohl für den Dekodierer als auch für den Kodierer verwendet
werden. Eine Vielzahl von Wahrscheinlichkeitsabschätzungsverfahren können mit einem
derartigen Finalautomat-Kodierer verwendet werden. Die Kompression ist ausgezeichnet
für Wahrscheinlichkeiten nahe bei 0,5. Die Kompression für stark asymmetrische bzw.
verzerrte Wahrscheinlichkeiten hängt von der Größe der verwendeten Nachschlagtabelle
ab. Wie der QM-Kodierer ist er bezügliche eingebetteter Bit-Ströme nützlich, weil die
Entscheidungen in der Ordnung ihres Auftretens kodiert werden. Es gibt keine
Möglichkeit für "Übertrag"("carry-over")-Probleme, weil die Ausgänge (bzw. Ausgaben)
durch eine Nachschlagtabelle festgelegt sind. In der Tat gibt es eine maximale
Verzögerung zwischen dem Kodieren und der Erzeugung eines komprimierten Ausgangs-
Bits im Gegensatz zu den Q- und QM-Kodierem. Bei einer Ausführungsform umfaßt
der Finalautomat-Kodierer der vorliegenden Erfindung einen B-Kodierer, der in dem US-
Patent Nr. 5,272,478 festgelegt ist, das den Titel "Method and Apparatus for Entropy
Coding" hat und am 21. Dezember 1993 herausgegeben worden ist.
Bei einer Ausführungsform umfaßt der binäre Entropie-Kodierer der vorliegenden
Erfindung einen Hochgeschwindigkeits-Parallel-Kodierer. Sowohl der QM-Kodierer als
auch der FSM-Kodierer erfordert, daß ein Bit zu einer Zeit kodiert oder dekodiert wird.
Der Hochgeschwindigkeits-Parallel-Kodierer kann verschiedene Bits parallel handhaben.
Bei einer Ausführungsform ist der Hochgeschwindigkeits-Parallel-Kodierer in VLSI-
Hardware oder Multi-Prozessor-Computern implementiert, ohne dies mit einem Verlust
an Kompressionsleistung zu erkaufen. Eine Ausführungsform eines
Hochgeschwindigkeits-Parallel-Kodierers, die in der vorliegenden Erfindung verwendet
werden kann, ist in dem US-Patent Nr. 5,381,145 beschrieben, das mit dem Titel "Method
and Apparatus for Parallel Decoding and Encoding of Data" versehen ist und das am 10.
Januar 1995 herausgegeben wurde.
Effizientere binäre Entropie-Kodierer sind bezüglich der Geschwindigkeit durch
fundamentale Rückkopplungs-Schleifen beschränkt. Eine mögliche Lösung liegt darin,
den hereinkommenden Datenstrom in mehrere Ströme aufzuteilen und diese in parallele
Kodierer einzuführen. Bei der Ausgabe der Kodierer handelt es sich um mehrere Ströme
von kodierten Daten variabler Länge. Ein Problem bei dieser Art von Annäherung bzw.
bei diesem Lösungsansatz ist es, wie die Daten auf einem einzigen Kanal zu übertragen
sind. Der Hochgeschwindigkeits-Parallel-Kodierer, der im US-Patent Nr. 5,381,145
beschrieben ist, löst dieses Problem mit einem Verfahren des Ineinanderschachtelns dieser
kodierten Datenströme bzw. mit einem "Interleave"-Verfahren.
Viele der Kontexte, die bei der vorliegenden Erfindung verwendet werden, haben eine
feste Wahrscheinlichkeit, die einen Finalautomat-Kodierer ("finite state machine coder"
bzw. Kodierer vom Typ des endlichen (Zustands-)Automaten), wie zum Beispiel den
B-Kodierer besonders nützlich machen. Bemerkenswerterweise arbeiten, wenn ein System
Wahrscheinlichkeiten nahe bei 0,5 nutzt, sowohl der Hochgeschwindigkeits-Parallel-
Kodierer, der oben offenbart ist, als auch der Finalautomat-Kodierer effizienter als der
Q-Kodierer. Somit weisen beide einen potentiellen Kompressionsvorteil mit dem Kontext-
Modell der vorliegenden Erfindung 99999 00070 552 001000280000000200012000285919988800040 0002019626615 00004 99880 auf.
Die folgenden Flußdiagramme, Fig. 13-15, zeigen eine Ausführungsform des Kodier-
und Dekodier-Prozesses der vorliegenden Erfindung. Diese Prozesse können in Software
oder mit Hardware ausgeführt werden. In beiden Fällen wurde auf die Verarbeitungslogik
verwiesen, die beide darstellen kann.
Fig. 13 zeigt eine Ausführungsform des Kodier-Prozesses der vorliegenden Erfindung.
Bezugnehmend auf Fig. 13 beginnt der Kodierprozeß, indem er eine Verarbeitungslogik
aufweist, die Eingangsdaten für eine Kodiereinheit (Verarbeitungsblock 1301) erfaßt.
Danach wendet die Verarbeitungslogik reversible Filter bzw. einen reversiblen Filter auf
die Eingangs-Daten-Einheit der Kodier-Einheit (Verarbeitungsblock 1302) an.
Ein Test bestimmt dann, ob ein anderes Niveau der Zerlegung gewünscht wird
(Verarbeitungsblock 1303), falls dem so ist, wendet die Verarbeitungslogik den
reversiblen Filter auf alle LL-Koeffizienten an (Verarbeitungsblock 1304) und der Prozeß
durchläuft eine Rückschleife und fährt beim Verarbeitungsblock 1303 fort. Falls ein
anderes Niveau der Zerlegung nicht gewünscht wird, schreitet die Verarbeitung bei dem
Verarbeitungsblock 1305 fort, wo die Verarbeitungslogik die Koeffizienten in die
Vorzeichen/Betrag-Form umwandelt.
Nach der Umwandlung der Koeffizienten in die Vorzeichen/Betrag-Form wird eine Bit-
Ebenen-Variable S auf die höchstwertige Bit-Ebene gesetzt (Verarbeitungsblock 1306).
Dann initialisiert die Verarbeitungslogik optional den Entropie-Kodierer
(Verarbeitungsblock 1307).
Wenn einmal der Entropie-Kodierer initialisiert worden ist, modelliert die
Verarbeitungslogik jedes Bits eines jeden Koeffizienten mit dem Kontext-Modell und
entropie-kodiert die Bits (Verarbeitungsblock 1308). Nach der Entropie-Kodierung des
Bits werden die Daten entweder übertragen oder gespeichert (Verarbeitungsblock 1309).
Danach bestimmt ein Test, ob es noch irgendwelche weiteren Kodier-Einheiten in dem
Bild gibt (Verarbeitungsblock 1310). Falls es weitere Kodier-Einheiten gibt, fährt die
Verarbeitung zu dem Verarbeitungsblock 1301 fort. Auf der anderen Seite, falls es keine
weiteren Kodier-Einheiten gibt, endet die Verarbeitung.
Fig. 14 zeigt eine Ausführungsform des Dekodier-Prozesses der vorliegenden Erfindung.
Nimmt man Bezug auf Fig. 14, so beginnt der Prozeß, indem die Verarbeitungslogik
kodierte Daten für eine Kodier-Einheit wiedergewinnt (Verarbeitungsblock 1401). Danach
wird eine Variable S auf die höchstwertige Bit-Ebene gesetzt (Verarbeitungsblock 1402).
Nach dem Setzen der Bit-Ebenen-Variable S auf die höchstwertige Bit-Ebene initialisiert
die Verarbeitungslogik optional den Entropie-Kodierer (Verarbeitungsblock 1403).
Nachdem der Entropie-Kodierer initialisiert worden ist, setzt die Verarbeitungslogik den
Anfangswert eines jeden Koeffizienten auf Null (Verarbeitungsblock 1404). Dann
modelliert die Verarbeitungslogik jedes Bits eines jeden Koeffizienten mit einem Kontext-
Modell und einem Entropie-Dekodierer (Verarbeitungsblock 1405) und konvertiert
Koeffizienten in die geeignete Form für das Filtern (Verarbeitungsblock 1406). Diese
Umwandlung kann von der Bitwertigkeit- in die Zweierkompliment-Form umwandeln.
Danach wendet die Verarbeitungslogik einen inversen Filter bzw. inverse Filter auf die
Koeffizienten an, und zwar beginnend mit dem höchsten Niveau der Zerlegung
(Verarbeitungsblock 1407).
Ein Test bestimmt dann, ob alle Niveaus invers gefiltert wurden (Verarbeitungsblock
1408). Falls alle Niveaus invers gefiltert wurden, wendet die Verarbeitungslogik die
inversen Filter bzw. das inverse Filter auf die Koeffizienten von dem nächst höchsten
Niveau der Zerlegung an (Verarbeitungsblock 1409) und die Verarbeitung schreitet bei
dem Verarbeitungsblock 1408 fort. Falls alle Niveaus invers gefiltert worden sind,
schreitet die Verarbeitung bei dem Verarbeitungsblock 1410 fort, wo die rekonstruierten
Daten entweder gespeichert oder übertragen werden. Nach dem Speichern der
übertragenen rekonstruierten Daten bestimmt ein Test, ob es mehr Kodiereinheiten gibt
(Verarbeitungsblock 1411). Falls es mehr Kodiereinheiten gibt, durchläuft die
Verarbeitung eine Rückschleife und schreitet beim Verarbeitungsblock 1401 fort, wo
der Prozeß wiederholt wird. Falls es keine weiteren Kodier-Einheiten gibt, endet der
Prozeß.
Fig. 15 zeigt eine Ausführungsform des Prozesses zur Modellierung von Bits gemäß
der vorliegenden Erfindung. Nimmt man Bezug auf Fig. 15, so beginnt der Prozeß zur
Modellierung von Bits beim Setzen bzw. Einstellen einer Koeffizienten-Variablen C auf
den ersten Koeffizienten (Verarbeitungsblock 1501). Dann bestimmt ein Test, ob |c| < 2S.
Falls ja, schreitet die Verarbeitung bei dem Verarbeitungsblock 1503 fort, wo die
Verarbeitungslogik das Bit S des Koeffizienten C kodiert, indem das Modell für die Tail-
Bits verwendet wird, und die Verarbeitung wird beim Verarbeitungsblock 1508
fortgesetzt. Das Modell für die Tail-Bits kann ein stationäres (nicht-adaptives) Modell
sein. Falls |c| nicht größer ist als 2S, dann schreitet die Verarbeitung bei dem
Verarbeitungsblock 1504 fort, wo die Verarbeitungslogik eine Schablone für Head-Bits
(d. h. die anfänglichen Nullen und das erste Bit auf "1") anwendet. Nach dem Anwenden
der Schablone kodiert die Verarbeitungslogik das Bit S des Koeffizienten C
(Verarbeitungsblock 1505). Mögliche Schablonen sind in den Fig. 26A-C gezeigt.
Schablonen können mit LUTs implementiert werden, wie in den Fig. 19A und 19B
gezeigt.
Als nächstes bestimmt ein Test, ob das Bit S des Koeffizienten C ein ist (Verarbeitungs
block 1506). Falls das Bit S des Koeffizienten C ein ist, schreitet die Verarbeitung bei
dem Verarbeitungsblock 1508 fort. Auf der anderen Seite, falls das Bit S des
Koeffizienten C ein ist, schreitet die Verarbeitung bei dem Verarbeitungsblock 1507 fort,
wo die Verarbeitungslogik das Vorzeichen-Bit kodiert. Danach läuft die Verarbeitung
bei dem Verarbeitungsblock 1508 weiter.
Bei dem Verarbeitungsblock 1508 bestimmt ein Test, ob der Koeffizient C der letzte
Koeffizient ist. Falls der Koeffizient C nicht der letzte Koeffizient ist, schreitet die
Verarbeitung bei dem Verarbeitungsblock 1509 fort, wo die Koeffizienten-Variable C
auf den nächsten Koeffizienten gesetzt wird und die Verarbeitung schreitet bei dem
Verarbeitungsblock 1502 fort. Auf der anderen Seite, falls der Koeffizient C der letzte
Koeffizient ist, schreitet die Verarbeitung bei dem Verarbeitungsblock 1510 fort, wo ein
Test bestimmt, ob S die letzte Bit-Ebene ist, falls S die letzte Bit-Ebene ist, wird die Bit-
Ebene-Variable S um 1 dekrementiert (Verarbeitungsblock 1511) und die Verarbeitung
schreitet bei dem Verarbeitungsblock 1501 fort. Falls S die letzte Bit-Ebene ist, endet
die Verarbeitung.
Die vorliegende Erfindung kann in Hardware und/oder Software implementiert werden.
Eine Hardware-Implementation der vorliegenden Erfindung erfordert eine Implementation
der Wavelet-Filter, Speicher/Daten-Fluß-Management, um die Daten für die Filter zu
liefern, ein Kontext-Modell, um das eingebettete Kodieren der vorliegenden Erfindung
zu steuern, ein Speicher/Daten-Fluß-Management, um die Daten für das Kontext-Modell
zu liefern, und einen binären Entropie-Kodierer.
Eine Ausführungsform der Vorwärts-Wavelet-Filter der vorliegenden Erfindung ist in
Fig. 16 gezeigt. Das Wavelet-Filter, das in Fig. 16 gezeigt ist, nimmt 4 16-Bit-Zweier
kompliment-Eingangspixel, gezeigt als x(2)-x(5) auf.
Nimmt man nun Bezug auf Fig. 16, so verwendet der Zwei-Abgriff-"11"-Tiefpaß-Filter
einen 16-Bit-Addierer 1601. Die Ausgänge werden jeweilig S und D genannt. Der
Ausgang des Addierers (S) wird auf 16-Bits abgeschnitten, indem ein Verschiebe-um-1-
Block 1603 verwendet wird. Der Verschiebe-um-1-Block 1603 führt eine Dividier-durch-
2-Funktion durch das Verschieben seines 17-Bit-Eingangs zu dem rechten Bit durch.
Der Sechs-Abgriff-"-1-1 8-8 1 1"-Hochpaß-Filter erfordert die Berechnung von -S₀+
4D₁ + S₂. Die Funktion S₂-S₀ wird mit dem 16-Bit-Subtrahierer 1605 berechnet, der den
Ausgang des Schiebe-um-1-Blocks 1603 und das Y₀(0) empfängt. Der 4D₁-Term wird
berechnet, indem der Subtrahierer 1602, der Schiebe-um-2-Block 1604 und der Addierer
1608 verwendet wird. Der Ausgang, der durch den 16-Bit-Subtrahierer 1602 erzeugt wird,
wird nach links um zwei Plätze durch den Schiebe-um-2-Block 1604 verschoben,
wodurch eine effektive Multiplikation seines Ausgangs um vier erfolgt. Der Ausgang
des Blockes 1604 wird durch des Addierer 1608 zu 2 addiert. Bemerkenswert ist, daß
wegen der Verschiebung um 2 der Addierer 1608 durch eine Verdrahtung ersetzt werden
kann. Die Addition des 4D₁-Ausgangs von dem Addierer 1608 zu dem Ausgang des
Substrahlerers 1605 wird durch den 20-Bit-Addierer 1606 durchgeführt. Der Ausgang
bzw. die Ausgabe des Addierers 1606 wird auf 18 Bits abgeschnitten, indem ein Schiebe
um-2-Block 1607 verwendet wird. Der Schiebe-um-2-Block 1607 führt eine Dividier-um-
4-Funktion durch, indem sein 20-Bit-Eingang um zwei Bits nach rechts verschoben wird.
Somit lautet die gesamte erforderliche Berechnungs-Hardware (ohne Berücksichtigung
von Registern zur Speicherung temporärer Ergebnisse):
- - 1@16-Bit-Addierer,
- - 2@16-Bit-Subtrahierer,
- - 1@19-Bit-Addierer.
Bemerkenswert ist, daß die Verschiebung (und der Addierer 1608) mittels der
Verdrahtung durchgeführt wird, so daß keine Logik erforderlich ist.
Bei anderen Ausführungsformen kann für Eingänge der Größe N ein N-Bit-Addierer,
zwei N-Bit-Subtrahierer und ein (N+3)-Bit-Addierer verwendet werden.
Aufgrund der extrem geringen Hardware-Kosten dieser Addierer-Subtrahierer können
parallele Implementationen der Filter verwendet werden, falls dies erwünscht ist.
Es ist zu bemerken, daß alternativ, anstelle einer Subtraktion von X(3) und X(2), X(4)-
X(5) berechnet und gesichert werden kann, bis es später als X(2)-X(3) für die nächste
Verschiebung oder Anwendung des Filters benötigt wird. Sowohl der Vorwärts-Filter
(als auch der inverse Filter, der unten beschrieben ist) kann "gepipelined" bzw. im
Pipelinesystem verarbeitet werden, um einen höheren Durchsatz zu erzielen.
Der inverse Wavelet-Filter ist in Fig. 17 gezeigt. Die Eingänge von Y₀(0) und Y₀(2)
werden durch den Subtrahierer 1701 subtrahiert. Zwei (2) wird zu dem Ausgang des
Subtrahierers 1701 durch den Addierer 1709 addiert. Das Ergebnis der Addition wird
um zwei Bits nach rechts durch den Schiebe-um-2-Block 1702 verschoben. Dies dividiert
effektiv den Ausgang des Subtrahierers durch 4. Eine Subtraktion wird zwischen dem
Ausgang des Schiebe-um-2-Blockes 1704 und dem Y₁(0)-Eingang durchgeführt. Der
Eingang Y₀(1) wird um ein Bit nach links durch den Schiebe-um-1-Block 1703
verschoben, wodurch der Eingang mit zwei multipliziert wird. Nachdem Y₀(1) um 1
verschoben (um zwei multipliziert) wurde, ist das LSB des verschobenen Wertes das LSB,
das von dem Ausgang des Subtrahierers 1704 genommen wird und mit dem 16-Bit-
Ausgang von dem Schiebe-um-1-Block 1703 kombiniert wird, um einen Eingang für den
Addierer 1705 und Subtrahierer 1706 auszubilden. Der andere Eingang für den Addierer
1705 und Subtrahierer 1706 ist der Ausgang des Subtrahierer 1704. Die Ausgänge des
Addierers 1705 und Subtrahierer 1706 können nachfolgend einer Abschneidung
unterzogen werden.
Eine Auswahl von zwei Abschneide-Operationen kann verwendet werden. In beiden
Fällen wird der 20-Bit-Wert um 1 verschoben (durch 2 dividiert), und zwar zu einem 19-
Bit-Wert. Bezüglich eines Systems, das nur verlustfreie Kompression durchführt, können
die niedrigstwertigen 16-Bits ausgegeben werden (die übrigen 3 Bits können ignoriert
werden). In einem verlustbehafteten System (oder einem verlustbehafteten/verlustfreien
System), wird der 19-Bit-Wert auf 0 gesetzt, falls er negativ ist, oder auf 2¹⁶-1 gesetzt,
falls er größer ist als 2¹⁶-1; ansonsten können die niedrigstwertigen 16-Bits ausgegeben
werden.
Bezüglich Eingänge der Größe N Bits, kann ein N-Bit-Subtrahierer, ein (N+1)-Bit-
Addierer, ein (N+2)-Bit-Subtrahierer, ein (N+3)-Bit-Addierer und ein (N+3)-Bit-
Subtrahierer verwendet werden, und die Abschneide-Einheit gibt N Bits aus.
Bei einer Ausführungsform der Wavelet-Transformation wird die Monte-Carlo-Division
bei den Transformations-Berechnungen verwendet, bei welcher ein Pseudo-
Zufallsgenerator verwendet wird und basierend auf seinem Ausgang werden die
Ergebnisse der Transformation-Operation entweder aufgerundet oder abgerundet. Eine
derartige Implementation kann verwendet werden, solange ein Dekodierer von dem
Runden weiß, das durchgeführt wird (d. h. daß er denselben Zufallsgenerator beginnend
bei demselben Punkt verwendet).
Betreffend das Speicher- und Datenfluß-Management für die Wavelet-Filter der
vorliegenden Erfindung bezüglich Bilder, wo ein voller Rahmen bzw. Frame in den
Speicher paßt, ist Speicher/Datenfluß-Management kein schwieriges Thema. Selbst für
1024 X 1024-16-Bit-Medizin-Bilder (z. B. 2 Mbytes in Größe) ist das Erfordernis eines
vollen Frame-Puffers für viele Applikationen vernünftig. Für größere Bilder (z. B. haben
A4, 400 DPI 4-Farb-Bilder eine Größe von ungefähr 50 Mbytes) ist die Durchführung
der Wavelet-Transformation mit einer beschränkten Menge an Zeilen-Puffer-Speicher
wünschenswert.
Bemerkenswert ist, daß ein voller Frame-Puffer für die vorliegende Erfindung nicht
notwendig ist, um ein Ein-Durchgangs-System bzw. ein One-Pass-System zu
implementieren. Deswegen kann der erforderliche Speicher um etwa einen Faktor 100,
(im Vergleich zur Verwendung eines vollen Frame-Puffers für große Bilder) reduziert
werden. Das Ein-Durchgangs-System (im folgenden "One-Pass-System" genannt) der
vorliegenden Erfindung wird später beschrieben.
Die Daten, die in dem Filter-Speicher gespeichert werden, sind eine Reihe von
Koeffizienten, die dem eingebetteten Kodieren und dem binären Entropie-Kodieren
unterworfen sind. Das eingebettete Kodieren verwendet ein Kontext-Modell, um die
Verwendung von Horizont-Kodieren zu koordinieren und um Daten in der geeigneten
Ordnung zu liefern. Das Kontext-Modell arbeitet in Verbindung mit einem Speicher-
Management-Schema. Betreffend Systeme mit einem vollen Frame-Puffer ist die
Bereitstellung von Daten in der geeigneten bzw. richtigen Ordnung nicht schwierig.
Betreffend Systeme mit einer endlichen Menge an Arbeitsraum-Speicher werden bei einer
Ausführungsform verschiedene Höhen-Transformationen verwendet, um die Anzahl der
Arbeitsraum-Zeilen des Speichers, die zur Speicherung benötigt werden, zu verringern.
Somit, falls man auf ein umfangreicheres Bild stößt bzw. einem solchen begegnet, kann
es wirksam mit dem zugeteilten Arbeitsraum-Speicher bzw. Arbeitsspeicher komprimiert
werden. Zum Beispiel kann die S-Transformation vertikal verwendet werden, um die
Anzahl der Zeilen zu verringern.
Speicher wird benötigt, um Raster-Daten zu puffern, so daß eine Wavelet-Transformation
durchgeführt werden kann. Bei einigen Anwendungen ist die Minimierung dieses
Speichers wichtig, um Kosten zu verringern. Eine Technik, um dies zu bewerkstelligen,
wird unten beschrieben.
Eine Ausführungsform der Wavelet-2-D-Transformation, die hierin beschrieben ist, ist
für eine One-Pass-Implementation und beschränkte Speichernutzung ausgestaltet. Bei
einer Ausführungsform handelt es sich bei den Wavelet-Transformationen, die
angewendet werden, um die pyramidale Zerlegung zu erzielen, nur um TS- und S-
Transformationen. Bei dieser Ausführungsform gibt es vier Niveaus separierbarer
pyramidaler Zerlegungen. Bei einer Ausführungsform wird eine Vier-Niveau-Zerlegung
durchgeführt, indem die S- und TS-Transformationen verwendet werden. Bei einer
Ausführungsform wird bei der horizontalen (zeilenweisen) Zerlegung nur die TS-
Transformation verwendet, d. h. die horizontale Zerlegung ist aus TS-TS-TS-TS gebildet.
Bei der vertikalen (spaltenweisen) Zerlegung werden sowohl die S-Transformation als
auch die TS-Transformation in der Gestalt von TS-TS-S-S verwendet. Zwei der TS-
Transformationen werden durch eine S-Transformation unter geringen Kosten bezüglich
der Kompression, aber wesentlichen Einfluß auf die Speichernutzung ersetzt. Die
horizontalen und vertikalen Transformationen werden wie üblich alternativ angewendet
(Fig. 20).
Bemerkenswert ist, daß jegliche Kombination der S- und TS-Transformationen verwendet
werden kann,um die horizontalen und vertikalen Transformationen zu implementieren.
Bemerkenswert ist, daß, obwohl die Ordnungen der Transformationen gemischt werden
können, der Dekodierer die Ordnung wissen muß und eine reverse Operation in der
reversen Ordnung durchführen muß, um voll reversibel zu sein.
Bei einem pyramidalen System können die Koeffizienten in Sätze gruppiert werden,
indem eine Baum-Struktur verwendet wird. Wurzel eines jeden Baums ist ein reiner
Tiefpaß-Koeffizient. Fig. 6 zeigt die Baumstruktur eines reinen Tiefpaß-Koeffizienten
des transformierten Bildes. Für ein zweidimensionales Signal, wie zum Beispiel ein Bild,
hat die Wurzel des Baums drei "Kinder" und von dem Rest der Knoten hat jeder vier
Kinder. Der Baum ist hierarchisch nicht auf zweidimensionale Signale beschränkt. Zum
Beispiel hat eine Wurzel ein Kind für ein eindimensionales Signal und Nicht- Wurzel-
Knoten haben jeweils zwei Kinder. Höhere Dimensionen folgen aus den eindimensionalen
und zweidimensionalen Fällen.
Die Baumstruktur wird ebenso aus der Operation der Filter ersichtlich, die in den Fig.
7 bis 9 gezeigt sind. Die Operation des Paars von Filtern mit Unterabtastung verursacht
das Inbeziehungsetzen der zuvor beschriebenen Koeffizienten.
Bei einer anderen Ausführungsform werden die Koeffizienten in einem gemäß
Bitwertigkeit oder gemäß Bit-Ebenen eingebetteten System kodiert. Da die Koeffizienten
von den höchstwertigen Bit-Ebenen zu den niedrigstwertigen Bitebenen kodiert werden,
muß die Anzahl der Bit-Ebenen in den Daten bestimmt werden. Bei der vorliegenden
Erfindung wird dies bewerkstelligt, indem eine obere Grenze bezüglich der Beträge der
Koeffizienten-Werte gefunden wird, die aus den Daten berechnet wird oder aus der Tiefe
des Bildes und der Filter-Koeffizienten abgeleitet wird. Zum Beispiel, falls die obere
Grenze 149 beträgt, gibt es dann 8 Bits an Wertigkeit bzw. Signifikanz oder 8 Bit-Ebenen.
Zur Schnelligkeit bei der Software, kann Bit-Ebenen-Kodieren verwendet werden. Bei
einer alternativen Ausführungsform wird eine Bit-Ebene kodiert, nur wenn ein Koeffizient
als eine binäre Zahl signifikant wird.
Bei einer Ausführungsform umfaßt das Horizontal-Kontext-Modell der vorliegenden
Erfindung die Bit-Wertigkeit-eingebettete Kodierung bzw. die gemäß Bit-Wertigkeit
eingebettete Kodierung der Wavelet-Koeffizienten, die in einen binären Entropie-Kodierer
eingeführt wird.
Wenn einmal die Zerlegung vollendet worden ist und die Daten-Koeffizienten geordnet
wurden, wird das Kontext-Modell der vorliegenden Erfindung verwendet, um die
Koeffizienten zu kodieren. Es gibt verschiedene Kontext-Modelle, die verwendet werden
können. Entscheidungen können von dem räumlichen Ort, den Niveau und/oder der
Bitposition abhängig gemacht werden bzw. dadurch bedingt werden. Entscheidungen
können ebenso von zuvor dekodierten Daten abhängig gemacht werden bzw. durch diese
bedingt werden, die nahe an den gegenwärtigen Daten bezüglich ihres räumlichen Orts,
ihres Niveaus und/oder ihrer Bitposition sind.
Einige Beispiele lauten wie folgt. Das höchstwertige Tail-Bit (und deshalb am einfachsten
vorhergesagt) könnte einen anderen Kontext verwenden, als der Rest der Tail-Bits. Head-
Bits können von demselben Bit für räumlich naheliegende vorhergehende Koeffizienten
auf demselben Transformations-Niveau abhängig gemacht werden bzw. dadurch
konditioniert werden. In ähnlicher Weise können die Vorzeichenbits für signifikante
Koeffizienten von dem Vorzeichen der räumlich naheliegenden vorhergehenden
Koeffizienten auf demselben Niveau oder dem Vorzeichen des Koeffizienten der Mutter
abhängig gemacht werden bzw. dadurch konditioniert werden.
Kontext-Modell-Verbesserungen können insbesondere wichtig sein, wenn Bilder
komprimiert werden, die eine räumliche oder Multi-Auflösungs-Struktur aufweisen.
Graustufungen von Strichzeichnungen oder Text sind ein Beispiel für Bilder mit beiden
Strukturarten. Verbesserungen sind ebenso wichtig für die Komprimierung von Dateien,
die bereits mit einem bestimmten Spitzen-Fehler bzw. Peak-Fehler komprimiert und
dekomprimiert werden mußten.
Wenn die vorliegende Erfindung in Software ausgeführt wird, wird viel Zeit verbraucht,
um Bits für Kontexte zu erhalten, weil die Bits für die Konditionierung bzw. zur
Anpassung an Bedingungen (z. B. jedes Head-Bit) benötigt werden. Bei einer
Ausführungsform der vorliegenden Erfindung kann eine Software-Implementation
beschleunigt werden indem Nachschlagtabellen (LUTs für "look-up tables") verwendet
werden. Dies vermeidet getrennte Bit-Extraktions-Operationen für die Nord- (N),
Nordwest- (NW), West- (W) und Südwest- (SW)Pixel zu vermeiden, die als Kontexte
verwendet werden.
Fig. 19A und 19B zeigen einen Zustands-Automat für Head-Bit-Konditionierung bei
der vorliegenden Erfindung. Nimmt man Bezug auf Fig. 19A, so ist eine LUT 1901 für
eine neue Mutter gezeigt, die mit einem Kodier/Dekodier-Block 1902 verbunden ist. Die
LUT 1901 ist angeschlossen bzw. verbunden, um Bits zu empfangen, die auf eine Mutter
hinweisen bzw. von dieser stammen, und Bits, die die oberen (NE) Koeffizienten, die
aktuellen (E) Koeffizienten und die Koeffizienten unten (S) darstellen. Bei einer
Ausführungsform weist der Mutter-Eingang und der aktuelle bzw. gegenwärtige Eingang
jeweils zwei Bits auf. Andere Eingänge zu der LUT 1901 beinhalten alle oder Teile des
Kontext-Ausganges von der LUT 1901 und den Ausgang des Kodier/Dekodier-Blocks
1902 als Rückkopplung. Bei einer Ausführungsform werden 8 von 10 Bits, die als ein
Kontext durch die LUT 1901 ausgegeben werden, zu einem Eingang der LUT 1901
zurückgeführt.
Die NE, E und S Koeffizienten werden verwendet, weil sie die führenden Kanten bzw.
Enden der Schabloneninformation darstellen, die Koeffizienten-Information umfaßt, die
mit den vorherigen Bit-Ebenen verbunden ist. Bemerkenswert ist, daß die Südost- ("SE
für Southeast")Koeffizienten anstelle der Süd- (S)Koeffizienten verwendet werden
können.
Bei einer Ausführungsform, falls die Schablone außerhalb der Kodier-Einheit ist, können
die Außerhalb-Konditionierungs-Bits durch die Bits von dem aktuellen bzw.
gegenwärtigen Pixel ersetzt werden.
Fig. 19B zeigt eine Zustands-Maschinen-Konditionierung, die eine LUT für dieselbe
Mutter verwendet. In einem derartigen Fall wird der gesamte Kontext als ein Eingang
zur der LUT 1903 zurückgeführt.
Dort, wo die Daten in Raster-Ordnung verarbeitet werden, verringert die Verwendung
einer LUT die Anzahl der Speicherzugriffe, da derselbe Speicher, der zur Erzeugung des
letzten Kontext verwendet wird, nicht erneut geladen werden muß.
Um die Größe des LUT-Speichers zu verringern, kann alternativ die Mutter-
Konditionierung separat durchgeführt werden, und zwar durch eine ODER-Verknüpfung
mit dem Ausgang eines LUT, der nur die andere Konditionierung handhabt.
Eine etwas größere LUT kann ebenso einen Großteil der Konditionierung für die nächste
Bit-Ebene bereitstellen. Eine etwas kleinere LUT könnte die Zustands-Informationen von
der aktuellen Kontext-LUT übernehmen und sie mit den neu verfügbaren Daten aus der
nächsten Bit-Ebene kombinieren. Dies kann besonders nützlich sein, wenn ein Baum zu
einer Zeit kodiert wird.
Wie oben bezüglich der vorliegenden Erfindung beschrieben, kann "effizient" bzw.
"wirksam" definiert werden, zu bedeuten, daß die Transformation eine Determinante von
1 aufweist. In einem solchen Fall wird Kode-Raum nicht vergeudet, indem Raum
aufgespart wird, um Ereignisse geringer Wahrscheinlichkeit zu kodieren, wenn die geringe
Wahrscheinlichkeit null ist. Jedoch werden 8-Bit-Koeffizienten weiterhin eingegeben
und erzeugen einen 8-Bit-Koeffizienten und einen 9-Bit-Koeffizienten. Deshalb kann
die Wirksamkeit weiterhin verbessert werden. Die hinzugefügte Ineffizienz ist auf die
Rotation des Raumes möglicher Koeffizienten zurückzuführen.
Es sollte bemerkt werden, daß gewisse Ergebnisse der Transformations-Operationen
einzig Zahlen identifizieren, die bei den Berechnungen verwendet werden. Dies tritt auf,
wenn die Ergebnisse nahe der Grenzen jener Bereiche bzw. Spannen möglicher
Ergebnisse liegen. Dies wird beispielhaft durch die Fig. 18 gezeigt, worin u den Tiefpaß
und v den Hochpaß darstellt. Weil die Werte von u und v nicht unabhängig sind, können
diese Zahlen leichter entropie-kodierbar sein, wobei Gesamt-Information mit
berücksichtigt wird. Dies liegt daran, daß, wie in der Fig. 18 gezeigt, für die meisten
Tiefpaß-Werte etwas Kode-Raum für den Hochpaß nicht verwendet wird. Bei vielen
Anwendungen gibt es wenig Vorteile, da die Wahrscheinlichkeit, die diesen unmöglichen
Paaren zugeordnet ist, gering ist. Jedoch mag es in manchen Applikationen einen
wertvollen Gewinn geben. Um die Operationen zu beschleunigen, können mehr Bits der
LL-Koeffizienten vor den LH-, HL- und HH-Koeffizienten gesendet werden. Dies kann
das Begrenzen leichter machen.
Bei manchen Ausführungsformen wird, nachdem jede Kodiereinheit kodiert worden ist,
alles zurückgesetzt bzw. neu eingestellt, alle Statistiken und Wahrscheinlichkeiten werden
zurückgesetzt bzw. neu eingestellt, wenn die zweite Einheit kodiert wird. Bei einer
Ausführungsform werden manche der Statistiken oder alle gesichert. Diese wirken dann
als die Anfangs-Statistiken, wenn das Kodieren einer späteren Kodiereinheit beginnt. Bei
einer Ausführungsform werden die Statistiken bei einem vorbestimmten Punkt in der
Kodierung der ersten oder vorhergehenden Kodiereinheit gesichert. Zum Beispiel werden
nach der Kodierung der dritten Bit-Ebene, die Statistiken, die bei der Kodierung der
aktuellen Kodiereinheit verwendet werden, gesichert und wirken als die Statistiken für
den Anfang des Kodierens der folgenden Kodiereinheit oder einer späteren Kodiereinheit.
Bei anderen Ausführungsformen werden die Klassen aller Bilder berechnet und ein hart
kodierter Satz von Statistiken wird bestimmt. Dann wird das Kodieren durchgeführt,
indem diese hart-kodierten Statistiken als ein Default bzw. als eine Voreinstellung
verwendet werden. Bei anderen Ausführungsformen werden Statistiken für jede Bit-Ebene
gesichert, so daß die Statistiken verwendet werden, wenn in der ähnlichen Bit-Ebene in
einem anderen Element bzw. einem anderen "Tile" kodiert wird.
Bei einer anderen Ausführungsform wird bis zu dem ersten Eins-Bit nicht kodiert. Beim
Auftreten des erste Eins-Bits in dem Koeffizienten wird das Vorzeichen kodiert. Obwohl
die Head-Bits von dem Bild/der Region abhängen, sind die Tail-Bits über verschiedene
Bilder und Regionen gleichförmiger. Basierend darauf, wie weit weg die Tail-Bits von
dem anfänglichen Eins-Bit (in dem Head-Bit) sind, werden gewisse Wahrscheinlichkeits-
Massen verwendet, um die Bits in dem Tail zu kodieren. Bei einer Ausführungsform wird
das erste Tail-Bit in einem Koeffizienten kodiert, und zwar mit einer Wahrscheinlichkeits
klasse, die 0,7 einschließt. Die zweiten und dritten Tail-Bits werden mit einer
Wahrscheinlichkeitsklasse kodiert, die 0,6 einschließt. Zuletzt werden die vierten und
fünften Tail-Bits mit Wahrscheinlichkeitsklassen kodiert, die 0,5 einschließen.
Bei einem One-Pass-System bzw. Ein-Durchlauf-System ist die durchgeführte Wavelet-
Transformation ein Kompromiß zwischen der Kompressions-Leistungsfähigkeit und dem
Umfang des verwendeten Speichers. Die Kodiereinheit-Größe wird für die geringste
Speicher-Verwendung mit den wenigsten Zeilen-Puffern ausgewählt (unter der Annahme,
daß das Bild in Rasterordnung geliefert wird). Die zwischenliegenden Koeffizienten der
Wavelet-Transformation werden in demselben Speicher gespeichert, wobei der Eingang
in geeigneter Weise ersetzt wird.
Die Wavelet 2-D-Transformation, die hierin beschrieben ist, ist für eine One-Pass-
Implementation und beschränkter Speicher-Verwendung ausgestaltet. Es gibt vier Niveaus
für separierbare pyramidale Zerlegungen. Bei der horizontalen Zerlegung wird nur die
TS-Transformation verwendet, d. h. die horizontale Zerlegung wird aus TS-TS-TS-TS
gebildet. Bei der vertikalen Zerlegung wird sowohl die S-Transformation als auch die
TS-Transformation verwendet und die vertikale Zerlegung wird aus TS-TS-S-S gebildet.
Die horizontale und die vertikale Transformation werden alternativ angewandt. Fig.
20 zeigt die horizontale und die vertikale Zerlegung.
Zwei der TS-Transformationen werden durch eine S-Transformation unter geringen
Kosten für die verlustfreie Kompression, aber wesentlichen Einfluß auf die
Speicherverwendung ersetzt. Die Auswahl, die S-Transformation in den letzten zwei
vertikalen Durchgängen zu verwenden, dient nur dann, weniger Speicher zu verwenden.
Die Verwendung der S-Transformation spart ungefähr 32 Zeilen des Koeffizienten-Puffers
(z. B. hinunter von 48 Zeilen auf 16 Zeilen). Bemerkenswert ist, daß die Verwendung der
TS-Transformation für alle Zerlegungen eine bessere Kompressions-Leistungsfähigkeit
liefert.
Bei einer Ausführungsform ist die Kodiereinheit durch eine Zeile von Bäumen (eine Zeile
von LL-Koeffizienten und all ihren Abkömmlinge) festgelegt. Mit vier Niveaus der
Zerlegung impliziert dies, daß in dem Raum-Bereich eine Kodiereinheit 16 Zeilen durch
die Ausdehnung des Bildes ist. Fig. 21 zeigt eine Kodiereinheit. Bemerkenswert ist,
daß Fig. 21 nicht maßstäblich ist. Der Niveau-1-Block ist das Bild nach einer 2-D-
Zerlegung. Zur Wiederholung sei bemerkt, daß die Namen LL (tief-tief bzw. "low-low"),
LH (tief-hoch bzw. "low-high"), HL (hoch-tief bzw. "high-low") und HH (hoch-hoch
bzw. "high-high") verwendet werden, um einen Unterblock zu adressieren und auf alle
Blöcke des Niveaus-1-4 angewendet werden. Der Niveau-2-Block bzw. der Block des
Niveaus 2 ist ein Ergebnis der 2-D-Zerlegung des Unterblocks LL in dem Niveau-1-Block.
Ähnlich sind die Blöcke 3 bzw. 4 2-D-Zerlegungen der Unterblöcke LL in dem Niveau-2-
Block bzw. Niveau-3-Block.
Eine Kodiereinheit ist für die HR-, HL- und LH-Koeffizienten im Niveau 1 8 Zeilen hoch,
im Niveau 2 4 Zeilen hoch, in Niveau 3 2 Zeilen hoch und in Niveau 4 und dem LL-
Unterblock 1 Zeile. Bemerkenswert ist, daß, wenn die Auflösung mit jedem Schritt
abnimmt, sich die Länge, ebenso wie die Zahl der Reihen, halbiert. Jeder Koeffizient in
dem LL des Niveau-4-Blocks ist die oberste Mutter eines Baums.
Pufferung und Koeffizientenberechnung:
Um eine Kodiereinheit zu erzeugen, die in Fig. 21 beschrieben ist, kann ein Arbeitsraum-Puffer der Größe 2·w·m verwendet werden, wo w die Breite des Bildes ist und m die maximale Koeffizientengröße in Bits ist. Wegen der Natur der Wavelet-Filter, die für die vertikalen Transformations- (d. h. spaltenweise)Durchgänge gewählt wurden, liegt das Arbeitsraum-Speicher-Erfordernis bei ungefähr 18-20 Zeilen. Jeder horizontale Transformations- (d. h. reihenweiser) Durchgang, von denen jeder eine TS-Transformation ist, wird eine Zeile (Reihe) zu einer Zeit berechnet und die neuen Koeffizienten ersetzen die alten Koeffizienten oder Pixel.
Um eine Kodiereinheit zu erzeugen, die in Fig. 21 beschrieben ist, kann ein Arbeitsraum-Puffer der Größe 2·w·m verwendet werden, wo w die Breite des Bildes ist und m die maximale Koeffizientengröße in Bits ist. Wegen der Natur der Wavelet-Filter, die für die vertikalen Transformations- (d. h. spaltenweise)Durchgänge gewählt wurden, liegt das Arbeitsraum-Speicher-Erfordernis bei ungefähr 18-20 Zeilen. Jeder horizontale Transformations- (d. h. reihenweiser) Durchgang, von denen jeder eine TS-Transformation ist, wird eine Zeile (Reihe) zu einer Zeit berechnet und die neuen Koeffizienten ersetzen die alten Koeffizienten oder Pixel.
Die ersten zwei vertikalen Transformationsdurchgänge verwenden die TS-
Transformationsfilter. Wegen der Sechs-Abgriff-Hochpaß-Filter hängt jeder Hochpaß-
Koeffizient in dem vertikalen Durchgang von sechs Zeilen von entweder Pixel- oder
Koeffizientendaten ab. Ein erzeugter Hochpaß-TS-Koeffizient steht zu den obersten zwei
Zeilen mit vier darunterliegenden Zeilen für den Überlapp in Beziehung. Dies ist in Fig.
22 gezeigt. Nimmt man Bezug auf Fig. 22, so ist ein vertikales Bildsegment einer
Kodiereinheit gezeigt. Das vertikale Bildsegment der Kodiereinheit ist das Ergebnis des
Original-Bildes, das mittels eines horizontalen Durchganges der TS-Transformation
transformiert worden ist. Ein vertikales Niveau-1-Segment einer Kodiereinheit ist gezeigt
und ist die 2-D-Transformation ersten Niveaus des Bildes. Das vertikale Niveau-1-
Segment wird erhalten, indem ein horizontaler Durchgang mit einer TS-Transformation
durchgeführt wird. Ein vertikales Niveau-2-Segment einer Kodiereinheit ist ebenso
gezeigt und ergibt sich aus der Anwendung der TS-Transformation auf dem LL-
Unterblock des Niveau-1-Blocks auf beide Dimensionen.
Es sollte bemerkt werden, daß, da die TS-Transformation um vier Pixel (oder
Koeffizienten) überlappt ist, vier Zeilen von Daten werden an dem Ende einer
Kodiereinheit gesichert, die bei der Berechnung der Koeffizienten der nächsten
Kodiereinheit verwendet werden sollen. Mit anderen Worten zur Erzeugung der Niveau-1-
Koeffizienten werden zwei Extrazeilen von Pixels sowohl oben als unten benötigt oder
vier Extrazeilen werden unten benötigt. Um die Niveau-2-Koeffizienten zu erzeugen,
werden zwei Extrazeilen der Niveau-1-Koeffizienten benötigt, und zwar sowohl oben
als unten oder vier werden unten benötigt. Um diese Extraniveau-1-Koeffizienten zu
erzeugen, werden zwei Zeilen von Pixels sowohl oben als auch unten benötigt oder vier
werden unten gebraucht. Somit überspannt jede Kodiereinheit 28 vertikale Zeilen.
Wichtigerweise ist jedoch keine Extra-Berechnung erforderlich, um diese "Extra"-Niveau-
1-Koeffizienten zu erzeugen, da sie in den Kodiereinheiten oberhalb und unterhalb der
aktuellen bzw. gegenwärtigen benutzt werden. Bemerkenswert ist ebenso, daß nur 20
Zeilen des Speichers benötigt werden, weil nur die Niveau-2-Koeffizienten gespeichert
werden.
Die zwei abschließenden vertikalen Durchgänge sind. S-Transformationen, die keinen
Überlapp im Tiefpaß aufweisen und somit keine Extrazeilen benötigen.
Speicher für die Transformations-Berechnung:
Sind Pixelwerte oder Koeffizientenwerte der Größe b-Bits (in dem Bereich von -2b-1 . . ., 0, . . . 2b-1-1) gegeben, so sind die glatten Ausgänge bzw. Ausgaben, s(.), sowohl der S- Transformation als auch der TS-Transformation ebenso b-Bits. Mit anderen Worten, sie haben denselben Bereich bzw. dieselbe Spanne, wie der Eingang. Jedoch werden die eindimensionalen detaillierten Ausgaben, d(.), der S-Transformation bzw. der TS- Transformation b+1 bzw. b+2 Bits zum jeweiligen Ausdrücken einnehmen.
Sind Pixelwerte oder Koeffizientenwerte der Größe b-Bits (in dem Bereich von -2b-1 . . ., 0, . . . 2b-1-1) gegeben, so sind die glatten Ausgänge bzw. Ausgaben, s(.), sowohl der S- Transformation als auch der TS-Transformation ebenso b-Bits. Mit anderen Worten, sie haben denselben Bereich bzw. dieselbe Spanne, wie der Eingang. Jedoch werden die eindimensionalen detaillierten Ausgaben, d(.), der S-Transformation bzw. der TS- Transformation b+1 bzw. b+2 Bits zum jeweiligen Ausdrücken einnehmen.
Fig. 23 erläutert etwas von der Zeilen-Pufferung, die zusätzlich zu der Kodiereinheit
benötigt wird. Die grauen Bereiche und Pfeile sind die Koeffizienten, die einen Teil der
aktuellen Kodiereinheit sind und bezüglich derer das Sichern im Speicher für das aktuelle
bzw. gegenwärtige Kodieren nötig ist. Bei den gestrichelten Pfeilen handelt es sich um
die temporären Koeffizienten, die benötigt werden, um die Koeffizienten in der
Kodiereinheit zu berechnen. Diese werden durch die neuen Koeffizienten überschrieben.
Bei den durchgehenden Pfeilen handelt es sich um die Koeffizienten, die die
Nebenprodukte der Berechnung der aktuellen Kodiereinheit-Koeffizienten darstellen und
die gesichert werden, um einen Teil der nächsten Kodiereinheit zu bilden.
Das End-Niveau (Niveau 4) von Koeffizienten ist eine einzige Zeile in allen vier
Unterblöcken (LL, LH, HL, HH). Nimmt man nur Bezug auf die vertikale Transformation,
um das Niveau 4 aus dem Niveau 3 zu berechnen, so wird die S-Transformation
verwendet, so daß alle Unterblöcke nur zwei Zeilen von Koeffizienten in dem Niveau
3 benötigen. In ähnlicher Weise erfordert die Berechnung des Niveaus 3 aus dem Niveau
2 vier Zeilen von Koeffizienten in dem Niveau 2. All diese Koeffizienten sind Teil der
aktuellen Kodiereinheit.
Um die vertikalen Durchgänge des Niveaus 2 und 1 zu berechnen, wird die TS-
Transformation verwendet. Wegen der überlappten Natur der Sechs-Abgriffs-Hochpaß-
Überlappten-Filter erfordern diese Niveaus Daten von der nächsten Kodiereinheit. Diese
Daten werden verwendet, um die Koeffizienten in der aktuellen Kodiereinheit zu
berechnen und sie werden dann zur Verwendung in der nächsten Kodiereinheit
gespeichert.
Um die Hochpaß-Unterblöcke im Niveau 2 (LH, HH) vom Niveau 1 zu berechnen,
werden 12 Zeilen benötigt (8 Zeilen bis 4 Zeilen vom Hinunterabtasten und 4 Extrazeilen
für den Überlapp). Diese Zeilen sind in Tiefpaß-Unterblöcken des Niveaus 1 (LL, HL)
der Fig. 23 gezeigt, und zwar als die 8 Zeilen, die Teil der aktuellen Kodiereinheit sind
und vier Zeilen, die Teil der nächsten sind.
Um die 12 Zeilen in den Tiefpaß-Unterblöcken des Niveau 1 (LL, HL) zu berechnen,
werden 24 Zeilen vom Niveau 0 benötigt. Diese 24 Zeilen bei Niveau 0 können die 10
Zeilen in den Hochpaß-Unterblöcken des Niveau 1 erzeugen (16 Zeilen bis 8 Zeilen vom
Hinunterabtasten und 4 Extrazeilen für den Überlapp). Es ist am wirksamsten bzw.
effizientesten, alle 10 dieser Zeilen zu berechnen und sie bei Niveau 1 zu speichern, selbst
wenn nur 8 für die aktuelle bzw. gegenwärtige Kodiereinheit benötigt werden. Somit
brauchen nur die vier Extrazeilen, die für den Überlapp verwendet werden, bei Niveau
0 gespeichert zu werden.
Beginnend bei einem Bild einer Pixeltiefe von b für eine separierbare 2-D-Transformation
sind die Bereiche-bzw. die Spannen der Koeffizienten, für den Fall, daß sowohl Zeilen
als auch Spalten-Transformationen TS sind,jeweilig b, b+2, b+4 für LL-, HL-, LH-, HH-
(Fig. 12) Unterblöcke. Für den Fall, daß die separierbare 2-D-Transformation aus einer
horizontalen TS- und vertikalen S-Transformation besteht, sind die Bereiche bzw.
Spannen der Koeffizienten jeweilig b, b+1, b+2, b+3 für LL, HL, LH, HH. Die Tabellen
2, 3, 4, 5 und 6 erläutern die Berechnung für den Speicher, der für jeden Block benötigt
wird. Bemerkenswert ist, daß die Berechnung in Termen der Größe in Bits für ein Bild
der Breite w durchgeführt wird, und zwar eine für jeden Block:
Das Aufaddieren aller obigen Zahlen gleicht (26b + 55 7/8)·w Bits, was gerundet (26b +
56)·w Bits ergibt. Ein Zweizeilen-Berechnungs-Puffer der größten Größe, b + 4 Bits,
addiert 2·(b + 4)·w Bits, was zu Gesamtspeicherkosten von (28b + 64)·w Bits führt. Zum
Beispiel wird für ein 8-Bit 512-Pixel breites Bild 147.456 Bits oder ungefähr 18K Bytes
an Speicher benötigt.
Bei einer Ausführungsform wird die Größe der Transformation, basierend auf der
Ausdehnung des Bildes und der festen Größe des verfügbaren Speichers ausgewählt. Mit
anderen Worten, ein Bild einer Einzelheit kann in das System der vorliegenden Erfindung
eingegeben werden und aufgrund eines beschränkten Umfangs an verfügbaren
Transformations-Speicher wird die Anzahl der Niveaus der Zerlegung verringert. Falls
mehr Speicher verfügbar ist, wird dann die Zahl der Zerlegungs-Niveaus erhöht.
Bemerkenswert ist, daß dies dynamisch auftreten kann, wenn das Bild in das System
aufgenommen wird. Falls genügend Speicher verfügbar ist, werden die LL-Koeffizienten
durch Wavelet-Filter hindurch geführt, um das zusätzliche Niveau der Zerlegung
durchzuführen. Bemerkenswert ist, daß ein Effekt der Verringerung bzw. Erhöhung der
Anzahl der Niveaus es ist, den Umfang der Kompression, der erreicht werden kann, zu
verringern bzw. zu erhöhen.
Fig. 24A zeigt das Ordnen des Kodestroms und das Ordnen innerhalb einer
Kodiereinheit. Nimmt man Bezug auf Fig. 24A, so wird das Kopfteil bzw. der Header
2401 von der Kodiereinheit 2402 gefolgt, und zwar in der Reihenfolge von oben nach
unten. Innerhalb einer Kodiereinheit sind die LL-Koeffizienten 2403 in Raster-(Zeilen-)
Ordnung unkodiert. Den LL-Koeffizienten folgen entropie-kodierte Daten, und zwar eine
Bit-Ebene zu einer Zeit, und beginnend von der höchstwertigen Bit-Ebene zu der
niedrigstwertigen Bit-Ebene. Dann wird die erste Bit-Ebene von jedem Koeffizienten
kodiert, gefolgt von der zweiten Bit-Ebene, etc.
Bei einer Ausführungsform der vorliegenden Erfindung verwendet das Kontext-Modell
einen unnormalisierten 1 + Z-1 Tiefpaß-Filter. Jedoch kann das Kontext-Modell mit
normalisierten Filtern, wie zum Beispiel folgendem verwendet werden:
(1 +Z-1)√.
Um normalisierte Filter zu verwenden, kann eine Ausrichteinheit zwischen dem Vorwärts-
Wavelet-Filter 1600 und dem Kontext-Modell 105 verwendet werden, um bezüglich der
Energie, die von dem unnormalisierten Filter gewonnen (oder alternativ verloren) wurde,
zu kompensieren, was die Kompression verbessert. Da eine Ausrichtung nicht-
gleichförmige Quantisierung für verlustbehaftete Operationen erlaubt, kann eine
Ausrichtung die visuelle Qualität von verlustbehafteten Bild-Rekonstruktionen
verbessern. Im eindimensionalen Fall würden Koeffizienten von jedem Niveau des
Baumes verschiedene Ausrichtungen aufweisen (Divisoren = √√ Multiplikatoren
= 2√√). Im zweidimensionalen Fall wären die Divisoren 2,4,8,16 und die
Multiplikatoren wären 8,4,2,1.
Da die Ausrichtung nur zur Gruppierung ähnlicher binärer Entscheidungen für das
Kodieren da ist, ist die Verwendung des exakten Normalisierungswertes nicht kritisch.
Die Ausrichtung muß während der Dekodierung invertiert werden, so daß sowohl
Multiplikation als auch Division benötigt wird. Verwendet man Faktoren/Divisoren, die
Potenzen von 2 sind, würde dies statt dessen ermöglichen, daß eine hardware-effiziente
Verschiebung durchgeführt wird. Wenn Koeffizienten mit einem Faktor von zwei
multipliziert werden, müssen die weniger signifikanten bzw. wertigen Null-Bits, die
addiert werden, nicht kodiert werden.
Koeffizientenausrichtung kann zur Abstimmung und zur feineren und nicht
gleichförmigen Quantisierung verwendet werden. In dem Fall von Bildern
(zweidimensionalen Signalen) richtet eine Ausfürungsform der RTS-Transformation
die Koeffizienten aus, indem das Frequenzband mit der Zahl multipliziert wird, die in
Fig. 12B gezeigt ist. Die Multiplizierung dieser Zahlen führt dazu, daß die RTS-
Transformation eine sehr nahe Näherung der exakten Rekonstruktions-Wavelets der TS-
Transformation ist.
Diese One-Pass-Ausführung bzw. Ein-Durchgangs-Ausführung verwendet nur eine
Ausrichtung, die optimal bezüglich MSE für die Filter-Paarungen ist. Tabelle 7 zeigt die
Ausrichtungsnummern. Die Koeffizienten werden durch Bit-Wertigkeit kodiert, wo die
erste Bit-Ebene das am weitesten links liegende Betragsbit aller Koeffizienten ist. Das
Vorzeichen-Bit für jeden Koeffizienten wird nicht kodiert, und zwar bis zu der höchsten
Bit-Ebene, wo jener Koeffizient ein Betrags-Bit ungleich-null aufweist. Mit anderen
Worten wird das Betrags-Bit direkt nach dem ersten "Ein-Bit" kodiert. Dies hat den
Vorteil, daß ein Vorzeichen-Bit nicht vor irgendeinem Koeffizienten, der einen Betrag
von 0 aufweist, kodiert wird und das ein Vorzeichen-Bit nicht bis zu dem Punkt in dem
eingebetteten Kodestrom, wo das Vorzeichen-Bit relevant ist, kodiert wird. Für ein Bild
von der Pixeltiefe b beträgt der größtmögliche Koeffizienten-Betrag 2b+3-1, d. h. eine b+3-
Bit-Zahl. Deshalb wird jeder Koeffizient in b+3-Binär-Entscheidungen plus einer
zusätzlichen für das Vorzeichen-Bit, falls erforderlich, kodiert.
Die Ausrichtung von Koeffizienten unterschiedlicher Größe ist sowohl dem Kodierer
als auch dem Dekodierer bekannt und hat keinen Einfluß auf die Effizienz des
Entropiekodierers.
Bemerkenswert ist ebenso, daß jeder Unterblock eines jeden Blocks einer Kodiereinheit
seine eigene möglichst große Betrags-Spanne aufweist, die dem Kodierer und dem
Dekodierer bekannt ist. Für die meisten Unterblöcke gibt es verschiedene vollständig
deterministische binäre Null-Werte, die von dem Entropie-Kodierer zu Zwecken der
Effizienz übergangen bzw. übersprungen werden.
Die Ordnung, in der die Koeffizienten während jeder Bit-Ebene überarbeitet werden,
reicht von der geringen Auflösung zu der hohen Auflösung und von der tiefen Frequenz
zu der hohen Frequenz. Der Koeffizienten-Kodierer innerhalb jeder Bit-Ebene reicht von
dem hohen Niveau (niedrige Auflösung, niedrige Frequenz) bis zu dem niedrigen Niveau
bzw. tiefen Niveau (hohe Auflösung, hohe Frequenz) wie folgt:
4-LL, 4-HL, 4-LH, 4-HH, 3-HL, 3-LH, 3-HH, 2-HL, 2-LH, 2-HH, 1-HL, 1-LH, 1-HH.
Innerhalb jedes Unterblocks ist die Kodierung in der Raster-Scan-Ordnung bzw. Raster-
Abtast-Ordnung.
Bemerkenswert ist, daß Kodiereinheiten desselben Datensatzes verschiedene
Ausrichtungen haben können. Bei einer Ausführungsform kann die Ausrichtung im
Kopfteil bzw. im Header, wie zum Beispiel der Header 2401 in Fig. 24A, spezifiziert
sein.
Fig. 25 zeigt die Nachbar-Koeffizienten für jeden Koeffizienten einer Kodiereinheit.
Nimmt man Bezug auf Fig. 25, so sind die Nachbar-Koeffizienten mit offensichtlichen
geographischen Bezeichnungen (z. B. N = Norden, NE = Nordosten bzw. "northeast",
E = Osten bzw. "east", SE = Südosten bzw. "southeast" etc.) bezeichnet.
Ist ein Koeffizient gegeben, wie zum Beispiel P in Fig. 25 und eine aktuelle Bit-Ebene,
so kann-das Kontext-Modell jegliche Information aus der Gesamtheit der Kodier-Einheit
vor der gegebenen Bit-Ebene verwenden. Der Mutter-Koeffizient des vorliegenden
Koeffizienten wird ebenso für dieses Kontext-Modell verwendet.
Eher, als daß die Nachbar- oder Mutter-Koeffizienten-Werte verwendet werden, um den
Kontext für das vorliegende Bit des vorliegenden Koeffizienten zu bestimmen, wird die
Information auf zwei Bits reduziert, die hierin als Schwanz-Information bzw. "Tail"-
Information bezeichnet wird. Diese Information kann im Speicher gespeichert werden
oder dynamisch aus dem Nachbar- oder Mutter-Koeffizienten berechnet werden. Die
Schwanz-Information bzw. Tail-Information berichtet, ob oder ob nicht das erste Betrags-
Bit ungleich-null beobachtet wurde (z. B. ob das erste "Ein-Bit" beobachtet wurde) und,
falls dem so ist, wieviele Bit-Ebenen dies her ist. Tabelle 8 beschreibt die Schwanz-
Information-Bits bzw. Tail-Information-Bits.
Die Schwanz-Information wird im folgenden Tail-Information genannt. Von der 2-Bit-
Tail-Information zeigt ein "Tail-Ein"-Bit der Information an, ob die Tail-Information null
ist oder nicht. Bei einer Ausführungsform wird die Tail-Information und die Tail-Ein-Bits
unmittelbar nachher Kodierung des Koeffizienten auf den aktuellen Stand gebracht. Bei
einer anderen Ausführungsform findet das "Updating" bzw. das auf den aktuellen
Standbringen später statt, um eine parallele Kontext-Erzeugung zu ermöglichen.
Als ein Beispiel zeigt Tabelle 9 das Tail-Ein-Bit als eine Funktion der Bit-Ebene, und
zwar für einen Koeffizienten mit dem Betrag, der binär wie folgt ausgedrückt ist ("*"
bedeutet, daß es unerheblich ist, ob es 0 oder 1 ist):
Ein dritter Typ von Kontext-Information ist das Vorzeichen-Bit. Da das Vorzeichen-Bit
direkt nach dem ersten Ein-Bit kodiert wird, zeigt der Tail an, ob die Vorzeichen-
Information bekannt ist oder nicht. Deshalb weist das Vorzeichen-Bit keinen
Informations-Kontext auf, es sei denn, das Tail ist ungleich-null (man sollte sich erinnern,
daß es drei Möglichkeiten für die Vorzeichen gibt: Positiv, negativ oder unbekannt).
Das Kontext-Modell des Systems verwendet bis zu 11 Bits, um den Kontext zu
beschreiben. Die Zahl wird nicht völlig spezifiziert: Nur 1030 oder 1031 Kontexte werden
aktuell verwendet, einschließlich der Vorzeichen-Bit-Kontexte. Die Bedeutung jeder Bit-
Position hängt von den vorhergehenden binären Werten ab. Eine Ausführungsform folgt
diesen Regeln:
Fills das Tail-Ein-Bit der vorliegenden Erfindung null ist (für Head-Bits), dann 1024
Kontexte von den Tail-Information-Bits der Mutter und W-Koeffizient und das Tail-Ein-
Bit von den NW-, N-, NE-, E-, SW- und S-Koeffizienten, jeweilig. Bei einer
Ausführungsform wird adaptives Kodieren für Head-Bits verwendet. Bei manchen
Ausführungsformen wird ein einziger Kontext verwendet, um etwas "Ablaufkodieren"
bzw. "run coding" von Head-Bits bereitzustellen. Falls die nächsten 16 Bits, die kodiert
werden sollen, alle Head-Bits sind und ihre N-, S-, E- und W-Nachbarn und die Mutter
alle Tail-Informationen 0 aufweisen, wird eine einzige Entscheidung kodiert werden.
Diese Entscheidung zeigt an, ob irgendwelche der 16-Bits, die zu kodieren sind, ein Ein-
Bit bei der aktuellen Bit-Ebene aufweist. Falls es kein Ein-Bit gibt, können die 16
Entscheidungen, die normalerweise kodiert werden, übersprungen bzw. übergangen
werden. Falls irgendwelche der nächsten 16 Koeffizienten ihr erstes signifikantes bzw.
wertiges Bit beinhalten, dann werden 16 Entscheidungen verwendet, und zwar eine für
jedes Bit. Dieses "Vorwärtsschauen" führt zu weniger Aufrufen des binären Entropie-
Kodierers, was zu einer höheren Geschwindigkeit und zu einer höheren Kompression
führt.
Falls das Tail-Ein-Bit des vorliegenden Koeffizienten eins ist (für Tail-Bits), dann legen
drei Kontexte von dem Tail-Informations-Bit des gegenwärtigen Koeffizienten. Fest-
Wahrscheinlichkeits-Kodieren kann, wie zuvor diskutiert, verwendet werden.
Falls das gegenwärtige Bit des gegenwärtigen Koeffizienten ein erstes Betragsbit
ungleich-null ist, dann wird das Vorzeichen-Bit des vorliegenden Koeffizienten
unmittelbar danach kodiert. Der Kontext für das Vorzeichen-Bit ist 3 Kontexte von dem
N_Tail-Ein-Bit und dem N_Vorzeichen-Bit, wo, falls das N_Tail-Ein-Bit null ist, dann
das N_Vorzeichen-Bit unbekannt ist. Falls das N_Vorzeichen-Bit unbekannt ist, wird
das Vorzeichen mit der Wahrscheinlichkeit 0,5 kodiert. Ansonsten wird das Vorzeichen
adaptiv kodiert.
Zusammenfassend wird eine 11-Bit-Zahl erzeugt, die den Kontext von der Information,
die von den aktuellen, Nachbar- und Mutter-Koeffizienten in derselben Kodiereinheit
verfügbar ist, anzeigt bzw. kennzeichnet.
Fig. 26A-D erläutern kausale und nicht-kausale Koeffizienten, die verwendet werden
können, um einen Koeffizienten P festzusetzen bzw. zu konditionieren. Jede von den
gezeigten Schematas beinhaltet die Verwendung von sowohl Tail-Ein-Bits als auch von
Tail-Ein-Informationen. Während das Tail-Ein-Bit eines jeden Koeffizienten 1 Bit liefert,
umfaßt die Tail-Ein-Information eines jeden Koeffizienten 2 Bits. In Fig. 26A beträgt
die Gesamtzahl der Bits, die durch das Schema beliefert werden 8. In den Fig. 26B
und 26C beträgt die Gesamtzahl der Bits, die durch das Schema geliefert werden, 10.
Zusätzliche Bits können verwendet werden, um die Head-Bits des Koeffizienten P zu
konditionieren. Bei einer Ausführungsform können zwei zusätzliche Bits die Bitposition
wie folgt spezifizieren:
00 erstes Bit (MSB) und zweites Bit
01 drittes Bit und viertes Bit
10 fünftes Bit und sechstes Bit
11 andere Bits.
00 erstes Bit (MSB) und zweites Bit
01 drittes Bit und viertes Bit
10 fünftes Bit und sechstes Bit
11 andere Bits.
Es sollte bemerkt werden, daß andere Schematas, basierend auf Nachbar- und Mutter-
Koeffizienten, gestaltet werden können. Darüberhinaus sind bei einer anderen
Ausführungsform die Koeffizienten, die verwendet werden, um den Koeffizienten P zu
konditionieren, kausal, falls nicht durch die Position durch die Bit-Ebene.
Bei einer Ausführungsform werden die S-Transformations-Mütter und nicht die TS-
Transformations-Mütter zur Konditionierung verwendet. Dies vermindert das Puffern,
das zur Konditionierung erforderlich ist, indem Tiefpaß-Zeilen eingespart werden, bevor
mit der Kodierung der nächsten fortgeschritten wird. Dies ist dort nicht vorteilhaft, wo
die Ordnung des Entropie-Kodierens wichtig ist und der Kodier-Speicher nicht wichtig
ist.
Bemerkenswert ist, daß es einen "tradeoff" bzw. einen Zusammenhang zwischen dem
Haben von mehr Kontexten, um mehr übersprungene Daten zu erzeugen, und der
Adaptionseffizienz, als Folge von weniger Daten innerhalb eines Kontextes, gibt.
Bei einer Ausführungsform müssen die Tail-Bits, die keine Konditionierung brauchen,
nicht (zur Konditionierung) gepuffert werden. Sie können unmittelbar, sobald sie
verfügbar sind, kodiert werden. Falls dies der Fall ist, kann der Kanal-Manager die Bits
unmittelbar zu dem Kanal aussenden.
Bei einer Ausführungsform können, indem Prädiktions-Kodieren bzw. Vorhersage-
Kodieren, wie zum Beispiel DPCM verwendet wird, die Koeffizienten kodiert werden,
eher als daß die Koeffizienten auf dem niedrigsten Niveau der Zerlegung in derselben
Art und Weise wie die anderen Koeffizienten kodiert werden oder als daß sie überhaupt
nicht kodiert werden.
Für Tail-Kodier-Bits können entweder feste Wahrscheinlichkeiten oder adaptive
verwendet werden.
Bezüglich der Konditionierung kann das letzte Bit teilweise von dem vorvorletzten Bit
bzw. von dem zweiten bezüglich des letzten Bits abhängig gemacht werden bzw.
bezüglich diesem Bit konditioniert werden. Ebenso können Bits nach dem ersten "Ein"-Bit
davon abhängig gemacht werden bzw. danach konditioniert werden, wie weit sie von dem
ersten "Ein"-Bit entfernt sind.
Bei einer Ausführungsform werden manche Tail-Bits adaptiv kodiert. Zum Beispiel, wenn
es weniger als T Tail-Bits in einem Koeffizienten gibt (z. B. T=2, T=3), wird adaptives
Kodieren verwendet. Der Kontext für diese Bits beinhaltet die Bit-Position und jegliche
zuvor kodierten Tail-Bits in dem aktuellen bzw. gegenwärtigen Koeffizienten. Dies ist
ähnlich zu der M-ary-Kodierung von Zentren bzw. "Centers", die von Langdon für
DPCM-Daten gelehrt wird.
Bei einer alternativen Ausführungsform werden manche oder alle Daten mit-einem M-ary-
Entropie-Kodierer anstelle eines binären Entropie-Kodierers kodiert. M-ary-Kodierer
beinhalten Tunstall, feste Huffman, adaptive Huffman, etc. Zum Beispiel könnte ein
Huffman-Kode für Head-Bits verwendet werden. In einer alternativen Ausführungsform
wird ein Prioritäts-Kodierer verwendet, um die Position des ersten "Ein"-Bits zu
bestimmen, anstatt daß Head-Bits kodiert werden, und zwar ein Bit zu einer Zeit. Die
Bits werden in der binären Darstellung der Position dann mit einem binären Entropie-
Kodierer kodiert.
Das Kontext-Modell der vorliegenden Erfindung ist im Blockdiagramm-Gestalt in Fig.
27 gezeigt. Das Kontext-Modell 2700 beinhaltet die Vorzeichen-Betrag-Einheit 109
(Fig. 2) und drei Einheiten zur Verarbeitung der verschiedenen Bits in dem
Koeffizienten. Basierend auf dem Bit, das kodiert wird, wird eine der drei Einheiten
ausgewählt. Ein Schalter kann beinhaltet werden, um das Schalten zwischen den Einheiten
in einer Hardware-Implementation zu erleichtern. Diese Einheiten beinhalten einen Head-
Bit-Block 2702, einen Vorzeichen-Bit-Block 2703 und einen Tail-Bit-Block 2704. Der
Head-Bit-Block 2702, ein Vorzeichen-Bit-Block 2703 bzw. ein Tail-Bit-Block 2704
modellieren die Head-Bits, die Vorzeichen-Bits bzw. die Tail-Bits, wie oben beschrieben
wurde. Der Ausgang bzw. die Ausgabe dieser drei Einheiten wird zu dem Entropie-
Kodierer 104 gesandt (Fig. 1).
Der Kodierer kann eine optionale Steuerung beinhalten, die Zustände (optional) sichert,
Anfangszustände bereitstellt und den Kodierer (z. B. am Ende einer Kodiereinheit)
zurücksetzt bzw. neu eingestellt.
Die Kontexte, die oben definiert sind, werden mit einem adaptiven binären Entropie-
Kodierer mit ein Paar- Ausnahmen verwendet. Den Kontexten der Head-Bits
(gegenwärtiger Koeffizient: Tail-Ein-Bit = 0) und den Vorzeichen-Bits, wenn N_Tail-Ein
= 1, wird es erlaubt, sich anzupassen.
Jedoch werden die Bits nach Tail-Ein = 1 und die Vorzeichen-Bits, wenn N_Tail-Ein
= 0, durch eine stationäre Quelle modelliert. In diesen Fällen ist das Adaptions-Merkmal
des Entropie-Kodierers nicht notwendig und kann tatsächlich eine Quelle der
Kompressions-Ineffizienz sein. Für die folgenden Kontexte wird ein fester (nicht-
adaptiver) Zustand, der in Termen der Zustände des Q-Koderiers beschrieben wird,
verwendet.
Der Kontext ist für das Kodieren des Vorzeichen-Bits, wenn N_Tail-Ein = 0 (das
Vorzeichen des N-Koeffizienten ist nicht bekannt) bei dem festen Q-Kodierer-Zustand
0 kodiert wird - Wahrscheinlichkeit ungefähr 0,5.
Der Kontext ist für das Kodieren des ersten binären Wertes, nachdem das erste Bit
ungleich-null (Tail-Information = 1) bei dem festen Q-Kodier-Zustand 4 kodiert ist -
Wahrscheinlichkeit ungefähr 0,7.
Der Kontext ist für das Kodieren des zweiten und des dritten binären Wertes, nachdem
das erste Bit ungleich-null (Tail-Information = 2) bei dem festen Q-Kodier-Zustand 3
kodiert wird - Wahrscheinlichkeit ungefähr 0,6.
Der Kontext ist für das Kodieren des vierten und letzten binären Wertes, nachdem das
erste Bit ungleich-null (Tail-Information = 3) bei dem festen Q-Kodier-Zustand 0 kodiert
wird - Wahrscheinlichkeit ungefähr 0,5.
Bei manchen Ausführungsformen wird das Entropie-Kodieren nach jeder Kodiereinheit
zurückgesetzt, so daß die Adaptions-Kosten für Kontexte, denen erlaubt wird, sich zu
adaptieren (z. B. Kontexte, die verwendet werden, um binäre Werte vor dem ersten Ein-Bit
zu kodieren), signifikant sind. Um diese Kosten minimal zu halten, kann ein Satz von
anfänglichen Zuständen für diese Kontexte aus zum Beispiel einigen Übungs-Daten
berechnet werden.
Die folgende Diskussion nimmt an, daß die Koeffizienten 18-Bits haben und daß die
Eingangsdaten einer Vier-Niveau-Zerlegung unterzogen wurden.
Eine Ausführungsform der Vorzeichen/Betrag-Einheit 109 ist in Fig. 28 gezeigt und
wandelt Eingangs-Koeffizienten in ein Vorzeichen/Betrag-Format um. Die
Vorzeichen/Betrag-Einheit 109 ist gekoppelt bzw. angeschlossen, um 18 Bits der
Koeffizienten zu empfangen, und beinhaltet einen Inverter 2801 und einen Multiplexer
(MUX) 2802. Die Vorzeichen/Betrag-Einheit 109 gibt einen Wertigkeits-Hinweis (z. B.
einen 5-Bit-Wert), die Mantisse des Eingangs-Koeffizienten (z. B. 17 Bits), das
Vorzeichen des Eingangs-Koeffizienten 1 Bit und einen Index von dem Zähler 2804 (z. B.
7 Bits) aus.
MUX 2802 ist angeschlossen, um 17 Bits des Koeffizienten, der direkt in die
Vorzeichen/Betrag-Einheit 109 eingegeben wurde, und eine invertierte Version der 17
Bits von dem Zweier-Komplementierer 2801 zu empfangen. Basierend auf dem
Vorzeichen-Bit (Koeffizienten-Bit 17), das bei dem ausgewählten Eingang des MUX
2802 empfangen wird, wird das Positive der zwei Eingänge als die Mantisse ausgegeben.
Dem binären Entropie-Kodierer wird ein Kontext und das zu kodierende Bit gegeben.
Zum Kodieren Bit-Ebene um Bit-Ebene verwendet die vorliegende Erfindung eine
Berechnung der Übertrag-Sicherungs-Art (auf einem Allzweckcomputer), so daß die
Berechnung mit einem Datenformat durchgeführt wird, das für ein schnelles Kodieren
gemäß Bit-Ebene geeignet ist. Zum Beispiel kann bei einer derartigen Implementation
ein 32-Bit-Prozessor 1 Bit von jedem der 32 Koeffizienten in derselben Bit-Ebene zu
derselben Zeit errechnen, anstelle eines ganzen Koeffizienten. Die Verwendung einer
derartigen Ausführung führt zu einer erhöhten Geschwindigkeit, wenn ein Kodieren "um
Bit-Ebenen" ("coding by bitplanes") bzw. gemäß Bitebenen durchgeführt wird.
Da eine Kodiereinheit zu einer Zeit kodiert wird und alle Koeffizienten in einer
Kodiereinheit in dem Speicher sind, gibt es keine Speicher-Kosten für die Speicherung
der Kontext-Information, das ausgenommen, was der adaptive binäre Entropie-Kodierer
benötigt. Zum Beispiel muß der Q-Kodierer die binären Werte des LPS (niedrigswertigen
Symbols) für alle Kontexte und den aktuellen bzw. gegenwärtigen Zustand für jeden
Kontext, dem es erlaubt ist zu adaptieren, halten. Da der Q-Koder 30 Zustände aufweist,
wird eine 6-Bit-Zahl (1 Bit für die LPS und 5 Bits für die Zustände) für jeden Kontext
benötigt. Deshalb betragen die Speicher-Kosten 1024 × 5 + 1030 = 6150 Bits des
Speichers.
Bemerkenswert ist, daß keine spezielle Signalisierungs-Information für die oben
beschriebene One-Pass-Ausführung bzw. Ein-Durchgangs-Ausführung notwendig ist.
Falls die Anzahl der Niveaus der Zerlegung eine Variable wäre, wurde dies wenigstens
3 Bits der Header-Information bzw. Kopfteil-Information erfordern. Der Header, der für
diese Ausführungsform verwendet wird, aber nicht in den komprimierten Bits gezählt wird
bzw. Bedeutung hat, lautet wie folgt:
- - Breite, 2 Bytes,
- - Höhe, 2 Bytes,
- - Bits pro Pixel des Eingangs-Bildes, 1 Bytes.
Speicher-Management für kodierte Daten in dem Ein-Durchgangs-System bzw. One-Pass-
System wird für Systeme, die alle Daten im Speicher speichern und für Systeme, die
Daten in einem Kanal übertragen, vorgestellt. Bei dem One-Pass-System müssen kodierte
Daten derartig gespeichert werden, daß auf sie in einer eingebetteten kausalen Art und
Weise zugegriffen werden kann, so daß weniger signifikante Daten bzw. geringerwertige
Daten weggelassen bzw. gelöscht werden können, ohne signifikantere bzw.
höherwertigere zu verlieren. Da kodierte Daten von variabler Länge sind, können
dynamische Speicher-Zuordnungen bzw. Speicher-Belegungen verwendet werden.
Bei einer Ausführungsform der vorliegenden Erfindung verwendet das eingebettete
Kodier-Schema 18 Bit-Ebenen und weist somit 18 Niveaus der Wertigkeit den Daten
zu. Der Kodierer in einem One-Pass-System ist "eingebettet kausal". Das bedeutet, die
Dekodier-Ereignisse, die einer Bit-Ebene entsprechen, benötigen keine Information von
Bit-Ebenen niedrigerer Ordnung. Bei einer Ausführungsform werden alle Bits von einem
Baum kodiert werden, bevor irgendwelche Bits in dem nächsten Baum kodiert werden,
so daß Bits von verschiedener Signifikanz nicht getrennt werden. Für Kodierer, die keinen
internen Zustand verwenden, wie Huffman-Kodierer, ist dies kein Problem. Jedoch
verwenden viele ausgeklügelte Kompressoren bzw. Kompressionseinrichtungen mit einer
besseren Kompression interne Zustände.
Eine Art und Weise, dieses Problems für diese Kodierer zu lösen, ist es, 18 verschiedene
Kodierer, vielleicht 18 Q-Kodier-Chips zu verwenden. Eine Technik, die es erlauben
wurde, 9 Q-Kodier-Chips zu verwenden, ist in dem US-Patent Nr. 5,097,261 (Langdon,
Jr.) beschrieben, das den Titel "Data Compression for Recording on a Record Medium"
trägt und am 17. März 1992 veröffentlicht wurde. Eine bessere Art und Weise verwendet
einen gepipelineten Kodierer, um verschiedene virtuelle Kodes mit einem einzigen
physikalischen Kodierer zu implementieren, zum Beispiel wie jener, der in dem US-Patent
Nr. 5,381,145 beschrieben wurde, das den Titel "Method and Apparatus for Parallel
Decoding and Encoding of Data" trägt, veröffentlicht am 10. Januar 1995. Bei einem
derartigen Kodierer werden die mehrfachen Bit-Generator-Zustände für jede
Wahrscheinlichkeit jeweils einem Teil der Daten zugeordnet. Zum Beispiel könnte jeder
der 18 Zustände einer besonderen Bit-Ebene für 18 Bit-Daten zugewiesen bzw.
zugeordnet werden. Register in der Schiebeeinrichtung in dem Kodierer werden ebenso
jedem Teil der Daten zugewiesen. In dem Kodierer werden keine Ineinanderverschachte
lungen bzw. kein "Interleaving" durchgeführt; jeder Teil der Daten wird einfach bit
gepackt.
Bei Ausfürungsformen entweder mit mehreren physikalischen oder virtuellen Kodierern,
wird Speicher zu jedem Teil der Daten zugeordnet. Wenn die Kompression vollständig
ist, ist eine verbundene bzw. verknüpfte Liste das Ergebnis, die den zugeordneten
Speicher plus die Inhalte des zugeordneten Speichers beschreibt.
Falls der Speicher überfließt, verursacht die Speicher-Zuordnungs-Leitführung bzw. das
Speicher-Zuordnungs-"Routing", das wichtigere Daten weniger wichtige Daten
überschreiben. Zum Beispiel kann das niedrigstwertige Bit der numerischen Daten als
erstes überschrieben werden. Die Information, die beschreibt, wie der Speicher belegt
wird, muß zusätzlich zu den kodierten Daten gespeichert werden.
Fig. 29 zeigt eine beispielhafte dynamische Speicher-Belegungs-Einneit bzw. Speicher-
Ordnungs-Einheit für drei Kategorien der Signifikanz bzw. Wertigkeit. Nur drei
Kategorien werden beschrieben, um ein Verschleiern der vorliegenden Erfindung zu
vermeiden; typischerweise wurde eine größere Anzahl von Kategorien, wie zum Beispiel
8, 16 oder 18 verwendet werden. Ein Register-File bzw. eine Register-Datei (oder ein
anderer Speicher) hält einen Zeiger für jede Kategorie der Wertigkeit bzw. Signifikanz
plus einen anderen Zeiger, um den nächsten freien Speicher-Ort anzuzeigen. Der Speicher
wird in Seiten fester Größe bzw. Fest-Größen-Seiten aufgeteilt.
Anfänglich zeigt jeder Zeiger, der einer Signifikanz-Kategorie zugewiesen ist, zu dem
Beginn einer Speicherseite und der Freizeiger zeigt zu der nächsten verfügbaren
Speicherseite. Kodierte Daten, die mit einer Signifikanz-Kategorie identifiziert werden,
werden bei dem Speicherbereich gespeichert, der durch den entsprechenden Zeiger
adressiert wird. Der Zeiger wird darin auf den nächsten Speicher-Bereich inkrementiert.
Wenn der Zeiger das Maximum der aktuellen Seite erreicht, wird die Adresse des Beginns
der nächsten freien Seite, die in dem freien Zeiger gespeichert ist, mit der aktuellen Seite
als eine Verbindung gespeichert. Bei einer Ausführungsform kann der Teil des kodierten
Daten-Speichers oder ein getrennter Speicher oder eine Register-Datei zu diesem Zweck
verwendet werden Dann wird der aktuelle Zeiger auf die nächste freie Seite gesetzt. Der
freie Zeiger wird inkrementiert. Diese Stufen verursachen, daß eine neue Speicherseite
zu einer bestimmten Signifikanz-Kategorie zugeordnet wird, und liefert Verbindungen
zu Seiten des Speichers, die Daten für eine gemeinsame Signifikanz-Kategorie beinhalten,
so daß die Ordnung der Zuordnung während des Dekodierens bestimmt werden kann.
Wenn alle Seiten in dem Speicher in Verwendung sind und es mehr Daten gibt, die
signifikanter sind, als die niedrigstwertigen Daten in dem Speicher, wird eine Speicher-
Neuzuweisung durchgeführt. Drei derartige Neuzuweisungs-Techniken werden
beschrieben. In allen drei Fällen, wird Speicher, der den niedrigstwertigen Daten
zugewiesen ist, zu signifikanteren Daten neu zugewiesen und keine niedrigswertigen
Daten werden mehr gespeichert.
Zuerst wird der Speicher, der aktuell durch die niedrigstwertigen Daten verwendet wird,
einfach höherwertigeren Daten zugewiesen. Da die meisten typischen Entropie-Kodierer
interne Zustands-Informationen verwenden, gehen alle niedrigstwertigen Daten, die zuvor
in der Seite gespeichert wurden, verloren.
Zweitens wird die Seite, die gegenwärtig von den niedrigstwertigen Daten verwendet
wird, höherwertigen Daten zugewiesen. Im Gegensatz zu dem vorhergehenden Fall wird
der Zeiger an das Ende der Seite gesetzt und wenn mehr signifikante Daten in die Seite
geschrieben werden, wird der entsprechende Zeiger dekrementiert. Dies hat den Vorteil,
daß die niedrigstwertigen Daten am Beginn der Seite erhalten bleiben, falls die
höherwertigeren Daten nicht die gesamte Seite brauchen.
Drittens, anstatt daß die aktuelle Seite der niedrigstwertigen Daten neu zugewiesen wird,
kann irgendeine Seite der niedrigstwertigen Daten neu zugewiesen werden. Dies erfordert,
daß die kodierten Daten für alle Seiten unabhängig kodiert werden, was die erreichte
Kompression verringern kann. Es erfordert ebenso, daß die unkodierten Daten, die dem
Beginn aller Seiten entsprechen, identifiziert werden. Da irgendeine Seite der
niedrigstwertigen Daten gelöscht werden kann, ist eine größere Flexibilität bei der
Quantisierung verfügbar.
Die dritte Alternative kann besonders attraktiv in einem System sein, das eine feste Rate
an Kompression über Regionen des Bildes erzielt. Eine spezielle Anzahl von Speicher-
Seiten kann einer Region des Bildes zugeordnet werden. Ob weniger signifikante Daten
zurückbehalten werden oder nicht, kann von der in einer bestimmten Region erzielten
Kompression abhängen. Bemerkenswert ist, daß der Speicher, der einer Region
zugewiesen ist, nicht völlig genutzt werden könnte, falls eine verlustfreie Kompression
weniger als den Umfang des zugewiesenen Speichers erforderte. Das Erreichen einer
festen Kompressionsrate auf einer Region des Bildes kann den durch stochastischen bzw.
wahlfreien Zugriff auf die Bild-Regionen unterstützen.
Wenn die Kompression vollständig ist, können, falls gewünscht, die Daten übertragen
werden, und zwar zu einem Kanal oder zu einer Speichervorrichtung in der Ordnung ihrer
Signifikanz bzw. Wertigkeit. Die verschiedenen Verbindungen und Zeiger würden dann
nicht mehr gebraucht werden und Multi-Pass-Dekodierung bzw. Mehrfach-Durchgangs-
Dekodierung könnte durchgeführt werden. Alternativ zur One-Pass-Dekodierung bzw.
Ein-Durchgangs-Dekodierung können die Zeiger zu den Daten zu jeder Signifikanz bzw.
Wertigkeit behalten werden.
Bei einigen Anwendungen könnten manche Signifikanz-Kategorien bzw. Wertigkeits-
Kategorien nicht verwendet werden. Zum Beispiel könnte eine 16-Bit-Kompressionsein
richtung auf einem 12-Bit-Medizinbild verwendet werden, so würden Signifikanz-
Kategorien, die den Bit-Ebenen 15. . .12 entsprechen, ungenutzt bleiben. Bei
Implementationen mit großen Seiten und vielen ungenutzten Signifikanz-Kategorien,
wurde dies Speicher verschwenden (wenn das System nicht von vornherein weiß, daß
manche Kategorien ungenutzt sind), da Speicher nicht diesen zugewiesen werden muß.
Eine andere Lösung zu dieser Speicher-Verschwendung wäre es, einen kleinen Speicher
(oder ein Register) zu verwenden, um einen Zähler für jede Signifikanz-Kategorie zu
halten. Der Zähler würde der Anzahl der "Insignifikant"-Entscheidungen folgen, die
auftreten, bevor irgendeine andere Entscheidung auftritt. Der Speicher, der zum Speichern
dieser Zähler benötigt werden würde, müßte den Speicher, der für nicht genutzte
Signifikanz-Kategorien verwendet wird, "abgehandelt" ("traded-off") werden.
Die Fähigkeit, Daten in jede Seite von beiden Enden zu schreiben, kann verwendet
werden, um die gesamte Menge des in dem System verfügbaren Speichers besser zu
nutzen. Wenn alle Seiten belegt bzw. zugeordnet sind, kann irgendeine Seite, die
ausreichend freien Speicher am Ende aufweist, zugeordnet werden, zur Verwendung von
dem Ende aus. Die Fähigkeit, beide Enden einer Seite zu verwenden, muß gegenüber den
Kosten des Folgens des Ortes abgewogen werden, wo sich die beiden Datentypen treffen.
Bemerkenswert ist, daß sich dies von dem Fall unterscheidet, wo einer der Datentypen
nicht signifikant war und deshalb einfach beschrieben werden konnte.
Bei einer Ausführungsform stellt die vorliegende Erfindung eine verlustfreie Kompression
mit einem kleinen Speicher-Puffer bereit. Die vorliegende Erfindung ist in der Lage,
vielen verschiedenen Anwendungen und Vorrichtungs-Umgebungen zu dienen. Das
folgende beschreibt Techniken, um verschiedene Merkmale zu implementieren, um das
System der vorliegenden Erfindung in die Lage zu versetzen, flexibler für verschiedene
Anwendungen und Ziel-Vorrichtungen zu sein. Bemerkenswert ist, daß für die
vorliegende Erfindung eine Wahl bezüglich der Auflösung, Pixeltiefe, wahlfreien bzw.
durch stochastischen Zugriff, Quantisierung etc. nicht zu der Kodierzeit gemacht zu
werden braucht.
Betreffend die Daten-Anordnung gibt es eine Anzahl von Optionen für die Anordnung
der Bild- und Koeffizienten-Daten mit dem System der vorliegenden Erfindung. Wie
detaillierter weiter unten beschrieben wird, beinhalten diese Optionen das Bilden von
Elementen bzw. das "Tiling" von kodierten Einheiten, die Anzahl von Niveaus der
Zerlegung, die Auswahl von Wavelet-Transformations-Filtern und die Ausrichtung von
Koeffizienten, sind aber nicht darauf beschränkt. Für sich genommen, könnte jeder von
diesen ein Parameter sein, der von einem Bediener oder System-Designer gesteuert wird.
Wie oben diskutiert, kann ein Parameter das Bilden von Elementen von Kodier-Einheiten
bzw. das "Tiling" sein. Die Höhe und die Breite der Kodiereinheit werden bezüglich der
Bäume der vorliegenden Erfindung definiert. Für einen wahlfreien bzw. durch
stochastischen Zugriff kann der Beginn der kodierten Daten für jede Kodiereinheit durch
Zeiger oder Markierer in dem Kodestrom oder durch Zeiger in dem Kopfteil bzw. Header
bezeichnet werden. Dies wurde Blöcken einen Zugriff erlauben, die nicht die Ausdehnung
des Bildes aufweisen.
Ein anderer Parameter, der gesteuert werden könnte, ist die Anzahl der Niveaus der
Zerlegung. Ein Variieren der Anzahl der Niveaus der Zerlegung variiert die
Kompressions-Leistungsfähigkeit, und zwar basierend auf der Tatsache, daß die weiteren
Niveaus der Zerlegung zu einer besseren Kompression führen. Bemerkenswert ist, daß
die Variation der Anzahl der Zerlegungs-Niveaus ebenso die Speicher-Erfordernisse
beeinflußt, da mehr Niveaus mehr Zeilen-Puffer erfordern. Mehr Niveaus könnten
gebraucht werden, um eine Auflösung unterhalb voller Auflösung zu erzielen bzw.
"anzupeilen". Zum Beispiel, falls ein Originalbild zu 2000 dpi aufweist, werden fünf
Niveaus der Zerlegung benötigt, um ungefähr 63 dpi zu erzielen. Dies erlaubt, daß ein
Scan bzw. eine Abtastung hoher Auflösung nahe bei der realen Größe auf einem Monitor
dargestellt bzw. angezeigt wird, und zwar ohne Dekompression und Unterabtastung.
Die Art von Wavelet-Transformations-Filter für den horizontalen und vertikalen
Durchgang bei jedem Niveau kann ebenso unterschiedlich sein. Dies ermöglicht
unterschiedliche Speicher-Erfordernisse und Kompressions-Leistungsfähigkeiten.
Bemerkenswert ist, daß die Koeffizientengröße nicht mit mehr Niveaus zunimmt. Ebenso
gibt es geringe Berechnungs-Kosten für weitere Niveaus, da die Wavelet-Transformation
eine Ordnung-N-Transfortnation ist und es weniger Daten zu transformieren gibt, wenn
die Niveaus zunehmen.
Es gibt viele mögliche Anwendungsziele für einen bestimmten komprimierten Kodestrom.
Es könnte wünschenswert sein, einen Kodestrom zu haben, der zu einem Monitor mit
einer geringeren Auflösung aber vollen Pixel-Tiefe, zu einem Drucker mit einer vollen
Auflösung aber einer geringen Pixel-Tiefe, einer Festraten-Echtzeit-Vorrichtung mit
einem beschränkten Kanal oder einer Fest-Größen-Vorrichtung mit beschränktem
Speicher gesendet werden kann. Es ist möglich, daß derselbe Kodestrom erforderlich ist,
um alle diese Bedürfnisse zu bedienen. Fig. 34 zeigt eine Verallgemeinerung der
relativen Vorrichtungs-Charakteristiken, denen eine einzige Anwendung dienen könnte.
Das System der vorliegenden Erfindung kann mit genügend Geschwindigkeit bezüglich
des Kodierers und Dekodierers und einer genügenden Bandbreite die erforderlichen Daten
aus dem dekomprimierten Bild extrahieren. Weiter kann der Kodierer einen Kodestrom
erzeugen, der für eine der obigen Vorrichtung vorgesehen ist. Bei dem Kodierer kann
das Bild quantisiert werden oder in der traditionellen Art und Weise hinunterabgetastet
("down sampled") werden.
Jedoch ist ein Vorteil der vorliegenden Erfindung, daß bei einer geeigneten Signalisierung
ein Kodestrom erzeugt werden kann, der geparst bzw. analysiert werden kann, und zwar
vor einer Übertragung bzw. Transmission oder einer Dekodierung ohne Dekompression
bezüglich irgendeiner der obigen Vorrichtungen. Ein derartiger Parser kann in den Fig.
35A und B gezeigt sein. Nimmt man Bezug auf die Fig. 35A, so ist ein Parser 3501
gezeigt, der einen verlustfreien Bitstrom empfängt und einen verlustbehafteten Bitstrom
erzeugt. Nimmt man Bezug auf die Fig. 35B, so ist ein Parser 3502 gezeigt, der einen
verlustbehafteten Bitstrom empfängt und der einen anderen verlustbehafteten Bitstrom
erzeugt; jedoch, die Beziehung zwischen dem Ausgang und dem Eingang in Fig. 35B
derartig, daß die vorliegende Erfindung die Eigenschaft hat, idempotent zu sein, was
genauer weiter unten beschrieben werden wird. Bemerkenswert ist, daß in dem Fall
sowohl des Paars 3501 als auch des 3502 die Bitrate der als Eingang empfangenen
Daten größer ist, als jene, die ausgegeben wurde.
Falls das Ziel ein eingebettetes Ziel gemäß geringer Auflösung und hoher Pixeltiefe ist,
nimmt diese Anwendung an, daß die Ziel-Vorrichtung eine geringere räumliche
Auflösung hat, als verfügbar ist, aber die volle Pixeltiefe erforderlich ist. Beispiele für
eingebettete Ziele gemäß geringer Auflösung und hoher Pixeltiefe sind Monitore.
Verwendet man den Kodestrom, der in Fig. 24A gezeigt ist, wird jede Bit-Ebene für
so viele höhere Niveau-Koeffizienten dekodiert, wie es erforderlich ist. Dies erfordert,
daß der Parser jede Bit-Ebene abschneidet. Um den Parser zu unterstützen, kann jede Bit-
Ebene einer jeden Kodierungs-Einheit Marker oder Zeiger aufweisen, die den Ort
kennzeichnen, wo die Abschneidung auftreten kann. Bei einer derartigen
Ausführungsform werden, falls mehr als eine Ziel-Auflösung gewünscht ist, mehr Marker
oder Zeiger benötigt. Die Bit-Ebenen werden unabhängig kodiert, so daß der Entropie-
Kodierer für die nächste Bit-Ebene zurückgesetzt werden kann.
Ein anderer Ansatz ist es, die Daten unterschiedlich einzubetten, wie es in Fig. 24B
gezeigt ist. Nimmt man Bezug auf die Fig. 24B, so werden die Ziel-Auflösungs-
Koeffizienten innerhalb jeder Kodiereinheit zuerst kodiert, gefolgt von den Bit-Ebenen
der verbliebenen Koeffizienten hoher Auflösung. In diesem Fall ist nur eine
Abschneidung pro Kodiereinheit notwendig und der Entropie-Kodierer muß nicht
zurückgesetzt werden. Markierer oder Zeiger können den gewünschten Abschneidepunkt
kennzeichnen.
Falls das Ziel ein eingebettetes Ziel gemäß hoher Auflösung und geringer Pixeltiefe ist,
nimmt diese Anwendung an, daß die Ziel-Vorrichtung die volle verfügbare Auflösung
erfordert, oder mehr, aber nicht die volle Pixeltiefe verwenden kann. Beispiele des
eingebetteten Ziels gemäß hoher Auflösung und geringer Pixeltiefe beinhalten einfache
Drucker und Standardmonitore (wenn die Bilder mehr als 8 Bits pro Ebene sind). Der
Kodestrom, der in Fig. 24A gezeigt ist, ist in dieser Ordnung eingebettet. Jede
Kodiereinheit ist bei dem Punkt bei der richtigen Anzahl der Bit-Ebenen abgeschnitten
und die Transformation wird an dem quantifizierten Koeffizienten durchgeführt. Es gibt
eine direkte Beziehung zwischen der Koeffiziententiefe und der Pixeltiefe. Marker oder
Zeiger können den gewünschten Abschneidepunkt kennzeichnen.
Alternativ, falls der Kodestrom, wie in Fig. 24B gezeigt, eingebettet ist, werden dann
zwei Marker oder Zeiger verwendet, um die Abschneidung zu kennzeichnen, und zwar
einen für die Bit-Ebenen geringer Auflösung und einen für die Bit-Ebenen hoher
Auflösung. Die zwei Sätze von Bit-Ebenen werden unabhängig kodiert, um zu erlauben,
daß der Entropie-Kodierer zurückgesetzt wird.
Noch eine andere Alternative ist es, manche oder alle Koeffizienten geringer Auflösung
zu dekodieren, wie dies bezüglich des eingebetteten Ziels gemäß geringer Auflösung und
hoher Pixeltiefe beschrieben ist, und möglicherweise manche Daten von den
Koeffizienten hoher Auflösung. Dann wird die interpolierende Wavelet-Transformation,
die unten beschrieben wird, durchgeführt.
Eingebettetes Ziel gemäß fester Rate bzw. Fest-Raten-Eingebettetes-Ziel:
Falls das Ziel ein eingebettetes Ziel gemäß fester Rate ist, nimmt diese Anwendung an, daß eine Echtzeit-Konstant-Pixel-Ausgabe aufrechterhalten werden muß, während ein unter Rand- bzw. Nebenbedingungen stehender Kanal ("constrained channel") verwendet wird. In diesem Fall gibt es eine gewisse maximale Kodestrom-Daten-Rate, die in der Zeit lokal ist (minimales Kompressions-Verhältnis). Um dieses Ziel zu erreichen, werden zuerst die Kodier-Einheiten gewählt, die auf der Menge des Puffers basieren, der bei der Ziel-Vorrichtung verfügbar ist. Dies legt die Lokalität fest, über die das mittlere Kompressions-Verhältnis erreicht werden soll. Dann wird jede Kodiereinheit mit mehr Daten, als erlaubt, abgeschnitten.
Falls das Ziel ein eingebettetes Ziel gemäß fester Rate ist, nimmt diese Anwendung an, daß eine Echtzeit-Konstant-Pixel-Ausgabe aufrechterhalten werden muß, während ein unter Rand- bzw. Nebenbedingungen stehender Kanal ("constrained channel") verwendet wird. In diesem Fall gibt es eine gewisse maximale Kodestrom-Daten-Rate, die in der Zeit lokal ist (minimales Kompressions-Verhältnis). Um dieses Ziel zu erreichen, werden zuerst die Kodier-Einheiten gewählt, die auf der Menge des Puffers basieren, der bei der Ziel-Vorrichtung verfügbar ist. Dies legt die Lokalität fest, über die das mittlere Kompressions-Verhältnis erreicht werden soll. Dann wird jede Kodiereinheit mit mehr Daten, als erlaubt, abgeschnitten.
Bemerkenswert ist, daß, falls die Kodestrom-Datenrate nicht die maximale Kanal-
Bandbreite überschreitet, das Bild verlustfrei wiedergewonnen wird. Dies trifft für
irgendwelche anderen Fest-Raten-Systeme nicht zu.
Fest-Größen-Eingebettetes-Ziel bzw. eingebettetes Ziel gemäß fester Größe:
Falls das Ziel ein Fest-Größen-Eingebettetes-Ziel ist, nimmt diese Anwendung an, daß ein Fest-Größen-Frame-Puffer bzw. Fest-Größen-Rahmen-Puffer für die komprimierten Bild-Daten verfügbar ist. Im Gegensatz zu der Fest-Raten-Anwendung erfordert dies eine minimale Kompressionsrate, die über das gesamte Bild, nicht nur lokal gemittelt wird. Natürlich könnte das Fest-Raten-Verfahren hier verwendet werden, aber indem das Konzept der Mittelung über das gesamte Bild, eher als lokal, verwendet wird, kann eine bessere Bit-Zuordnung und Bild-Qualität erreicht werden.
Falls das Ziel ein Fest-Größen-Eingebettetes-Ziel ist, nimmt diese Anwendung an, daß ein Fest-Größen-Frame-Puffer bzw. Fest-Größen-Rahmen-Puffer für die komprimierten Bild-Daten verfügbar ist. Im Gegensatz zu der Fest-Raten-Anwendung erfordert dies eine minimale Kompressionsrate, die über das gesamte Bild, nicht nur lokal gemittelt wird. Natürlich könnte das Fest-Raten-Verfahren hier verwendet werden, aber indem das Konzept der Mittelung über das gesamte Bild, eher als lokal, verwendet wird, kann eine bessere Bit-Zuordnung und Bild-Qualität erreicht werden.
Falls die Kodiereinheit das ganze Bild enthalten wurde, wäre es trivial die Daten
abzuschneiden, die einen Überlauf bei den Puffern hervorrufen. Falls die Kodiereinheiten
weniger sind als das ganze Bild und alle Kodiereinheiten um dieselbe Anzahl von Bits
abgeschnitten werden, gibt es keine Garantie, daß das Abschneiden einheitlich die
niedrigstwertigen Wichtigkeits-Niveaus entfernt hat. Eine einfache Lösung ist es, während
der Kodier-Zeit (oder während einer späteren Parsing-Zeit bzw. Analyse-Zeit) die Anzahl
der kodierten Bits aufzuzeichnen, die jedes Wichtigkeits-Niveau zu dem Kodestrom für
jede Kodiereinheit oder global oder beides beiträgt. Das Aufzeichnen kann durchgeführt
werden, indem einfache Zähler verwendet werden. Diese Zahlen werden in einem Header
bzw. Kopfteil aufgezeichnet und können verwendet werden, um zu entscheiden, wie jede
Kodiereinheit bei Übertragungs- oder Speicher-Zeit abgeschnitten wird. Der Header bzw.
das Kopfteil beinhaltet ein Wichtigkeits-Niveau und seine entsprechende Anzahl von
Bits. Der Header kann ebenso diese Information für jede der Kodiereinheiten, die in dem
Strom enthalten sind, enthalten. Wenn entschieden wird, wo abzuschneiden ist, wird
dasselbe bei jeder Kodiereinheit ausgeführt. Falls es zum Beispiel aufgrund von Speicher-
Nebenbedingungen bestimmt ist, daß ein und einen halbes Wichtigkeits-Niveaus zu
löschen sind, dann werden ein und ein halbes Wichtigkeits-Niveaus von jeder
Kodiereinheit gelöscht. Dies ermöglicht es, daß die Wirkung des Abschneidens sich über
die Kodiereinheiten in einer gleichförmigen Art und Weise ausbreitet.
Das Erreichen eines Festgrößen-Komprimierten-Bildes kann während der Kodier-Zeit
ebenso erreicht werden. Der Speicher wird in Abschnitte für Wichtigkeits-Niveaus
eingeteilt. Falls der Speicher dabei ist überzulaufen, werden weniger wichtige Segmente
mit den wichtigeren Daten überschrieben.
Bemerkenswert ist, daß, falls die komprimierten Daten nicht zu einem Überlauf des
Speicher-Puffers führen, das Bild verlustfrei wiedergewonnen wird. Dies trifft für jegliche
andere Fest-Größen-Systeme nicht zu.
Interpolieren mit der Wavelet-Transformation:
Wavelets können verwendet werden, um Bilder zu höherer Auflösung zu interpolieren. Die Ergebnisse sind visuell ziemlich vergleichbar mit bikubischen Spline-Techniken. Falls die komprimierten Daten bereits in der Gestalt von Wavelet-Koeffizienten vorliegen, ist die tatsächliche zusätzliche Berechnung für die Interpolation geringer als beim bikubischen Spline.
Wavelets können verwendet werden, um Bilder zu höherer Auflösung zu interpolieren. Die Ergebnisse sind visuell ziemlich vergleichbar mit bikubischen Spline-Techniken. Falls die komprimierten Daten bereits in der Gestalt von Wavelet-Koeffizienten vorliegen, ist die tatsächliche zusätzliche Berechnung für die Interpolation geringer als beim bikubischen Spline.
Man stelle sich vor, daß alle Koeffizienten einer N-Niveau-Zerlegung verfügbar sind.
Indem ein neues tiefstes Niveau von Koeffizienten erzeugt wird, indem mit Nullen oder
mittels eines anderen Verfahrens aufgefüllt wird, und dann eine N+1-Niveau-Wavelet-
Rekonstruktion durchgeführt wird, wird das neue Bild eine 2:1-interpolierte Version des
Originals.
Dieses Verfahren kann ebenso mit den Systemen verwendet werden, bei welchem es Ziel-
Vorrichtungen für den eingebetteten Kodestrom gibt, insbesondere für Ziel-Vorrichtungen
gemäß hoher Auflösung und geringer Pixeltiefe. Die Kodier-Einheiten werden
abgeschnitten, so daß nur die Koeffizienten niedriger Auflösung vorliegen (oder nur die
Koeffizienten niedriger Auflösung und nur wenige Bits mancher oder aller Koeffizienten
hoher Auflösung. Die Koeffizienten werden zu der höheren Auflösung aufgefüllt und
die Rekonstruktion wird durchgeführt.
Bei einem System, bei welchen Daten in einem Kanal übertragen werden, anstatt daß sie
in einem Speicher gespeichert werden, und Fest-Größen-Speicherseiten verwendet werden
(aber nur eine Seite pro Signifikanz-Kategorie benötigt wird), wird eine Speicherseite,
wenn sie voll ist, in dem Kanal übertragen und die Speicher-Stelle kann wieder verwendet
werden, sobald sie übertragen sind. Bei einigen Anwendungen kann die Seitengröße des
Speichers gleich der Größe des Datenpakets sein, das in dem Kanal verwendet wird, oder
ein mehrfaches der Paketgröße.
Bei einigen Kommunikations-Systemen, zum Beispiel ATM (asynchroner Transfer-
Modus) können Prioritäten den Paketen zugewiesen werden. ATM weist zwei Prioritäts-
Niveaus, nämlich "priority" (Priorität) und "secondary" (nächstfolgend). Secondary-Pakete
werden nur übertragen, falls eine ausreichende Bandbreite verfügbar ist. Eine Schwelle
kann verwendet werden, um zu bestimmen, welche Signifikanz-Kategorien bzw.
Wertigkeits-Kategoriern priority sind und welche secondary sind. Ein anderes Verfahren
wäre es, eine Schwelle bei dem Kodierer zu nutzen, um Signifikanz-Kategorien nicht
zu übertragen, die weniger signifikant wären, als eine Schwelle.
Somit steuert eine Ausführungsform des Speicher-Managers in der vorliegenden
Erfindung das Speichern komprimierter Daten in einem Speicher fester Größe bzw. in
einem Fest-Größen-Speicher. Das heißt, der Speicher-Manager bzw. Speicher-Verwalter
teilt die komprimierten Daten in verschiedene Wichtigkeits-Niveaus auf. Wenn der
Speicher voll ist, werden weniger wichtige Daten durch wichtigere Daten überschrieben.
Um einen Kanal anzuhaben bzw. zu managen, der eine beschränkte Menge an Puffer-
Speicher verwendet (z. B. einen Fest-Raten-(Kanal)), werden bei einer Ausfürungsform
der vorliegenden Erfindung alle Daten übertragen, falls eine ausreichende Bandbreite
verfügbar ist; ansonsten werden weniger wichtige Daten gelöscht und nur wichtigere
Daten übertragen.
Die Fig. 30 zeigt ein System, das einen Kanal-Manager verwendet. Nimmt man Bezug
auf die Fig. 30, so erzeugt eine Wavelet-Transformation 3001 Koeffizienten. Diese
Koeffizienten werden dem Kontext-Modell 3002 unterworfen. Das Kontext-Modell 3002
ist mit einem Kanal-Manager 3003 verbunden bzw. an diesem angeschlossen, der einen
Puffer-Speicher beinhaltet. Der Kanal-Manager 3003 ist an einem Kanal 3004
beschränkter Bandweite angeschlossen.
Der Kanal-Manager 3003 steuert die Rate, bei der Daten zu dem Kanal 3004 ausgegeben
werden. Wenn Daten in seinem Puffer-Speicher empfangen werden, bestimmt der Kanal-
Manager 3003, ob die Datenmenge größer ist, als die Bandbreite des Kanals 3004. Falls
die Datenmenge nicht größer ist, dann gibt der Kanal-Manager 3003 alle Daten aus. Auf
der anderen Seite, falls die in den Puffer-Speicher empfangene Datenmenge größer ist,
als die Kanalbandbreite, dann löscht der Kanal-Manager 3003 Information in seinem
Puffer-Speicher, um die Bandbreite des Kanals 3004 anzupassen bzw. in
Übereinstimmung zu bringen.
Der Kanal 3004 kann seine Bandbreite dem Kanal-Manager 3003 anzeigen. Bei einer
anderen Ausführungsform kann der Kanal-Manger 3003 die Bandbreite des Kanals 3004
dynamisch bestimmen, die auf der Menge der Zeit basiert, die der Kanal 3004 benötigt,
um eine vorbestimmte Einheit (z. B. Paket) von Daten durch den Kanal 3004 zu senden.
Das heißt, die Kanal-Bandbreite kann als eine Dynamische behandelt werden, falls
gewünscht.
Bei einer Ausführungsform bearbeitet der Kanalmanager 3003 ein Bild, das in Elemente
bzw. "Tiles" (oder Bänder) unterteilt ist. Dies ist ein "Element dominiert über
Wichtigkeit"-Schema bzw. "Tile dominiert über Wichtigkeit"-Schema im Gegensatz zu
dem Fest-Größen-Speichermanager, wo das in Elemente aufteilen bzw. "tiling" und die
Wichtigkeit in gewisser Weise unabhängig sind. Jedes Element bzw. jedes "Tile" wird
getrennt kodiert und durch Wichtigkeits-Niveaus und Seiten fester Größe geteilt. Deshalb
werden alle kodierte Daten für jedes Element bzw. jedes "Tile" zusammen gruppiert.
Kodierte Daten innerhalb jedes Elements bzw. innerhalb jedes "Tiles" werden mit
Wichtigkeits-Niveaus etikettiert bzw. gekennzeichnet.
Bei einer Ausführungsform ist der Puffer-Speicher in dem Kanal-Manager 3403
wenigstens zweimal (oder vielleicht dreimal) so groß wie die Paketgröße des Kanals und
einige Male größer (vielleicht viermal) als die erwartete komprimierte Datengröße für
ein Element bzw. "Tile".
Eine feste Maximalmenge von Puffer-Speicher wird einem Element bzw. Tile
zugewiesen. Die Maximalmenge wird der Bandbreite des Kanals angepaßt. Der Puffer-
Speicher wird in Segmente fester Größe aufgeteilt und wie erforderlich zugeordnet. Falls
die Speicher-Verwendung das erlaubte Maximum erreicht, werden Segmente erneut
zugewiesen, wie in dem Management eines Fest-Größen-Speichersystems bzw. eines
Speichersystems fester Größe.
Fig. 31 erläutert ein Beispiel einer Verwendung eines Puffer-Speichers. Nimmt man
Bezug auf Fig. 31, so hat ein Zirkular-Puffer-Speicher mehrere Fest-Größen-Segmente
3101, die in ihre Fest-Größen-Pakete 3102 für Kanal-Eingang/Ausgang aufgeteilt sind.
Wie gezeigt, können verschiedene Elemente bzw. Tiles von Daten dasselbe Speicherpaket
einnehmen. Bei einer Ausführungsform stellen die verschiedenen Elemente bzw. Tiles
verschiedene Wichtigkeits-Niveaus dar. Wenn die Paket-Größen-Menge des Puffer-
Speichers verwendet wird, zeigt der Kanal-Manager 3003 dem Kontext-Modell an, die
Daten zu dem Kanal 3004 (Fig. 30) auszugeben. Wie gezeigt, wurde das Element bzw.
das Tile N-2 und ein Tile des Elements bzw. Tiles N-1 als das aktuelle Paket ausgegeben
werden. Somit wird eine Paket-Größen-Menge des Speichers zugeordnet bzw. belegt und
abgelegt bzw. gespeichert, um die Bandbreite des Kanals anzupassen.
Falls der Puffer nicht aufgefüllt ist, kann der Extraspeicher für zukünftige Elemente bzw.
Tiles verwendet werden. Bei einer Ausführungsform wird nur ein Bruchteil (1/2, 1/3,
etc.) des Extraspeichers durch das nächste Element bzw. Tile genutzt, um merkbare
Element- bzw. Tile-Grenzen, beim Beginn einer Schwierigkeit eine Region in
Abhängigkeit von dem nächsten Block zu komprimieren, zu vermeiden.
Der Kanal-Manager der vorliegenden Erfindung kann dort verwendet werden, wo Daten
nur über eine gewisse Zeitperiode übertragen werden können. Verwendet man einen
derartigen Kanal-Manager, so ereignen sich die Daten-Transmission während der
Zeitperiode unbeachtet der Komplexität, weil die Daten basierend auf ihrer Wichtigkeit
eingebettet sind.
Ein Ziel des Kanal-Managers der vorliegenden Erfindung ist es, Minimal-Speicher zu
verwenden. Bei einer Ausführungsform, bei der der Kanal-Manager keinen Puffer-
Speicher enthält, kann das folgende verwendet werden:
für jede Kodiereinheit
für jede Bit-Ebene tue
für jede Frequenz tue
für jede räumliche Stelle tue.
für jede Bit-Ebene tue
für jede Frequenz tue
für jede räumliche Stelle tue.
Bei einer Ausführungsform wird der Kodierer (oder setzte ihn in einen bekannten
Zustand) zu dem Start eines jeden Bandes zurückgesetzt. Bei einer Ausführungsform
umfaßt ein Band 16 Zeilen für eine Vier-Niveau-Zerlegung, falls der Band-Speicher
reduziert werden soll.
Fig. 32 erläutert einen Bit-Strom, der das obige Verfahren verwendet. Nimmt man Bezug
auf Fig. 32, so wird der Bit-Strom in Fest-Größen-Segmente aufgeteilt, welche Kanal-
Pakete, Scheiben-Sektoren oder das sind, was auch immer eine vernünftige Puffermenge
für den Kanal ist. Bemerkenswert ist, daß diese Division nicht mehr sein kann, als eine
logische Division während des Kodierens; der Kodierer kann ausgeben, ohne Puffer zu
verwenden, falls es erwünscht ist. Jedes Fest-Größen-Segment beinhaltet eine Anzeige
der wichtigsten Daten in dem Segment.
Der Aufbau eines Segments ist in Fig. 33 gezeigt. Nimmt man Bezug auf Fig. 33, so
beinhaltet der Bitstrom für ein Segment kodierte Daten 3301, einen optionalen Zeiger
bzw. optionale Zeiger oder ID 3302 und ein Niveau der wichtigsten Daten in dem
Segment 3303. Bei einer Ausführungsform umfaßt das Feld 3303 2 bis 5 Bits. Falls das
wichtigste Niveau 0 ist, (das wichtigste), ist der nächste zu den letzten M Bits des
Segments ein Zeiger, der aussagt, wo in dem Segment die Niveau-0-Daten beginnen.
Bemerkenswert ist, daß es sich bei dem ersten Datensegment vollständig um kodierte
Daten handeln kann, es ist kein Overhead nötig.
Bei einer Ausführungsform kann der Startpunkt für jedes Band identifiziert werden, indem
Neustart-Markierer bzw. "restart markers", ähnlich zu jenen, die bei dem JPEG-Standard
verwendet werden, verwendet werden. Jedoch sollte der verwendete Markierer dasjenige
Symbol sein, das am wenigsten oft während des Kodierens auftritt.
Betrachtet man nun wieder Fig. 31, so wird angenommen, daß es erwünscht ist, nur
wenige Wichtigkeits-Niveaus (vielleicht nur die wichtigsten Niveaus) zu dekomprimieren.
Die Dekomprimierung beginnt mit dem ersten Segment. Bezüglich Segment 2 wird das
"Niveau der wichtigsten Daten im Segment" überprüft und vielleicht kann das ganze
Segment dort übersprungen bzw. übergangen werden, wo das wichtigste Niveau, das in
dem Segment enthalten ist, geringer ist, als das Niveau bzw. die Niveaus, die
dekomprimiert werden. Bezüglich des dritten Segments wird der Zeiger verwendet, um
den Beginn des Bandes 2 zu finden, und die Dekompression des Bandes 2 kann beginnen.
Bemerkenswert ist, daß es erforderlich sein kann, um zu gewährleisten, daß alle
höc 25532 00070 552 001000280000000200012000285912542100040 0002019626615 00004 25413hstwertigen Daten in einem Segment erhalten werden, das ganze Segment zu
dekomprimieren, insbesondere, wenn mehr als ein Band in das Segment fällt.
Indem selektiv nur eine vorbestimmte Anzahl von signifikanten Bändern dekomprimiert
werden, kann ein "Vorschau"-Bild erhalten werden. Das kann vorteilhaft sein, wenn Daten
in einer eingebetteten Form vorliegen und verlustbehaftete Versionen von verlustfreien
Daten gewünscht werden.
In Abhängigkeit von den gewünschten Zugriffs- und Quantisierungsmöglichkeiten und
davon, ob oder ob nicht die Zeit zur Dekompression eines ganzes Bandes wichtig ist, kann
der optionale Zeiger bzw. können die optionalen Zeiger oder ID am Ende des Segments
folgendes enthalten:
- - Einen Nächst-Segment-Zeiger zum Fest-Größen-Speichermanagement.
- - Eine ID (d. h. eine Identifizierung bzw. eine Kennzeichnung) des Segments oder eine ID des enthaltenden Bandes oder der enthaltenden Bänder. (Unterstützt Kanal-Quantisierung, würde anzeigen, falls Segment 2 zum Beispiel weggelassen würde).
- - Die Anzahl verschiedener Bänder, wofür das Segment Daten enthält (oder wenigstens ein Bit, das anzeigt, daß ein Band mehr als zwei Segmente enthält). (Unterstützt das Nicht-Dekomprimieren ganzer Segmente nach dem Dekomprimieren der gewünschten Daten).
Ein Beispiel für den Overhead für ein Band von 512×16 Pixel, betrachtet ein 8-Bit-Bild
mit 2 : 1 verlustfreier Kompression und eine Segment-Größe von 512 Bytes.
Bemerkenswert ist, daß ein Band typischerweise zu 8 Segmenten komprimiert. Für 32
Wichtigkeits-Niveaus werden 5 Bit-Etiketten bzw. 5 Bit-Kennzeichnungen verwendet.
Nimmt man an, daß Zeiger auf Byte-Grenzen sind, so werden 9-Bit-Zeiger verwendet.
Deshalb gibt es 49 Overhead-Bits/(32K komprimierte Bits + 49), die eine Gesamtheit
von 0,15% darstellen.(Overhead sind Daten, die nicht zu den eigentlichen übertragenen
Daten gehören.)
Ein Konzept einer nahezu verlustfreien Kompression basiert auf den absoluten Fehler
bei den rekonstruierten Pixelwerten. Folglich wird bei einem nahezu verlustfreien
komprimierten Bild mit einem absoluten Fehler von 1 garantiert, daß kein Pixelwert in
dem dekomprimierten Bild von dem Original sich um mehr als eine Einheit des
Pixelwerts unterscheidet. Dies ist eine absolute Definition unabhängig von der Pixeltiefe
oder des Dynamikbereichs des Bildes. Etwas Offensichtliches und unter einigen
vernünftigen Annahmen Optimales für ein derartiges System, ist es, den
Kompressions/Dekompressions-Teil verlustfrei zu halten und Vorverarbeitungs- und
Nachverarbeitungs-Schematas zu verwenden, um "nahezu-verlustfrei" zu erreichen.
Dieses Verfahren wurde bei dieser Implementation übernommen.
Das nahezu verlustfreie komprimierte Bild mit einem absoluten Fehler von e wird durch
das Quantisierungsverfahren erzielt, das alle 2e+1 aufeinanderfolgenden ganzen Zahlen
auf ihre mittlere ganze Zahl abbildet. Zum Beispiel werden die Pixelwerte für einen
Fehler, der gleich 3 ist, derartig quantisiert, daß 0 bis 6 auf 3 und 7 bis 13 auf 10
abgebildet wird, usw. Das quantisierte Bild als solches ist für ein Kompressions-System
auf Transformationsbasis nicht geeignet. Folglich wird es eins-zu-eins (verlustfrei) auf
ein Bild mit einer geringeren Dynamikspanne oder -tiefe abgebildet, das das
oberflächliche bzw. "shallow" Bild genannt wird. Dies wird durchgeführt, indem die
mittleren Werte (repräsentativen Werte) auf aufeinanderfolgende ganze Zahlen unter
Aufrechterhaltung der Ordnung abgebildet werden. Mathematisch wird ein gegebener
Pixelwert x zu folgendem quantisiert:
Die Eins-zu-Eins-Abbildung des repräsentativen Wertes auf die oberflächlichen bzw.
"shallow" Bild-Werte lautet:
Das inverse der Eins-zu-Fins-Abbildung p, das die oberflächlichen bzw. "shallow" Bild-
Werte zurück auf die repräsentativen Werte abbildet, lautet:
p-1(x)=e·(x+1).
Quantisierung (q(x))) gefolgt von der Abbildung auf die oberflächlichen bzw. "shallow"-
Bild-Werte (p(x)) ist die vor-verarbeitende Operation, die die verlustfreie Kompression
fortsetzt. Die Abbildung von den oberflächlichen bzw. "shallow" Bild-Werten auf die
repräsentativen Werten bildet die Nach-Verarbeitungs-Operation, die der verlustfreien
Dekompression folgt.
Transformations-Bereichs-Quantisierung kann ebenso verwendet werden. Viele
Koeffizienten haben eine Wirkung auf das Fortschreiten von Spitzen-Fehlern ("peak
errors") durch mehrere Niveaus der Transformation. Es ist leichter, die Wirkung auf
Spitzen-Fehler für die Hochpaß-Koeffizienten zu bestimmen, die keine Kinder haben.
Man betrachte ein eindimensionales Signal, das mit einem maximalen Spitzen-Fehler
von ±E kodiert werden soll. Dies kann erreicht werden, indem die Hochpaß-Koeffizienten
feinsten Details auf ±2E quantisiert werden. Für ein zweidimensionales Signal können,
da es zwei Anwendungen von Hochpaß-Filtern gibt, die HH-Koeffizienten feinsten
Details auf ±4E quantisiert werden.
Eine Alternative für die Verwendung einer Quantisierung des Eingangsbildes ist es, die
Entscheidungen zu dem Entropie-Kodierer zu steuern. Ein Beispiel ist das folgende. Für
jeden Koeffizienten wird der Koeffizient 0 gesetzt, wenn das Nullsetzen des Koeffizienten
nicht verursachen wurde, daß der Fehler in irgendeinem Pixel, der durch diesen
Koeffizienten beeinflußt wird, den maximalen Fehler überschreitet. Bei einigen
Implementationen werden nur bestimmte Koeffizienten getestet, zum Beispiel nur die
AC-Koeffizienten, die keine Kinder haben. Koeffizienten können mit einer "gierigen"
Strategie betrachtet werden, wo einer zu einer Zeit betrachtet wird. Andere Strategien
können kleine Gruppen von Koeffizienten betrachten und wählen, daß der größte
mögliche Untersatz der Gruppe nullgesetzt wird.
Wie oben beschrieben, wird die Quantisierung durch die einbettende Funktion erreicht
und wird optimiert, um die Leistungsfähigkeit bezüglich einer quantitativen Metrik, wie
zum Beispiel eine RMSE, zu maximieren. Bei einer Ausführungsform wird die
Quantisierung der verschiedenen Koeffizienten durchgeführt, um verbesserte Ergebnisse
bezüglich des menschlichen visuellen Systems zu erreichen. In einem derartigen Fall ist
eine geringe Modifikation des einbettenden Schemas erforderlich. Zum Beispiel werden
die Koeffizienten verschoben, um die Beziehung zwischen ihnen um einen Faktor 2 zu
ändern und/oder um die Zahl in einem unterschiedlichen Typus von Numerierungssystem
oder Zahlensystem, wie zum Beispiel dem Gray-Kode, darzustellen.
Das komprimierte Wavelet-System der vorliegenden Erfindung kann bei einer Bild-
Editier-Situation nützlich sein. Beim Stand der Technik ist die Anwendung von Bild-
Verarbeitungs-Funktionen auf ein Druckbild voller Auflösung zeitaufwendig und macht
eine interaktive Verarbeitung schwierig.
Bei einer Ausführungsform könnte ein Bild-Editier-System, falls es Elemente bzw. Tiles
sicherte, die komprimiert sind, sehr schnell Operationen auf die Scalen-Repräsentation
(der sehr tiefe Durchgang) anwenden, die für den Benutzer zu berechnen sind. Dies kann
sehr schnell getan werden, weil nur die dargestellten Pixel bearbeitet werden. Es ist nur
eine Annäherung des Endergebnisses, da die eigentlichen Pixel voller Auflösung die
Ausgabe bzw. den Ausgang beeinflussen. Der Benutzer wird deshalb bezüglich einiger
Abschnitte des Bildes (z. B. auf etwas Text) vergrößernd zugreifen. Wenn der Benutzer
dies tut, wendet das Bild-Editier-System die Operation auf jenen Teil des Bildes an. Um
dies zu erleichtern, wird ein Baum gespeichert, der die komprimierten Koeffizienten und
Informationen enthält, um die herum Verarbeitungsoperationen angewendet wurden und
die weiterhin angewendet werden müssen.
Bei einer Ausführungsform werden die Wichtigkeits-Niveaus neu definiert, um eine
verlustfreie Kompression in einem definierten Fenster zu erlauben und eine
verlustbehaftete Kompression für den Rest des Bildes. Das Fenster kann fest sein oder
wählbar durch einen Benutzer. Es kann mehrere Fenster verschiedener Wichtigkeit geben.
Bei einer Ausführungsform ist das Fenster so klein wie 48×48 Blocks, obwohl es möglich
sein sollte, ein viel feineres Auftreten zu haben, sogar hinunter bis zu dem Zwei-Pixel-
Niveau.
Eine mögliche Anwendung sind Satellitenbilder dort, wo Satelliten ein verlustfreies
Fenster auf Daten anwenden, so daß statistische Studien nicht durch JPEG-Artifakte
verdorben werden, aber die verlustbehaftete Kompression erlaubt ein viel breiteres
Blickfeld, als mit der verlustfreien Kompression möglich wäre.
Bei einer Ausführungsform zeichnet der Benutzer willkürliche Boxen auf ein Bild und
spezifiziert die relative Wichtigkeit der Daten in dieser Box. Wenn einmal eine Box
gezeichnet worden ist, erhöht die Software die Größe der Box auf die kleinste Größe,
die die erforderlichen Nebenbedingungen erfüllt und die Benutzer-Box enthält. Der File-
Header bzw. das Datei-Kopfteil würde Informationen über die verwendeten Boxen und
das Wichtigkeits-Niveau enthalten. Der Kodierer und Dekodierer würde dann mehr
Auflösung den Koeffizienten in den wichtigen Boxen liefern, wenn Kodieren/Dekodieren
fortschreitet. Für den Satelliten-Bild-Fall ist es wahrscheinlich, daß das wichtige Bild
vordefiniert ist.
Für einen verlustbehafteten Kompressor ist im allgemeinen eine idempotente Operation
wie DCDCI = DCI, wobei I das Bild, C die Kompressions-Operation und D die
Dekompressions-Operation ist. Bei der vorliegenden Erfindung sollten Daten, wenn sie
auf X Bits komprimiert und dann dekomprimiert werden, in der Lage sein, erneut auf
X Bits komprimiert zu werden und die Original X Bits zu haben. Es gibt eine sogar noch
stärkere Version der Idempotenz für ein eingebettetes System. Bei einer Ausführungsform
ist ein Bild, wenn es auf X Bits komprimiert wird, dekomprimiert und auf Y Bits mit Y
< X rekomprimiert wird, dasselbe, als wenn das Originalbild auf Y Bits komprimiert wird.
Dies ist wichtig, weil die Kompression und Verarbeitung die Bilder veranlaßt, weiter vom
Original abzutrifften. Falls der Kompressor bzw. die Kompressionseinrichtung idempotent
ist, dann beeinflussen mehrere verlustbehaftete Kompressions-Dekompressions-Zyklen
nicht (negativ) die Daten. Bei der vorliegenden Erfindung spielt es keine Rolle, wieviele
Male Daten bei dem selben Kompressions-Verhältnis komprimiert und dekomprimiert
werden. Ebenso erzeugt ein verlustbehafteter Eingang zu einem Parser, der einer weiteren
Quantisierung unterworfen ist, ein identisches Ergebnis für den Fall, wenn ein
verlustfreier Eingang verwendet wird. Somit umfaßt die vorliegende Erfindung ein
idempotentes System auf Transformationsbasis, das eine Wavelet-Transformation, ein
Kontext-Modell und einen Entropie-Kodierer beinhaltet, so daß Koeffizienten beschrieben
werden und in einer Ordnung gespeichert werden, so daß die Entfernung der Information
nicht die Beschreibung vorhergehender Koeffizienten verändert.
Die vorliegende Erfindung kann für eine Anzahl von Anwendungen verwendet werden,
von denen einige als Beispiele unten erwähnt sind. Insbesondere kann die Erfindung
hochwertige Anwendungen mit hoher Auflösung und tiefen Pixels und Anwendungen,
die bezüglich Artifakten intolerant sind, verwenden. Die vorliegende Erfindung
ermöglicht, daß hochwertige Anwendungen die höchste Qualität in Hochqualitäts-
Umgebung aufrechterhalten, während Anwendungen mit einer beschränkteren Bandbreite,
Datenspeicher oder Anzeigefähigkeiten ebenso dieselben komprimierten Daten verwenden
können. Dies ist genau die Vorrichtungs-unabhängige Darstellung, die allgemein von
modernen bilddarstellenden Anwendungen, wie zum Beispiel Web-Browsern gefordert
wird.
Die überragende verlustfreie Kompressions-Leistungsfähigkeit der vorliegenden
Erfindung bei Bildern mit tiefen Pixeln (10 Bits bis 16 Bits pro Pixel) ist ideal für
Medizinbilder bzw. Medizinbilderdarstellung. Zusätzlich zu der verlustfreien
Kompression handelt es sich bei der vorliegenden Erfindung um einen wahren
verlustbehafteten Kompressor bzw. eine wahre verlustbehaftete Kompressionseinrichtung,
und zwar ohne die vielen Artifakte, die für Block-basierte Kompressionseinrichtungen
bekannt sind. Verlustbehaftete Artifakte, die abgeleitet werden, indem die vorliegende
Erfindung verwendet wird, neigen dazu entlang scharfer Kanten zu sein, wo sie häufig
durch visuelle Maskierungsphänomene des menschlichen visuellen Systems versteckt
werden.
Die vorliegende Erfindung kann bei Anwendungen verwendet werden, die die "Prepress"-
Industrie mit einschließt, bei der die Bilder dazu neigen, von sehr hoher Auflösung zu
sein und eine hohe Pixeltiefe zu haben. Mit der pyramidalen Zerlegung der vorliegenden
Erfindung ist es leicht, für den "Pre-press"-Bediener Bild-Verarbeitungs-Operationen
auf einer verlustbehafteten Version geringerer Auflösung des Bildes (auf einem Monitor)
durchzuführen. Wenn er zufrieden ist, können dieselben Operationen auf der verlustfreien
Version durchgeführt werden.
Die vorliegende Erfindung ist ebenso anwendbar bei der Verwendung in einer Facsimile-
Dokument-Anwendung, wo die für die Übertragung ohne Kompression erforderliche Zeit
häufig zu lang ist. Die vorliegende Erfindung erlaubt eine sehr hohe Bildausgabe aus Fax-
Maschinen mit verschiedenen räumlichen und Pixel-Auflösungen. Da die
Transmissionszeit bzw. Übertragungszeit eine "Prämie" bei dieser Anwendung ist, ist
das Interpolations-Merkmal der vorliegenden Erfindung nützlich.
Die folgende Erfindung kann bei Bild-Archivier-Systemen verwendet werden, die eine
Kompression erfordern, insbesondere zur Erhöhung der Speicherkapazität. Der
vorrichtungsunabhängige Ausgang der vorliegenden Erfindung ist nützlich, weil auf das
System durch Systeme mit unterschiedlichen Resourcen bezüglich der Bandbreite,
Speicher und Anzeige zugegriffen werden kann. Ebenso sind die progressiven
Transmissions-Fähigkeiten der vorliegenden Erfindung für das Browsing nützlich.
Schließlich ist die verlustfreie Kompression für Ausgangs-Vorrichtungen bzw. Ausgabe-
Vorrichtungen bei Bild-Archivier-Systemen, die durch die vorliegende Erfindung
bereitgestellt werden können.
Die hierarchisch-progressive Natur bzw. fortschreitende Natur in dem verlustfreien oder
hochqualitäts-verlustbehafteten Datenstrom der vorliegenden Erfindung, macht es ideal
zur Verwendung in dem World Wide Web, insbesondere dort, wo Vorrichtungs-
Unabhängigkeit, progressive Transmission, hohe Qualität und offene Standards gefordert
werden bzw. ein Muß sind.
Die vorliegende Erfindung ist auf Satelliten-Bilder anwendbar, insbesondere auf jene,
die dazu neigen, bezüglich Pixel tief zu sein bzw. eine große Pixeltiefe aufzuweisen und
hohe Auflösung zu haben. Weiterhin weisen Satelliten-Bilder-Anwendungen Kanäle
beschränkter Bandbreite auf. Die vorliegende Erfindung erlaubt Flexibilität und mit ihren
fortschreitenden bzw. progressiven Transmissions-Qualitäten, kann sie verwendet werden,
um Menschen zu erlauben, "Vorschau"-Bilder schnell zu durchsuchen bzw. zu "browsen".
Einige Satelliten verwenden ein verlustfreies Fenster auf Daten an, so daß statische
Studien nicht durch JPEG-Artifakte verdorben werden bzw. durcheinandergebracht
werden, aber die verlustbehaftete Kompression erlaubt ein viel breiteres Blickfeld, als
es mit der verlustfreien Kompression möglich wäre.
Bei einer Anwendung können die Wichtigkeits-Niveaus neu definiert werden, um eine
verlustfreie Kompression in einem definierten bzw. festgelegten Fenster und eine
verlustbehaftete Kompression für den Rest des Bildes zu erhalten. Das Fenster kann fest
sein oder durch einen Benutzer wahlbar. Es kann mehrere Fenster verschiedener
Wichtigkeit geben. Eine Implementation wäre wahrscheinlich mit 48×48 Blöcken als die
kleinste Einheit für ein Fenster, obwohl es möglich sein sollte, eine viel feinere
Genauigkeit zu haben, sogar hinunter bis zu dem Zwei-Pixel-Niveau. Dies würde
wahrscheinlich zu genaueren Pixel führen, die nahe der verlustfreien Region bzw. dem
verlustfreien Bereich liegen, aber dies könnte bewirken, daß die Region weniger auffällt
bzw. hervorsticht.
Eine Art und Weise, in der dies implementiert werden könnte, ist es, den Benutzer zu
veranlassen, beliebige Boxen auf einem Bild zu zeichnen und die relative Wichtigkeit
der Daten in der Box zu spezifizieren. Software würde die Box bis auf die kleinste Größe
größer machen, die die erforderlichen Nebenbedingungen erfüllt und die Benutzer-Box
enthält. Der File-Header bzw. das Datei-Kopfteil würde Informationen über die
verwendeten Boxen und das Wichtigkeits-Niveau enthalten. Der Kodierer und der
Dekodierer würden dann eine höhere Auflösung der Koeffizienten in den wichtigen Boxen
bereitstellen, wenn das Kodieren/Dekodieren fortschreitet. Für den Satelliten-Bild-Fall
ist es wahrscheinlich, daß das wichtige Bild vordefiniert ist. Bemerkenswert ist, daß dies
auf Anwendungen anwendbar ist, die sich von Satelliten-Bildern unterscheiden.
"Fest-Raten"-, beschränkte-Bandbreiten-Anwendungen, wie zum Beispiel ATM-
Netzwerke erfordern Wege, auf denen Daten reduziert werden, falls es zu einem Überlauf
der verfügbaren Bandbreite kommt. Jedoch sollte es keine Schlechterung bezüglich der
Qualität geben, falls es genug Bandbreite gibt (oder die Kompression hoch genug ist).
In ähnlicher Weise brauchen "Fest-Größen"-Anwendungen, wie Frame-Speicher bzw.
Rahmen-Speicher mit beschränkten Speicher in Computern und andere Bilderzeugungs-
Vorrichtungen einen Weg, um Daten zu verringern, falls sich der Speicher füllt.
Wiederum sollte es keinen Nachteil für ein Bild geben, das verlustfrei in die richtige
Menge von Speicher komprimiert werden kann.
Der eingebettete Kodestrom der vorliegenden Erfindung dient beiden dieser
Anwendungen. Das Einbetten ist implizit, um dem Kodestrom zu erlauben, daß er für
die Übertragung oder Speicherung eines verlustbehafteten Bildes beschnitten oder
abgeschnitten wird. Falls kein Beschneiden oder Abschneiden erforderlich ist, kommt
das Bild verlustfrei an.
Zusammenfassend stellt die vorliegende Erfindung ein einziges Halbtonbild-
Kompressionssystem bereit. Das System der vorliegenden Erfindung ist verlustfrei und
verlustbehaftet mit demselben Kodestrom und benutzt Quantisierung, die eingebettet ist
(durch den Kodestrom impliziert). Das System ist ebenso pyramidal, progressiv und liefert
eine Einrichtung zur Interpolation und ist einfach zu implementieren. Deshalb stellt die
vorliegende Erfindung ein flexibles "Vorrichtungs-unabhängiges"-Kompressions-System
bereit.
Das vereinigte verlustfreie und verlustbehaftete Kompressions-System ist sehr nutzvoll.
Nicht nur ist dasselbe System zu einer verlustbehafteten und verlustfreien Kompressions-
Leistungsfähigkeit nach dem Stand der Technik in der Lage, derselbe Kodestrom ist es
ebenso. Die Anwendung kann entscheiden, den verlustfreien Kode eines Bildes zu
behalten oder ihn zu einer verlustbehafteten Version abzuschneiden, und zwar während
des Kodierens, während des Speicherns oder der Übertragung des Kodestroms oder
während des Dekodierens.
Verlustbehaftete Kompression, die durch die vorliegende Erfindung bereitgestellt wird,
wird durch die eingebettete Quantisierung erreicht. Dies bedeutet, der Kodestrom
beinhaltet die Quantisierung. Die eigentlichen bzw. tatsächlichen Quantisierungs-(oder
visuellen Wichtigkeits-)Niveaus können eine Funktion des Dekodierers oder des
Transmissions-Kanals und nicht notwendig des Kodierers sein. Falls es die Bandbreiten-,
Speicher- und Anzeigen-Resourcen bzw. Mittel erlauben, wird das Bild verlustfrei
wiedergewonnen. Ansonsten wird das Bild nur soweit quantisiert, wie dies aufgrund der
am meisten beschränkten Resource erforderlich ist.
Das Wavelet, das bei der vorliegenden Erfindung verwendet wird, ist pyramidal,
wohingegen eine Zerlegung um einen Faktor 2 des Bildes ohne Differenz-Bilder
durchgeführt wird. Dies ist spezifischer als eine hierarchische Zerlegung. Für
Anwendungen, die eine rasch angefertigte Darstellung bzw. Skizze für das Browsing oder
zum Darstellen von Bildern auf Vorrichtungen niedriger Auflösung benötigen, ist die
pyramidale Struktur der vorliegenden Erfindung ideal.
Die Verwendung der Einbettung ist bei der vorliegenden Erfindung progressiv,
insbesondere gemäß Bit-Ebene, d. h. MSB wird von geringeren Bits gefolgt. Sowohl die
räumlichen als auch die Wavelet-Bereiche können progressiv zerlegt werden, obwohl
die vorliegende Erfindung speziell in dem Wavelet-Bereich progressiv ist. Für
Anwendungen die eine räumliche Auflösung aber eine geringere Pixelauflösung haben,
wie zum Beispiel Drucker, ist das progressive Ordnen der Bits bei der vorliegenden
Erfindung ideal. Diese Merkmale sind mit demselben Kodestrom verfügbar.
Ein Vorteil der Struktur der vorliegenden Erfindung ist es, daß es einen bezüglich der
Berechnung effizienten Modus für die Interpolation bereitstellt. Falls eine höhere
Auflösung gewünscht wird, können die Hochpaß-Koeffizienten von den verfügbaren
Wavelet-Koeffizienten interpoliert werden und das inverse Wavelet der vorliegenden
Erfindung wird durchgeführt. Dieses Verfahren besteht visuell in Konkurrenz mit
bikubischen Splines, aber ist bezüglich der Berechnung weniger intensiv mit der
Transformation der vorliegenden Erfindung.
Die vorliegende Erfindung ist idempotent, was bedeutet, daß ein Bild in einer
verlustbehafteten Form dekomprimiert und zu demselben Kodestrom rekomprimiert
werden kann. Dieser Vorteil erlaubt mehrere Kompressions- und Dekompressions-Zyklen
bei einer Anwendung, die Browsen, Filtern oder Editieren umfaßt.
Die vorliegende Erfindung ist relativ einfach zu implementieren, sowohl in Software als
auch in Hardware. Die Wavelet-Transformation kann mit nur vier Addier/Subtrahier-
Operationen und wenigen Verschiebungen für jedes Hochpaß-, Tiefpaß-Koeffizientenpaar
berechnet werden. Das Einbetten und Kodieren wird mit einem einfachen "Kontext-
Modell" und einem binären "Entropie-Kodierer" durchgeführt. Der Entropie-Kodierer
kann mit einem Finalautomaten bzw. "finite state machine" oder parallelen Kodierern
durchgeführt werden.
Obwohl viele Änderungen und Modifikationen der vorliegenden Erfindung für einen
einfachen Fachmann ohne Zweifel offensichtlich sein werden, nachdem er die
vorhergehende Beschreibung gelesen hat, ist es selbstverständlich, daß die besondere
Ausführungsform, die gezeigt wurde, und mittels Erläuterungen beschrieben wurde, in
keinster Weise beabsichtigt ist, als beschränkend angesehen zu werden. Deshalb ist es
nicht beabsichtigt, daß Hinweise auf Details der bevorzugten Ausführungsform den
Umfang der Ansprüche beschränken, die selbst nur jene Merkmale wiedergeben, die als
wesentlich bezüglich der Erfindung angesehen werden.
Die Erfindung läßt sich grob wie folgt zusammenfassen:
Ein Kompressions- und ein Dekompressions-System, bei dem ein reversibler Wavelet- Filter verwendet wird, erzeugt Koeffizienten von Eingangsdaten, wie zum Beispiel Bilddaten. Der reversible Wavelet-Filter stellt eine effiziente Transformation dar, die mit einer Ganzzahl-Arithmetik implementiert wird, die eine exakte Rekonstruktion aufweist. Die vorliegende Erfindung verwendet den reversiblen Wavelet-Filter in einem verlustfreien System (oder verlustbehafteten System), bei welchem ein eingebetteter Kodestrom aus den Koeffizienten erzeugt wird, die durch das Filter erzeugt werden. Ein Entropie-Kodierer führt ein Entropie-Kodieren auf dem eingebetteten Kodestrom durch, um den komprimierten Datenstrom zu erzeugen.
Ein Kompressions- und ein Dekompressions-System, bei dem ein reversibler Wavelet- Filter verwendet wird, erzeugt Koeffizienten von Eingangsdaten, wie zum Beispiel Bilddaten. Der reversible Wavelet-Filter stellt eine effiziente Transformation dar, die mit einer Ganzzahl-Arithmetik implementiert wird, die eine exakte Rekonstruktion aufweist. Die vorliegende Erfindung verwendet den reversiblen Wavelet-Filter in einem verlustfreien System (oder verlustbehafteten System), bei welchem ein eingebetteter Kodestrom aus den Koeffizienten erzeugt wird, die durch das Filter erzeugt werden. Ein Entropie-Kodierer führt ein Entropie-Kodieren auf dem eingebetteten Kodestrom durch, um den komprimierten Datenstrom zu erzeugen.
Das erfindungsgemäße Kompressions- und Dekompressionssystem bzw. die
erfindungsgemäßen Kodierer und Dekodierer sowie die entsprechenden Verfahren lassen
sich insbesondere mit folgendem kombinieren:
- - Einer Einrichtung zur Umwandlung physikalischer Signale und Meßwerte (z. B. Tonsignale, Bildsignale etc.) in digitale Signale, die dann mittels der erfindungsgemäßen Einrichtungen komprimiert bzw. kodiert werden. Bei derartigen Umwandlungseinrichtung kann es sich z. B. um Scanner zur Bildabtastung, Einrichtungen zur digitalen Tonaufzeichnung, Meßwerterfassungssysteme zur Erfassung physikalischer Werte (z. B. Druck, Temperatur etc.) kombiniert mit einem Analog-Digitalwandler oder Ton- bzw. Sprachanalysegeräte handeln.
- - Eine Ausgabeeinrichtung zur Umwandlung der dekomprimierten bzw. dekodierten digitalen Werte in physikalische Signale (z. B. Tonausgabe mit D/A-Wandler, Ausgabe auf einem Bildschirm oder Drucker etc., Ausgabe auf Faxgeräten oder Fernsehgeräten etc.).
- - Zwischen Kompression und Dekompression kann ein langer Übertragungsweg (z. B. über Satellit, Internet etc.) liegen.
Claims (67)
1. Kodierer zum Kodieren von Eingangsdaten in einen komprimierten Datenstrom, wobei
der Entropie-Kodierer folgendes umfaßt:
einen reversiblen Wavelet-Filter, der die Eingangsdaten in eine Vielzahl von Koeffizienten transformiert;
einen ordnenden und modellierenden Mechanismus, der mit dem reversiblen Wavelet-Filter verbunden ist, wobei der ordnende und modellierende Mechanismus einen eingebetteten Kodestrom in Antwort auf die Vielzahl von Koeffizienten erzeugt; und
einen Entropie-Kodierer, der mit dem ordnenden und modellierenden Mechanismus verbunden ist, und betriebsfähig ist, um den eingebetteten Kodestrom zu entropie-kodieren, um den komprimierten Datenstrom zu erzeugen.
einen reversiblen Wavelet-Filter, der die Eingangsdaten in eine Vielzahl von Koeffizienten transformiert;
einen ordnenden und modellierenden Mechanismus, der mit dem reversiblen Wavelet-Filter verbunden ist, wobei der ordnende und modellierende Mechanismus einen eingebetteten Kodestrom in Antwort auf die Vielzahl von Koeffizienten erzeugt; und
einen Entropie-Kodierer, der mit dem ordnenden und modellierenden Mechanismus verbunden ist, und betriebsfähig ist, um den eingebetteten Kodestrom zu entropie-kodieren, um den komprimierten Datenstrom zu erzeugen.
2. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch
1 festgelegt ist, bei welchem der reversible Wavelet-Filter, der ordnende und
modellierende Mechanismus und der binäre Entropie-Kodierer in einer kausalen
Beziehung operieren bzw. arbeiten, um die Eingangsdaten in einem Durchgang zu
komprimieren.
3. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch
1 festgelegt ist, bei welchem der reversible Wavelet-Filter wenigstens eine S-
Transformation umfaßt.
4. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch
1 festgelegt ist, bei welchem der reversible Wavelet-Filter wenigstens eine TS-
Transformation umfaßt.
5. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch
1 festgelegt ist, bei welchem verschiedene Transformationen vertikal und horizontal auf
die Eingangsdaten angewendet werden.
6. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch
1 festgelegt ist, bei welchem der reversible Wavelet-Filter TS-Transformationen auf
horizontale Durchgänge und wenigstens eine S-Transformation und wenigstens eine TS-
Transformation auf vertikale Durchgänge anwendet.
7. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch
1 festgelegt ist, bei welchem der reversible Wavelet-Filter die Vielzahl der Koeffizienten
erzeugt, indem eindimensionale (1-D) Filter separat entlang Reihen und Spalten der
Eingangsdaten angewendet werden.
8. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch
1 festgelegt ist, bei welchem der reversible Wavelet-Filter eine pyramidale Zerlegung
durchführt.
9. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch
1 festgelegt ist, bei welchem der ordnende und modellierende Mechanismus die Vielzahl
von Koeffizienten ordnet und binäre Werte innerhalb der Vielzahl von Koeffizienten
ordnet, um den eingebetteten Kodestrom zu erzeugen.
10. Kodierer, der im Anspruch 9 festgelegt ist, bei welchem binäre Werte innerhalb eines
jeden der Vielzahl von Koeffizienten eingebettet geordnet sind.
11. Kodierer, der im Anspruch 10 festgelegt ist, bei welchem binäre Werte innerhalb eines
jeden der Koeffizienten nach der Bit-Wertigkeit geordnet sind.
12. Kodierer, der im Anspruch 9 festgelegt ist, bei welchem die Vielzahl der Koeffizienten
zueinander ausgerichtet werden, bevor eine Bit-Ebenen-Kodierung eine Quantisierung
ermöglicht.
13. Kodierer, der im Anspruch 12 festgelegt ist, bei welchem weniger schwer bzw. stark
quantifizierte Koeffizienten auf frühere Bit-Ebenen zu ausgerichtet sind.
14. Kodierer, der im Anspruch 9 festgelegt ist, bei welchem ein Vorzeichen-Bit mit dem
ersten Betrag-Bit ungleich-null kodiert wird.
15. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus Bits innerhalb einer Kodiereinheit modelliert, und zwar
basierend auf räumlichen und spektralen Abhängigkeiten der Koeffizienten, und bei
welchem der binäre Entropie-Kodierer das Kodieren, basierend auf den Bits durchführt,
die durch den ordnenden und modellierenden Mechanismus modelliert sind.
16. Kodierer, der im Anspruch 15 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus Bits mit Kontexten modelliert, die auf benachbarten und
Mutter-Koeffizienten basieren.
17. Kodierer, der im Anspruch 16 festgelegt ist, bei welchem die Kontexte kausal sind.
8. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der Entropie-Kodierer einen
binären Entropie-Kodierer umfaßt.
19. Kodierer, der im Anspruch 18 festgelegt ist, bei welchem der Entropie-Kodierer einen
Q-Kodierer umfaßt.
20. Kodierer, der im Anspruch 18 festgelegt ist, bei welchem der Entropie-Kodierer einen
QM-Kodierer umfaßt.
21. Kodierer, der im Anspruch 18 festgelegt ist, bei welchem der Entropie-Kodierer einen
Finalautomaten-Kodierer bzw. einen "finite state machine"-Kodierer umfaßt.
22. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der Entropie-Kodierer einen
Parallel-Kodierer umfaßt.
23. Kodierer zum Kodieren von Eingangsdaten in einen komprimierten Datenstrom,
wobei der Entropie-Kodierer oder der Kodierer folgendes umfaßt:
einen reversiblen Wavelet-Filter, der die Eingangsdaten in eine Vielzahl von Koeffizienten transformiert;
einen ordnenden und modellierenden Mechanismus, der mit dem reversiblen Wavelet-Filter verbunden ist, wobei der ordnende und modellierende Mechanismus eine eingebettete Quantisierung an der Vielzahl von Koeffizienten durchfährt, um einen eingebetteten Kodestrom in Antwort auf die Vielzahl von Koeffizienten zu erzeugen; und
einen binären Entropie-Kodierer, der mit dem ordnenden und modellierenden Mechanismus verbunden ist und betreibbar ist, um den eingebetteten Kodestrom binär zu entropie-kodieren, um den komprimierten Datenstrom zu erzeugen.
einen reversiblen Wavelet-Filter, der die Eingangsdaten in eine Vielzahl von Koeffizienten transformiert;
einen ordnenden und modellierenden Mechanismus, der mit dem reversiblen Wavelet-Filter verbunden ist, wobei der ordnende und modellierende Mechanismus eine eingebettete Quantisierung an der Vielzahl von Koeffizienten durchfährt, um einen eingebetteten Kodestrom in Antwort auf die Vielzahl von Koeffizienten zu erzeugen; und
einen binären Entropie-Kodierer, der mit dem ordnenden und modellierenden Mechanismus verbunden ist und betreibbar ist, um den eingebetteten Kodestrom binär zu entropie-kodieren, um den komprimierten Datenstrom zu erzeugen.
24. Der Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der reversible Wavelet-
Filter eine Vielzahl von Niveaus von separierbaren pyramidalen Zerlegungen durchführt,
wobei horizontale und vertikale Transformationen alternativ bzw. wahlweise angewendet
werden, und bei welchem weiterhin der reversible Wavelet-Filter eine horizontale
Zerlegung durchführt, indem nur TS-Transformationen verwendet werden, und vertikale
Zerlegungen durchführt, indem eine Kombination aus TS-Transformationen und S-
Transformationen verwendet wird.
25. Kodierer, der im Anspruch 24 festgelegt ist, bei welchem der reversible Wavelet-Filter
die vertikale Zerlegung durchführt, indem zwei TS-Transformationen gefolgt von zwei
S-Transformationen durchgeführt werden.
26. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der ordnende und
modellierende Block den Kodestrom ordnet, indem ein Header bzw. ein Kopfteil
verwendet wird, gefolgt von den Kodiereinheiten, in der Ordnung von oben nach unten.
27. Kodierer, der im Anspruch 26 festgelegt ist, bei welchem innerhalb jeder
Kodiereinheit LL-Koeffizienten beinhaltet sind, die unkodiert in Rasterordnung sind,
gefolgt von Entropie-kodierten Daten eine Bit-Ebene zu einer Zeit.
28. Kodierer, der im Anspruch 27 festgelegt ist, bei welchem die Entropie-kodierten
Daten in jeder Kodiereinheit von der höchstwertigen Bit-Ebene zu der niedrigstwertigen
Bit-Ebene geordnet sind.
29. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus Koeffizienten-Ausrichtung durchführt.
30. Kodierer, der im Anspruch 29 festgelegt ist, bei welchem Koeffizienten bei jedem
Unterblock gemäß einer Signalisierung in dem Header bzw. Kopfteil einer jeden
Kodiereinheit ausgerichtet sind.
31. Kodierer, der im Anspruch 29 festgelegt ist, bei welchem Koeffizienten bezüglich
des mittleren quadratischen Fehlers ausgerichtet sind.
32. Kodierer, der im Anspruch 23 festgelegt ist, mit dem ordnenden und modellierenden
Mechanismus, und bei welchem Koeffizienten mit Bit-Wertigkeit kodiert werden.
33. Kodierer, der im Anspruch 32 festgelegt ist, bei welchem Koeffizienten gemäß Bit-
Wertigkeit kodiert werden, wobei die erste Bit-Ebene das linkste Betrags-Bit aller
Koeffizienten ist.
34. Kodierer, der im Anspruch 33 festgelegt ist, bei welchem ein Vorzeichen-Bit für jeden
Koeffizienten bis zu der höchsten Bit-Ebene, wo jener Koeffizient einen Betrag ungleich
null aufweist, nicht kodiert wird.
35. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus Koeffizienten innerhalb jeder Bit-Ebene von dem Niedrig-
Auflösungs-, Niedrig-Frequenz-Niveau (LL) bis zu dem Hoch-Auflösungs-, Hoch-
Frequenz-(HH)Niveau ordnet.
36. Kodierer, der im Anspruch 35 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus Koeffizienten wie folgt ordnet: 4-LL, 4-HL, 4-LH, 4-HH,
3-HL, 3-LH, 3-HH, 2-HL, 2-LH, 2-HH, 1-HL, 1-LH, 1-HH.
37. Kodierer, der im Anspruch 36 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus innerhalb jedes Unterblocks in Raster-Abtast-Ordnung bzw.
Raster-Scan-Ordnung kodiert.
38. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus ein Kontext-Modell umfaßt, das Kontexte verwendet, die
auf Nachbar- und Mutter-Koeffizienten-Werten basieren.
39. Kodierer, der im Anspruch 38 festgelegt ist, bei welchem die Kontexte darauf
basieren, ob ein erstes Betrags-Bit ungleich-null beobachtet wurde und auf der Anzahl
der Bit-Ebenen seit dem ersten Betrags-Bit ungleich-null, falls das erste Betrags-Bit
ungleich-null beobachtet worden ist.
40. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem, falls das erste Betrags-Bit
ungleich-null nicht beobachtet worden ist, dann das Kontext-Modell Kontexte verwendet,
um einen Koeffizienten zu konditionieren, die Information enthalten, die einer Mutter
des Koeffizienten und Information von wenigstens einem Koeffizienten, der NW, N, NE,
W, E, SW, S oder SE des Koeffizienten positioniert ist, entspricht.
41. Kodierer, der im Anspruch 40 festgelegt ist, bei welchem das Kontext-Modell
Kontexte verwendet, um einen Koeffizienten zu konditionieren, die die Mutter des
Koeffizienten mehr als ein Niveau von dem Koeffizienten entfernt enthält.
42. Kodierer, der im Anspruch 40 festgelegt ist, bei welchem, falls das erste Betrags-Bit
ungleich-null beobachtet worden ist, dann das Kontext-Modell Kontexte verwendet, die
folgendes enthalten:
- (a) das erste Betrags-Bit trat bei der letzten Bit-Ebene auf,
- (b) das erste Betrags-Bit ungleich-null trat zwischen zwei und drei Bit-Ebenen früher auf, oder
- (c) das erste Betrags-Bit ungleich-null trat mehr als drei Bit-Ebenen früher auf,
43. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem ein Vorzeichen-Bit des
gegenwartigen Koeffizienten kodiert wird, und zwar unmittelbar nachdem das
gegenwärtige Bit des gegenwärtigen Koeffizienten das erste Betrags-Bit ungleich-null
ist.
44. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem ein Kontext zum Kodieren
eines Vorzeichen-Bits, wenn das Vorzeichen des Koeffizienten unmittelbar nördlich nicht
bekannt ist, eine feste Wahrscheinlichkeit aufweist.
45. Kodierer, der im Anspruch 44 festgelegt ist, bei welchem die feste Wahrscheinlichkeit
ungefähr 0,5 aufweist.
46. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem die Kontexte zum Kodieren
binärer Werte nach dem ersten Betrags-Bit ungleich-null feste Wahrscheinlichkeiten
aufweisen.
47. Kodierer, der im Anspruch 46 festgelegt ist, bei welchem ein Kontext zum Kodieren
eines ersten binären Wertes nach dem ersten Bit ungleich-null eine feste Wahrscheinlich
keit von ungefähr 0,7 aufweist.
48. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem ein Kontext zum Kodieren
von zweiten und dritten binären Werten nach dem ersten Bit ungleich-null eine feste
Wahrscheinlichkeit von ungefähr 0,6 aufweist.
49. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem ein Kontext zum Kodieren
des vierten und nachfolgender binärer Werte nach dem ersten Bit ungleich-null bei einer
festen Wahrscheinlichkeit von 0,5 kodiert wird.
50. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der Entropie-Kodierer einen
Q-Kodierer aufweist.
51. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der Entropie-Kodierer einen
QM-Kodierer aufweist.
52. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der Entropie-Kodierer einen
Finalautomaten-Kodierer bzw. einen "finite state machine"-Kodierer aufweist.
53. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der Entropie-Kodierer einen
Parallel-Kodierer aufweist.
54. Verfahren zum Kodieren von Eingangsdaten in einen komprimierten Datenstrom,
das die folgenden Schritte aufweist:
die Eingangsdaten werden in eine Vielzahl von Koeffizienten transformiert, indem ein reversibles Wavelet-Filter verwendet wird;
ein eingebetteter Kodestrom wird in Antwort auf die Vielzahl von Koeffizienten erzeugt; und
der eingebettete Kodestrom wird entropie-kodiert, um den komprimierten Datenstrom zu erzeugen.
die Eingangsdaten werden in eine Vielzahl von Koeffizienten transformiert, indem ein reversibles Wavelet-Filter verwendet wird;
ein eingebetteter Kodestrom wird in Antwort auf die Vielzahl von Koeffizienten erzeugt; und
der eingebettete Kodestrom wird entropie-kodiert, um den komprimierten Datenstrom zu erzeugen.
55. Verfahren, das im Anspruch 54 festgelegt ist, bei welchem die Schritte der
Transformation, des Erzeugens und des Entropie-Kodierens kausal durchgeführt werden.
56. Verfahren, das im Anspruch 54 festgelegt ist, bei welchem der Schritt des
Transformierens umfaßt, das verschiedene Transformationen vertikal und horizontal auf
die Eingangsdaten angewendet werden.
57. Verfahren, das im Anspruch 56 festgelegt ist und das weiter den Schritt aufweist,
wonach wenigstens eine TS-Transformation auf die Eingangsdaten angewendet wird.
58. Verfahren, das im Anspruch 57 und insbesondere im Anspruch 56 festgelegt ist und
das weiter den Schritt aufweist, wonach wenigstens eine S-Transformation auf die
Eingangsdaten angewendet wird.
59. Verfahren, das im Anspruch 54 festgelegt ist und das weiter den Schritt aufweist,
wonach eine pyramidale Zerlegung einer Vielzahl von Niveaus an den Eingangsdaten
durchgeführt wird, und zwar einschließlich des Schrittes, wonach horizontale und
vertikale Transformationen alternativ angewendet werden, wobei nur TS-
Transformationen für horizontale Zerlegungen verwendet werden und eine Kombination
von TS-Transformationen und S-Transformationen für vertikale Zerlegungen verwendet
wird.
60. Verfahren, das im Anspruch 54 festgelegt ist, bei welchem der Schritt der Erzeugung
des eingebetteten Kodestroms die Schritte aufweist, wonach die Vielzahl der
Koeffizienten geordnet werden und binäre Werte innerhalb der Vielzahl von Koeffizienten
geordnet werden, uni den eingebetteten Kodestrom zu erzeugen.
61. Verfahren zum Dekodieren eines kodierten Datenstroms, das die folgenden Schritte
aufweist:
kodierte Daten werden für eine Kodiereinheit wiedergewonnen;
ein Bit eines jeden Koeffizienten wird mit einem Kontext-Modell und einem Entropie-Dekodierer modelliert;
ein inverses Wavelet-Filter wird auf die Koeffizienten angewandt, wobei mit dem gröbsten Niveau angefangen wird.
kodierte Daten werden für eine Kodiereinheit wiedergewonnen;
ein Bit eines jeden Koeffizienten wird mit einem Kontext-Modell und einem Entropie-Dekodierer modelliert;
ein inverses Wavelet-Filter wird auf die Koeffizienten angewandt, wobei mit dem gröbsten Niveau angefangen wird.
62. Verfahren, das im Anspruch 61 festgelegt ist und weiter den Schritt aufweist, wonach
bestimmt wird, ob alle Niveaus invers gefiltert worden sind, und wonach, falls nicht, das
inverse Filter dann auf die Koeffizienten von dem nächst gröbsten Niveau angewendet
wird.
63. Verfahren, das im Anspruch 62 festgelegt ist und das weiter den Schritt aufweist,
wonach der Schritt der Bestimmung wiederholt wird, bis alle Niveaus invers gefiltert
worden sind.
64. Dekodierer zum Dekodieren kodierter Daten, der folgendes aufweist:
einen Entropie-Dekodierer zum Entropie-Dekodieren der kodierten Daten in einen Kodestrom von Koeffizienten;
einen inversen reversiblen Wavelet-Filter, der mit dem Entropie-Dekodierer zum Transformieren des Kodestroms von Koeffizienten in rekonstruierte Daten verbunden ist.
einen Entropie-Dekodierer zum Entropie-Dekodieren der kodierten Daten in einen Kodestrom von Koeffizienten;
einen inversen reversiblen Wavelet-Filter, der mit dem Entropie-Dekodierer zum Transformieren des Kodestroms von Koeffizienten in rekonstruierte Daten verbunden ist.
65. Dekodierer, der im Anspruch 59 festgelegt ist, bei welchem der Entropie-Dekodierer
die kodierten Daten in einen eingebetteten Kodestrom der Koeffizienten dekodiert.
66. Der Kodierer, der im Anspruch 39 festgelegt ist, bei welchem, falls das erste Betrags-
Bit ungleich-null nicht beobachtet worden ist, dann das Kontext-Modell Kontexte
verwendet, um einen Koeffizienten zu konditionieren, der Informationen entsprechend
einer Mutter des Koeffizienten enthält.
67. Der Kodierer, der im Anspruch 39 festgelegt ist, bei welchem, falls das erste Betrags-
Bit ungleich-null nicht beobachtet worden ist, dann das Kontext-Modell Kontexte
verwendet, um einen Koeffizienten zu konditionieren, die Informationen von wenigstens
einem Koeffizienten enthalten, der NW, N, NE, W, E, SW, S oder SE des Koeffizienten
positioniert ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/498,695 US6195465B1 (en) | 1994-09-21 | 1995-07-03 | Method and apparatus for compression using reversible wavelet transforms and an embedded codestream |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19626615A1 true DE19626615A1 (de) | 1997-01-09 |
DE19626615C2 DE19626615C2 (de) | 2000-06-15 |
Family
ID=23982114
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19626615A Expired - Fee Related DE19626615C2 (de) | 1995-07-03 | 1996-07-02 | Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet |
Country Status (5)
Country | Link |
---|---|
US (1) | US6195465B1 (de) |
JP (4) | JP3367825B2 (de) |
CN (3) | CN1268137C (de) |
DE (1) | DE19626615C2 (de) |
GB (1) | GB2303030B (de) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2763766A1 (fr) * | 1997-05-01 | 1998-11-27 | Ricoh Kk | Procede et dispositif de mise en oeuvre d'un systeme a ondelette noye reversible |
DE19734542A1 (de) * | 1997-08-01 | 1999-02-04 | Deutsche Telekom Ag | Verfahren zur Wavelet-basierten Bildkompression |
DE19744407C1 (de) * | 1997-10-08 | 1999-02-11 | Luratech Ges Fuer Luft Und Rau | Verfahren zur mehrdimensionalen, diskreten Wavelet-Transformation und Transformationseinheit zur Durchführung des Verfahrens |
DE19737258A1 (de) * | 1997-08-27 | 1999-03-04 | Iat Ag | Bilddatenübertragungsverfahren |
WO2002031687A2 (de) * | 2000-10-13 | 2002-04-18 | Image D.C. Gmbh Interfunctional Medical And General Electronic Data Compression | Digitale bilddatenkompression |
EP0899958A3 (de) * | 1997-08-27 | 2008-04-23 | Opportunity Investment Management PLC | Bilddatenübertragungsverfahren |
US8565298B2 (en) | 1994-09-21 | 2013-10-22 | Ricoh Co., Ltd. | Encoder rate control |
Families Citing this family (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5748786A (en) * | 1994-09-21 | 1998-05-05 | Ricoh Company, Ltd. | Apparatus for compression using reversible embedded wavelets |
US6229927B1 (en) | 1994-09-21 | 2001-05-08 | Ricoh Company, Ltd. | Reversible embedded wavelet system implementation |
US6873734B1 (en) * | 1994-09-21 | 2005-03-29 | Ricoh Company Ltd | Method and apparatus for compression using reversible wavelet transforms and an embedded codestream |
US6545687B2 (en) * | 1997-01-09 | 2003-04-08 | Canon Kabushiki Kaisha | Thumbnail manipulation using fast and aspect ratio zooming, compressing and scaling |
IL122714A (en) * | 1997-04-02 | 2011-06-30 | Samsung Electronics Co Ltd | Digital data coding/decoding method and apparatus |
IL213137A (en) * | 1997-04-02 | 2014-03-31 | Samsung Electronics Co Ltd | Device and method for encrypting/decrypting digital data |
GB2341035B (en) * | 1997-05-01 | 2000-11-15 | Ricoh Kk | Coding wavelet transform coefficients |
US6356666B1 (en) | 1997-07-30 | 2002-03-12 | Mitsubishi Denki Kabushiki Kaisha | Image compressing/expanding method and image compression expanding device |
JP3213584B2 (ja) | 1997-09-19 | 2001-10-02 | シャープ株式会社 | 画像符号化装置及び画像復号装置 |
AUPO951497A0 (en) | 1997-09-29 | 1997-10-23 | Canon Information Systems Research Australia Pty Ltd | A method for data compression |
EP0914004A1 (de) * | 1997-10-29 | 1999-05-06 | Ntec Media GmbH | Codierungssystem und -verfahren zur verlustfreien und verlustbehafteten Kompression von stehenden und bewegten Bildern |
US6707948B1 (en) * | 1997-11-17 | 2004-03-16 | The Regents Of The University Of California | Image compression for memory-constrained decoders |
JP3679586B2 (ja) * | 1997-12-24 | 2005-08-03 | キヤノン株式会社 | 符号化及び復号装置とその符号化及び復号方法 |
FR2780583A1 (fr) * | 1998-06-24 | 1999-12-31 | Canon Kk | Filtres numeriques et procedes de filtrage correspondants |
JP3613983B2 (ja) * | 1998-06-25 | 2005-01-26 | ソニー株式会社 | 画像生成装置及び方法、並びに電子スチルカメラ |
US6456209B1 (en) * | 1998-12-01 | 2002-09-24 | Lucent Technologies Inc. | Method and apparatus for deriving a plurally parsable data compression dictionary |
US6624761B2 (en) * | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US6665646B1 (en) * | 1998-12-11 | 2003-12-16 | At&T Corp. | Predictive balanced multiple description coder for data compression |
KR100326157B1 (ko) * | 1998-12-31 | 2002-07-03 | 윤종용 | 통신시스템에서반복디코더에대한양자화방법 |
CA2361474A1 (en) * | 1999-02-04 | 2000-08-10 | Quvis, Inc. | Scaleable resolution motion image recording and storage system |
US6718065B1 (en) * | 1999-02-04 | 2004-04-06 | Quvis, Inc. | Optimized signal quantification |
US20030142875A1 (en) * | 1999-02-04 | 2003-07-31 | Goertzen Kenbe D. | Quality priority |
US6604158B1 (en) * | 1999-03-11 | 2003-08-05 | Realtime Data, Llc | System and methods for accelerated data storage and retrieval |
US6601104B1 (en) | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US6546143B1 (en) * | 1999-03-12 | 2003-04-08 | Hewlett-Packard Development Company | Efficient wavelet-based compression of large images |
US6850649B1 (en) * | 1999-03-26 | 2005-02-01 | Microsoft Corporation | Image encoding using reordering and blocking of wavelet coefficients combined with adaptive encoding |
US7076107B1 (en) | 1999-04-15 | 2006-07-11 | Ricoh Co., Ltd. | Method and apparatus for high speed data compression and decompression |
US20030191876A1 (en) * | 2000-02-03 | 2003-10-09 | Fallon James J. | Data storewidth accelerator |
US20010047473A1 (en) * | 2000-02-03 | 2001-11-29 | Realtime Data, Llc | Systems and methods for computer initialization |
FR2805941B1 (fr) | 2000-03-02 | 2002-08-09 | Canon Kk | Procede et dispositif de codage entropique |
AUPQ618500A0 (en) | 2000-03-13 | 2000-04-06 | Canon Kabushiki Kaisha | Memory management of compressed images data |
US6549674B1 (en) * | 2000-10-12 | 2003-04-15 | Picsurf, Inc. | Image compression based on tiled wavelet-like transform using edge and non-edge filters |
US6760724B1 (en) * | 2000-07-24 | 2004-07-06 | Lucent Technologies Inc. | Approximate query processing using wavelets |
AU2001276028A1 (en) * | 2000-07-25 | 2002-02-05 | Acuo Technologies, Llc | Routing and storage within a computer network |
US6661842B1 (en) * | 2000-09-22 | 2003-12-09 | General Dynamics Decision Systems, Inc. | Methods and apparatus for error-resilient video coding |
US8692695B2 (en) * | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
US7417568B2 (en) * | 2000-10-03 | 2008-08-26 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US9143546B2 (en) * | 2000-10-03 | 2015-09-22 | Realtime Data Llc | System and method for data feed acceleration and encryption |
JP2002204356A (ja) | 2000-10-27 | 2002-07-19 | Canon Inc | データ処理装置、プロセッサ、及びその制御方法 |
US7987186B1 (en) * | 2000-11-06 | 2011-07-26 | Navteq North America, Llc | Method and system for wavelet-based representation and use of cartographic data |
US6947874B2 (en) * | 2000-11-16 | 2005-09-20 | Canon Kabushiki Kaisha | Entropy coding |
US6675148B2 (en) * | 2001-01-05 | 2004-01-06 | Digital Voice Systems, Inc. | Lossless audio coder |
US7386046B2 (en) * | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
US6898323B2 (en) * | 2001-02-15 | 2005-05-24 | Ricoh Company, Ltd. | Memory usage scheme for performing wavelet processing |
US6895120B2 (en) * | 2001-03-30 | 2005-05-17 | Ricoh Co., Ltd. | 5,3 wavelet filter having three high pair and low pair filter elements with two pairs of cascaded delays |
US20030046322A1 (en) * | 2001-06-01 | 2003-03-06 | David Guevorkian | Flowgraph representation of discrete wavelet transforms and wavelet packets for their efficient parallel implementation |
DE10128532A1 (de) * | 2001-06-13 | 2003-01-02 | Siemens Ag | Verfahren zum Ermitteln eines Datenkompressionsverfahrens |
CA2460349A1 (en) * | 2001-07-11 | 2003-02-06 | Daniel Kilbank | System and method for compressing data |
JP3796432B2 (ja) * | 2001-10-31 | 2006-07-12 | キヤノン株式会社 | フィルタ処理装置およびフィルタ処理方法 |
US6873744B2 (en) * | 2002-04-17 | 2005-03-29 | Regents Of The University Of Minnesota | Image restoration from transformed component data |
AU2002346675A1 (en) * | 2001-12-05 | 2003-06-17 | Regents Of The University Of Minnesota | Image restoration from transformed component data |
WO2003065732A2 (en) * | 2002-01-25 | 2003-08-07 | Quvis, Inc. | Digital image processor |
US20030206597A1 (en) * | 2002-04-19 | 2003-11-06 | Droplet Technology, Inc. | System, method and computer program product for image and video transcoding |
US7844122B2 (en) * | 2002-06-21 | 2010-11-30 | Droplet Technology, Inc. | Chroma temporal rate reduction and high-quality pause system and method |
AU2003230986A1 (en) * | 2002-04-19 | 2003-11-03 | Droplet Technology, Inc. | Wavelet transform system, method and computer program product |
US20030229773A1 (en) * | 2002-05-28 | 2003-12-11 | Droplet Technology, Inc. | Pile processing system and method for parallel processors |
US20030198395A1 (en) * | 2002-04-19 | 2003-10-23 | Droplet Technology, Inc. | Wavelet transform system, method and computer program product |
US6825780B2 (en) * | 2002-04-19 | 2004-11-30 | Droplet Technology, Inc. | Multiple codec-imager system and method |
ES2552696T3 (es) * | 2002-04-23 | 2015-12-01 | Ntt Docomo, Inc. | Sistema y método para codificación y decodificación aritmética |
CN1647405A (zh) * | 2002-04-23 | 2005-07-27 | D·基尔班克 | 在通信中使用微单元的系统和方法 |
US9577667B2 (en) | 2002-04-23 | 2017-02-21 | Ntt Docomo, Inc. | System and method for arithmetic encoding and decoding |
US6847317B2 (en) | 2002-05-28 | 2005-01-25 | Droplet Technology, Inc. | System and method for a dyadic-monotonic (DM) codec |
US20030236793A1 (en) * | 2002-06-19 | 2003-12-25 | Ericsson Inc. | Compressed prefix tree structure and method for traversing a compressed prefix tree |
JP3902990B2 (ja) * | 2002-07-02 | 2007-04-11 | キヤノン株式会社 | アダマール変換処理方法及びその装置 |
JP2004080520A (ja) * | 2002-08-20 | 2004-03-11 | Ricoh Co Ltd | 画像処理装置、画像読取装置及び画像形成装置 |
EP1734511B1 (de) * | 2002-09-04 | 2009-11-18 | Microsoft Corporation | Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus |
US7260265B2 (en) * | 2002-10-04 | 2007-08-21 | International Business Machines Corporation | Enhancing compression while transcoding JPEG images |
JP2004186934A (ja) * | 2002-12-03 | 2004-07-02 | Fuji Xerox Co Ltd | 画像処理システム、画像形成装置、画像処理方法、およびプログラム |
JP4136951B2 (ja) * | 2003-01-31 | 2008-08-20 | 株式会社リコー | 画像処理装置、プログラム及び記憶媒体 |
FR2852179A1 (fr) | 2003-03-06 | 2004-09-10 | Thomson Licensing Sa | Procede de codage d'une image video |
US7408486B2 (en) * | 2003-04-21 | 2008-08-05 | Qbit Corporation | System and method for using a microlet-based modem |
US7590293B2 (en) * | 2003-05-05 | 2009-09-15 | Regents Of The University Of Minnesota | Non-iterative method to restore image from transformed component data |
JP4842265B2 (ja) * | 2004-07-14 | 2011-12-21 | エージェンシー フォー サイエンス,テクノロジー アンド リサーチ | 信号の状況(コンテキスト)ベース符号化及び復号化 |
JP4618676B2 (ja) * | 2005-04-28 | 2011-01-26 | 株式会社リコー | 構造化文書符号の転送方法、画像処理システム、サーバ装置、プログラム及び情報記録媒体 |
US7599840B2 (en) * | 2005-07-15 | 2009-10-06 | Microsoft Corporation | Selectively using multiple entropy models in adaptive coding and decoding |
US7684981B2 (en) * | 2005-07-15 | 2010-03-23 | Microsoft Corporation | Prediction of spectral coefficients in waveform coding and decoding |
US7933337B2 (en) * | 2005-08-12 | 2011-04-26 | Microsoft Corporation | Prediction of transform coefficients for image compression |
US7565018B2 (en) * | 2005-08-12 | 2009-07-21 | Microsoft Corporation | Adaptive coding and decoding of wide-range coefficients |
US8184710B2 (en) * | 2007-02-21 | 2012-05-22 | Microsoft Corporation | Adaptive truncation of transform coefficient data in a transform-based digital media codec |
US8179974B2 (en) | 2008-05-02 | 2012-05-15 | Microsoft Corporation | Multi-level representation of reordered transform coefficients |
US8406307B2 (en) | 2008-08-22 | 2013-03-26 | Microsoft Corporation | Entropy coding/decoding of hierarchically organized data |
US9571857B2 (en) * | 2008-09-18 | 2017-02-14 | Thomson Licensing | Methods and apparatus for video imaging pruning |
WO2011126282A2 (en) | 2010-04-05 | 2011-10-13 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video by using transformation index, and method and apparatus for decoding video by using transformation index |
WO2011126283A2 (en) | 2010-04-05 | 2011-10-13 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video based on internal bit depth increment, and method and apparatus for decoding video based on internal bit depth increment |
US9369736B2 (en) | 2010-04-05 | 2016-06-14 | Samsung Electronics Co., Ltd. | Low complexity entropy-encoding/decoding method and apparatus |
US8917950B2 (en) * | 2011-01-18 | 2014-12-23 | Sony Corporation | Simplifying parametric loop filters |
JP5786464B2 (ja) * | 2011-06-01 | 2015-09-30 | コニカミノルタ株式会社 | ウェブサーバ、印刷装置、印刷システム、および、ウェバサーバ用プログラム |
EP3166317B1 (de) * | 2011-10-31 | 2018-08-15 | Samsung Electronics Co., Ltd. | Verfahren und vorrichtung zur bestimmung eines kontextmodells zur entropiekodierung und -dekodierung auf transformationskoeffizientenebene |
US10698918B2 (en) * | 2013-11-20 | 2020-06-30 | Qliktech International Ab | Methods and systems for wavelet based representation |
US9531915B2 (en) * | 2013-12-04 | 2016-12-27 | Aspeed Technology Inc. | Image encoding system and method thereof |
GB2530312B (en) * | 2014-09-19 | 2016-09-14 | Imagination Tech Ltd | Data compression |
CN107196660A (zh) * | 2017-04-24 | 2017-09-22 | 南京数维康信息科技有限公司 | 低功耗数据压缩算法 |
CN114424575A (zh) * | 2019-09-20 | 2022-04-29 | 诺基亚技术有限公司 | 用于视频编解码和解码的装置、方法和计算机程序 |
CN111965408A (zh) * | 2020-07-06 | 2020-11-20 | 国网江苏省电力有限公司淮安供电分公司 | 一种基于形态滤波器的交直流混合电网故障零序电压幅值检测方法 |
CN114066784A (zh) * | 2020-07-29 | 2022-02-18 | 北京小米移动软件有限公司 | 一种图像处理方法、装置和存储介质 |
Family Cites Families (100)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3506327A (en) | 1964-04-23 | 1970-04-14 | Battelle Development Corp | Wavefront reconstruction using a coherent reference beam |
US3950103A (en) | 1972-10-27 | 1976-04-13 | Canadian Patents And Development Limited | Method and apparatus to determine spatial distribution of magnitude and phase of electro-magnetic fields especially optical fields |
DE2640140C2 (de) | 1976-09-07 | 1982-10-07 | Philips Patentverwaltung Gmbh, 2000 Hamburg | Verfahren und Anordnung zur redundanzvermindernden Bildcodierung |
DE2640157C2 (de) | 1976-09-07 | 1982-10-07 | Philips Patentverwaltung Gmbh, 2000 Hamburg | Verfahren und Anordnung zum redundanzvermindernden Codieren von Bildern |
US4136954A (en) | 1976-12-29 | 1979-01-30 | Jamieson John A | Imaging apparatus including spatial-spectral interferometer |
US4223354A (en) | 1978-08-30 | 1980-09-16 | General Electric Company | Phase corrected raster scanned light modulator and a variable frequency oscillator for effecting phase correction |
DE3107141A1 (de) | 1981-02-26 | 1982-09-09 | Kienzle Apparate Gmbh, 7730 Villingen-Schwenningen | Anordnung zum kuehlen des kraftstoffs in einem betriebssystem eines dieselmotors mit einem geschlossenen einspritzkreislauf |
US4393456A (en) | 1981-03-19 | 1983-07-12 | Bell Telephone Laboratories, Incorporated | Digital filter bank |
JPS57192440A (en) * | 1981-05-20 | 1982-11-26 | Matsushita Electric Ind Co Ltd | Polyolefin composition |
DE3171311D1 (en) | 1981-07-28 | 1985-08-14 | Ibm | Voice coding method and arrangment for carrying out said method |
US4674125A (en) | 1983-06-27 | 1987-06-16 | Rca Corporation | Real-time hierarchal pyramid signal processing apparatus |
US4599567A (en) | 1983-07-29 | 1986-07-08 | Enelf Inc. | Signal representation generator |
US4652881A (en) | 1984-01-10 | 1987-03-24 | Lewis Bernard L | Efficient adaptive filter bank |
FR2577084B1 (fr) | 1985-02-01 | 1987-03-20 | Trt Telecom Radio Electr | Systeme de bancs de filtres d'analyse et de synthese d'un signal |
US4701006A (en) | 1985-02-20 | 1987-10-20 | Stanford University | Optical-digital hologram recording |
GB2181318B (en) | 1985-10-04 | 1989-12-28 | Sony Corp | Two-dimensional finite impulse response filters |
US4760563A (en) | 1986-01-09 | 1988-07-26 | Schlumberger Technology Corporation | Seismic exploration using exactly invertible discrete transformation into tau-p space |
US4929223A (en) | 1986-02-18 | 1990-05-29 | Adolph Coors Company | Packaging alignment system |
DE3732085A1 (de) | 1986-03-26 | 1989-04-06 | Ant Nachrichtentech | Digitaler filterbaum |
US4663660A (en) | 1986-06-20 | 1987-05-05 | Rca Corporation | Compressed quantized image-data transmission technique suitable for use in teleconferencing |
GB8621994D0 (en) | 1986-09-12 | 1986-10-22 | Crosfield Electronics Ltd | Image processing |
US4868868A (en) | 1986-09-30 | 1989-09-19 | Oki Electric Industry Co., Ltd. | Sub-band speech analyzing and synthesizing device |
FR2606576B1 (fr) | 1986-11-07 | 1989-02-03 | Labo Electronique Physique | Dispositif pour transmettre des images de television haute definition dans des canaux a bande etroite |
GB2197766B (en) | 1986-11-17 | 1990-07-25 | Sony Corp | Two-dimensional finite impulse response filter arrangements |
US4817182A (en) | 1987-05-04 | 1989-03-28 | General Electric Company | Truncated subband coding of images |
US4815023A (en) | 1987-05-04 | 1989-03-21 | General Electric Company | Quadrature mirror filters with staggered-phase subsampling |
US4774574A (en) | 1987-06-02 | 1988-09-27 | Eastman Kodak Company | Adaptive block transform image coding method and apparatus |
BE1000643A5 (fr) | 1987-06-05 | 1989-02-28 | Belge Etat | Procede de codage de signaux d'image. |
DE3853555T2 (de) | 1987-06-09 | 1995-08-17 | Sony Corp | Verarbeitung des Bewegungsvektors in digitalen Fernsehbildern. |
US4837517A (en) | 1987-07-16 | 1989-06-06 | Schlumberger Technology Corporation | Spatial frequency method and apparatus for investigating earth conductivity with high vertical resolution by induction techniques |
US4785349A (en) | 1987-10-05 | 1988-11-15 | Technology Inc. 64 | Digital video decompression system |
US4936665A (en) | 1987-10-25 | 1990-06-26 | Whitney Theodore R | High resolution imagery systems and methods |
US5156943A (en) | 1987-10-25 | 1992-10-20 | Whitney Theodore R | High resolution imagery systems and methods |
US5028995A (en) | 1987-10-28 | 1991-07-02 | Hitachi, Ltd. | Picture signal processor, picture signal coder and picture signal interpolator |
US4827336A (en) | 1987-12-18 | 1989-05-02 | General Electric Company | Symbol code generation processing from interframe DPCM of TDM'd spatial-frequency analyses of video signals |
US5001764A (en) | 1988-03-25 | 1991-03-19 | Texas Instruments Incorporated | Guardbands for pattern inspector |
US4985927A (en) | 1988-03-25 | 1991-01-15 | Texas Instruments Incorporated | Method of detecting and reviewing pattern defects |
US5018210A (en) | 1988-03-25 | 1991-05-21 | Texas Instruments Incorporated | Pattern comparator with substage illumination and polygonal data representation |
US5095447A (en) | 1988-03-25 | 1992-03-10 | Texas Instruments Incorporated | Color overlay of scanned and reference images for display |
US4897717A (en) | 1988-03-30 | 1990-01-30 | Starsignal, Inc. | Computer-based video compression system |
EP0339589A3 (de) | 1988-04-28 | 1992-01-02 | Sharp Kabushiki Kaisha | Orthogonales Transformationskodierungssystem für Bilddaten |
US4982283A (en) | 1988-05-06 | 1991-01-01 | General Electric Company | Line-sequential pyramid processing of a plurality of raster-scanned image variables |
US4829378A (en) | 1988-06-09 | 1989-05-09 | Bell Communications Research, Inc. | Sub-band coding of images with low computational complexity |
US4904073A (en) | 1988-08-10 | 1990-02-27 | Aware, Inc. | Fractal tiling for multiple mirror optical devices |
FR2637400B1 (fr) | 1988-09-30 | 1990-11-09 | Labo Electronique Physique | Dispositif de traitement ameliore d'un signal echographique |
FR2643986B1 (fr) | 1989-03-03 | 1991-05-17 | Thomson Csf | Procede d'analyse d'un signal par ondelettes |
US4918524A (en) | 1989-03-14 | 1990-04-17 | Bell Communications Research, Inc. | HDTV Sub-band coding using IIR filter bank |
JPH02305182A (ja) | 1989-05-19 | 1990-12-18 | Fuji Photo Film Co Ltd | 画像信号圧縮符号化装置 |
US5072308A (en) | 1989-06-21 | 1991-12-10 | International Mobile Machines Corporation | Communication signal compression system and method |
US4987480A (en) | 1989-07-11 | 1991-01-22 | Massachusetts Institute Of Technology | Multiscale coding of images |
US4974187A (en) | 1989-08-02 | 1990-11-27 | Aware, Inc. | Modular digital signal processing system |
US5073964A (en) | 1989-08-04 | 1991-12-17 | Aware, Inc. | Signal processing device and method |
US5241395A (en) | 1989-08-07 | 1993-08-31 | Bell Communications Research, Inc. | Adaptive transform coding using variable block size |
US5014134A (en) | 1989-09-11 | 1991-05-07 | Aware, Inc. | Image compression method and apparatus |
US5173880A (en) | 1989-12-26 | 1992-12-22 | Exxon Production Research Company | Method of generating seismic wavelets using seismic range equation |
US5068911A (en) | 1990-02-09 | 1991-11-26 | Aware, Inc. | Method and apparatus for representing an image |
US5103306A (en) | 1990-03-28 | 1992-04-07 | Transitions Research Corporation | Digital image compression employing a resolution gradient |
US4999705A (en) | 1990-05-03 | 1991-03-12 | At&T Bell Laboratories | Three dimensional motion compensated video coding |
US5384725A (en) | 1990-05-18 | 1995-01-24 | Yale University | Method and apparatus for encoding and decoding using wavelet-packets |
DE4016172C1 (de) | 1990-05-19 | 1991-03-28 | Werner 5900 Siegen De Ackermann | |
US5101446A (en) | 1990-05-31 | 1992-03-31 | Aware, Inc. | Method and apparatus for coding an image |
US5128757A (en) | 1990-06-18 | 1992-07-07 | Zenith Electronics Corporation | Video transmission system using adaptive sub-band coding |
ATE143758T1 (de) | 1990-07-11 | 1996-10-15 | Philips Electronics Nv | Vorrichtung zur ableitung eines kompatiblen zeilensprungfernsehsignals mit geringer auflösung und anderen komponenten eines hochauflösenden zeilensprungfernsehsignals sowie vorrichtung zur wiederherstellung des originalsignals |
US5148498A (en) | 1990-08-01 | 1992-09-15 | Aware, Inc. | Image coding apparatus and method utilizing separable transformations |
US5081645A (en) | 1990-08-06 | 1992-01-14 | Aware, Inc. | Novel spread spectrum codec apparatus and method |
US5128791A (en) | 1990-08-13 | 1992-07-07 | Bell Communications Research, Inc. | Multi-channel HDTV system |
US5097331A (en) | 1990-08-24 | 1992-03-17 | Bell Communications Research, Inc. | Multiple block-size transform video coding using an asymmetric sub-band structure |
US5049992A (en) | 1990-08-27 | 1991-09-17 | Zenith Electronics Corporation | HDTV system with receivers operable at different levels of resolution |
US5049993A (en) | 1990-10-03 | 1991-09-17 | Bell Communications Research, Inc. | Format conversion preprocessing method and circuit |
JP3012698B2 (ja) | 1991-01-29 | 2000-02-28 | オリンパス光学工業株式会社 | 画像データの符号化装置および符号化方法 |
US5121191A (en) | 1991-03-15 | 1992-06-09 | Aware, Inc. | Method and apparatus for coding motion pictures |
US5262958A (en) | 1991-04-05 | 1993-11-16 | Texas Instruments Incorporated | Spline-wavelet signal analyzers and methods for processing signals |
JPH04323963A (ja) | 1991-04-23 | 1992-11-13 | Canon Inc | 画像処理方法及び装置 |
US5235434A (en) | 1991-06-27 | 1993-08-10 | Polaroid Corporation | Method and apparatus for selectively adjusting the brightness of large regions of an image |
US5315670A (en) | 1991-11-12 | 1994-05-24 | General Electric Company | Digital data compression system including zerotree coefficient coding |
US5347479A (en) | 1991-12-27 | 1994-09-13 | Nec Corporation | Small-size wavelet transform apparatus |
JP3015187B2 (ja) | 1992-01-16 | 2000-03-06 | キヤノン株式会社 | 現像スリーブ |
US5321776A (en) | 1992-02-26 | 1994-06-14 | General Electric Company | Data compression system including successive approximation quantizer |
DE4235099A1 (de) | 1992-10-17 | 1994-04-21 | Lautenschlaeger Mepla Werke | Möbelscharnier |
JP3293920B2 (ja) | 1993-01-22 | 2002-06-17 | キヤノン株式会社 | 画像処理装置およびその方法 |
US5412741A (en) | 1993-01-22 | 1995-05-02 | David Sarnoff Research Center, Inc. | Apparatus and method for compressing information |
IL104636A (en) | 1993-02-07 | 1997-06-10 | Oli V R Corp Ltd | Apparatus and method for encoding and decoding digital signals |
US5381145A (en) | 1993-02-10 | 1995-01-10 | Ricoh Corporation | Method and apparatus for parallel decoding and encoding of data |
US5583500A (en) | 1993-02-10 | 1996-12-10 | Ricoh Corporation | Method and apparatus for parallel encoding and decoding of data |
US5420891A (en) | 1993-03-18 | 1995-05-30 | New Jersey Institute Of Technology | Multiplierless 2-band perfect reconstruction quadrature mirror filter (PR-QMF) banks |
EP0622741A3 (de) | 1993-03-30 | 1998-12-30 | KLICS, Ltd. | Vorrichtung und Verfahren zur Datenkomprimierung/-dekomprimierung |
AU6381394A (en) | 1993-03-30 | 1994-10-24 | Lewis, Adrian S. | Data compression and decompression |
US5546477A (en) | 1993-03-30 | 1996-08-13 | Klics, Inc. | Data compression and decompression |
JP3499254B2 (ja) | 1993-06-04 | 2004-02-23 | 富士写真フイルム株式会社 | 画像データ圧縮処理方法 |
GB2281465B (en) | 1993-08-27 | 1997-06-04 | Sony Uk Ltd | Image data compression |
US5495292A (en) | 1993-09-03 | 1996-02-27 | Gte Laboratories Incorporated | Inter-frame wavelet transform coder for color video compression |
JP3282138B2 (ja) | 1993-09-08 | 2002-05-13 | 富士写真フイルム株式会社 | 画像データ圧縮処理方法および画像データ再構成方法 |
IL107658A0 (en) | 1993-11-18 | 1994-07-31 | State Of Israel Ministy Of Def | A system for compaction and reconstruction of wavelet data |
US5453945A (en) | 1994-01-13 | 1995-09-26 | Tucker; Michael R. | Method for decomposing signals into efficient time-frequency representations for data compression and recognition |
AU1727495A (en) | 1994-01-14 | 1995-08-01 | Houston Advanced Research Center | Boundary-spline-wavelet compression for video images |
US5534925A (en) | 1994-05-02 | 1996-07-09 | Cognitech Inc. | Image compression by optimal reconstruction |
US5602589A (en) | 1994-08-19 | 1997-02-11 | Xerox Corporation | Video image compression using weighted wavelet hierarchical vector quantization |
GB2293733B (en) * | 1994-09-20 | 1997-10-22 | Ricoh Kk | Encoder including an embedded coder for performing bit-significance encoding |
US5867602A (en) * | 1994-09-21 | 1999-02-02 | Ricoh Corporation | Reversible wavelet transform and embedded codestream manipulation |
GB2295936B (en) * | 1994-12-05 | 1997-02-05 | Microsoft Corp | Progressive image transmission using discrete wavelet transforms |
-
1995
- 1995-07-03 US US08/498,695 patent/US6195465B1/en not_active Expired - Fee Related
-
1996
- 1996-06-25 GB GB9613319A patent/GB2303030B/en not_active Expired - Fee Related
- 1996-07-02 JP JP17268296A patent/JP3367825B2/ja not_active Expired - Lifetime
- 1996-07-02 CN CN03149271.1A patent/CN1268137C/zh not_active Expired - Fee Related
- 1996-07-02 CN CN03149281.9A patent/CN1232127C/zh not_active Expired - Fee Related
- 1996-07-02 DE DE19626615A patent/DE19626615C2/de not_active Expired - Fee Related
- 1996-07-02 CN CNB961122870A patent/CN1135707C/zh not_active Expired - Fee Related
-
2002
- 2002-07-15 JP JP2002206307A patent/JP3461821B2/ja not_active Expired - Fee Related
- 2002-09-20 JP JP2002276375A patent/JP3693988B2/ja not_active Expired - Fee Related
- 2002-09-20 JP JP2002276376A patent/JP2003179499A/ja active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8565298B2 (en) | 1994-09-21 | 2013-10-22 | Ricoh Co., Ltd. | Encoder rate control |
FR2763766A1 (fr) * | 1997-05-01 | 1998-11-27 | Ricoh Kk | Procede et dispositif de mise en oeuvre d'un systeme a ondelette noye reversible |
DE19819405B4 (de) * | 1997-05-01 | 2006-06-29 | Ricoh Co., Ltd. | Implementation eines reversiblen eingebetteten Wavelet-Systems |
DE19734542C2 (de) * | 1997-08-01 | 1999-10-28 | Deutsche Telekom Ag | Verfahren zur Wavelet-basierten Bildkompression |
DE19734542A1 (de) * | 1997-08-01 | 1999-02-04 | Deutsche Telekom Ag | Verfahren zur Wavelet-basierten Bildkompression |
DE19737258A1 (de) * | 1997-08-27 | 1999-03-04 | Iat Ag | Bilddatenübertragungsverfahren |
EP0899958A3 (de) * | 1997-08-27 | 2008-04-23 | Opportunity Investment Management PLC | Bilddatenübertragungsverfahren |
WO1999019833A3 (de) * | 1997-10-08 | 1999-09-02 | Luratech Ges Fuer Luft Und Rau | Verfahren zur mehrdimensionalen, diskreten wavelet-transformation und transformationseinheit zur durchführung des verfahrens |
US6577770B1 (en) | 1997-10-08 | 2003-06-10 | Luratech Gesellschaft Fuer Luft-Und Raumfahrttechnologie & Multimedia Mbh | System and method for a multidimensional, discrete wavelet-transformation |
WO1999019833A2 (de) * | 1997-10-08 | 1999-04-22 | Luratech Gesellschaft Für Luft- Und Raumfahrttechnologie & Multimedia Mbh | Verfahren zur mehrdimensionalen, diskreten wavelet-transformation und transformationseinheit zur durchführung des verfahrens |
DE19744407C1 (de) * | 1997-10-08 | 1999-02-11 | Luratech Ges Fuer Luft Und Rau | Verfahren zur mehrdimensionalen, diskreten Wavelet-Transformation und Transformationseinheit zur Durchführung des Verfahrens |
WO2002031687A2 (de) * | 2000-10-13 | 2002-04-18 | Image D.C. Gmbh Interfunctional Medical And General Electronic Data Compression | Digitale bilddatenkompression |
WO2002031687A3 (de) * | 2000-10-13 | 2003-07-31 | Image D C Gmbh Interfunctional | Digitale bilddatenkompression |
Also Published As
Publication number | Publication date |
---|---|
GB2303030A (en) | 1997-02-05 |
JPH0927752A (ja) | 1997-01-28 |
CN1135707C (zh) | 2004-01-21 |
GB9613319D0 (en) | 1996-08-28 |
JP2003179499A (ja) | 2003-06-27 |
JP2003188732A (ja) | 2003-07-04 |
JP3367825B2 (ja) | 2003-01-20 |
CN1268137C (zh) | 2006-08-02 |
US6195465B1 (en) | 2001-02-27 |
CN1232127C (zh) | 2005-12-14 |
GB2303030B (en) | 1998-02-18 |
JP3693988B2 (ja) | 2005-09-14 |
CN1482812A (zh) | 2004-03-17 |
JP2003152545A (ja) | 2003-05-23 |
DE19626615C2 (de) | 2000-06-15 |
CN1482811A (zh) | 2004-03-17 |
CN1145553A (zh) | 1997-03-19 |
JP3461821B2 (ja) | 2003-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19626615C2 (de) | Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet | |
DE19626600C2 (de) | Kodierer und Verfahren zum Kodieren | |
US7068849B2 (en) | Method and apparatus for compression using reversible wavelet transforms and an embedded codestream | |
DE19534943B4 (de) | Vorrichtung zur Komprimierung unter Verwendung von eingebetteten Kleinwellen | |
DE19861377B4 (de) | Ein verbessertes Kompressions- und Dekompressionssystem mit reversiblen Wavelets und verlustbehafteter Rekonstruktion | |
DE19534730B4 (de) | Verfahren zum Codieren und Decodieren von Daten | |
US5966465A (en) | Compression/decompression using reversible embedded wavelets | |
US5881176A (en) | Compression and decompression with wavelet style and binary style including quantization by device-dependent parser | |
DE60015755T2 (de) | Verlustfreie adaptive codierung von daten eines endlichen alphabets | |
GB2313757A (en) | Method using an embedded codestream | |
GB2302244A (en) | Wavelet transform filter |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |