DE19626615C2 - Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet - Google Patents

Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet

Info

Publication number
DE19626615C2
DE19626615C2 DE19626615A DE19626615A DE19626615C2 DE 19626615 C2 DE19626615 C2 DE 19626615C2 DE 19626615 A DE19626615 A DE 19626615A DE 19626615 A DE19626615 A DE 19626615A DE 19626615 C2 DE19626615 C2 DE 19626615C2
Authority
DE
Germany
Prior art keywords
encoder
bit
coefficients
coefficient
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19626615A
Other languages
English (en)
Other versions
DE19626615A1 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=23982114&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE19626615(C2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of DE19626615A1 publication Critical patent/DE19626615A1/de
Application granted granted Critical
Publication of DE19626615C2 publication Critical patent/DE19626615C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/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/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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 das Gebiet der Datenkompression und Dekompressionssysteme; insbesondere betrifft die vorliegende Erfindung ein Verfahren und ein Apparat für verlustfreies ("lossless") und verlustreiches ("lossy") Kodieren und Dekodieren von Daten in Kompressions-/Dekompressions-Systemen. (Die Anmeldung geht auf eine US-Anmeldung mit der Seriennummer 08/310 146 zurück, die den Titel trägt "Apparatus for Compresson Using Reversible Embedded Wavelets" eingereicht am 20. September 1994).
Datenkompression ist ein extrem nützliches Werkzeug, um große Datenmengen zu speichern und zu übertragen. Zum Beispiel wird die Zeit, die zur Übertragung eines Bildes nötig ist, wie zum Beispiel bei einer Faksimileübertragung eines Dokuments, drastisch reduziert, wenn eine Kompression verwendet wird, um die Anzahl der Bits zu verringern, die erforderlich sind, um das Bild wieder herzustellen.
Es gibt im Stand der Technik viele unterschiedliche Kompressionstechniken. Die Kompressionstechniken können in zwei breite Kategorien aufgeteilt werden, nämlich verlustreiches bzw. verlustbehaftetes Kodieren und verlustfreies Kodieren. Verlustbehaftetes Kodieren führt zu dem Verlust von Information, und zwar derart, daß es keine Garantie für eine perfekte Rekonstruktion der Originaldaten gibt. Das Ziel einer verlustbehafteten Kompression ist, daß Änderungen an den Originaldaten auf eine solche Art und Weise durchgeführt werden, daß sie nicht beanstandbar oder feststellbar sind. Bei der verlustfreien Kompression wird alle Information aufrechterhalten bzw. behalten und die Daten werden in einer Art und Weise komprimiert, die eine perfekte Rekonstruktion erlaubt.
Bei der verlustfreien Kompression werden Eingangssymbole oder Intensitätsdaten in Ausgangskodewörtern konvertiert. Der Eingang bzw. die Eingangssignale kann bzw. können Bild-, Audio-, eindimensionale (z. B. Daten, die sich räumlich oder zeitlich ändern), zweidimensionale (z. B. Daten, die sich in zwei räumliche Richtungen ändern (oder in einer räumlichen und einer zeitlichen Dimension)) oder vieldimensiona­ le/multispektrale Daten beinhalten. Falls die Kompression erfolgreich ist, werden die Kodewörter in weniger Bits dargestellt, als die Anzahl der Bits beträgt, die für die unkodierten Eingangssymbole (oder Intensitätsdaten) benötigt werden. Verlustfreie Kodierverfahren beinhalten Wörterbuch-Verfahren bzw. lexikalische Verfahren ("dictionary methods") des Kodierens (z. B. Lempel-Ziv), Lauflängen-Kodieren ("run length coding"), 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 JPEG-Standard) für Halbton-Bilder sind Beispiele für eine verlustfreie Kompression für Bilder. Bei der verlustreichen bzw. verlustbehafteten Kompression ("lossy compression") werden Eingangssymbole bzw. Eingangszeichen oder Intensitätsdaten vor der Konversion in Ausgangskodewörter quantisiert. Die Quantisierung soll relevante Charakteristiken der Daten aufrechterhalten, während unwichtige Charakteristiken eliminiert bzw. beseitigt werden. Vor der Quantisierung verwenden verlustbehaftete Kompressionssysteme häufig eine Transformation, um eine Energie-Verdichtung ("energy compaction") bereitzustellen. JPEG ist ein Beispiel eines verlustbehafteten Kodierverfahrens für Bilddaten.
Jüngste Entwicklungen in der Bildsignalverarbeitung konzentrieren weiterhin ihre Aufmerksamkeit auf ein Bedürfnis nach effizienten und exakten Formen des Datenkompressions-Kodierens. Verschiedene Formen der Transformation oder pyramidaler Signalverarbeitung wurden vorgeschlagen, einschließlich der Multi- Auflösungs-Pyramidalen-Verarbeitung ("multiresolution pyramidal processing") und der Wavelet-Pyramidalen-Verarbeitung. Diese Formen werden ebenso als Unterband- Verarbeitung ("subband processing") und hierarchische Verarbeitung ("hierarchical processing") bezeichnet. Die Wavelet-Pyramidalen-Verarbeitung von Bilddaten ist eine besondere Art der Multi-Auflösungs-Pyramidalen-Verarbeitung, die Quadratur-Spiegelfilter ("quadrature mirror filters" bzw. QMFs) verwenden, um eine Unterband-Zerlegung eines Originalbildes zu erzeugen. Bemerkenswert ist, daß andere Typen von Nicht-QMF- Wavelets existieren. Bezüglich weiterer Informatione 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 Coefficinets", 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, 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.).
Aus Otha, M. u. a., "Wavelet picture coding with transform abroach", in IEICE trans. Fundamentals, Band E75-A Nr. 7, Juli 1992, Seite 776 bis 785 ist die Bildkodierung mit Wavelets bekannt. Dabei wird ein neues Kodierschema unter der Verwendung orthonormaler Wavelettransformationen vorgeschlagen. Verschiedene Formen der Transformationskodierung und der Unterbandkodierung werden diskutiert. Dann wird ein Waveletkodierverfahren vorgeschlagen, das einen neuen Lösungsansatz ähnlich zur Transformationskodierung verwendet. Dieser Lösungsansatz unterscheidet sich von den herkömmlichen, die eine Waveletkodierung als eine Klasse von Unterbandkodierung betrachten. Ein Simulationsverfahren wird durchgeführt, um das vorgeschlagene Kodierverfahren zu beurteilen. Für das Unterbandkodieren ist in der Druckschrift beschrieben, daß eine Unterteilung der horizontalen Zeilen hinsichtlich der Frequenz erfolgt und diese unabhängig kodiert werden. Weiter ist für das Transformationskodieren beschrieben, daß die Koeffizienten in vertikale Spalten hinsichtlich des Raums unterteilt werden und unabhängig kodiert werden.
Aus Chen, J., u. a., "Wavelet pyramid image coding with predictable and controllable subjective picture quality", in IEICE Trans. Fundamentals, Band E76-A, Nr. 9, September 1993, Seiten 1458 bis 1468 ist eine Bildkodierung mit Wavelets bekannt. Durch die Verwendung einer Wavelettransformation wird, das Originalbild in einen Satz von Unterbildern mit unterschiedlichen Frequenzkanälen und Auflösungen zerlegt. Durch die Verwendung menschlicher Kontrastempfindlichkeit wird jedes zerlegte Unterbild gemäß seinem Beitrag zu der gesamten visuellen Qualität und zu der Bitrate behandelt. Ein Verhältnis zwischen physikalischen Fehlern, die bei dem orthonormalen Wavelet- Bildkodiersystem hervorgerufen werden und der subjektiven Bildqualität wird aufgestellt.
Aus Shapiro, J., "Embedded image coding using zerotrees of wavelet coefficients" in IEEE trans. and signal processing, Band 41, Nr. 12, Dezember 1993, Seiten 3445 bis 3462 ist ein eingebetteter sogenannter Zerotree-Waveletalgorithmus bekannt. Bei diesen werden die Bits in dem Bitstrom in der Reihenfolge der Wichtigkeit erzeugt, was zu einem vollständig einge­ betteten Code führt. Der eingebettete Code stellt eine Sequenz von binären Entscheidungen dar, die ein Bild von dem "null"-Bild unterscheiden. Durch Verwendung des eingebetteten Kodieralgorithmus kann ein Kodierer das Kodieren zu jedem Zeitpunkt beenden, wodurch eine Sollrate exakt erfüllt werden kann.
Aus Cheong, C. K., u. a., "Subband image coding with biorthogonal wavelets", in IEICE trans. Fundamentals, Band E75-A, Nr. 7, Juli 1992, 871 bis 881 ist ein Unterband- Bildkodieren mit symmetrischen bioorthogonalen Waveletfiltern bekannt. Um die symmetrische biorthogonale Waveletbasis zu realisieren, wird das Laplacesche- Pyramidmodell und das trigonometrische Polynom-Lösungsverfahren verwendet. Die symmetrische bioorthogonale Waveletbasis wird verwendet, um Filter in jedem Unterband auszubilden. Ebenso werden Koeffizienten der Filter bezüglich der Kodiereffizienz optimiert.
Lewis, A. S. u. a., "Image compression using the 2-D Wavelet transform", in IEEE transaction on image processing, Band 1, Nr. 2, April 1992, Seiten 244 bis 250 ist die Bildkompression unter Verwendung einer zweidimensionalen Wavelettransformation bekannt. Die orthogonale Wavelettransformation zerlegt Bilder sowohl in räumliche als auch spektrale lokale Koeffizienten. Die Transformationskoeffizienten werden hierarchisch kodiert und individuell quantisiert in Übereinstimmung mit der lokal geschätzten Rauschempfindlichkeit des menschlichen Sehsystems.
Aus JP-7-79350 A ist ein Kompressionsverfahren für Bilddaten bekannt. Dabei werden Koeffizienten-Bilddaten für ein jedes Frequenzband erhalten, indem eine Wavelettransformation auf Originalbilddaten angewendet wird, die ein Originalbild darstellen, indem eine Funktion mit einem längeren Filter in Richtung auf ein unteres Frequenzband als eine Basis Waveletfunktion verwendet wird, um Koeffizientenbilddaten für ein jedes der mehreren Frequenzbänder zu erhalten. Somit wird ein Aliasing vermindert, das durch Abtasten der Bilddaten erzeugt wird. Dann wird eine Quantisierung auf die Koeffizienten-Bilddaten angewendet, die durch die Wavelettransformation erhalten wurden, und ein Kodieren wird auf die Bilddaten angewendet, die der Quantisierung unterzogen wurden.
Aus JP 6-350989 A ist ein Bilddaten-Kompressionsverfahren bekannt. Bei diesem wird zur Verbesserung der Kompressibilität die Bitzahl zur Zeit der Durchführung der Quantisierung für einen hochwichtigen Teil eines Objekts in den Bildern erhöht und die Bitzahl für nicht so wichtige Teile abgesenkt.
Aufgabe der Erfindung ist es einen Kodierer und ein Kodierverfahren bereit zu stellen, bei dem die Wavelet-Verarbeitung mit nur einem einzigen Durchlauf durchgeführt wird.
Vorstehende Aufgabe wird durch die Ansprüche 1, 23, 54, 61 und 64 gelöst. Vorteilhafte Weiterbildungen gehen aus den Unteransprüchen hervor.
Vorteilhaft wird eine breitere Klasse von Filtern ermöglicht. Das heißt Wavelet- oder Unterband-Transformations-Implementationen werden bereitgestellt, die Tiefpaß- und Hochpaß-Filter verwenden, die nicht dieselbe Länge haben, wo die Summe der Quadrate der Koeffizienten nicht eins zu sein braucht, wo der Hochpaß-Filter nicht die Umkehrung des Tiefpaß-Filters bezüglich der Zeit und der Frequenz zu sein braucht, etc.
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. Bei dem Kompressions-System kodiert ein Kodierer Eingangsdaten in einen komprimierten Datenstrom. Bei einer Ausführungsform weist der Kodierer einen reversiblen Wavelet- Filter auf, einen ordnenden und modellierenden Mechanismus und einen Entropie- Kodierer. Der reversible Wavelet-Filter transformiert die Eingangsdaten in eine Vielzahl von Koeffizienten. Der ordnende und modellierende Mechanismus empfängt die Koeffizienten und erzeugt einen eingebetteten Kodestrom. Der Entropie-Kodierer führt ein Entropie-Kodieren an dem eingebetteten Kodestrom durch, um den komprimierten Datenstrom zu erzeugen.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
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 35B 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 festgestelt 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
Eine 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. Bei manchen Ausführungsformen, ein Kodestrom, der mit tiefergehenden bzw. sich vertiefenden Bit-Ebenen von Daten geordnet ist; in diesem Fall nimmt er üblicherweise auf Wavelet-Koeffizienten-Daten bezug.
Pyramidal
Eine Folge von Auflösungen, wo jede niedrigere Auflösung einen linearen Faktor von zwei größer ist (ein Faktor von vier in der Ebene).
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 Koeffizienten möglich sind, der in der Bit-Wertigkeits-Darstellung dargestellt ist. Sie ist eine Funktion des Koeffizienten und der gegenwärtigen Bit-Ebene und wird für das Horizontal-Kontext-Modell verwendet.
Schwanz-ein bzw. Tail-ein ("tail-on")
Bei einer Ausführungsform, zwei Zustände, die davon abhängen, ob der Schwanz- Informations-Zustand bzw. der Tail-Informations-Zustand null oder nicht-null ist. Er wird für das Horizont-Kontext-Modell verwendet.
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
y0(1) = (x(2) + x(3))/2
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:
d(0) = x(2(L/2 + 1)) - x(2(L/2 + 1) + 1)
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 5D). Die Bezeichnung LL, LH, HL, HH und die Zerlegungs- Niveau-Zahl bezeichnet jede Zerlegung. Bemerkenswert ist, daß mit beiden Filtern, S oder TS der vorliegenden Erfindung eine pyramidale Zerlegung nicht die Koeffizientengröße vergrößert.
Zum Beispiel, falls die reversible Wavelet-Transformation rekursiv auf ein Bild angewendet wird, operiert bzw. arbeitet das erste Niveau der Zerlegung an dem feinsten Detail oder der Auflösung. Bei einem ersten Zerlegungsniveau wird das Bild in vier Unterbilder (z. B. Unterbänder) zerlegt. Jedes Unterband stellt ein Band von Raum- Frequenzen bzw. räumlichen Frequenzen dar. Die ersten Niveau-Unterbänder werden als 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 groberen Details des dritten Niveaus, wie in der Fig. 5D gezeigt, zu erzeugen. Aufgrund der Unterabtastung mit zwei bzw. um zwei weist jedes zweite Niveau-Unterband 1/16 der Größe des Originalbildes auf. Jede Abtastung (z. B. Bildelement bzw. Pixel) bei diesem Niveau stellt ein moderates Detail in dem Originalbild bei demselben Ort dar. Ä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. 99999 00070 552 001000280000000200012000285919988800040 0002019626615 00004 99880 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 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 1504 fort, wo die Verarbeitungslogik eine Schablone für Head-Bits (d. h. die anfänglichen Nullen und das erste Bit auf "1") anwendet. Nach dem Anwenden der Schablone kodiert die Verarbeitungslogik das Bit S des Koeffizienten C (Verarbeitungsblock 1505). Mögliche Schablonen sind in den Fig. 26A-C gezeigt. Schablonen können mit LUTs implementiert werden, wie in den Fig. 19A und 19B gezeigt.
Als nächstes bestimmt ein Test, ob das Bit S des Koeffizienten C ein ist (Verarbeitungs­ block 1506). Falls das Bit S des Koeffizienten C ein ist, schreitet die Verarbeitung bei dem Verarbeitungsblock 1508 fort. Auf der anderen Seite, falls das Bit S des Koeffizienten C ein ist, schreitet die Verarbeitung bei dem Verarbeitungsblock 1507 fort, wo die Verarbeitungslogik das Vorzeichen-Bit kodiert. Danach läuft die Verarbeitung bei dem Verarbeitungsblock 1508 weiter.
Bei dem Verarbeitungsblock 1508 bestimmt ein Test, ob der Koeffizient C der letzte Koeffizient ist. Falls der Koeffizient C nicht der letzte Koeffizient ist, schreitet die Verarbeitung bei dem Verarbeitungsblock 1509 fort, wo die Koeffizienten-Variable C auf den nächsten Koeffizienten gesetzt wird und die Verarbeitung schreitet bei dem Verarbeitungsblock 1502 fort. Auf der anderen Seite, falls der Koeffizient C der letzte Koeffizient ist, schreitet die Verarbeitung bei dem Verarbeitungsblock 1510 fort, wo ein Test bestimmt, ob S die letzte Bit-Ebene ist, falls S die letzte Bit-Ebene ist, wird die Bit- Ebene-Variable S um 1 dekrementiert (Verarbeitungsblock 1511) und die Verarbeitung schreitet bei dem Verarbeitungsblock 1501 fort. Falls S die letzte Bit-Ebene ist, endet die Verarbeitung.
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-"11"-Tiefpaß-Filter einen 16-Bit-Addierer 1601. Die Ausgänge werden jeweilig S und D genannt. Der Ausgang des Addierers (S) wird auf 16-Bits abgeschnitten, indem ein Verschiebe-um-1- Block 1603 verwendet wird. Der Verschiebe-um-1-Block 1603 führt eine Dividier-durch- 2-Funktion durch das Verschieben seines 17-Bit-Eingangs zu dem rechten Bit durch.
Der Sechs-Abgriff-"-1-18-811"-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- (SE für Southeast")Koeffizienten anstelle der Süd-(S)Koeffizienten verwendet werden können.
Bei einer Ausführungsform, falls die Schablone außerhalb der Kodier-Einheit ist, können die Außerhalb-Konditionierungs-Bits durch die Bits von dem aktuellen bzw. gegenwärtigen Pixel ersetzt werden.
Fig. 19B zeigt eine Zustands-Maschinen-Konditionierung, die eine LUT für dieselbe Mutter verwendet. In einem derartigen Fall wird der gesamte Kontext als ein Eingang zur der LUT 1903 zurückgeführt.
Dort, wo die Daten in Raster-Ordnung verarbeitet werden, verringert die Verwendung einer LUT die Anzahl der Speicherzugriffe, da derselbe Speicher, der zur Erzeugung des letzten Kontext verwendet wird, nicht erneut geladen werden muß.
Um die Größe des LUT-Speichers zu verringern, kann alternativ die Mutter- Konditionierung separat durchgeführt werden, und zwar durch eine ODER-Verknüpfung mit dem Ausgang eines LUT, der nur die andere Konditionierung handhabt.
Eine etwas größere LUT kann ebenso einen Großteil der Konditionierung für die nächste Bit-Ebene bereitstellen. Eine etwas kleinere LUT könnte die Zustands-Informationen von der aktuellen Kontext-LUT übernehmen und sie mit den neu verfügbaren Daten aus der nächsten Bit-Ebene kombinieren. Dies kann besonders nützlich sein, wenn ein Baum zu einer Zeit kodiert wird.
Wie oben bezüglich der vorliegenden Erfindung beschrieben, kann "effizient" bzw. "wirksam" definiert werden, zu bedeuten, daß die Transformation eine Determinante von 1 aufweist. In einem solchen Fall wird Kode-Raum nicht vergeudet, indem Raum aufgespart wird, um Ereignisse geringer Wahrscheinlichkeit zu kodieren, wenn die geringe Wahrscheinlichkeit null ist. Jedoch werden 8-Bit-Koeffizienten weiterhin eingegeben und erzeugen einen 8-Bit-Koeffizienten und einen 9-Bit-Koeffizienten. Deshalb kann die Wirksamkeit weiterhin verbessert werden. Die hinzugefügte Ineffizienz ist auf die Rotation des Raumes möglicher Koeffizienten zurückzuführen.
Es sollte bemerkt werden, daß gewisse Ergebnisse der Transformations-Operationen einzig Zahlen identifizieren, die bei den Berechnungen verwendet werden. Dies tritt auf, wenn die Ergebnisse nahe der Grenzen jener Bereiche bzw. Spannen möglicher Ergebnisse liegen. Dies wird beispielhaft durch die Fig. 18 gezeigt, worin u den Tiefpaß und v den Hochpaß darstellt. Weil die Werte von u und v nicht unabhängig sind, können diese Zahlen leichter entropie-kodierbar sein, wobei Gesamt-Information mit berücksichtigt wird. Dies liegt daran, daß, wie in der Fig. 18 gezeigt, für die meisten Tiefpaß-Werte etwas Kode-Raum für den Hochpaß nicht verwendet wird. Bei vielen Anwendungen gibt es wenig Vorteile, da die Wahrscheinlichkeit, die diesen unmöglichen Paaren zugeordnet ist, gering ist. Jedoch mag es in manchen Applikationen einen wertvollen Gewinn geben. Um die Operationen zu beschleunigen, können mehr Bits der LL-Koeffizienten vor den LH-, HL- und HH-Koeffizienten gesendet werden. Dies kann das Begrenzen leichter machen.
Bei manchen Ausführungsformen wird, nachdem jede Kodiereinheit kodiert worden ist, alles zurückgesetzt bzw. neu eingestellt, alle Statistiken und Wahrscheinlichkeiten werden zurückgesetzt bzw. neu eingestellt, wenn die zweite Einheit kodiert wird. Bei einer Ausführungsform werden manche der Statistiken oder alle gesichert. Diese wirken dann als die Anfangs-Statistiken, wenn das Kodieren einer späteren Kodiereinheit beginnt. Bei einer Ausführungsform werden die Statistiken bei einem vorbestimmten Punkt in der Kodierung der ersten oder vorhergehenden Kodiereinheit gesichert. Zum Beispiel werden nach der Kodierung der dritten Bit-Ebene, die Statistiken, die bei der Kodierung der aktuellen Kodiereinheit verwendet werden, gesichert und wirken als die Statistiken für den Anfang des Kodierens der folgenden Kodiereinheit oder einer späteren Kodiereinheit. Bei anderen Ausführungsformen werden die Klassen aller Bilder berechnet und ein hart­ kodierter Satz von Statistiken wird bestimmt. Dann wird das Kodieren durchgeführt, indem diese hart-kodierten Statistiken als ein Default bzw. als eine Voreinstellung verwendet werden. Bei anderen Ausführungsformen werden Statistiken für jede Bit-Ebene gesichert, so daß die Statistiken verwendet werden, wenn in der ähnlichen Bit-Ebene in einem anderen Element bzw. einem anderen "Tile" kodiert wird.
Bei einer anderen Ausführungsform wird bis zu dem ersten Eins-Bit nicht kodiert. Beim Auftreten des 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 Koeffizienten 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 Koeffizienten-Puffers (z. B. hinunter von 48 Zeilen auf 16 Zeilen). Bemerkenswert ist, daß die Verwendung der TS-Transformation für alle Zerlegungen eine bessere Kompressions-Leistungsfähigkeit liefert.
Kodiereinheit-Definition
Bei einer Ausführungsform ist die Kodiereinheit durch eine Zeile von Bäumen (eine Zeile von LL-Koeffizienten und all ihren Abkömmlingen) 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 18 Zeilen hoch, im Niveau 24 Zeilen hoch, in Niveau 32 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 Koeffizienten, für den Fall, daß sowohl Zeilen- als auch Spalten-Transformationen TS sind, jeweilig b, b + 2, b + 4 für LL-, HL-, LH-, HH- (Fig. 12)Unterblöcke. Für den Fall, daß die separierbare 2-D-Transformation aus einer horizontalen TS- und vertikalen S-Transformation besteht, sind die Bereiche bzw. Spannen der Koeffizienten jeweilig b, b + 1, b + 2, b + 3 für LL, HL, LH, HH. Die Tabellen 2, 3, 4, 5 und 6 erläutern die Berechnung für den Speicher, der für jeden Block benötigt wird. Bemerkenswert ist, daß die Berechnung in Termen der Größe in Bits für ein Bild der Breite w durchgeführt wird, und zwar eine für jeden Block:
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 K Bytes an Speicher benötigt.
Bei einer Ausführungsform wird die Größe der Transformation, basierend auf der Ausdehnung des Bildes und der festen Größe des verfügbaren Speichers ausgewählt. Mit anderen Worten, ein Bild einer Einzelheit kann in das System der vorliegenden Erfindung eingegeben werden und aufgrund eines beschränkten Umfangs an verfügbaren Transformations-Speicher wird die Anzahl der Niveaus der Zerlegung verringert. Falls mehr Speicher verfügbar ist, wird dann die Zahl der Zerlegungs-Niveaus erhöht. Bemerkenswert ist, daß dies dynamisch auftreten kann, wenn das Bild in das System aufgenommen wird. Falls genügend Speicher verfügbar ist, werden die LL-Koeffizienten durch Wavelet-Filter hindurch geführt, um das zusätzliche Niveau der Zerlegung durchzuführen. Bemerkenswert ist, daß ein Effekt der Verringerung bzw. Erhöhung der Anzahl der Niveaus es ist, den Umfang der Kompression, der erreicht werden kann, zu verringern bzw. zu erhöhen.
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, 1HH
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 Koeffizienten unmittelbar danach kodiert. Der Kontext für das Vorzeichen-Bit ist 3 Kontexte von dem N_Tail-Ein-Bit und dem N_Vorzeichen-Bit, wo, falls das N_Tail-Ein-Bit null ist, dann das N_Vorzeichen-Bit unbekannt ist. Falls das N_Vorzeichen-Bit unbekannt ist, wird das Vorzeichen mit der Wahrscheinlichkeit 0,5 kodiert. Ansonsten wird das Vorzeichen adaptiv kodiert.
Zusammenfassend wird eine 11-Bit-Zahl erzeugt, die den Kontext von der Information, die von den aktuellen, Nachbar- und Mutter-Koeffizienten in derselben Kodiereinheit verfügbar ist, anzeigt bzw. kennzeichnet.
Fig. 26A-D erläutern kausale und nicht-kausale Koeffizienten, die verwendet werden können, um einen Koeffizienten P festzusetzen bzw. zu konditionieren. Jede von den gezeigten Schematas beinhaltet die Verwendung von sowohl Tail-Ein-Bits als auch von Tail-Ein-Informationen. Während das Tail-Ein-Bit eines jeden Koeffizienten 1 Bit liefert, umfaßt die Tail-Ein-Information eines jeden Koeffizienten 2 Bits. In Fig. 26A beträgt die Gesamtzahl der Bits, die durch das Schema beliefert werden 8. In den Fig. 26B und 26C beträgt die Gesamtzahl der Bits, die durch das Schema geliefert werden, 10.
Zusätzliche Bits können verwendet werden, um die Head-Bits des Koeffizienten P zu konditionieren. Bei einer Ausführungsform können zwei zusätzliche Bits die Bitposition wie folgt spezifizieren:
00 erstes Bit (MSB) und zweites Bit
01 drittes Bit und viertes Bit
10 fünftes Bit und sechstes Bit
11 andere Bits.
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 = 6150 Bits des Speichers.
Bemerkenswert ist, daß keine spezielle Signalisierungs-Information für die oben beschriebene One-Pass-Ausführung bzw. Ein-Durchgangs-Ausführung notwendig ist. Falls die Anzahl der Niveaus der Zerlegung eine Variable wäre, 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. Darm 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 Aufzeichnen kann durchgeführt werden, indem einfache Zähler verwendet werden. Diese Zahlen werden in einem Header bzw. Kopfteil aufgezeichnet und können verwendet werden, um zu entscheiden, wie jede Kodiereinheit bei Übertragungs- oder Speicher-Zeit abgeschnitten wird. Der Header bzw. das Kopfteil beinhaltet ein Wichtigkeits-Niveau und seine entsprechende Anzahl von Bits. Der Header kann ebenso diese Information für jede der Kodiereinheiten, die in dem Strom enthalten sind, enthalten. Wenn entschieden wird, wo abzuschneiden ist, wird dasselbe bei jeder Kodiereinheit ausgeführt. Falls es zum Beispiel aufgrund von Speicher- Nebenbedingungen bestimmt ist, daß ein und einen halbes Wichtigkeits-Niveaus zu löschen sind, dann werden ein und ein halbes Wichtigkeits-Niveaus von jeder Kodiereinheit gelöscht. Dies ermöglicht es, daß die Wirkung des Abschneidens sich über die Kodiereinheiten in einer gleichförmigen Art und Weise ausbreitet.
Das Erreichen eines Festgrößen-Komprimierten-Bildes kann während der Kodier-Zeit ebenso erreicht werden. Der Speicher wird in Abschnitte für Wichtigkeits-Niveaus eingeteilt. Falls der Speicher dabei ist überzulaufen, werden weniger wichtige Segmente mit den wichtigeren Daten überschrieben.
Bemerkenswert ist, daß, falls die komprimierten Daten nicht zu einem Überlauf des Speicher-Puffers führen, das Bild verlustfrei wiedergewonnen wird. Dies trifft für jegliche andere Fest-Größen-Systeme nicht zu.
Interpolieren mit der Wavelet-Transformation
Wavelets können verwendet werden, um Bilder zu höherer Auflösung zu interpolieren. Die Ergebnisse sind visuell ziemlich vergleichbar mit bikubischen Spline-Techniken. Falls die komprimierten Daten bereits in der Gestalt von Wavelet-Koeffizienten vorliegen, ist die tatsächliche zusätzliche Berechnung für die Interpolation geringer als beim bikubischen Spline.
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-Kategorienn 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ührungsf 32212 00070 552 001000280000000200012000285913210100040 0002019626615 00004 32093orm kann der Kanal-Manager 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 Abhängigkeit von dem nächsten Block zu komprimieren, zu vermeiden.
Der Kanal-Manager der vorliegenden Erfindung kann dort verwendet werden, wo Daten nur über eine gewisse Zeitperiode übertragen werden können. Verwendet man einen derartigen Kanal-Manager, so ereignen sich die Daten-Transmission während der Zeitperiode unbeachtet der Komplexität, weil die Daten, basierend auf ihrer Wichtigkeit eingebettet sind.
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/(32 K 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 ±2 E quantisiert werden. Für ein zweidimensionales Signal können, da es zwei Anwendungen von Hochpaß-Filtern gibt, die HH-Koeffizienten feinsten Details auf ±4 E 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 Koeffizienten durchgeführt, um verbesserte Ergebnisse bezüglich des menschlichen visuellen Systems zu erreichen. In einem derartigen Fall ist eine geringe Modifikation des einbettenden Schemas erforderlich. Zum Beispiel werden die Koeffizienten verschoben, um die Beziehung zwischen ihnen um einen Faktor 2 zu ändern und/oder um die Zahl in einem unterschiedlichen Typus von Numerierungssystem oder Zahlensystem, wie zum Beispiel dem Gray-Kode, darzustellen.
Das komprimierte Wavelet-System der vorliegenden Erfindung kann bei einer Bild- Editier-Situation nützlich sein. Beim Stand der Technik ist die Anwendung von Bild- Verarbeitungs-Funktionen auf ein Druckbild voller Auflösung zeitaufwendig und macht eine interaktive Verarbeitung schwierig.
Bei einer Ausführungsform könnte ein Bild-Editier-System, falls es Elemente bzw. Tiles sicherte, die komprimiert sind, sehr schnell Operationen auf die Scalen-Repräsentation (der sehr tiefe Durchgang) anwenden, die für den Benutzer zu berechnen sind. Dies kann sehr schnell getan werden, weil nur die dargestellten Pixel bearbeitet werden. Es ist nur eine Annäherung des Endergebnisses, da die eigentlichen Pixel voller Auflösung die Ausgabe bzw. den Ausgang beeinflussen. Der Benutzer wird deshalb bezüglich einiger Abschnitte des Bildes (z. B. auf etwas Text) vergrößernd zugreifen. Wenn der Benutzer dies tut, wendet das Bild-Editier-System die Operation auf jenen Teil des Bildes an. Um dies zu erleichtern, wird ein Baum gespeichert, der die komprimierten Koeffizienten und Informationen enthält, um die herum Verarbeitungsoperationen angewendet wurden und die weiterhin angewendet werden müssen.
Bei einer Ausführungsform werden die Wichtigkeits-Niveaus neu definiert, um eine verlustfreie Kompression in einem definierten Fenster zu erlauben und eine verlustbehaftete Kompression für den Rest des Bildes. Das Fenster kann fest sein oder wählbar durch einen Benutzer. Es kann mehrere Fenster verschiedener Wichtigkeit geben. Bei einer Ausführungsform ist das Fenster so klein wie 48 × 48 Blocks, obwohl es möglich sein sollte, ein viel feineres Auftreten zu haben, sogar hinunter bis zu dem Zwei-Pixel- Niveau.
Eine mögliche Anwendung sind Satellitenbilder dort, wo Satelliten ein verlustfreies Fenster auf Daten anwenden, so daß statistische Studien nicht durch JPEG-Artifakte verdorben werden, aber die verlustbehaftete Kompression erlaubt ein viel breiteres Blickfeld, als mit der verlustfreien Kompression möglich wäre.
Bei einer Ausführungsform zeichnet der Benutzer willkürliche Boxen auf ein Bild und spezifiziert die relative Wichtigkeit der Daten in dieser Box. Wenn einmal eine Box gezeichnet worden ist, erhöht die Software die Größe der Box auf die kleinste Größe, die die erforderlichen Nebenbedingungen erfüllt und die Benutzer-Box enthält. Der File- Header bzw. das Datei-Kopfteil würde Informationen über die verwendeten Boxen und das Wichtigkeits-Niveau enthalten. Der Kodierer und Dekodierer würde dann mehr Auflösung den Koeffizienten in den wichtigen Boxen liefern, wenn Kodieren/Dekodieren fortschreitet. Für den Satelliten-Bild-Fall ist es wahrscheinlich, daß das wichtige Bild vordefiniert ist.
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 "Prepress"-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".
Einige Satelliten verwenden ein verlustfreies Fenster auf Daten an, so daß statische Studien nicht durch JPEG-Artifakte verdorben werden bzw. durcheinandergebracht werden, aber die verlustbehaftete Kompression erlaubt ein viel breiteres Blickfeld, als es mit der verlustfreien Kompression möglich wäre.
Bei einer Anwendung können die Wichtigkeits-Niveaus neu definiert werden, um eine verlustfreie Kompression in einem definierten bzw. festgelegten Fenster und eine verlustbehaftete Kompression für den Rest des Bildes zu erhalten. Das Fenster kann fest sein oder durch einen Benutzer wählbar. Es kann mehrere Fenster verschiedener Wichtigkeit geben. Eine Implementation wäre wahrscheinlich mit 48 × 48 Blöcken als die kleinste Einheit für ein Fenster, obwohl es möglich sein sollte, eine viel feinere Genauigkeit zu haben, sogar hinunter bis zu dem Zwei-Pixel-Niveau. Dies würde wahrscheinlich zu genaueren Pixel führen, die nahe der verlustfreien Region bzw. dem verlustfreien Bereich liegen, aber dies könnte bewirken, daß die Region weniger auffällt bzw. hervorsticht.
Eine Art und Weise, in der dies implementiert werden könnte, ist es, den Benutzer zu veranlassen, beliebige Boxen auf einem Bild zu zeichnen und die relative Wichtigkeit der Daten in der Box zu spezifizieren. Software würde die Box bis auf die kleinste Größe größer machen, die die erforderlichen Nebenbedingungen erfüllt und die Benutzer-Box enthält. Der File-Header bzw. das Datei-Kopfteil würde Informationen über die verwendeten Boxen und das Wichtigkeits-Niveau enthalten. Der Kodierer und der Dekodierer würden dann eine höhere Auflösung der Koeffizienten in den wichtigen Boxen bereitstellen, wenn das Kodieren/Dekodieren fortschreitet. Für den Satelliten-Bild-Fall ist es wahrscheinlich, daß das wichtige Bild vordefiniert ist. Bemerkenswert ist, daß dies auf Anwendungen anwendbar ist, die sich von Satelliten-Bildern unterscheiden.
"Fest-Raten"-, beschränkte-Bandbreiten-Anwendungen, wie zum Beispiel ATM- Netzwerke erfordern Wege, auf denen Daten reduziert werden, falls es zu einem Überlauf der verfügbaren Bandbreite kommt. Jedoch sollte es keine Schlechterung bezüglich der Qualität geben, falls es genug Bandbreite gibt (oder die Kompression hoch genug ist). In ähnlicher Weise brauchen "Fest-Größen"-Anwendungen, wie Frame-Speicher bzw. Rahmen-Speicher mit beschränkten Speicher in Computern und andere Bilderzeugungs- Vorrichtungen einen Weg, um Daten zu verringern, falls sich der Speicher füllt. Wiederum sollte es keinen Nachteil für ein Bild geben, das verlustfrei in die richtige Menge von Speicher komprimiert werden kann.
Der eingebettete Kodestrom der vorliegenden Erfindung dient beiden dieser Anwendungen. Das Einbetten ist implizit, um dem Kodestrom zu erlauben, daß er für die Übertragung oder Speicherung eines verlustbehafteten Bildes beschnitten oder abgeschnitten wird. Falls kein Beschneiden oder Abschneiden erforderlich ist, kommt das Bild verlustfrei an.
Zusammenfassend stellt die vorliegende Erfindung ein einziges Halbtonbild- Kompressionssystem bereit. Das System der vorliegenden Erfindung ist verlustfrei und verlustbehaftet mit demselben Kodestrom und benutzt Quantisierung, die eingebettet ist (durch den Kodestrom impliziert). Das System ist ebenso pyramidal, progressiv und liefert eine Einrichtung zur Interpolation und ist einfach zu implementieren. Deshalb stellt die vorliegende Erfindung ein flexibles "Vorrichtungs-unabhängiges"-Kompressions-System bereit.
Das vereinigte verlustfreie und verlustbehaftete Kompressions-System ist sehr nutzvoll. Nicht nur ist dasselbe System zu einer verlustbehafteten und verlustfreien Kompressions- Leistungsfähigkeit nach dem Stand der Technik in der Lage, derselbe Kodestrom ist es ebenso. Die Anwendung kann entscheiden, den verlustfreien Kode eines Bildes zu behalten oder ihn zu einer verlustbehafteten Version abzuschneiden, und zwar während des Kodierens, während des Speicherns oder der Übertragung des Kodestroms oder während des Dekodierens.
Verlustbehaftete Kompression, die durch die vorliegende Erfindung bereitgestellt wird, wird durch die eingebettete Quantisierung erreicht. Dies bedeutet, der Kodestrom beinhaltet die Quantisierung. Die eigentlichen bzw. tatsächlichen Quantisierungs-(oder visuellen Wichtigkeits-)Niveaus können eine Funktion des Dekodierers oder des Transmissions-Kanals und nicht notwendig des Kodierers sein. Falls es die Bandbreiten-, Speicher- und Anzeigen-Resourcen bzw. Mittel erlauben, wird das Bild verlustfrei wiedergewonnen. Ansonsten wird das Bild nur soweit quantisiert, wie dies aufgrund der am meisten beschränkten Resource erforderlich ist.
Das Wavelet, das bei der vorliegenden Erfindung verwendet wird, ist pyramidal, wohingegen eine Zerlegung um einen Faktor 2 des Bildes ohne Differenz-Bilder durchgeführt wird. Dies ist spezifischer als eine hierarchische Zerlegung. Für Anwendungen, die eine rasch angefertigte Darstellung bzw. Skizze für das Browsing oder zum Darstellen von Bildern auf Vorrichtungen niedriger Auflösung benötigen, ist die pyramidale Struktur der vorliegenden Erfindung ideal.
Die Verwendung der Einbettung ist bei der vorliegenden Erfindung progressiv, insbesondere gemäß Bit-Ebene, d. h. MSB wird von geringeren Bits gefolgt. Sowohl die räumlichen als auch die Wavelet-Bereiche können progressiv zerlegt werden, obwohl die vorliegende Erfindung speziell in dem Wavelet-Bereich progressiv ist. Für Anwendungen die eine räumliche Auflösung aber eine geringere Pixelauflösung haben, wie zum Beispiel Drucker, ist das progressive Ordnen der Bits bei der vorliegenden Erfindung ideal. Diese Merkmale sind mit demselben Kodestrom verfügbar.
Ein Vorteil der Struktur der vorliegenden Erfindung ist es, daß es einen bezüglich der Berechnung effizienten Modus für die Interpolation bereitstellt. Falls eine höhere Auflösung gewünscht wird, können die Hochpaß-Koeffizienten von den verfügbaren Wavelet-Koeffizienten interpoliert werden und das inverse Wavelet der vorliegenden Erfindung wird durchgeführt. Dieses Verfahren besteht visuell in Konkurrenz mit bikubischen Splines, aber ist bezüglich der Berechnung weniger intensiv mit der Transformation der vorliegenden Erfindung.
Die vorliegende Erfindung ist idempotent, was bedeutet, daß ein Bild in einer verlustbehafteten Form dekomprimiert und zu demselben Kodestrom rekomprimiert werden kann. Dieser Vorteil erlaubt mehrere Kompressions- und Dekompressions-Zyklen bei einer Anwendung, die Browsen, Filtern oder Editieren umfaßt.
Die vorliegende Erfindung ist relativ einfach zu implementieren, sowohl in Software als auch in Hardware. Die Wavelet-Transformation kann mit nur vier Addier/Subtrahier- Operationen und wenigen Verschiebungen für jedes Hochpaß-, Tiefpaß-Koeffizientenpaar berechnet werden. Das Einbetten und Kodieren wird mit einem einfachen "Kontext- Modell" und einem binären "Entropie-Kodierer" durchgeführt. Der Entropie-Kodierer kann mit einem Finalautomaten bzw. "finite state machine" oder parallelen Kodierern durchgeführt werden.
Obwohl viele Änderungen und Modifikationen der vorliegenden Erfindung für einen einfachen Fachmann ohne Zweifel offensichtlich sein werden, nachdem er die vorhergehende Beschreibung gelesen hat, ist es selbstverständlich, daß die besondere Ausführungsform, die gezeigt wurde, und mittels Erläuterungen beschrieben wurde, in keinster Weise beabsichtigt ist, als beschränkend angesehen zu werden. Deshalb ist es nicht beabsichtigt, daß Hinweise auf Details der bevorzugten Ausführungsform den Umfang der Ansprüche beschränken, die selbst nur jene Merkmale 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 Sattelit, Internet etc.) liegen.

Claims (67)

1. Kodierer zum Kodieren von Eingangsdaten in einen komprimierten Datenstrom, wobei der Entropie-Kodierer folgendes umfaßt:
einen reversiblen Wavelet-Filter, der die Eingangsdaten in eine Vielzahl von Koeffizienten transformiert;
einen ordnenden und modellierenden Mechanismus, der mit dem reversiblen Wavelet- Filter verbunden ist, wobei der ordnende und modellierende Mechanismus einen eingebetteten Kodestrom in Antwort auf die Vielzahl von Koeffizienten erzeugt; und
einen Entropie-Kodierer, der mit dem ordnenden und modellierenden Mechanismus verbunden ist, und betriebsfähig ist, um den eingebetteten Kodestrom zu entropie­ kodieren, um den komprimierten Datenstrom zu erzeugen, wobei der ordnende und modellierende Mechanismus sowohl basierend auf räumlichen als auch auf spektralen Abhängigkeiten der Koeffizienten modelliert.
2. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-Filter, der ordnende und modellierende Mechanismus und der binäre Entropie-Kodierer in einer kausalen Beziehung operieren bzw. arbeiten, um die Eingangsdaten in einem Durchgang zu komprimieren.
3. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-Filter wenigstens eine S- Transformation umfaßt.
4. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-Filter wenigstens eine TS- Transformation umfaßt.
5. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch 1 festgelegt ist, bei welchem verschiedenen Transformationen vertikal und horizontal auf die Eingangsdaten angewendet werden.
6. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-Filter TS-Transformationen auf horizontale Durchgänge und wenigstens eine S-Transformation und wenigstens eine TS-Transformation auf vertikale Durchgänge anwendet.
7. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-Filter die Vielzahl der Koeffizienten erzeugt, indem eindimensionale (1-D) Filter separat entlang Reihen und Spalten der Eingangsdaten angewendet werden.
8. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch 1 festgelegt ist, bei welchem der reversible Wavelet-Filter eine pyramidale Zerlegung durchführt.
9. Kodierer, der in einem der vorhergehenden Ansprüche und insbesondere im Anspruch 1 festgelegt ist, bei welchem der ordnende und modellierende Mechanismus die Vielzahl von Koeffizienten ordnet und binäre Werte innerhalb der Vielzahl von Koeffizienten ordnet, um den eingebetteten Kodestrom zu erzeugen.
10. Kodierer, der im Anspruch 9 festgelegt ist, bei welchem binäre Werte innerhalb eines jeden der Vielzahl von Koeffizienten eingebettet geordnet sind.
11. Kodierer, der im Anspruch 10 festgelegt ist, bei welchem binäre Werte innerhalb eines jeden der Koeffizienten nach der Bit-Wertigkeit geordnet sind.
12. Kodierer, der im Anspruch 9 festgelegt ist, bei welchem die Vielzahl der Koeffizienten zueinander ausgerichtet werden, bevor eine Bit-Ebenen-Kodierung eine Quantisierung ermöglicht.
13. Kodierer, der im Anspruch 12 festgelegt ist, bei welchem weniger schwer bzw. stark quantifizierte Koeffizienten auf frühere Bit-Ebenen zu ausgerichtet sind.
14. Kodierer, der im Anspruch 9 festgelegt ist, bei welchem ein Vorzeichen-Bit mit dem ersten Betrag-Bit ungleich-null kodiert wird.
15. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der ordnende und modellierende Mechanismus Bits innerhalb einer Kodiereinheit modelliert, und zwar basierend auf räumlichen und spektralen Abhängigkeiten der Koeffizienten, und bei welchem der binäre Entropie-Kodierer das Kodieren, basierend auf den Bits durchführt, die durch den ordnenden und modellierenden Mechanismus modelliert sind.
16. Kodierer, der im Anspruch 15 festgelegt ist, bei welchem der ordnende und modellierende Mechanismus Bits mit Kontexten modelliert, die auf benachbarten und Mutter-Koeffizienten basieren.
17. Kodierer, der im Anspruch 16 festgelegt ist, bei welchem die Kontexte kausal sind.
18. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der Entropie-Kodierer einen binären Entropie-Kodierer umfaßt.
19. Kodierer, der im Anspruch 18 festgelegt ist, bei welchem der Entropie-Kodierer einen Q-Kodierer umfaßt.
20. Kodierer, der im Anspruch 18 festgelegt ist, bei welchem der Entropie-Kodierer eine QM-Kodierer umfaßt.
21. Kodierer, der im Anspruch 18 festgelegt ist, bei welchem der Entropie-Kodierer einen Finalautomaten-Kodierer bzw. einen "finite state machine"-Kodierer umfaßt.
22. Kodierer, der im Anspruch 1 festgelegt ist, bei welchem der Entropie-Kodierer einen Parallel-Kodierer umfaßt.
23. Kodierer zum Kodieren von Eingangsdaten in einen kompromierten Datenstrom, wobei der Kodierer folgendes umfaßt:
einen reversiblen Wavelet-Filter, der die Eingangsdaten in eine Vielzahl von Koeffizienten transformiert;
einen ordnenden und modellierenden Mechanismus, der mit dem reversiblen Wavelet- Filter verbunden ist, wobei der ordnende und modellierende Mechanismus eine eingebettete Quantisierung an der Vielzahl von Koeffizienten durchführt, um einen eingebetteten Kodestrom in Antwort auf die Vielzahl von Koeffizienten zu erzeugen; und
einen binären Entropie-Kodierer, der mit dem ordnenden und modellierenden Mechanismus verbunden ist und betreibbar ist, um den eingebetteten Kodestrom binär zu entropiekodieren, um den kompromierten Datenstrom zu erzeugen, wobei der ordnende und modellierende Mechanismus sowohl basierend auf räumlichen als auch auf spektralen Abhängigkeiten der Koeffizienten modelliert.
24. Der Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der reversible Wavelet- Filter eine Vielzahl von Niveaus von separierbaren pyramidalen Zerlegungen durchführt, wobei horizontale und vertikale Transformationen alternativ bzw. wahlweise angewendet werden, und bei welchem weiterhin der reversible Wavelet- Filter eine horizontale Zerlegung durchführt, indem nur TS-Transformationen verwendet werden, und vertikale Zerlegungen durchführt, indem eine Kombination aus TS-Transformationen und S-Transformationen verwendet wird.
25. Kodierer, der im Anspruch 24 festgelegt ist, bei welchem der reversible Wavelet-Filter die vertikale Zerlegung durchführt, indem zwei TS-Transformationen gefolgt von zwei S-Transformationen durchgeführt werden.
26. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der ordnende und modellierende Block von Kodestrom ordnet, indem ein Header bzw. ein Kopfteil verwendet wird, gefolgt von den Kodiereinheiten, in der Ordnung von oben nach unten.
27. Kodierer, der im Anspruch 26 festgelegt ist, bei welchem jede Kodiereinheit LL- Koeffizienten beinhaltet, die unkodiert die Rasterordnung sind, gefolgt von Entropie­ kodierten Daten, eine Bit-Ebene zu einer Zeit.
28. Kodierer, der im Anspruch 27 festgelegt ist, bei welchem die Entropiekodierten Daten in jeder Kodiereinheit von der höchstwertigen Bit-Ebene zu der niedrigstwertigen Bit-Ebene geordnet sind.
29. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der ordnende und modellierende Mechanismus Koeffizienten-Ausrichtung durchführt.
30. Kodierer, der im Anspruch 29 festgelegt ist, bei welchem Koeffizienten bei jedem Unterblock gemäß einer Signalisierung in dem Header bzw. Kopfteil einer jeden Kodiereinheit ausgerichtet sind.
31. Kodierer, der im Anspruch 29 festgelegt ist, bei welchem Koeffizienten bezüglich des mittleren quadratischen Fehlers ausgerichtet sind.
32. Kodierer, der im Anspruch 23 festgelegt ist, mit dem ordnenden und modellierenden Mechanismus, und bei welchem Koeffizienten mit Bit-Wertigkeit kodiert werden.
33. Kodierer, der im Anspruch 32 festgelegt ist, bei welchem Koeffizienten gemäß Bit- Wertigkeit kodiert werden, wobei die erste Bit-Ebene das linkste Betrags-Bit aller Koeffizienten ist.
34. Kodierer, der im Anspruch 33 festgelegt ist, bei welchem ein Vorzeichen-Bit für jeden Koeffizienten bis zu der höchsten Bit-Ebene, wo jener Koeffizient einen Betrag ungleich-null aufweist, nicht kodiert wird.
35. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der ordnende und modellierende Mechanismus Koeffizienten innerhalb jeder Bit-Ebene von dem Niedrig-, Auflösungs-, Niedrig-Frequenz-Niveau (LL) bis zu dem Hoch-Auflösungs-, Hoch-Frequenz-(HH)Niveau ordnet.
36. Kodierer, der im Anspruch 35 festgelegt ist, bei welchem der ordnende und modellierende Mechanismus Koeffizienten wie folgt ordnet: 4-LL, 4-HL, 4-LH, 4- HH, 3-HL, 3-LH, 3-HH, 2-HL, 2-LH, 2-HH, 1-HL, 1-LH, 1-HH.
37. Kodierer, der im Anspruch 36 festgelegt ist, bei welchem der ordnende und modellierende Mechanismus innerhalb jedes Unterblocks in Raster-Abtast-Ordnung bzw. Raster-Scan-Ordnung kodiert.
38. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der ordnende und modellierende Mechanismus ein Kontext-Modell umfaßt, das Kontexte verwendet, die auf Nachbar- und Mutter-Koeffizienten-Werten basieren.
39. Kodierer, der im Anspruch 38 festgelegt ist, bei welchem die Kontexte darauf basieren, ob ein erstes Betrags-Bit ungleich-null beobachtet wurde und auf der Anzahl der Bit-Ebenen seit dem ersten Betrags-Bit ungleich-null, falls das erste Betrags-Bit ungleich-null beobachtet worden ist.
40. Kodierer, der im Anspruch 39 festgelegt wird, bei welchem, falls das erste Betrags-Bit ungleich-null nicht beobachtet worden ist, dann das Kontext-Modell Kontexte verwendet, um einen Koeffizienten zu konditionieren, der Information enthält, die einer Mutter des Koeffizienten und Information von wenigstens einem Koeffizienten, der NW, N, NE, W, E, SW, S oder SE des Koeffizienten positioniert ist, entspricht.
41. Kodierer, der im Anspruch 40 festgelegt ist, bei welchem das Kontext-Modell Kontexte verwendet, um einen Koeffizienten zu konditionieren, der die Mutter des Koeffizienten, mehr als ein Niveau von dem Koeffizienten entfernt, enthält.
42. Kodierer, der im Anspruch 40 festgelegt ist, bei welchem, falls das erste Betrags-Bit ungleich-null beobachtet worden ist, dann das Kontext-Modell Kontexte verwendet, die folgendes enthalten:
  • a) das erste Betrags-Bit trat bei der letzten Bit-Ebene auf,
  • b) das erste Betrags-Bit ungleich-null trat zwischen zwei und drei Bit-Ebenen früher auf, oder
  • c) das erste Betrags-Bit ungleich-null trat mehr als drei Bit-Ebenen früher auf.
43. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem ein Vorzeichen-Bit des gegenwärtigen Koeffizienten kodiert wird, und zwar unmittelbar nachdem das gegenwärtige Bit des gegenwärtigen Koeffizienten das erste Betrags-Bit ungleich-null ist.
44. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem ein Kontext zum Kodieren eines Vorzeichen-Bits, wenn das Vorzeichen des Koeffizienten unmittelbar nördlich nicht bekannt ist, eine feste Wahrscheinlichkeit aufweist.
45. Kodierer, der im Anspruch 44 festgelegt ist, bei welchem die feste Wahrscheinlichkeit ungefähr 0,5 aufweist.
46. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem die Kontexte zum Kodieren binärer Werte nach dem ersten Betrags-Bit ungleich-null feste Wahrscheinlichkeiten aufweisen.
47. Kodierer, der im Anspruch 46 festgelegt ist, bei welchem ein Kontext zum Kodieren eines ersten binären Wertes nach dem ersten Bit ungleich-null eine feste Wahrscheinlichkeit von ungefähr 0,7 aufweist.
48. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem ein Kontext zum Kodieren von zweiten und dritten binären Werten nach dem ersten Bit ungleich-null eine feste Wahrscheinlichkeit von ungefähr 0,6 aufweist.
49. Kodierer, der im Anspruch 39 festgelegt ist, bei welchem ein Kontext zum Kodieren des vierten und nachfolgender binärer Werte nach dem ersten Bit ungleich-null bei einer festen Wahrscheinlichkeit von 0,5 kodiert wird.
50. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der Entropie-Kodierer einen Q-Kodierer aufweist.
51. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der Entropie-Kodierer eine QM-Kodierer aufweist.
52. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der Entropie-Kodierer eine Finalautomaten-Kodierer bzw. einen "finite state machine"-Kodierer aufweist.
53. Kodierer, der im Anspruch 23 festgelegt ist, bei welchem der Entropie-Kodierer einen Parallel-Kodierer aufweist.
54. Verfahren zum Kodieren von Eingangsdaten in einen komprimierten Datenstrom, das die folgenden Schritte aufweist:
die Eingangsdaten werden in eine Vielzahl von Koeffizienten transformiert, indem ein reversibles Wavelet-Filter verwendet wird;
mittels eines ordnenden und modellierenden Mechanismus, der mit dem reversiblen Wavelet-Filter verbunden ist, wird ein eingebetteter Kodestrom in Antwort auf die Vielzahl von Koeffizienten erzeugt; und
der eingebettete Kodestrom wird entropie-kodiert, um den komprimierten Datenstrom zu erzeugen, wobei der ordnende und modellierende Mechanismus sowohl basierend auf räumlichen als auch auf spektralen Abhängigkeiten der Koeffizienten modelliert.
55. Verfahren, das im Anspruch 54 festgelegt ist, bei welchem die Schritte der Transformation, des Erzeugens und des Entropie-Kodierens kausal durchgeführt werden.
56. Verfahren, das im Anspruch 54 festgelegt ist, bei welchem der Schritt des Transformierens umfaßt, das verschiedene Transformationen vertikal und horizontal auf die Eingangsdaten angewendet werden.
57. Verfahren, das im Anspruch 56 festgelegt ist und das weiter den Schritt aufweist, wonach wenigstens eine TS-Transformation auf die Eingangsdaten angewendet wird.
58. Verfahren, das im Anspruch 57 und insbesondere im Anspruch 56 festgelegt ist und das weiter den Schritt aufweist, wonach wenigstens eine S-Transformation auf die Eingangsdaten angewendet wird.
59. Verfahren, das im Anspruch 54 festgelegt ist und das weiter den Schritt aufweist, wonach eine pyramidale Zerlegung einer Vielzahl von Niveaus an den Eingangsdaten durchgeführt wird, und zwar einschließlich des Schrittes, wonach horizontale und vertikale Transformationen alternativ angewendet werden, wobei nur TS- Transformationen für horizontale Zerlegungen verwendet werden und eine Kombination von TS-Transformationen und S-Transformationen für vertikale Zerlegungen verwendet wird.
60. Verfahren, das im Anspruch 54 festgelegt ist, bei welchem der Schritt der Erzeugung des eingebetteten Kodestroms die Schritte aufweist, wonach die Vielzahl der Koeffizienten geordnet werden und binäre Werte innerhalb der Vielzahl von Koeffizienten geordnet werden, um den eingebetteten Kodestrom zu erzeugen.
61. Verfahren zum Kodieren und Dekodieren, das zum Kodieren die Schritte des Verfahrens nach Anspruch 54 bis 60 und zum Dekodieren des kodierten Datenstroms die folgenden Schritte aufweist:
kodierte Daten werden für eine Kodiereinheit wiedergewonnen;
ein Bit eines jeden Koeffizienten wird mit einem Kontext-Modell und einem Entropie- Dekodierer modelliert;
ein inverses Wavelet-Filter wird auf die Koeffizienten angewandt, wobei mit dem gröbsten Niveau angefangen wird.
62. Verfahren, das im Anspruch 61 festgelegt ist und weiter den Schritt aufweist, wonach bestimmt wird, ob alle Niveaus invers gefiltert worden sind, und wonach, falls nicht, das inverse Filter dann auf die Koeffizienten von dem nächst gröbsten Niveau angewendet wird.
63. Verfahren, das im Anspruch 62 festgelegt ist und das weiter den Schritt aufweist, wonach der Schritt der Bestimmung wiederholt wird, bis alle Niveaus invers gefiltert worden sind.
64. Kodierer und Dekodierer mit einem Kodierer nach Anspruch 53 und einen Dekodierer zum Dekodieren kodierter Daten folgendes aufweist:
einen Entropie-Dekodierer zum Entropie-Dekodieren der kodierten Daten in einen Kodestrom von Koeffizienten;
einen inversen reversiblen Wavelet-Filter, der mit dem Entropie-Dekodierer zum Transformieren des Kodestroms von Koeffizienten in rekonstruierte Daten verbunden ist.
65. Dekodierer, der im Anspruch 59 festgelegt ist, bei welchem der Entropie-Dekodierer die kodierten Daten in einen eingebetteten Kodestrom der Koeffizienten dekodiert.
66. Der Kodierer, der im Anspruch 39 festgelegt ist, bei welchem, falls das erste Betrags- Bit ungleich-null nicht beobachtet worden ist, dann das Kontext-Modell Kontexte verwendet, um einen Koeffizienten zu konditionieren, der Informationen entsprechend einer Mutter des Koeffizienten enthält.
67. Der Kodierer, der im Anspruch 39 festgelegt ist, bei welchem, falls das erste Betrags- Bit ungleich-null nicht beobachtet worden ist, dann das Kontext-Modell Kontexte verwendet, um einen Koeffizienten zu konditionieren, der Informationen von wenigstens einem Koeffizienten enthält, der NW, N, NE, W, E, SW, S oder SE des Koeffizienten positioniert ist.
DE19626615A 1995-07-03 1996-07-02 Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet Expired - Fee Related DE19626615C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/498,695 US6195465B1 (en) 1994-09-21 1995-07-03 Method and apparatus for compression using reversible wavelet transforms and an embedded codestream

