DE19534730A1 - Verfahren zum Codieren und Decodieren von Daten - Google Patents

Verfahren zum Codieren und Decodieren von Daten

Info

Publication number
DE19534730A1
DE19534730A1 DE19534730A DE19534730A DE19534730A1 DE 19534730 A1 DE19534730 A1 DE 19534730A1 DE 19534730 A DE19534730 A DE 19534730A DE 19534730 A DE19534730 A DE 19534730A DE 19534730 A1 DE19534730 A1 DE 19534730A1
Authority
DE
Germany
Prior art keywords
data
bit
block
coefficients
pass
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19534730A
Other languages
English (en)
Other versions
DE19534730B4 (de
Inventor
Ahmad Zandi
James D Allen
Edward L Schwartz
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=23201171&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE19534730(A1) "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 DE19534730A1 publication Critical patent/DE19534730A1/de
Application granted granted Critical
Publication of DE19534730B4 publication Critical patent/DE19534730B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/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/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/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/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
    • 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/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2383Channel coding or modulation of digital bit-stream, e.g. QPSK modulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
    • H04N21/4382Demodulation or channel decoding, e.g. QPSK demodulation
    • 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
    • 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
    • H04N21/6379Control signals issued by the client directed to the server or network components directed to server directed to encoder, e.g. for requesting a lower encoding rate
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Image Processing (AREA)

Description

Die Erfindung betrifft Verfahren zum Codieren und Decodieren von Daten und betrifft darüber hinaus das Gebiet von Daten-Kompres­ sions- und Dekompressionssystemen. Insbesondere betrifft die Er­ findung ein Verfahren und eine Einrichtung zum verlustfreien und verlustbehafteten Codieren und Decodieren von Daten in Kompres­ sions/Dekompressionssystemen.
Die Datenkompression ist ein äußerst brauchbares Werkzeug, um große Datenmengen zu speichern und zu übertragen. Beispielsweise wird die Zeit, die zum Übertragen eines Bildes, beispielsweise eine Faksimileübertragung eines Dokuments erforderlich ist, dra­ stisch reduziert, wenn die Kompression angewendet wird, um die Anzahl an Bits zu verringern, die erforderlich sind, um das Bild neu zu erzeugen.
Im Stand der Technik gibt es viele verschiedene Datenkompres­ sionstechniken, welche in zwei große Kategorien eingeteilt wer­ den, nämlich ein verlustbehaftetes und ein verlustfreies Codie­ ren. Verlustbehaftetes Codieren schließt ein Codieren ein, das auf einen Informationsverlust hinausläuft, so daß es keine Ga­ rantie für eine einwandfreie Rekonstruktion der ursprünglichen Daten gibt. Das Ziel einer verlustbehafteten Kompression besteht darin, daß Änderungen in den ursprünglichen Daten in einer sol­ chen Weise ausgeführt werden, daß sie nicht zu beanstanden oder feststellbar sind. Bei der verlustfreien Kompression wird die gesamte Information zurückerhalten, und die Daten werden in einer Weise komprimiert, welche eine einwandfreie Rekonstruk­ tion ermöglicht.
Bei der verlustfreien Kompression werden eingegebene Symbole oder Intensitätsdaten in ausgegebene Codeworte umgewandelt. Die Eingabe kann ein Bild, einen Ton, eindimensionale Daten (z. B. Daten, die sich räumlich oder zeitlich ändern) zweidimensionale Daten (z. B. Daten, die sich in zwei räumlichen Richtungen (oder einer räumlichen und einer zeitlichen Dimension) ändern) oder mehrdimensionale (mehrere spektrale) Daten enthalten. Wenn die Kompression erfolgreich ist, werden die Codeworte in weniger Bits dargestellt als die Anzahl Bits, welche für die uncodier­ ten eingegebenen Symbole (oder Intensitätsdaten) erforderlich sind. Verlustfreie Codierverfahren schließen Wörterbuch-Codier­ verfahren (z. B. Lempel-Ziv), ein Lauflängen-Codieren, ein enu­ meratives Codieren und ein Entropie-Codieren ein. Bei der ver­ lustfreien Bildkompression basiert eine Kompression auf Prädik­ tionen oder Kontexten plus Codieren. Die JBIG-Norm für Faksimi­ le-Kompression und Differenzen-Pulscodemodulation (DPCM-Verfah­ ren - eine Option in der JPEG-Norm) für fortlaufende Ton-Bilder sind Beispiele für eine verlustfreie Kompression von Bildern. Bei der verlustbehafteten Kompression werden eingegebene Symbo­ le oder Intensitätsdaten vor einer Umsetzung quantisiert, um Codeworte auszugeben. Eine Quantisierung wird gewünscht, um re­ levante Kenngrößen der Daten zu konservieren, während unwichti­ ge Kenndaten beseitigt werden. Vor einer Quantisierung benutzt ein verlustbehaftetes Kompressionssystem oft eine Transforma­ tion, um eine Energieverdichtung zu schaffen. JPEG ist ein Bei­ spiel einer verlustbehafteten Codiermethode für Bilddaten.
Bei neueren Entwicklungen in der Bildsignal-Verarbeitung wird die Aufmerksamkeit auf einen Mangel an wirksamen und genauen Formen eines Datenkompressions-Codierens gerichtet. Verschiede­ ne Transformationsformen oder eine pyramidale Signalverarbei­ tung sind vorgeschlagen worden, einschließlich einer pyramida­ len Verarbeitung mit Mehrfachauflösung und einer pyramidalen Elementarwellen- bzw. Wavelet-Verarbeitung. Diese Formen werden auch als Unterband-(subband-) Verarbeiten und hierarchisches Verarbeiten bezeichnet. Ein pyramidales Wavelet-Verarbeiten von Bilddaten ist eine spezifische Form von pyramidalem Verarbeiten mit Mehrfachauflösung, bei welchem Quadratur-Spiegelfilter (QMFs) verwendet werden können, um eine Unterbandzerlegung eines Vorlagenbildes zu erzeugen. Es gibt auch noch andere Ar­ ten von Nicht-QMF-Wavelets. (Bezüglich mehr Information zu Wa­ velet-Verarbeitung, siehe Antonini, M., et al., "Image Coding Using Wavelet Tranform" IEEE Transactions on Image Processing, Vol. 1, No. 2, April 1992; Shapiro, J., "An Embedded Hierarchi­ cal Image Coder Using Zerotrees of Wavelet Coefficients", Proc. IEEE Data Compression Conference, S. 214 bis 223, 1993).
Eine Schwierigkeit bei vielen bekannten Wavelet-Verarbeitungen besteht darin, daß ein großer Speicher erforderlich ist, um al­ le Daten zu speichern, während sie zu verarbeiten sind. Mit an­ deren Worten, um eine Wavelet-Verarbeitung durchzuführen, müs­ sen alle Daten geprüft werden, bevor ein Codieren an den Daten durchgeführt wird. In einem solchen Fall gibt es keine Daten­ ausgabe, bis zumindest ein voller Durchgang durch alle Daten gemacht worden ist. In der Praxis umfaßt eine Wavelet-Verarbei­ tung üblicherweise mehrere Durchgänge (multiple passes) durch die Daten. Deswegen ist oft ein großer Speicher erforderlich.
Es ist wünschenswert, eine Wavelet-Verarbeitung zu benutzen, solange die Anforderung nach einem großen Speicher vermieden wird. Ferner ist es wünschenswert, eine Wavelet-Verarbeitung mit nur einem einzigen Datendurchgang durchzuführen.
Viele Wavelet- oder Unterband-Transformations-Implementationen erfordern Filter in einer speziellen kanonischen Form. Bei­ spielsweise müssen Tief- und Hochpaßfilter dieselbe Länge ha­ ben, die Summe der Quadrate der Koeffizienten muß eins sein, das Hochpaßfilter muß eine Zeit- und Frequenzumkehr des Tief­ paßfilters sein, usw. (Siehe US-Patent 5,014,134, erteilt Mai 1991). Es ist wünschenswert, eine breitere Filterklasse zuzu­ lassen. Das heißt, es ist wünschenswert, Wavelet- oder Unter­ band-Transformations-Implementierungen zu schaffen, welche Tief- und Hochpaßfilter verwenden, die nicht dieselbe Länge ha­ ben, bei welchen die Summe der Quadrate der Koeffizienten nicht eins sein muß, das Hochpaßfilter nicht die Zeit- und Frequenz­ umkehr des Tiefpaßfilters haben muß, usw.
Gemäß der Erfindung ist eine verlustbehaftete und verlustfreie Kompression mit Hilfe einer Transformation geschaffen, welche eine gute Energieverdichtung schafft. Die vorliegende Erfindung sieht auch ein Modellieren von gemeinsamen bzw. Verbund- Raum/Frequenzdomänen-Daten (joint spatial/frequency domain da­ ta) (eine Wavelet-Transformationsdomäne) vor, um eine effiziente Verdichtung (Kompression) zuzulassen. Ebenso ist eine progres­ sive Übertragung mit einer Rate oder Verzerrung vorgesehen, die von dem Benutzer nach einem Codieren wählbar ist.
Gemäß der Erfindung weist dies mit einem Verfahren zum Codieren von eingegebenen Daten mit den Schritten in den Ansprüchen 1, 12, 13 und 17 erreicht. Vorteilhafte Weiterbildungen sind Ge­ genstand der auf einen der vorstehenden Ansprüche unmittelbar oder mittelbar rückbezogenen Ansprüche. Ferner ist dies mit einem Verfahren zum Decodieren von Daten in ursprüngliche Daten mit den Schritten im Anspruch 8 erreicht. Vorteilhafte Weiter­ bildungen sind Gegenstand der auf den Anspruch 8 unmittelbar oder mittelbar rückbezogenen Ansprüche.
Ein Verfahren und eine Vorrichtung zum Codieren und Decodieren von Daten wird beschrieben. Die Erfindung weist ein Verfahren und eine Einrichtung auf, um transformierte Signale entspre­ chend eingegebenen Daten zu erzeugen. In einer Ausführungsform werden die transformierten Daten mit Hilfe einer reversiblen Wavelet-Transformation erzeugt. Die Erfindung weist auch ein Verfahren und eine Einrichtung auf, um die transformierten Signale in Daten zu verdichten, die eine verlustfreie kompri­ mierte Version der eingegebenen Daten darstellen. In einer Aus­ führungsform werden gemäß der Erfindung die eingegebenen Daten mit Hilfe eines reversiblen Filters nicht-minimaler Länge zer­ legt. Die Zerlegung kann mit mehreren eindimensionalen Filtern durchgeführt werden. Die Erfindung weist auch ein Verfahren und eine Einrichtung auf, um eingebettetes Codieren der transfor­ mierten Signale durchzuführen. Das eingebettete Codieren gemäß der Erfindung umfaßt ein Ordnen der Serie von Koeffizienten und ein Durchführen einer Bit-Signifikanz, die in den transformier­ ten Signale eingebettet ist.
Die Erfindung weist auch ein Verfahren und eine Einrichtung auf, um die verlustfrei komprimierte Version der eingegebenen Daten in transformierte Daten zu dekomprimieren. Darüber hinaus sieht die Erfindung eine verlustbehaftete Kompression von ein­ gegebenen Daten durch ein Abbrechen bzw. Abschneiden von ver­ lustfrei komprimierten Daten vor. Die Erfindung umfaßt auch ein Verfahren und eine Einrichtung, um die eingegebenen Daten aus den transformierten Signalen in eine rekonstruierte Version der eingegebenen Daten mit Hilfe einer inversen, reversiblen Wave­ let-Transformation zu erzeugen.
Nachfolgend wird die Erfindung anhand von bevorzugten Ausfüh­ rungsformen unter Bezugnahme auf die anliegenden Zeichnungen im einzelnen beschrieben, wobei gleiche Bezugszeichen gleiche Ele­ mente bzw. Komponenten bezeichnen. Es zeigen:
Fig. 1A ein Blockdiagramm einer Ausführungsform eines Codier­ teils eines Codiersystems gemäß der Erfindung;
Fig. 1B ein Blockdiagramm einer Ausführungsform der Bit-Signifi­ kanz-Einbettung gemäß der Erfindung;
Fig. 2A ein Blockdiagramm eines Wavelet-Analyse/Synthese-Sy­ stems;
Fig. 2B Vorwärts- und Rückwärts-(Umkehr-)Darstellungen von Transformationssystemen zum Filtern mit reversiblen Fil­ tern mit nicht-überlappter minimaler Länge;
Fig. 3A bis 3D Ergebnisse zum Durchführen einer Vierstufen- bzw. Vierebenen-Zerlegung;
Fig. 4A ein Blockdiagramm einer pyramidalen Dreiebenen-Transfor­ mation;
Fig. 4B ein Blockdiagramm einer zweidimensionalen, Zweiebenen Transformation:
Fig. 4C ein Blockdiagramm von eindimensionalen Filtern, die eine Dekompression mit Mehrfachauflösung durchführen;
Fig. 4D ein Blockdiagramm eines Systems mit den reversiblen Wa­ velets der Erfindung;
Fig. 4E Blockdiagramme eines Vergrößerungs- und Analysesystems, welches die reversiblen Wavelets der Erfindung benutzt;
Fig. 5 eine Baumstruktur bei Wavelets-Koeffizienten;
Fig. 6a und 6a (fortgesetzt) ein Flußdiagramm einer Ausführungs­ form des Einzellisten-Nullbaum-Modellierens (single list zerotree modeling) zum Codieren in der Erfindung;
Fig. 6b und 6b (fortgesetzt) ein Flußdiagramm einer Ausführungs­ form des Einzellisten-Nullbaum-Modellierens zum Codieren in der Erfindung mit Hilfe eines reduzierten (verklei­ nerten) Flag-Speichers;
Fig. 6c ein Flußdiagramm einer Ausführungsform des Einzellisten- Nullbaum-Modellierens zum Decodieren in der Erfindung;
Fig. 6d ein Flußdiagramm einer Ausführungsform des Einzellisten- Nullbaum-Modellierens zum Decodieren in der Erfindung mit Hilfe eines reduzierten Flag-Speichers;
Fig. 7a ein Flußdiagramm einer Ausführungsform des Horizont-Mo­ dellierens zum Codieren in der Erfindung;
Fig. 7b ein Flußdiagramm einer Ausführungsform des Horizont-Mo­ dellierens zum Codieren in der Erfindung mit Hilfe eines reduzierten Flag-Speichers;
Fig. 7c ein Flußdiagramm des Horizont-Modellierens zum Decodie­ ren in der Erfindung;
Fig. 7d ein Flußdiagramm des Horizont-Modellierens zum Decodie­ ren in der Erfindung mit Hilfe eines reduzierten Flag- Speichers;
Fig. 8a ein Flußdiagramm einer Ausführungsform eines B-Durch­ gangs (B-pass) zum Codieren in der Erfindung;
Fig. 8b ein Flußdiagramm einer Ausführungsform des B-Durchgangs zum Codieren in der Erfindung mit Hilfe eines reduzier­ ten Flag-Speichers;
Fig. 9a ein Flußdiagramm einer Ausführungsform des B-Durchgangs für ein Decodieren in der Erfindung;
Fig. 9b ein Flußdiagramm einer Ausführungsform des B-Durchgangs für ein Decodieren in der Erfindung mit Hilfe eines re­ duzierten Flag-Speichers;
Fig. 10 eine Ausführungsform des Vorwärts-Wavelet-Filters der Erfindung;
Fig. 11 ein Blockdiagramm einer Ausführungsform eines Umkehr-Wa­ velet-Filters gemäß der Erfindung;
Fig. 12 ein Bild und Koeffizienten in einem Zeilenpuffer für eine pyramidale Vierebenen-Zerlegung;
Fig. 13 ein Blockdiagramm einer Ausführungsform einer Wavelet- Filterung mit Hilfe einer Filter-Steuereinheit;
Fig. 14 ein Blockdiagramm einer weiteren Ausführungsform einer Wavelet-Filterung mit Hilfe einer Filter-Steuereinheit;
Fig. 15 eine Zuteilung von Speicherbänken,um horizontale und vertikale Zugriffe zu stützen;
Fig. 16 die Filteroperation für eine Zweiebenen-Zerlegung;
Fig. 17 ein Blockdiagramm einer Ausführungsform des Kontextmo­ dells der Erfindung;
Fig. 18 ein Blockdiagramm einer Ausführungsform der Vorzei­ chen/Größeneinheit der Erfindung;
Fig. 19 ein Blockdiagramm einer Ausführungsform der Größen-Spei­ chereinheit der Erfindung;
Fig. 20 ein Blockdiagramm einer Ausführungsform der Signifikanz­ einheit der Erfindung;
Fig. 21 ein Blockdiagramm einer Ausführungsform der Baum­ speichereinheit der Erfindung;
Fig. 22 eine Blockdiagramm einer Ausführungsform von Koeffizien­ ten Verschieben gemäß der Erfindung;
Fig. 23 ein Blockdiagramm einer alternativen Ausführungsform der Signifikanzeinheit der Erfindung mit Hilfe eines Ab­ gleichs mal 1,5;
Fig. 24 eine dynamische Zuordnung eines codierten Datenspeichers für eine Durchgangsoperation;
Fig. 25a und 25b ein Flußdiagramm einer Ausführungsform des Co­ dierprozesses gemäß der Erfindung;
Fig. 26a und 26b ein Flußdiagramm des Decodierens einer Ausfüh­ rungsform des Decodierprozesses der Erfindung;
Fig. 27a und 27b ein Flußdiagramm einer Ausführungsform des Pro­ zesses zum Modellieren jedes Koeffizienten sowohl für die Codier- als auch die Decodierprozesse der Erfindung;
Fig. 28a und 28b ein Flußdiagramm einer alternativen Ausfüh­ rungsform des Codierprozesses der Erfindung;
Fig. 29a und 29b ein Flußdiagramm einer alternativen Ausfüh­ rungsform eines Decodierprozesses der Erfindung;
Fig. 30a und 30b ein Flußdiagramm einer alternativen Ausfüh­ rungsform des Prozesses zum Modellieren jedes Koeffi­ zienten in den Codier- und Decodierprozessen der Erfin­ dung, und
Fig. 31 eine Ausführungsform von Multiplikatoren für das Fre­ quenzband, das für einen Koeffizientenabgleich in der Erfindung verwendet ist.
Nunmehr wird ein Kompressions- und Dekompressionsverfahren be­ schrieben. In der folgenden detaillierten Beschreibung der Er­ findung werden zahlreiche spezifische Details angeführt, wie Ty­ pen von Codierern, Zahlen von Bits, Signalnamen, usw., um ein gründliches Verständnis der Erfindung zu schaffen. Für einen Fachmann ist ersichtlich, daß die Erfindung auch ohne diese spe­ ziellen Details in der Praxis ausgeführt werden kann. In anderen Fällen werden bekannte Strukturen und Vorrichtungen in Blockdia­ grammform dargestellt und nicht im einzelnen beschrieben, um die Erfindung nicht unverständlich zu machen.
Einige Teile der detaillierten Beschreibungen, welche folgen, sind in Form von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits in einem Computer-Speicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die von Fachleuten auf dem Datenverarbeitungsgebiet ver­ wendet werden, um das Wesentliche ihrer Arbeit anderen Fachleu­ ten am effektivsten zu übermitteln. Ein Algorithmus wird hier und im allgemeinen als eine in sich logische Folge von Schritten aufgefaßt, die zu einem gewünschten Ergebnis führen. Die Schrit­ te sind solche, welche physikalische Manipulationen von physika­ lischen Größen erfordern. Üblicherweise, obwohl nicht notwendi­ gerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, ver­ knüpft, verglichen oder auf andere Weise behandelt werden kön­ nen. Es hat sich als praktisch erwiesen, prinzipiell aus Gründen eines häufigen Umgangs auf diese Signale als Bits, Werte, Ele­ mente, Symbole, Zeichen, Terme (Glieder), Zahlen o,ä, zu verwei­ sen.
Jedoch sind alle diese und ähnliche Terme den entsprechenden physikalischen Größen zuzuordnen, und sind nur bequeme Signatu­ ren, die bei diesen Größen verwendet werden. Wenn nicht speziell etwas anderes angegeben, wie es aus den folgenden Besprechungen offensichtlich ist, ist festzuhalten, daß bei der vorliegenden Erfindung Erörterungen, bei welchen Begriffe verwendet werden, wie "Verarbeiten" oder "Berechnen" oder "Bemessen" oder "Bestim­ men" oder "Anzeigen" o.a., sich auf die Funktion oder Prozesse eines Computersystems oder einer ähnlichen elektronischen Re­ cheneinrichtung beziehen, welche Daten behandelt und transfor­ miert, die als physikalische (elektronische) Größen in den Com­ puter-System-Registern und -Speichern in anderen Daten darge­ stellt sind, die in ähnlicher Weise als physikalische Größen in den Computersystem-Speichern oder -Registern oder in anderen derartigen Informationsspeichern, Übertragungs- oder Anzeigevor­ richtungen dargestellt sind.
Die Erfindung betrifft auch eine Einrichtung zum Durchführen der hier angeführten Operationen. Die Einrichtung kann speziell für die geforderten Zwecke ausgeführt werden oder sie kann einen Universal-Rechner aufweisen, der durch ein in dem Computer ge­ speichertes Programm selektiv aktiviert oder konfiguriert ist. Die hier wiedergegebenen Algorithmen und Darstellungen beziehen sich nicht auf irgendeinen speziellen Computer oder ein anderes Gerät. Verschiedene Universaleinrichtungen können mit Programmen gemäß den hier wiedergegebenen Lehren verwendet werden, oder es kann sich als bequem erweisen, speziellere Einrichtungen zu schaffen, um die geforderten Verfahrensschritte durchzuführen. Die geforderte Struktur einer Vielzahl dieser Einrichtungen er­ gibt sich aus der nachstehenden Beschreibung. Außerdem ist die vorliegende Erfindung nicht bezüglich einer ganz bestimmten Pro­ grammiersprache beschrieben. Vielmehr können eine Vielzahl von Programmiersprachen verwendet werden, um die Lehren der Erfin­ dung auszuführen.
Überblick über die Erfindung
Die Erfindung schafft ein Kompressions/Dekompressionssystem mit einem Codier- und Decodierteil. Der Codierteil ist zum Codieren von eingegebenen Daten vorgesehen, um komprimierte Daten zu er­ zeugen, während der Decodierteil um Decodieren vorher codierter Daten vorgesehen ist, um eine rekonstruierte Version der ur­ sprünglichen Eingabedaten zu erzeugen. Die eingegebenen Daten können eine Vielzahl von Datentypen aufweisen, wie ein (Einzel- oder Video-)Bild, ein Tonsignal, usw. In einer Ausführungsform sind die Daten digitale Signaldaten; jedoch sind auch digitali­ sierte Analogdaten, Textdaten-Formate und andere Formate mög­ lich. Die Quelle der Daten kann ein Speicher oder ein Kanal für den Codier- und/oder den Decodierteil sein.
Gemäß der Erfindung können Elemente des Codier- und/oder des Decodier-Teils in Hardware oder Software ausgeführt sein, wie sie in einem Computersystem verwendet sind. Die Erfindung schafft ein verlustfreies Kompressions-/Dekompressionssystem. Die Erfindung kann auch entsprechend zusammengestellt werden, um eine verlustbehaftete Kompression/Dekompression durchzuführen.
Fig. 1A ist ein Blockdiagramm einer Ausführungsform des Codier­ teils des Systems. Der Decodierteil des Systems arbeitet im Hin­ blick auf den Datenfluß in umgekehrter Reihenfolge. In Fig. 1A werden eingegebene Bilddaten 101 mit einem Wavelet-Transforma­ tionsblock 102 empfangen. Der Ausgang des Blocks 102 ist mit einer Bitsignifikanz-Einbettungsblock 103 verbunden. Entspre­ chend dem Ausgang von dem Block 102 erzeugt der Block 103 zumin­ dest einen Bitfluß, der von einem Entropie-Coder 104 aufgenommen wird. Entsprechend dem Eingang von dem Block 103 erzeugt der Entropie-Coder 104 einen Codefluß 107.
In einer Ausführungsform weist der Bitsignifikanz-Einbettungs­ block 103 eine Vorzeichen-Größen-Formatiereinheit 109, ein auf Frequenz basierendes Kontextmodell 105 und ein gemeinsames Raum/Frequenz-Kontextmodell 106 auf, wie es in Fig. 1B darge­ stellt ist. In einer Ausführungsform weist das Modell 106 ein Horizont-Kontextmodell auf. In einigen Ausführungsformen weist ein Frequenz-Kontextmodellblock 105 ein Nullbaum-Modell auf. In einer anderen Ausführungsform weist ein Frequenz-Kontextmodell 105 ein Signifikanz-Baummodell auf. Eine Vorzeichen-Größenein­ heit 109, ein Frequenz-Kontextmodell 105 und das gemeinsame Raum/Frequenz-(JSF-) Kontextmodell 106 führen ein Bit-Signifi­ kanz-Einbetten in der Erfindung durch. Der Eingang der Vorzei­ chen-Größeneinheit 109 ist mit dem Ausgang des Wavelet-Transfor­ mations-Codierblocks 102 verbunden. Der Ausgang der Einheit 109 ist mit einem Schalter 108 verbunden, der vorgesehen ist, um den Ausgang der Einheit 109 mit einem Eingang entweder des Blocks 105 oder des Blocks 106 zu verbinden. Der Ausgang der Blöcke 105 und 106 ist mit dem Eingang eines Entropie-Coders 104 verbunden, welcher den abgegebenen Codefluß 107 erzeugt.
In Fig. 1A werden bei der Erfindung die Bilddaten 101 empfangen und mit Hilfe reversibler Wavelets in dem Wavelet-Transforma­ tionsblock 102 transformiert-codiert, wie später noch ausgeführt wird, um eine Reihe von Koeffizienten zu erzeugen, die eine Zer­ legung mit Mehrfach-Auflösung des Bildes darstellen. Diese Koef­ fizienten werden von dem Bit-Signifikanz-Einbettungsblock 103 empfangen.
Der Block 103 ordnet und setzt die Koeffizienten in ein Vorzei­ chen-Größen-Format um, und basierend auf dieser Signifikanz (wie später noch beschrieben wird) werden die formatierten Koeffi­ zienten einer Kombination von verschiedenen Einbett-Modellier­ verfahren unterzogen. In der Erfindung werden die formatierten Koeffizienten jeweils einem von zwei Einbett-Modellierverfahren (z. B. einer auf Frequenz basierenden Modellierung und einer SJF- Modellierung) unterzogen.
In einer Ausführungsform werden die formatierten Koeffizienten entweder einer auf Frequenz basierenden Modellierung oder einer JSF-Modellierung unterzogen. Wenn die eingegebenen Daten Bildda­ ten mit Mehrfach-Bitebenen aufweisen, werden bei der Erfindung eine Anzahl Bitebenen mit einem frequenz-gestützen Modellieren codiert, während die verbleibenden Bitebenen mit einem JSF-Mo­ dellieren codiert werden. Die Entscheidung, welches Verfahren bei welchen Bitebenen anzuwenden ist, kann ein Benutzer-Parame­ ter sein. In einer Ausführungsform werden höhere Bitebenen der Koeffizienten mit der frequenz-gestützten Modellierung der Er­ findung geordnet und codiert. In dem frequenz-gestützten Kon­ textmodell-Verfahren der Erfindung ist die Signifikanz-Prädik­ tion der Koeffizientenbits auf die pyramidale Struktur des Wave­ lets bezogen. Die niedrigerwertigen Koeffizienten-Bitebenen wer­ den mit dem JSF (joint space/frequency) Kontextmodell der Erfin­ dung geordnet und codiert. Die JSF-Modellierung, beispielsweise eine Horizont-Modellierung, schafft Vorteile gegenüber einem frequenz-gestützten Codieren für Bitebenen, die weniger korre­ liert bezüglich der Frequenzdomäne durch die Koeffizientenrela­ tionen sind.
Die Ergebnisse der Bit-Signifikanz-Einbettung sind Entscheidun­ gen (oder Symbole), die mittels des Entropie-Coders zu codieren sind. In einer Ausführungsform werden alle Entscheidungen an einen einzigen Codierer gesendet. In einer anderen Ausführungs­ form werden Entscheidungen durch Signifikanz kenntlich gemacht, und Entscheidungen für jede Signifikanzebene werden von ver­ schiedenen (physikalischen oder virtuellen) Mehrfach-Codieren codiert.
Die Bitflüsse, die sich von dem frequenz-gestützten Kontextmo­ dell-Block 105 und dem JSF-Kontextmodell-Block 106 ergeben, wer­ den in der Signifikanz-Reihenfolge mit Hilfe des Entropie-Coder 104 codiert. In einer Ausführungsform weist der Entropie-Coder einen binären Entropie-Coder auf. In einer weiteren Ausführungs­ form weist der Entropie-Coder 104 einen Q-Coder, einen B-Coder, wie er in US-Patent 5,272,478 definiert ist, oder einen Coder auf, wie sie in der am 10. Februar 1993 eingereichten US-Patent­ anmeldung S.N. 08/016,035 beschrieben ist, mit dem Titel "Ver­ fahren und Einrichtung zum parallelen Decodieren und Codieren von Daten". (Bezüglich mehr Information zu dem Q-Coder, siehe Pennebaker, W.B., et al., "An Overview of the Basis Principles of the Q-coder, Adaptive Binary Arithmetic," IBM Journal of Re­ search and Development, Vol. 32, S. 717-26, 1988. In einer Ausfüh­ rungsform erzeugt ein einziger Coder einen einzigen Code-Aus­ gangsfluß. In einer anderen Ausführungsform erzeugen mehrere (physikalische oder virtuelle) Coder mehrere (physikalische oder virtuelle) (Mehrfach-)Datenflüsse.
Wavelet-Zerlegung
Die Erfindung führt anfangs eine Zerlegung eines Bildes (in Form von Bilddaten) oder eines anderen Datensignals mit Hilfe reversibler Wavelets durch. In der Erfindung weist eine reversible Wavelet-Transformation eine Implementierung eines exakten Konstruktionssystems im Ganzzahl-Arithmetik auf, so daß ein Signal mit ganzzahligen Koeffizienten verlustfrei wiederge­ wonnen werden kann. Durch Verwenden von reversiblen Wavelets kann mittels der Erfindung eine verlustfreie Kompression mit endlicher Präzisionsarithmetik geschaffen werden. Die Ergebnis­ se, die erzeugt worden sind, indem die reversible Wavelet-Trans­ formation bei Bilddaten angewendet wird, sind eine Koeffizien­ tenreihe. In einer Ausführungsform der Erfindung wird die rever­ sible Wavelet-Transformation mit Hilfe eines Satzes Filter durchgeführt. In einer Ausführung sind die Filter ein Tiefpaß­ filter mit zwei Abgriffen und ein Hochpaßfilter mit sechs Ab­ griffen. In einer Ausführungsform werden diese Filter nur mit Hilfe von Additions- und Subtraktionsoperationen (plus einem fest verdrahteten Bit-Shifting) implementiert.
In der Erfindung erzeugt das Hochpaßfilter mit Hilfe der Ergeb­ nisse des Tiefpaßfilters ein Ausgangssignal. Die sich ergebenden Hochpaß-Koeffizienten sind nur wenige Bits, die größer als die Pixel-Auflösung sind, und die Tiefpaß-Koeffizienten sind diesel­ ben wie die Pixel-Auflösung. Da nur die Tiefpaß-Filter wieder­ holt in einer pyramidalen Zerlegung gefiltert werden, wird die Auflösung in Mehrebenen-Zerlegungen nicht erhöht.
Ein Wavelet-Transformationssystem ist durch ein Paar FIR-Analy­ sefilter h₀(n), hI(n) und durch ein Paar FIR-Synthesefilter g₀(n), g₁(n) definiert. In der Erfindung sind h₀ und g₀ die Tiefpaßfilter und h₁ und g₁ sind die Hochpaßfilter. Ein Block­ diagramm des Wavelet-Systems ist in Fig. 2A dargestellt. In Fig. 2A werden für ein Eingangssignal x(n) die Analyse für h₀ und h₁ verwendet, und die Ausgänge durch 2 (kritisch unterabge­ tastet (subsampled)) gemindert, um die transformierten Signale y₀, (n) und y₁(n) zu erzeugen, welche hier als tiefpaß- bzw. hochpaß-gefilterte Koeffizienten bezeichnet werden. Die Analyse­ filter und deren entsprechende Dezimier- oder Unterabtast-Blöcke bilden den Analyseteil des Wavelet-Transformationssystems. Die Coder/Decoder enthalten die gesamte Verarbeitungslogik und Rou­ tinen, die in der transformierten Domäne (z. B. Prädiktion, Quan­ tisierung, Codierung usw.) durchgeführt worden sind. Das in Fig. 2A dargestellte Wavelet-System enthält auch einen Synthese­ teil, in welchem die transformierten Signale mit 2 hochgetastet (upsampled) werden (z. B. eine Null wird nach jedem Term einge­ setzt), und durchlaufen dann Synthesefilter g₀(n), g₁(n). Die tiefpaß-gefilterten y₀ (n) durchlaufen das Tiefpaß-Synthesefil­ ter g₀, und die hochpaß-gefilterten Koeffizienten y₁(n) durch­ laufen das Hochpaßfilter g₁. Die Ausgänge der Filter g₀(n) und g₁(n) werden verknüpft, um x(n) zu erzeugen.
Während das Runter- und das Hochtasten in einigen Ausführungs­ formen durchgeführt werden, werden in anderen Ausführungsformen Filter verwendet, so daß die Rechnungen, welche infolge des Run­ ter- und des Hochtastens nicht benötigt werden, nicht durchge­ führt werden.
Das Wavelet-System kann anhand der Z-Transformation beschrieben werden, wobei X(Z), (Z) die eingegebenen bzw. ausgegebenen Signale sind, Y₀(Z), Y₁(Z) die tiefpaß- und hochpaßtransformier­ ten Signale sind, H₀(Z), H₁(Z) die Tiefpaß- und die Hochpaß-Ana­ lysefilter sind und G₀(Z), G₁(Z) die Tiefpaß- und die Hochpaß- Synthesefilter sind. Wenn es keine Alteration oder Quantisierung in der Transformations-Domäne gibt, ist der Ausgang (Z) in Fig. 2 gegen durch:
(Z) = ½[H₀(Z)G₀(Z)+H₁(Z)G₁(Z)]X(Z)+½[H₀(-Z)G₀(Z)+H₁(-Z)G₁(Z)]X(-Z).
In der Erfindung wird der zweite Term von (Z), der als der "Aliasing"-Term bezeichnet ist, annulliert, da die Synthesefil­ ter als der Quadratur-Spiegel des Synthesefilters definiert sind, d. h.
Hinsichtlich der Filter-Koeffizienten gilt:
Daher wird für ein Quadratur-Spiegelfilterpaar nach einer Sub­ stitution der Ausgang:
(z) = ½[H₀(Z)H₁(-Z)-H₁(Z)H₀(-Z)]X(Z).
In dem Quadratur-Spiegelsystem der Erfindung ist der Ausgang nur in Form der Analysefilter definiert. Die Wavelet-Transforma­ tion wird rekursiv bei den transformierten Signalen angewendet, so daß die durch die Filter erzeugten Ausgangssignale direkt oder indirekt als Eingangssignale in den Filtern verwendet wer­ den. In der beschriebenen Ausführungsform wird nur die tiefpaß­ transformierte Komponente y₀(n) rekursiv transformiert, so daß das System pyramidal ist. Ein Beispiel eines solchen pyramidalen Systems ist in Fig. 4A dargestellt.
Die Z-Transformation ist eine bequeme Darstellungsweise, um die Operation von Hardware und/oder von Software an Daten aus zu­ drücken. Eine Multiplikation Z-m modelliert eine m-Taktzyklus- Verzögerung in Hardware, und eine Anordnung greift auf das m-te vorherige Element in der Software zu. Derartige Hardware-Imple­ mentationen enthalten Speicher, Pipestufen, Schieberegister, Re­ gister, usw.
In der Erfindung sind die Signale x(n) und (n) identisch bis auf eine multiplikative Konstante und einen Verzögerungsterm, d. h. in Form der Z-Transformation
(Z) = cZ-mX(Z).
Dies wird ein exaktes Rekonstruktionssystem genannt. Folglich ist in einer Ausführungsform der Erfindung die Wavelet-Transfor­ mation, die anfangs bei den eingegebenen Daten angewendet worden ist, exakt rekonstruierbar.
Eine Ausführungsform der Erfindung, bei welcher die Hadamard- Transformation verwendet ist, ist ein exaktes Rekonstruktionssy­ stem, welches in normierter Form die folgende Darstellung in der Z-Domäne hat.
Nach Substitution wird der Ausgang:
(Z) = Z-1X(Z),
welches deutlich eine exakte Rekonstruktion ist. (Für mehr In­ formation bezüglich der Hadamard-Transformation, siehe Anil K. Jain, Fundamentals of Image Processing, S. 155).
Eine reversible Version der Hadamard-Transformation wird hier als die S-Transformation bezeichnet. (Für mehr Information be­ züglich der S-Transformation siehe Said, A. and Pearlman, W, "Re­ versible Image Compression via Multiresolution Representation and Predictive Coding," Dept. of Electrical, Computer and Sy­ stems Engineering, Renssealaer Polytechnic Institute, Troy, NY 1993). Da die Hadamard-Transformation eine exakte Rekonstruk­ tions-Transformation ist, ist die folgende, nicht-normierte Ver­ sion (welche sich von der Hadamard-Transformation durch konstan­ te Faktoren unterscheidet) auch eine exakte Rekonstruktions- Transformation.
Wenn die Abtastwerte des Eingangssignals als x₀, x₁ gegeben sind, ist die S-Transformation eine resersible Implementation dieses Systems, nämlich
Die Schreibweise bedeutet Abrunden nach unten oder Kürzen und wird manchmal als die Boden-(floor)Funktion bezeichnet. Dem­ entsprechend bedeutet die Decken-(ceiling)Funktion aufrunden nach oben zu der nächsten ganzen Zahl.
Der Nachweis, daß diese Implementierung reversibel ist, folgt aus der Tatsache, daß die einzige in der Näherung verloren ge­ gangene Information das niedrigstwertige Bit von x(0)+x(1) ist. Da jedoch das niedrigstwertige Bit von x(0)+x(1) und x(0)-x(1) identisch ist, kann dies aus dem Hochpaß-gefilterten Ausgang y₁(0) wiedergewonnen werden. Mit anderen Worten, es gilt:
Die S-Information ist eine nicht-überlappende Transformation mit reversiblen Filtern minimaler Länge. Filter minimaler Länge weisen ein Filterpaar auf, wobei beide Filter zwei Abgriff ha­ ben. Transformationen minimaler Länge schaffen keine gute Ener­ gieverdichtung. Filter minimaler Länge implementieren eine nicht-überlappte Transformation, da die Länge der Filter gleich der Anzahl Filter ist. Überlappte Informationen benutzen zumin­ dest ein Filter, welches eine Länge hat, die größer als die An­ zahl Filter ist. Überdeckte Informationen mit längeren Filtern (nicht-minimaler Länge) können eine bessere Energieverdichtung schaffen. Gemäß der Erfindung sind reversible Filter mit nicht­ minimaler Länge vorgesehen, welche eine überlappte Transforma­ tion zu lassen.
Ein anderes Beispiel eines Exakt-Rekonstruktionssystems weist die Zwei/Sechs (TS)-Transformation auf, welche die Z-Domänen-De­ finition hat:
Nach Substitution ist der Ausgang dann
(Z) = 2Z-3X(Z),
welches eine Exakt-Rekonstruktions-Transformation ist.
Die rationale, nicht-normierte Version der TS-Transformation weist auf:
Wenn x(0), x(1), . . . x(5) sechs Tastwerte des Signals sind, dann sind die ersten drei tiefpaß-gefilterten Koeffizienten y₀(0)= ,y₀(1), y₀(2) und der erste hochpaß-gefilterte Koeffizient y₁(0) gegeben durch
Jedoch ist die gerade Vorwärts-Implementierung der rationalen nicht-normierten Version der TS-Transformation nicht reversibel. Das folgende Beispiel zeigt, daß die Implementierung lokal nicht reversibel ist. Eine längere Folge kann als ein Beispiel für den umfassenden Fall konstruiert werden. Da
-(x(0)+x(1))+(x(4)+x(5))≠-y₀(0)+x₀(2)
wegen des Abrundens ist, ist, um y₀(0) und y₀(2) zu berechnen, diese Transformation mit Hilfe einer lokalen Information nicht reversibel.
Wenn beispielsweise x(0) = 1, x(1) = 1, x(2) = 3, x(3) = 1, x(4) = 1, x(5) =1 ist, dann gilt:
und wenn x(0) = 1, x(1) = 2, x(2) = 4, x(3) = 1, x(4) = 1, x(5) = 1 ist, dann gilt:
Da y₀(0), y₀(1), y₀(2) und y₁(0) dieselben sind für zwei ver­ schiedene Sätze von Eingangssignalen x(0) . . . .x(5), ist die Transformation nicht reversibel, da, wenn y₀(0), . . . y₁(0) gege­ ben ist, sie nicht aus dieser lokalen Information bestimmt wer­ den kann, welche der zwei Sätze eingegeben wurden. (Es kann be­ kanntlich nur nachgewiesen werden, daß die Transformation nicht reversibel ist, wenn eine umfassende Information für alle Koef­ fizienten verwendet wird).
Nunmehr wird eine reversible TS-Transformation betrachtet, wel­ che hier als RTS-Transformation bezeichnet ist, welche eine an­ dere Hochpaß-Filteroperation schafft.
Wenn x(0), x(1), x(2), x(3), x(4), x(5) sechs (6) Tastwerte des Signals sind, dann sind die ersten drei tiefpaß-gefilterten Koeffizienten y₀(0), y₀(1), y₀(2) und der erste hochpaß-gefilter­ te Koeffizient y₁(0) gegeben durch:
Da
ist, dann ist x(2)-x(3) vollständig bekannt. Mit
und x(2)-x(3) und x(2)-x(3) wie oben festgelegt ist, können x(2) und x(3) wieder gewonnen werden, da die niedrigstwertigen Bits von x(0)+x(1) und x(0)-x(1) iden­ tisch sind.
Insbesondere gilt dann
Eine Ausführungsform des Vorwärts-Filters für die RTS-Transfor­ mation ist im Anhang A dargestellt, welcher in der Programmier­ sprache "C" ausgeführt ist. Zu beachten ist, daß mathematisch die Gleichung
⅛(-1-Z-1+8Z-2-8Z-3+Z-4+Z-5)
und die Gleichung
¼(½(-1-Z-1)+4(Z-2-Z-3)+½(Z-4+Z-5))
dieselben sind, wenn sie mit einer unbegrenzten Präzisions- Arithmetik durchgeführt werden. Der Grund, weshalb die zweite Gleichung ein reversibles Filter darstellt, ist offensichtlich, wenn sie mit einer ganzzahligen Arithmetik durchgeführt worden ist. Beispiele von Hardware-Implementierungen des Tiefpaß- und des Hochpaßfilters werden in Verbindung mit Fig. 10 und 11 be­ schrieben.
Zu beachten ist, daß sowohl bei der TS- als auch bei der RTS- Transformation das Tiefpaßfilter implementiert wird, so daß der Bereich des eingegebenen Signals x(n) derselbe ist wie bei dem abgegebenen Signal y₀(n). Wenn beispielsweise das Signal ein 8 Bit-Bild ist, ist auch das Ausgangssignal des Tiefpaßfilters 8 Bit. Dies ist eine wichtige Eigenschaft für ein pyramidales Sy­ stem, bei welchem das Tiefpaßfilter nacheinander angewendet wird, da in bekannten Systemen der Bereich des abgegebenen Signals größer ist als derjenige des eingegebenen Signals, was aufeinanderfolgende Anwendungen des Filters schwierig macht. Au­ ßerdem hat das Tiefpaßfilter nur zwei Abgriffe, wodurch es zu einem nicht-überlappenden Filter wird. Diese Eigenschaft ist wichtig für die Hardware-Implementierung, wie später noch be­ schrieben wird.
In einer Ausführungsform sind bezüglich der RTS-Transformation die Tiefpaß- und Hochpaßfilter so definiert:
Folglich können die Ergebnisse von dem Tiefpaßfilter zweimal (in den ersten und dritten Termen) in dem Hochpaßfilter verwen­ det werden. Folglich müssen nur zwei weitere Informationen durchgeführt werden, um die Ergebnisse des Hochpaßfilters zu er­ reichen.
Viele überlappte reversible Filter nicht-minimaler Länge können bei der Erfindung verwendet werden. Solche Vorwärts- und inverse Darstellungen des Transformationssystems zum Filtern mit rever­ siblen Filtern nicht-überlappter minimaler Länge sind in Fig. 2B dargestellt. Beispielsweise kann die folgende Klasse Filter in der Erfindung verwendet werden. Für eine ganze Zahl Lz gilt:
und
und
Die Länge des Tiefpaßfilters ist 2L. Wenn L ungerade ist, liegt das Filter näher bei einem symmetrischen Filter. Wenn ai, b, ci und k ganze Zahlen sind, und kb ist, dann ist das Filter rever­ sibel. Wenn ai, b, ci und k Potenzen von zwei sind (oder das Ne­ gative oder Komplement einer Potenz von zwei), dann kann die Im­ plementierung des Filters vereinfacht werden. Wenn k=b (unabhän­ gig von den Werten von ai und i1) ist, dann wird der Bereich des Ausgangssignals des Hochpaßfilters y₁ minimiert. Für jedes a₁ hat dann, wenn es genau ein ci gibt, wobei ai = -ci ist, das Hochpaßfilter keine Antwort bei einem konstanten Eingang. Wenn ai=-cj ist, wenn j-(L-1)=i ist, dann kann das Filter näher bei einem symmetrischen Filter sein.
Eine weitere brauchbare Eigenschaft ist
Hiervon kommt es, daß das Hochpaßfilter kein Ansprechen auf ein sich linear änderndes Eingangssignal, wenn m=1 ist, und auch auf ein sich quadratisch änderndes Eingangssignal hat, wenn m=2 ist, usw. wobei m der momentane Zustand ist. Diese Eigenschaft ist hauptsächlich der Grund dafür, daß die RTS-Transformation eine bessere Energieverdichtung hat als die S-Transformation.
Obwohl Filter den Minimum-Beschränkungen für eine Reversibili­ tät entsprechen müssen, können verschiedene Anwendungen Filter verwendet werden, welche keinen, einigen oder allen der übrigen Eigenschaften gerecht werden. In einigen Ausführungsformen wird eines der folgenden als Beispiel angeführten Hochpaßfiltern ver­ wendet. Diese Filter sind in einer Schreibweise aufgelistet, welche gerade die ganzzahligen Koeffizienten der rationalen Ver­ sion der Filter aufführt, um eine Unklarheit bei der Erfindung zu vermeiden:
Das letzte Filter wird auf das (Zwei/Zehn- Two/Ten)TT-Filter bezeichnet, und es hat die Eigenschaft, daß es nicht auf eine kubisch ansteigende Funktion anspricht. Da 22=16+2×3 und 3=2+1 gilt, kann dieses Filter mit insgesamt sieben Additionen und Subtraktionen implementiert werden.
Die strikten Reversibilitäts-Anforderungen für Filter können durch Beachten des Folgenden gelockert werden. Hochpaß-Koeffizienten werden in irgendeiner Reihenfolge codiert und decodiert. Pixel-Werte, welche den vorher decodierten Hochpaß-Koeffizienten entsprechen, sind genau bekannt, so daß sie in einer aktuellen Hochpaß-Filterung verwendet werden können. Beispielsweise kann das folgende Filter verwendet werden, wenn eine Rasterreihenfol­ ge angewendet wird.
Das Verwenden eines einzigen, fest eingestellten Filters ist nicht erforderlich. Adaptive Filter oder mehrere Filter können verwendet werden. Die Daten, die verwendet sind, um sie an meh­ rere Filter anzupassen oder über diese auszuwählen, müssen auf Daten beschränkt werden, welche in den Decoder vor einer spe­ ziellen inversen Filteroperation verfügbar sind.
Eine Möglichkeit, mehrere Filter zu benutzen, besteht darin, die Hochpaß-Koeffizienten progressiv zu verarbeiten. Alternative Hochpaß-Filteroperationen (y₁(0), y₁(2), y₁(4) können zuerst mit einem reversiblen Filter, wie dem RTS-Hochpaßfilter, verar­ beitet werden. Die restliche Verarbeitung (y₁(1), y₁(3), y₁(5), . . . ) kann ein nicht-reversibles Filter mit bis zu sechs Abgriffen be­ nutzen, da die exakten Werte der Eingänge in dem Überlappungs­ teil des Filters bekannt sind. Beispielsweise kann eines der folgenden Filter verwendet werden:
In einigen Ausführungsformen kann das Hochpaßfilter durch eine Prädiktions-/Interpolations-Operation ersetzt werden. Ein Prä­ diktor/Interpolator kann die Differenz zwischen einem Paar Ein­ gängen voraussagen, die irgendwelche Daten verwenden, welche in dem Decoder vor der speziellen Prädiktions-/Interpolationsopera­ tion verfügbar sind. Die vorhergesagte Differenz wird von der tatsächlichen Differenz der Eingänge subtrahiert und wird abge­ geben. In einer Ausführungsform werden bekannte Prädiktionsver­ fahren, die in DPCM verwendet sind, ein progressives Codieren und ein Raumdomänen-Codieren verwendet.
Mit Hilfe der Tiefpaß- und der Hochpaßfilter der Erfindung wird eine Mehrfach-Auflösungs-Zerlegung durchgeführt. Die Anzahl an Kompositionsebenen ist variabel und kann irgendeine Anzahl sein; jedoch reicht gegenwärtig die Anzahl an Zerlegungsebenen von zwei bis fünf Ebenen.
Wenn beispielsweise die reversible Wavelet-Transformation re­ kursiv bei einem Bild angewendet wird, arbeitet die erste Zerle­ gungsebene mit dem feinsten Detail oder der feinsten Auflösung. Auf einer ersten Zerlegungsebene wird ein Bild in vier Unterbil­ der (z. B. Unterbänder) zerlegt. Jedes Unterband stellt ein Band von Ortsfrequenzen dar. Die Unterbänder der ersten Ebene sind bezeichnet mit LL₀, LH₀, HL₀ und HH₀. Der Prozeß, das ursprüng­ liche Bild zu zerlegen, schließt ein Unterabtasten (subsampling) durch zwei sowohl in horizontalen als auch in vertikalen Dimen­ sionen ein, so daß die Unterbänder LL₀, LH₀, HL₀ und HH₀ der ersten Ebene, die jeweils ein Viertel so viele Koeffizienten ha­ ben wie das eingegebene Signal, Pixels (oder Koeffizienten) des Bildes hat, wie in Fig. 3A dargestellt ist.
Ein Unterband LL₀ enthält gleichzeitig niederfrequente hori­ zontale und niederfrequente vertikale Informationen. Üblicher­ weise ist ein großer Teil der Bildenergie in diesem Unterband konzentriert. Das Unterband LH₀ enthält niederfrequente hori­ zontale und hochfrequente vertikale Information (z. B. horizonta­ le Randinformation). Das Unterband HL₀ enthält hochfrequente, horizontale und niederfrequente vertikale Information (z. B. ver­ tikale Randinformation). Das Unterband HH₀ enthält hochfrequen­ te horizontale und vertikale Information (z. B. Struktur- oder Diagonal-Rand-Information).
Jede der folgenden zweiten, dritten und vierten unteren Zerle­ gungsebenen wird dadurch erzeugt, daß das niederfrequente LL-Un­ terband der vorhergehenden Ebene zerlegt wird. Das Unterband LL₀ der ersten Ebene wird zerlegt, um Unterbänder LL₁ LH₁, HL₁ und HH1 der moderat detaillierten zweiten Ebene zu erzeugen. Ähnlich wird das Unterband LL₁ zerlegt, um grob detaillierte Unterbänder LL₂, LH₂ HL₂ und HH₂ der dritten Ebene zu erzeugen. Ebenso wird das Unterband LL₂ erzeugt, um grober detaillierte Unterbänder LL₃, LH₃, HL₃ HH₃ der dritten Ebene zu erzeugen, wie in Fig. 3D dargestellt ist. Infolge des Unterabtastens durch zwei ist jedes Unterband der zweiten Ebene ein Sechzehntel der Größe des ur­ sprünglichen Bildes. Jeder Tastwert (z. B. Bildelement) auf die­ ser Ebene stellt ein moderates Detail in dem ursprünglichen Bild an derselben Stelle dar. Ebenso ist jedes Unterband der dritten Ebene 1/64 der Größe des ursprünglichen Bildes. Jedes Bildele­ ment auf dieser Ebene entspricht einem relativ groben Detail in dem ursprünglichen Bild an derselben Stelle. Ebenso ist jedes Unterband der vierten Ebene 1/256 der Größe des ursprünglichen Bildes.
Da die zerlegten Bilder infolge des Unterabtastens kleiner als das ursprüngliche Bild sind, kann derselbe Speicher, der zum Speichern des ursprünglichen Bildes verwendet worden ist, ver­ wendet werden, um alle zerlegten Unterbänder zu speichern. Mit anderen Worten, das ursprüngliche Bild und die zerlegten Unter­ bänder LL₀ und LL₁ werden ausrangiert und nicht in einer Drei­ ebenen-Zerlegung gespeichert.
Eine Eltern-Kind-Beziehung besteht zwischen einer Unterband-Kom­ ponente, die ein grobes Detail darstellt, relativ zu einer ent­ sprechenden Unterband-Komponente in der nächsten feiner detail­ lierten Ebene.
Obwohl nur vier Unterband-Zerlegungsebenen dargestellt sind, könnten zusätzliche Ebenen entsprechend den Anforderungen eines bestimmten Systems entwickelt werden. Ebenso können mit anderen Transformationen, wie DCT oder linear mit Zwischenraum angeord­ neten Unterbändern verschiedene Eltern-Kind-Beziehungen definiert werden.
Der Prozeß einer Mehrfachauflösungs-Zerlegung kann mit Hilfe eines Filtersystems, wie demjenigen in Fig. 4A durchgeführt wer­ den. Ein eingegebenes Signal, das ein eindimensionales Signal mit einer Länge L darstellt, wird mittels Filtereinheiten 401 und 402 tiefpaß- und hochpaß-gefiltert, bevor es durch zwei über Einheiten 403 und 405 mit zwei unterabgetastet wird. Ein unter­ abgetastetes Ausgangssignal von der Einheit 403 wird durch Ein­ heit 405 und 406 tiefpaß- und hochpaßgefiltert, bevor es über Einheiten 406 bzw. 408 mit zwei unterabgetastet wird. Unterband- Komponenten L und H erscheinen an entsprechenden Ausgängen von Einheiten 407 und 408. In ähnlicher Weise wird das Ausgangs­ signal von der Einheit 405 über Einheiten 409 und 410 tiefpaß- und hochpaßgefiltert, bevor es durch Einheiten 411 bzw. 412 un­ terabgetastet wird. Unterband-Komponenten L und H erscheinen an entsprechenden Ausgängen der Einheit 411 und 412. Wie vorstehend beschrieben, sind die Filter in einer Ausführungsform der Erfin­ dung, die bei einer Unterband-Zerlegung verwendet sind, digitale Quadratur-Spiegelfilter, um die horizontalen und vertikalen Fre­ quenzbänder in nieder- und hochfrequente Bänder aufzuspalten.
Fig. 4B stellt eine zweidimensionale Transformation in zwei Ebe­ nen dar. Fig. 4C stellt eine zweidimensionale Transformation in zwei Ebenen dar, die mit Hilfe von eindimensionalen Filtern im­ plementiert ist, wie sie in Fig. 10 und 11 dargestellt sind. Die eindimensionalen Filter werden in jeder anderen Position ange­ wendet, um eine Berechnung zu vermeiden, die durch Unterabtasten unnötig wird. In einer Ausführungsform benutzen eindimensionale Filter eine Berechnung zwischen einer Tiefpaß- und Hochpaßbe­ rechnung gemeinsam.
Daher schafft die Erfindung ein System zur Kompression und De­ kompression, in welcher überlappte reversible Filter von nicht­ minimaler Länge verwendet werden. Fig. 4D ist ein Blockdiagramm einer Ausführungsform eines solchen Systems. In Fig. 4D wird an­ fangs eine hierarchische Zerlegung durchgeführt. Die Ergebnisse der hierarchischen Zerlegung werden zur Kompression an einem Kompressor abgegeben. Die durchgeführte Kompression kann eine Vektor-Quantisierung, eine Skalar-Quantisierung, ein Null-Lauf­ längen-Zählen, ein Huffman-Codieren, usw. sein. Der Ausgangswert des Kompressors verdichtet Daten, die eine verdichtete Version der ursprünglichen eingegebenen Daten darstellt. Ein Dekompres­ sor kann die Daten irgendwann (in der Zukunft) erhalten und die Daten dekomprimieren. Die Erfindung führt dann eine inverse Zer­ legung mit Hilfe von überlappten reversiblen Filtern von nicht­ minimaler Länge durch, um eine rekonstruierte Version der ur­ sprünglichen Daten zu erzeugen.
Die reversiblen Wavelet-Filter der Erfindung können auch bei­ spielsweise in Analyse-Vergrößerungssystemen verwendet werden, wie in Fig. 4E dargestellt ist. In Fig. 4E wird eine hierarchische Zerlegung an eingegebenen Daten mit Hilfe von überdeckten rever­ siblen Wavelet-Filtern von nicht-minimaler Länge durchgeführt. Die Analyseeinheit erhält die von den Filtern erzeugten Koeffi­ zienten und klassifiziert sie in Entscheidungen, z. B. nicht vollständig Codieren der Koeffizienten nur relevante Information wird extrahiert. Beispielsweise können in einem Dokumenten-Ar­ chiviersystem leere Seiten mit Hilfe nur des gröbsten Tiefpaß- Unterbands erkannt werden. Bei einem anderen Beispiel würde nur Hochpaß-Information von einem ganz bestimmten Unterband verwen­ det werden, um zwischen Textbild und Bildern natürlicher Szenen zu unterscheiden. Die hierarchische Zerlegung kann zum Regi­ strieren von Mehrfachbildern verwendet werden, so daß eine grobe Registrierung zuerst mit Hilfe von groben Unterbändern gegeben ist. In einer anderen Ausführungsform werden die Koeffizienten einer Vergrößerung oder Filterung unterzogen, auf die eine in­ verse Zerlegung folgt. Ein scharfes Abgrenzen, Rand-Vergrößerun­ gen, eine Rauschkontrolle, usw. können mit Hilfe einer hierar­ chischen Zerlegung durchgeführt werden. Folglich schafft die Er­ findung eine Wavelet-Transformation für ein Verwenden in gemein­ samen Zeit/Raum- und Frequenz-Domänen Analyse- und Filter-/Ver­ größerungssystemen.
Eingebettete Bit-Signifikanz-Codierung
In der Erfindung werden die Koeffizienten, die als Ergebnis der Wavelet-Zerlegung erzeugt worden sind, entropie-codiert. In der Erfindung werden die Koeffizienten anfangs einem eingebetteten Codieren unterzogen, bei welchem die Koeffizienten in einer vi­ suell signifikanten Reihenfolge geordnet oder, allgemeiner aus­ gedrückt, bezüglich einer gewissen Fehlermetrik (z. B. einer Ver­ zerrungsmetrik) geordnet werden. Fehler- oder Verzerrungsmetri­ ken enthalten Peak-Fehler und einen mittleren quadratischen Feh­ ler (MSE). Zusätzlich kann ein Ordnen durchgeführt werden, um Präferenz einer Bit-Signifikanz-Raumstelle, Relevanz für ein Da­ tenbasis-Fragen (data base querring) und eine Richtung (verti­ kal, horizontal, diagonal, usw.) zu geben. Die Erfindung benutzt mehrere eingebettete Codier-Techniken, wobei ein Teil der Koef­ fizienten auf einer Signifikanz-Ebene mit einer Codiertechnik codiert wird, während die restlichen Koeffizienten mit anderen Techniken codiert werden. In der Erfindung sind ein auf Frequenz basierendes Modellieren und ein gemeinsames bzw. Verbund- Raum/Frequenz-Modellieren zwei verschiedene eingebettete Codier­ systeme, die verwendet werden, um die Koeffizienten zu codieren, die durch die Wavelet-Transformation der Erfindung erzeugt wor­ den sind. Das auf Frequenz basierende Modellieren schließt ein Voraussagen einer Anzahl Koeffizienten auf einer höheren Fre­ quenz ein, wenn ein Koeffizient auf einer niedrigeren Frequenz codiert wird. Das gemeinsame Raum/Frequenz-Modellieren hat den Vorteil sowohl der bekannten Frequenzbänder als auch der benach­ barten Pixel (oder Daten). Eine Ausführungsform des gemeinsamen Raum/Frequenz-Modellierens wird hier als Horizont-Modellieren bezeichnet.
Die Daten werden anfangs in ein Vorzeichen-Größen-Format forma­ tiert, auf welches Daten folgen, die basierend auf einer Signi­ fikanz zu sortieren sind. Nachdem die Daten bezüglich der vorge­ gebenen Signifikanz-Metrik sortiert sind, werden die Daten co­ diert. Sowohl das auf der Frequenz basierende Codieren als auch das Horizont-Codieren kann auf einem Bit-Signifikanz-Ordnen ba­ sieren. Aber es können auch verschiedene Verfahren zum Codieren der Ereignisse verwendet werden.
Wenn ein digitales Signal x(n) für jedes x(n) mit R-Präzisions­ bits dargestellt wird, dann codiert das eingegebettete Codieren der Erfindung das höchstwertige Bit (oder Bits) für jedes x(n) des Signals, dann das nächste signifikante Bit (oder Bits) usw. Beispielsweise kann im Falle einer visuellen definierten Anord­ nung ein Bild, welches eine bessere Qualität in der Mitte also entlang der Ecken oder nahe der Ränder erfordert (wie einige me­ dizinische Bilder), einem Codieren unterworfen werden, so daß die niederwertigen Bits der zentralen Pixel vor den höherwertigen Bits der Randpixel codiert werden können.
Für ein eingebettetes System, das auf einer Bit-Signifikanz- Verzerrungs(Verzeichnungs-)maßnahme beruht, werden binäre Werte der Daten nach der Größe geordnet. Wenn die Werte nicht-negative ganze Zahlen sind, wie es bezüglich der Intensität von Pixels vorkommt, ist die Reihenfolge, die angewendet werden kann, die Bitebenen-Reihenfolge, (beispielsweise von der höchstwertigen zu der niedrigstwertigen Bitebene). In Ausführungsformen, in wel­ chen auch negative Zweierkompliment-Ganzzahlen zugelassen sind, ist die eingebettete Reihenfolge des Vorzeichenbits dasselbe wie das erste Nicht-Null-Bit des Absolutwerts der ganzen Zahl. Daher wird das Vorzeichenbit nicht beachtet, bis ein Nicht-Null-Bit codiert wird. Folglich sind die möglichen Werte für ein Ereignis in dem eingebetteten Signifikanz-System der Erfindung dreifach, bevor das Vorzeichenbit codiert wird. Die dreifachen Ereignisse sind "nicht-signifikant", "positiv-signifikant" und "negativ­ signifikant". Beispielsweise ist mit Hilfe einer Vorzeichengrö­ ßen-Schreibweise die 16 Bit-Zahl - 7:
1000000000000111.
Auf einer Bitebenen-Basis sind die ersten zwölf Entscheidungen "nicht-signifikant". Das erste 1 Bit kommt bei der dreizehnten Entscheidung vor, die "negativ-signifikant" ist. Nachdem das Vorzeichenbit codiert ist, werden die möglichen Ereignisse auf binäre reduziert, d. h. 0,1. Die 14-ten und 15-ten-Ereignisse sind beide "1".
In einer Ausführungsform der Erfindung wird eine Liste verwen­ det, um eine Spur der Koeffizienten zu erhalten. In einer Aus­ führungsform unterscheidet ein Einbit Flag, das als das Gruppen- Flag bezeichnet wird, das jedem Koeffizienten zugeordnet ist, Koeffizienten, deren Vorzeichenbit noch nicht codiert worden ist, von den Koeffizienten mit dem bereits codierten Vorzeichen­ bit. In einer anderen Ausführungsform können zwei oder mehr Li­ sten statt eines Flag-Bits verwendet werden. In anderen Ausfüh­ rungsformen wird eine einzige Liste ohne ein Flag verwendet.
In einer weiteren Ausführungsform werden Listen überhaupt nicht verwendet. Alle Entscheidungen für einen Koeffizienten werden erzeugt und durch Signifikanz kenntlich gemacht, bevor irgend­ welche Entscheidungen für den nächsten Koeffizienten erzeugt werden. Hierdurch entfällt die Notwendigkeit, alle Koeffizienten in Listen zu speichern.
Codier- und Decodierprozeß der Erfindung
Die folgenden Flußdiagramme in Fig. 25a bis 30b sind Ausfüh­ rungsformen der Codier- und Decodierprozesse der Erfindung. Fig. 25a und 25b sind ein Flußdiagramm, das den Coder-Transforma­ tions- und Modellierprozeß der Erfindung erläutert. In Fig. 25a und 25 beginnt der Coder-Transformations- und Modellierprozeß mit Gewinnen von eingegebenen Daten (Verarbeitungsblock 2501). Nach Gewinnen von eingegebenen Daten verwendet die Erfindung ein reversibles Wavelet-Filter (Verarbeitungsblock 2502).
Als nächstes wird durch eine Untersuchung bestimmt, ob eine weitere Zerlegungsebene gewünscht wird (Verarbeitungsblock 2503). Wenn eine weitere Zerlegungsebene gewünscht wird, wird die Verarbeitung beim Verarbeitungsblock 2504 fortgesetzt, in welchem an das reversible Filter die LL-Koeffizienten angelegt werden, die sich aus der unmittelbar vorhergehenden Zerlegung ergeben, und die Verarbeitung geht zurück auf den Verarbeitungs­ block 2503. Auf diese Weise ermöglicht die Erfindung, eine An­ zahl Zerlegungsebenen durchzuführen.
Wenn eine weitere Zerlegungsebene nicht gewünscht wird, geht die Verarbeitung auf Verarbeitungsblock 2506 über, in welchem das Gruppen-Flag für jeden Koeffizienten in der A-Gruppe initia­ lisiert wird. Nach einem Initialisieren des Gruppen-Flags wird die Bitebene für den A-Durchgang SA auf die höchstwertige Bite­ bene (max) gesetzt (Verarbeitungsblock 2507). Als nächstes wird die Bitebene für den B-Durchgang SB auf die nächst höchstwertige Bitebene (max-1) gesetzt (Verarbeitungsblick 2508).
Dann wird bei einer Untersuchung bestimmt, ob die Bitebene für den A-Durchgang SA mit einem auf Frequenz basierenden Modell zu codieren ist (Verarbeitungsblock 2509). Wenn die Bitebene SA zu dem auf Frequenz basierenden Modell zu codieren ist, wird die Verarbeitung beim Verarbeitungsblock 2510 fortgesetzt, wobei je­ der Koeffizient mit dem auf Frequenz basierenden Modell und dem Entropie-Code modelliert wird. Wenn andererseits die Bitebene SA nicht mit dem auf Frequenz basierenden Modell zu codieren ist, wird die Verarbeitung beim Verarbeitungsblock 2511 fortgesetzt, in welchem jeder Koeffizient mit einem gemeinsamen Raum/Fre­ quenz-Modell und Entropie-Code modelliert wird.
Auf jeden Fall wird die Verarbeitung danach beim Verarbeitungs­ block 2512 fortgesetzt, in welchem durch eine Untersuchung be­ stimmt wird, ob die Bitebene SA größer oder gleich null ist, wo­ durch angezeigt wird, ob sie die letzte Bitebene ist. Wenn die Bitebene SA größer oder gleich null ist, geht die Verarbeitungs­ schleife auf den Verarbeitungsblock 2509 zurück. Wenn dagegen die Bitebene SA nicht größer oder gleich null ist, geht die Ver­ arbeitung beim Verarbeitungsblock 2513 weiter, bei welchem durch eine Untersuchung bestimmt wird, ob die Bitebene SB größer oder gleich null ist, so daß der Prozeß festlegt, ob die Bitebene die letzte Bitebene ist, um einen B-Durchlauf vorzunehmen. Wenn die Bitebene SB größer oder gleich null ist, wird die Verarbeitung beim Verarbeitungsblock 2509 fortgesetzt. Wenn jedoch die Bite­ bene SB nicht größer oder gleich null ist, wird die Verarbeitung beim Verarbeitungsblock 2514 fortgesetzt, wobei codierte Daten entweder auf einem Kanal gesendet oder in einem Speicher gespei­ chert werden. Nach einem Speichern oder Senden der codierten Da­ ten, endet der Coder-Transformations- und Modellierprozeß der Erfindung.
Fig. 26a und 26b stellen ein Coder-Transformations- und Model­ lier-Prozeß der Erfindung dar. In Fig. 26a beginnt der Decoder- Transformations- und Modellierprozeß der Erfindung durch Wieder­ auffinden codierter Daten (Verarbeitungsblock 2601). Die codier­ ten Daten können von einem Kanal aus oder von einem Speicher oder einem anderen Übertragungssystem empfangen werden. Nach Wiederauffinden der codierten Daten, wird ein Gruppen-Flag für jeden Koeffizienten in der A-Gruppe initialisiert (Verarbei­ tungsblock 2601). Nach dieser Initialisierung wird die Bitebene für den A-Durchgang SA auf die höchstwertige Bitebene (max) (Verarbeitungsblock 2603) gesetzt, und die Bitebene für den B- Durchgang SB wird auf die nächste Bitebene nach der höchstwerti­ gen (max-1) (Verarbeitungsblock 2604) gesetzt. Dann wird der Wert jedes Koeffizienten auf einen Anfangswert null gesetzt (Verarbeitungsblock 2605).
Nach Initialisieren des Wertes jedes Koeffizienten auf null, wird durch eine Untersuchung bestimmt, ob die Bitebene SA somit einem auf Frequenz basierenden Modell zu decodieren ist oder nicht (Verarbeitungsblock 2606). Wenn die Bitebene SA mit einem auf Frequenz basierenden Modell zu decodieren ist, geht die Ver­ arbeitung beim Verarbeitungsblock 2607 weiter, in welchem jeder Koeffizient mit einem auf Frequenz basierenden Modell und einem Entropie-Code modelliert wird. Wenn die Bitebene SA nicht mit einem auf Frequenz basierenden Modell zu modellieren ist, geht die Verarbeitung beim Verarbeitungsblock 2608 weiter, in welchem jeder Koeffizient mit einem gemeinsamen Raum/Frequenz-Modell und einem Entropie-Decodieren modelliert wird.
Nachdem jeder Koeffizient modelliert ist, geht die Verarbeitung beim Verarbeitungsblock 2609 weiter, in welchem die Bitebene SA festlegt, wenn es die letzte Ebene ist, indem geprüft wird, ob sie größer oder gleich null ist. Wenn die Bitebene SA größer oder gleich null ist, wird die Verarbeitung beim Verarbeitungs­ block 2606 fortgesetzt. Wenn dagegen die Bitebene SA nicht grö­ ßer oder gleich null ist, wird durch einen Test bestimmt, ob die B-Durchgang-Bitebene SB größer oder gleich null ist (Verarbei­ tungsblock 2610), wodurch angezeigt wird, daß es die letzte Bit­ ebene für den B-Durchgang ist. Wenn dem so ist, wird die Verar­ beitung beim Verarbeitungsblock 2606 für ein weiteres Decodieren fortgesetzt. Wenn dagegen die Bitebene für den B-Durchgang SB nicht größer oder gleich null ist, wird ein inverses reversibles Filter bei den Koeffizienten für die gröbste Zerlegungsebene an­ gewendet (Verarbeitungsblock 2611). Dann wird durch einen Test bestimmt, ob alle Ebenen invers gefiltert worden sind (Verarbei­ tungsblick 2612). Wenn dem nicht so ist, wird das inverse rever­ sible Filter wieder an den Koeffizienten auf der gröbsten ver­ bleibenden Zerlegungsebene angelegt (Verarbeitungsblock 2613). Danach wird mit der Verarbeitung auf den Verarbeitungsblock 2612 zurückgegangen, um noch einmal zu testen, ob alle Ebenen invers gefiltert worden sind.
Sobald alle Ebenen invers gefiltert worden sind, wird die Ver­ arbeitung beim Verarbeitungsblock 2612 fortgesetzt, in welchem es zu einem Speichern oder einer Übertragung von rekonstruierten Daten kommt.
Fig. 27a und 27b veranschaulichen eine Ausführungsform des Pro­ zesses zum Modellieren jedes Koeffizienten. Der dargestellte Prozeß veranschaulicht den Modellierprozeß entweder für auf Fre­ quenz basierendes oder JSF-Modellieren und ein Codieren oder De­ codieren. Das heißt, jeder der vier Blöcke (2507, 2508, 2607, 2608) können mit dem Modellierprozeß der Fig. 28a und 28b imple­ mentiert werden. In Fig. 27 beginnt ein Anfangsprozeß durch Ini­ tialisieren einer Untersuchung, ob das Modellieren in einem Durchgang durchzuführen ist (Verarbeitungsblock 2701).
Wenn das Modellieren nicht in einem Durchgang durchzuführen ist, wird durch eine Untersuchung bestimmt, ob die Bitebene SA größer als die Bitebene SB ist (Verarbeitungsblock 2702). Wenn dies nicht ist, dann geht der Prozeß auf den Verarbeitungsblock 2703 über, in welchem ein Flag (do_A_flag) gelöscht wird, um an­ zuzeigen, daß ein A-Durchgang nicht durchzuführen ist. Wenn die Bitebene SA größer als die Bitebene SB ist, dann wird die Ver­ arbeitung beim Verarbeitungsblock 2704 fortgesetzt, wobei das Flag (do_A_flag) gesetzt wird, um anzuzeigen, daß ein A-Durch­ gang durchzuführen ist.
Entweder nach dem Verarbeitungsblock 2703 oder 2704 wird eine Verarbeitung beim Verarbeitungsblock 2705 fortgesetzt, bei wel­ chem durch eine Untersuchung bestimmt wird, ob die Bitebene SB gleich der Bitebene SA ist. Wenn Bitebenen nicht gleich sind, wird bei der Erfindung ein Flag (do_B_flag) gelöscht, um zu verhindern, daß ein B-Durchgang vorkommt (Verarbeitungsblick 2705), und die Verarbeitung wird danach beim Block 2707 fortge­ setzt. Wenn die Bitebene SB gleich der Bitebene SA ist, wird das do_B_flag Flag gesetzt, um anzuzeigen, daß ein B-Durchgang durchzuführen ist (Block 2706), und die Verarbeitung wird danach beim Block 2707 fortgesetzt.
Beim Block 2707 wird durch eine Untersuchung bestimmt, ob das A-Durchgangsflag gesetzt wird, und das Null- bzw. Nichtbaum-Mo­ dellieren durchzuführen ist. Wenn das Flag anzeigt, daß ein A- Durchgang vorkommt und ein Nullbaum-Modellieren durchzuführen ist, wird ein "bestimmtes/unbestimmtes"-Flag bei dem "unbestimm­ ten Zustand für jeden Koeffizienten initialisiert (Block 2708) und die Verarbeitung geht beim Block 2709 weiter. Wenn dagegen entweder das A-Durchgang-Anzeigeflag oder die Nullbaum-Model­ lieranzeige nicht gesetzt wird, geht die Verarbeitung direkt beim Block 2709 weiter. Im Block 2709 wird der erste Koeffizient auf die Veränderliche C gesetzt.
Sobald der erste Koeffizient auf die Veränderliche C gesetzt ist, wird durch eine Untersuchung bestimmt, ob das B-Durchgang- Anzeigeflag gesetzt ist (Verarbeitungsblock 2719). Wenn das B- Durchgang-Anzeigeflag (do_B_flag) gesetzt ist, wird bei der Er­ findung ein B-Durchgang beim Koeffizienten C durchgeführt (Block 1710) und die Verarbeitung wird beim Block 2711 fortgesetzt. Wenn dagegen das B-Durchgang-Flag nicht gesetzt ist, dann wird ein B-Durchgang nicht bei C durchgeführt und die Verarbeitung wird direkt beim Block 2711 fortgesetzt.
Dann wird bei einer Untersuchung bestimmt, ob das A-Durchgang Anzeigeflag (do_A_flag) gesetzt ist (Block 2711). Wenn dieses Flag gesetzt ist, dann wird ein A-Durchgang beim Koeffizienten C durchgeführt (Block 2717). Danach wird die Verarbeitung beim Block 2713 fortgesetzt. Wenn das A-Durchgang-Anzeigeflag nicht gesetzt ist, geht die Verarbeitung beim Block 2713 weiter, ohne einen A-Durchgang beim Koeffizienten C durchzuführen.
Beim Block 2713 wird durch eine Untersuchung bestimmt, ob der Koeffizient C der letzte Koeffizient ist. Wenn der Koeffizient nicht der letzte Koeffizient ist, wird die Verarbeitung beim Block 1714 fortgesetzt, wobei der nächste Koeffizient der Verän­ derlichen C zugeordnet wird, und die Verarbeitung beim Block 2719 Weitergeht. Wenn jedoch der Koeffizient C der letzte Koef­ fizient ist, wird die Verarbeitung beim Block 2715 fortgesetzt, wobei eine Untersuchung festlegt, ob das B-Durchgangsflag (do _B_flag) gesetzt ist. Wenn dieses Flag gesetzt ist, wird die Bitebene SB gleich der Bitebene SB-1 gesetzt (Block 2716) und die Verarbeitung geht beim Block 2717 weiter. Wenn das B-Durch­ gang-Anzeigeflag nicht gesetzt ist, geht die Verarbeitung beim Block 2717 weiter. Im Block 2717 wird durch eine Untersuchung bestimmt, ob das A-Durchgangsflag gesetzt ist. Wenn es gesetzt ist, dann wird die Bitebene SA gleich der Bitebene SA-1 gesetzt (Block 2718), und die Verarbeitung endet. Ebenso endet, wenn das A-Durchgangsflag nicht gesetzt ist, die Verarbeitung unmittel­ bar.
In einigen Ausführungsformen kann, ob ein Koeffizient in einer ganz bestimmten Bitebene in der A- oder B-Gruppe ist, ohne Ver­ wenden eines Flag-Bits bestimmt werden. Hierdurch wird ein Spei­ cherbit pro Koeffizient gespart, was bei großen Bildern von Be­ deutung ist. Statt dessen wird eine Maske mit Hilfe einer UND- Logik mit einem Koeffizienten verglichen. Wenn das Ergebnis der UND-Logik null ist, dann ist das Bit in der A-Gruppe; andern­ falls ist es in der B-Gruppe. Ein Beispiel dieser Masken ist in Tabelle 7 für 8 Bitebenen dargestellt. Diese Masken sind das Zweierkomplement von 2(Bitebene+1) (ohne das Vorzeichenbit).
Tabelle 7 - Masken
Da unabhängige Masken dem A- bzw. dem B-Durchgang zugeordnet werden können (was hiermit mit MA und MB bezeichnet ist), können soviele A-Durchgänge erforderlichenfalls vor dem entsprechenden B-Durchgang durchgeführt werden. In einer Ausführungsform mit 17 Bitebenen werden drei A-Durchgänge durchgeführt; dann werden gleichzeitig 14 A- und B-Durchgänge und schließlich zwei B- Durchänge durchgeführt. Da A-Durchgangsentscheidungen üblicher­ weise wirksamer als B-Durchgang-Entscheidungen codiert werden können, kann ein Durchführen von mehreren A-Durchgängen anfangs eine Qualität für eine verlustbehaftete Kompression verbessern.
Fig. 28a und 28b stellen eine Ausführungsform des Codierers der Erfindung dar, welcher einen verkleinerten Flag-Speicher be­ nutzt, (wie später noch in der detaillierten Beschreibung ausge­ führt wird). In Fig. 28a beginnt der Coder-Transformations- und Modellierprozeß durch Erwerben eingegebener Daten (Block 2801). Danach wird bei der Erfindung ein reversibles Wavelet-Filter verwendet (Block 2802). Als nächstes wird bei einer Untersuchung bestimmt, ob eine andere Zerlegungsebene gewünscht wird (Block 2803).
Wenn dies gewünscht wird, geht die Verarbeitung beim Block 2804 weiter, bei welchem an das reversible Filter die LL-Koeffizien­ ten angelegt werden, welche sich aus der unmittelbar vorherge­ henden Kompression ergaben, und mit der Verarbeitung wird auf Block 2803 zurückgegangen. Auf diese Weise kann bei der Erfin­ dung eine Anzahl Zerlegungsebenen durchgeführt werden. Wenn eine andere Zerlegungsebene nicht gewünscht wird, geht die Verarbei­ tung beim Block 2805 weiter, wobei die Bitebene für den A-Durch­ gang SA auf die höchstwertige Bitebene (max) gesetzt wird. Als nächstes wird die Bitebene für den B-Durchgang SB auf die dem höchstwertigen Bit nächstkommende Bitebene (max-1) gesetzt (Block 2806).
Als nächstes wird die Maske MA auf gesetzt. (Block 2807). Die Maske MB wird gesetzt (Block 2808). Dann wird durch eine Untersuchung bestimmt, ob die Bitebene für den A-Durchgang SA mit einem auf Frequenz basierenden Modell codiert wird (Block 2808). Wenn die Bitebene SA in dem auf Frequenz ba­ sierenden Modell zu codieren ist, wird mit der Verarbeitung beim Block 2809 fortgefahren, wo ein Bit jedes Koeffizienten mit dem auf Frequenz basierenden Modell und einem Entropie-Code model­ liert wird. Wenn andererseits die Bitebene SA nicht mit dem auf Frequenz basierenden Modell zu codieren ist, wird beim Block 2810 fortgefahren, wobei ein Bit jedes Koeffizienten mit einem gemeinsamen Raum/Frequenz-Modell und einem Entropie-Code model­ liert wird.
Auf jeden Fall wird die Verarbeitung beim Block 2811 fortge­ setzt, wo durch eine Untersuchung bestimmt wird, ob die Bitebene SA größer oder gleich null ist, wodurch angezeigt wird, ob es die letzte Bitebene ist. Wenn die Bitebene SA größer oder gleich null ist, wird mit der Verarbeitungsschleife auf Block 2808 zu­ rückgegangen. Wenn dagegen die Bitebene SA nicht größer oder gleich null ist, wird beim Block 2812 fortgefahren, wobei durch eine Untersuchung bestimmt wird, ob die Bitebene SB größer oder gleich null ist, so daß der Prozeß festlegt, wenn die Bitebene die letzte Bitebene ist, um einen Bit-Durchgang vorzunehmen. Wenn die Bitebene SB größer oder gleich null ist, wird beim Block 2808 fortgefahren. Wenn dagegen die Bitebene SB nicht grö­ ßer oder gleich null ist, wird beim Block 2813 fortgefahren, in welchem codierte Daten entweder auf einem Kanal gesendet oder in einem Speicher gespeichert werden. Nach einem Speichern oder Senden der codierten Daten endet der Coder-Transformations- und Modellierprozeß der Erfindung.
Fig. 29a und 29b veranschaulichen eine alternative Ausführungs­ form des Decoder-Transformations- und Modellierprozesses der Er­ findung, wobei ein verkleinerter Flag-Speicher verwendet wird. In Fig. 29A beginnt der Decoder-Transformations- und Modellier­ prozeß der Erfindung durch ein Wiederauffinden codierter Daten (Block 2901). Die codierten Daten können von einem Kanal oder einem Speicher oder einem anderen Übertragungssystem erhalten werden. Sobald die Codedaten empfangen sind, wird die Bitebene für den A-Durchgang SA auf die höchstwertige Bitebene (max) (Block 2903) gesetzt, und die Bitebene für den B-Durchgang SB wird auf die der höchstwertigen Ebene am nächsten kommende Bite­ bene (max-1) gesetzt (Block 2904). Nach einem Initialisieren des Wertes für jeden Koeffizienten auf null wird der Wert jedes Koeffizienten auf einen Anfangswert null gesetzt (Block 2905). Dann wird die Maske MB auf gesetzt (Block 2902), und die Maske MA wird auf gesetzt (Block 2915).
Dann wird durch eine Untersuchung bestimmt, ob die Bitebene SA mit einem auf Frequenz basierenden Modell zu decodieren ist oder nicht (Block 2906). Wenn die Bitebene SA mit einem solchen Mo­ dell zu decodieren ist, wird beim Block 2907 fortgefahren, in welchem ein Bit jedes Koeffizienten mit einem auf Frequenz ba­ sierenden Modell und einem Entropie-Decodieren modelliert wird. Wenn die Bitebene SA nicht mit einem auf Frequenz basierenden Modell zu decodieren ist, wird beim Block 2908 fortgefahren, wo­ bei ein Bit jedes Koeffizienten mit einem gemeinsamen Rau.
Nachdem jeder Koeffizient modelliert ist, wird beim Block 2909 fortgefahren, in welchem die Bitebene SA festlegt, ob sie die letzte Bitebene ist, indem geprüft wird, ob sie größer oder gleich null ist. Wenn die Bitebene SA größer oder gleich null ist, wird beim Block 2906 fortgefahren. Wenn dagegen die Bitebe­ ne SA nicht größer oder gleich null ist, dann wird bestimmt, ob die B-Durchgangs-Bitebene SB größer oder gleich null ist (Block 2910), um dadurch anzuzeigen, daß es die letzte Bitebene für einen B-Durchgang ist. Wenn dem so ist, wird mit der Verarbei­ tung beim Block 2902 für ein weiteres Decodieren fortgefahren Wenn dagegen die Bitebene für den B-Durchgang SB nicht größer oder gleich null ist, wird ein inverses reversibles Filter bei den Koeffizienten für die gröbste Zerlegungsebene angewendet (Block 2911). Dann wird bestimmt, ob alle Ebenen invers gefiltert worden sind (Block 2912) und wenn dem nicht so ist, wird das in­ verse, reversible Filter wieder an den Koeffizienten auf der gröbsten verbleibenden Zerlegungsebene verwendet (Block 2913). Danach wird mit der Verarbeitung auf Block 2912 zurückgegangen, in welcher wieder einmal bestimmt wird, ob alle Ebenen invers gefiltert sind. Sobald alle Ebenen invers gefiltert sind, wird mit der Verarbeitung beim Block 2912 fortgefahren, bis zu einem Speichern oder einer Übertragung von rekonstruierten Daten.
Fig. 30 und Fig. 30b veranschaulichen eine Ausführungsform des Prozesses zum Modellieren jedes Koeffizienten. Ähnlich wie in Fig. 27a und 27b kann der Prozeß der Fig. 30a und 30b verwendet werden, um die Modellierschritte in Fig. 28a bis 29b zu implemen­ tieren. In Fig. 30a beginnt ein Initialisierprozeß dadurch, daß zuerst geprüft wird, ob ein A-Durchgang gewünscht wird, und ob SA größer oder gleich 0 ist (Block 3001). Wenn dem so ist, wird das Flag (do_A_flag), da anzeigt, daß ein A-Durchgang durchzu­ führen ist, gesetzt (Block 3004) und es wird beim Block 3002 fortgefahren. Anderenfalls wird das Flag (do_A_flag) gelöscht (Block 3003).
Wenn die Bitebene SA größer als die Bitebene SB ist, dann wird beim Block 3004 fortgefahren, wobei ein Flag gesetzt wird, um anzuzeigen, daß ein A-Durchgang vorgekommen ist. Wenn die Bit­ ebene SA nicht größer als die Bitebene SB ist, dann wird beim Block 3003 fortgefahren, in welchem das Flag, das einen A-Durch­ gang anzeigt, angenommen wird, um es zu löschen. Nach jedem der Blöcke 3003 oder 3004 wird die Verarbeitung von Block 3002 fort­ gesetzt, wobei bestimmt wird, ob die Bitebene SB größer oder gleich der Bitebene SA ist, und wenn ein B-Durchgang gewünscht wird. Wenn die Bitebenen nicht gleich sind, wird bei der Erfin­ dung ein Flag (do_B_flag) gesetzt, um zu verhindern, daß ein B- Durchgang vorkommt (Block 3005) und die Verarbeitung geht beim Block 3007 weiter. Wenn die Bitebene SB gleich der Bitebene SA ist, wird das (do_B_flag) gesetzt, um anzuzeigen, daß ein B- Durchgang durchgeführt ist (Block 3006), und danach wird mit der Verarbeitung beim Block 3007 fortgefahren.
Block 3007 wird bestimmt, ob das A-Durchgangsflag gesetzt und das Nullbaum-Modellieren durchzuführen ist. Wenn das Flag anzeigt, daß ein A-Durchgang vorgekommen ist und ein Null­ baum-Modellieren durchzuführen ist, wird ein "bestimmtes/unbe­ stimmtes" Flag in dem "unbestimmten" Zustand für jeden Koeffi­ zienten initialisiert, welcher Kinder hat (Block 3008), und es wird beim Block 3009 fortgefahren. Wenn dagegen entweder das A- Durchgang-Anzeigeflag oder die Nullbaum-Modellieranzeige nicht gesetzt sind, wird direkt beim Block 3009 mit der Verarbeitung fortgefahren. Im Block 3009 wird der erste Koeffizient auf die Veränderliche C gesetzt.
Sobald der erste Koeffizient der Veränderlichen C zugeordnet worden ist, wird bestimmt, ob das B-Durchgangs-Anzeigeflag ge­ setzt ist (Block 3019). Wenn das B-Durchgangs-Anzeigeflag (do­ _B_flag) gesetzt ist, wird bei der Erfindung ein B-Durchgang beim Koeffizienten C durchgeführt (Block 3010) und die Verarbei­ tung wird beim Block 3011 fortgesetzt. Wenn dagegen das B-Durch­ gangs-Flag nicht gesetzt ist, dann wird ein B-Durchgang bei der Veränderlichen C nicht durchgeführt, und die Verarbeitung wird direkt beim Block 3011 fortgesetzt.
Dann wird bestimmt, ob der A-Durchgangs-Anzeigeflag gesetzt worden ist (Block 3011). Wenn dieses Flag gesetzt worden ist, dann wird ein A-Durchgang beim Koeffizienten durchgeführt (Block 3017). Danach wird beim Block 3013 fortgefahren. Wenn das A- Durchgangs-Anzeigeflag gesetzt ist, wird beim Block 3013 fortge­ fahren, ohne einen A-Durchgang beim Koeffizienten C durchzufüh­ ren. Beim Block 3013 wird bestimmt, ob der Koeffizient C der letzte Koeffizient ist.
Wenn der Koeffizient C nicht der letzte ist, wird beim Block 3013 fortgefahren, wobei der nächste Koeffizient der Veränderli­ chen C durchgeführt wird, und die Verarbeitung beim Block 3019 fortgesetzt wird. Wenn jedoch der Koeffizient der letzte Koeffi­ zient ist, wird beim Block 3015 fortgefahren, wobei bestimmt wird, ob das B-Durchgangsflag (do_B_flag) gesetzt wird. Wenn das B-Durchgangsflag gesetzt ist, wird die Bitebene SB gleich der Bitebene SB-1 gesetzt (Block 3016) und es wird beim Block 3017 fortgefahren. Wenn das B-Durchgangs-Anzeigeflag nicht gesetzt wird, wird mit der Verarbeitung beim Block 3017 fortgefahren. Beim Block 3017 wird bestimmt, ob das A-Durchgangsflag gesetzt ist. Wenn es gesetzt ist, wird die Bitebene SA gleich der Bit­ ebene SA-1 gesetzt (Block 3018) und die Verarbeitung beendet. Wenn das A-Durchgangsflag nicht gesetzt ist, wird die Verarbei­ tung ebenfalls unmittelbar beendet.
Koeffizienten-Bäume
In einem pyramidalen System können die Koeffizienten in Sätzen gruppiert werden, wobei eine Baumstruktur verwendet wird. Die Wurzel jedes Baumes ist ein rein tiefpaß-gefilterter Koeffi­ zient. Fig. 5 veranschaulicht die Baumstruktur eines rein tief­ paß-gefilterten Koeffizienten des transformierten Bildes. Für ein zweidimensionales Signal, wie ein Bild, hat die Wurzel des Baums drei "Kinder" und der Rest der Verzweigungspunkte haben jeweils vier Kinder. Der Baum begrenzt hierarchisch nicht die zweidimensionalen Signale. Beispielsweise hat für ein eindimen­ sionales Signal eine Wurzel ein Kind und nicht mit Wurzel verse­ hene Verzweigungspunkte haben jeweils zwei Kinder. Höhere Dimen­ sionen erfolgen von den ein- und zweidimensionalen Fällen aus.
Die Baumstruktur ist auch aus der Arbeitsweise der in Fig. 4A bis 4C dargestellten Filter ersichtlich. Die Arbeitsweise der Filterpaare mit einem Unterabtasten bewirkt, daß die vorher be­ schriebenen Koeffizienten in Beziehung gesetzt werden.
Nachdem in der Erfindung die Koeffizienten in ein Vorzeichen- Größen-Format gebracht worden sind, bestimmt ein Kontext-Modell, welches der verschiedenen Codierverfahren zu verwenden ist, um die Koeffizienten weiter zu codieren. Ein auf Frequenz basieren­ des Codierschema, wie ein Nullbaum-Codieren, codiert wirksam die Signifikanzdaten, die einer vorgegebenen Unterband-Zerlegung für einen spezifizierten Schwellenwert zugeordnet sind. Zusätzlich zum Verwenden von Symbolen, welche die Signifikanz oder Insigni­ fikanz eines einzelnen isolierten Koeffizienten in der zugeord­ neten Unterband-Zerlegung anzeigen, werden die Eingänge von In­ signifikanteneltern für alle Insignifikant-Kinder (mit Größen kleiner oder gleich dem vorgegebenen Schwellenwert) zusammen­ gruppiert und gemeinsam codiert. Diese Bäume werden manchmal auch als Nullbäume bezeichnet. Diese insignifikanten Bäume wer­ den mit einem einzigen dedizierten Symbol codiert, was manchmal als eine Nullbaum-Wurzel bezeichnet wird. Wenn es jedoch einen signifikanten Descendenten gibt, wird der Eingang eines insigni­ fikanten Koeffizienten mit Hilfe des Symbols für eine "Isolierte Null" codiert. Folglich wird ein Baum mit vier Symbolen (positiv signifikant, negativ signifikant, isoliert null oder Nullbaum- Wurzel) für Entscheidungen codiert, bei welchen das Vorzeichen des Koeffizienten noch nicht codiert worden ist.
Ein auf Frequenz basierendes Codieren ist insbesondere in Kom­ pressionssystemen brauchbar, da das gemeinsame Codieren von in­ signifikanten Bäumen eine kleine Anzahl von Ausgangskoeffizien­ ten zuläßt, um die Insignifikanz einer großen Anzahl von descen­ denten Koeffizienten vorherzusagen. Da die Eingänge an dem Baum, welcher descendenten Koeffizienten zugeordnet ist, von der Wur­ zel aus vorhergesagt werden kann, werden keine zusätzlichen Sym­ bole benötigt, um diese Insignifikanz zu codieren. Die Insigni­ fikanz des ganzen Baums wird mit sehr niedrigen Kosten codiert. Folglich bestehen die höherwertigen Bitebenen aus insignifikan­ ten Koeffizienten, von welchen viele weder Nullbaum-Wurzeln noch isolierte Nullen sind (d. h. sie sind Kinder in insignifikanten Bäumen, welche nicht zu codieren sind).
Shapiro offenbar ein auf Frequenz basierendes Modell, den soge­ nannten Nullbaum in US-Patent 5,321,776. Bei Shapiro′s-Verfahren werden zwei Listen, eine dominante und eine Subordinatenliste verwendet, um alle Koeffizienten zu speichern. Für jede Signi­ fikanzebene werden zwei Durchgänge gemacht, ein dominanter Durchgang und ein Subordinatendurchgang. In einer Ausführungs­ form ist das auf Frequenz basierende Modell der Erfindung ein Nullbau.
In einer anderen Ausführungsform wird ein auf Frequenz basie­ rendes Modell, das dem Nullbaum entspricht (wie er von Shapiro beschrieben worden ist) verwendet. Statt mehrerer Listen zu ver­ wenden, wird nur eine einzige Liste verwendet, wobei jedes der Listenelemente markiert ist, Teile einer der beiden Gruppen zu sein. Die Trennung von Koeffizienten in eine A- und eine B-Grup­ pe ist äquivalent der Trennung, die Shapiro mit dominanten bzw. Subordinanten-Listen erreicht. Shapiro′s Benutzen von mehreren Listen läßt eine größere Flexibilität beim Ordnen von Koeffi­ zienten in der Subordinatenliste aufgrund einer größeren Soft­ ware/Hardware-Komplexität zu. Bei dem Nullbaum-Verfahren mit einer einzigen Liste werden zwei Durchgänge, der A- und der B- Durchgang, verwendet, welche äquivalent Shapiro′s dominanten Durchgang bzw. dem Subordinaten-Durchgang sind. Das Nullbaum-Mo­ dell mit einer einzigen Liste wird nachstehend beschrieben.
Das Codiersystem der Erfindung enthält eine Liste der Koeffi­ zienten in Vorzeichen-Größenform in einem Speicher. Jedes Ele­ ment in der Liste hat eine Ein-Bit-Ebene, welche anzeigt, ob das Element ein Teil der "A-" oder der "B-Gruppe"ist. Am Anfang einer Stufe werden diese Koeffizienten, die noch nicht als signifikant befunden worden sind, kenntlich gemacht, daß sie in der A-Gruppe sind. Diese Koeffizienten, die vorher als signifi­ kant bezüglich der vorherigen größeren Schwellenwerte befunden worden sind, werden kenntlich gemacht als in die B-Gruppe gehö­ rig. Die Liste enthält die Koeffizienten in der Reihenfolge, in welche sie für ein Codieren bearbeitet werden. Am Anfang der al­ lerersten Stufe werden alle Koeffizienten als Teile der A-Gruppe markiert, da kein Koeffizient als signifikant festgelegt worden ist. Wenn Koeffizienten als signifikant oder insignifikant be­ stimmt werden, werden die Lebel für ihre Eingänge von der ur­ sprünglichen A-Gruppen-Benennung in der B-Gruppen-Benennung ge­ ändert. Diese Liste wird anschließend mit zunehmend feineren Schwellenwerten wieder verfeinert. Das heißt, es kommen mehrere Durchgänge durch die Liste vor.
In einer Ausführungsform sind die binären Ereignisse, welche den Koeffizienten in der B-Gruppe entsprechen, arithmetisch un­ ter einem Markov-Kontext-Modell nullter Ordnung codiert. Die quaternären Ereignisse, die den Koeffizienten der A-Gruppe ent­ sprechen, werden auch unter einem Markov-Kontext-Modell nullter Ordnung codiert.
Die Ordnung von Koeffizienten in der Liste der Erfindung erhält die Baumstruktur, daß kein "Kind" vor seinem Elternteil model­ liert werden kann. Folglich ist eine Ordnung, welche die Baum­ struktur bewahrt, festgelegt und wird durchwegs verwendet. In einer Ausführungsform werden die Koeffizienten im Speicher in einer Reihenfolge von der ersten verwendeten Speicherstelle aus gespeichert. In der anderen Ausführungsform kann eine verknüpfte Liste verwendet werden.
In einer Ausführungsform werden die Koeffizienten in einem ein­ gebetteten Bit-Signifikanz- oder Bitebenen-System codiert. Da die Koeffizienten von der höchstwertigen zu der niedrigstwerti­ gen Ebene codiert werden, muß die Anzahl Bitebenen in den Daten festgelegt werden. Bei der Erfindung ist dies dadurch erreicht, daß eine obere Grenze in den Größen der koeffizienten Werte ge­ funden wird, die aus den Daten berechnet oder aus der Tiefe des Bildes und den Filterkoeffizienten abgeleitet worden sind. Wenn beispielsweise die obere Grenze 149 ist, dann gibt es 8 Signifi­ kanz-Bits oder 8 Bitebenen.
In Fig. 6a und 6b ist eine Ausführungsform des eine einzige Li­ ste aufweisenden Nullbaum-Codierprozesses der Erfindung darge­ stellt. In einer Ausführungsform kann in Fig. 6a der Modellier­ prozeß der Fig. 27a und 27b verwendet werden. In Fig. 6a beginnt der Prozeß damit, zu testen, ob das Gruppenflag für den Koeffi­ zienten C auf die "A-Gruppe" gesetzt ist (Block 2321). Wenn nicht, dann endet der Prozeß. Wenn dagegen das Gruppenflag für den Koeffizienten C auf die "A-Gruppe" gesetzt ist, wird eine Verarbeitung beim Block 3222 fortgesetzt, wobei bestimmt wird, ob das "bestimmte/unbestimmte" Flag für den Koeffizienten C auf "unbestimmt" gesetzt ist. Wenn das "bestimmte/unbestimmte" Flag für den Koeffizienten nicht auf "unbestimmt" gesetzt ist, endet der Prozeß. Wenn dagegen das "bestimmte/unbestimmte" Flag für den Koeffizienten C auf "unbestimmt" gesetzt ist, wird die Ver­ arbeitung beim Block 3203 fortgesetzt, wobei bestimmt wird, ob das Bit SA des Koeffizienten C eins ist.
Wenn das Bit SA des Koeffizienten C nicht eins ist, wird beim Block 3207 fortgefahren. Wen 84189 00070 552 001000280000000200012000285918407800040 0002019534730 00004 84070n dagegen das Bit SA des Koeffizien­ ten eins ist, wird mit der Verarbeitung beim Block 3204 fortge­ fahren, wobei zuerst bestimmt wird, ob das Vorzeichen des Koef­ fizienten C positiv ist. Wenn das Vorzeichen des Koeffizienten C nicht positiv ist, wird die Entscheidung als "negativ signifi­ kant" in "A-Gruppen"-Kontext(en) codiert (Block 3205) und der Prozeß wird beim Block 3229 fortgesetzt. Wenn das Vorzeichen des Koeffizienten C positiv ist, wird die Entscheidung als "positiv signifikant" in "A-Gruppen"-Kontext(en) codiert (Block 3203), und der Prozeß wird beim Block 3229 fortgesetzt. Beim Block 3229 wird das Gruppenflag für C auf die "B-Gruppe" gesetzt.
Beim Block 3207 wird bestimmt, ob das Bit SA für alle die Des­ cendenten (Kinder) des Koeffizienten C null ist. Wenn das Bit SA nicht null ist, wird die Entscheidung als "insignifikant mit signifikanten Kindern" (01) in "A-Gruppe"-Kontext(en) codiert (Block 3208) und der Prozeß endet. Wenn dagegen das Bit SA für alle Descendenten (Kinder) des Koeffizienten C null ist, wird die Entscheidung als "Nullbaum-Wurzel" auf (00) in "A-Gruppen"- Kontext(en) codiert (Block 3209). Danach wird das "bestimmt/un­ bestimmt"Flag für alle die Descendenten des Koeffizienten C auf bestimmt" gesetzt (Block 3221) und der Prozeß endet.
In einer weiteren Ausführungsform kann der Beendigungstest für dem Prozeß darin bestehen, ob ein gewünschtes Kompressionsver­ hältnis erreicht ist oder nicht. In einer Ausführungsform sind die binären Ereignisse, die sich aus dem B-Durchgang ergeben, unter einen Markov-Quellen-Kontext-Modell nullter Ordnung entropie-codiert. Das 2 Bit-Alphabet(Größe 4), das sich aus dem A-Durchgang ergibt, wird ebenfalls unter einer Markov-Quelle nullter Ordnung durch einen quaternären (Alphabet der Größe 4) arithmetischen Coder codiert.
In Fig. 6b und 6b (fortgesetzt) ist eine alternative Ausfüh­ rungsform des Nullbaum-Codierprozesses der einzigen Liste der Erfindung mit Hilfe eines verringerten Flag-Speichers darge­ stellt. In einer Ausführungsform kann der Prozeß der Fig. 6b als der A-Durchgang in dem Prozeß von Fig. 30 verwendet werden. In den beiden Fig. 6b beginnt der Prozeß damit, zu untersuchen, ob das Ergebnis eines UNDens von Koeffizienten C mit der Maske MA null ist (Block 3201). Wenn dem nicht so ist, endet der Prozeß. Wenn dagegen das Ergebnis des UNDens von Koeffizient C mit der Maske MA null ist, wird die Verarbeitung beim Block 3202 fortge­ setzt, wo bestimmt wird, ob das "bestimmte/unbestimmte" Flag für den Elternteil des Koeffizienten C "unbestimmt" gesetzt ist. Wenn das Flag für den Elternteil des Koeffizienten nicht "unbe­ stimmt" gesetzt ist, endet der Prozeß. Wenn jedoch das "bestimm­ te/unbestimmte" Flag für den Elternteil des Koeffizienten C auf "unbestimmt" gesetzt ist, wird die Verarbeitung beim Block 3203 fortgesetzt, bei welchem bestimmt wird, ob das Bit SA des Koef­ fizienten C eins ist.
Wenn das Bit SA des Koeffizienten C nicht eins ist, wird beim Block 3207 fortgefahren. Wenn dagegen das Bit SA des Koeffizien­ ten C eins ist, wird die Verarbeitung beim Block 3204 fortge­ setzt, bei welchem bestimmt wird, ob das Vorzeichen des Koeffi­ zienten C positiv ist. Wenn das Vorzeichen des Koeffizienten C nicht positiv ist, wird die Entscheidung als "negativ signifi­ kant" in "A-Gruppen"-Kontext(en) codiert (Block 3205), und der Prozeß endet. Wenn das Vorzeichen des Koeffizienten C positiv ist, wird die Entscheidung als "positiv signifikant" in "A-Grup­ pen"-Kontext(en) codiert (Block 3206), und der Prozeß endet. In einer Ausführungsform wird ein quaternärer Coder verwendet, und quaternäre Entscheidungen werden in einem Kontext codiert. In einer anderen Ausführungsform wird ein binärer Coder verwendet und drei Kontexte werden benutzt (z. B. die drei Kontexte sind das erste Bit der Entscheidung, das zweite Bit, bei welchem das erste Bit null ist, und das zweite Bit, wenn das erste Bit eine eins ist).
Beim Block 3207 wird bestimmt, ob das Bit SA für alle Descen­ denten (Kinder) des Koeffizienten C null ist. Wenn das Bit SA nicht null ist, wird die Entscheidung als "insignifikant für signifikante Kinder", "isolierte Null", (01) in "A-Gruppen"-Kon­ text(en) codiert (Block 3208), und der Prozeß endet. Wenn dage­ gen das Bit SA für alle Descendenten (Kinder) des Koeffizienten C null ist, wird die Entscheidung als "Nullbaum-Wurzel" (00) in "A-Gruppen"-Kontext(en) codiert (Block 3209). Dann wird das "be­ stimmte/unbestimmte" Flag für den Koeffizienten C auf "bestimmt" gesetzt (Block 3210). Danach werden das "bestimmte/unbestimmte" Flag für alle die Descendenten des Koeffizienten, welche ihrer­ seits Descendenten haben, auf "bestimmt" gesetzt (Block 3211), und der Prozeß endet.
Decodierschritte
In der Erfindung wird ein Decodieren im Sperrschritt (lockstep) mit dem Codieren durchgeführt. In Fig. 6c ist eine Ausführungs­ form des A-Durchgangs-Prozesses für einen Nullbaum-Horizont-De­ codierprozeß dargestellt und sie kann in Verbindung mit dem Pro­ zeß von Fig. 27 verwendet werden. In Fig. 6c beginnt der Prozeß damit, zu untersuchen, ob das Gruppenflag für den Koeffizienten C auf die "A-Gruppe" gesetzt ist (Block 3521). Wenn nicht, endet der Prozeß. Wenn dem jedoch so ist, wird die Verarbeitung beim Block 3528 fortgesetzt, bei-welchem bestimmt wird, ob das "be­ stimmte/unbestimmte" Flag für den Koeffizienten C auf "unbe­ stimmt" gesetzt ist. Wenn nicht, endet der Prozeß. Wenn dem so ist, dann wird der Prozeß beim Block 3502 fortgesetzt, bei wel­ chem eine ternäre Entscheidung in A-Gruppen-Kontext(en) deco­ diert wird.
Dann wird bestimmt, ob die Entscheidung "positiv signifi­ kant"ist (Block 3503). Wenn die Entscheidung "positiv signifi­ kant" ist, wird das Vorzeichen des Koeffizienten C auf positiv gesetzt (Block 3505). Die Größe des Koeffizienten wird auf 2SA gesetzt (Block 3507), das Gruppenflag für den Koeffizienten C wird auf die "B-Gruppe" gesetzt (Block 3541), und der Prozeß en­ det.
Wenn die Entscheidung "nicht signifikant" ist (Block 3503), wird bestimmt, ob die Entscheidung "negativ signifikant" ist (Block 3504). Wenn die Entscheidung nicht "negativ signifikant" ist, wird der Prozeß beim Block 3509 fortgesetzt, bei welchem bestimmt wird, ob die Entscheidung eine Nullbaum-Wurzel ist. Wenn die Entscheidung nicht eine Nullbaum-Wurzel ist, endet der Prozeß. Wenn die Entscheidung eine Nullbaum-Wurzel ist, wird das "bestimmte/unbestimmte" Flag für alle Descendenten des Koeffi­ zienten C auf "unbestimmt" gesetzt (Block 3531), und der Prozeß endet.
Wenn jedoch bei der Überprüfung des Blockes 3504 festgestellt wird, daß die Entscheidung "negativ signifikant" ist, dann wird das Vorzeichen des Koeffizienten C auf negativ gesetzt (Block 3506), die Größe des Koeffizienten wird auf 2SA gesetzt (Block 3507), das Gruppenflag für den Koeffizienten C wird auf die B- Gruppe gesetzt (Block 3541), und der Prozeß endet.
In Fig. 6d ist eine alternative Ausführungsform des A-Durch­ gangs-Prozesses für einen Nullbaum-Horizont-Decodierprozeß mit einem verkleinerten Flag-Speicher dargestellt und sie kann in dem in Fig. 30 beschriebenen Prozeß verwendet werden. In Fig. 6d beginnt der Prozeß damit, zu untersuchen, ob das Ergebnis des UNDens von Koeffizient C mit der Maske MA null ist (Block 3501). Wenn dem nicht so ist, dann endet der Prozeß. Wenn jedoch das Ergebnis des UNDens von Koeffizient C mit der Maske MA null ist, wird die Verarbeitung beim Block 3508 fortgesetzt, wobei be­ stimmt wird, ob das "bestimmte/unbestimmte" Flag für den Eltern­ teil von C "unbestimmt" ist. Wenn dem nicht so ist, endet der Prozeß. Wenn dem so ist, dann wird der Prozeß beim Block 3502 fortgesetzt, bei welchem die ternäre Entscheidung in A-Gruppen- Kontext(en) decodiert wird.
Dann wird bei einer Überprüfung bestimmt, ob die Entscheidung "positiv signifikant" ist (Block 3503). Wenn die Entscheidung "positiv signifikant" ist, wird das Vorzeichen des Koeffizienten positiv gesetzt (Block 3505), die Größe des Koeffizienten wird auf 2SA gesetzt (Block 3507), und der Prozeß endet.
Wenn die Entscheidung nicht "positiv signifikant" ist, wird festgestellt, ob sie "negativ signifikant" ist ( Block 3504). Wenn die Entscheidung nicht "negativ signifikant" ist, wird der Prozeß beim Block 3509 fortgesetzt, bei welchem in einer Unter­ suchung festgestellt wird, ob die Entscheidung eine Nullbaum- Wurzel ist. Wenn die Entscheidung nicht eine Nullbaum-Wurzel ist, endet der Prozeß. Wenn die Entscheidung eine Nullbaum-Wur­ zel ist, wird das "bestimmte/unbestimmte" Flag für den Koeffi­ zienten C auf "bestimmt" gesetzt (Block 3510), die "bestimm­ ten/unbestimmten" Flags für alle Descendenten von Koeffizienten C, welche ihrerseits Descendenten haben, werden auf "unbestimmt" gesetzt (Block 3511), und der Prozeß endet.
Wenn jedoch bei der Kontrolle von Block 3504 festgestellt wird, daß die Entscheidung "negativ signifikant" ist, dann wird das Vorzeichen des Koeffizienten C auf negativ gesetzt (Block 3506), die Größe des Koeffizienten c wird auf 2SA gesetzt (Block 3507), und der Prozeß endet.
Alternativen bestehen in der Wahl, die von Shapiro getroffen worden ist, um quaternäre Entscheidungen zu verwenden, um Bäume zu beschreiben. Es können größere Alphabete verwendet werden, um die Kenndaten eines ganzen Baumes weiter zu spezifizieren, wenn die Wurzel des Baumes codiert wird. In einer Ausführungsform werden die folgenden Sätze von hexanären (6-ary) Entscheidungen verwendet.
  • -Insignifikant mit insignifikanten Kindern (Nullbaum-Wur­ zel)
  • - Insignifikant mit mindestens einem signifikanten Kind
  • - Signifikant, positiv und alle Kinder nicht-negativ
  • - Signifikant, positiv und zumindest ein Kind ist negativ
  • - Signifikant, negativ und alle Kinder sind nicht-positiv
  • - Signifikant, negativ und zumindest ein Kind ist positiv.
In dieser Ausführungsform wird eine Vorzeichen-Information zu­ sätzlich zu einer Insignifikanz für einen ganzen Baum vorausge­ sagt. In einer anderen Ausführungsform können Bäume mit anderen Vorzeichen-Zwängen oder mit Größen-Zwängen vorhergesagt werden. Alternative Prädiktoren sind insbesondere brauchbar zum Darstel­ len von Struktur oder zum Darstellen von Mehrfach-Auflösungs­ merkmalen. Mit größeren Alphabeten kann die Verwendung von Mar­ kov-Kontexten höherer Ordnung (wie später noch beschrieben wird) nützlich sein.
Auf Mehrfach-Durchgang-Liste basierendes, gemeinsames, einge­ bettetes Raum/Frequenz/Modellieren
In der Erfindung codiert ein eingebettetes Frequenz-Codieren, wie das hier beschriebene Horizont-Ordnung-Modellieren, die ter­ nären Ereignisse, die den Koeffizienten in der A-Gruppe entspre­ chen. Beim Horizont-Codieren sind alle Initialisationen, die den Codierschritten vorausgehen, identisch mit dem auf Frequenz ba­ sierenden System. In einer Ausführungsform wird ein binäres En­ tropie-Codieren mit drei Kontexten "A-Gruppen-Größe", "A-Grup­ pen-Vorzeichen" und "B-Gruppe" durchgeführt.
Fig. 7a ist ein Flußdiagramm einer Ausführungsform des A-Durch­ gangs für einen Horizont-Codierprozeß mit einer einzigen Liste gemäß der Erfindung. Dieser Prozeß kann in dem Prozeß von Fig. 27 verwendet werden. In Fig. 7a beginnt der A-Durchgang-Prozeß da­ mit, zu untersuchen, ob das Gruppenflag für einen Koeffizienten C auf die "A-Gruppe" gesetzt ist (Block 3111). Wenn nicht, endet der Prozeß. Wenn der Gruppenflag für den Koeffizienten C auf die "A-Gruppe" gesetzt ist, wird die Verarbeitung beim Block 3102 fortgesetzt, bei welchem bestimmt wird, ob das Bit SA des Koef­ fizienten C eins ist. Wenn das Bit SA des Koeffizienten C nicht ein ist, wird die Entscheidung als insignifikant "0" in dem "A- Gruppen"-Kontext codiert (Block 3103), und der Prozeß endet. Wenn das Bits SA des Koeffizienten C eins ist, dann wird die Ver­ arbeitung bei Block 3104 fortgesetzt, bei welchem bestimmt wird, ob das Vorzeichen von Koeffizienten C positiv ist. Wenn das Vor­ zeichen des Koeffizienten C positiv ist, wird die Entscheidung "als positiv signifikant" (10) in "A-Gruppen"-Kontext(en) co­ diert (Block 3106), und der Prozeß wird bei Block 3117 fortge­ setzt. Wenn dagegen das Vorzeichen von Koeffizienten C nicht po­ sitiv ist, wird die Entscheidung als "negativ signifikant" (11) in "A-Gruppen"-Kontext(en) codiert (Block 3105), und der Prozeß wird bei Block 3117 fortgesetzt. Bei Block 3117 wird das Grup­ penflag für Koeffizienten C auf die "B-Gruppe" gesetzt.
Fig. 7b ist ein Flußdiagramm einer alternativen Ausführungsform des A-Durchgangs für einen Einzellisten-Horizont-Codierprozeß mit Hilfe eines verkleinerten Flag-Speichers. Dieser Prozeß kann in dem Prozeß von Fig. 30 verwendet werden. In Fig. 7b beginnt der A-Durchgangsprozeß damit, zu untersuchen, ob das Ergebnis des UNDens von Koeffizient C mit der Maske MA null ist (3101). Wenn nicht, dann endet der Prozeß. Wenn das Ergebnis des UNDens von Koeffizient C mit der Maske MA null ist, wird die Verarbeitung beim Block 3102 fortgesetzt, bei welchem in einer Untersuchung bestimmt wird, ob das Bit SA des Koeffizienten C eins ist. Wenn das Bit SA des Koeffizienten C nicht eins ist, wird die Ent­ scheidung als insignifikant (0) in einem "A-Gruppen"-Kontext co­ diert (Block 3103), und der Prozeß endet. Wenn das Bit SA des Koeffizienten C eins ist, dann wird die Verarbeitung beim Block 3104 fortgesetzt, bei welchem mit einer Untersuchung bestimmt wird, ob das Vorzeichen von Koeffizienten C positiv ist. Wenn das Vorzeichen von Koeffizienten C positiv ist, wird die Ent­ scheidung als "positiv signifikant" (10) in "A-Gruppen"-Kon­ text(en) codiert (Gruppe 3106) und der Prozeß endet. Wenn dage­ gen das Vorzeichen von Koeffizienten C nicht positiv ist, wird die Entscheidung als "negativ signifikant" (11) in "A-Gruppen"- Kontext(en) codiert (Block 3105), und der Prozeß endet.
Decodierschritte
In Fig. 7c ist eine Ausführungsform des A-Durchgangs-Prozesses für einen Einzellisten-Horizont-Decodierprozeß der Erfindung dargestellt und sie kann in dem Prozeß von Fig. 27 verwendet wer­ den. In Fig. 7c beginnt der Prozeß damit, zu untersuchen, ob das Gruppenflag für den Koeffizienten C auf die "A-Gruppe" gesetzt ist (Block 3411). Wenn nicht, endet der Prozeß. Wenn jedoch das Gruppenflag für den Koeffizienten C auf die "A-Gruppe" gesetzt ist, wird die Verarbeitung beim Block 3402 fortgesetzt, bei wel­ chem die quaternäre Entscheidung in A-Gruppen-Kontext(en) deco­ diert wird.
Dann wird bei der Untersuchung bestimmt, ob die Entscheidung "positiv signifikant" ist (Block 3403). Wenn die Entscheidung "positiv signifikant" ist, wird das Vorzeichen des Koeffizienten C positiv gesetzt (Block 3405), die Größe des Koeffizienten wird auf 2SA gesetzt (Block 3407), das Gruppenflag für den Koeffi­ zienten wird auf die "B-Gruppe" gesetzt (Block 3418) und der Prozeß endet.
Wenn die Entscheidung nicht "positiv signifikant" ist, wird bei der Untersuchung festgestellt, ob sie "negativ signifikant" ist (Block 3404). Wenn die Entscheidung nicht "negativ signifikant" ist, endet der Prozeß. Wenn jedoch die Entscheidung "negativ signifikant" ist, dann wird das Vorzeichen des Koeffizienten C negativ gesetzt (Block 3406), die Größe von C wird auf 2SA ge­ setzt (Block 3407), das Gruppenflag für den Koeffizienten C wird auf "B-Gruppe" gesetzt (Block 3418), und der Prozeß endet.
In Fig. 7d ist eine alternative Ausführungsform des A-Durch­ gangs-Prozesses für einen Einzellisten-Horizont-Decodierprozeß mit Hilfe eines verkleinerten Flag-Speichers dargestellt und sie kann in dem Prozeß der Fig. 30 verwendet werden. In Fig. 7d be­ ginnt der Prozeß damit, zu untersuchen, ob das Ergebnis des UNDens von Koeffizient C mit der Maske MA null ist (Block 3401). Wenn dem nicht so ist, dann endet der Prozeß. Wenn jedoch das Ergebnis des UNDens von Koeffizient C mit der Maske MA null ist, wird die Verarbeitung beim Block 3402 fortgesetzt, bei welchem die ternäre Entscheidung in A-Gruppen-Kontext(en) decodiert wird.
Dann wird bei einer Untersuchung bestimmt, ob die Entscheidung "positiv signifikant" ist (Block 3403). Wenn die Entscheidung "positiv signifikant" ist, wird das Vorzeichen des Koeffizienten C positiv gesetzt (Block 3405), die Größe des Koeffizienten wird auf 2SA gesetzt (Block 3407), und der Prozeß endet. Wenn die Entscheidung nicht "positiv signifikant" ist, wird bei einer Un­ tersuchung bestimmt, ob sie "negativ signifikant" ist (Block 3404). Wenn die Entscheidung nicht "negativ signifikant" ist, endet der Prozeß. Wenn jedoch die Entscheidung "negativ signifi­ kant" ist, dann wird das Vorzeichen des Koeffizienten C negativ gesetzt (Block 3406), die Größe von C wird auf 2SA gesetzt (Block 3407) und der Prozeß endet.
B-Durchgang sowohl für Nullbaum als auch Horizont
In einer Ausführungsform sind der B-Durchgangsprozeß sowohl für den Nullbaum als auch für den Horizont der Erfindung dieselben. Ausführungsformen für den B-Durchgang-Algorithmus für den Co­ dierprozeß und den Decodierprozeß sind in Fig. 8a und 8b bzw. 9a und 9b dargestellt.
In Fig. 8a ist eine Ausführungsform des B-Durchgangsprozesses dargestellt, der teilweise für den Nullbaum und den Einzelli­ sten-Horizont-Codierprozeß verwendet wird und in dem Prozeß der Fig. 27 verwendet werden kann. In Fig. 8a untersucht der Prozeß anfangs, ob das Gruppenflag für den Koeffizienten C gesetzt ist (Block 3311). Wenn nicht, dann endet der Prozeß. Wenn dagegen das Gruppenflag gesetzt ist, wird die Verarbeitung beim Schritt 3302 fortgesetzt, bei welchem in einer Untersuchung bestimmt wird, ob das Bit SB des Koeffizienten C "1" ist. Wenn das Bit von SB des Koeffizienten C nicht "1" ist, dann wird die Ent­ scheidung als "0" in "B-Gruppen"-Kontext(en) codiert (Block 3303), und der Prozeß endet. Wenn das Bit SB des Koeffizienten C "1" ist, dann wird die Entscheidung als "1" in "B-Gruppen"-Kon­ text(en) codiert (Block 3304), und der Prozeß endet.
In Fig. 8b ist eine alternative Ausführungsform des B-Durch­ gangs-Prozesses dargestellt, welcher teilweise für einen Null­ baum- und Einzellisten-Horizont-Codierprozeß verwendet werden kann und einen verkleinerten Flag-Speicher benutzt, und sie kann in dem Prozeß von Fig. 30 verwendet werden. In Fig. 8b wird bei dem Prozeß anfangs untersucht, ob das Ergebnis des UNDens des Koeffizienten C mit der Maske MB nicht-null ist (Block 3301). Wenn nicht, dann endet der Prozeß. Wenn dagegen das Ergebnis des UNDens von Koeffizient C mit der Maske MB nicht-null ist, wird die Verarbeitung bei Block 3302 fortgesetzt, bei welchem be­ stimmt wird, ob das Bit SB des Koeffizienten C "1" ist. Wenn das Bit von SB des Koeffizienten nicht "1" ist, dann wird die Ent­ scheidung als "0" in "B-Gruppen"-Kontext(en) codiert (Block 3303), und der Prozeß endet. Wenn das Bit SB des Koeffizienten C "1" ist, dann wird die Entscheidung als "1" in "B-Gruppen"-Kon­ text(en) codiert (Block 3304), und der Prozeß endet.
In Fig. 9a ist eine Ausführungsform des B-Durchgangs-Decodieren der Erfindung dargestellt und sie kann in dem Prozeß der Fig. 27 verwendet werden. In Fig. 9a wird durch eine Untersuchung anfangs bestimmt, ob das Gruppenflag für Koeffizient C auf die "B-Grup­ pe gesetzt ist (Block 3611). Wenn nicht, dann endet der Prozeß. Wenn jedoch das Gruppenflag für Koeffizient C nicht auf die "B- Gruppe" gesetzt ist, dann werden die Entscheidungen in den "B- Gruppen"-Kontext(en) decodiert (Block 3602). Bei einer Untersu­ chung wird dann unterschieden, ob die Entscheidung eine "1" ist (Block 3603). Wenn die Entscheidung nicht eine "1" ist, endet der Prozeß. Wenn die Entscheidung eine "1" ist, wird das Bit SB von Koeffizient C gesetzt (3604), und der Prozeß endet.
In Fig. 9b ist eine alternative Ausführungsform des B-Durch­ gang-Codierens der Erfindung mit Hilfe eines verkleinerten Flag- Speichers dargestellt, und sie kann in den Prozeß von Fig. 30 verwendet werden. In Fig. 30b wird bei einer Untersuchung anfangs bestimmt, ob das Ergebnis des UNDens von Koeffizient C mit der Maske MB nicht-null ist (Block 3601). Wenn das Ergebnis des UNDens von Koeffizient C mit der Maske MB null ist, dann endet der Prozeß. Wenn jedoch das Ergebnis des UNDens von Koeffizient C mit der Maske MB nicht-null ist, dann werden die Entscheidun­ gen in den "B-Gruppen"-Kontext(en) decodiert (Block 3602). Bei einer Untersuchung wird dann entschieden, ob die Entscheidung eine "1" ist (Block 3603). Wenn die Entscheidung nicht eine "1" ist, dann endet der Prozeß. Wenn die Entscheidung eine "1" ist, dann wird das Bit SB des Koeffizienten C gesetzt (Block 3604), und der Prozeß endet.
Mit Hilfe der Verknüpfung von Nullbaum-Ordnungs-Codieren und Horizont-Ordnungs-Codieren schafft die Erfindung ein Bit-Signi­ fikanz-Codieren der Koeffizienten, welche durch die reversiblen Wavelets erzeugt worden sind. Die Verwendung sowohl der A-Grup­ pen als auch der B-Gruppe und der ternären sowie der binären Er­ eignisse, welche den "A"- bzw. "B"-Durchgängen entsprechen, ist speziell wichtig im Hinblick auf die Tatsache, daß ein Schalten vorgenommen wird mit Hilfe des Nullbaum-Ordnens auf das Hori­ zont-Ordnens am Ende eines A-Durchgangs. Dies kompensiert die Ineffizienz in der Vorhersage, welche ein Nullbaum-Anordnen der niederwertigen Bits begleitet. Folglich beginnt in der Erfindung das System durch ein Nullbaum-Codieren mit Daten höherwertiger Bits, und nach einer Anzahl Durchgänge durch die Liste, d. h. nachdem eine Anzahl Bitebenen codiert sind, schaltet der Coder der Erfindung, um den Rest der Daten mit Hilfe des Horizont-Co­ dierens zu codieren. Die Anzahl Durchgänge kann statistisch oder adaptiv durch Überwachen der Leistung des Nullbaum-Ordnungs-Co­ dierblocks gewählt werden.
Modell-Alternativen
In einer Ausführungsform werden fünf binäre Kontext-Fächer (bins) verwendet. Dies ist klein im Vergleich mit anderen Syste­ men, wie JBIG, welches etwas mehr als 1024 Kontexte verwendet. Eine Kompression kann mit Hilfe von mehr Kontext-Fächern verbes­ sert werden. Entscheidungen können an einer räumlichen Adresse, einer Ebene und/oder einer Bitposition konditioniert werden. Entscheidungen können auch durch vorher decodierte Daten kondi­ tioniert werden, welche nahe bei den aktuellen Daten in einer räumlichen Adresse, einer Ebene und/oder einer Bitposition sind. Im allgemeinen können Markov-Kontexte nullter Ordnung, die vor­ her beschrieben worden sind, durch Markov-Kontexte höherer Ord­ nung ersetzt werden.
Mehrere Beispiele folgen. Das höchstwertige (und folglich sehr leicht vorhersagbare) Bit jeder Mantisse (B-Gruppendaten in einigen Ausführungsformen) könnte einen anderen Kontext als den Rest der Bits verwenden. Die signifikante/nicht-signifikante Entscheidung könnte in derselben Entscheidung konditioniert wer­ den, die für räumlich nahe, vorherige Koeffizienten in derselben Transformationsebene gemacht worden sind. In ähnlicher Weise könnten die Vorzeichenbits für signifikante Koeffizienten an dem Vorzeichen für räumlich nahe, vorherige Koeffizienten auf der­ selben Ebene oder auf dem Vorzeichen des Koeffizienten des Elternteils konditioniert werden.
Kontextmodell-Verbesserungen können insbesondere wichtig sein, wenn Bilder verdichtet werden, welche eine räumliche oder eine mehrfache Auflösungsstruktur haben Grauskala-Bilder von Zeilen- Zeichnungen oder Texte sind ein Beispiel von Bildern mit diesen beiden Strukturtypen. Verbesserungen sind auch wichtig zum Ver­ dichten von Dateien, welche bereits mit einem spezifischen Peak- Fehler komprimiert oder dekomprimiert worden sind.
Alternative Ausführungsformen der Erfindung
Die Erfindung kann auch in Hardware und/oder Software ausge­ führt werden. Eine Hardware-Implementation der Erfindung erfor­ dert ein Implementieren der Wavelet-Filter, ein Speicher/Daten­ fluß-Management, um die Daten für die Filter zu schaffen, ein Kontext-Modell, um das eingebettete Codieren der Erfindung zu steuern, ein Speicher/Daten-Flußmanagement, um die Daten für das Kontext-Modell zu schaffen, und einen binären Entropie-Coder.
Wavelet-Filter
Eine Ausführungsform des Vorwärts-Wavelet-Filters der Erfindung ist in Fig. 10 dargestellt. Das in Fig. 10 dargestellte Wavelet- Filter paßt 4 16 Bit Zweier-Komplement-Eingabepixels an, die als x(2)-x(5) dargestellt sind.
In Fig. 10 verwendet das Tiefpaßfilter mit 2 Anschlüssen "1 1" einen 16 Bit-Addierer 1001. Die Ausgänge sind mit S bzw. D be­ zeichnet. Der Ausgang des Addierers (S) wird abgeschnitten bei 16 Bits mit Hilfe eines um "1" verschiebenden Blocks 1003, wel­ cher eine Funktion "Teilen durch 2" durchführt, indem dessen 17 Bit-Eingaben um ein Bit nach rechts verschoben werden.
Das Hochpaßfilter mit 6 Abgriffen "-1 -1 8 -8 1 1" erfordert die Berechnung von -S₀+4D₁+S₂. Die Funktion S₂ - S₀ wird mit einer 16 Bit-Subtrahiereinheit 1003 berechnet, welche den Aus­ gang des Blocks 1003 und des Y₀(o) erhält. Der 4D₁-Term wird mit Hilfe einer Subtrahiereinheit 1002 und eines um 2 verschiebenden Blocks 1004 berechnet. Der Ausgang, welcher mittels der 16 Bit Subtrahiereinheit 1002 erzeugt wird, wird um zwei Stellen nach links verschoben, um dadurch effektiv dessen Ausgang mit vier zu multiplizieren. Ein Addieren des 4D₁-Ausgangs von dem Block 1004 mit dem Ausgang der Subtrahiereinheit 1005 wird durch einen 20 Bit-Addierer 1006 durchgeführt. Der Ausgang des letzten Addie­ rers wird bei 18 Bit mit Hilfe eines um zwei verschiebenden Blocks 1007 abgeschnitten. Der Block 1007 führt eine Teilfunk­ tion durch vier durch, indem dessen 20 eingegebene Bits um zwei Bits nach rechts verschoben werden.
Folglich ist die gesamte erforderliche Hardware (wobei Register zum Speichern vorübergehender Ergebnisse nicht mitgezählt sind:
  • - 1 @ 16 Bit-Addierer
  • - 2 @ 16 Bit-Subtrahiereinheiten
  • - 1 @ 19 Bit-Addierer.
Hierbei wird ein Verschieben durch das Verdrahten vorgenommen, so daß keine Logik benötigt wird. In anderen Ausführungsformen können für Eingänge einer Größe N ein N-Bit-Addierer, zwei N- Bit-Subtrahiereinheiten und ein (N+3) Bit-Addierer verwendet werden. Infolge der sehr niedrigen Hardware-Kosten dieser Addie­ rer/Subtrahiereinheiten können erforderlichenfalls parallele Im­ plementationen der Filter verwendet werden.
Alternativ kann statt des Subtrahierens X(3) und X(2), X(4)- X(5) berechnet werden und aufbewahrt werden, bis es später als X(2)-X(3) für die nächste Verschiebung oder Anwendung des Fil­ ters benötigt wird. Sowohl das Vorwärtsfilter (als auch das nachstehend beschriebene inverse Filter) können durch eine Pipe- Line verbunden werden, um einen höheren Durchsatz zu erreichen.
Das inverse Wavelet-Filter ist in Fig. 11 dargestellt. Die Ein­ gangssignale von Y₀(0) und Y₀(2) werden von einer Subtrahierein­ heit 1101 subtrahiert. Das Ergebnis der Subtraktion wird nach rechts um zwei Bits durch den Schiebeblock 1102 verschoben. Hierdurch wird effektiv der Ausgang der Subtrahiereinheit um vier geteilt. Eine Subtraktion wird zwischen dem Ausgangssignal des Blocks 1104 und dem Y₁(0) Eingangssignal durchgeführt. Das Eingangssignal y₀(1) wird um ein Bit nach links durch den Schie­ beblock 1103 verschoben, wodurch das Eingangssignal mit zwei multipliziert wird. Nachdem Y₀(1) um 1 verschoben ist, (multi­ pliziert mit zwei), ist das niedrigstwertige (LS-) Bit der ver­ schobene Wert des LS-Bits, das aus dem Ausgangssignal der Sub­ trahiereinheit 1104 genommen und mit dem 16 Bit-Ausgangssignal vom Block 1103 verknüpft worden ist, um ein Eingangssignal für einen Addierer 1105 und eine Subtrahiereinheit 1106 zu bilden. Der andere Eingang des Addierers 1105 und der Subtrahiereinheit 1106 ist das Ausgangssignal des Subtrahierers 1104. Die Aus­ gangssignale des Addierers 1105 und des Subtrahierers 1106 wer­ den anschließend abgeschnitten.
Die Wahl von zwei Schnittoperationen kann angewendet werden. In beiden Fällen wird der 20 Bit-Wert um 1 (geteilt durch 2) auf einen 19 Bit-Wert verschoben. Für ein System, das nur eine ver­ lustfreie Kompression durchführt, können die niedrigstwertigen 16 Bits abgegeben werden. (Die restlichen 3 Bits können igno­ riert werden). Bei einem verlustbehafteten (oder einem verlust­ behafteten/verlustfreien) System wird der 19 Bit-Wert auf null gesetzt, wenn er negativ ist und wird auf 2¹⁶-1 gesetzt, wenn er größer als 2¹⁶-1 ist; anderenfalls können die niedrigstwertigen 16 Bits abgegeben werden. Für Eingangssignale der Größe N Bits können ein N-Bit-Subtrahierer, ein (N+2) Bit-Subtrahierer, ein (N+3)-Bit-Addierer und ein (N+3) Bit-Subtrahierer verwendet wer­ den, und die Schneideeinheit gibt N Bits ab.
Speicher-Verwendung
Bezüglich des Speicher- und Datenfluß-Managements für die Wave­ let-Filter gemäß der Erfindung ist für Bilder, bei welchen ein Vollbild in einen Speicher eingebracht werden kann, ein Spei­ cher/Datenfluß-Management nicht eine schwierige Ausgabe. Selbst für (1024 × 1024) 16 Bit-medizinische Bilder (z. B. zwei M Bytes in der Größe), die einen Vollbildpuffer erfordern, ist dies für viele Anwendungen vernünftig. Für größere Bilder (z. B. A4, 400 DPI Vierfarben-Bilder sind es über 50 M Bytes hinsichtlich der Größe) ist ein Durchführen der Wavelet-Transformation mit einer begrenzten Größe eines Zeilenpuffer-Speicher wünschenswert.
Ein Vollbild-Puffer ist für die Erfindung nicht notwendig, um ein Eindurchlauf-System zu implementieren. Deswegen kann der er­ forderliche Speicher etwa um einen Faktor 100 (verglichen mit einem Vollbild-Puffer für große Bilder) verkleinert werden. Das Eindurchlauf-System der Erfindung wird später beschrieben.
Die in dem Filter-Speicher gespeicherten Daten sind eine Reihe von Koeffizienten, die dem eingebetteten Codieren und dem binä­ ren Entropie-Codieren zu unterziehen sind. Das eingebettete Co­ dieren verwendet ein Kontext-Modell, um die Verwendung von auf Frequenz basierendem Codieren oder ein Horizont-Codieren zu ko­ ordinieren und um Daten in der richtigen Reihenfolge zu schaf­ fen. Das Kontext-Modell arbeitet in Verbindung mit einem Spei­ cher-Management-Schema. Für Systeme mit einem Vollbild-Puffer ist ein Vorsehen von Daten in der richtigen Reihenfolge nicht schwierig. Für Systeme ohne einen Vollbild-Puffer schafft das Transformationsdaten-Management-Schema der Ausführungsform der Erfindung mit einem Durchlauf (was unten noch beschrieben wird) Koeffizienten an dem Kontext-Modell, so daß das Kontext-Modell nur Koeffizienten für einen Baum puffern muß. Ein auf Frequenz basierendes Eindurchlauf-Kontext-Modell und ein gemeinsames, einen Durchlauf erledigendes Raum-Frequenz-Kontext-Modell arbei­ ten zu einer bestimmten Zeit an einem Baum.
Die Ergebnisse der Einbettungsoperation der Erfindung bestehen darin, Bitströme für den auf Frequenz basierenden Modellierme­ chanismus der vorliegenden Erfindung und den gemeinsamen Raum/Frequenz-Modelliermechanismus der Erfindung zu erzeugen. Diese Datenströme werden dann mit Hilfe eines binären Entropie- Codierers codiert.
Für ein System mit einem Vollbild-Puffer kann ein binärer Entropie-Codierer (oder irgendein anderer Codierer) verwendet werden. Für Systeme ohne einen Vollbild-Puffer müssen entweder mehrere unabhängige Codierer verwendet werden, oder der Codierer muß in der Lage sein, mehrere unabhängige Codierer zu simulie­ ren. Ebenso wird ein Speicher- oder Kanal-Management gefordert, um eine Speicherspur der Ausgangssignale von den unabhängigen Codierern zu erhalten. Ein Vorteil der Erfindung liegt darin, daß die zu verwaltenden Daten Prioritäten unterworfen (eingebet­ tet) sind. Wenn ausreichend Raum oder Bandbreite während einer Kompression oder einer Übertragung nicht verfügbar ist, können weniger wichtige Daten unterwegs (on the fly) ausrangiert wer­ den, die für eine vernünftige verlustbehaftete Kompression vor­ gesehen sind.
Eindurchgang-System gemäß der Erfindung
Die Erfindung schafft eine Eindurchgang-Transformation, die es ermöglicht, die eingegebenen Daten in dem System vollständig zu verarbeiten, wenn sie empfangen werden. In einem solchen System ist die Verarbeitung der Daten nicht abhängig von Daten, welche folgen. Ein Speicher, der erforderlich ist, um ein Bild zu kom­ primieren, ist unabhängig von der Länge des Bildes. Durch Ent­ fernen der Unabhängigkeit, schafft die Erfindung ein System, das verdichtete Daten abgeben kann, bevor alle Daten verarbeitet werden können.
A. Datenmanagement für eine Eindurchgang-Transformation
Fig. 12 stellt einen Abschnitt eines Bildes dar, das in einer Rasteranordnung durch eine Bandform mit Hilfe der Lehren der Er­ findung zu verdichten ist. Es wird eine Vierebenen-Zerlegung be­ trachtet. Jeder Baum hat 2⁴ × 2⁴=16 × 16 = 256 Koeffizienten. Da jedoch das Hochpaßfilter der Wavelet-Transformation in der Er­ findung überlappt wird, hängt jeder Baum von mehr als 256 einge­ gebenen Pixels ab. Das Tiefpaßfilter (L) mit zwei Abgriffen "1 1" verursacht nicht irgendein Überlappen; das gesamte Überlappen kommt von dem Hochpaßfilter (H) mit sechs Abgriffen "-1 -1 8 -8 1 1". Das größte Überlappen kommt für die Kaskade von drei An­ wendungen des Tiefpaßfilters vor, worauf eine Anwendung des Hochpaßfilters (LLLH) folgt. Drei Anwendungen des Tiefpaßfilters (LLL) erfordern ein Unterstützen von 2³-8 eingegebenen Pixels. Stützbereiche von (8 × 8) Größenpixels sind in Fig. 12 darge­ stellt. Wenn das Hochpaßfilter in der Kaskade enthalten ist, sind die Stützbereiche (6 × 2³) × (6 x 2³) = 48 × 48 Pixels. Ein (48 × 48) Pixel-Stützbereich besteht aus 36 (8 × 8) Blöcken, wie in Fig. 12 dargestellt ist.
Die Koeffizienten in einem in Fig. 12 dargestellten (48 × 48) Pixel-Stützbereich sind laufend zu verarbeiten. Der leicht schattierte Bereich des Stützbereichs veranschaulicht Pixel, die bereits in den vorherigen Stützbereichen verwendet worden sind. Der leicht schattierte Bereich, der außerhalb des Stützbereichs ist, veranschaulicht Pixel, die bereits in vorherigen Stützbe­ reichen verwendet worden sind, und in zukünftigen Stützbereichen benötigt werden. Der schwarze (16 × 16) Bereich ist der Teil des Stützbereichs, welcher Pixel enthält, die vorher noch nicht ver­ wendet worden sind. Dementsprechend enthält der dunkel schat­ tierte (16 × 16) Bereich Pixel, die vorher noch nicht verwendet worden sind, aber welche in dem nächsten (48 × 48) Stützbereich verwendet werden. Eine Dreiebenen-(16 × 16) Transformation wird berechnet, die vorherigen Ergebnisse für acht andere (16 × 16) Dreiebenen-Transformationen werden von einem Puffer aus zurück­ gerufen, und die vierte Transformationsebene wird bei den neun (16 × 16) Dreiebenen-Transformationen angewendet. Das Puffern, das erforderlich ist, um dies zu erreichen, ist groß genug, um die Dreiebenen-Transformations-Koeffizienten für (2 × 2) (Bild­ breite + 32)) × 16 Pixel plus genug zu speichern, um ein 16 Zei­ len-(ein Band-)Puffer von Pixel zu speichern.
Fig. 13 ist ein Blockdiagramm einer Ausführungsform der Ein­ durchgang-Wavelet-Filtereinheit, welche eine Filtersteuereinheit 1301, einen Speicher 1302 und einen Filter 1303 aufweist. Der Filter 1303 weist das in Verbindung mit Fig. 10 beschriebene Fil­ ter auf. Ein Speicher 1302 betrifft den Speicher, der vorstehend in Verbindung mit Fig. 12 beschrieben worden ist, und speichert entweder Pixel oder Koeffizienten. Die Filtersteuereinheit 1301 legt den Datenfluß zwischen dem Speicher 1302 und dem Filter 1303 fest. Die Arbeitsweise der Filtersteuereinheit 1301 wird weiter unten noch beschrieben.
In Fig. 14 ist eine alternative Wavelet-Filtereinheit darge­ stellt. Um einen hochschnellen Betrieb zu erreichen, können meh­ rere Filter verwendet werden. Da in einer Ausführungsform das Filter 1303 4 oder 5 Eingänge erfordert (z. B. inverses Filter, Vorwärtsfilter) und zwei Ausgangssignale erzeugt, könnte die er­ forderliche Speicher-Bandbreite wesentlich sein. Der Speicher kann mehr Pixel/Koeffizienten pro Speicherstelle haben, mehrere Banken/oder mehrere Ausgänge. Ein Speicher-Interface 1401 ver­ ringert die Speicherbandbreite, die erforderlich ist, um schmale Puffer für lokale Daten zu schaffen, die während einer Verarbei­ tung verwendet worden sind. Eine Speicher-Interface-Einheit 1401 schafft auch ein Multiplexen/Demultiplexen zwischen dem Ein­ gang/Ausgang/I/O des Speichers 1302 und dem Ein-/Ausgang des Filters 1303.
Zusätzlich zu der Speicherbandbreite, die zum Filtern erforder­ lich ist, kann eine zusätzliche Bandbreite für ein Eingeben der Pixel in den Speicher 1302 und für ein Ausgeben der Koeffizien­ ten an das Kontext-Modell erforderlich sein. Wenn Pixel in einer Rasteranordnung eingegeben werden, kann ein zusätzlicher Spei­ cher für den Bandpuffer erforderlich sein.
Wenn ein Speicher mehrere Elemente (Pixel oder Koeffizienten) pro Speicherstelle speichert, kann er statt horizontal oder ver­ tikal benachbarte Elemente in einer Spalte oder Zeile zu spei­ chern, die Menge an Speicher-Zugriffen und das erforderliche Puffern verringern, wenn Elemente in einem (N × N) Block, wenn N eine Potenz von 2 ist, dieselbe Speicherstelle benutzen. Dies erlaubt die gleich Bequemlichkeit für vertikale und horizontale Zugriffe.
Mehrere Speicherbänke können ebenfalls implementiert werden, so daß sowohl ein horizontaler als auch ein vertikaler Zugriff den gleichen Vorteil von mehreren Bänken haben kann, wie in Fig. 15 gezeigt ist. Für den Fall von zwei Bänken kann ein Bankauswähl­ bit, das zum Auswählen einer der Bänke vorgesehen ist, in einer Ausführungsform durch eine exclusive ODER-Behandlung der LS-Bits der horizontalen und vertikalen Koordinaten gebildet werden. Für den Fall von vier Bänken kann das Zweibänke-Auswählbit gebildet werden durch Addieren (Modul 4 mit einem 2 Bit-Adierer) der zwei L S-Bits der horizontalen und vertikalen Koordinaten.
In Fig. 16 ist eine Eindurchgang-Filteroperation für eine Zwei­ ebenen-Zerlegungs-Implementierung durch die Filtersteuereinheit 1301 (Fig. 13) dargestellt. Zu Zwecken der Darstellung ist eine Zweiebenen-Beschreibung zuerst erörtert, um die generelle Tech­ nik der Erfindung zu erläutern. In anderen Ausführungsformen werden Zerlegungen von drei Ebenen, vier Ebenen oder höheren Ebenen verwendet. Eine Zweiebenen-Zerlegung hat 16 Koeffizienten pro Baum und erfordert eine Berechnung mit 16 Eingangspixel, die vorher noch nicht verwendet worden sind. Die Filterung für einen Koeffizientenbaum wird in 16 oder weniger Zeiteinheiten durchge­ führt, um der Eingangs- oder Ausgangsrate zu entsprechen. Für dieses Beispiel werden zwei parallel arbeitende Filter verwen­ det, um den gewünschten Durchsatz von zwei Filteroperationen pro Zeiteinheit zu erreichen. Für jede örtliche Speicherstelle, an welcher die Vorderkante eines Filters verwendet wird, zeigt Fig. 16 eine Zahl, welche die Zeit anzeigt, daß jede Filteropera­ tion durchgeführt wird.
Da die Filterreihenfolge durch die Vorderkante des Filters festgelegt ist, erzeugt ein Filtern nicht alle Koeffizienten ei­ nes Baumes vor einem Erzeugen eines der Koeffizienten des näch­ sten Baumes. Das Filtern der Kinder des Baumes kommt vor dem Filtern der Eltern, und ein Tiefpaßfiltern erfolgt vor dem ent­ sprechenden Hochpaßfiltern. Die Filterung arbeitet auf einer A- Gruppe von Koeffizienten, welche dieselbe Anzahl von Koeffizien­ ten eines Typs hat, die einen Baum gibt.
Die horizontale Filterung von Ebene 1 wird während der Zeit 0 bis 7 durchgeführt, und die Ergebnisse werden in einem temporä­ ren Puffer gespeichert. (Jede räumliche Speicherstelle läuft auf zwei Koeffizienten hinaus.) Während der Zeit 2 bis 9 wird eine vertikale Filterung (mit Hilfe des zweiten Filters) an Daten in dem Puffer und an Daten aus einer vorherigen horizontalen Filte­ rung aus dem Speicher (zweimal pro räumlicher Speicherstelle) durchgeführt. Ein vertikales Filtern kann beginnen, sobald die zweite horizontale Filteroperation beendet ist. Die HH-, HL- und LH-Koeffizienten sind bereit für ein Abgeben an das Kontext-Mo­ dell (in der entsprechenden Zeit). Die LL-Koeffizienten werden in der nächsten Ebene verwendet.
Mit nur zwei Filtern kann eine horizontale Filterung der Ebene 0 nicht bis zum Zeitpunkt 8 beginnen, wenn die horizontale Fil­ terung der Ebene 1 vollständig ist, was ein Filter verfügbar macht. Ein horizontales Filtern der Ebene 0 kann nicht enden bis zur Zeit 10 eines Zyklus, nachdem die vertikale Filterung der Ebene 0 vollständig ist, wobei alle erforderlichen Daten geprüft werden. Als nächstes kann während der Zeit 11 und 12 die verti­ kale Filterung der Ebene 1 vorkommen.
In der nachstehenden Tabelle 1 ist die Arbeitsweise jedes Fil­ ters während jeder Zeiteinheit angegeben. Das Format der Einträ­ ge ist Ebenenzahl, horizontal oder vertikal ("H" oder "V") und die räumliche Adresse der Vorderkante. Die Eingänge der vertika­ len Filteroperationen werden entweder als Tiefpaß oder als Hoch­ paß durch einen Index "L" oder "H" identifiziert. Es ist nicht notwendig, ein Filter zum Durchführen einer horizontalen Filte­ rung und das andere zum Durchführen einer vertikalen Filterung zuzuordnen, da beide Filter identisch sind.
Tabelle 1
Obwohl eine horizontale Filterung der Ebene 1 für die nächste Gruppe von eingegebenen Pixels zur Zeit 11 wieder beginnen kann, würde dies bewirken, daß das Filter schneller arbeitet als die Eingabe- oder Ausgaberate. Statt dessen laufen bei der Erfindung die Filter leer durch, und die nächste Gruppe wird zum Zeitpunkt 16 gestartet. Leer durchlaufende Filterzyklen können für Spei­ cherübertragungen verwendet werden. Statt am Ende der Filterung für jede Gruppe vorzukommen, können die Leerlaufzyklen erforder­ lichenfalls auch über die Filterzyklen verteilt werden.
Im Hinblick auf die Erläuterung des Zweiebenen-Falles ist in Tabelle 2 der Dreiebenen-Fall dargestellt. Konzentrationen von zwei oder vier Zeiteinheiten werden verwendet, um die Informa­ tion auf eine Seite zu übertragen, um dadurch das Lesen zu er­ leichtern.
Tabelle 2
In Tabelle 3 ist der Vierebenen-Fall dargestellt. Da es nunmehr 256 Zeiteinheiten pro Koeffizientengruppe sind, ist der Einfach­ heit halber nur die Filterungsebene und -richtung dargestellt.
Tabelle 3
Das Ausgangssignal des Filterungs- und Speicheruntersystems der Erfindung ist eine Reihe von Koeffizienten, die einer eingebet­ teten Bit-Signifikanz-Codierung in der Erfindung unterzogen sind.
B-Kontext-Modell für das Eindurchgang-System
In einer Ausführungsform der Erfindung wird bezüglich des ein­ gebetteten Bit-Signifikanz-Kontextmodells für das Eindurchgang- System jeder Baum in vier Teilen verarbeitet. Die Wurzel des Baums, der höchste Ebenen-LL-Koeffizient wird durch eine Ein­ durchgang-Horizont-Ordnungscodierung codiert. Die drei Unterbäu­ me, die mit jeweils in Wurzeln von drei Kindern beginnen, die Koeffizienten der höchsten Ebene HH, HL und LH, werden sowohl durch ein Eindurchgang-Verbund-Raum/Frequenz-Modellieren und ein auf Frequenz basierendes Eindurchgang-Modellieren verarbeitet.
Die Koeffizienten werden so codiert, daß codierte Daten vor dem eingebetteten Bit-Signifikanz-Kontext-Modell abgegeben werden können, das auf allen Daten arbeitet.
Eindurchgang-Signifikanzbaum
Das Nullbaum-Kontext-Modell kann nicht in dem Eindurchgang-Sy­ stem verwendet werden. Ein Nullbaum erfordert eine Liste (oder mehrere Listen), die jeden Koeffizienten enthalten, und ein Nullbaum macht mehrere Durchgänge durch die Liste(n). Ein al­ ternatives, auf Frequenz basierendes Modell, ein Eindurchgang- Signifikanzbaum, erfordert nicht irgendeine Liste, welche alle Koeffizienten enthält. Ein weiterer Unterschied zwischen einem Eindurchgang-Signifikanzbaum und einem Nullbaum ist der, daß ein Signifikanzbaum alle Kinder vor einem Verarbeiten der Eltern verarbeitet, wenn Entscheidungen erzeugt werden, im Unterschied zu einem Nullbaum, welcher zuerst den Elternteil verarbeitet.
Das Kontext-Modell der Erfindung ist in Blockdiagrammform in Fig. 17 dargestellt. Das Kontextmodell 1700 erfordert zwei Verar­ beitungseinheiten, die Vorzeichen-Größeneinheit 109 (Fig. 1A) und die Signifikanz-Einheit 1702. Das Kontext-Modell 1700 ver­ wendet auch zwei Speicher (mit Speicher-Steuerlogik), einen Grö­ ßenspeicher 1701 und einen Baumspeicher 1703. Jeder dieser zwei Speichereinheiten kann mit mehreren Speicherbereichen durchge­ führt werden, um ein Wechseln während eines hochschnellen Be­ triebs zuzulassen (d. h. während Daten in einen zu schreiben sind, wird der andere gelesen oder geleert).
Der Größenspeicher 1701 ordnet Koeffizienten in dem Baum in einer Reihenfolge, die auf der Signifikanz basiert, wie bei­ spielsweise einer Reihenfolge, die auf deren Größe basiert. Dies wird erreicht durch Aufrechterhalten einer Warteschlange für je­ de möglich Größe. Die Signifikanz-Einheit 1702 erhält Koeffi­ zienten in der Signifikanz-Reihenfolge (z. B. der Größe) und er­ zeugt Entscheidungen für einen Coder, welcher den A-Durchgangs- Algorithmus behandelt. Der Baumspeicher 1703 ist mit der Signi­ fikanz-Einheit 1702 verbunden und eliminiert Nullbäume nach al­ len Nullen.
Bei der folgenden Erörterung ist angenommen, daß die Koeffi­ zienten 18 Bits sind, und daß die Eingangsdaten einer Vierebe­ nen-Zerlegung unterzogen werden. Eine Ausführungsform der Vor­ zeichen-Größeneinheit 109 ist in Fig. 18 dargestellt und setzt eingegebene Koeffizienten in ein Vorzeichen-Größenformat um. Eine Vorzeichen-Größeneinheit 109 ist angeschlossen, um 18 Bits der Koeffizienten aufzunehmen, und enthält einen Inverter 1803, einen Multiplexer (MUX) 1802, einen Prioritätscoder 1803 und einen Zähler 1804. Die Vorzeichen/Größeneinheit 109 gibt eine Signifikanzanzeige (z. B. einen 5 Bit-Wert), die Mantisse des eingegebenen Koeffizienten (z. B. 17 Bits), das Vorzeichen des eingegebenen Koeffizienten (1 Bit) und einen Index vom Zähler 1804 aus (z. B. 7 Bits) ab.
MUX 1802 ist vorgesehen, um 17 Bits des Koeffizienten direkt in die Vorzeichen/Größeneinheit 109 und eine invertierte Version der 17 Bits von der Zweierkomplement-Einheit 1801 aus aufzuneh­ men. Basierend auf dem Vorzeichenbit (Koeffizientenbit 17), das an dem Auswähleingang von MUX 1802 erhalten worden ist, wird der positive der zwei Eingangswerte als die Mantisse abgegeben.
Die Vorzeichen/Größeneinheit 109 benutzt einen Prioritätscoder 1803, um das erste signifikante Bit jedes Koeffizienten zu be­ stimmen. Basierend auf dem ersten signifikanten Bit jedes Koef­ fizienten kann die Signifikanzebene dem Koeffizienten zugeordnet werden.
Der Zähler 1804 wird verwendet, um einen Index dem aktuellen Baumelement zuzuordnen. Für eine Vierebenen-Zerlegung ändert sich der Index von 0 bis 84 (da 1 + 4 + 16 + 64 = 85, die Zahl von Elementen in einem Unterbaum ist). Die eingegebenen Koeffi­ zienten sind eine Baumanordnung, wobei angenommen wird, daß die Eltern zuerst und die Kinder zuletzt in diesem Beispiel sind.
Die Koeffizienten sind von verschiedenen Zerlegungsebenen, wie in Tabelle 4 für die Koeffizienten in der Anordnung dargestellt ist.
Tabelle 4
Fig. 19 ist eine Ausführungsform des Blockdiagramms des Größen­ speichers 1701. Ein Zähler und ein Speicher ist jeder möglichen Signifikanzebene zugeordnet (außer nichts wird für Null-Koeffi­ zienten benötigt, welche nicht codiert werden müssen). Bei­ spielsweise sind der Zähler 1916 und der Speicher 1936 der Signifikanz-Ebene 17 zugeordnet. In einer Ausführungsform gibt es 16 Signifikanzebenen. Daher gibt es 17 Zähler und 17 zugeord­ nete Speicher.
In einer Ausführungsform muß jeder Speicher 85 Speicherstellen für jeden möglichen Koeffizienten in einem Unterbaum haben (da jeder Unterbaum 85 Koeffizienten enthält), jedoch kann die Spei­ chergröße bis auf eine Potenz von 2 abgerundet werden, wie bei­ spielsweise 128. Jeder Speichereintrag kann ein Vorzeichenbit, einen 7 Bit-Index und N Größenbits enthalten, wobei N die signi­ fikante Ebene ist. Wenn die Verwendung eines Speichers fester Breite gewünscht wird, können Einträge für signifikante 16 und 0, 15 und 1, etc. verknüpft werden, so daß jedes Wort zwei Ein­ tragungen hat, die sich auf 32 Bits belaufen. Natürlich muß bei einer ungeraden Anzahl von Signifikanzebenen ein Wort nur einen Eintrag enthalten, welcher in diesem Beispiel Ebene 7 ist.
Vorzeichen-, Index- und Mantisse-Werte, die von der Vorzeichen- Größeneinheit 109 empfangen worden sind, werden in den entspre­ chenden Speicher an der Adresse geschrieben, welche durch den zugeordneten Speicher-Zähler vorgesehen ist. Der zugeordnete Speicher wird dann inkrementiert, so daß der nächste Koeffizient auf dieser Signifikanzebene an der nächsten Stelle gespeichert werden kann.
Der Speicher wird von jedem der Speicher 1920 bis 1926 in ab­ nehmender Signifikanz-Anordnung gelesen. Der Ausgangswert jedes Koeffizienten enthält sein Mantisse, das Vorzeichen und den ab­ gegebenen Index. Wenn der Zähler für die höchste Signifikanzebe­ ne bzw. -stufe, (z. B. Stufe 16) nicht-null ist, wird er dekre­ mentiert, und der Speicher wird an dieser Adresse gelesen. Dies wird wiederholt, bis der Zählerwert null ist. Dann wird die nächste Signifikanzstufe (z. B. Stufe 15) betrachtet. Jede Signi­ fikanzstufe wird wiederum betrachtet, bis alle Zähler auf null dekrementiert worden sind, und alle Speicher geleert sind. In einem Realzeit-System kann es wünschenswert sein, zwei Bänke von Zählern und Speichern zu verwenden, so daß eine Bank für das Eingeben und die andere für das Ausgeben verwendet werden kann.
Die Zähler adressieren ihren zugeordneten Speicher, so daß ein LIFO (das zuletzt Eingegebene wird zuerst ausgegeben) implemen­ tiert ist. Ein LIFO-Speicher ist die korrekte Reihenfolge, wenn Unterbäume in der Reihenfolge von Eltern zuerst eingegeben wer­ den. Andererseits wenn Unterbäume zuerst als Kind eingegeben worden sind, könnte die Operation der Zähler geändert werden, um einen FIFO (zuerst eingeben, zuerst ausgeben) durchführen.
Fig. 20 ist ein Blockdiagramm einer Ausführungsform einer Signi­ fikanzeinheit 1702. In Fig. 20 wird ein Indexzähler 2001 verwen­ det, um durch jeden Koeffizienten in einem Unterbaum, die Kinder zuerst, durchzugehen. In einer Ausführungsform wird der Index­ zähler 2001 bei 84 initialisiert und zählt rückwärts auf null. Ein Signifikanzzähler 2004 beginnt auf der Maximum-Signifikanz­ stufe, (z. B. 16 in dem Beispiel 9 und zählt jedesmal rückwärts, wenn der Indexzähler 84 einen Zyklus beendet (auf 84 zurück­ kehrt), so daß der Signifikanzzähler 2004 eine Spur der Bitebene hält. Die Stufe/Ebene eines ganz bestimmten Index wird durch Lo­ gik festgelegt (Index auf Stufe 2003), welche die in der vorste­ henden Tabelle 4 dargestellte Funktion durchführt.
Ein Größenspeicher 1701 erzeugt einen Index, eine Größe und ein Vorzeichen des nächsten Koeffizienten in dem Speicher, welcher durch das Ausgangssignal des Signifikanzzählers 2004 freigegeben ist. Wenn der von dem Speicher angegebene Index derselbe ist, wie der abgegebene Index des Indexzählers 2001, setzt die Äqui­ valenzlogik 2002 die Nicht-Null-Ausgangsanzeige durch. Die Nicht-Null-Ausgangsanzeige bedeutet, daß der Größenspeicher den nächsten Index usw. bei dem nächsten Zyklus erzeugen sollte. Wenn dies nicht eine Anpassung ist, dann wird eine Nicht-Anpas­ sungsanzeige an einen Diskussionsgenerator 2008 gesendet.
In einer Ausführungsform werden drei Flip-Flops, die als Flag 0 (2005) Flag 1 (2006) und Flag 2 (2007) verwendet werden, um eine Speicherspur von Nicht-Null-Daten zu erhalten und werden Zerle­ gungsebenen 0, 1 bzw. 2 zugeordnet. Die Anzahl an erforderlichen Flip-Flops ist eins weniger als die Anzahl Zerlegungsebenen. Die Flip-Flops 2005 bis 2007 werden zuerst gelöscht. Wenn das Nicht- Null-Signal von der Äquivalenzlogik 202 eingesetzt wird, werden alle Flip-Flops in den Flip-Flops 2005 bis 2007, die einer Ebene weniger als der aktuellen Ebene zugeordnet sind, gesetzt. Das Flip-Flop, das der aktuellen Ebene zugeordnet ist, wird ge­ löscht. Die Ebene ist mit einer Index-Ebenen-Logik 2003 verse­ hen, welche die Ebene entsprechend dem Index von dem Index-Zäh­ ler 2001 erzeugt.
"Codierte" Flags werden gespeichert (in einigen Ausführungsfor­ men eine Registerdatei), und zwar ein Bit für jeden Index. Wenn das Nicht-Null-Signal durchgesetzt ist, wird das Bit gesetzt, das dem aktuellen Index-Zählerwerts des codierten Flags zugeord­ net ist. Andernfalls wird, wenn der Signifikanz-Zählerwert der Maximumwert ist, das zugeordnete Bit gelöscht. Andernfalls bleibt der Wert des Bits unverändert. Das bereits codierte Aus­ gangssignal von einer codierten Flag-Speicherung ist dasselbe wie der neue Wert des Bits, das dem aktuellen Index zugeordnet ist. In einer alternativen Ausführungsform werden die codierten Flags nicht verwendet, und das bereits codierte Signal wird nie­ mals verwendet.
In einer Ausführungsform bestimmt ein Entscheidungsgenerator 2008, wenn die aktuelle Ebene 3 ist, und die vorherige Ebene es nicht war. Entsprechend dieser Festlegung setzt der Entschei­ dungsgenerator 2008 das Startsignal durch, und der gegebene Startpegel ist der vorherige Pegel. Wenn das Nicht-Null-Signal durchgesetzt ist, gibt der Entscheidungsgenerator 2008 eine Ent­ scheidung als "signifikant" ab und gibt auch das Vorzeichen (00, 01) und die Mantisse ab. Wenn dagegen der bereits codierte Eingang durchgesetzt ist, wird keine Entscheidung abgegeben. An­ dernfalls gibt, wenn das Flag-Flip-Flop, das der aktuellen Ebene zugeordnet ist, gesetzt ist, der Entscheidungsgenerator 2008 die Entscheidung als "unwichtig, mit signifikanten Kindern" (10) ab. Andernfalls gibt der Entscheidungsgenerator 2008 die Entschei­ dung als "unwichtig und Kinder unwichtig" (11) ab und setzt das Nullsignal durch.
Um sowohl ein auf Frequenz basierendes Modellieren als auch ein Horizont-Eindurchgang-Verbund-Raum/Frequenz-Modellieren durchzu­ führen, wird die folgende Änderung an der Signifikanzeinheit 2000 gemacht. Der Signifikanzzähler 2004 wird mit einem Schwel­ lenwert verglichen, und der gesamte Nullausgang wird nur durch­ gesetzt, wenn der Zählerwert größer als der Schwellenwert ist.
In einer Ausführungsform ist die Signifikanz-Kategorie, die in den Baumspeicher 1703 eingegeben worden ist (siehe Fig. 21, die nachstehend beschrieben wird) der Ausgangswert des Signifikanz­ zählers 2004. In dieser Ausführungsform des Kontext-Modells (z. B. eine Bit-Signifikanz-Einbettungseinheit) basiert die Signifi­ kanz-Kategorie auf der Anzahl Bitebenen, und es sind siebzehn verschiedene Signifikanz-Kategorien. Diese ist eine beliebige Wahl. In einer anderen Ausführungsform können Bitebenen kombi­ niert werden, um weniger Signifikanz-Kategorien zu erzeugen. Ebenso kann eine Ebenen-Information zu einer Bitebene-Informa­ tion hinzugefügt werden, um mehr Signifikanz-Kategorien zu er­ zeugen. Mehr Signifikanz-Kategorien können eine bessere, ver­ lustbehaftete Kompression schaffen, während weniger eine Hard­ ware-Komplexität reduzieren können.
Fig. 21 ist ein Blockdiagramm einer Ausführungsform der Baum­ speichereinheit der Erfindung. In Fig. 21 hat der Speicher 2101 adäquaten Speicherplatz zum Speichern einer Entscheidung und einer Signifikanzanzeige für jede mögliche Entscheidung. In einer Ausführungsform ist für eine Vierebenen-Zerlegung mit 17 Signifikanzstufen die Anzahl Speicherstellen im Speicher 2101 gleich 85 × 17 = 1445.
Um auf den Speicher 2101 zuzugreifen, werden Adressen erzeugt. Ein Zähler 2102 ist anfangs null. Wenn der Entscheidungsgenera­ tor 2008 den gesamten Nulleingang nicht durchsetzt, wird der Wert im Zähler 2102 verwendet, um den Speicher zu adressieren. Wenn der Entscheidungsgenerator 2008 den eingegebenen Start durchsetzt, wird der aktuelle Wert des Zählers 2102 in einem der Register 2110 bis 2112 entsprechend der Startebene gespeichert, welche als ein Auswählmechanismus wirkt. Der Zähler 2102 wird dann inkrementiert.
Wenn der Entscheidungsgenerator 2008 den gesamten Nulleingang durchsetzt, wird der Wert in dem Register (z. B. 2110, 2111, 2112), das durch die eingegebene Stufe ausgewählt worden ist, verwendet, um den Speicher 2101 zu adressieren; dieser Wert 1 wird in den Zähler 2102 geladen. Dies bewirkt, daß die Speicher­ stellen, die für unwichtige Kinder eines unwichtigen Elternteils verwendet worden sind, ignoriert wird.
Während einer Speicherabgabe wird der Zähler 2102 dekremen­ tiert, um die Adresse der auszugebenden Speicherstelle zu schaf­ fen. Der Ausgangswert von dem Baumspeicher 2100 wird von einem Entropie-Codierer empfangen, der die Entscheidung an der spezi­ fizierten Signifikanz entsprechend codiert. Für eine Realzeit- Operation können zwei Baumspeichereinheiten verwendet werden, so daß eine zum Eingeben verwendet wird, während die andere zum Ausgeben verwendet wird.
Koeffizienten-Abgleich
In einer Ausführungsform der Erfindung verwendet das Nullbaum- Kontext-Modell ein nicht-normiertes (1+Z-1) Tiefpaßfilter. Je­ doch kann das Nullbaum-Kontext-Modell auch mit normierten Fil­ tern wie (1+Z-1/), verwendet werden. Um normierte Filter zu verwenden, kann eine Abgleichseinheit, wie beispielsweise die Ausgleichseinheit 2200 in Fig. 22 zwischen dem Vorwärts-Wavelet- Filter 1000 und dem Kontext-Modell 105 verwendet werden, um die Energie zu kompensieren, die von dem nicht-normierten Filter, welches die Kompression verbessert, gewonnen wird (oder anderen­ falls verloren wird). Da ein Abgleichen eine nicht-gleichförmige Quantisierung für eine verlustbehaftete Operation zuläßt, kann ein Abgleich die visuelle Qualität von verlustbehafteten Bildre­ konstruktionen verbessern. In dem eindimensionalen Fall würden Koeffizienten für jedes Niveau des Baums einen unterschiedlichen Abgleich haben (Divisoren = , 2, 2, 4, Multiplikatoren = 2, 2, , 1. In dem zweidimensionalen Fall würden die Teiler 2, 4, 8, 16 und die Multiplikatoren würden 8, 4, 2, 1 sein.
Da der Abgleich gerade für ein Gruppieren ähnlicher binärer Entscheidungen für ein Codieren ist, ist ein Verwenden des exak­ ten Normierungswertes nicht kritisch. Der Abgleich muß während des Decodierens invertiert werden, so daß eine Multiplikation und Division erforderlich sind. Ein Verwenden von Faktoren/Divi­ soren, die Potenzen von zwei sind, würde ein hardware-effi­ zientes Verschieben zulassen, was statt dessen durchzuführen ist.
Wenn Koeffizienten mit einer Potenz von zwei multipliziert wer­ den, sind die weniger signifikanten, hinzugefügten Nullbits nicht zu codieren.
Jedoch kann, statt die Abgleichfaktoren/Divisoren auf die Potenz von zwei zu begrenzen, eine Annäherung, wie ≈ 1,5 oder ≈ 2 ÷ 1,5 im folgenden Verfahren angewendet werden. Statt Koeffizienten mit dem Faktor/Divisor zu multiplizieren/dividie­ ren, würde nur die "signifikanten" Koeffizienten statt dessen mit dem Faktor/Divisor skaliert. Die Vorzeichen-Größeneinheit kann so, wie in Fig. 23 dargestellt, modifiziert werden, um einen "1,5" Prioritätscoder 2301 zu erhalten, welcher auf die Position entweder von (1) dem höchstwertigen "1"-Bit, wenn das dem höchstwertigen Bit nächstfolgende Bit auch "1" ist, oder aber (2) auf eins weniger als auf die Position des höchstwertigen "1"-Bits zurückkehrt. Eine Wahrheitstabelle für einen "1,5", Prioritätscoder für 3 Eingangsbits ist in Tabelle 5 dargestellt.
Tabelle 5
In Abhängigkeit von der Stufe des Koeffizienten, die durch den augenblicklichen Indexwert angezeigt ist, wählt ein Multiplexer 2302 die Signifikanz entweder des Standard-Prioriätscoders oder des "1,5"-Prioritätscoders aus. Wenn der "1.5"-Abgleich verwen­ det wird, enthält die Mantisse (N+1) Bits, wobei N der Signifi­ kanzwert ist. Andererseits enthält die Mantisse N Bits.
Eine Abgleicheinheit 200, die einen Multiplexer mit zwei Eingän­ gen aufweist, der als ein Schieberegister wirkt, kann ein Ab­ gleichen mit eins oder zwei durchführen. Wenn dies mit dem 1,5- Abgleich verknüpft wird, der durch die Vorzeichen-Größen-Einheit vorgesehen ist, erlaubt dies Abgleichen von 1,1,5,2 oder 3, wel­ ches eine gute Annäherung der gewünschten Multiplikatoren für eindimensionale Signale ist, da die Zahlen einfacher sind (z. B. Potenzen von zwei). (Für zweidimensionale Signale, wie Bilder, sind die Zahlen einfacher). Während eines Decodierens ist das (N+2)te Bit der Mantisse (welche nicht codiert ist) das Komple­ ment des (N+1)ten Bit, wenn der "1,5"-Prioritätscoder verwendet wird.
Ein Koeffizienten-Abgleich kann verwendet werden für ein Ab­ stimmen des Nullbaums und für eine feinere und nicht-gleichför­ mige Quantisierung. Im Fall von Bildern (zweidimensionalen Signalen) gleicht eine Ausführungsform der RTS-Transformation die Koeffizienten dadurch ab, daß das Frequenzband mit den Zahlen multipliziert wird, die in Fig. 31 dargestellt sind. Ein Multi­ plizieren dieser Zahlen läuft auf die RTS-Transformation hinaus, die eine sehr nahe Annäherung an die exakten Rekonstruktions-Wa­ velets der TS-Transformationen sind. Der Entropie-Coder muß den Abgleichprozeß in Betracht ziehen, um wirksam zu sein.
Auf Frequenz basierendes Kontext-Modell bei partiellen Bitebe­ nen
Ein alternatives Verfahren des auf Frequenz basierenden Model­ lierens verwendet partielle Bitebenen oder partielle Signifikanz­ bits. Eine Implementierung davon ist es, jede Bitebene zweimal zu verarbeiten, so daß die Durchgänge einen A1-Durchgang, einen B1-Durchgang, einen A0-Durchgang und einen B0-Durchgang enthal­ ten. Die Namen der Durchgänge wurden gewählt, da der A1-Durch­ gang Koeffizienten behandelt, die mit "11" beginnen und der A0- Durchgang, die behandelt, welche mit "11" beginnen.
Während des A1-Durchgangs für die Bitebene F ist ein Koeffi­ zient der A-Gruppe nur signifikant, wenn beide Bits S und S-1 nicht-null sind. Während des A2-Durchgangs ist ein Koeffizient in der A-Gruppe signifikant, wenn das Bits S nicht-null ist. Da die zwei höchstwertigen Bits bekannt sind, werden der B1- und B0-Durchgang nur benötigt, um S-1 Bits zu verarbeiten (unter der Annahme, daß S=0 die niedrigstwertige Bitebene ist).
Da alternierende partielle Bitebenen sich um einen Faktor von 1,5 oder 2/1,5 unterscheiden, kann der Abgleich für unterschied­ liche Ebenen dadurch erreicht werden, daß die gewünschten par­ tiellen Bitebenen für jede Stufe gruppiert werden. Partielle Bitebenen bewirken ein feineres Modellieren der Daten aufgrund der Eltern/Kind-Beziehung, die für das auf Frequenz basierende Kontext-Modell verwendet worden sind. Mehr als zwei Durchgänge, beispielsweise mit vier oder acht Durchgänge, können für ein noch feineres Modellieren verwendet werden. Beispielsweise würde im Fall von vier Durchgängen der A11-Durchgang Koeffizienten be­ handeln, welche mit "111" beginnen. Die anderen Durchgänge wür­ den "110", "101" und "100" behandeln. Ein weniger feines Model­ lieren könnte auch angewendet werden. Beispielsweise würde ein Durchgang nur mit jeder weiteren Bitebene gemacht. In dem Fall des weniger feinen Modellierens werden mehr Bits von der B-Grup­ pe codiert.
C. Codierer- und Speicher/Kanal-Management für ein Eindurch­ gang-System
Ein Speicher-Management für codierte Daten in dem Eindurchgang- System wird für Systeme dargestellt, welche alle Daten im Spei­ cher speichern, und für Systeme, die Daten an einen Kanal über­ tragen. In dem Eindurchgang-System müssen codierte Daten so ge­ speichert werden, daß auf sie in einer eingebetteten kausalen Form zugegriffen werden kann, so daß weniger signifikante Daten weggeworfen werden können, ohne signifikantere Daten zu verlie­ ren. Da codierte Daten variabel lang sind, kann eine dynamische Speicherzuordnung verwendet werden.
In einer Ausführungsform der Erfindung benutzt das eingebettete Codierschema 18 Bitebenen und teilt 18 Signifikanzstufen den Da­ ten zu. Der Codierer in einem Eindurchgang-System muß "eingebet­ tet kausal" sein. Das heißt, die Codierereignisse, die einer Bitebene entsprechen, erfordern nicht Information von niederwer­ tigeren Bitebenen. In dem Eindurchgang-Fall werden üblicherweise alle Bits von einem Baum codiert, bevor irgendwelche Bits in dem nächsten Baum codiert werden, so daß Bits unterschiedlicher Signifikanz nicht getrennt werden. Für Codierer, die einen inne­ ren Zustand nicht benutzen, wie Huffman-Codierer, ist dies kein Problem. Doch benutzen viele hochentwickelte Kompressoren mit einer besseren Kompression den internen Zustand.
Ein Weg, um diese Schwierigkeit für diese Codierer zu lösen, ist 18 verschiedene Codierer, vielleicht 18Q-Codierer-Chips zu ver­ wenden. Eine Technik, die die Verwendung von 9 Q-Codierer-Chips erlauben würde, ist in dem US-Patent 5,097,261 (Langdon, Jr.), beschrieben, das am 17.3.1992 erteilt worden ist, und den Titel hat: "Datenkompression für ein Aufzeichnen auf ein Aufzeichnungs­ medium". Ein besserer Weg benutzt einen in eine Pipeline einge­ bundenen Codierer, um verschiedene virtuelle Codes mit einem einzigen Codierer durchzuführen, wie es beispielsweise in der US-Patentanmeldung S.N. 08/016,035 beschrieben ist, die am 10.2.1993 eingereicht worden ist und den Titel trägt: "Verfahren und Einrichtung für paralleles Decodieren und Codieren von Da­ ten". In einem solchen Codierer sind die Mehrbit-Generatorzu­ stände für jede Wahrscheinlichkeit jeweils einem Teil der Daten zugeordnet. Beispielsweise könnte jeder von 18 Zuständen einer ganz bestimmten Bitebene für 18 Bit-Daten zugeordnet sein. Regi­ ster in den Schiebeeinheiten in dem Codierer sind ebenfalls je­ dem Teil der Daten zugeordnet. In dem Codierer wird kein Ver­ schachteln durchgeführt; jeder Teil der Daten ist einfach bit-ver­ packt.
In Ausführungsformen entweder mit mehreren tatsächlichen oder virtuellen Codierern ist ein Speicher jedem Teil der Daten zuge­ ordnet. Wenn eine Kompression beendet ist, ist eine verknüpfte Liste, welche den zugeordneten Speicher plus des Inhalts des zu­ geordneten Speichers beschreibt, das Ergebnis. Wenn der Speicher überläuft, bewirkt der Speicher-Zuordnungs-Leitweg, daß wichti­ gere Daten über weniger wichtige Daten geschrieben werden. Bei­ spielsweise kann das niedrigstwertige Bit von numerischen Daten als erstes überschrieben werden. Die Information, die be­ schreibt, wie ein Speicher zugeordnet wird, muß zusätzlich zu den codierten Daten gespeichert werden.
Fig. 24 zeigt ein Beispiel einer dynamischen Speicherzuordnungs­ einheit für drei Signifikanz-Kategorien. Es werden nur drei Ka­ tegorien beschrieben, um ein Unverständlichmachen der Erfindung zu vermeiden; üblicherweise würden eine größere Anzahl Katego­ rien, wie 8, 16 oder 18 verwendet werden. Eine Registerdatei (oder ein anderer Speicher) hält einen Speicher für jede signi­ fikante Kategorie plus einen weiteren Zeiger, um die nächste freie Speicherstelle anzuzeigen. Der Speicher ist in festes Sei­ tengrößen aufgeteilt.
Anfangs zeigt jeder Zeiger, welcher einer Signifikanz-Kategorie zugeordnet ist, auf den Beginn einer Speicherseite, und der freie Zeiger zeigt auf die nächste verfügbare Speicherseite. Co­ dierte Daten, die mit Hilfe einer Signifikanz-Kategorie identi­ fiziert worden sind, werden an der Speicherstelle gespeichert, welche durch den entsprechenden Zeiger adressiert worden ist. Der Zeiger wird dann auf die nächste Speicherstelle inkremen­ tiert.
Wenn der Zeiger das Maximum für die augenblickliche Seite er­ reicht, wird die Adresse des Startes der nächsten freien Seite, die in dem freien Zeiger gespeichert ist, mit der augenblickli­ chen als Verbindungsglied gespeichert. In einer Ausfüh­ rungsform könnte der Teil des codierten Datenspeichers oder ein gesonderter Speicher oder eine Registerdatei für diesen Zweck verwendet werden. Dann wird der augenblickliche Zeiger auf die nächste freie Seite gesetzt. Der freie Zeiger wird inkremen­ tiert. Diese Stufen bewirken, daß eine neue Speicherseite einer ganz bestimmten Signifikanz-Kategorie zugeordnet ist und Verbin­ dungsglieder zu Speicherseiten vorgesehen werden, welche Daten für eine gemeinsame Signifikanz-Kategorie enthalten, so daß die Zuordnungsreihenfolge während des Decodierens bestimmt werden kann.
Wenn alle Seiten in dem Speicher verwendet sind und es mehr Da­ ten gibt, welche signifikanter sind als die am wenigsten signi­ fikanten Daten in dem Speicher, kann ein Wiederzuordnen des Speichers durchgeführt werden. Drei derartige Zuordnungstechni­ ken werden beschrieben. In allen drei Fällen wird ein Speicher, der dem niedrigstwertigen Daten zugeordnet ist, wieder signifi­ kanteren Daten zugeordnet und es wird nicht mehr der niedrigst­ wertige Datenwert gespeichert.
Zuerst wird die Seite, die von den niedrigstwertigen Daten au­ genblicklich verwendet wird, einfach den höherwertigen Daten zu­ geordnet. Da typische Entropie-Coder interne Zustandsinformation verwenden, gehen alle niedrigstwertigen Daten, die vorher auf dieser Seite gespeichert sind, verloren. Zweitens wird die Seite, die gerade von den niedrigstwertigen Daten benutzt wird, den höherwertigen Daten zugeordnet. Im Unterschied zu dem vorhe­ rigen Fall wird der Zeiger auf das Ende der Seite gesetzt, und da höherwertige Daten auf der Seite geschrieben sind, wird der entsprechende Zeiger dekrementiert. Dies hat den Vorteil, daß die niedrigstwertigen Daten beim Start der Seite erhalten wer­ den, wenn die höherwertigen Daten nicht die ganze Seite erfor­ dern.
Drittens kann statt der aktuellen Seite mit niedrigstwertigen Daten, die wieder zuzuordnen sind, eine Seite von niedrigstwer­ tigen Daten wieder zugeordnet werden. Dies erfordert, daß die codierten Daten für alle Zeiten unabhängig codiert sind, welche die erreichte Kompression verringern können. Es ist auch erfor­ derlich, daß die uncodierten Daten, die dem Start aller Seiten entsprechen, identifiziert werden. Da eine Seite mit niedrigst­ wertigen Daten ausrangiert werden kann, ist eine größere Flexi­ bilität in der Quantisierung verfügbar.
Die dritte Alternative kann in einem System besonders attraktiv sein, das eine fest Kompressionsrate über Bereiche des Bildes erreicht. Eine genau festgelegte Anzahl Speicherseiten kann einem Bereich des Bildes zugeteilt werden. Ob weniger signifi­ kante Daten erhalten werden oder nicht, kann von der Kompression abhängen, die in einem ganz bestimmten Bereich erreicht worden ist. Der Speicher, der einem Bereich zugeordnet ist, kann nicht vollständig genutzt werden, wenn eine verlustfreie Kompression zugeordnet ist, die weniger als den Speicherplatz erfordert. Ein Erreichen einer fest vorgegebenen Kompressionsrate bei einem Be­ reich des Bildes kann einen direkten Zugriff auf die Bildberei­ che unterstützen.
Wenn eine Kompression beendet ist, können die Daten erforderli­ chenfalls an einen Kanal oder eine Speichereinrichtung in der Signifikanz-Reihenfolge übertragen werden. Die verschiedenen Bindeglieder und Zeichen würden dann nicht mehr länger benötigt werden und es könnte eine mehrfache Durchgang-Decodierung durch­ geführt werden. Andererseits können für ein Eindurchgang-Deco­ dieren die Zeiger der Daten der jeweiligen Signifikanz erhalten werden.
In einigen Anwendungsfällen können einige Signifikanz-Katego­ rien nicht verwendet werden. Beispielsweise kann ein 16 Bit-Kom­ pressor bei einem medizinischen 12 Bit-Bit verwendet werden, so daß Signifikanz-Kategorien, die Bitebenen 15 . . . 12 entsprechen, unbenutzt sein würden. In Implementationen mit großen Seiten und vielen ungenutzten Signifikanz-Kategorien würde dies Speicher­ platz vergeuden (wenn das System nicht im voraus erkennt, daß einige Kategorien nicht benutzt werden), da ihnen kein Speicher zugeordnet werden muß. Eine weitere Lösung bei dieser Speicher­ vergeudung würde darin bestehen, einen kleinen Speicher (oder ein entsprechendes Register) zu verwenden, um einen Zählwert für jede Signifikanz-Kategorie zu halten. Der Zählwert würde eine Speicherspur der Anzahl von "unbedeutenden, nicht-signifikanten Kinder" -Entscheidungen halten, die auftreten, bevor irgendeine andere Entscheidung vorkommt. Der Speicher, der erforderlich ist, um diese Zählwerte zu speichern, muß gegenüber dem Spei­ cher, der von nicht-genutzten Signifikanz-Kategorien benutzt worden ist, "ausgetauscht" werden.
Die Möglichkeit, Daten in jede Seite von beiden Enden her zu schreiben, kann benutzt werden, um den gesamten Speicherinhalt, der in dem System verfügbar ist, besser zu nutzen. Wenn alle Seiten zugeteilt sind, kann eine Seite, die ausreichend freien Platz an dem Ende hat, für eine Benutzung von diesem Ende her zugeteilt werden. Die Möglichkeit, beide Enden einer Seite zu benutzen, muß gegenüber den Kosten ausgeglichen sein, die Spei­ cherspur der Stelle zu halten, an welcher sich die zwei Datenty­ pen begegnen. Dies ist jedoch schwierig für den Fall, daß einer der Datentypen nicht signifikant war und einfach überschrieben werden könnte.
Verwenden eines Kanals
In einem System, bei welchem Daten in einem Kanal übertragen werden, statt in einem Speicher gespeichert zu werden und Spei­ cherseiten fest vorgegebener Größe verwendet werden (aber nur eine Seite pro Signifikanz-Kategorie benötigt wird), wird dies, wenn eine Speicherseite voll ist, in den Kanal übertragen, und eine Speicherstelle kann wieder benutzt werden, sobald die Daten übertragen sind. In einigen Anwendungsfällen kann die Seitengrö­ ße des Speichers die Größe von Datenpaketen sein, die in dem Ka­ nal verwendet werden, oder ein Mehrfaches der Paketgröße sein. (Zu beachten ist, daß in einer Ausführungsform zwei Seiten pro Signifikanz-Stufe verwendet werden können, so daß Daten in eine Seite geschrieben werden können, während die anderen für ein Ab­ geben an den Kanal gelesen werden).
In einigen Kommunikationssystem, beispielsweise ATM (asynchro­ ner Transfer-Mode), können Prioritäten Paketen zugeordnet wer­ den. ATM hat zwei Prioritätsstufen, eine primäre und eine sekun­ däre. Sekundäre Pakete werden nur übertragen, wenn ausreichende Bandbreite verfügbar ist. Ein Schwellenwert kann benutzt werden, um zu bestimmen, welche Signifikanz-Kategorien primär sind und welche sekundär sind. Ein anderes Verfahren würde darin beste­ hen, einen Schwellenwert an dem Codierer zu verwenden, um Signi­ fikanz-Kategorien nicht zu übertragen, die weniger signifikant waren als ein Schwellenwert.
Verlustbehaftete Kompression mit begrenztem Peakfehler
In einigen Anwendungen wird eine perfekte (verlustfreie) Rekon­ struktion nicht benötigt. Es kann jedoch wünschenswert sein, eine Kompression mit einem spezifizierten Maximum-Peakfehler zu er­ reichen. Der Peakfehler soll ±E sein. Dies kann durch Abschnei­ den der verdichteten Daten erreicht werden, so daß alle weniger signifikanten Daten, die nicht benötigt werden, um die geforder­ te Genauigkeit zu erreichen, ausgeschieden werden.
Ein andere Möglichkeit, um eine Kompression mit einem spezifi­ zierten Maximum-Peakfehler zu erreichen, ist durch einen Wert, der kleiner als oder gleich (2 × E +1) ist, jedes Pixel des zu komprimierenden Bildes (mit einer ganzzahligen Division) zu tei­ len. Während einer Rekonstruktion wird jedes Pixel in dem Bild verarbeitet mit:
Ausgabepixel = (2×E+1) × eingegebenes Pixel + E.
(Alternativ hierzu kann, statt E während einer Dekompression hinzuzufügen, eine Subtraktion während einer Kompression vor einem Teilen durch (2×E+1) vorkommen).
Ein anderer Weg, um eine Kompression mit einem spezifizierten Maximum-Peakfehler zu erreichen, besteht darin, die Division und Multiplikation durch Verschiebungen zu ersetzen. Der Verschiebe­ wert ist [log2 (2×E+1)]. Da ein Verschieben bequem ist, kann eine bessere Fehlerspezifizierung (ein Ersetzen des Peakfehlers) Feh­ ler der Form (-2n<Fehler<-2n) sein.
Das Vorhergehende sollte nicht mit einer Quantisierung von Koeffizienten verwechselt werden, was auf dem Gebiet der ver­ lustbehafteten Bildkompression allgemein bekannt ist. In vielen verlustbehafteten Kompressionssystemen (z. B. JPEG) werden Trans­ formations-Domänen-Koeffizienten einem Maximum-Peakfehler zuge­ ordnet, welcher nur indirekt den Peakfehler des Bildes steuert. Eine kritische Differenz besteht darin, daß die Erfindung die Quantisierung an Pixel durchführt, und eine verlustfreie Kom­ pression von Koeffizienten benutzt.
Eine Transformations-Domänenquantisierung kann ebenfalls be­ nutzt werden. Viele Koeffizienten haben eine Wirkung auf einen Peakfehler, der sich über mehrere Stufen/Ebenen der Transforma­ tion ausbreitet. Es ist leichter die Wirkung auf einen Peakfeh­ ler für Hochpaß-Koeffizienten zu bestimmen, die keine Kinder ha­ ben.
Es wird nunmehr ein eindimensionales Signal betrachtet, welches mit einem Maximum-Peakfehler von ±E zu codieren ist. Dies kann dadurch erreicht werden, daß die feinsten Hochpaß-Koeffizienten in ±2E quantisiert werden. Für ein zweidimensionales Signal kön­ nen, da es zwei Anwendungen des Hochpaßfilters gibt, die fein­ sten HH-Koeffizienten mit ±4E quantisiert werden.
Eine Alternative, uni eine Quantisierung bei dem eingegebenen Bild anzuwenden, besteht darin, die Entscheidungen in dem Entropie-Coder Zu steuern. Ein Beispiel hierfür ist das folgen­ de. Für jeden Koeffizienten wird, wenn ein Einstellen des Koef­ fizienten auf null den Fehler in irgendeinem Pixel nicht hervor­ rufen würde, das durch diesen Koeffizienten beeinflußt worden ist, um den Maximum-Fehler zu überschreiten, der Koeffizient null gesetzt. In einigen Implementierungen werden nur ganz be­ stimmte Koeffizienten geprüft, vielleicht nur die Wechselstrom- Koeffizienten, welche keine Kinder haben. Koeffizienten können mit einer gierigen Strategie betrachtet werden, wobei einer zu einer bestimmten Zeit betrachtet wird. Andere Strategien können kleine Gruppen von Koeffizienten berücksichtigen und auswählen, um die größtmögliche Untermenge der Gruppen zu null zumachen.

Claims (21)

1. Verfahren zum Codieren eingegebener Daten, welches die Schritte aufweist:
Erzeugen transformierter Signale entsprechend den eingegebenen Daten, wobei die transformierten Signale mit Hilfe einer rever­ siblen Wavelet-Transformation erzeugt werden, und
Komprimieren der transformierten Signale in Daten, die eine verlustfreie komprimierte Version der eingegebenen Daten dar­ stellen.
2. Verfahren nach Anspruch 1, bei welchem die transformierten Signale eine Anzahl Koeffizienten aufweisen.
3. Verfahren nach Anspruch 1, bei welchem der Schritt, Erzeu­ gen, ein Zerlegen der eingegebenen Daten durch Verwenden minde­ stens eines reversiblen Filters nicht-minimaler Länge ein­ schließt, um eine Reihe von Koeffizienten zu erzeugen.
4. Verfahren nach Anspruch 3, bei welchem das zumindest eine reversible Filter nicht-minimaler Länge eine Anzahl eindimen­ sionaler Filter aufweist.
5. Verfahren nach Anspruch 1, bei welchem die eingegebenen Da­ ten Bilddaten aufweisen.
6. Verfahren nach Anspruch 1, bei welchem der Schritt, Verdich­ ten, ein eingebettetes Codieren der transformierten Signale um­ faßt, einschließlich der Schritte, Ordnen der Koeffizientenrei­ he und Durchführen einer Bit-Signifikanz-Einbettung an den transformierten Signalen.
7. Verfahren nach Anspruch 1, das ferner die Schritte aufweist:
Dekomprimieren der verlustfrei komprimierten Version der einge­ gebenen Daten in transformierte Signale, und
Erzeugen der eingegebenen Daten aus den transformierten Signa­ len in einer rekonstruierten Version der eingegebenen Daten mit Hilfe einer inversen, reversiblen Wavelet-Transformation.
8. Verfahren zum Decodieren von Daten in ursprüngliche Daten, welches die Schritte aufweist:
Dekomprimieren einer verlustfrei komprimierten Version von ein­ gegebenen Daten in eine Anzahl transformierter Signale, und
Erzeugen einer rekonstruierten Version von ursprünglichen Daten aus der Anzahl transformierter Signale mit Hilfe einer inversen reversiblen Wavelet-Transformation.
9. Verfahren nach Anspruch 8, bei welchem die transformierten Signale eine Anzahl Koeffizienten aufweisen.
10. Verfahren nach Anspruch 8, bei welchem der Schritt, Erzeu­ gen, ein Zerlegen der eingegebenen Daten mit Hilfe zumindest eines reversiblen Filters nicht-minimaler Länge einschließt, um eine Reihe von Koeffizienten zu erzeugen.
11. Verfahren nach Anspruch 10, bei welchem das zumindest eine reversible Filter nicht-minimaler Länge eine Anzahl eindimen­ sionaler Filter aufweist.
12. Verfahren zum Codieren von eingegebenen Daten, welches die Schritte aufweist:
Erzeugen einer ersten Anzahl transformierter Signale entspre­ chend den eingegebenen Daten, wobei die transformierten Signale mit Hilfe einer reversiblen Wavelet-Transformation erzeugt wer­ den;
Komprimieren der ersten Anzahl transformierter Signale in Da­ ten, welche eine verlustfrei komprimierte Version der eingege­ benen Daten darstellen;
Dekomprimieren der verlustfrei komprimierten Version der einge­ gebenen Daten in eine zweite Anzahl transformierter Signale, und
Erzeugen der eingegebenen Daten aus der zweiten Anzahl trans­ formierter Signale in eine rekonstruierte Version der eingege­ benen Daten mit Hilfe einer inversen, reversiblen Wavelet- Transformation.
13. Verfahren zum Codieren eingegebener Daten, welche die Schritte aufweist:
Codieren durch Transformation der eingegebenen Daten in eine Reihe Koeffizienten, und
eingebettetes Codieren der Reihe Koeffizienten einschließlich der Schritte, Ordnen der Reihe von Koeffizienten und Durchfüh­ ren einer Bit-Signifikanz-Einbettung bei der Reihe Koeffizien­ ten, wobei eine erste Art von eingebettetem Codieren an einem ersten Teil der Daten durchgeführt wird, und eine zweite Art von eingebettetem Codieren an einem zweiten Teil der Daten durchgeführt wird.
14. Verfahren nach Anspruch 13, bei welchem der Schritt Codie­ ren durch Transformation eine Wavelet-Filterung der eingegebe­ nen Daten einschließt.
15. Verfahren nach Anspruch 13, bei welchem die erste Art von eingebettetem Codieren ein Baumcodieren beinhaltet.
16. Verfahren nach Anspruch 13, bei welchem der Schritt, einge­ bettetes Codieren ein Formatieren der Reihe von Koeffizienten in ein Vorzeichen-Größen-Format beinhaltet.
17. Verfahren zum Codieren eingegebener Daten, welches die Schritte aufweist:
Transformieren eingegebener Daten in Reihe von Koeffizienten durch Verwenden reversibler Wavelets;
Umwandeln der Reihe Koeffizienten in einem Vorzeichen-Größen- Format in eine Reihe formatierter Koeffizienten;
Codieren eines ersten Teils der Reihe formatierter Koeffizien­ ten mit Hilfe einer ersten Art eingebetteten Codierens, um einen ersten Bitstrom zu erzeugen, und
Codieren eines zweiten Teils der Serie formatierter Koeffizien­ ten durch Verwenden einer zweiten Art eingebetteten Codierens, um einen zweiten Bitstrom zu erzeugen, wobei der erste und der zweite Bitstrom in einen einzigen Bitstrom kombiniert werden.
18. Verfahren nach Anspruch 15, welches ein Entropie-Codieren des einzigen Bitstroms einschließt.
19. Verfahren nach Anspruch 17, bei welchem die erste Art Co­ dieren ein Baumanordnungs-Codieren aufweist.
20. Verfahren nach Anspruch 17, bei welchem der erste Teil hö­ herwertige Bits und der zweite Teil niederwertige Bits auf­ weist.
21. Verfahren nach Anspruch 17, bei welchem der einzige Bit­ strom eine verlustfrei komprimierte Version der eingegebenen Daten darstellt.
DE19534730A 1994-09-20 1995-09-19 Verfahren zum Codieren und Decodieren von Daten Expired - Fee Related DE19534730B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US31014194A 1994-09-20 1994-09-20
US08/310,141 1994-09-20

Publications (2)

Publication Number Publication Date
DE19534730A1 true DE19534730A1 (de) 1996-05-02
DE19534730B4 DE19534730B4 (de) 2006-04-27

Family

ID=23201171

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19534730A Expired - Fee Related DE19534730B4 (de) 1994-09-20 1995-09-19 Verfahren zum Codieren und Decodieren von Daten

Country Status (4)

Country Link
US (1) US7418142B2 (de)
JP (1) JP3302229B2 (de)
DE (1) DE19534730B4 (de)
NL (1) NL1001247C2 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6577770B1 (en) 1997-10-08 2003-06-10 Luratech Gesellschaft Fuer Luft-Und Raumfahrttechnologie & Multimedia Mbh System and method for a multidimensional, discrete wavelet-transformation
DE19819405B4 (de) * 1997-05-01 2006-06-29 Ricoh Co., Ltd. Implementation eines reversiblen eingebetteten Wavelet-Systems
US8565298B2 (en) 1994-09-21 2013-10-22 Ricoh Co., Ltd. Encoder rate control

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3471366B2 (ja) * 1997-07-30 2003-12-02 三菱電機株式会社 画像圧縮・伸張方法および画像圧縮・伸張装置
US7065253B2 (en) * 1999-09-03 2006-06-20 Intel Corporation Wavelet zerotree coding of ordered bits
DE10146582A1 (de) * 2001-09-21 2003-04-24 Micronas Munich Gmbh Vorrichtung und Verfahren zur Teilbandzerlegung von Bildsignalen
JP2004015741A (ja) * 2002-06-11 2004-01-15 Fujitsu Ltd 画像処理方法、画像処理プログラムおよび画像処理装置
US7395210B2 (en) * 2002-11-21 2008-07-01 Microsoft Corporation Progressive to lossless embedded audio coder (PLEAC) with multiple factorization reversible transform
US7826670B2 (en) * 2005-06-15 2010-11-02 Fujifilm Corporation Data compression apparatus and data compression program storage medium
JP4360379B2 (ja) * 2006-05-16 2009-11-11 ソニー株式会社 画像処理装置及び画像処理方法、プログラム及び記録媒体
JP5035154B2 (ja) * 2008-03-07 2012-09-26 富士通株式会社 映像信号処理装置及び映像信号処理方法
JP2009290552A (ja) * 2008-05-29 2009-12-10 Fujifilm Corp 動画圧縮装置および動画圧縮プログラム
US8538189B2 (en) * 2008-11-14 2013-09-17 Ati Technologies Ulc Image noise filter and method
US9185423B2 (en) * 2009-02-12 2015-11-10 Zoran (France) S.A. Frame buffer compression for video processing devices
US8559733B2 (en) * 2009-03-31 2013-10-15 Citrix Systems, Inc. Methods and systems for approximating progressive image encoding using image partitioning
JP2011019008A (ja) * 2009-07-07 2011-01-27 Fujifilm Corp 動画圧縮送信装置、動画圧縮送信プログラム、および動画圧縮送信方法
KR101739603B1 (ko) * 2009-08-20 2017-05-24 톰슨 라이센싱 2진 세트들을 인코딩 및 디코딩하기 위해 트리 구조들을 재이용하는 방법 및 장치
US8793391B2 (en) * 2010-11-30 2014-07-29 Deutsche Telekom Ag Distortion-aware multihomed scalable video streaming to multiple clients
US20160029024A1 (en) * 2011-08-10 2016-01-28 Zoran (France) S.A. Frame buffer compression for video processing devices
US20130166767A1 (en) * 2011-11-23 2013-06-27 General Electric Company Systems and methods for rapid image delivery and monitoring
FR3005816B1 (fr) * 2013-05-17 2019-11-29 Jean-Claude Colin Procede pour encoder, notamment des images compressees, notamment par "range coder" ou compression arithmetique.
US8879858B1 (en) 2013-10-01 2014-11-04 Gopro, Inc. Multi-channel bit packing engine
US9423455B2 (en) * 2014-12-15 2016-08-23 Genesys Testware, Inc. Design-for-test techniques for a digital electronic circuit
US20160234529A1 (en) * 2015-02-05 2016-08-11 Syed Shakir Iqbal Method and apparatus for entropy encoding and decoding
US10462490B2 (en) * 2015-11-06 2019-10-29 Raytheon Company Efficient video data representation and content based video retrieval framework
CN112995637B (zh) * 2021-03-10 2023-02-28 湘潭大学 一种基于三维离散小波变换的多剖面医学图像压缩方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5014134A (en) * 1989-09-11 1991-05-07 Aware, Inc. Image compression method and apparatus

Family Cites Families (106)

* 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
DE2640157C2 (de) 1976-09-07 1982-10-07 Philips Patentverwaltung Gmbh, 2000 Hamburg Verfahren und Anordnung zum redundanzvermindernden Codieren von Bildern
DE2640140C2 (de) 1976-09-07 1982-10-07 Philips Patentverwaltung Gmbh, 2000 Hamburg Verfahren und Anordnung zur redundanzvermindernden Bildcodierung
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
US4393456A (en) 1981-03-19 1983-07-12 Bell Telephone Laboratories, Incorporated Digital filter bank
EP0070948B1 (de) 1981-07-28 1985-07-10 International Business Machines Corporation Sprachkodierungsverfahren und Ausführungsanordnung für das genannte Verfahren
US4437087A (en) 1982-01-27 1984-03-13 Bell Telephone Laboratories, Incorporated Adaptive differential PCM coding
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
US4751742A (en) * 1985-05-07 1988-06-14 Avelex Priority coding of transform coefficients
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
BE1000643A5 (fr) 1987-06-05 1989-02-28 Belge Etat Procede de codage de signaux d'image.
EP0294957B1 (de) 1987-06-09 1995-04-12 Sony Corporation 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
US4881075A (en) 1987-10-15 1989-11-14 Digital Equipment Corporation Method and apparatus for adaptive data compression
US5156943A (en) 1987-10-25 1992-10-20 Whitney Theodore R High resolution imagery systems and methods
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
US4858017A (en) * 1988-01-22 1989-08-15 The Trustees Of Columbia University In The City Of New York System and method for hierarchal image encoding and decoding
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
US5018210A (en) 1988-03-25 1991-05-21 Texas Instruments Incorporated Pattern comparator with substage illumination and polygonal data representation
US5095447A (en) 1988-03-25 1992-03-10 Texas Instruments Incorporated Color overlay of scanned and reference images for display
US4897717A (en) 1988-03-30 1990-01-30 Starsignal, Inc. Computer-based video compression system
EP0339589A3 (de) 1988-04-28 1992-01-02 Sharp Kabushiki Kaisha Orthogonales Transformationskodierungssystem für Bilddaten
US4982283A (en) 1988-05-06 1991-01-01 General Electric Company Line-sequential pyramid processing of a plurality of raster-scanned image variables
US4899147A (en) 1988-06-03 1990-02-06 Unisys Corporation Data compression/decompression apparatus with throttle, start-up and backward read controls
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
US4929946A (en) 1989-02-09 1990-05-29 Storage Technology Corporation Adaptive data compression apparatus including run length encoding for a tape drive system
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
US5097261A (en) 1989-11-22 1992-03-17 International Business Machines Corporation Data compression for recording on a record medium
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
US4973961A (en) 1990-02-12 1990-11-27 At&T Bell Laboratories Method and apparatus for carry-over control in arithmetic entropy coding
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
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
GB2252002B (en) 1991-01-11 1995-01-04 Sony Broadcast & Communication Compression of video signals
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
US5276525A (en) 1991-03-22 1994-01-04 Bell Communications Research, Inc. Two-dimensional block scanning for subband image and video coding
US5262958A (en) 1991-04-05 1993-11-16 Texas Instruments Incorporated Spline-wavelet signal analyzers and methods for processing signals
AU1996292A (en) * 1991-05-17 1992-12-30 Analytic Sciences Corporation, The Continuous-tone image compression
US5235434A (en) 1991-06-27 1993-08-10 Polaroid Corporation Method and apparatus for selectively adjusting the brightness of large regions of an image
US5349348A (en) 1991-08-15 1994-09-20 International Business Machines Corporation Multi-mode data stream generator
US5315670A (en) 1991-11-12 1994-05-24 General Electric Company Digital data compression system including zerotree coefficient coding
GB2262854B (en) * 1991-12-24 1995-05-24 Sony Broadcast & Communication Image processing apparatus
US5347479A (en) 1991-12-27 1994-09-13 Nec Corporation Small-size wavelet transform apparatus
CA2088082C (en) * 1992-02-07 1999-01-19 John Hartung Dynamic bit allocation for three-dimensional subband video coding
US5321776A (en) 1992-02-26 1994-06-14 General Electric Company Data compression system including successive approximation quantizer
KR0150955B1 (ko) 1992-05-27 1998-10-15 강진구 비트고정을 위한 영상압축방법과 신장방법 및 그 장치
US5511151A (en) 1992-06-10 1996-04-23 Canon Information Systems, Inc. Method and apparatus for unwinding image data
JPH0638193A (ja) * 1992-07-17 1994-02-10 Casio Comput Co Ltd 画像圧縮装置
US5379355A (en) 1992-08-24 1995-01-03 Ricoh Corporation Data encoding using one or more adaptive decision trees
US5638498A (en) 1992-11-10 1997-06-10 Adobe Systems Incorporated Method and apparatus for reducing storage requirements for display data
US5563960A (en) 1993-01-22 1996-10-08 David Sarnoff Research Center, Inc. Apparatus and method for emphasizing a selected region in the compressed representation of an image
US5412741A (en) * 1993-01-22 1995-05-02 David Sarnoff Research Center, Inc. Apparatus and method for compressing information
US5414780A (en) 1993-01-27 1995-05-09 Immix Method and apparatus for image data transformation
IL104636A (en) 1993-02-07 1997-06-10 Oli V R Corp Ltd Apparatus and method for encoding and decoding digital signals
US5381145A (en) 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
JP2933457B2 (ja) 1993-02-18 1999-08-16 日本電気株式会社 ウェーブレット変換符号化方法
US5420891A (en) 1993-03-18 1995-05-30 New Jersey Institute Of Technology Multiplierless 2-band perfect reconstruction quadrature mirror filter (PR-QMF) banks
US5546477A (en) 1993-03-30 1996-08-13 Klics, Inc. Data compression and decompression
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
JP2720926B2 (ja) 1993-10-26 1998-03-04 富士ゼロックス株式会社 画像符号化装置
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
JPH09507730A (ja) * 1994-01-14 1997-08-05 ヒューストン・アドバンスト・リサーチ・センター ビデオ・イメージに対する境界スプライン・ウエーブレット圧縮
US5541594A (en) * 1994-03-28 1996-07-30 Utah State University Foundation Fixed quality source coder with fixed threshold
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
US5566089A (en) 1994-10-26 1996-10-15 General Instrument Corporation Of Delaware Syntax parser for a video decompression processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5014134A (en) * 1989-09-11 1991-05-07 Aware, Inc. Image compression method and apparatus

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8565298B2 (en) 1994-09-21 2013-10-22 Ricoh Co., Ltd. Encoder rate control
DE19819405B4 (de) * 1997-05-01 2006-06-29 Ricoh Co., Ltd. Implementation eines reversiblen eingebetteten Wavelet-Systems
US6577770B1 (en) 1997-10-08 2003-06-10 Luratech Gesellschaft Fuer Luft-Und Raumfahrttechnologie & Multimedia Mbh System and method for a multidimensional, discrete wavelet-transformation

Also Published As

Publication number Publication date
DE19534730B4 (de) 2006-04-27
JP3302229B2 (ja) 2002-07-15
US7418142B2 (en) 2008-08-26
NL1001247C2 (nl) 1997-05-27
NL1001247A1 (nl) 1996-03-20
JPH08116265A (ja) 1996-05-07
US20020048405A1 (en) 2002-04-25

Similar Documents

Publication Publication Date Title
DE19626600C2 (de) Kodierer und Verfahren zum Kodieren
DE19534730B4 (de) Verfahren zum Codieren und Decodieren von Daten
DE19626615C2 (de) Verfahren und Apparat zur Kompression, das bzw. der reversible Wavelet-Transformationen und einen eingebetteten Kodestrom verwendet
DE19534943B4 (de) Vorrichtung zur Komprimierung unter Verwendung von eingebetteten Kleinwellen
DE19861377B4 (de) Ein verbessertes Kompressions- und Dekompressionssystem mit reversiblen Wavelets und verlustbehafteter Rekonstruktion
US7068849B2 (en) Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
DE69722601T2 (de) Datenkompression mit hybrider verlustloser entropiekodierung von run-length codes
DE602004002525T2 (de) Verfahren zum Umcodieren eines nach JPEG2000 komprimierten Bildes
DE69635055T2 (de) Kodierung von zerotree-informationen in einem bildkodierungssystem mit wavelettransformation
DE19506164A1 (de) Verfahren zum Komprimieren eingegebener Symbole in Codeworte
DE102007020292A1 (de) Verfahren zur Komprimierung von Daten unter Verwendung einer Lauflängen-Kodierung insbesondere für medizinische Bilddaten
EP1472888B1 (de) Kontextsensitive kodierung und dekodierung eines videodatenstroms
DE19819405B4 (de) Implementation eines reversiblen eingebetteten Wavelet-Systems
DE60012717T2 (de) Bildcodierung unter verwendung einer umordnung von wavelet-koeffizienten
DE19944213C1 (de) Verfahren zum Komprimieren eines digitalen Bildes mit mehreren Bit-Ebenen
GB2313757A (en) Method using an embedded codestream
DE19549491C2 (de) Entropie-Codierer
GB2302244A (en) Wavelet transform filter

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140401