DE19626600C2 - Kodierer und Verfahren zum Kodieren - Google Patents

Kodierer und Verfahren zum Kodieren

Info

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
Application number
DE19626600A
Other languages
English (en)
Other versions
DE19626600A1 (de
Inventor
Ahmad Zandi
Edward L Schwartz
Michael J Gormish
Martin Boliek
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of DE19626600A1 publication Critical patent/DE19626600A1/de
Application granted granted Critical
Publication of DE19626600C2 publication Critical patent/DE19626600C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/148Wavelet transforms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/12Selection 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/12Selection 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/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/162User input
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/186Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/1883Methods 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/36Scalability techniques involving formatting the layers as a function of picture distortion after decoding, e.g. signal-to-noise [SNR] scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/635Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/64Methods 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/647Methods 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods 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/98Adaptive-dynamic-range coding [ADRC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/63Control 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/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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.
BESCHREIBUNG DER ERFINDUNG
Ein Verfahren und ein Apparat zur Kompression und Dekompression wird beschrieben. In der folgenden detaillierten Beschreibung der vorliegenden Erfindung werden zahlreiche besondere Details dargelegt, wie zum Beispiel Arten von Kodierern, Anzahlen von Bits, Signalnamen, etc., um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Jedoch wird es für Fachleute verständlich sein, daß die vorliegende Erfindung ohne diese spezifischen Details durchgeführt werden kann. In anderen Fällen werden gut bekannte Strukturen und Vorrichtungen eher in der Form eines Blockdiagramms als detailliert gezeigt, um zu vermeiden, daß die vorliegende Erfindung verschleiert wird.
Einige Abschnitte der detaillierten Beschreibung, die folgt, werden mittels Algorithmen und symbolischen Darstellungen von Operationen mit Datenbits innerhalb eines Computerspeichers dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die von Fachleuten des Datenverarbeitungsbereichs verwendet werden, um am effektivsten das Wesen ihrer Arbeit anderen Fachleuten zu übermitteln. Ein Algorithmus wird hier und im allgemeinen als eine selbstkonsistente Sequenz bzw. Folge von Schritten verstanden, die zu einem gewünschten Ergebnis führen. Bei den Schritten handelt es sich um solche, die physikalische Manipulationen von physikalischen Größen erfordern. Üblicherweise, jedoch nicht notwendig, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die in der Lage sind, gespeichert, übertragen, kombiniert, verglichen oder in anderer Weise manipuliert zu werden. Es hat sich manchmal als vorteilhaft bzw. bequem erwiesen, hauptsächlich aus Gründen der allgemeinen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
Es sollte jedoch im Kopf behalten werden, daß alle diese und ähnliche Terme den passenden bzw. geeigneten physikalischen Größen zugeordnet werden sollen und daß es sich bei ihnen nur um herkömmliche Label bzw. Bezeichnungen handelt, die diesen Größen zugeordnet werden. Soweit es nicht speziell anders festgestellt wird, wie dies von den folgenden Diskussionen offensichtlich ist, ist es zu verstehen, daß durchgehend bei der vorliegenden Erfindung die Diskussionen, die Terme, wie zum Beispiel "Verarbeiten" oder "Rechnen" oder "Berechnen" oder "Bestimmen" oder "Darstellen" oder dergleichen auf die Tätigkeit und auf Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung bezugnehmen, das bzw. die Daten manipuliert oder transformiert, die als physikalische (elektronische) Größen innerhalb der Register und Speicher des Computersystems dargestellt werden, und zwar in andere Daten, die in ähnlicher Weise als physikalische Größen innerhalb der Speicher oder Register oder anderer derartiger Informationsspeicher Transmissions- oder Anzeigevorrichtungen dargestellt werden.
Die vorliegende Erfindung bezieht sich ebenso auf einen Apparat zur Durchführung der hierin beschriebenen Operationen bzw. Arbeitsgänge. Dieser Apparat kann speziell für die erforderlichen Zwecke konstruiert werden oder er kann einen Allzweckcomputer aufweisen, der mittels eines Computerprogramms, das in dem Computer gespeichert ist, selektiv aktiviert oder rekonfiguriert wird. Die Algorithmen und Anzeigen bzw. Displays, die hierin dargestellt werden, stehen nicht inhärent in Beziehung zu irgendeinem bestimmten Computer oder anderen Apparat. Verschiedene Allzweckmaschinen können mit Programmen in Übereinstimmung mit der hierin beschriebenen Lehre verwendet werden oder es kann sich als geeignet erweisen, spezialisiertere Apparate zu konstruieren bzw. aufzubauen, um die erforderlichen Verfahrensschritte durchzuführen. Die erforderliche Struktur für eine Vielzahl dieser Maschinen wird sich aus der folgenden Beschreibung ergeben. Zusätzlich wird die vorliegende Erfindung nicht unter Bezugnahme auf irgendeine bestimmte Programmiersprache beschrieben. Es wird begrüßt werden, daß eine Vielzahl von Programmiersprachen verwendet werden kann, um die Lehre der Erfindung, wie sie hierin beschrieben ist, zu implementieren.
Die folgenden Terme bzw. Bezeichnungen werden in der folgenden Beschreibung verwendet. Es wurde eine Definition für diese verschiedenen Bezeichnungen bzw. Terme mit aufgenommen. Jedoch sollte die bereitgestellte Definition nicht in dem Umfang als beschränkend aufgefaßt werden, in dem die Terme im Fachbereich bekannt sind. Diese Definitionen werden als Hilfe bei dem Verständnis der vorliegenden Erfindung bereitgestellt.
Bit-Wertigkeit bzw. Bit-Signifikanz
Eine Zahldarstellung, ähnlich zu Vorzeichen-Betrag, mit Kopf-Bits bzw. Head-Bits, gefolgt von dem Vorzeichen-Bit, gefolgt von Schwanz-Bits ("Tail"-Bits), falls es welche gibt. Die Einbettung kodiert in Bitebenen-Ordnung unter Bezugnahme auf diese Darstellung.
Kodiereinheit
Eine Einheit von Koeffizienten, die zusammen kodiert sind und die in beliebiger Ordnung sein können. In einer Ausführungsform umfaßt eine Kodiereinheit eine oder mehrere Bäume, die in einem Rechteck angeordnet sind. Eine Kodiereinheit kann aus einem ganzen Bild, ein Satz von Bildern oder anderen Datensätzen bestehen. Die Kodiereinheit hat einen wesentlichen Einfluß auf die Puffergröße, die zur Berechnung einer Transformation erforderlich ist. Ebenso können bei einer Ausführungsform keine Inhalte aus den Koeffizienten außerhalb der gegenwärtigen Kodiereinheit abgeleitet werden. Jedoch können die Entropie-Kodes innerhalb einer Kodiereinheit oder nach vielen Kodiereinheiten zurückgesetzt bzw. neu eingestellt werden. Die Kodiereinheit kann nicht notwendigerweise willkürlich bzw. regellos adressiert werden.
Kontext-Modell
Verfügbare Information relativ zu dem gegenwärtigen Bit, das zu kodieren ist, die historisch gelernte Information über das gegenwärtige Bit gibt. Dies ermöglicht eine Abschätzung bedingter Wahrscheinlichkeit für das Entropie-Kodieren.
Bäume
Die Koeffizienten und die Pixels, die zu einem einzigen Koeffizienten in dem LL der Wavelet-Zerlegung auf höchstem Niveau in Beziehung stehen. Die Zahl der Koeffizienten ist eine Zahl der Zahl der Niveaus.
Band
Die Koeffizienten und die Pixel, die zu einer einzigen Reihe oder Zeile von Koeffizienten in dem LL der Wavelet-Zerlegung höchsten Niveaus für zweidimensionale Daten in Beziehung stehen. Bänder werden für Daten anderer Dimensionen ähnlich definiert.
Zerlegungsniveau
Ein Stelle bzw. ein Ort in der Wavelet-Zerlegungspyramide.
Eingebettete Quantisierung
Quantisierung, die durch den Kodestrom impliziert wird. Zum Beispiel, falls die Wichtigkeits-Niveaus in Reihenfolge plaziert werden, und zwar von dem wichtigsten zu dem am wenigsten wichtigsten, dann wird die Quantisierung durch ein einfaches Abschneiden des Kodestroms durchgeführt. Dieselbe Wirkung bzw. Funktionsfähigkeit ist mit Kennzeichen, Markern, Zeigern oder anderen Hinweiseinrichtungen verfügbar.
Entropie-Kodierer
Eine Vorrichtung, die ein gegenwärtiges Bit basierend auf seinen Kontext kodiert. Der Kontext erlaubt die Wahrscheinlichkeitsabschätzung für die beste Darstellung des gegenwärtigen Bits (oder Mehrfach-Bits).
Fest-Rate bzw. festgelegte Rate
Eine Anwendung oder ein System, die eine bestimmte Pixel-Rate aufrechterhält und einen Kanal mit beschränkter Bandweite aufweist. Dies erfordert, daß eher eine lokale mittlere Kompression erreicht wird, als eine globale mittlere Kompression. Beispiel: MPEG.
Fest-Größe bzw. festgelegte Größe
Eine Anwendung oder ein System, das einen Puffer mit beschränkter Größe aufweist. In einem derartigen Fall wird eine globale mittlere Kompression erreicht, zum Beispiel ein Druckpuffer. (Eine Anwendung kann sowohl eine Fest-Raten-Anwendung als auch eine Fest-Größen-Anwendung oder beides sein.)
Fest-Länge bzw. festgelegte Länge
Ein System, das einen bestimmten Block von Daten in einen bestimmten Block von komprimierten Daten, zum Beispiel BTC umwandelt. Fest-Längen-Kodes dienen Fest- Raten- und Fest-Größen-Anwendungen; jedoch ist die Raten-Verzerrungs- Leistungsfähigkeit oft schlecht im Vergleich zu Systemen mit variabler Rate.
Horizont-Kontext-Modell
Ein Kontext-Modell zur Verwendung mit einem Entropie-Kodierer (in einer Ausführungsform), das hierin als Teil der vorliegenden Erfindung definiert ist.
Kopf bzw. Head
In der Bit-Wertigkeit-Darstellung sind die Kopf-Bits bzw. Head-Bits die Betrag-Bits, und zwar von dem höchstwertigen bis einschließlich zu dem ersten Bit ungleich-null.
Überlappte Transformation bzw. Überlapp-Transformation
Eine Transformation, bei der ein einziger Quellenabtastpunkt zu mehreren Koeffizienten derselben Frequenz beiträgt. Beispiele beinhalten viele Wavelets und die "Lapped Orthogonal Transform" ("überlappte orthogonale Transformation").
Progressiv bzw. fortschreitend
Ein Kodestrom, der so geordnet ist, daß ein kohärentes bzw. zusammenhängendes dekomprimiertes Ergebnis von einem Teil der kodierten Daten verfügbar bzw. erhältlich ist, das mit weiteren Daten verfeinert werden kann. Ein Kodestrom, der mit tiefergehenden bzw. sich vertiefenden Bit-Ebenen von Daten geordnet ist; in diesem Fall nimmt er üblicherweise auf Wavelet-Koeffizienten-Daten bezug.
Pyramidal
Eine Folge von Auflösungen, wo jede niedrigere Auflösung einen linearen Faktor von zwei größer ist (ein Faktor von vier in der Ebene).
Reversible Transformation bzw. Umkehr-Transformation
Eine wirksame bzw. effiziente Transformation, die mit einer Integer-Arithmetik bzw. Ganzzahl-Arithmetik implementiert ist, die eine exakte Rekonstruktion aufweist.
S-Transformation
Ein bestimmtes reversibles Wavelet-Filter-Paar mit einem 2-Abgriff-Tiefpaß-("2-tap low pass") und einem 2-Abgriff-Hochpaß-("2-tap high pass")Filter.
Schwanz bzw. Tail
In der Bitwertigkeitsdarstellung sind die Schwanz-Bits bzw. Tail-Bits die Betrags-Bits mit einer niedrigeren Wertigkeit, als das höchstwertige Bit ungleich-null.
Schwanz-Information bzw. Tail-Information
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.
Schwanz-ein bzw. Tail-ein ("tail-on")
Bei einer Ausführungsform, zwei Zustände, die davon abhängen, ob der Schwanz- Informations-Zustand bzw. der Tail-Informations-Zustand null oder nicht-null ist. Er wird für das Horizont-Kontext-Modell verwendet.
TS-Transformation
Zwei-Sechs-Transformation ("Two-Six transform"), ein bestimmtes Wavelet-Filterpaar mit einem 2-Abgriff-Tiefpaß-("2-tap low pass") und einem 6-Abgriff-Hochpaß-("6-tap high pass")Filter.
Verlustfrei/verlustbehaftet vereinigt
Dasselbe Kompressions-System liefert einen kodierten Datenstrom, der zur verlustfreien oder verlustbehafteten Rekonstruktion in der Lage ist. Im Fall der vorliegenden Erfindung, wie im folgenden beschrieben werden wird, ist dieser Kodestrom zu beiden in der Lage, und zwar ohne Einstellungen bzw. Einstellen des Kodierers oder Instruktionen an den Kodierer.
Visuelle Wichtigkeits-Pegel
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.
Wavelet-Filter
Die Hoch- und Tiefpaß-Synthese- und Analyse-Filter, die bei der Wavelet-Transformation verwendet werden.
Wavelet-Transformation
Eine Transformation mit sowohl "Frequenz-" und "Zeit- (oder Raum-) "Bereichs- Nebenbedingungen bzw. Abhängigkeiten. Bei einer beschriebenen Ausführungsform handelt es sich um eine Transformation, die aus einem Hochpaß-Filter und einem Tiefpaß- Filter besteht. Die sich ergebenen Koeffizienten werden um zwei dezimiert (kritisch gefiltert) und die Filter werden auf Tiefpaß-Koeffizienten angewendet.
Überblick über die vorliegende Erfindung
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.
Überblick über das System der vorliegenden Erfindung
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.
Wavelet-Zerlegung
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.
Zweidimensionele Wavelet-Zerlegung
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.
Ordnen und Modellieren der Koeffizienten und Bitebenen
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.
Kodiereinheit
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.
Modellieren
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.
Bitwertigkeitsdarstellung
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
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".
Koeffizientenausrichtung
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.
Tabelle 1
Beispiel einer Koeffizienten-Ausrichtung, b = 8
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.
Kontextmodell
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.
Entropiekodieren
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.
Kodier- und Dekodierprozeß der vorliegenden Erfindung
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.
Alternative Ausführungsformen der vorliegenden Erfindung
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.
Wavelet-Filter
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).
Speicherverwendung für Datenfluß-Management für Wavelet-Filter
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.
Koeffizientenbäume
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.
Kontext-Modell-Alternativen
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.
A. Durchführung der Wavelet-Transformation
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.
Wahl des Wavelet-Transformationsfilters
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.
Kodiereinheit-Definition
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.
Pufferung und Koeffizientenberechnung
Um eine Kodiereinheit zu erzeugen, die in Fig. 21 beschrieben ist, kann ein Arbeitsraum-Puffer der Größe 2 . w . m verwendet werden, wo w die Breite des Bildes ist und m die maximale Koeffizientengröße in Bits ist. Wegen der Natur der Wavelet-Filter, die für die vertikalen Transformations- (d. h. spaltenweise)Durchgänge gewählt wurden, liegt das Arbeitsraum-Speicher-Erfordernis bei ungefähr 18-20 Zeilen. Jeder horizontale Transformations- (d. h. reihenweiser) Durchgang, von denen jeder eine TS-Transformation ist, wird eine Zeile (Reihe) zu einer Zeit berechnet und die neuen Koeffizienten ersetzen die alten Koeffizienten oder Pixel.
Die ersten zwei vertikalen Transformationsdurchgänge verwenden die TS- Transformationsfilter. Wegen der Sechs-Abgriff-Hochpaß-Filter hängt jeder Hochpaß- Koeffizient in dem vertikalen Durchgang von sechs Zeilen von entweder Pixel- oder Koeffizientendaten ab. Ein erzeugter Hochpaß-TS-Koeffizient steht zu den obersten zwei Zeilen mit vier darunterliegenden Zeilen für den Überlapp in Beziehung. Dies ist in Fig. 22 gezeigt. Nimmt man Bezug auf Fig. 22, so ist ein vertikales Bildsegment einer Kodiereinheit gezeigt. Das vertikale Bildsegment der Kodiereinheit ist das Ergebnis des Original-Bildes, das mittels eines horizontalen Durchganges der TS-Transformation transformiert worden ist. Ein vertikales Niveau-1-Segment einer Kodiereinheit ist gezeigt und ist die 2-D-Transformation ersten Niveaus des Bildes. Das vertikale Niveau-1- Segment wird erhalten, indem ein horizontaler Durchgang mit einer TS-Transformation durchgeführt wird. Ein vertikales Niveau-2-Segment einer Kodiereinheit ist ebenso gezeigt und ergibt sich aus der Anwendung der TS-Transformation auf dem LL- Unterblock des Niveau-1-Blocks auf beide Dimensionen.
Es sollte bemerkt werden, daß, da die TS-Transformation um vier Pixel (oder Koeffizienten) überlappt ist, vier Zeilen von Daten werden an dem Ende einer Kodiereinheit gesichert, die bei der Berechnung der Koeffizienten der nächsten Kodiereinheit verwendet werden sollen. Mit anderen Worten zur Erzeugung der Niveau-1- Koeffizienten werden zwei Extrazeilen von Pixels sowohl oben als unten benötigt oder vier Extrazeilen werden unten benötigt. Um die Niveau-2-Koeffizienten zu erzeugen, werden zwei Extrazeilen der Niveau-1-Koeffizienten benötigt, und zwar sowohl oben als unten oder vier werden unten benötigt. Um diese Extraniveau-1-Koeffizienten zu erzeugen, werden zwei Zeilen von Pixels sowohl oben als auch unten benötigt oder vier werden unten gebraucht. Somit überspannt jede Kodiereinheit 28 vertikale Zeilen.
Wichtigerweise ist jedoch keine Extra-Berechnung erforderlich, um diese "Extra"-Niveau- 1-Koeffizienten zu erzeugen, da sie in den Kodiereinheiten oberhalb und unterhalb der aktuellen bzw. gegenwärtigen benutzt werden. Bemerkenswert ist ebenso, daß nur 20 Zeilen des Speichers benötigt werden, weil nur die Niveau-2-Koeffizienten gespeichert werden.
Die zwei abschließenden vertikalen Durchgänge sind S-Transformationen, die keinen Überlapp im Tiefpaß aufweisen und somit keine Extrazeilen benötigen.
Speicher für die Transformations-Berechnung
Sind Pixelwerte oder Koeffizientenwerte der Größe b-Bits (in dem Bereich von -2b-1 . . ., 0, . . . 2b-1 - 1) gegeben, so sind die glatten Ausgänge bzw. Ausgaben, s(.), sowohl der S- Transformation als auch der TS-Transformation ebenso b-Bits. Mit anderen Worten, sie haben denselben Bereich bzw. dieselbe Spanne, wie der Eingang. Jedoch werden die eindimensionalen detaillierten Ausgaben, d(.), der S-Transformation bzw. der TS- Transformation b + 1 bzw. b + 2 Bits zum jeweiligen Ausdrücken einnehmen.
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:
Tabelle 2
Speicherkosten für Niveau 0
Tabelle 3
Speicherkosten für Niveau 1
Tabelle 4
Speicherkosten für Niveau 2
Tabelle 5
Speicherkosten für Niveau 3
Tabelle 6
Speicherkosten für Niveau 4
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.
B. Eingebettete Ordnung der vorliegenden Erfindung Ordnen des Kodestrom
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.
Ausrichtung der Koeffizienten
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.
Tabelle 7
Koeffizientenausrichtung
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.
Das horizontale Kontext-Modell
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.
Tabelle 8
Definition der Tail-Information
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):
Tabelle 9
Tabelle falls Tail-Information für den Beispiel-Kontext-Koeffizienten
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.
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.
Horizontal-Kontext-Modell
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.
Statistische Modelle
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.
Kodier-Alternativen
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
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.
Verbesserungen
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.
Datenanordnung
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.
Ziel-Vorrichtungen für den eingebetteten Kodestrom
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.
Übertragung oder Dekodier-Kodestrom-Parser
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.
Eingebettetes Ziel gemäß geringer Auflösung und hoher Pixeltiefe
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.
Eingebettetes Ziel gemäß hoher Auflösung und niedriger Pixeltiefe
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.
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 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.
Interpolieren mit der Wavelet-Transformation
Wavelets können verwendet werden, um Bilder zu höherer Auflösung zu interpolieren. Die Ergebnisse sind visuell ziemlich vergleichbar mit bikubischen Spline-Techniken. Falls die komprimierten Daten bereits in der Gestalt von Wavelet-Koeffizienten vorliegen, ist die tatsächliche zusätzliche Berechnung für die Interpolation geringer als beim bikubischen Spline.
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.
Verwendung eines Kanals
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.
Alternative Ausführungsform des Kanal-Managers
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.)
Nahezu verlustfrei
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.
Idempotente Operation
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.
Anwendungen
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.
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.
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.
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.
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.
DE19626600A 1995-06-30 1996-07-02 Kodierer und Verfahren zum Kodieren Expired - Lifetime DE19626600C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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