Publications (2)

Publication Number Publication Date
DE19626615A1 DE19626615A1 (de) 1997-01-09
DE19626615C2 true DE19626615C2 (de) 2000-06-15

Family

ID=23982114

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19626615A Expired - Fee Related DE19626615C2 (de) 1995-07-03 1996-07-02 Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet

Country Status (5)

Country Link
US (1) US6195465B1 (de)
JP (4) JP3367825B2 (de)
CN (3) CN1232127C (de)
DE (1) DE19626615C2 (de)
GB (1) GB2303030B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10128532A1 (de) * 2001-06-13 2003-01-02 Siemens Ag Verfahren zum Ermitteln eines Datenkompressionsverfahrens

Families Citing this family (101)

* 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
US6873734B1 (en) * 1994-09-21 2005-03-29 Ricoh Company Ltd Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US6229927B1 (en) 1994-09-21 2001-05-08 Ricoh Company, Ltd. Reversible embedded wavelet system implementation
US6549666B1 (en) * 1994-09-21 2003-04-15 Ricoh Company, Ltd Reversible embedded wavelet system implementation
US6545687B2 (en) * 1997-01-09 2003-04-08 Canon Kabushiki Kaisha Thumbnail manipulation using fast and aspect ratio zooming, compressing and scaling
IL213137A (en) * 1997-04-02 2014-03-31 Samsung Electronics Co Ltd Device and method for encrypting/decrypting digital data
IL122714A (en) * 1997-04-02 2011-06-30 Samsung Electronics Co Ltd Digital data coding/decoding method and apparatus
GB2341034B (en) * 1997-05-01 2000-06-07 Ricoh Kk Reversible embedded wavelet system implementation
GB2325584B (en) * 1997-05-01 2000-03-29 Ricoh Kk Decompression system using inverse wavelet transform
EP0930788A4 (de) * 1997-07-30 2003-12-17 Mitsubishi Electric Corp Verfahren und vorrichtung zur bildkompression und -dekompression
DE19734542C2 (de) * 1997-08-01 1999-10-28 Deutsche Telekom Ag Verfahren zur Wavelet-basierten Bildkompression
DE19737258A1 (de) * 1997-08-27 1999-03-04 Iat Ag Bilddatenübertragungsverfahren
EP0899958A3 (de) * 1997-08-27 2008-04-23 Opportunity Investment Management PLC Bilddatenübertragungsverfahren
JP3213584B2 (ja) 1997-09-19 2001-10-02 シャープ株式会社 画像符号化装置及び画像復号装置
AUPO951497A0 (en) * 1997-09-29 1997-10-23 Canon Information Systems Research Australia Pty Ltd A method for data compression
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
EP0914004A1 (de) * 1997-10-29 1999-05-06 Ntec Media GmbH Codierungssystem und -verfahren zur verlustfreien und verlustbehafteten Kompression von stehenden und bewegten Bildern
US6707948B1 (en) * 1997-11-17 2004-03-16 The Regents Of The University Of California Image compression for memory-constrained decoders
JP3679586B2 (ja) * 1997-12-24 2005-08-03 キヤノン株式会社 符号化及び復号装置とその符号化及び復号方法
FR2780583A1 (fr) * 1998-06-24 1999-12-31 Canon Kk Filtres numeriques et procedes de filtrage correspondants
JP3613983B2 (ja) * 1998-06-25 2005-01-26 ソニー株式会社 画像生成装置及び方法、並びに電子スチルカメラ
US6456209B1 (en) * 1998-12-01 2002-09-24 Lucent Technologies Inc. Method and apparatus for deriving a plurally parsable data compression dictionary
US6624761B2 (en) * 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6665646B1 (en) * 1998-12-11 2003-12-16 At&T Corp. Predictive balanced multiple description coder for data compression
KR100326157B1 (ko) * 1998-12-31 2002-07-03 윤종용 통신시스템에서반복디코더에대한양자화방법
US6718065B1 (en) * 1999-02-04 2004-04-06 Quvis, Inc. Optimized signal quantification
US20030142875A1 (en) * 1999-02-04 2003-07-31 Goertzen Kenbe D. Quality priority
AU771764B2 (en) * 1999-02-04 2004-04-01 Quvis, Inc. Scaleable resolution motion image recording and storage system
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
US6546143B1 (en) * 1999-03-12 2003-04-08 Hewlett-Packard Development Company Efficient wavelet-based compression of large images
US6850649B1 (en) * 1999-03-26 2005-02-01 Microsoft Corporation Image encoding using reordering and blocking of wavelet coefficients combined with adaptive encoding
CN1197253C (zh) 1999-04-15 2005-04-13 株式会社理光 数据高速压缩伸展方法及其装置
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US20030191876A1 (en) * 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
FR2805941B1 (fr) 2000-03-02 2002-08-09 Canon Kk Procede et dispositif de codage entropique
AUPQ618500A0 (en) 2000-03-13 2000-04-06 Canon Kabushiki Kaisha Memory management of compressed images data
US6549674B1 (en) * 2000-10-12 2003-04-15 Picsurf, Inc. Image compression based on tiled wavelet-like transform using edge and non-edge filters
US6760724B1 (en) * 2000-07-24 2004-07-06 Lucent Technologies Inc. Approximate query processing using wavelets
US20020038381A1 (en) * 2000-07-25 2002-03-28 Gendron David Pierre Reconciling assets within a computer network
US6661842B1 (en) * 2000-09-22 2003-12-09 General Dynamics Decision Systems, Inc. Methods and apparatus for error-resilient video coding
US8692695B2 (en) * 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US7417568B2 (en) * 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
DE10050951A1 (de) * 2000-10-13 2002-05-02 Image D C Gmbh Interfunctional Verfahren zur Erfassung, Organisation, Verarbeitung, Übertragung und Archivierung von ein- und mehrdimensionalen, digitalen Daten insbesondere stehender und bewegter Bilddaten
JP2002204356A (ja) 2000-10-27 2002-07-19 Canon Inc データ処理装置、プロセッサ、及びその制御方法
US7987186B1 (en) * 2000-11-06 2011-07-26 Navteq North America, Llc Method and system for wavelet-based representation and use of cartographic data
US6947874B2 (en) * 2000-11-16 2005-09-20 Canon Kabushiki Kaisha Entropy coding
US6675148B2 (en) * 2001-01-05 2004-01-06 Digital Voice Systems, Inc. Lossless audio coder
US7386046B2 (en) * 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6898323B2 (en) * 2001-02-15 2005-05-24 Ricoh Company, Ltd. Memory usage scheme for performing wavelet processing
US6895120B2 (en) * 2001-03-30 2005-05-17 Ricoh Co., Ltd. 5,3 wavelet filter having three high pair and low pair filter elements with two pairs of cascaded delays
US20030046322A1 (en) * 2001-06-01 2003-03-06 David Guevorkian Flowgraph representation of discrete wavelet transforms and wavelet packets for their efficient parallel implementation
WO2003010963A1 (en) * 2001-07-11 2003-02-06 Daniel Kilbank System and method for compressing data
JP3796432B2 (ja) * 2001-10-31 2006-07-12 キヤノン株式会社 フィルタ処理装置およびフィルタ処理方法
US6873744B2 (en) * 2002-04-17 2005-03-29 Regents Of The University Of Minnesota Image restoration from transformed component data
AU2002346675A1 (en) * 2001-12-05 2003-06-17 Regents Of The University Of Minnesota Image restoration from transformed component data
WO2003065732A2 (en) * 2002-01-25 2003-08-07 Quvis, Inc. Digital image processor
US6825780B2 (en) * 2002-04-19 2004-11-30 Droplet Technology, Inc. Multiple codec-imager system and method
US20030198395A1 (en) * 2002-04-19 2003-10-23 Droplet Technology, Inc. Wavelet transform system, method and computer program product
US7844122B2 (en) * 2002-06-21 2010-11-30 Droplet Technology, Inc. Chroma temporal rate reduction and high-quality pause system and method
US20030229773A1 (en) * 2002-05-28 2003-12-11 Droplet Technology, Inc. Pile processing system and method for parallel processors
US20030206597A1 (en) * 2002-04-19 2003-11-06 Droplet Technology, Inc. System, method and computer program product for image and video transcoding
EP1500268A2 (de) * 2002-04-19 2005-01-26 Droplet Technology, Inc. Wavelettransformationssystem, verfahren und computerprogrammprodukt
JP2005524260A (ja) * 2002-04-23 2005-08-11 キルバンク ダニエル 通信においてマイクロレッツを使用するためのシステムおよび方法
PT1504408E (pt) 2002-04-23 2016-02-25 Ntt Docomo Inc Sistema e método para codificação aritmética
US9577667B2 (en) * 2002-04-23 2017-02-21 Ntt Docomo, Inc. System and method for arithmetic encoding and decoding
US6847317B2 (en) 2002-05-28 2005-01-25 Droplet Technology, Inc. System and method for a dyadic-monotonic (DM) codec
US20030236793A1 (en) * 2002-06-19 2003-12-25 Ericsson Inc. Compressed prefix tree structure and method for traversing a compressed prefix tree
JP3902990B2 (ja) * 2002-07-02 2007-04-11 キヤノン株式会社 アダマール変換処理方法及びその装置
JP2004080520A (ja) * 2002-08-20 2004-03-11 Ricoh Co Ltd 画像処理装置、画像読取装置及び画像形成装置
DK1400954T3 (da) 2002-09-04 2008-03-31 Microsoft Corp Entropi-kodning ved tilpasning af kodning mellem niveau- og runlængde/niveau-moduser
US7260265B2 (en) * 2002-10-04 2007-08-21 International Business Machines Corporation Enhancing compression while transcoding JPEG images
JP2004186934A (ja) * 2002-12-03 2004-07-02 Fuji Xerox Co Ltd 画像処理システム、画像形成装置、画像処理方法、およびプログラム
JP4136951B2 (ja) * 2003-01-31 2008-08-20 株式会社リコー 画像処理装置、プログラム及び記憶媒体
FR2852179A1 (fr) 2003-03-06 2004-09-10 Thomson Licensing Sa Procede de codage d'une image video
US7408486B2 (en) * 2003-04-21 2008-08-05 Qbit Corporation System and method for using a microlet-based modem
US7590293B2 (en) * 2003-05-05 2009-09-15 Regents Of The University Of Minnesota Non-iterative method to restore image from transformed component data
AU2004321469B2 (en) * 2004-07-14 2009-08-20 Agency For Science, Technology And Research Context-based encoding and decoding of signals
JP4618676B2 (ja) * 2005-04-28 2011-01-26 株式会社リコー 構造化文書符号の転送方法、画像処理システム、サーバ装置、プログラム及び情報記録媒体
US7599840B2 (en) * 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
US7684981B2 (en) * 2005-07-15 2010-03-23 Microsoft Corporation Prediction of spectral coefficients in waveform coding and decoding
US7933337B2 (en) * 2005-08-12 2011-04-26 Microsoft Corporation Prediction of transform coefficients for image compression
US7565018B2 (en) * 2005-08-12 2009-07-21 Microsoft Corporation Adaptive coding and decoding of wide-range coefficients
US8184710B2 (en) * 2007-02-21 2012-05-22 Microsoft Corporation Adaptive truncation of transform coefficient data in a transform-based digital media codec
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
WO2010033151A1 (en) * 2008-09-18 2010-03-25 Thomson Licensing Methods and apparatus for video imaging pruning
WO2011126282A2 (en) 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Method and apparatus for encoding video by using transformation index, and method and apparatus for decoding video by using transformation index
US9369736B2 (en) 2010-04-05 2016-06-14 Samsung Electronics Co., Ltd. Low complexity entropy-encoding/decoding method and apparatus
US9049450B2 (en) 2010-04-05 2015-06-02 Samsung Electronics Co., Ltd. Method and apparatus for encoding video based on internal bit depth increment, and method and apparatus for decoding video based on internal bit depth increment
US8917950B2 (en) * 2011-01-18 2014-12-23 Sony Corporation Simplifying parametric loop filters
JP5786464B2 (ja) * 2011-06-01 2015-09-30 コニカミノルタ株式会社 ウェブサーバ、印刷装置、印刷システム、および、ウェバサーバ用プログラム
RS57491B1 (sr) * 2011-10-31 2018-10-31 Samsung Electronics Co Ltd Metod za određivanje kontekstnog modela za nivo koeficijenta transformacije entropijskog dekodiranja
US10698918B2 (en) * 2013-11-20 2020-06-30 Qliktech International Ab Methods and systems for wavelet based representation
US9531915B2 (en) * 2013-12-04 2016-12-27 Aspeed Technology Inc. Image encoding system and method thereof
GB2530312B (en) * 2014-09-19 2016-09-14 Imagination Tech Ltd Data compression
CN107196660A (zh) * 2017-04-24 2017-09-22 南京数维康信息科技有限公司 低功耗数据压缩算法
MX2022003287A (es) * 2019-09-20 2022-04-12 Nokia Technologies Oy Un aparato, un metodo y un programa informatico para codificacion y decodificacion de video.
CN111965408A (zh) * 2020-07-06 2020-11-20 国网江苏省电力有限公司淮安供电分公司 一种基于形态滤波器的交直流混合电网故障零序电压幅值检测方法
CN114066784A (zh) * 2020-07-29 2022-02-18 北京小米移动软件有限公司 一种图像处理方法、装置和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06350989A (ja) * 1993-06-04 1994-12-22 Fuji Photo Film Co Ltd 画像データ圧縮処理方法
JPH0779350A (ja) * 1993-09-08 1995-03-20 Fuji Photo Film Co Ltd 画像データ圧縮処理方法および画像データ再構成方法

