DE19626600C2 - Kodierer und Verfahren zum Kodieren - Google Patents
Kodierer und Verfahren zum KodierenInfo
- Publication number
- DE19626600C2 DE19626600C2 DE19626600A DE19626600A DE19626600C2 DE 19626600 C2 DE19626600 C2 DE 19626600C2 DE 19626600 A DE19626600 A DE 19626600A DE 19626600 A DE19626600 A DE 19626600A DE 19626600 C2 DE19626600 C2 DE 19626600C2
- Authority
- DE
- Germany
- Prior art keywords
- encoder
- coefficients
- bit
- data
- ordering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
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/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- 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/17—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 an image region, e.g. an object
- H04N19/176—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 an image region, e.g. an object the region being a block, e.g. a macroblock
-
- 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/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 einen Kodierer und ein Verfahren zum Kodieren auf
dem 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, dass es keine Garantie für
eine perfekte Rekonstruktion der Originaldaten gibt. Das Ziel einer verlustbehafteten
Kompression ist, dass Änderungen an den Originaldaten auf eine solche Art und Weise
durchgeführt werden, dass 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"), aufzä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 WEG-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 Hochpass-Filter nicht die Umkehrung
des Tiefpass-Filters bezüglich der Zeit und der Frequenz zu sein braucht, etc.
Aus Chen J. u. a., "Wavelet Pyramid Image Coding With Predictable and Controllable
Subjective Picture Quality", IEICE Trans. Fundamentals, Band E76-A, Nr. 9,
September 1993, Seiten 1458-1468, ist die pyramidale Verwendung von Wavelets beim
Bildkodieren bekannt. Die Bildet werden gemäß einer vorhersehbaren und steuerbaren
subjektiven Bildqualität kodiert. Durch die Verwendung einer Wavelet-Transformation
wird das Originalbild in einen Satz von Unterbildern mit unterschiedlichen
Frequenzkanälen und Auflösungen zerlegt. Durch die Verwendung der
Empfindlichkeit des Menschen gegenüber dem Kontrast wird jedes zerlegte Unterbild
entsprechend seinem Beitrag zu der gesamten visuellen Qualität und zu der Bitrate
behandelt.
Aus Shapiro J. "Embedded Image Coding Using Zerotrees of Wavelet Coefficients",
IEEE TRANS. on Signal Processing, Band 41, Nr. 12, Dezember 1993, Seiten 3445-
3462, ist das eingebettete Bildkodieren unter Verwendung von "Zerotrees" von
Wavelet-Koeffizienten bekannt. Der verwendete Bildalgorithmus hat die Eigenschaft,
dass die Bits in den Bitstrom entsprechend ihrer Wichtigkeit erzeugt werden, was zu
einem vollständig eingebetteten Kode führt. Dieser eingebettete Kode stellt eine
Sequenz von binären Entscheidungen dar, die ein Bild von dem "Null"-Bild
unterscheiden. Unter Verwendung eines eingebetteten Kodieralgorithmus kann ein
Kodierer das Kodieren bei jedem beliebigen Punkt beenden, wodurch es ermöglicht
wird, eine Sollrate oder Solldistorsionsmetrik exakt zu erfüllen.
Aus JP 62-56038 A (mit Abstract) ist ein Multi-Medium-Transmissionssystem bekannt.
Dabei wird dynamisch die Kompressionsrate eines Videosignals geändert oder die
Operationskanalnummer eines Telefon-/Fax-Computersignals.
Aus EP 0 517 273 A2 sind ein Verfahren und eine Vorrichtung bekannt, um die
Ausgangsbitrate in Videokodierern mit variabler Bitrate zu regulieren. Das Verfahren
ist bei der Übertragung komprimierter Videoinformation anwendbar, wo die
Bandbreite, die zur Übertragung verfügbar ist, sich mit der Zeit ändert. Bei dem
Verfahren wird in einer ersten Pha
se der Füllpegel des Ausgangsspeichers des Videokompressors analysiert, wobei die
Anzahl der Lese- und Schreibbefehle erhalten werden, die bei dem Ausgangsspeicher
durchgeführt werden und die Variation der Füllung berechnet wird. In einer zweiten
Phase wird die Information, die das Füllen des Ausgangsspeichers betrifft, verarbeitet,
wobei hieraus neue statistische Parameter berechnet werden, die den Betrieb des
Videokompressors konditionieren. Die Daten werden in einer dritten Phase zu dem
Videokompressor gesendet.
Aus US 5,315,670 ist ein digitales Datenkompressionssystem bekannt, das ein
"Zerotree"-Koeffizientenkodieren beinhaltet. Bei dem Datenverarbeitungssystem wird
die Kompression von Werten ungleich Null von Signifikanzkoeffizienten verbessert,
indem Einträge einer Signifikanzkarte unabhängig vom Kodieren der Werte von
signifikanten Koeffizienten ungleich Null kodiert werden.
Aufgabe der Erfindung ist es, einen Kodierer und ein Verfahren zum Kodieren
bereitzustellen, der bzw. das die Ausführung des Kodierprozesses in einem Durchgang
unter Verwendung eines reversiblen Wavelet-Filters erlaubt.
Vorstehende Aufgabe wird durch die Gegenstände der Ansprüche 1, 39, 40 und 54
gelöst. Vorteilhafte Weiterbildungen gehen aus den Unteransprüchen hervor.
Vorteilhaft wird eine verlustbehaftete und verlustfreie Kompression bereitgestellt, die eine
Transformation verwendet, die eine gute Energieverdichtung ("energy compaction") liefert.
Ein Kompressions- und ein Dekompressions-System wird beschrieben. Das Kompressions-
System beinhaltet einen Kodierer, der Eingangsdaten in einen komprimierten Datenstrom
kodiert. Der Kodierer umfasst einen reversiblen Wavelet-Filter, einen ordnenden und
modellierenden Mechanismus und einen binären Entropie-Kodierer. Das reversible Wavelet-
Filter transformiert Eingangsdaten in Koeffizienten, indem eine pyramidale Zerlegung
verwendet wird. Der ordnende und modellierende Mechanismus erzeugt einen eingebetteten
Kodestrom von den Koeffizienten, indem die Koeffizienten und die binären Werte innerhalb
der Koeffizienten geordnet werden. Der
binäre Entropie-Kodierer ist betreibbar, um den eingebetteten Kodestrom binär zu entropie
kodieren, 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ßdiagramm 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ührungsform 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ührungsform 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 35D 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.
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 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.
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.
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 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.
Ein Stelle bzw. ein Ort in der Wavelet-Zerlegungspyramide.
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.
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 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, 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.)
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 Kontext-Modell zur Verwendung mit einem Entropie-Kodierer (in einer
Ausführungsform), das hierin als Teil der vorliegenden Erfindung definiert ist.
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.
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").
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. 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.
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 wirksame bzw. effiziente Transformation, die mit einer Integer-Arithmetik bzw.
Ganzzahl-Arithmetik implementiert ist, die eine exakte Rekonstruktion aufweist.
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.
In der Bitwertigkeitsdarstellung sind die Schwanz-Bits bzw. Tail-Bits die Betrags-Bits
mit einer niedrigeren Wertigkeit, als das höchstwertige Bit ungleich-null.
Bei einer Ausführungsform, vier Zustände, die für einen Koeffzienten 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, 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.
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.
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.
Durch Festlegung des bestimmten Systems bzw. spezifischen Systems werden die
Eingangsdaten (Pixeldaten, Koeffizienten, Fehlersignale, 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.
Die Hoch- und Tiefpaß-Synthese- und Analyse-Filter, die bei der Wavelet-Transformation
verwendet werden.
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 sowie 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 h0(n),
h1(n) und ein Paar von FIR-Synthesefiltern g0(n), g1(n) definiert. Bei der vorliegenden
Erfindung handelt es sich bei h0 und g0 um Tiefpaß-Filter und bei h1 und g1 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
h0 und h1 angelegt und die Ausgänge um 2 dezimiert (kritisch unterabgetastet), um die
transformierten Signale y0(n) und y1(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 g0(n) und g1(n)
hindurchgeführt werden. Die Tiefpaß-(Glatt-) Koeffizienten y0(n) werden durch die
Tiefpaß-Synthesefilter g0 hindurchgeführt und die Hochpaß-(Detail-)Koeffizienten y1(n)
werden durch die Hochpaß-Filter g1 hindurchgeführt. Der Ausgang der Filter g0(n) und
g1(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, Y0(Z), Y1(Z) die tiefpaß- und
hochpaß-transformierten Signale sind, H0(Z), H1(Z) die Tiefpaß- und die Hochpaß-
Analysefilter sind und schließlich G0(Z), G1(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 y0(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 x0, x1 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 . 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 y1(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 y0(0), y0(1), y0(2) und der erste Hochpaß-Koeffizient y1(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)) ≠ -y0(0) + y0(2)
ist diese Transformation wegen des Rundens zur Berechnung von y0(0) und y0(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 y0(0), y0(1), y0(2) und y1(0) für zwei verschiedene Sätze von Eingängen x(0) . . . x(5)
gleich sind, ist die Transformation nicht reversibel, da bei gegebenen y0(0), . . . y1(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 y0(0), y0(1), y0(2) und der erste Hochpaß-Koeffizient
y1(0) durch folgendes gegeben:
Da
x(2) - x(3) = y1(0) - -(y0(0) - y0(2) + 2)/4
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, wenn 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 y0(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 y1 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
(y1(0), y1(2), y1(4), . . .) können zuerst mit einem reversiblen Filter, wie zum Beispiel dem
RTS-Hochpaß-Filter verarbeitet werden. Die übrige Verarbeitung (y1(1), y1(3), y1(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 SD). 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 LL0, LH0, HL0 und HH0 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 LL0, LH0 HL0 und HH0 jede
ein Viertel so viele Koeffizienten aufweist, wie der Eingang Pixel (oder Koeffizienten)
des Bildes, wie das in der Fig. 5A gezeigte, aufweist.
Unterband LL0 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 LH0 beinhaltet Tieffrequenz-
Horizontal- und Hochfrequenz-Vertikal-Informationen (z. B. horizontale Kanten
informationen). Das Unterband HL0 beinhaltet Hochfrequenz-Horizontal-Informationen
und Tieffrequenz-Vertikal-Informationen (z. B. vertikale Kanteninformationen).
Unterband HH0 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 LL0 des ersten Niveaus wird zerlegt, um Unterbänder LL1, LH1, HL1 und HH1
des zweiten Niveaus mit moderaten Details, wie in der Fig. 5B gezeigt, zu erzeugen.
Ähnlich wird das Unterband LL1 zerlegt, um grobe Detail-Unterbänder LL2, LH2, HL2
und HH2 des dritten Niveaus, wie in der Fig. 5C gezeigt, zu erzeugen. Ebenso wird das
Unterband LL2 zerlegt, um Unterbänder LL3, LH3, HL3 und HH3 mit oberen 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. Ähnlich
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 LL0 und LL1
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ührungsform 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 Auffü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 99999 00070 552 001000280000000200012000285919988800040 0002019626600 00004 99880
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-Kodierern. 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 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 104 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 5 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-"1 1"-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 -S0 +
4D1 + S2. Die Funktion S2 - S0 wird mit dem 16-Bit-Subtrahierer 1605 berechnet, der den
Ausgang des Schiebe-um-1-Blocks 1603 und das Y0(0) empfängt. Der 4D1-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 4D1-Ausgangs von dem Addierer 1608 zu dem Ausgang des
Substrahierers 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 Y0(0) und Y0(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 Y1(0)-Eingang durchgeführt. Der
Eingang Y0(1) wird um ein Bit nach links durch den Schiebe-um-1-Block 1703
verschoben, wodurch der Eingang mit zwei multipliziert wird. Nachdem Y0(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 216 - 1 gesetzt,
falls er größer ist als 216 - 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 × 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- (5E
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 ersten 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
klassen 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 Koeffzienten 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 dazu, weniger Speicher zu verwenden.
Die Verwendung der S-Transformation spart ungefähr 32 Zeilen des Koeffzienten-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 HH-, 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.
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.
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 Koeffzienten, 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 + 557/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 18 KBytes
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)/√2
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 = √2, 2, 2√2, 4, Multiplikatoren
= 2√2, 2, √2, 1). 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ührungsform 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 nach der 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:
Falls 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 Koeffzienten
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 = 610 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, würde dies wenigstens
3 Bits der Header-Information bzw. Kopfteil-Information erfordern. Der Header, der für
diese Ausführungform 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
würde, 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ührungsformen 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-Einheit 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 würde 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 dann 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,
würde 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 würde 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-Transformation 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 Parsers 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 würde, 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 Aufreichnen 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.
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ührungsform
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, würde 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
A 27070 00070 552 001000280000000200012000285912695900040 0002019626600 00004 26951bhä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:
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öchstwertigen 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 Idenfizierung 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-Eins-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 würde, 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 Koffizienten 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 hierarchische 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".
"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 widergeben, 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.
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 (58)
1. Kodierer zum Kodieren von Eingangsdaten in einen komprimierten Datenstrom,
wobei der Kodierer Folgendes aufweist:
einen reversiblen Wavelet-Filter, um die Eingangsdaten in eine Vielzahl von Koeffizienten zu transformieren, wobei der reversible Wavelet-Filter eine pyramidale Zerlegung der Eingangsdaten durchführt, indem eine Reihe von TS- und S-Transfor mationen verwendet wird;
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, bei welchem das Ordnen und Modellieren die Vielzahl von Koeffizienten ordnet und binäre Werte innerhalb jedem der Vielzahl von Koeffizienten ordnet; und
einen binären Entropie-Kodierer, der mit dem ordnenden und modellierenden Mechanismus verbunden ist, und der betreibbar ist, um den eingebetteten Kodestrom binär zu entropiekodieren, um den komprimierten Datenstrom zu erzeugen.
einen reversiblen Wavelet-Filter, um die Eingangsdaten in eine Vielzahl von Koeffizienten zu transformieren, wobei der reversible Wavelet-Filter eine pyramidale Zerlegung der Eingangsdaten durchführt, indem eine Reihe von TS- und S-Transfor mationen verwendet wird;
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, bei welchem das Ordnen und Modellieren die Vielzahl von Koeffizienten ordnet und binäre Werte innerhalb jedem der Vielzahl von Koeffizienten ordnet; und
einen binären Entropie-Kodierer, der mit dem ordnenden und modellierenden Mechanismus verbunden ist, und der betreibbar ist, um den eingebetteten Kodestrom binär zu entropiekodieren, um den komprimierten Datenstrom zu erzeugen.
2. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus einen nicht-eingebetteten Kodestrom erzeugt.
3. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-
Filter eine Reihe von Kodier-Einheiten erzeugt, die eingebettetes Kodieren und binäres
Entropie-Kodieren erfahren, und zwar unter Verwendung eines Satzes von Statistiken und
Wahrscheinlichkeiten, und bei welchem die Statistiken und Wahrscheinlichkeiten bei dem
Start des Kodierens einer jeden Kodiereinheit zurückgesetzt werden.
4. Kodierer, der im Anspruch 3 festgelegt ist, bei welchem das Kodieren des zweiten
Bits auf seine Bit-Position von dem anfänglichen Bit aus konditioniert wird.
5. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus eine Reihe von Koeffizienten verwendet, die einen bestimmten
Koeffizienten als einen Kontext umgeben, und bei welchem weiter jede der Serien von
Koeffizienten wenigstens ein Bit für den Kontext beiträgt.
6. Kodierer, der im Anspruch 5 festgelegt ist, bei welchem eine vorbestimmte Anzahl
von Koeffizienten ein Extra-Bit liefern.
7. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus ein Kontext-Modell umfasst, das Kontexte verwendet, die auf
benachbarten und Mutter-Koeffizienten-Werten basieren, und bei welchem weiter die
Mutter-Koeffizienten nur S-Transformations-Mütter sind.
8. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus ein Kontext-Modell umfasst, das Kontexte verwendet, die auf
Nachbar- und Mutter-Koeffizienten-Werten basieren, und bei welchem weiter die Mutter-
Koeffizienten nur TS-Transformations-Mütter sind.
9. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus ein Kontext-Modell umfasst.
10. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus ein Vorzeichen-Bit kodiert, das teilweise auf einem Vorzeichen
eines anderen bekannten Koeffizienten beruht.
11. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus ein Kontext-Modell umfasst, das adaptiv sich ändernde
Kontexte verwendet.
12. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-
Filter die Eingangsdaten in eine Vielzahl von Koeffizienten unter Verwendung einer Monte-
Carlo-Division transformiert, bei welcher ein Pseudozufalls-Generator eine Ausgangs-
Determinate einer Rundungs-Operation liefert, die an der Ausgabe des Wavelets der Filter-
Operation durchgeführt werden soll.
13. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der binäre Entropie-
Kodierer einen Finalautomaten-Kodierer umfasst.
14. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der binäre Entropie-
Kodierer einen Hochgeschwindigkeits-Parallel-Kodierer umfasst.
15. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der binäre Entropie-
Kodierer einen Q-Kodierer umfasst.
16. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im
Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-Filter eine zweidimensionale
Zerlegung durchführt.
17. Kodierer, der im Anspruch 16 festgelegt ist, bei welchem der reversible Wavelet-
Filter einen zweidimensionalen Filter umfasst, der zwei hintereinandergeschaltete
eindimensionale Filter aufweist, die von einem zweidimensionalen Rundungsmechanismus
gefolgt werden.
18. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus ein Kontext-Modell umfasst, das eine einzige Entscheidung
kodiert, falls eine Vielzahl von Head-Bits bzw. Kopf-Bits zu kodieren sind und ihre Nord-,
Süd-, Ost- und West-Nachbarn und Mütter alle eine Tail-Information 0 aufweisen.
19. Kodierer, der im Anspruch 18 festgelegt ist, bei welchem die Vielzahl der Head-Bits
16 Head-Bits umfasst.
20. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus ein Kontext-Modell umfasst, das mit M-ary-Zentren kodiert.
21. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem Kodieren von Koeffizienten
auf dem niedrigsten Niveau der Zerlegung kodiert wird, indem ein DPCM-Schema
verwendet wird.
22. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus ein Kontext-Modell umfasst, das Kontexte verwendet, die
darauf basieren, ob ein Betrags-Bit ungleich-null in einem Koeffizienten beobachtet wurde,
und die auf der Anzahl der Bit-Ebenen seit dem ersten Betrags-Bit ungleich-null basiert, und
bei welchem Bits nach dem ersten Betrags-Bit ungleich-null nicht konditioniert sind.
23. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-
Filter, der ordnende und modellierende Mechanismus und der binäre Entropie-Kodierer ein
Nicht-Bitebenen-Kodieren durchführen.
24. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus eine Nachschlag-Tabelle aufweist, um Konditionieren
bereitzustellen.
25. Kodierer, der im Anspruch 24 festgelegt ist, bei welchem die Nachschlag-Tabelle
einen Kontext, der auf einer Mutter eines gegenwärtigen Koeffizienten basiert, und
Koeffizienten oberhalb und unterhalb des gegenwärtigen Koeffizienten, bereitstellt.
26. Kodierer, der im Anspruch 25 festgelegt ist, bei welchem die Mutter des
gegenwärtigen Koeffizienten nur eine S-Transformations-Mutter aufweist.
27. Kodierer, der im Anspruch 25 festgelegt ist, bei welchem die Mutter des
gegenwärtigen Koeffizienten nur eine TS-Transformations-Mutter aufweist.
28. Kodierer, der im Anspruch 25 festgelegt ist, bei welchem die Mutter-Bedingung
durch eine ODER-Verknüpfung durchgeführt werden kann, wobei der Ausgang der
Nachschlag-Tabelle die andere Konditionierung handhabt.
29. Kodierer, der im Anspruch 24 festgelegt ist, bei welchem die Nachschlag-Tabelle
einen Kontext liefert, der auf einem vorhergehenden Kontext, einem Koeffizienten oberhalb
des gegenwärtigen Koeffizienten, auf der Stelle des gegenwärtigen Koeffizienten und auf
einem Koeffizienten unterhalb des gegenwärtigen Koeffizienten basiert.
30. Kodierer, der im Anspruch 24 festgelegt ist und der weiter eine zweite Nachschlag-
Tabelle aufweist, die Zustands-Informationen von der gegenwärtigen Kontext-Nachschlag-
Tabelle zur Kombination mit neu erhältlichen Daten für die nächste Bit-Ebene erhält.
31. Kodierer, der im Anspruch 1 festgelegt ist, und weiter eine endliche Menge an
Arbeitsraum-Speicher aufweist und bei welchem weiter der reversible Wavelet-Filter
Wavelet-Transformationen verschiedener Höhe aufweist.
32. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-
Filter überlappende Filter aufweist.
33. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-
Filter nicht-minimale Filter aufweist.
34. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-
Filter Filter aufweist, die kein Wachsen in dem Tief-Pass bzw. in niedrigen Durchgang
verursachen.
35. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-
Filter nicht-lineare morphologische Filter aufweist.
36. Kodierer, der im Anspruch 1 festgelegt ist und weiter einen Speicher aufweist und
bei welchem Koeffizienten, die durch die Wavelet-Transformation erzeugt sind, in dem
Speicher, in Betrags/Mantissen-Form gespeichert werden.
37. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus ein M-ary-Kodieren durchführt.
38. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und
modellierende Mechanismus einen eingebetteten Kodestrom erzeugt, der nur gemäß Band
eingebettet ist.
39. Kodierer zum Kodieren von Eingangsdaten in einen komprimierten Datenstrom,
wobei der Entropie-Kodierer oder der Kodierer Folgendes aufweist:
einen reversiblen Wavelet-Filter zum Transformieren der Eingangsdaten in eine Vielzahl von Koeffizienten, wobei eine pyramidale Zerlegung mit einer variablen Anzahl von Niveaus durchgeführt wird, indem eine Reihe von TS- und S- Transformationen verwendet wird;
einen Speicher mit einer Fest-Größe, der mit dem reversiblen Wavelet-Filter verbunden ist, bei welchem der reversible Wavelet-Filter den Speicher verwendet, um Informationen während der Berechnung der Vielzahl von Koeffizienten zu speichern;
einen Steuer-Mechanismus, der mit dem reversiblen Wavelet-Filter und dem Fest- Größen-Speicher verbunden ist, um die Anzahl der Niveaus auszuwählen, die auf der festen Größe des Speichers basieren;
einen ordnenden und modellierenden Mechanismus, der mit dem reversiblen Wavelet-Filter und dem Filter-Größen-Speicher verbunden ist, wobei der ordnende und modellierende Mechanismus einen eingebetteten Kodestrom in Antwort auf die Vielzahl von Koeffizienten erzeugt, bei welchem das Ordnen und Modellieren die Vielzahl von Koeffizienten ordnet und binäre Werte innerhalb jedem der Vielzahl von Koeffizienten ordnet; und
einen binären Entropie-Kodierer, der mit dem ordnenden und modellierenden Mechanismus verbunden ist und der betreibbar ist, um den eingebetteten Kodestrom binär zu Entropie-kodieren, um den kodierten Datenstrom zu erzeugen.
einen reversiblen Wavelet-Filter zum Transformieren der Eingangsdaten in eine Vielzahl von Koeffizienten, wobei eine pyramidale Zerlegung mit einer variablen Anzahl von Niveaus durchgeführt wird, indem eine Reihe von TS- und S- Transformationen verwendet wird;
einen Speicher mit einer Fest-Größe, der mit dem reversiblen Wavelet-Filter verbunden ist, bei welchem der reversible Wavelet-Filter den Speicher verwendet, um Informationen während der Berechnung der Vielzahl von Koeffizienten zu speichern;
einen Steuer-Mechanismus, der mit dem reversiblen Wavelet-Filter und dem Fest- Größen-Speicher verbunden ist, um die Anzahl der Niveaus auszuwählen, die auf der festen Größe des Speichers basieren;
einen ordnenden und modellierenden Mechanismus, der mit dem reversiblen Wavelet-Filter und dem Filter-Größen-Speicher verbunden ist, wobei der ordnende und modellierende Mechanismus einen eingebetteten Kodestrom in Antwort auf die Vielzahl von Koeffizienten erzeugt, bei welchem das Ordnen und Modellieren die Vielzahl von Koeffizienten ordnet und binäre Werte innerhalb jedem der Vielzahl von Koeffizienten ordnet; und
einen binären Entropie-Kodierer, der mit dem ordnenden und modellierenden Mechanismus verbunden ist und der betreibbar ist, um den eingebetteten Kodestrom binär zu Entropie-kodieren, um den kodierten Datenstrom zu erzeugen.
40. Kodierer zum Kodieren von Eingangsdaten in einem komprimierten Datenstrom zur
Übertragung auf einem Kanal, wobei ein Entropie-Kodierer Folgendes aufweist:
einen reversiblen Wavelet-Filter zum Transformieren der Eingangsdaten in eine Vielzahl Koeffizienten, wobei der reversible Wavelet-Filter eine pyramidale Zerlegung der Eingangsdaten durchführt, indem eine Reihe von TS- und S- Transformationen verwendet wird;
einen eingebetteten Kodierer, der mit dem reversiblen Wavelet-Filter zum Durchführen eingebetteten Kodierens an der Vielzahl von Koeffizienten verbunden ist, und zwar derartig, dass ein Bit-Strom erzeugt wird;
einen Entropie-Kodierer, der mit dem eingebetteten Kodierer zum Durchführen von Entropie-Kodieren an dem Bit-Strom verbunden ist, um kodierte Daten zu erzeugen;
einen Kanal-Manager zur Steuerung des Speicherns komprimierter Daten in einem Fest-Größen-Speicher.
einen reversiblen Wavelet-Filter zum Transformieren der Eingangsdaten in eine Vielzahl Koeffizienten, wobei der reversible Wavelet-Filter eine pyramidale Zerlegung der Eingangsdaten durchführt, indem eine Reihe von TS- und S- Transformationen verwendet wird;
einen eingebetteten Kodierer, der mit dem reversiblen Wavelet-Filter zum Durchführen eingebetteten Kodierens an der Vielzahl von Koeffizienten verbunden ist, und zwar derartig, dass ein Bit-Strom erzeugt wird;
einen Entropie-Kodierer, der mit dem eingebetteten Kodierer zum Durchführen von Entropie-Kodieren an dem Bit-Strom verbunden ist, um kodierte Daten zu erzeugen;
einen Kanal-Manager zur Steuerung des Speicherns komprimierter Daten in einem Fest-Größen-Speicher.
41. Kodierer nach Anspruch 40, bei welchem der Speicher-Manager komprimierte Daten
in Wichtigkeits-Niveaus aufteilt und bei welchem weiterhin der Kanal-Manager alle Daten
überträgt, falls genügend Bandbreite verfügbar ist, ansonsten werden weniger wichtige
Daten gelöscht und nur wichtige Daten übertragen.
42. Kodierer, der im Anspruch 41 festgelegt ist, bei welchem der Kanal-Manager
dynamisch die Bandbreite des Kanals bestimmt.
43. Kodierer, der im Anspruch 41 festgelegt ist, bei welchem die Daten in Elemente
bzw. "Tiles" aufgeteilt werden und wobei jedes Element bzw. jedes "Tile" getrennt kodiert
und durch Wichtigkeits-Niveaus in Fest-Größen-Seiten aufgeteilt wird.
44. Kodierer, der im Anspruch 41 festgelegt ist, bei welchem der Kanal-Manager weiter
einen Puffer-Speicher aufweist.
45. Kodierer, der im Anspruch 44 festgelegt ist, bei welchem der Puffer-Speicher ein
Zirkular-Puffer-Speicher ist, der mehrere Fest-Größen-Segmente aufweist, und zwar
derartig, dass die Daten ausgegeben werden, wenn bzw. als jedes Fest-Größen-Segment
vollständig belegt bzw. zugeordnet ist.
46. Kodierer, der im Anspruch 45 festgelegt ist, bei welchem die Paketgröße mit der
Bandbreite des Kanals übereinstimmt.
47. Kodierer nach Anspruch 40, bei welchem der Kanal-Manager mit dem Entropie
Kodierer verbunden ist und die Daten in Fest-Größen-Segmente aufteilt, wobei jedes Fest-
Größen-Segment einen Hinweis auf die wichtigsten Daten in dem Segment enthält.
48. Kodierer, der im Anspruch 47 festgelegt ist, bei welchem jedes Element kodierte
Daten, einen optionalen Zeiger und das Niveau der wichtigsten Daten in diesem Segment
enthält.
49. Kodierer, der im Anspruch 47 festgelegt ist, bei welchem der Anfangspunkt bzw.
Ausgangspunkt eines jeden Bandes identifiziert wird, indem Neuanfang-Markierer
verwendet werden.
50. Kodierer, der im Anspruch 48 festgelegt ist, bei welchem der optionale Zeiger den
Nächst-Segment-Zeiger für Fest-Größen-Speicher-Management beinhalten kann.
51. Kodierer, der im Anspruch 48 festgelegt ist, bei welchem der optionale Zeiger einen
ID für das Segment umfasst.
52. Kodierer, der im Anspruch 48 festgelegt ist, bei welchem der optionale Zeiger eine
Anzahl von verschiedenen Bändern, die das Segment enthält, anzeigt.
53. Kodierer, der im Anspruch 48 festgelegt ist, bei welchem der optionale Zeiger
wenigstens ein Bit umfasst, das anzeigt, dass das Band mehr als zwei Segment enthält.
54. Verfahren zum Kodieren von Eingangsdaten in einen komprimierten Datenstrom,
das folgende Schritte aufweist:
die Eingangsdaten werden in eine Vielzahl von Koeffizienten transformiert, indem ein reversibler Wavelet-Filter verwendet wird, wobei der reversible Wavelet-Filter eine pyramidale Zerlegung der Eingangsdaten durchführt, indem eine Reihe TS- und S- Transformationen verwendet wird;
ein eingebetteter Kodestrom wird in Antwort auf die Vielzahl von Koeffizienten erzeugt, und zwar einschließlich der Schritte des Ordnens der Vielzahl von Koeffizienten und das Ordnens von binären Werten innerhalb der Vielzahl von Koeffizienten;
und der eingebetteten Kodestrom wird binär Entropie-kodiert, um den komprimierten Datenstrom zu erzeugen.
die Eingangsdaten werden in eine Vielzahl von Koeffizienten transformiert, indem ein reversibler Wavelet-Filter verwendet wird, wobei der reversible Wavelet-Filter eine pyramidale Zerlegung der Eingangsdaten durchführt, indem eine Reihe TS- und S- Transformationen verwendet wird;
ein eingebetteter Kodestrom wird in Antwort auf die Vielzahl von Koeffizienten erzeugt, und zwar einschließlich der Schritte des Ordnens der Vielzahl von Koeffizienten und das Ordnens von binären Werten innerhalb der Vielzahl von Koeffizienten;
und der eingebetteten Kodestrom wird binär Entropie-kodiert, um den komprimierten Datenstrom zu erzeugen.
55. Verfahren, das im Anspruch 54 festgelegt ist, und weiter den Schritt des Parsens
bzw. Analysierens des komprimierten Datenstroms umfasst.
56. Verfahren, das im Anspruch 54 festgelegt ist, und das weiter den Schritt umfasst,
wonach Bild-Verarbeitungs-Funktionen auf eine skalierte Darstellung des komprimierten
Datenstroms angewandt wird.
57. Verfahren, das im Anspruch 56 festgelegt ist, bei welchem Bild-Verarbeitungs-
Funktionen nur auf den niedrigsten Durchgang angewendet werden.
58. Verfahren, das im Anspruch 57 festgelegt ist, und das weiter den Schritt umfasst,
wonach die skalierte Darstellung dargestellt wird und nur die Bild-Verarbeitungs-
Funktionen auf die dargestellten Pixel angewendet werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/498,036 US5867602A (en) | 1994-09-21 | 1995-06-30 | Reversible wavelet transform and embedded codestream manipulation |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19626600A1 DE19626600A1 (de) | 1997-01-09 |
DE19626600C2 true DE19626600C2 (de) | 2001-02-08 |
Family
ID=23979361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19626600A Expired - Lifetime DE19626600C2 (de) | 1995-06-30 | 1996-07-02 | Kodierer und Verfahren zum Kodieren |
Country Status (6)
Country | Link |
---|---|
US (1) | US5867602A (de) |
JP (5) | JP3792789B2 (de) |
CN (4) | CN100568969C (de) |
DE (1) | DE19626600C2 (de) |
GB (1) | GB2303031B (de) |
HK (1) | HK1050602A1 (de) |
Families Citing this family (122)
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 |
US5867602A (en) * | 1994-09-21 | 1999-02-02 | Ricoh Corporation | Reversible wavelet transform and embedded codestream manipulation |
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 |
US6141446A (en) | 1994-09-21 | 2000-10-31 | Ricoh Company, Ltd. | Compression and decompression system with reversible wavelets and lossy reconstruction |
US6549666B1 (en) * | 1994-09-21 | 2003-04-15 | Ricoh Company, Ltd | Reversible embedded wavelet system implementation |
US6195465B1 (en) * | 1994-09-21 | 2001-02-27 | Ricoh Company, Ltd. | Method and apparatus for compression using reversible wavelet transforms and an embedded codestream |
US5659631A (en) * | 1995-02-21 | 1997-08-19 | Ricoh Company, Ltd. | Data compression for indexed color image data |
US5842004A (en) * | 1995-08-04 | 1998-11-24 | Sun Microsystems, Inc. | Method and apparatus for decompression of compressed geometric three-dimensional graphics data |
US5793371A (en) | 1995-08-04 | 1998-08-11 | Sun Microsystems, Inc. | Method and apparatus for geometric compression of three-dimensional graphics data |
SE507410C2 (sv) * | 1995-11-08 | 1998-05-25 | Ericsson Telefon Ab L M | Förfarande och anordning för rörelseestimering |
US5710835A (en) * | 1995-11-14 | 1998-01-20 | The Regents Of The University Of California, Office Of Technology Transfer | Storage and retrieval of large digital images |
DE19625402A1 (de) * | 1996-06-25 | 1998-01-02 | Siemens Ag | Verfahren zur Bearbeitung von Bildpunkten eines Bildsegments durch einen Rechner |
EP0817098B1 (de) * | 1996-06-28 | 2004-08-18 | Oki Electric Industry Co., Ltd. | Wavelettransformationsverfahren und -vorrichtung |
JP3695045B2 (ja) * | 1996-10-01 | 2005-09-14 | ソニー株式会社 | 符号化装置 |
JP3031613B2 (ja) * | 1996-11-12 | 2000-04-10 | 株式会社つくばソフト研究所 | カラー/濃淡画像入力出力装置と入力出力方法 |
US5859604A (en) * | 1997-01-14 | 1999-01-12 | International Business Machines Corporation | Merged VLSI implementation of hardware optimized Q-Coder and software optimized QM-Coder |
US6157746A (en) * | 1997-02-12 | 2000-12-05 | Sarnoff Corporation | Apparatus and method for encoding wavelet trees generated by a wavelet-based coding method |
EP0907255A1 (de) * | 1997-03-28 | 1999-04-07 | Sony Corporation | Vorrichtung und verfahren zur kodierung/dekodierung von daten sowie aufzeichnungsmedium |
US6091775A (en) * | 1997-04-17 | 2000-07-18 | Sharp Kabushiki Kaisha | Video-coding device and video-decoding device |
GB2341035B (en) * | 1997-05-01 | 2000-11-15 | Ricoh Kk | Coding wavelet transform coefficients |
GB2325584B (en) * | 1997-05-01 | 2000-03-29 | Ricoh Kk | Decompression system using inverse wavelet transform |
EP1138152B8 (de) * | 1997-05-30 | 2007-02-14 | MediaTek Inc. | Verfahren und vorrichtung zur durchführung einer hierarchischen bewegungsschätzung unter verwendung einer nicht-linearen pyramide |
US6381370B1 (en) * | 1997-07-14 | 2002-04-30 | Oki Electric Industry Co., Ltd. | Method and apparatus for image encoding |
US6233357B1 (en) * | 1997-07-14 | 2001-05-15 | Sharp Laboratories Of America, Inc. | Arbitrary shape wavelet transform with phase alignment |
DE19737258A1 (de) * | 1997-08-27 | 1999-03-04 | Iat Ag | Bilddatenübertragungsverfahren |
US6275619B1 (en) | 1997-08-29 | 2001-08-14 | Teralogic, Inc. | System and method for performing wavelet and inverse wavelet transformations of digital data using semi-orthogonal wavelets |
AUPO951997A0 (en) * | 1997-09-29 | 1997-10-23 | Canon Information Systems Research Australia Pty Ltd | A decoder method and architecture |
JPH11225078A (ja) | 1997-09-29 | 1999-08-17 | Canon Inf Syst Res Australia Pty Ltd | データ圧縮方法及び装置 |
EP0905978A3 (de) * | 1997-09-29 | 2000-04-12 | Canon Kabushiki Kaisha | Kodierungsverfahren und -vorrichtung |
AU727434B2 (en) * | 1997-09-29 | 2000-12-14 | Canon Kabushiki Kaisha | Method and apparatus for decoding |
AUPO951497A0 (en) * | 1997-09-29 | 1997-10-23 | Canon Information Systems Research Australia Pty Ltd | A method for data compression |
EP0905651A3 (de) * | 1997-09-29 | 2000-02-23 | Canon Kabushiki Kaisha | Bildverarbeitungsverfahren und -vorrichtung |
US6259820B1 (en) * | 1997-10-06 | 2001-07-10 | Nec Research Institute, Inc. | Progressive JPEG decoding |
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 |
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 | キヤノン株式会社 | 符号化及び復号装置とその符号化及び復号方法 |
JPH11191886A (ja) * | 1997-12-25 | 1999-07-13 | Matsushita Electric Ind Co Ltd | 画像データ処理方法および画像データ処理装置 |
US6332030B1 (en) * | 1998-01-15 | 2001-12-18 | The Regents Of The University Of California | Method for embedding and extracting digital data in images and video |
US6144772A (en) * | 1998-01-29 | 2000-11-07 | Canon Kabushiki Kaisha | Variable compression encoding of digitized images |
US6041143A (en) * | 1998-04-14 | 2000-03-21 | Teralogic Incorporated | Multiresolution compressed image management system and method |
US6310967B1 (en) * | 1998-04-29 | 2001-10-30 | University Of South Florida | Normal and abnormal tissue identification system and method for medical images such as digital mammograms |
US6556689B1 (en) * | 1998-05-29 | 2003-04-29 | University Of Delaware | Watermarking methods for digital images and videos |
US6236757B1 (en) * | 1998-06-18 | 2001-05-22 | Sharp Laboratories Of America, Inc. | Joint coding method for images and videos with multiple arbitrarily shaped segments or objects |
US6215907B1 (en) * | 1998-06-26 | 2001-04-10 | Fisher-Rosemont Systems, Inc. | Recursive on-line wavelet data compression technique for use in data storage and communications |
US6763139B1 (en) | 1998-07-03 | 2004-07-13 | Canon Kabushiki Kaisha | Image coding method and apparatus for localized decoding at multiple resolutions |
US6094631A (en) * | 1998-07-09 | 2000-07-25 | Winbond Electronics Corp. | Method of signal compression |
WO2000005599A2 (en) * | 1998-07-22 | 2000-02-03 | Geo Energy, Inc. | Fast compression and transmission of seismic data |
US6347157B2 (en) | 1998-07-24 | 2002-02-12 | Picsurf, Inc. | System and method for encoding a video sequence using spatial and temporal transforms |
US6229926B1 (en) * | 1998-07-24 | 2001-05-08 | Picsurf, Inc. | Memory saving wavelet-like image transform system and method for digital camera and other memory conservative applications |
US6510247B1 (en) * | 1998-09-25 | 2003-01-21 | Hewlett-Packard Company | Decoding of embedded bit streams produced by context-based ordering and coding of transform coeffiecient bit-planes |
US6263109B1 (en) * | 1998-09-25 | 2001-07-17 | Hewlett-Packard Company | Context-based ordering and coding of transform coefficient bit-planes for embedded bitstreams |
US6310976B1 (en) * | 1998-10-01 | 2001-10-30 | Sharewave, Inc. | Method and apparatus for digital data compression |
US6415058B2 (en) * | 1998-10-27 | 2002-07-02 | Hewlett-Packard Company | System for compression of digital images comprising low detail areas |
KR100331332B1 (ko) * | 1998-11-02 | 2002-06-20 | 윤종용 | 비디오 데이터 송신 장치와 수신장치 및 그 방법 |
US6487319B1 (en) | 1998-11-18 | 2002-11-26 | Sarnoff Corporation | Apparatus and method for identifying the location of a coding unit |
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 |
FR2790173A1 (fr) * | 1999-02-24 | 2000-08-25 | Canon Kk | Dispositif et procede de transformation de signal numerique |
US6601104B1 (en) * | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US6604158B1 (en) * | 1999-03-11 | 2003-08-05 | Realtime Data, Llc | System and methods for accelerated data storage and retrieval |
AU7709700A (en) * | 1999-09-23 | 2001-04-24 | Chroma Graphics, Inc. | Method and apparatus for describing and simulating complex systems |
US6246797B1 (en) * | 1999-11-12 | 2001-06-12 | Picsurf, Inc. | Picture and video storage management system and method |
US7236637B2 (en) * | 1999-11-24 | 2007-06-26 | Ge Medical Systems Information Technologies, Inc. | Method and apparatus for transmission and display of a compressed digitized image |
US20020044696A1 (en) * | 1999-11-24 | 2002-04-18 | Sirohey Saad A. | Region of interest high resolution reconstruction for display purposes and a novel bookmarking capability |
US6633674B1 (en) * | 1999-11-24 | 2003-10-14 | General Electric Company | Picture archiving and communication system employing improved data compression |
US7421136B2 (en) * | 1999-11-24 | 2008-09-02 | Ge Medical Systems Information Technologies Inc. | Image tessellation for region-specific coefficient access |
US6934420B1 (en) * | 1999-12-22 | 2005-08-23 | Trident Systems Incorporated | Wave image compression |
JP2001285645A (ja) * | 2000-01-25 | 2001-10-12 | Canon Inc | 画像入力装置、画像処理装置、画像入力方法、画像処理方法、及び画像入力システム |
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 |
US6650782B1 (en) * | 2000-02-24 | 2003-11-18 | Eastman Kodak Company | Visually progressive ordering of compressed subband bit-planes and rate-control based on this ordering |
US7035473B1 (en) * | 2000-03-01 | 2006-04-25 | Sharp Laboratories Of America, Inc. | Distortion-adaptive visual frequency weighting |
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 |
WO2001080561A1 (en) * | 2000-04-18 | 2001-10-25 | Rtimage Inc. | System and method for the lossless progressive streaming of images over a communication network |
US6631452B1 (en) * | 2000-04-28 | 2003-10-07 | Idea Corporation | Register stack engine having speculative load/store modes |
JP4545980B2 (ja) * | 2000-05-11 | 2010-09-15 | キヤノン株式会社 | 符号化装置及び符号化方法並びに記憶媒体 |
JP2002084539A (ja) * | 2000-09-07 | 2002-03-22 | Asa Systems:Kk | 逐次近似圧縮データへのビットプレーン分解ステガノグラフィの適用技術 |
US9143546B2 (en) | 2000-10-03 | 2015-09-22 | Realtime Data Llc | System and method for data feed acceleration and encryption |
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 |
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 |
US6950558B2 (en) * | 2001-03-30 | 2005-09-27 | Ricoh Co., Ltd. | Method and apparatus for block sequential processing |
US7062101B2 (en) * | 2001-03-30 | 2006-06-13 | Ricoh Co., Ltd. | Method and apparatus for storing bitplanes of coefficients in a reduced size memory |
EP1263236A2 (de) * | 2001-05-28 | 2002-12-04 | Canon Research Centre France S.A. | Verfahren und Gerät zur Verarbeitung von digitalen Signalen |
US7581027B2 (en) * | 2001-06-27 | 2009-08-25 | Ricoh Co., Ltd. | JPEG 2000 for efficent imaging in a client/server environment |
JP2003060886A (ja) * | 2001-08-09 | 2003-02-28 | Matsushita Electric Ind Co Ltd | 画像処理装置及び方法 |
US7082450B2 (en) * | 2001-08-30 | 2006-07-25 | Nokia Corporation | Implementation of a transform and of a subsequent quantization |
JP3796432B2 (ja) * | 2001-10-31 | 2006-07-12 | キヤノン株式会社 | フィルタ処理装置およびフィルタ処理方法 |
JP3922919B2 (ja) * | 2001-12-11 | 2007-05-30 | 株式会社リコー | 静止画像伸長装置及び静止画像伸長方法 |
US7120305B2 (en) * | 2002-04-16 | 2006-10-10 | Ricoh, Co., Ltd. | Adaptive nonlinear image enlargement using wavelet transform coefficients |
JP3961870B2 (ja) * | 2002-04-30 | 2007-08-22 | 株式会社リコー | 画像処理方法、画像処理装置、及び画像処理プログラム |
AUPS271002A0 (en) * | 2002-05-31 | 2002-06-20 | Canon Kabushiki Kaisha | Embedding a multiresolution compressed thumbnail image in a compressed image file |
DE10229706A1 (de) * | 2002-07-02 | 2004-12-09 | T-Mobile Deutschland Gmbh | Verfahren zur Speicherplatzverwaltung in einem Speichrmedium eines digitalen Endgeräts bei einer Datenspeicherung nach dem Verfahren der priorisierten Pixelübertragung |
FR2857527B1 (fr) * | 2003-07-11 | 2006-01-06 | Cit Alcatel | Compression contextuelle d'images numeriques |
US7634148B2 (en) * | 2005-01-07 | 2009-12-15 | Ntt Docomo, Inc. | Image signal transforming and inverse-transforming method and computer program product with pre-encoding filtering features |
JP4618676B2 (ja) * | 2005-04-28 | 2011-01-26 | 株式会社リコー | 構造化文書符号の転送方法、画像処理システム、サーバ装置、プログラム及び情報記録媒体 |
CN101194151A (zh) * | 2005-06-06 | 2008-06-04 | 国立大学法人东京工业大学 | 图像变换装置及图像变换程序 |
JP4872282B2 (ja) * | 2005-09-08 | 2012-02-08 | セイコーエプソン株式会社 | 画像表示システム,画像表示方法,画像表示プログラム,記録媒体,データ処理装置,画像表示装置 |
WO2007043608A1 (ja) * | 2005-10-12 | 2007-04-19 | Autonetworks Technologies, Ltd. | 車載データベース分配ノードおよび車載データベースシステム |
US7613347B1 (en) | 2005-12-13 | 2009-11-03 | Adobe Systems, Incorporated | Low-complexity image coding |
JP4798582B2 (ja) * | 2006-08-22 | 2011-10-19 | 株式会社リコー | 画像処理装置、画像処理方法およびプログラム |
CN102217314B (zh) * | 2008-09-18 | 2017-07-28 | 汤姆森特许公司 | 用于视频图像删减的方法和装置 |
EP2237557A1 (de) * | 2009-04-03 | 2010-10-06 | Panasonic Corporation | Kodierung für Filterkoeffizienten |
KR101457418B1 (ko) * | 2009-10-23 | 2014-11-04 | 삼성전자주식회사 | 계층적 부호화 단위의 크기에 따른 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치 |
US20130188878A1 (en) * | 2010-07-20 | 2013-07-25 | Lockheed Martin Corporation | Image analysis systems having image sharpening capabilities and methods using same |
KR20130050149A (ko) * | 2011-11-07 | 2013-05-15 | 오수미 | 인터 모드에서의 예측 블록 생성 방법 |
FR3005816B1 (fr) * | 2013-05-17 | 2019-11-29 | Jean-Claude Colin | Procede pour encoder, notamment des images compressees, notamment par "range coder" ou compression arithmetique. |
GB2536026A (en) * | 2015-03-05 | 2016-09-07 | Nokia Technologies Oy | Method and apparatus for encoding and decoding images |
WO2017046005A1 (en) * | 2015-09-18 | 2017-03-23 | Koninklijke Philips N.V. | Method and apparatus for fast and efficient image compression and decompression |
EP3291560A1 (de) * | 2016-08-29 | 2018-03-07 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Codierer zur codierung und decoder zur decodierung einer 2-dimensionalen digitalbilddarstellung in einen datenstrom unter verwendung von zusätzlichen informationen zu einem anderen koeffizienten |
WO2018041843A1 (en) * | 2016-08-29 | 2018-03-08 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Encoder for Encoding, and Decoder for Decoding, a Digital Image Representation into a Data Stream using Indicating a Number of Leading Zero Bit Planes |
CN107896330B (zh) * | 2017-11-29 | 2019-08-13 | 北京大学深圳研究生院 | 一种用于帧内和帧间预测的滤波方法 |
EP3562043B1 (de) * | 2018-04-27 | 2023-06-07 | University Of Cyprus | Verfahren zur kompression von multivariaten korrelierten daten für die mehrkanalige kommunikation |
US10701376B2 (en) * | 2018-07-05 | 2020-06-30 | Awecom, Inc. | Resilient image compression and decompression |
JP7115099B2 (ja) * | 2018-07-25 | 2022-08-09 | セイコーエプソン株式会社 | 印刷装置、印刷方法および印刷システム |
BR102019000922A2 (pt) | 2019-01-16 | 2020-10-13 | Samsung Eletrônica da Amazônia Ltda. | Método para comprimir dados de campo de luz usando transformadas de quatro dimensões de tamanho de bloco variável e decomposição por planos de bits |
US11206417B2 (en) * | 2019-05-30 | 2021-12-21 | Tencent America LLC | Method and apparatus for video coding |
GB2602246A (en) * | 2020-10-22 | 2022-06-29 | Memoscale As | Lossless JPEG recompression method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0517273A2 (de) * | 1991-06-07 | 1992-12-09 | Alcatel Espacio S.A. | Verfahren und Einrichtung zur Regulierung der Ausgangsbitrate in Videokodern mit variabler Bitrate |
US5315670A (en) * | 1991-11-12 | 1994-05-24 | General Electric Company | Digital data compression system including zerotree coefficient coding |
US5321776A (en) * | 1992-02-26 | 1994-06-14 | General Electric Company | Data compression system including successive approximation quantizer |
JPH06256038A (ja) * | 1993-03-02 | 1994-09-13 | Yoshinori Takashima | 陶磁器用七宝絵具 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4589011A (en) * | 1984-01-16 | 1986-05-13 | At&T Bell Laboratories | Single sideband modulated chrominance information for compatible high-definition television |
GB8621994D0 (en) * | 1986-09-12 | 1986-10-22 | Crosfield Electronics Ltd | Image processing |
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. |
US5028995A (en) * | 1987-10-28 | 1991-07-02 | Hitachi, Ltd. | Picture signal processor, picture signal coder and picture signal interpolator |
EP0339589A3 (de) * | 1988-04-28 | 1992-01-02 | Sharp Kabushiki Kaisha | Orthogonales Transformationskodierungssystem für Bilddaten |
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 |
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 |
JP3012698B2 (ja) * | 1991-01-29 | 2000-02-28 | オリンパス光学工業株式会社 | 画像データの符号化装置および符号化方法 |
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 |
US5260967A (en) * | 1992-01-13 | 1993-11-09 | Interdigital Technology Corporation | CDMA/TDMA spread-spectrum communications system and method |
JPH06125543A (ja) * | 1992-10-12 | 1994-05-06 | Toshiba Corp | 符号化装置 |
JP3293920B2 (ja) * | 1993-01-22 | 2002-06-17 | キヤノン株式会社 | 画像処理装置およびその方法 |
US5583500A (en) * | 1993-02-10 | 1996-12-10 | Ricoh Corporation | Method and apparatus for parallel encoding and decoding of data |
US5381145A (en) * | 1993-02-10 | 1995-01-10 | Ricoh Corporation | Method and apparatus for parallel decoding and encoding of data |
EP0622741A3 (de) * | 1993-03-30 | 1998-12-30 | KLICS, Ltd. | Vorrichtung und Verfahren zur Datenkomprimierung/-dekomprimierung |
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-06-30 US US08/498,036 patent/US5867602A/en not_active Expired - Lifetime
-
1996
- 1996-06-25 GB GB9613320A patent/GB2303031B/en not_active Expired - Lifetime
- 1996-07-02 JP JP17268196A patent/JP3792789B2/ja not_active Expired - Lifetime
- 1996-07-02 CN CN200410078981.8A patent/CN100568969C/zh not_active Expired - Lifetime
- 1996-07-02 DE DE19626600A patent/DE19626600C2/de not_active Expired - Lifetime
- 1996-07-02 CN CN96112109A patent/CN1104140C/zh not_active Expired - Lifetime
- 1996-07-02 CN CN200610100305.5A patent/CN1917561A/zh active Pending
-
2001
- 2001-12-21 CN CNB011437855A patent/CN1174616C/zh not_active Expired - Lifetime
-
2003
- 2003-02-05 JP JP2003027812A patent/JP4025847B2/ja not_active Expired - Lifetime
- 2003-04-11 HK HK03102663A patent/HK1050602A1/xx not_active IP Right Cessation
-
2005
- 2005-03-18 JP JP2005080430A patent/JP2005260980A/ja active Pending
- 2005-03-18 JP JP2005080432A patent/JP3800551B2/ja not_active Expired - Lifetime
- 2005-03-18 JP JP2005080431A patent/JP2005295540A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0517273A2 (de) * | 1991-06-07 | 1992-12-09 | Alcatel Espacio S.A. | Verfahren und Einrichtung zur Regulierung der Ausgangsbitrate in Videokodern mit variabler Bitrate |
US5315670A (en) * | 1991-11-12 | 1994-05-24 | General Electric Company | Digital data compression system including zerotree coefficient coding |
US5321776A (en) * | 1992-02-26 | 1994-06-14 | General Electric Company | Data compression system including successive approximation quantizer |
JPH06256038A (ja) * | 1993-03-02 | 1994-09-13 | Yoshinori Takashima | 陶磁器用七宝絵具 |
Non-Patent Citations (2)
Title |
---|
CHEN, J.u.a.: Wavelet Pyramid Image Coding with Predictable and Controllable Subjective Picture Quality, In: IEICE Trans. Fundamentals, Vol.E76-A,No.9, Sept. 1993, S. 1458-1468 * |
SHAPIRO, J.: Embedded Image Coding Using Zerotreesof Wavelet Coefficients, In: IEEE Trans. on SignalProcessing, Vol.41, No.12, Dec. 1993, S.3445-3462 * |
Also Published As
Publication number | Publication date |
---|---|
JP2005295540A (ja) | 2005-10-20 |
GB2303031A (en) | 1997-02-05 |
CN1620142A (zh) | 2005-05-25 |
JP2005278184A (ja) | 2005-10-06 |
JP3792789B2 (ja) | 2006-07-05 |
CN1174616C (zh) | 2004-11-03 |
JP3800551B2 (ja) | 2006-07-26 |
JP2003283842A (ja) | 2003-10-03 |
CN100568969C (zh) | 2009-12-09 |
CN1917561A (zh) | 2007-02-21 |
GB9613320D0 (en) | 1996-08-28 |
JP4025847B2 (ja) | 2007-12-26 |
US5867602A (en) | 1999-02-02 |
CN1154043A (zh) | 1997-07-09 |
CN1104140C (zh) | 2003-03-26 |
JPH0927912A (ja) | 1997-01-28 |
GB2303031B (en) | 1998-04-29 |
HK1050602A1 (en) | 2003-06-27 |
JP2005260980A (ja) | 2005-09-22 |
DE19626600A1 (de) | 1997-01-09 |
CN1390044A (zh) | 2003-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19626600C2 (de) | Kodierer und Verfahren zum Kodieren | |
DE19626615C2 (de) | Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet | |
DE19534943B4 (de) | Vorrichtung zur Komprimierung unter Verwendung von eingebetteten Kleinwellen | |
US7068849B2 (en) | Method and apparatus for compression using reversible wavelet transforms and an embedded codestream | |
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 | |
DE69722601T2 (de) | Datenkompression mit hybrider verlustloser entropiekodierung von run-length codes | |
DE19819405B4 (de) | Implementation eines reversiblen eingebetteten Wavelet-Systems | |
DE60015755T2 (de) | Verlustfreie adaptive codierung von daten eines endlichen alphabets | |
GB2313757A (en) | Method using an embedded codestream |
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 | ||
R071 | Expiry of right |