Family Cites Families (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3506327A (en) 1964-04-23 1970-04-14 Battelle Development Corp Wavefront reconstruction using a coherent reference beam
US3950103A (en) 1972-10-27 1976-04-13 Canadian Patents And Development Limited Method and apparatus to determine spatial distribution of magnitude and phase of electro-magnetic fields especially optical fields
DE2640140C2 (de) 1976-09-07 1982-10-07 Philips Patentverwaltung Gmbh, 2000 Hamburg Verfahren und Anordnung zur redundanzvermindernden Bildcodierung
DE2640157C2 (de) 1976-09-07 1982-10-07 Philips Patentverwaltung Gmbh, 2000 Hamburg Verfahren und Anordnung zum redundanzvermindernden Codieren von Bildern
US4136954A (en) 1976-12-29 1979-01-30 Jamieson John A Imaging apparatus including spatial-spectral interferometer
US4223354A (en) 1978-08-30 1980-09-16 General Electric Company Phase corrected raster scanned light modulator and a variable frequency oscillator for effecting phase correction
DE3107141A1 (de) 1981-02-26 1982-09-09 Kienzle Apparate Gmbh, 7730 Villingen-Schwenningen Anordnung zum kuehlen des kraftstoffs in einem betriebssystem eines dieselmotors mit einem geschlossenen einspritzkreislauf
US4393456A (en) 1981-03-19 1983-07-12 Bell Telephone Laboratories, Incorporated Digital filter bank
JPS57192440A (en) * 1981-05-20 1982-11-26 Matsushita Electric Ind Co Ltd Polyolefin composition
DE3171311D1 (en) 1981-07-28 1985-08-14 Ibm Voice coding method and arrangment for carrying out said method
US4674125A (en) 1983-06-27 1987-06-16 Rca Corporation Real-time hierarchal pyramid signal processing apparatus
US4599567A (en) 1983-07-29 1986-07-08 Enelf Inc. Signal representation generator
US4652881A (en) 1984-01-10 1987-03-24 Lewis Bernard L Efficient adaptive filter bank
FR2577084B1 (fr) 1985-02-01 1987-03-20 Trt Telecom Radio Electr Systeme de bancs de filtres d'analyse et de synthese d'un signal
US4701006A (en) 1985-02-20 1987-10-20 Stanford University Optical-digital hologram recording
GB2181318B (en) 1985-10-04 1989-12-28 Sony Corp Two-dimensional finite impulse response filters
US4760563A (en) 1986-01-09 1988-07-26 Schlumberger Technology Corporation Seismic exploration using exactly invertible discrete transformation into tau-p space
US4929223A (en) 1986-02-18 1990-05-29 Adolph Coors Company Packaging alignment system
DE3732085A1 (de) 1986-03-26 1989-04-06 Ant Nachrichtentech Digitaler filterbaum
US4663660A (en) 1986-06-20 1987-05-05 Rca Corporation Compressed quantized image-data transmission technique suitable for use in teleconferencing
GB8621994D0 (en) 1986-09-12 1986-10-22 Crosfield Electronics Ltd Image processing
US4868868A (en) 1986-09-30 1989-09-19 Oki Electric Industry Co., Ltd. Sub-band speech analyzing and synthesizing device
FR2606576B1 (fr) 1986-11-07 1989-02-03 Labo Electronique Physique Dispositif pour transmettre des images de television haute definition dans des canaux a bande etroite
GB2197766B (en) 1986-11-17 1990-07-25 Sony Corp Two-dimensional finite impulse response filter arrangements
US4817182A (en) 1987-05-04 1989-03-28 General Electric Company Truncated subband coding of images
US4815023A (en) 1987-05-04 1989-03-21 General Electric Company Quadrature mirror filters with staggered-phase subsampling
US4774574A (en) 1987-06-02 1988-09-27 Eastman Kodak Company Adaptive block transform image coding method and apparatus
BE1000643A5 (fr) 1987-06-05 1989-02-28 Belge Etat Procede de codage de signaux d'image.
DE3853555T2 (de) 1987-06-09 1995-08-17 Sony Corp Verarbeitung des Bewegungsvektors in digitalen Fernsehbildern.
US4837517A (en) 1987-07-16 1989-06-06 Schlumberger Technology Corporation Spatial frequency method and apparatus for investigating earth conductivity with high vertical resolution by induction techniques
US4785349A (en) 1987-10-05 1988-11-15 Technology Inc. 64 Digital video decompression system
US4936665A (en) 1987-10-25 1990-06-26 Whitney Theodore R High resolution imagery systems and methods
US5156943A (en) 1987-10-25 1992-10-20 Whitney Theodore R High resolution imagery systems and methods
US5028995A (en) 1987-10-28 1991-07-02 Hitachi, Ltd. Picture signal processor, picture signal coder and picture signal interpolator
US4827336A (en) 1987-12-18 1989-05-02 General Electric Company Symbol code generation processing from interframe DPCM of TDM'd spatial-frequency analyses of video signals
US4985927A (en) 1988-03-25 1991-01-15 Texas Instruments Incorporated Method of detecting and reviewing pattern defects
US5001764A (en) 1988-03-25 1991-03-19 Texas Instruments Incorporated Guardbands for pattern inspector
US5095447A (en) 1988-03-25 1992-03-10 Texas Instruments Incorporated Color overlay of scanned and reference images for display
US5018210A (en) 1988-03-25 1991-05-21 Texas Instruments Incorporated Pattern comparator with substage illumination and polygonal data representation
US4897717A (en) 1988-03-30 1990-01-30 Starsignal, Inc. Computer-based video compression system
EP0339589A3 (de) 1988-04-28 1992-01-02 Sharp Kabushiki Kaisha Orthogonales Transformationskodierungssystem für Bilddaten
US4982283A (en) 1988-05-06 1991-01-01 General Electric Company Line-sequential pyramid processing of a plurality of raster-scanned image variables
US4829378A (en) 1988-06-09 1989-05-09 Bell Communications Research, Inc. Sub-band coding of images with low computational complexity
US4904073A (en) 1988-08-10 1990-02-27 Aware, Inc. Fractal tiling for multiple mirror optical devices
FR2637400B1 (fr) 1988-09-30 1990-11-09 Labo Electronique Physique Dispositif de traitement ameliore d'un signal echographique
FR2643986B1 (fr) 1989-03-03 1991-05-17 Thomson Csf Procede d'analyse d'un signal par ondelettes
US4918524A (en) 1989-03-14 1990-04-17 Bell Communications Research, Inc. HDTV Sub-band coding using IIR filter bank
JPH02305182A (ja) 1989-05-19 1990-12-18 Fuji Photo Film Co Ltd 画像信号圧縮符号化装置
US5072308A (en) 1989-06-21 1991-12-10 International Mobile Machines Corporation Communication signal compression system and method
US4987480A (en) 1989-07-11 1991-01-22 Massachusetts Institute Of Technology Multiscale coding of images
US4974187A (en) 1989-08-02 1990-11-27 Aware, Inc. Modular digital signal processing system
US5073964A (en) 1989-08-04 1991-12-17 Aware, Inc. Signal processing device and method
US5241395A (en) 1989-08-07 1993-08-31 Bell Communications Research, Inc. Adaptive transform coding using variable block size
US5014134A (en) 1989-09-11 1991-05-07 Aware, Inc. Image compression method and apparatus
US5173880A (en) 1989-12-26 1992-12-22 Exxon Production Research Company Method of generating seismic wavelets using seismic range equation
US5068911A (en) 1990-02-09 1991-11-26 Aware, Inc. Method and apparatus for representing an image
US5103306A (en) 1990-03-28 1992-04-07 Transitions Research Corporation Digital image compression employing a resolution gradient
US4999705A (en) 1990-05-03 1991-03-12 At&T Bell Laboratories Three dimensional motion compensated video coding
US5384725A (en) 1990-05-18 1995-01-24 Yale University Method and apparatus for encoding and decoding using wavelet-packets
DE4016172C1 (de) 1990-05-19 1991-03-28 Werner 5900 Siegen De Ackermann
US5101446A (en) 1990-05-31 1992-03-31 Aware, Inc. Method and apparatus for coding an image
US5128757A (en) 1990-06-18 1992-07-07 Zenith Electronics Corporation Video transmission system using adaptive sub-band coding
EP0465732B1 (de) 1990-07-11 1996-10-02 Koninklijke Philips Electronics N.V. Vorrichtung zur Ableitung eines kompatiblen Zeilensprungfernsehsignals mit geringer Auflösung und anderen Komponenten eines hochauflösenden Zeilensprungfernsehsignals sowie Vorrichtung zur Wiederherstellung des Originalsignals
US5148498A (en) 1990-08-01 1992-09-15 Aware, Inc. Image coding apparatus and method utilizing separable transformations
US5081645A (en) 1990-08-06 1992-01-14 Aware, Inc. Novel spread spectrum codec apparatus and method
US5128791A (en) 1990-08-13 1992-07-07 Bell Communications Research, Inc. Multi-channel HDTV system
US5097331A (en) 1990-08-24 1992-03-17 Bell Communications Research, Inc. Multiple block-size transform video coding using an asymmetric sub-band structure
US5049992A (en) 1990-08-27 1991-09-17 Zenith Electronics Corporation HDTV system with receivers operable at different levels of resolution
US5049993A (en) 1990-10-03 1991-09-17 Bell Communications Research, Inc. Format conversion preprocessing method and circuit
JP3012698B2 (ja) 1991-01-29 2000-02-28 オリンパス光学工業株式会社 画像データの符号化装置および符号化方法
US5121191A (en) 1991-03-15 1992-06-09 Aware, Inc. Method and apparatus for coding motion pictures
US5262958A (en) 1991-04-05 1993-11-16 Texas Instruments Incorporated Spline-wavelet signal analyzers and methods for processing signals
JPH04323963A (ja) 1991-04-23 1992-11-13 Canon Inc 画像処理方法及び装置
US5235434A (en) 1991-06-27 1993-08-10 Polaroid Corporation Method and apparatus for selectively adjusting the brightness of large regions of an image
US5315670A (en) 1991-11-12 1994-05-24 General Electric Company Digital data compression system including zerotree coefficient coding
US5347479A (en) 1991-12-27 1994-09-13 Nec Corporation Small-size wavelet transform apparatus
JP3015187B2 (ja) 1992-01-16 2000-03-06 キヤノン株式会社 現像スリーブ
US5321776A (en) 1992-02-26 1994-06-14 General Electric Company Data compression system including successive approximation quantizer
DE4235099A1 (de) 1992-10-17 1994-04-21 Lautenschlaeger Mepla Werke Möbelscharnier
JP3293920B2 (ja) 1993-01-22 2002-06-17 キヤノン株式会社 画像処理装置およびその方法
US5412741A (en) 1993-01-22 1995-05-02 David Sarnoff Research Center, Inc. Apparatus and method for compressing information
IL104636A (en) 1993-02-07 1997-06-10 Oli V R Corp Ltd Apparatus and method for encoding and decoding digital signals
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
US5420891A (en) 1993-03-18 1995-05-30 New Jersey Institute Of Technology Multiplierless 2-band perfect reconstruction quadrature mirror filter (PR-QMF) banks
AU6381394A (en) 1993-03-30 1994-10-24 Lewis, Adrian S. Data compression and decompression
US5546477A (en) 1993-03-30 1996-08-13 Klics, Inc. Data compression and decompression
EP0622741A3 (de) 1993-03-30 1998-12-30 KLICS, Ltd. Vorrichtung und Verfahren zur Datenkomprimierung/-dekomprimierung
GB2281465B (en) 1993-08-27 1997-06-04 Sony Uk Ltd Image data compression
US5495292A (en) 1993-09-03 1996-02-27 Gte Laboratories Incorporated Inter-frame wavelet transform coder for color video compression
IL107658A0 (en) 1993-11-18 1994-07-31 State Of Israel Ministy Of Def A system for compaction and reconstruction of wavelet data
US5453945A (en) 1994-01-13 1995-09-26 Tucker; Michael R. Method for decomposing signals into efficient time-frequency representations for data compression and recognition
WO1995019683A1 (en) 1994-01-14 1995-07-20 Houston Advanced Research Center Boundary-spline-wavelet compression for video images
US5534925A (en) 1994-05-02 1996-07-09 Cognitech Inc. Image compression by optimal reconstruction
US5602589A (en) 1994-08-19 1997-02-11 Xerox Corporation Video image compression using weighted wavelet hierarchical vector quantization
GB2293733B (en) * 1994-09-20 1997-10-22 Ricoh Kk Encoder including an embedded coder for performing bit-significance encoding
US5867602A (en) * 1994-09-21 1999-02-02 Ricoh Corporation Reversible wavelet transform and embedded codestream manipulation
GB2295936B (en) * 1994-12-05 1997-02-05 Microsoft Corp Progressive image transmission using discrete wavelet transforms

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06350989A (ja) * 1993-06-04 1994-12-22 Fuji Photo Film Co Ltd 画像データ圧縮処理方法
JPH0779350A (ja) * 1993-09-08 1995-03-20 Fuji Photo Film Co Ltd 画像データ圧縮処理方法および画像データ再構成方法

Non-Patent Citations (5)

* 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 *
CHEONG, C.K.u.a.: Subband image coding with bior- thogonal wavelets, In: IEICE Trans. Fundamentals, Vol. E75-A, No.7, July 1992, S. 871-881 *
LEWIS, A.S. u.a.: Image compression using the 2-D wavelet transform. In: IEEE Transactions on Image Processing, Vol.1, No.2, April 1992, S. 244-250 *
OHTA,M.u.a.: Wavelet picture coding with transformapproach, In: IEICE Trans. Fundamentals, Vol.E75-ANo.7, July 1992, S. 776-785 *
SHAPIRO, J.: Embedded Image Coding Using Zerotreesof Wavelet Coefficients, In: IEEE Trans. on SignalProcessing, Vol.41, No.12, Dec.1993, S.3445-3462 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10128532A1 (de) * 2001-06-13 2003-01-02 Siemens Ag Verfahren zum Ermitteln eines Datenkompressionsverfahrens

Also Published As

Publication number Publication date
CN1268137C (zh) 2006-08-02
CN1482812A (zh) 2004-03-17
JP3367825B2 (ja) 2003-01-20
JP2003188732A (ja) 2003-07-04
CN1135707C (zh) 2004-01-21
GB2303030B (en) 1998-02-18
US6195465B1 (en) 2001-02-27
CN1482811A (zh) 2004-03-17
JP2003152545A (ja) 2003-05-23
DE19626615A1 (de) 1997-01-09
JPH0927752A (ja) 1997-01-28
GB9613319D0 (en) 1996-08-28
CN1145553A (zh) 1997-03-19
CN1232127C (zh) 2005-12-14
JP3693988B2 (ja) 2005-09-14
JP3461821B2 (ja) 2003-10-27
GB2303030A (en) 1997-02-05
JP2003179499A (ja) 2003-06-27

Similar Documents

Publication Publication Date Title
DE19626615C2 (de) Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet
DE19626600C2 (de) Kodierer und Verfahren zum Kodieren
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
DE69723550T2 (de) Kodierung und dekodierung von grafischen symbolen
DE60308255T2 (de) 2D-Transformationen zur Bild- und Videokodierung
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
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee