DE19819405A1 - Data compression system for wavelet transform - Google Patents
Data compression system for wavelet transformInfo
- Publication number
- DE19819405A1 DE19819405A1 DE19819405A DE19819405A DE19819405A1 DE 19819405 A1 DE19819405 A1 DE 19819405A1 DE 19819405 A DE19819405 A DE 19819405A DE 19819405 A DE19819405 A DE 19819405A DE 19819405 A1 DE19819405 A1 DE 19819405A1
- Authority
- DE
- Germany
- Prior art keywords
- bit
- data
- coefficients
- coefficient
- tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/36—Scalability techniques involving formatting the layers as a function of picture distortion after decoding, e.g. signal-to-noise [SNR] scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/15—Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/115—Selection of the code volume for a coding unit prior to coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
Die vorliegende Erfindung betrifft das Gebiet der Datenkompressions- und -dekom pressionssysteme; insbesondere betrifft die vorliegende Erfindung ein Verfahren und einen Apparat zum verlustfreien und verlustbehafteten Codieren und Decodieren von Daten in Kompressions-/Dekompressionssystemen.The present invention relates to the field of data compression and decompression expression systems; In particular, the present invention relates to a method and an apparatus for lossless and lossy coding and decoding of Data in compression / decompression systems.
Die Datenkompression ist ein extrem nützliches Werkzeug, um große Datenmengen zu speichern und zu übertragen. Zum Beispiel wird die Zeit, die erforderlich ist, um ein Bild, wie z. B. eine Faksimileübertragung eines Dokuments, zu übertragen, drastisch reduziert, wenn eine Kompression verwendet wird, um die Anzahl von Bits zu verrin gern, die zur Erzeugung des Bildes benötigt werden.Data compression is an extremely useful tool for large amounts of data save and transfer. For example, the time required is one Picture, such as As a facsimile transmission of a document to transfer, drastically reduces when compression is used to reduce the number of bits like that needed to create the image.
Viele verschieden Datenkompressionstechniken gibt es in dem Stand der Technik. Kompressionstechniken können in zwei große Kategorien aufgeteilt werden, verlustbe haftetes Codieren und verlustfreies Codieren. Verlustbehaftetes Codieren schließt das Codieren ein, das zum Verlust von Information führt, so daß es keine Garantie für eine perfekte Rekonstruktion ursprünglicher Daten gibt. Das Ziel einer verlustbehafteten Kompression ist es, daß Änderungen an den ursprünglichen Daten in einer solchen Art und Weise durchgeführt werden, daß sie nicht beanstandbar oder detektierbar sind. Bei einer verlustfreien Kompression wird die gesamte Information aufrechterhalten bzw. beibehalten und die Daten werden in einer Art und Weise komprimiert, die eine perfekte Rekonstruktion ermöglicht.Many different data compression techniques exist in the art. Compression techniques can be divided into two broad categories, loss sticky coding and lossless coding. Lossy coding closes this Encoding, which leads to the loss of information, so that there is no guarantee of a perfect reconstruction of original data. The goal of a lossy Compression is that changes to the original data in such a way and that they are not objectionable or detectable. at lossless compression, the entire information is maintained or maintained and the data is compressed in a way that a perfect reconstruction allows.
Bei einer verlustfreien Kompression werden Eingangssymbole oder Intensitätsdaten konvertiert, um Codewörter auszugeben. Die Eingabe kann folgende Daten enthalten: Bilddaten, Audiodaten, eindimensionale Daten (z. B. Daten, die sich räumlich oder zeitlich ändern), zweidimensionale Daten (z. B. Daten, die sich in zwei räumliche Richtungen ändern (oder eine räumliche Dimension und eine zeitliche Dimension ändern)), oder mehrdimensionale/multispektrale Daten. Falls die Kompression erfolg reich ist, werden die Codewörter durch weniger Bits dargestellt als die Anzahl der Bits, die für die uncodierten Eingangssymbole (oder Intensitätsdaten) notwendig waren. Verlustfreie Codierverfahren beinhalten lexikalische Verfahren ("dictionary methods") des Codierens (z. B. Lempel-Ziv), Lauflängencodieren, aufzählendes Codieren ("enu merative coding") und Entropiecodieren. Bei einer verlustfreien Bildkompression basiert die Kompression auf Vorhersagen oder Kontexten plus dem Codieren. Der JPEG-Standard für Faksimilekompression (ISO/IEC 11544) und DPCM (Differenzpuls codemodulation bzw. "Differential Pulse Code Modulation" - eine Option in dem JPEG-Standard (SIO/IEC 10918)) für Bilder mit kontinuierlicher Tönung stellen Beispiele für eine verlustfreie Kompression von Bildern dar. Bei der verlustbehafteten Kompression werden Eingangssymbole oder Intensitätsdaten vor der Konversion zu Ausgabecodewörtern quantisiert. Die Quantisierung ist dafür gedacht, relevante Cha rakteristiken der Daten beizubehalten, während unwichtige Charakteristiken beseitigt werden. Vor der Quantisierung verwenden verlustbehaftete Systeme häufig eine Transformation, um eine Energieverdichtung ("energy compaction") bereitzustellen. JPEG stellt ein Beispiel für ein verlustbehaftetes Codierverfahren für Bilddaten dar.In lossless compression, input symbols or intensity data become converted to output code words. The input can contain the following data: Image data, audio data, one-dimensional data (eg, data that is spatially or temporal change), two-dimensional data (eg, data that is divided into two spatial data) Change directions (or a spatial dimension and a temporal dimension change)), or multidimensional / multispectral data. If the compression succeed rich, the codewords are represented by fewer bits than the number of bits, which were necessary for the uncoded input symbols (or intensity data). Lossless coding methods include lexical methods ("dictionary methods") coding (e.g., Lempel-Ziv), run-length coding, enumerating coding ("enu merative coding ") and entropy coding, for lossless image compression Compression is based on predictions or contexts plus coding. The JPEG standard for facsimile compression (ISO / IEC 11544) and DPCM (differential pulse Code modulation or "Differential Pulse Code Modulation" - an option in the JPEG standard (SIO / IEC 10918)) for continuous tone images Examples of lossless compression of images. In the lossy Compression becomes input symbols or intensity data before conversion Output codewords quantized. Quantization is meant to be relevant cha characteristics of the data while eliminating unimportant characteristics become. Lossy systems often use one before quantization Transformation to provide an energy compaction. JPEG is an example of a lossy coding method for image data.
Kürzliche Entwicklungen bei der Bildsignalverarbeitung konzentrieren weiter ihre Aufmerksamkeit auf den Bedarf nach effizienten und wirksamen Formen der Daten kompressionscodierung. Verschiedene Formen einer Transformation oder pyramidalen Signalverarbeitung sind vorgeschlagen worden, und zwar einschließlich der Mehrfach auflösungs-Pyramidalverarbeitung ("multi-resolution pyramidal processing") und der Wavelet-Pyramidalverarbeitung ("wavelet pyramidal processing"). Diese Formen werden ebenso als Unterbandverarbeitung ("subband processing") und hierarchische Verarbeitung ("hierarchical processing") bezeichnet. Die Wavelet-Pyramidalverarbei tung von Bilddaten stellt einen spezifischen Typ einer Mehrfachauflösungs-Pyramidal verarbeitung dar, die Quadratur-Spiegelfilter (QMFs bzw. "Quadrature Mirror Filters") verwenden kann, um Unterbandzerlegungen eines Originalbildes zu erzeugen. Bemer kenswert ist, daß andere Typen von Nicht-QMF-Wavelets existieren. Für mehr Infor mation hinsichtlich der Waveletverarbeitung wird auf Antonini, M., et al. "Image Coding Using Wavelet Transform", IEEE Transactions on Image Processing, Band 1, Nr. 2, April 1992; Shapiro, J. "An Embedded Hierarchical Image Coder Using Zerotrees of Wavelet Coefficients", Proc. IEEE Data Compression Conference, Seiten 214-223, 1993, verwiesen. Hinsichtlich der Information über reversible Transformatio nen wird auf Said, A. und Pearlman, W. "Reversible Image Compression via Multire solution Representation and Predictive Coding", Dept. of Electrical, Computer and Systems Engineering, Renssealaer Polytechnic Institute, Troy, NY 1993, verwiesen.Recent developments in image signal processing continue to focus on their Attention to the need for efficient and effective forms of data compression coding. Different forms of a transformation or pyramidal Signal processing has been proposed, including multiple pyramidal processing ("multi-resolution pyramidal processing") and the Wavelet pyramidal processing ("wavelet pyramidal processing"). These forms are also called subband processing and hierarchical Called "hierarchical processing". The wavelet pyramidal processing Image data represents a specific type of multi-resolution pyramidal processing, the quadrature mirror filters (QMFs or "Quadrature Mirror Filters") can use to create subband decompositions of an original image. Bemer It is worth noting that other types of non-QMF wavelets exist. For more information With regard to wavelet processing, Antonini, M., et al. "Image Coding Using Wavelet Transform, IEEE Transactions on Image Processing, Volume 1, No. 2, April 1992; Shapiro, J. "An Embedded Hierarchical Image Coder Using Zerotrees of Wavelet Coefficients, "Proc. IEEE Data Compression Conference, pp. 39-44 214-223, 1993. Regarding the information about reversible transformation Said, A. and Pearlman, W. "Reversible Image Compression via Multire Solution Representation and Predictive Coding ", Dept. of Electrical, Computer and Systems Engineering, Renssealer Polytechnic Institute, Troy, NY 1993.
Eine Kompression benötigt häufig sehr viel Zeit und ist speicherintensiv. Es ist wün schenswert, die Kompression schneller und/oder mit einem reduzierten Speicher durchzuführen, wenn es möglich ist. Manche Anwendungen haben nie eine Kom pression verwendet, weil entweder die Qualität nicht gewährleistet werden konnte, die Kompressionsrate nicht hoch genug war oder die Datenrate nicht steuerbar war. Jedoch ist die Verwendung einer Kompression wünschenswert, um die Informationsmenge, die übertragen und/oder gespeichert werden soll, zu reduzieren.Compression often takes a long time and is memory intensive. It's okay worth the compression faster and / or with a reduced memory to carry out, if possible. Some applications never have a com used because either the quality could not be guaranteed, the Compression rate was not high enough or the data rate was uncontrollable. however the use of compression is desirable to reduce the amount of information that transmitted and / or stored to reduce.
Digitale Kopierer, Drucker, Scanner und multifunktionale Maschinen werden mit einer Vollbildspeicherung stark verbessert. Eine komprimierte Vollbildspeicherung reduziert den Speicher und somit die Kosten, die für eine Vollbildspeicherung bei diesen Pro dukten notwendig sind. Jedoch werden viele Vollbildspeicherungen mit Speichern mit wahlfreiem Zugriff (RAMs) implementiert bzw. realisiert. Ein RAM ist schnell aber im allgemeinen teuer. Festplatten können ebenso als Speicher verwendet werden und werden im allgemeinen als günstig angesehen (oder im allgemeinen als weniger teuer als die RAM). Deshalb würde es jeder Systemhersteller als einen Vorteil bei der Erzeugung eines weniger teuren Systems ansehen, eine Festplatte für die Zwecke, wie z. B. Vollbildspeicher, anstelle eines RAM's zu verwenden.Digital copiers, printers, scanners and multifunctional machines come with a Frame storage greatly improved. A compressed frame storage reduced the memory and thus the cost for a full-frame storage in this Pro are necessary. However, many full-frame stores come with stores random access (RAMs) implemented. RAM is fast but im generally expensive. Hard disks can also be used as storage and are generally considered cheap (or generally less expensive) as the RAM). Therefore, it would be a benefit for any system manufacturer Generation of a less expensive system, consider a hard drive for the purpose, such as z. As frame memory, instead of a RAM to use.
Ein Problem bei der Verwendung von Festplatten für die zeitempfindlichen Anwendun gen ist, daß es schwierig ist, auf Information von einer Festplatte so schnell direkt zuzugreifen, wie man auf dieselbe Information von einem RAM zugreifen könnte. Ebenso verwenden viele Festplatten eine Kompression, wenn sie Information auf der Platte speichern, um die Informationsmenge zu erhöhen, die auf der Festplatte gespei chert werden kann. Die Zeit, die notwendig ist, um die Kompression durchzuführen, kann ebenso von einer Verwendung von Festplatten bei zeitempfindlichen Anwendun gen abschrecken. Sowohl die langsame Geschwindigkeit, die der Verwendung von Festplatten inhärent ist, als auch die Verwendung der Kompression macht die Verwen dung von Festplatten bei zeitsensitiven Anwendungen zu einem schwierigen Implemen tationsthema.A problem with using hard disks for time-sensitive applications It is difficult to directly access information from a hard disk to access how to access the same information from a RAM. Likewise, many hard disks use compression when they have information on the hard disk Save disk to increase the amount of information stored on the hard disk can be chert. The time it takes to complete the compression can also benefit from using hard drives in time-sensitive applications put off. Both the slow speed, the use of Hard disk is inherent, as well as the use of compression makes the Verwen hard drives in time-sensitive applications can be difficult to implement tationsthema.
Die vorliegende Erfindung stellt eine schnelle verlustbehaftete/verlustfreie Kompression bereit. Die vorliegende Erfindung stellt Systemimplementationen dar, die die Verwen dung einer kostengünstigen Festplattentechnologie anstelle eines teueren RAM erlaubt. Weiter stellte die vorliegende Erfindung einen Ratenabgleich bzw. eine Geschwindig keitsanpassung für eine Festplatte bereit und stellt eine Kompression bereit, um die Festplatte an Bandbreiten anderer Teile der Systemimplementation, wie z. B. eine Druckmaschine oder eine Bilderzeugungseinrichtung, anzupassen. Die vorliegende Erfindung stellt ebenso die Verwendung eines RAM bereit, wo die Zeit zur Kom pression und Dekompression nicht viel langsamer ist als die RAM-Geschwindigkeit. Auf diese Art und Weise führt die vorliegende Erfindung eine Geschwindigkeits anpassung an ein RAM durch. The present invention provides fast lossy / lossless compression ready. The present invention represents system implementations that use the low-cost hard disk technology instead of expensive RAM. Further, the present invention provides rate matching Ready for a hard drive and provides compression to the Hard disk to bandwidths of other parts of the system implementation, such as. Legs Printing machine or an image forming device to adapt. The present The invention also provides for the use of RAM where time is spent on comm compression and decompression is not much slower than the RAM speed. In this way, the present invention performs a speed adaptation to a RAM by.
Ein Verfahren und ein Apparat zur Durchführung einer Kompression und/oder einer Dekompression werden beschrieben. Bei einer Ausführungsform umfaßt die vorliegen de Erfindung ein System mit einem Puffer, einer Wavelet-Transformationseinheit und einem Codierer. Die Wavelet-Transformationseinheit weist einen Eingang auf, der an den Puffer angeschlossen ist, um eine Wavelet-Transformation mit Pixeln durch zuführen, die darin gespeichert sind, und um Koeffizienten an einem Ausgang zu erzeugen. Der Codierer ist an eine Wavelet-Transformationseinheit angeschlossen, um die transformierten Pixel zu codieren, die von dem Puffer empfangen wurden.A method and apparatus for performing compression and / or compression Decompression will be described. In one embodiment, the present invention de invention a system with a buffer, a wavelet transform unit and an encoder. The wavelet transformation unit has an input which is on The buffer is connected to a wavelet transformation with pixels through to store coefficients stored at one output produce. The encoder is connected to a wavelet transform unit to to encode the transformed pixels received from the buffer.
Bei der folgenden Beschreibung werden weitere Merkmale offenbart. Dabei können verschiedene Merkmale unterschiedlicher Ausführungsformen untereinander kombiniert werden.In the following description, further features are disclosed. It can different features of different embodiments combined become.
Fig. 1A zeigt Kontextabhängigkeitsverhältnisse. Kinder ("children") sind auf ihre Eltern bzw. Elternteile ("parents") konditioniert. Fig. 1A shows context dependency ratios. Children are conditioned to their parents or parents.
Fig. 2A zeigt eine Ordnung, die einer Rasterordnung ähnelt. Fig. 2A shows an order similar to a raster order.
Fig. 2B zeigt eine alternative Ausführungsform einer Ordnung, die hierin als kurze Saumordnung beschrieben wird. Fig. 2B shows an alternative embodiment of an order described herein as a short fringe order.
Fig. 2C zeigt eine alternative kurze Saumordnung. Fig. 2C shows an alternative short seam order.
Fig. 3A bis 3H zeigen das Ergebnis einer jeden Anwendung des Transistor-Transfor mationsfilters für eine Vier-Niveau-Transformation auf einem Wavelet-Baum der vorliegenden Erfindung. Figs. 3A to 3H show the result of each application of the transistor transform filter for a four-level transform on a wavelet tree of the present invention.
Fig. 4A ist ein Blockdiagramm eine Ausführungsform einer Vorwärts-/Invers-Filter einheit zur Verwendung bei der Implementation der eindimensiona len Filter. Fig. 4A is a block diagram of one embodiment of a forward / inverse filter unit for use in the implementation of the one-dimensional filters.
Fig. 4B ist ein Blockdiagramm einer Ausführungsform einer ersten Niveau- Vorwärts-Transformation gemäß der vorliegenden Erfindung. FIG. 4B is a block diagram of an embodiment of a first level-forward transform of the present invention.
Fig. 5 ist ein Blockdiagramm einer Ausführungsform einer vollständigen Vor wärtstransformation gemäß der vorliegenden Erfindung. FIG. 5 is a block diagram of one embodiment of a complete pre-transformation according to the present invention. FIG.
Fig. 6 ist ein Zeitdiagramm hinsichtlich, wann Koeffizienten ausgegeben wer den. Fig. 6 is a timing chart regarding when coefficients who spent the.
Fig. 7A bis 7H zeigen die Ergebnisse (Ausgaben) eines jeden eindimensionalen Filter betriebs für die TT-Transformation. Figs. 7A to 7H show the results (outputs) of each one-dimensional filter operation for the TT transformation.
Fig. 8 ist ein Blockdiagramm einer 10-Abgriffs-Vorwärts-/Invers-Filtereinheit. Fig. 8 is a block diagram of a 10-tap forward / inverse filter unit.
Fig. 9 ist ein Blockdiagramm einer Ausführungsform der Überlappeinheit für die Vorwärts-/Invers-Filter der Fig. 8. FIG. 9 is a block diagram of one embodiment of the overlap unit for the forward / inverse filters of FIG. 8. FIG .
Fig. 10 zeigt die Ordnung des Codestroms und die Ordnung innerhalb einer Codiereinheit. Fig. 10 shows the order of the code stream and the order within a coding unit.
Fig. 11 zeigt die Bittiefe verschiedener Koeffizienten in einer Zwei-Niveau-TS-Trans formation und einer TT-Transformationszerlegung von einem Eingangsbild mit b Bits pro Pixel. Fig. 11 shows the bit depth of various coefficients in a two-level TS transformation and a TT transform decomposition from an input image with b bits per pixel.
Fig. 12 ist eine Ausführungsform der Multiplizierer für das Frequenzband, das für eine Koeffizientenausrichtung bei der vorliegenden Erfindung ver wendet wird. Fig. 12 is an embodiment of the multiplier for the frequency band used for coefficient alignment in the present invention.
Fig. 13A zeigt einen Koeffizienten, der in die wichtigsten Daten und weniger wichtigen Daten aufgeteilt ist. Fig. 13A shows a coefficient which is divided into the most important data and less important data.
Fig. 13B zeigt den verlustfreien Fall, wo keine Daten beseitigt bzw. gelöscht werden. Fig. 13B shows the lossless case where no data is deleted.
Fig. 13C zeigt den Fall, wo eine Bitebene von Daten gelöscht bzw. auf die Seite gelegt wurde (d. h. Q=2), da ein Beseitigen bzw. Löschen einer Bit ebene einer Division durch 2 entspricht. Fig. 13C shows the case where a bit plane of data has been cleared (ie, Q = 2), since erasing a bit plane corresponds to division by 2.
Fig. 14 ist ein Flußdiagramm, das eine Ausführungsform der Operation des Kompressions-/Dekompressionssystems zeigt. Fig. 14 is a flowchart showing an embodiment of the operation of the compression / decompression system.
Fig. 15 zeigt eine Ausführungsform, wo 6 Bits für jede Baum verwendet wer den. FIG. 15 shows an embodiment where 6 bits are used for each tree.
Fig. 16 zeigt ein Flußdiagramm zum Codieren des wichtigsten Teils. Fig. 16 is a flow chart for coding the most important part.
Fig. 17 ist ein Blockdiagramm einer Ausführungsform der Formatiereinheit und des Kontextmodells, das während des wichtigsten Datencodier-Durch laufs verwendet wird. Fig. 17 is a block diagram of one embodiment of the formatter and context model used during the most important data encoding run.
Fig. 18 zeigt eine Ausführungsform einer ersten Bitebeneneinheit. Fig. 18 shows an embodiment of a first bit plane unit.
Fig. 19 ist ein Flußdiagramm, das eine Ausführungsform der Codierverarbeitung einer LIC-Bitebene zeigt. Fig. 19 is a flowchart showing an embodiment of the coding processing of a LIC bit plane.
Fig. 20 ist ein Blockdiagramm einer Ausführungsform der vorausschauenden und Kontextmodell für weniger wichtige Daten. Fig. 20 is a block diagram of one embodiment of the predictive and contextual model for less important data.
Fig. 21 ist ein Blockdiagramm einer Ausführungsform des Kontextmodells, das die Konditionierung für Kopfbits bzw. Headbits bereitstellt. Figure 21 is a block diagram of one embodiment of the context model that provides conditioning for header bits.
Fig. 22 zeigt die Speicherverwendung für eine Ausführungsform des Kontextmo dells mit einer Konditionierung aller Nachbarn und Eltern ("parents"). Fig. 22 shows memory usage for one embodiment of the context model with conditioning of all neighbors and parents.
Fig. 23 ist ein Blockdiagramm einer Ausführungsform des Kontextmodells für Vorzeichenbits. Fig. 23 is a block diagram of one embodiment of the sign bits context model.
Fig. 24 zeigt eine Ausführungsform von Parallelcodieren für die LIC. Fig. 24 shows an embodiment of parallel coding for the LIC.
Fig. 25 ist ein Blockdiagramm einer Ausführungsform eines Vorderendes eines Druckers. Fig. 25 is a block diagram of an embodiment of a front end of a printer.
Fig. 26 ist ein Blockdiagramm einer Ausführungsform des Hinterendes des Druckers. Fig. 26 is a block diagram of one embodiment of the rear end of the printer.
Fig. 27 ist ein Blockdiagramm einer alternativen Ausführungsform des Hinter endes des Druckers. Fig. 27 is a block diagram of an alternative embodiment of the rear end of the printer.
Fig. 28 ist ein Blockdiagramm einer Ausführungsform eines integrierten Schal tungs-(IC)-Chips, der die Druckerkompression/Dekompression enthält. Fig. 28 is a block diagram of one embodiment of an integrated circuit (IC) chip incorporating printer compression / decompression.
Fig. 29 zeigt die grundsätzliche Zeitsteuerung bzw. den grundlegenden Zeit ablauf des Systems während des Druckens. Fig. 29 shows the basic timing of the system during printing.
Fig. 30 zeigt eine mögliche Ausführungsform, wie Pixeldaten organisiert sind. Fig. 30 shows one possible embodiment of how pixel data is organized.
Fig. 31 zeigt einen Bandpuffer einer Seite. Fig. 31 shows a band buffer of one page.
Fig. 32 zeigt ein Zeitsteuerdiagramm bzw. Zeitablaufdiagramm des Codierens, das aktuelle Speicherzugrifferfordernisse erläutert. Fig. 32 is a timing chart of coding explaining current memory access requirements.
Fig. 33 zeigt, wie zirkulares Adressieren verwendet werden kann, um das Schreiben von Daten zu handhaben, die größer als die gelesenen Daten sind. Fig. 33 shows how circular addressing can be used to handle the writing of data larger than the read data.
Fig. 34 zeigt ein Codierer- und Decodiererpaar. Fig. 34 shows an encoder and decoder pair.
Fig. 35 zeigt eine Ausführungsform eines binären Kontextmodells. Fig. 35 shows an embodiment of a binary context model.
Fig. 36 zeigt eine alternative Ausführungsform eines binären Kontextmodells. Fig. 36 shows an alternative embodiment of a binary context model.
Fig. 37 zeigt die Nachbarschaftskoeffizienten für jeden Koeffizienten einer Co diereinheit. Fig. 37 shows the neighborhood coefficients for each coefficient of a Co unit.
Fig. 38 zeigt eine pyramidale Ausrichtung basierend auf einer MSE-Ausrich tung. Fig. 38 shows a pyramidal orientation based on an MSE orientation.
Fig. 39 zeigt eine MSE-Ausrichtung von Wavelet-Koeffizienten. Fig. 39 shows an MSE alignment of wavelet coefficients.
Es werden ein Verfahren und ein Apparat zur Kompression und Dekompression beschrieben. Bei der folgenden Beschreibung werden zahlreiche Details dargelegt, wie z. B. Verzögerungstypen, Bitraten, Filtertypen usw. Für einen Fachmann wird es jedoch klar sein, daß die vorliegende Erfindung ohne diese spezifischen Details praktiziert werden kann. In anderen Fällen werden gut bekannte Strukturen und Vorrichtungen in Blockdiagrammform gezeigt, und zwar eher als im Detail, um eine Verschleierung der vorliegenden Erfindung zu vermeiden.There will be a method and apparatus for compression and decompression described. In the following description, numerous details are set forth, such as z. As delay types, bit rates, filter types, etc. For a person skilled but it will be clear that the present invention practiced without these specific details can be. In other cases, well-known structures and devices in Block diagram form, rather than in detail, to obfuscate the to avoid the present invention.
Manche Teile der detaillierten Beschreibungen, die folgen, werden in Termen von Algorithmen und symbolischen Darstellungen von Operationen mit Datenbits innerhalb eines Computerspeichers dargestellt. Dies algorithmischen Beschreibungen und Darstel lungen stellen die Mittel dar, die von den Fachleuten auf dem Gebiet der Datenver arbeitung verwendet werden, um das Wesen ihrer Arbeit anderen Fachleuten effektiv zu vermitteln. Ein Algorithmus bedeutet hier und im allgemeinen eine selbstkonsistente Abfolge von Schritten, die zu einem gewünschten Ergebnis führen. Bei den Schritten handelt es sich um solche, die physikalische Manipulationen von physikalischen Quantitäten erfordern. Üblicherweise, aber nicht notwendigerweise, nehmen diese Quantitäten die Gestalt von elektrischen und magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen und sonstwie manipuliert werden können. Es hat sich als zweckmäßig erwiesen, hauptsächlich aus Gründen einer einheitliche Verwen dung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen und dergleichen zu bezeichnen.Some parts of the detailed descriptions that follow are in terms of Algorithms and symbolic representations of operations with data bits within a computer memory shown. This algorithmic descriptions and representations These funds represent the means used by experts in the field of data processing Working can be used to make the essence of their work more effective to other professionals to convey. An algorithm here and in general means a self-consistent one Sequence of steps leading to a desired result. At the steps These are those that are physical manipulations of physical Require quantities. Usually, but not necessarily, they take Quantities take the form of electrical and magnetic signals that are stored, transmitted, combined, compared and otherwise manipulated. It has proved to be appropriate, mainly for reasons of uniform use these signals as bits, values, elements, symbols, signs, terms, numbers and to designate the like.
Man sollte jedoch nicht vergessen, daß alle diese und ähnliche Terme entsprechenden physikalischen Quantitäten zugeordnet sind und lediglich zweckmäßige Benennungen darstellen, die diesen Quantitäten verliehen wurden. Wenn es nicht anderweitig fest gestellt wird, wie es sich aus der folgenden Diskussion ergibt, wird man erkennen, daß durchgehend bei der vorliegenden Erfindung die Diskussionen, die Terme, wie z. B. "Verarbeiten" oder "Berechnen" oder "Errechnen" oder "Bestimmen" oder "Anzeigen" oder dergleichen, auf die Wirkung und auf die Verarbeitungen eines Computersystems oder einer ähnlichen elektronischen Berechnungsvorrichtung Bezug nehmen, die Daten manipuliert und transformiert, die als physikalische (elektronische) Quantitäten in nerhalb der Register und Speicher des Computersystems dargestellt werden, und zwar in andere Daten, die in ähnlicher Weise als physikalische Quantitäten innerhalb der Speicher oder Register oder anderer derartiger Informationsspeicher, Übertragungs- oder Anzeigevorrichtungen gespeichert oder registriert werden.One should not forget, however, that all of these and similar terms are appropriate are associated with physical quantities and only appropriate designations represent that were given these quantities. Unless otherwise stated As will be apparent from the following discussion, it will be appreciated that throughout the present invention, the discussions, the terms such. B. "Processing" or "calculating" or "calculating" or "determining" or "displaying" or the like, on the effect and the processing of a computer system or a similar electronic calculation device, the data manipulated and transformed as physical (electronic) quantities in be represented within the registers and memory of the computer system, namely in other data, in a similar way than physical quantities within the Memory or registers or other such information storage, transmission or Display devices are stored or registered.
Die vorliegende Erfindung betrifft ebenso einen Apparat, um die Operationen darin durchzuführen. Dieser Apparat kann speziell für die erforderliche Zwecke konstruiert sein oder er kann einen Allzweckcomputer umfassen, der durch ein Computerpro gramm selektiv aktiviert oder rekonfiguriert wird, das in dem Computer gespeichert ist. Ein derartiges Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert sein, wie z. B. in jeder Art von Platte einschließlich Diskette, optischer Disk, CD-ROMs und magneto-optische Disk, Nur-Lese-Speicher (ROMs), Speicher mit wahlfreiem Zugriff (RAMs), EPROMs, EEPROMs, magnetische oder optische Karten oder jeglichen Typ von Medium, das zum Speichern elektronischer Instruktio nen geeignet ist, wobei jede Speichereinrichtung mit einem Computersystembus verbunden sein kann. Die Algorithmen und Anzeigen, die hierin dargestellt sind, stehen nicht inhärent mit irgendeinem bestimmten Computer oder Apparat in Beziehung. Verschiedene Allzweckgeräte können mit Programmen verwendet werden, die den hierin gegebenen Lehren entsprechen, oder es kann sich als zweckmäßig erweisen, spezialisiertere Apparate aufzubauen, um die erforderlichen Verfahrensschritte auszu führen. Die erforderliche Struktur für eine Vielfalt dieser Maschinen wird sich aus der folgenden Beschreibung ergeben. Zusätzlich wird die vorliegende Erfindung nicht unter Bezugnahme auf irgendeine bestimmte Programmiersprache beschrieben. Man wird begrüßen, daß eine Vielfalt von Programmiersprachen verwendet werden kann, um die Lehren der Erfindung, wie hierin beschrieben, zu realisieren.The present invention also relates to an apparatus for the operations therein perform. This apparatus can be specially designed for the required purposes or he can include a general-purpose computer that is powered by a computer pro program is selectively enabled or reconfigured, which is stored in the computer. Such a computer program can be stored in a computer-readable storage medium be stored, such. B. in any type of disk including floppy disk, optical Disk, CD-ROMs and Magneto-Optical Disk, Read-Only Memory (ROMs), Memory with random access (RAMs), EPROMs, EEPROMs, magnetic or optical Cards or any type of medium used to store electronic instructions NEN, each storage device having a computer system bus can be connected. The algorithms and displays presented herein are not inherently related to any particular computer or apparatus. Various general purpose devices can be used with programs that support the or as may be appropriate, to build more specialized apparatus to carry out the required process steps to lead. The required structure for a variety of these machines will come from the following description. In addition, the present invention is not under Reference to any particular programming language. You will Welcome that a variety of programming languages can be used to support the To realize teachings of the invention as described herein.
Die folgenden Terme werden in der folgenden Beschreibung verwendet. Eine De finition für diese verschiedenen Terme wurde mit aufgenommen. Die Definitionen stellen grundsätzlich keine Beschreibung des Standes der Technik dar, sondern sollen das Verständnis der Lehre der vorliegenden Erfindung erleichtern.The following terms are used in the following description. A de Finition for these different terms was included. The definitions are basically not a description of the state of the art, but should to facilitate understanding of the teachings of the present invention.
ABS-Kodieren ("ABS coding"):
Ein Verfahren parallelen Entropiekodierens, das einfache
Kodes (z. B. Laufkodes) zur Biterzeugung und Wahr
scheinlichkeitsschätzung basierend auf verwendeten Kode
wörtern (z. B. Tabellenwahrscheinlichkeitsschätzung)
verwendet. Bei einer Ausführungsform beinhaltet das
ABS-Kodieren ebenso ein Verfahren zum Multiplexen
und Demultiplexen von Strömen von verschiedenen Ko
dierern.ABS coding ("ABS coding"):
A method of parallel entropy coding using simple codes (eg, run codes) for bit generation and probability estimation based on code words used (eg, table likelihood estimation). In one embodiment, the ABS encoding also includes a method of multiplexing and demultiplexing streams of different coders.
Ausrichtung "alignment"):
Der Grad bzw. Umfang der Verschiebung der Transforma
tionskoeffizienten in einem Frequenzband bezüglich der
anderen Frequenzbänder.
Alignment "):
The degree of displacement of the transform coefficients in one frequency band with respect to the other frequency bands.
arithmetisches Kodieren ("arithmetic coding"):
Shannon/Elias-Kodieren mit endlicher Präzisionsarithmetik,
nicht notwendigerweise ein binärer Entropiekodierer.arithmetic coding:
Shannon / Elias finite precision arithmetic, not necessarily a binary entropy coder.
B-Kodieren ("B-coding"):
Ein binärer Entropiekodierer, der einen Automaten mit
finiten Zuständen ("finit state machine" bzw. FSM) zur
Kompression verwendet. Anders als beim Huffman-Kodie
ren führt die Verwendung des Automaten mit finiten Zu
ständen zu einer guten Handhabung von binären Symbolen
und ist nützlich für eine Spanne von Eingangswahrschein
lichkeiten.B coding ("B coding"):
A binary entropy coder that uses a finite state machine (FSM) for compression. Unlike Huffman coding, the use of the finite state machine results in good binary symbol handling and is useful for a range of input probabilities.
binärer Entropiekodierer ("binary entroyp coder"):
Ein rauschfreier Kodierer, der auf binäre (Ja/Nein) Ent
scheidungen wirkt, die häufig als das höchstwahrscheinli
che Symbol (mps bzw. "most probable symbol") und als
das am wenigsten wahrscheinliche Symbol (lps bzw. "leat
probable symbol") ausgedrückt werden.binary entropy coder (binary entropy coder):
A noise-free coder that works on binary (yes / no) decisions, often called the most probable symbol (mps) and the least probable symbol (lps or leat probable symbol) be expressed.
Binärstil ("binary-style"):
Codierungsstil mit randfüllenden bzw. kantenfüllenden
("edge-fill") Gray-Kodieren der Pixel und ein bestimmtes
Kontextmodell.Binary style ("binary-style"):
Encoding style with edge-fill or edge-fill Gray encoding of the pixels and a specific context model.
Binärstil-Kontextmodell ("binary-style context model"):
Ein Kontextmodell für Bi-Niveau bzw. Zwei-Niveau und
Begrenzt-Niveau-Bilddaten.Binary style context model:
A context model for bi-level and bi-level and bounded-level image data.
Bit-Signifikanz ("bit-significance"):
Eine Zahlendarstellung, ähnlich zu Vorzeichen und Betrag,
mit Kopfbits bzw. Headbits, gefolgt von dem Vorzeichen
bit, gefolgt von Schwanzbits bzw. Tail-Bits, falls welche
vorhanden sind. Das Einbetten kodiert in Bit-Ebenen-Ord
nung bezüglich dieser Darstellung.
Bit significance ("bit-significance"):
A number representation, similar to sign and magnitude, with head bits followed by the sign bit, followed by tail bits, if any. Embedding encodes in bit-level order with respect to this representation.
kind-basierte Ordnung ("child-based order"):
Eine Abtastordnung bzw. Abtastreihenfolge durch ein
zweidimensionales Bild. Sie ähnelt einer Raster
ordnung mit der Ausnahme, daß das Abtasten
("scanning") auf Zwei-mal-Zwei-Blöcken arbeitet
bzw. wirkt. Man betrachte ein Abtasten eines "El
ternteil"-Frequenzbandes in Rasterordnung. Jeder
Koeffizient wird vier Kinder haben. Diese Kinder
werden von links oben, rechts oben, links unten
und rechts unten gefolgt von dem nächsten Eltern
teil und dem nächsten Satz von vier Kindern usw.
bis zum Ende der Zeile geordnet. Dann kehrt die
Verarbeitung zu den nächsten zwei Zeilen zurück
und endet schließlich in der unteren rechten Ecke.
Keine Zeilen werden übersprungen. Eine kind-ba
sierte Ordnung wird ebenso als eine 2×2-Block
ordnung bezeichnet.child-based order:
A scanning order by a two-dimensional image. It is similar to raster ordering except that the scanning works on two-by-two blocks. Consider scanning a "parent" frequency band in raster order. Each coefficient will have four children. These children are listed from the top left, top right, bottom left, and bottom right followed by the next parent and the next set of four children, and so on, to the end of the line. Then the processing returns to the next two lines and finally ends in the lower right corner. No lines are skipped. A child-based order is also referred to as a 2 × 2 block order.
Koeffizient ("coefficient"):
Komponenten nach der Transformation.Coefficient ("coefficient"):
Components after the transformation.
Komponenten ("components"):
Bestandteile des Bildes. Die Komponenten bilden die Pixel.
Zum Beispiel stellen die roten, grünen und blaue Bänder
Komponentenbänder dar. Jedes einzelne Pixel ist aus ei
nem roten, grünen und blauen Komponenten gebildet.
Komponenten und Komponentenbänder können jeglichen
Typ von Information enthalten, der eine räumliche Ab
bildung auf das Bild aufweist.
Components ("components"):
Components of the picture. The components form the pixels. For example, the red, green, and blue bands represent component bands. Each individual pixel is made up of red, green, and blue components. Components and component bands may contain any type of information that has a spatial imprint on the image.
Kontextmodell ("context model"):
Kausal verfügbare Information relativ zu dem aktuell zu
kodierenden Bit, die historisch gelernte Information über
das aktuelle Bit wiedergibt, wobei eine konditionelle
Wahrscheinlichkeitsschätzung zum Entropiekodieren er
möglicht wird. Bei binären Bildern stellt ein möglicher
Kontext für ein Pixel die vorhergehenden zwei Pixel in
derselben Zeile und drei Pixel von der vorhergehenden
Zeile dar.Context Model:
Causally available information relative to the currently-to-be-coded bit representing historically learned information about the current bit, allowing a conditional probability estimate for entropy coding. For binary images, one possible context for a pixel is the previous two pixels in the same row and three pixels from the previous row.
Zerlegungsniveau ("decomposition level"):
Platz in der Wavelet-Zerlegungspyramide. Dies steht in di
rektem Zusammenhang mit der Auflösung.Decomposition level:
Place in the wavelet decomposition pyramid. This is directly related to the resolution.
effiziente Transformation ("efficient transform"):
Transformation, die die beste Energieverdichtung in den
Koeffizienten erzielt, während die minimale Anzahl von
Bits verwendet wird, um jene Koeffizienten darzustellen.efficient transformation:
Transformation that achieves the best energy compression in the coefficients, while the minimum number of bits is used to represent those coefficients.
eingebettetes Kontextmodell ("embedded context model"):
Ein Kontextmodell, das die Kontextbins separiert und zu
Niveaus der Wichtigkeit in einer solchen Art und Weise
führt, daß eine effektive verlustbehaftete Kompression
erhalten wird, falls die wichtigeren Werte beibehalten
werden.embedded context model:
A context model that separates the context bins and results in levels of importance in such a way that effective lossy compression is obtained if the more important values are preserved.
eingebettet mit Ordnen ("embedded with ordering"):
Ein spezieller Fall eingebetteter Kontextmodelle, wo es
keine explizite Markierung bzw. Benennung von Wichtig
keit gibt, sondern eher die komprimierten Daten so ge
ordnet werden, daß die wichtigsten Daten vorne sind.embedded with ordering ("embedded with ordering"):
A special case of embedded context models, where there is no explicit marking or mentioning of importance, but rather the compressed data is arranged so that the most important data is ahead.
eingebettete Quantisierung ("embedded quantization"):
Quantisierung, die durch den Kodestrom implementiert
wird. Zum Beispiel, falls die Wichtigkeitsniveaus in Rei
henfolge plaziert sind, und zwar von der wichtigsten zu
der am wenigsten wichtigen, dann wird die Quantisierung
durch einfaches Abschneiden des Kodestroms durchge
führt. Dieselbe Funktionalität ergibt sich bei Tags bzw.
Markierungen, Markern, Pointern bzw. Zeigern, oder
einer anderen Signalisierung. Mehrfachquantisierungen
können mit einem Bild beim Dekodieren durchgeführt
werden, aber nur eine eingebettete Quantisierung kann zur
Kodierzeit durchgeführt werden.embedded quantization (embedded quantization):
Quantization implemented by the code stream. For example, if the importance levels are placed in order, from the most important to the least important, then quantization is accomplished by simply truncating the code stream. The same functionality results in tags or markers, markers, pointers or pointers, or other signaling. Multiple quantizations can be performed on a decoded image, but only embedded quantization can be performed at encode time.
Entropiekodierer ("entropy code"):
Eine Vorrichtung, die ein aktuelles Bit basierend auf einer
Wahrscheinlichkeitsschätzung kodiert oder dekodiert. Ein
Entropiekodierer kann ebenso hierin als ein Multikontext-Bi
när-Entropiekodierer bezeichnet werden. Der Kontext
des aktuellen Bits ist eine gewisse gewählte Konfiguration
von "naheliegenden" Bits und ermöglicht eine Wahrschein
lichkeitsschätzung für die beste Darstellung des aktuellen
Bits (oder mehrerer Bits). Bei einer Ausführungsform kann
ein Entropiekodierer einen binären Kodierer, einen par
allelen Lauflängenkodierer oder einen Huffman-Kodierer
enthalten.Entropy coder ("entropy code"):
A device that encodes or decodes a current bit based on a probability estimate. An entropy coder may also be referred to herein as a multicontext bi-entropy coder. The context of the current bit is some chosen configuration of "near" bits and allows a probability estimate for the best representation of the current bit (or more bits). In one embodiment, an entropy coder may include a binary coder, a parallel run-length coder, or a Huffman coder.
Eintrittspunkt ("entry point"):
Ein Punkt in den kodierten Daten, der mit einem bekannten
Kodierzustand startet. Der Kodierer kann das Kodieren bei
diesem Punkt starten, ohne die vorhergehenden Daten zu
dekodieren. In den meisten Fällen erfordert dies, daß der
Kontext und der binäre Entropiekodierer in einen Anfangs
zustand zurückgesetzt werden. Die kodierten Daten für
jede Kodiereinheit beginnen bei einem Eintrittspunkt.
Entry point:
A point in the coded data starting with a known coding state. The encoder can start encoding at this point without decoding the previous data. In most cases, this requires the context and binary entropy coder to be reset to an initial state. The coded data for each coding unit starts at an entry point.
Festlänge ("fixed-length"):
Ein System, das einen spezifischen Datenblock in einen
spezifischen Block komprimierter Daten konvertiert, z. B.
BTC (Block-Abschneidekodieren) und gewisse Formen
von VQ (Vektorquantisierung). Festlängenkodes dienen
für Festraten und Festgrößenanwendungen, aber die Ra
ten-Verzerrungs-Leistungsfähigkeit ("Rate Distortion"-Lei
stungsfähigkeit) (siehe z. B. Anneal K. Jain, "Fun
damentals of Digital Image Processing", Prentice Hall,
1989), ist häufig schlecht im Vergleich mit Systemen mit
variabler Rate.Fixed-length:
A system that converts a specific block of data into a specific block of compressed data, e.g. BTC (block clipping) and certain forms of VQ (vector quantization). Fixed-length codes are used for fixed rates and fixed-size applications, but Rate Distortion capability (see, e.g., Anneal K. Jain, "Principalities of Digital Image Processing", Prentice Hall, 1989), is often poor compared to variable rate systems.
Festrate ("fixed-rate"):
Eine Anwendung oder ein System, das eine gewisse Pixel
rate aufrechterhält und einen Kanal mit begrenzter Band
weite hat. Bei einer Ausführungsform wird, um dieses
Ziel zu erreichen, eine lokale mittlere Kompression eher
als eine globale mittlere Kompression erzielt. Zum Bei
spiel erfordert MPEG eine Festrate bzw. feste Rate.Fixed rate ("fixed-rate"):
An application or system that maintains a certain pixel rate and has a narrow bandwidth channel. In one embodiment, to achieve this goal, local average compression is achieved rather than global average compression. For example, MPEG requires a fixed rate.
Festgröße ("fixed-size"):
Eine Anwendung oder ein System, das einen Puffer be
grenzter Größe umfaßt. Bei einer Ausführungsform wird
zum Erreichen dieses Ziels eine globale mittlere Kom
pression erreicht, z. B. ein Druckpuffer. (Die Anwendung
kann eine Festraten-, eine Festgrößen-Anwendung oder
eine Anwendung mit beidem sein).Fixed-size:
An application or system that includes a limited size buffer. In one embodiment, to achieve this goal, a global average compression is achieved, e.g. B. a print buffer. (The application can be a fixed rate, a fixed size application or an application with both).
Frequenzband ("frequency band"):
Jedes Frequenz beschreibt eine Gruppe von Koeffizienten,
die sich aus derselben Sequenz von Filteroperationen
ergeben.Frequency band:
Each frequency describes a set of coefficients resulting from the same sequence of filter operations.
Kopfbits ("head bits"):
Eine Bitsignifikanzdarstellung, die Kopfbits stellen die Be
tragbits von den höchstsignifikanten bzw. höchstwertigen
bis zu und einschließlich des ersten Bits ungleich Null
dar.Head bits:
A bit significance representation, the header bits represent the carry bits from the most significant to most significant and including the first non-zero bit.
Huffman-Kodierer ("Huffman Coder"):
Im allgemeinen ein Festlängenkode, der eine ganze Anzahl
von Bits für jedes Symbol erzeugt.Huffman encoder ("Huffman Coder"):
In general, a fixed-length code that generates an integer number of bits for each symbol.
Wichtigkeitsniveaus ("importance levels"):
Eine Einheit kodierter Daten, die vor der Kompression
einer ganze Bitebene der eingebetteten Daten entspricht.
Der Wichtigkeitspegel beinhaltet alle geeigneten Bitebe
nen von den verschiedenen Koeffizientenfrequenzbändern.Importance levels:
A unit of encoded data that corresponds to the embedded data before it compresses an entire bit-level. The importance level includes all appropriate bit levels from the different coefficient frequency bands.
LPS (am wenigsten wahr
scheinliches Symbol) ("LPS (Least Probable Symbol)"):
Das Resultat einer binären Entscheidung mit weniger als
50% Wahrscheinlichkeit. Wenn zwei Resultate bzw. Er
gebnisse gleich wahrscheinlich sind, ist es unwichtig,
welches als MPS oder als LPS bezeichnet wird, solange
sowohl der Kodierer als auch der Dekodierer dieselbe
Bezeichnung durchführen.LPS (Least Probable Symbol) ("LPS (Least Probable Symbol)"):
The result of a binary decision with less than 50% probability. If two results are equally probable, it is unimportant what is called MPS or LPS as long as both the encoder and decoder perform the same designation.
Verlustfreies/rauschfreies/rever
sibles Kodieren ("lossless/noise
less/reversible coding"):
Das Komprimieren von Daten in einer Art und Weise, die
eine perfekte Rekonstruktion der ursprünglichen Daten er
laubt.Lossless / noise free / reversible coding:
Compressing data in a way that allows for a perfect reconstruction of the original data.
Verlustbehaftetes Kodieren ("lossy coding"):
Das Kodieren von Daten, das keine perfekte Rekonstruk
tion der ursprünglichen Daten garantiert. Die Änderungen
der ursprünglichen Daten können in einer solchen Art
und Weise durchgeführt werden, daß sie nicht visuell
beanstandbar oder detektierbar sind. Häufig ist eine feste
Rate möglich.
Lossy coding:
Coding data that does not guarantee perfect reconstruction of the original data. The changes to the original data may be made in such a manner that they are not visually objectionable or detectable. Often a fixed rate is possible.
MPS (höchstwahrscheinliches Sym
bol) ("MPS (Most Probable Symbol)"):
Das Ergebnis bzw. Resultat einer binären Entscheidung mit
mehr als 50% Wahrscheinlichkeit.MPS (Most Probable Symbol) ("MPS (Most Probable Symbol)"):
The result or result of a binary decision with more than 50% probability.
Überlappte Transformation ("overlapped transform"):
Eine Transformation, wo ein einzelner Quellenwertpunkt
bzw. Quellenabtastwertpunkt zu mehreren Koeffizienten
derselben Frequenz beiträgt. Beispiele sind viele Wavelets
und die überlappte orthogonale Transformation ("Lapped
Orthogonal Transform" bzw. LOT).Overlapped transform:
A transformation where a single source point contributes to multiple coefficients of the same frequency. Examples are many wavelets and the overlapped orthogonal transform (LOT).
Elternteil-Koeffizient ("parent coefficient"):
Der Koeffizient oder Pixel in dem nächsthöheren pyramidi
schen Niveau, der denselben Bildraum wie der
aktuelle Koeffizient oder Pixel abdeckt. Zum Bei
spiel sind das Elternteil für die 1SC-Koeffizienten
die 2SD-Koeffizienten, die das Elternteil für die
3SD-Koeffizienten in Fig. 1A sind.Parent coefficient ("parent coefficient"):
The coefficient or pixel in the next higher pyramid level that covers the same image space as the current coefficient or pixel. For example, the parent for the 1SC coefficients are the 2SD coefficients that are the parent for the 3SD coefficients in FIG. 1A.
Wahrscheinlichkeits-Schätzma
schine/Modul ("Probability
Estimation Machine/Module"):
Teil eines Kodiersystems, das die Wahrscheinlichkeit in
nerhalb eines Kontextes verfolgt bzw. deren Spur aufzeich
net.Probability Estimator / Module (Probability Estimation Machine / Module):
Part of a coding system that tracks the likelihood within a context or records its lane.
Progressive Pixeltiefe ("progressive pixel depth"):
Ein Kodestrom, der mit tiefergehenden Bitebenen von Da
ten bei voller Bildauflösung geordnet wird.Progressive pixel depth:
A code stream ordered with deeper bit planes of data at full image resolution.
Progressiv pyramidisch ("progressive pyramidal"):
Eine Abfolge von Auflösungen, wo jede geringere Auflö
sung ein linearer Faktor von 2 in jeder Dimension ist (ein
Faktor von 4 hinsichtlich der Fläche).
Progressive pyramidal ("progressive pyramidal"):
A sequence of resolutions where each lower resolution is a linear factor of 2 in each dimension (a factor of 4 in area).
Q-Kodierer ("Q-Coder"):
Ein binärer Arithmetikkodierer, wo Additionen für Multi
plikationen substituiert wurden und Wahrscheinlichkeiten
auf diskrete Werte beschränkt wurden und Wahrschein
lichkeitsschätzungen aktualisiert werden, wenn Bits aus
gegeben werden.Q-coder ("Q-coder"):
A binary arithmetic coder where additions for multiplications have been substituted and probabilities have been constrained to discrete values and probability estimates are updated as bits are output.
Rasterordnung ("raster order"):
Ein Abtastordnung bzw. Abtastreihenfolge durch ein zwei
dimensionales Bild. Sie beginnt in der oberen linken Ec
ke, bewegt sich von links nach rechts, dann kehrt sie zu
der linken Seite der nächsten Zeile zurück, schließlich
endet sie in der unteren rechten Ecke. Keine Zeilen wer
den übersprungen.Raster order:
A scanning order by a two-dimensional image. It starts in the upper left corner, moves from left to right, then returns to the left side of the next line, finally ending in the lower right corner. No lines are skipped.
Reversibel Transformation ("reversible transform"):
Bei einer Ausführungsform stellt eine reversible Transfor
mation eine effiziente Transformation dar, die mit einer
Ganzzahl-Arithmetik implementiert wird, deren kom
primierte Ergebnisse zu den ursprünglichen Werten re
konstruiert werden können.Reversible transformation ("reversible transform"):
In one embodiment, a reversible transformation is an efficient transformation implemented with integer arithmetic whose compressed results can be constructed to the original values re.
Schwanzbits (oder Schwanz) ("tail-bits (or tail)"):
Eine Bit-Signifikanz-Darstellung, die Schwanzbits stellen
Betragbits dar, die weniger signifikant sind als die
höchstwertigen bzw. höchstsignifikanten Bits ungleich
Null.Tail bits (or tail) (tail-bits (or tail)):
A bit significance representation, the tail bits represent magnitude bits that are less significant than the non-zero most significant bits.
Tile-Datensegment ("tile data segment"):
Abschnitt des Kodestroms, der vollständig eine Kodierein
heit beschreibt. "Tile" kann man als Block oder Gruppe
auffassen.Tile data segment ("tile data segment"):
Section of the code stream that completely describes a coding unit. "Tile" can be understood as a block or group.
TS-Transformation ("TS-transform"):
Zwei-Sechs-Transformation ("Two-Six"-Transformation),
ein spezifisches reversibles Wavelet-Filterpaar mit einem
2-Abgriffs-Tiefpaß-Analyse- und einem 6-Abgriffs-Hoch
paß-Analysefilter. Die Synthesefilter stellen Quadratur
spiegel ("quadrature mirror") der Analysefilter dar.TS transformation ("TS-transform"):
Two-Six Transformation, a specific reversible wavelet filter pair with a 2-tap low-pass analysis and a 6-tap high pass analysis filter. The synthesis filters represent quadrature mirrors ("quadrature mirror") of the analysis filter.
TT-Transformation ("TT-transform"):
Zwei-Zehn-Transformation("Two-Ten"-Transformation),
ein spezifisches reversibles Wavelet-Filterpaar mit einem
2-Abgriffs-Tiefpaß-Analyse- und einem 10-Abgriffs-Hoch
paß-Analysefilter. Die Synthesefilter ("Synthesis"-Filter)
sind Quadraturspiegel der Analysefilter.TT transformation ("TT-transform"):
A two-ten transform, a specific reversible wavelet filter pair with a 2-tap low-pass analysis and a 10-tap high pass analysis filter. The synthesis filters ("Synthesis" filters) are quadrature mirrors of the analysis filters.
Vereinigt verlustfrei/verlustbe
haftet ("unified lossless/lossy"):
Dasselbe Kompressionssystem liefert einen Kodestrom,
der zu einer verlustfreien oder verlustbehafteten
Rekonstruktion in der Lage ist. Bei einer Aus
führungsform der vorliegenden Erfindung ist die
ser Kodestrom zu beidem in der Lage, ohne Ein
stellungen an dem Kodierer vorzunehmen oder
diesem Befehle zu geben.United lossless / lossy ("unified lossless / lossy"):
The same compression system provides a code stream capable of lossless or lossy reconstruction. In one embodiment of the present invention, the code stream is capable of both without making any adjustments to or commands to the encoder.
Wavelet-Filter ("wavelet filters"):
Die Hoch- und Tiefpaßsynthese- und -analyse-Filter, die
bei der Wavelet-Transformation verwendet werden.Wavelet filters ("wavelet filters"):
The high and low pass synthesis and analysis filters used in the wavelet transform.
Wavelet-Transformation ("wavelet transform"):
Eine Transformation mit sowohl "Frequenz"- als auch
"Zeit (oder Raum)"-Domänenbeschränkungen bzw.
Raumnebenbedingungen. Bei einer Ausführungsform stellt
sie eine Transformation dar, die einen Hochpaßfilter und
einen Tiefpaßfilter umfaßt. Die sich ergebenden Koeffi
zienten werden um zwei dezimiert (kritisch gefiltert) und
die Filter werden auf die Tiefpaßkoeffizienten angewen
det.
Wavelet transformation ("wavelet transform"):
A transformation with both "frequency" and "time (or space)" domain constraints. In one embodiment, it represents a transformation that includes a high pass filter and a low pass filter. The resulting coefficients are decimated by two (critically filtered) and the filters are applied to the low-pass coefficients.
Wavelet-Bäume ("wavelet trees"):
Die Koeffizienten und die Pixel, die mit einem einzigen
Koeffizienten in dem SS-Abschnitt der Wavelet-Zerlegung
höchsten Niveaus in Beziehung stehen. Die Anzahl von
Koeffizienten stellen eine Funktion der Anzahl von Ni
veaus dar. Die Fig. 1A zeigt die Koeffizienten, die in
einem Wavelet-Baum enthalten sind. Die Spanne eines
Wavelt-Baumes hängt von der Anzahl der Zerlegungs
niveaus ab. Zum Beispiel umspannt mit einem Zerle
gungsniveau ein Wavelet-Baum vier Pixel, mit zwei Ni
veaus umspannt er 16 usw. Die unten dargestellte Tabelle
1 zeigt die Anzahl der Pixel, die durch einen Wavelet-Baum
für verschiedene Niveaus beeinflußt werden. In
zwei Dimensionen umfaßt jeder Wavelet-Baum drei Un
terbäume, die SD, DD und DS genannt werden.Wavelet trees ("wavelet trees"):
The coefficients and the pixels related to a single coefficient in the SS portion of the highest level wavelet decomposition. The number of coefficients represents a function of the number of levels. Figure 1A shows the coefficients contained in a wavelet tree. The span of a wavelet tree depends on the number of decomposition levels. For example, with one level of decomposition, a wavelet tree spans four pixels, with two levels it spans 16 and so on. Table 1 below shows the number of pixels that are affected by a wavelet tree for different levels. In two dimensions, each wavelet tree includes three sub-trees called SD, DD, and DS.
Spanne eines Wavelet-Baumes für unterschiedliche Niveaus einer DekompressionSpan of a wavelet tree for different levels of decompression
Spanne eines Wavelet-Baumes für unterschiedliche Niveaus einer DekompressionSpan of a wavelet tree for different levels of decompression
Die vorliegende Erfindung stellt ein Kompressions-/Dekompressionssystem bereit mit einem Kodierabschnitt und einem Dekodierabschnitt. Der Kodierabschnitt ist für das Kodieren der Eingangsdaten verantwortlich, um komprimierte Daten zu erzeugen, während der Dekodierabschnitt für das Dekodieren zuvor kodierter Daten verant wortlich ist, um eine rekonstruierte Version der ursprünglichen Eingangsdaten zu erzeugen. Die Eingangsdaten können eine Vielfalt von Datentypen umfassen, wie z. B. Bilddaten (Stillbilder oder Videobilder), Audiodaten usw. Bei einer Ausführungsform handelt es sich bei den Daten um digitale Signaldaten; jedoch sind digitalisierte analoge Daten, Textdatenformate und andere Formate möglich. Die Quelle der Daten für den Kodierabschitt und/oder den Dekodierabschnitt kann ein Speicher oder ein Kanal sein.The present invention provides a compression / decompression system a coding section and a decoding section. The coding section is for the Coding the input data responsibly to produce compressed data while the decoding section is responsible for decoding previously coded data is verbally to a reconstructed version of the original input data produce. The input data may include a variety of data types, such as: B. Image data (still images or video images), audio data, etc. In one embodiment is the data digital signal data; however, digitized analogs are Data, text data formats and other formats possible. The source of the data for the Coding section and / or the decoding section may be a memory or a channel.
Bei der vorliegenden Erfindung können Elemente des Kodierabschnittes und/oder des Dekodierabschnittes in Hardware oder Software implementiert bzw. realisiert werden, wie z. B. jene, die in einem Computersystem verwendet werden. Die vorliegende Erfindung stellt ein verlustfreies Kompressions-/Dekompressionssystem dar. Die vorliegende Erfindung kann ebenso konfiguriert werden, um verlustbehaftet Kom pression/Dekompression durchzuführen.In the present invention, elements of the coding section and / or the Decoding section implemented in hardware or software, such as Those used in a computer system. The present The invention is a lossless compression / decompression system The present invention may also be configured to be lossy pression / decompression.
Das System der vorliegenden Erfindung verwendet schnelle verlustbehaftete/verlustfreie Kompression durch reversible Wavelets, was im folgenden genauer beschrieben wird. Das System kann einen Drucker, z. B. einen Laserdrucker enthalten. Bei einer Aus führungsform verwendet der Drucker eine preisgünstige Festplatte, um eine aufbereitete Seite zu speichern, wobei stark der Umfang von benötigtem teuerem Speicher mit wahlfreiem Zugriff (RAM) reduziert wird. Die Kompression wird verwendet, um die beschränkte Bandbreite der Festplatte oder der Speichervorrichtung an die größere Bandbreite, die von der Druckmaschine benötigt wird, anzupassen. Die Kodiertechno logie der vorliegenden Erfindung erfüllt die Hochgeschwindigkeits-, Echtzeitanforde rungen der Druckmaschine, während die vorliegende Erfindung entweder eine ex zellente verlustfreie oder verlustbehaftete Kompression bereitstellt, wie sie durch die Bildcharakteristiken und die diskontinuierliche Natur der Festplatte gefordert werden.The system of the present invention uses fast lossy / lossless Compression by reversible wavelets, which will be described in more detail below. The system may have a printer, e.g. B. include a laser printer. On an off For example, the printer uses a low-cost hard disk to make a processed hard disk Save the amount of memory needed with expensive memory random access (RAM) is reduced. The compression is used to the limited bandwidth of the hard disk or storage device to the larger one Bandwidth required by the press to adjust. The coding techno Logic of the present invention meets the high speed, real-time requirement ments of the printing machine, while the present invention is either an ex Cellular lossless or lossy compression provides, as by the Image characteristics and the discontinuous nature of the hard disk are required.
Die folgende detaillierte Beschreibung stellt eine allgemeine Übersicht über die Kom pression durch reversible Wavelets, eine komprimierte Vollbild-Speicheranwendung, einen Farblaserdrucker und Ausführungsformen eines Druckerchips dar. Die Aufberei tungsmaschine des Druckers verwendet eine Festplatte zum Speichern. Weil die Festplatte langsamer ist als die Druckmaschine, wird die Kompression verwendet, um eine Ratenanpassung vorzunehmen. Eine Anzeigenliste-Technologie kann ebenso verwendet werden, um den während der Aufbereitung erforderlichen Speicher zu verringern. Eine Aufbereitungsmaschine, die auf einer Anzeigenliste basiert, erlaubt es dem Kompressionssystem, Bänder des Bildes unabhängig handzuhaben. Bemerkenswert ist, daß, obwohl die vorliegende Erfindung in Termen eines Druckersystems beschrie ben wird, die vorliegende Erfindung auf andere Systeme anwendbar ist, die Kom pressions- und/oder Dekompressionsuntersysteme als Teile davon enthalten.The following detailed description provides a general overview of the Kom reversible wavelet compression, a compressed frame memory application, a color laser printer and embodiments of a printer chip. The Aufberei The printer uses a hard disk to store. Because the Hard drive is slower than the printing press, the compression is used to to make a rate adjustment. An ad list technology can as well used to store the memory required during processing to decrease. A rendering machine based on an ad list allows it the compression system to handle bands of the image independently. Remarkable is that although the present invention has been described in terms of a printer system ben, the present invention is applicable to other systems, the Kom Pression and / or decompression subsystems included as parts thereof.
Ebenso wird hierin ein eingebettetes vereinigtes bzw. vereinheitlichtes verlustfrei es/verlustbehaftetes Kompressionssystem beschrieben. Die eingebettete Charakteristik des Systems ermöglicht es, daß die Qualität durch die Übertragungsrate der Platte bzw. Disk bestimmt wird. Für leicht komprimierte Bilder (z. B. die meisten Dokumente mit Text und/oder Linienzeichnung) wird eine verlustfreie Kompression erzielt. Für schwieriger zu komprimierende Bilder (z. B. Dokumente mit rauschbehafteten natürli chen Bildern und/oder Halbtönen) wird eine verlustbehaftete Kompression hoher Qualität erzielt.Also herein, an embedded unified lossless becomes described it / lossy compression system. The embedded characteristic of the system allows the quality by the transfer rate of the disk or Disk is determined. For slightly compressed pictures (eg most documents with Text and / or line drawing) a lossless compression is achieved. For more difficult to compress images (eg documents with noisy natural small images and / or halftones) becomes lossy compression higher Quality achieved.
Für eine Beschreibung eines Systems bzw. der Systeme, die sowohl verlustfreie Kompression als auch eine verlustbehaftete Kompression hoher Qualität von Farb bildern unterstützen, wird auf die US-Patentanmeldung Nr. 08/642,518, eingereicht am 3. Mai 1996, mit dem Titel "Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device-Dependent Parser", und auf die US-Patentanmeldung Nr. 08/436,662, eingereicht am 8. Mai 1995, mit dem Titel "Method and Apparatus for Reversible Color Conversion", verwiesen.For a description of a system or systems that are both lossless Compression as well as lossy compression of high quality of color See, for example, U.S. Patent Application Serial No. 08 / 642,518, filed on Apr May 3, 1996, entitled "Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device Dependent Parser, "and on the U.S. Patent Application No. 08 / 436,662, filed May 8, 1995, entitled "Method and Apparatus for Reversible Color Conversion ".
Die vorliegende Erfindung verwendet die Kompression durch reversible Wavelets.The present invention uses compression by reversible wavelets.
Die vorliegende Erfindung führt zu Beginn eine Zerlegung eines Bildes (in der Form von Bilddaten) oder eines anderen Datensignals durch, indem reversible Wavelets verwendet werden. Bei der vorliegenden Erfindung umfaßt eine reversible Wavelet-Trans formation eine Implementation eines Exakt-Rekonstruktionssystems in Ganzzahl-Arith metik, so daß ein Signal mit Ganzzahl-Koeffizienten verlustfrei wiedergewonnen werden kann. Eine effiziente reversible Transformation ist eine mit einer Transforma tionsmatrix, deren Determinante gleich 1 (oder fast 1) ist.The present invention initially performs a decomposition of an image (in the form of image data) or other data signal by reversible wavelets be used. In the present invention, a reversible wavelet trans Formation an implementation of an exact reconstruction system in integer Arith metic, so that a signal with integer coefficients recovered without loss can be. An efficient reversible transformation is one with a transforma tion matrix whose determinant is 1 (or almost 1).
Durch die Verwendung reversibler Wavelets ist die vorliegende Erfindung dazu in der Lage, eine verlustfreie Kompression mit endlicher Präzisionsarithmetik bereitzustellen. Die Ergebnisse, die durch die Anwendung der reversiblen Wavelet-Transformation auf die Bilddaten erzeugt werden, sind eine Reihe von Koeffizienten.Through the use of reversible wavelets, the present invention is in the Able to provide lossless compression with finite precision arithmetic. The results obtained by applying the reversible wavelet transform on the image data are generated are a series of coefficients.
Die reversibe Wavelet-Transformation der vorliegenden Erfindung kann implementiert werden, indem ein Satz von Filtern verwendet wird. Bei einer Ausführungsform handelt es sich bei den Filtern um einen 2-Abgriffs-Tiefpaßfilter und einen 6-Abgriffs-Hoch paßfilter, um eine Transformation zu implementieren, die hierin als TS-Trans formation oder 2,6-Transformation bezeichnet wird. Bei einer anderen Ausführungs form handelt es sich bei den Filtern um einen 2-Abgriffs-Tiefpaßfilter und einen 10-Abgriffs-Hochpaßfilter, um eine Transformation zu implementieren, die hierin als eine TT-Transformation oder 2,10-Transformation bezeichnet wird. Diese Filter können implementiert werden, indem nur Additions- und Subtraktionsoperationen (plus hardwa reverdrahtete Bit-Verschiebung) verwendet werden.The reversed wavelet transform of the present invention can be implemented be used by using a set of filters. In one embodiment the filters are a 2-tap low pass filter and a 6 tap high pass-filter to implement a transformation, referred to herein as TS-Trans formation or 2,6-transformation is called. In another embodiment form, the filters are a 2-tap low-pass filter and a 10-tap high pass filter to implement a transformation, referred to herein as a TT transformation or 2,10 transformation is called. These filters can can be implemented by adding only addition and subtraction operations (plus hardwa rewired bit shift).
Die TT-Transformation weist wenigstens einen Vorteil und wenigstens einen Nachteil gegenüber der TS-Transformation auf. Ein Vorteil ist, daß sie eine bessere Kom pression bereitstellt als die TS-Transformation. Der Nachteil der TT-Transformation ist, daß der längere 10-Abgriffs-Filter einen höheren Hardwareaufwand erfordert.The TT transformation has at least one advantage and at least one disadvantage towards the TS transformation. An advantage is that they have a better comm Pression provides as the TS transformation. The disadvantage of TT transformation is that the longer 10-tap filter requires more hardware.
Durch die Verwendung von Tiefpaß- und Hochpaßfiltern bei der vorliegenden Erfin dung wird eine Mehrfachauflösungszerlegung durchgeführt. Die Anzahl von Niveaus der Zerlegung ist variabel und kann beliebig in der Anzahl sein; jedoch ist die aktuelle Anzahl der Zerlegungsniveaus gleich 2 bis 8 Niveaus. Die maximale Anzahl der Niveaus ist log2 der maximalen Länge oder Breite der Eingabe.By using low-pass and high-pass filters in the present invention, multiple resolution decomposition is performed. The number of levels of decomposition is variable and may be any number; however, the current number of decomposition levels is equal to 2 to 8 levels. The maximum number of levels is log 2 of the maximum length or width of the input.
Die allgemeinste Art und Weise, um die Transformation mit zweidimensionalen Daten durchzuführen, wie z. B. einem Bild, liegt darin, die eindimensionalen Filter separat anzuwenden, d. h. entlang der Zeilen und dann entlang der Spalten. Das erste Niveau der Zerlegung führt zu vier unterschiedlichen Koeffizientenbändern, die hierin als SS, DS, SD und DD bezeichnet werden. Die Buchstaben beziehen sich auf glatte (S für "Smooth")- und Detail-(D)-Filter, die oben definiert wurden, die jeweilig Tief-(L für "Low")- und Hoch-(H für "High")-Paßfiltern entsprechen. Folglich besteht das SS-Band aus Koeffizienten von den Glattfiltern sowohl in der Zeilenrichtung als auch in der Spaltenrichtung.The most general way to transform with two-dimensional data perform such. As a picture, lies therein, the one-dimensional filter separately to apply, d. H. along the lines and then along the columns. The first level decomposition results in four different coefficient bands, referred to herein as SS, DS, SD and DD. The letters refer to smooth (S for "Smooth") and Detail (D) filters defined above, the respective low (L for "Low") and high (H for "high") pass filters. Consequently, that exists SS band of coefficients from the smooth filters in both the row direction and in the column direction.
Jedes Frequenzunterband in einer Wavelet-Zerlegung kann weiter zerlegt werden. Die allgemeinste Praxis liegt darin, nur das SS-Frequenzunterband weiter zu zerlegen. Sie kann eine weitere Zerlegung des SS-Frequenzunterbandes in jedes Zerlegungsniveau beinhalten, wenn jedes erzeugt wird. Eine derartige Mehrfachzerlegung wird als pyramidale Zerlegung bezeichnet. Die Bezeichnungen SS, SD, DS, DD und die Zerlegungsniveaunummer bezeichnen jede Zerlegung.Each frequency subband in a wavelet decomposition can be further decomposed. The The most common practice is to further decompose only the SS frequency subband. you may further decomposition of the SS frequency subband into each decomposition level include when each is generated. Such a multiple decomposition is called called pyramidal decomposition. The terms SS, SD, DS, DD and the Divisional level numbers denote each decomposition.
Bemerkenswert ist, daß weder mit der TS- oder der TT-Transformation der vorliegen den Erfindung die pyramidale Zerlegung nicht die Koeffizientengröße erhöht. It is noteworthy that neither with the TS or the TT transformation of the present In the invention, the pyramidal decomposition does not increase the coefficient size.
Falls die reversible Wavelet-Transformation rekursiv auf ein Bild angewendet wird, arbeitet das erste Niveau der Zerlegung bei dem feinsten Detail oder der feinsten Auflösung. Bei einem ersten Zerlegungsniveau wird das Bild in vier Unterbilder (z. B. Unterbänder) zerlegt. Jedes Unterband stellt ein Band von räumlichen Frequenzen dar. Die ersten Niveau-Unterbänder werden mit 1SS, 1SD, 1DS und 1DD bezeichnet. Der Prozeß der Zerlegung des Originalbildes enthält eine Unterabtastung mit zwei in sowohl horizontaler als auch vertikaler Dimension, so daß die Unterbänder ersten Niveaus 1SS, 1SD, 1DS und 1DD jeweils ein Viertel soviele Koeffizienten aufweisen, wie die Eingabepixel (oder Koeffizienten) des Bildes aufweisen.If the reversible wavelet transform is applied recursively to an image, The first level of decomposition works at the finest detail or the finest Resolution. At a first decomposition level, the image is divided into four subpictures (e.g. Subbands) decomposed. Each subband represents a band of spatial frequencies. The first level subbands are referred to as 1SS, 1SD, 1DS and 1DD. The Process of decomposing the original image contains a sub-scan with two in both horizontal and vertical dimension, so that the subbands first Levels 1SS, 1SD, 1DS and 1DD each have a quarter of the number of coefficients how the input pixels (or coefficients) of the image have.
Das Unterband 1SS enthält gleichzeitig Niederfrequenz-Horizontal- und Niederfrequenz-Vertikal-Information. Typischerweise ist ein großer Teil der Bild energie in diesem Unterband konzentriert (zum Begriff der Energie siehe das oben erwähnte Buch von Anneal K. Jain aaO., siehe dort insbesondere die Begriffe "energy compaction" und "energy conservation"). Das Unterband 1SD enthält eine Nieder frequenz-Horizontal und eine Hochfrequenz-Vertikal-Information (z. B. horizontale Kanteninformation bzw. Randinformation bzw. "Edge"-Information). Das Unterband 1DS enthält eine Hochfrequenz-Horizontal-Information und eine Niederfrequenz-Ver tikal-Information (z. B. vertikale Kanteninformation). Das Unterband 1DD enthält eine Hochfrequenz-Horizontal-Information und eine Hochfrequenz-Vertikal-Information (z. B. Struktur- oder Diagonalkanten-Information).The subband 1SS simultaneously contains low frequency horizontal and Low-frequency vertical information. Typically, a lot of the picture is energy concentrated in this subband (for the concept of energy see the above mentioned book by Anneal K. Jain ibid., see there in particular the terms "energy compaction "and" energy conservation "). The sub-band 1SD contains a low frequency horizontal and high frequency vertical information (eg horizontal Edge information or edge information or "edge" information). The subband 1DS contains high-frequency horizontal information and a low-frequency ver tical information (eg vertical edge information). The subband 1DD contains high-frequency horizontal information and high-frequency vertical information (eg, structural or diagonal edge information).
Jede der aufeinanderfolgenden zweiten, dritten und vierten unteren Zerlegungsniveaus wird durch Zerlegen des unteren Frequenz-SS-Unterbandes des vorhergehenden Niveaus erzeugt. Dieses Unterband 1SS des ersten Niveaus wird zerlegt, um Unterbän der 2SS, 2SD, 2DS und 2DD des mäßig detaillierten zweiten Niveaus zu erzeugen. In ähnlicher Weise wird das Unterband 2SS zerlegt, um grob detaillierte Unterbänder 3SS, 3SD, 3DS und 3DD des dritten Niveaus zu erzeugen. Ebenso wird das Unterband SS2 zerlegt, um grober detaillierte Unterbänder 4SS, 4SD, 4DS und 4DD des dritten Niveaus zu erzeugen. Aufgrund der Unterabtastung um zwei, wird jedes zweite Niveau-Unterband ein sechzehntel der Größe des ursprünglichen Bildes. Jeder Abtast wert bzw. Wert (z. B. Pixel) stellt bei diesem Niveau ein mäßiges Detail in dem Originalbild bzw. eine mäßig detaillierte Wiedergabe des Originalbilds bei derselben Stelle dar. In ähnlicher Weise beträgt jedes dritte Niveau-Unterband 1/64 der Größe des Originalbildes. Jedes Pixel bei diesem Niveau entspricht einem relativ groben Detail in dem Originalbild bzw. eine grobkörnig detaillierte Wiedergabe des Original bilds bei derselben Stelle. Ebenso beträgt jedes vierte Niveau-Unterband 1/256 der Größe des Originalbildes.Each of the successive second, third and fourth lower decomposition levels is generated by decomposing the lower frequency SS subband of the previous level. This first-level subband 1SS is decomposed to produce sub-bands of 2SS, 2SD, 2DS and 2DD of the moderately detailed second level. Similarly, the sub-band 2SS is decomposed to produce roughly-detailed sub-bands 3SS, 3SD, 3DS, and 3DD of the third level. Also, the sub-band SS 2 is decomposed to produce coarse detailed sub-bands 4SS, 4SD, 4DS and 4DD of the third level. Due to the subsampling by two, every second level sub-band becomes one-sixteenth the size of the original picture. Each sample (eg pixel) at this level represents a moderate detail in the original image and a moderately detailed representation of the original image at the same location, respectively. Similarly, every third level sub-band is 1/64 the size of the original picture. Each pixel at this level corresponds to a relatively coarse detail in the original image and a coarse-grained reproduction of the original image at the same location. Likewise, every fourth level sub-band is 1/256 of the size of the original picture.
Da die zerlegten Bilder aufgrund der Unterabtastung physisch kleiner sind als das Originalbild, kann derselbe Speicher, der zur Speicherung des Originalbildes verwendet wird, verwendet werden, um alle zerlegten Unterbänder zu speichern. Mit anderen Worten werden das Originalbild und die zerlegten Unterbänder 1SS und 2SS beseitigt bzw. gelöscht und bei einer Drei-Niveau-Zerlegung nicht gespeichert.Because the decomposed images are physically smaller than that due to undersampling Original image, the same memory used to store the original image is used to store all decomposed subbands. With others In words, the original image and the decomposed subbands 1SS and 2SS are eliminated or deleted and not stored in a three-level decomposition.
Obwohl nur vier Unterbandzerlegungsniveaus beschrieben sind, können zusätzliche Niveaus in Übereinstimmung mit den Erfordernissen eines bestimmten Systems entwickelt werden. Ebenso können mit anderen Transformationen, wie z. B. einer DCT oder linear beabstandeten Unterbändern, unterschiedliche Elternteil-Kind-Verhältnisse festgelegt werden.Although only four subband decomposition levels are described, additional Levels developed in accordance with the requirements of a particular system become. Likewise, with other transformations, such as. B. a DCT or linearly spaced subbands, different parent-child ratios be determined.
Bemerkenswert ist, daß eine pyramidale Zerlegung nicht die Koeffizientengröße mit den Wavelet-Filtern der vorliegenden Erfindung erhöht.It is noteworthy that a pyramidal decomposition does not match the coefficient size increases the wavelet filters of the present invention.
Bei anderen Ausführungsformen können andere Unterbänder zusätzlich zu dem SS ebenso zerlegt werden.In other embodiments, other subbands may be in addition to the SS be disassembled as well.
Es gibt eine natürliche und nützliche Baumstruktur für Wavelet-Koeffizienten bei einer pyramidalen Zerlegung. Ein Ergebnis der Unterbandzerlegung ist ein Einzel-SS-Fre quenz-Unterband, das dem letzten Niveau einer Zerlegung entspricht. Auf der anderen Seite gibt es so viele SD-, DS- und DD-Bänder wie die Anzahl der Niveaus. Die Baumstruktur legt das Elternteil eines Koeffizienten in einem Frequenzband so fest, daß er ein Koeffizient in einem selben Frequenzband bei einer niedrigeren Auflösung ist und mit derselben räumlichen Stelle in Beziehung steht.There is a natural and useful tree structure for wavelet coefficients at one pyramidal decomposition. One result of the subband decomposition is a single SS freef quency subband corresponding to the last level of a decomposition. On the other There are as many SD, DS and DD bands as the number of levels. The Tree structure sets the parent of a coefficient in a frequency band such that it is a coefficient in a same frequency band at a lower resolution and related to the same spatial location.
Bei der vorliegenden Erfindung umfaßt jeder Baum die SS-Koeffizienten und drei Unterbäume, nämlich die DS-, SD- und DD-Unterbäume. Die Verarbeitung der vorliegenden Erfindung wird typischerweise auf drei Unterbäumen durchgeführt. Die Wurzel eines jeden Baumes ist ein reiner Glättungskoeffizient. Für ein zweidimensiona les Signal, wie z. B. ein Bild, gibt es drei Unterbäume, jeder mit vier Kindern. Der Baum ist hierarchisch nicht auf zweidimensionale Signale beschränkt. Zum Beispiel hat bei einem eindimensionalen Signal jeder Unterbaum ein Kind. Höhere Dimensionen ergeben sich aus dem eindimensionalen und zweidimensionalen Fall.In the present invention, each tree comprises the SS coefficients and three Subtrees, namely the DS, SD and DD subtrees. The processing of The present invention is typically performed on three subtrees. The Root of each tree is a pure smoothing coefficient. For a two-dimensional les signal, such. For example, a picture, there are three subtrees, each with four children. The Tree is hierarchically not limited to two-dimensional signals. For example, has for a one-dimensional signal, every sub-tree is a child. Higher dimensions result from the one-dimensional and two-dimensional case.
Der Prozeß einer Multiauflösungszerlegung kann unter Verwendung eines Filtersystems durchgeführt werden. Hinsichtlich einer zweidimensionalen Zwei-Niveau-Transforma tion, die unter Verwendung eindimensionaler beispielhafter Filter implementiert ist, siehe US-Patentanmeldung Nr. 08/498,695, eingereicht am 30. Juni 1995, mit dem Titel "Method and Apparatus for Compression Using Reversible Wavelet Transforms and an Embedded Codestream" und die US-Patentanmeldung Nr. 08/498,036, einge reicht am 30. Juni 1995, mit dem Titel "Reversible Wavelet Transform and Embedded Codestream Manipulation".The process of multi-resolution decomposition can be done using a filter system be performed. Regarding a two-dimensional two-level transforma tion implemented using one-dimensional exemplary filters, see US Patent Application No. 08 / 498,695, filed June 30, 1995, with the Title "Method and Apparatus for Compression Using Reversible Wavelet Transforms and to Embedded Codestream "and US Patent Application No. 08 / 498,036 on June 30, 1995, entitled "Reversible Wavelet Transform and Embedded Codestream manipulation ".
Bei der vorliegenden Erfindung wird die Wavelet-Transformation mit zwei 1D-Opera tionen, zuerst horizontal, dann vertikal durchgeführt. Bei einer Ausführungsform führt ein Hardwareteil die horizontale Operation durch, während ein anderer die vertikalen Operationen durchführt.In the present invention, the wavelet transform is done with two 1D Opera tions, first horizontally, then vertically. In one embodiment leads one piece of hardware performs the horizontal operation while another performs the vertical one Performs operations.
Die Anzahl der Niveaus bestimmt die Anzahl der Iterationen. Bei einer Ausführungs form wird eine Vier-Niveau-Zerlegung durchgeführt, indem die TT-Transformation sowohl in der horizontalen als auch in der vertikalen Richtung verwendet wird. Bei einer anderen Ausführungsform wird die Vier-Niveau-Zerlegung durchgeführt, indem vier DS-Transformationen statt dessen verwendet werden.The number of levels determines the number of iterations. In one execution form a four-level decomposition is performed by the TT transformation is used in both the horizontal and in the vertical direction. at In another embodiment, the four-level decomposition is performed by four DS transformations are used instead.
Die Transformation der vorliegenden Erfindung ist hinsichtlich der Berechnung sehr effizient. Bei einer Ausführungsform ordnet die vorliegende Erfindung die Berechnun gen, die durch die Transformation durchgeführt werden, um die Menge sowohl eines auf dem Chip befindlichen Speichers (On-Chip Memory) als auch eines nicht auf einem Chip befindlichen Speichers (Official Communication-Chip Memory) und die benötigte Bandbreite zu reduzieren.The transformation of the present invention is very much in terms of calculation efficient. In one embodiment, the present invention arranges the calculations which are performed by the transformation to the amount of both a on-chip memory as well as one not on one Chip (Official Communication Chip Memory) and the required Reduce bandwidth.
Wie oben beschrieben wurde, stellt bei der vorliegenden Erfindung die Basiseinheit zur Berechnung der Transformation der Wavelet-Baum dar. Man nehme eine Vier-Niveau-Trans formation an, jeder Wavelet-Baum stellt einen 16×16-Block von Pixeln dar. Ein 16×16-Block von Pixeln (alle vier Komponenten für CMYK-Bilder) wird in die Trans formation der vorliegenden Erfindung eingegeben und alle möglichen Berechnungen, um Koeffizienten zu erzeugen, werden durchgeführt. (Das Inverse ist ähnlich, ein 16×16-Block mit Koeffizienten für jede Komponente wird eingegeben und alle mögli chen Berechnungen werden durchgeführt.) Da die vorliegende Erfindung eine überlapp te Transformation verwendet, wird die Information von vorhergehenden, benachbarten Bäumen gespeichert und bei den Berechnungen verwendet. Die Grenze zwischen dem gegenwärtigen Wavelet-Baum und der vorhergehenden benachbarten Information wird hierin als ein Saum bezeichnet. Die Information, die über einen Saum bewahrt wird, um die Transformation der vorliegenden Erfindung durchzuführen, wird im folgenden detailliert beschrieben.As described above, in the present invention, the base unit is used Calculation of the transformation of the wavelet tree. Take a four-level trans formation, each wavelet tree represents a 16x16 block of pixels 16 × 16 block of pixels (all four components for CMYK images) is transposed into the trans formation of the present invention and all possible calculations, to generate coefficients are performed. (The inverse is similar, a 16 × 16 block with coefficients for each component is entered and all possible chen calculations are performed.) Since the present invention an overlapping te transformation uses the information from previous, adjacent Trees stored and used in the calculations. The border between the current wavelet tree and the previous adjacent information referred to herein as a hem. The information that is saved about a hem, To carry out the transformation of the present invention will be described below described in detail.
Die Ordnung von Wavelet-Bäumen zur Berechnung der Transformation ist wichtig, da bei gewissen Anwendungen (z. B. Drucken) Codiereinheiten der vorliegenden Erfindung eine große Breite und eine geringe Höhe aufweisen. Bei einer Ausführungsform enthält jede Kodiereinheit 4096×256 Pixel.The order of wavelet trees to calculate the transformation is important because in certain applications (e.g., printing) encoding units of the present invention have a large width and a small height. In one embodiment each coding unit 4096 × 256 pixels.
Bei der folgenden Diskussion enthält jede der Kodiereinheiten 4096×256 Pixel. Jedoch ist bemerkenswert, daß das Ordnen, das im folgenden beschrieben wird, auf Kodier einheiten mit anderen Größen anwendbar ist. Fig. 2A zeigt eine Ordnung, die einer Rasterordnung ähnelt. Diese Ordnung bzw. Reihenfolge wird hierin als Lang-Saum-Trans formations-Ordnung bezeichnet. Nimmt man Bezug auf Fig. 2A, so zeigen die dicken Linien den Datenumfang an, der über die Säume bewahrt wird, und weist darauf hin, wieviel Speicher erforderlich ist, um die Transformation zu berechnen. Diese Daten sind proportional zu einem Wavelet-Baum für die horizontale Trans formation, aber zu der Breite des Bildes (4096 in diesem Beispiel) für die vertikale Transformation. Die Speichermenge für die Daten können die Verwendung eines externen Speichers erforderlich machen. Jedoch können wegen der Nähe der Raster ordnung während der inversen Transformation die Daten von der Transformation (zu z. B. einem Drucker in einer Druckeranwendung) ausgegeben werden, sobald eine horizontale Reihe bzw. Zeile von Wavelet-Bäumen in Pixel konvertiert werden muß.In the following discussion, each of the encoding units contains 4096x256 pixels. However, it is noteworthy that the ordering, which will be described below, applicable to coding units with other sizes. Fig. 2A shows an order similar to a raster order. This order is referred to herein as a long-tail-transformation order. Referring to Fig. 2A, the thick lines indicate the amount of data retained over the seams and indicate how much memory is required to compute the transformation. This data is proportional to a wavelet tree for the horizontal transformation but to the width of the image (4096 in this example) for the vertical transformation. The amount of memory for the data may require the use of external memory. However, because of the closeness of the rasterization during the inverse transform, the data may be output from the transform (for example, to a printer in a printer application) as soon as a horizontal row of wavelet trees needs to be converted to pixels.
Fig. 2B zeigt eine alternative Ausführungsform einer Reihenfolge, die hierin als kurze Saumordnung bezeichnet wird. Der Speicher für die Säume ist proportional zu der Höhe der Kodiereinheit (256 in diesem Beispiel) für die Horizontaltransformation und ein Wavelet-Baum für die Vertikaltransformation. Dies vermindert erheblich die erforderliche Speichermenge, was eine Speicherung auf einem Chip (On-Chip-Speiche rung) praktikabel macht. Fig. 2B shows an alternate embodiment of an order referred to herein as a short trim order. The memory for the seams is proportional to the height of the encoding unit (256 in this example) for the horizontal transformation and a wavelet tree for the vertical transformation. This significantly reduces the amount of memory required, making storage on a chip (on-chip memory) practical.
Fig. 2C zeigt eine alternative kurze Saumordnung. Auf Kosten von Speicher, der proportional zu einem weiteren Wavelet-Baum ist, wird die Anzahl aufeinanderfolgen der Pixel, die in Rasterordnung verarbeitet werden, erhöht. Diese Alternative oder ähnliche Alternativen können eine effizientere Verwendung eines Schnell-Seitenmodus oder eines RAM's für die beschleunigte Datenausgabe bzw. eines EDO-RAM's in dem Bandpuffer mit wenig Extraaufwand in dem Saumspeicher erlauben. Die Effizienz wird durch die Tatsache gewonnen, daß die meisten Speicher für den Zugriff zu benachbar ten Speicherstellen gewünscht oder optimiert werden. Deshalb führt jegliche Zunahme in der Verwendung benachbarter Speicherzugriffe aufgrund der Saumreihenfolge zu einer effizienteren Speicherverwendung. Fig. 2C shows an alternative short seam order. At the expense of memory proportional to another wavelet tree, the number of successive pixels processed in raster order is increased. These alternative or similar alternatives may allow more efficient use of a fast page mode or RAM for the accelerated data output or an EDO RAM in the band buffer with little overhead in the seam memory. Efficiency is gained by the fact that most of the memory is desired or optimized for access to adjacent memory locations. Therefore, any increase in the use of adjacent memory accesses due to the sear sequence results in more efficient memory usage.
Die folgenden Gleichungen legen sowohl die TS-Transformation als auch die TT-Transformation fest. Für eine Eingabe x(n) werden die Ausgabe des Tiefpaßfilters, das glatte Signal s(n), und des Hochpaßfilters, das detaillierte Signal d(n), berechnet, wie in der folgenden Gleichung gezeigt ist.The following equations set both the TS transform and the TT transformation fixed. For an input x (n), the output of the low-pass filter, the smooth signal s (n), and the high-pass filter, the detailed signal d (n), calculated as is shown in the following equation.
Die inverse Transformation ist bei der folgenden Gleichung gezeigt.
The inverse transformation is shown in the following equation.
wobei p(n) wie folgt berechnet wird:
where p (n) is calculated as follows:
p(n) = d(n)-t(n).p (n) = d (n) -t (n).
Die TS-Transformation und die TT-Transformation unterscheiden sich in der Definition
von t(n). Für die TS-Transformation gilt:
The TS transformation and the TT transformation differ in the definition of t (n). For the TS transformation:
Für die TT-Transformation gilt:
For the TT transformation, the following applies:
Bemerkenswert ist, daß bei der folgenden Diskussion die Notation bedeutet, nach unten abzurunden oder abzuschneiden und wird manchmal als Bodenfunktion bezeich net.It is noteworthy that in the following discussion the notation means after Round down or cut off and is sometimes referred to as ground function net.
Der Effekt der Verwendung des Sechs-Abgriffsfilters und eines Zwei-Abgriffsfilters bei gleichmäßigen Abständen ist, daß drei Stücke einer Information gespeichert werden müssen. Der Sechs-Abgriffsfilter erfordert zwei Verzögerungen. Der Zwei-Abgriffs filter erfordert eine Verzögerung, so daß sein Ergebnis bezüglich des Ergebnisses des Sechs-Abgriffsfilters zentriert werden kann. Insbesondere müssen zwei s(⚫)-Werte und ein d(⚫)-Wert oder ein Teilergebnis von der d(⚫)-Berechnung gespeichert werden. Eine Speicherung dieser Werte ist identisch, und zwar ungeachtet, ob oder ob nicht ein bestimmter Filterbetrieb einen Saum kreuzt oder nicht.The effect of using the six-tap filter and a two-tap filter at even intervals is that three pieces of information are stored have to. The six-tap filter requires two delays. The two-tap Filter requires a delay, so that its result with respect to the result of Six-tap filter can be centered. In particular, two s (⚫) values and a d (⚫) value or a partial result from the d (⚫) calculation are stored. A Storage of these values is identical regardless of whether or not certain filter operation crosses a hem or not.
Fig. 3A bis 3H zeigen das Ergebnis einer jeden Anwendung des TS-Transformations filters für eine Vier-Niveau-Transformation auf einem Wavelet-Baum der vorliegenden Erfindung. Bei diesen Figuren wird die Ausgabe des Tiefpaßfilters als "s" für "smooth" bzw. glatt bezeichnet. Die Ausgabe des Hochpaßfilters wird als "d" für Detail bezeich net. Das "B" bezeichnet einen Zwischenwert, der verwendet wird, um ein "d" zu berechnen; er ist ein x(2n)-x(2n+1)-Wert. Die "B"-Werte werden während der Vor wärtstransformation verwendet; für die inverse Transformation wird ein "d"-Wert, der nicht für irgendwelche Berechnungen verwendet wird, an seiner Stelle gespeichert. Die Notation "sd" zeigt an, daß ein Koeffizient das Ergebnis von zuerst einem horizontalen Tiefpaßfilter und dann einem vertikalen Hochpaßfilter ist. Die Bedeutungen von "ds", "dd", "ss", "dB" und "sB" sind ähnlich. Das fette bzw. fettgedruckte Rechteck ent spricht den 256 Eingangspixeln. Die schattierten "s"-, "ds"- und "ss"-Werte werden mit einem vorhergehenden Wavelet-Baum berechnet und zur Verwendung bei dem aktuellen Wavelet-Baum verwendet. Figures 3A through 3H show the result of each application of the TS transform filter for a four-level transform on a wavelet tree of the present invention. In these figures, the output of the low-pass filter is referred to as "s" for "smooth". The output of the high pass filter is referred to as "d" for detail. The "B" denotes an intermediate value used to calculate a "d"; it is an x (2n) -x (2n + 1) value. The "B" values are used during the pre-transformation; for inverse transformation, a "d" value that is not used for any calculations is stored in its place. The notation "sd" indicates that a coefficient is the result of first a horizontal low-pass filter and then a vertical high-pass filter. The meanings of "ds", "dd", "ss", "dB" and "sB" are similar. The bold or bold rectangle corresponds to the 256 input pixels. The shaded "s", "ds" and "ss" values are calculated with a previous wavelet tree and used for use in the current wavelet tree.
Bezüglich der Vorwärtstransformation stellen die "ss"-Koeffizienten von dem vorher gehenden Niveau die Eingaben zu dn Niveaus 2, 3 und 4 der Transformation dar. Die "sd"-, "ds"- und "dd"-Koeffizienten sind erledigt, so daß sie ausgegeben werden können, wenn sie berechnet sind. Die inverse Transformation führt alle Berechnungen in einer bezüglich der Niveaus (das vierte Niveau zuerst, dann das dritte, zweite und schließlich das erste) und bezüglich vertikaler (zuerst) und horizontaler (als zweites) Reihenfolge durch. Innerhalb eines Durchlaufs der Transformation ist der Datenfluß von vorwärts und invers identisch, jedoch ist die Berechnung unterschiedlich.With regard to the forward transformation, the "ss" coefficients of the previous level going to the inputs to the levels 2, 3 and 4 of the transformation. The "sd", "ds" and "dd" coefficients are done so that they are output can if they are calculated. The inverse transformation performs all calculations in one concerning the levels (the fourth level first, then the third, second and third finally the first one) and in terms of vertical (first) and horizontal (second) Order through. Within one pass of the transformation is the data flow from forward and inversely identical, but the calculation is different.
Fig. 4A ist ein Blockdiagramm einer Ausführungsform einer vorwärts/inversen Filter einheit zur Verwendung bei der Implementation der eindimensionalen Filter. Es sind nur Speicher- und Berechnungseinheiten gezeigt, hardware-verdrahtete Verschiebungen sind nicht gezeigt. Nimmt man Bezug auf Fig. 4A, so handhabt eine Filtereinheit 4000 sowohl die Vorwärts- als auch inverse Transformation. Alternative Ausführungsformen können verwendet werden, um Einheiten für die Vorwärts- und inverse Transformation zu separieren. Für die Vorwärtstransformation werden Eingänge der Größe "n" ver wendet und die "s"- und "d"-Ausgänge werden erzeugt. Für die inverse Transformation werden die "s"- und "d"-Eingänge verwendet und die anderen Ausgaben werden erzeugt. Fig. 4A is a block diagram of one embodiment of a forward / inverse filter unit for use in the implementation of the one-dimensional filters. Only memory and calculation units are shown, hardware wired shifts are not shown. Referring to Figure 4A, a filter unit 4000 handles both forward and inverse transformation. Alternative embodiments may be used to separate units for forward and inverse transformation. For the forward transformation, inputs of the size "n" are used and the "s" and "d" outputs are generated. For inverse transformation, the "s" and "d" inputs are used and the other outputs are generated.
Der Addierer 4001 ist angeschlossen, um n-Bit-Eingaben zu empfangen und sie zu sammenzuaddieren, um eine Ausgabe x(2n+2)+x(2n+3) zu erzeugen. Der Addierer 4002 subtrahiert ein n-Bit-Eingabe von der anderen und gibt die Quantität x(2n+2)-x(2n+3) aus. Die Ausgaben der Addierer 4001 und 4002 sind mit einem Eingang der Multiplexer (jeweils abgekürzt "mux") 4003 und 4004 jeweilig verbunden. Die anderen Eingänge zu den Multiplexern 4003 und 4004 sind angeschlossen, um die s- und d-Eingaben jeweilig zu empfangen. Bei einer Ausführungsform beträgt die s-Eingabe n-Bits, während die d-Eingabe größer als n-Bits ist.The adder 4001 is connected to receive n-bit inputs and to add them together to produce an output x (2n + 2) + x (2n + 3). The adder 4002 subtracts an n-bit input from the other and outputs the quantity x (2n + 2) -x (2n + 3). The outputs of the adders 4001 and 4002 are respectively connected to one input of the multiplexers (abbreviated to "mux") 4003 and 4004, respectively. The other inputs to the multiplexers 4003 and 4004 are connected to receive the s and d inputs, respectively. In one embodiment, the s input is n bits while the d input is greater than n bits.
Die Ausgabe der Multiplexer 4003 und 4004 wird durch ein Vorwärts-/Invers-Steuer signal gesteuert, das darauf hinweist, ob der Filter sich in dem Vorwärts- oder inversen Modus befindet. In entweder dem Vorwärts- oder inversen Modus ist die Ausgabe des Multiplexers 4003 gleich s(n+1). Auf der anderen Seite ist die Ausgabe des Multiple xers 4004 gleich p(n+1) in dem Vorwärtsmodus und d(n+1) in dem inversen Modus. The output of the multiplexers 4003 and 4004 is controlled by a forward / inverse control signal indicating whether the filter is in the forward or inverse mode. In either the forward or inverse mode, the output of the multiplexer 4003 is s (n + 1). On the other hand, the output of the multiplexer 4004 is p (n + 1) in the forward mode and d (n + 1) in the inverse mode.
Die Ausgaben von den Multiplexern 4003 und 4004 zusammen mit einer Rückkopplung einer s(n)-Ausgabe von dem Multiplexer 4006 werden zu den Eingängen der Register datei 4005 gekoppelt. Die Registerdatei 4005 enthält die Einträge für jede Komponente für die Länge eines Wavelet-Baums. Die Daten werden typischerweise durch die Registerdatei 4005 hindurchgereicht. Basierend auf der räumlichen Stelle werden die Eingaben zum Register 4005 zum Ausgang verzögert. Eine Adresseneingabe steuert die Ausgaben der Registerdatei 4005. Bei einer Ausführungsform umfaßt die Registerdatei 4005 zwei Speicherbänke mit einem Port pro Bank und wird in einem Pingpong-Stil verwendet, wobei hin- und her zwischen den beiden Speicherbänken zugegriffen wird.The outputs from the multiplexers 4003 and 4004 along with a feedback of an s (n) output from the multiplexer 4006 are coupled to the inputs of the register file 4005 . The register file 4005 contains the entries for each component for the length of a wavelet tree. The data is typically passed through the register file 4005 . Based on the spatial location, the inputs to register 4005 are delayed to the output. An address input controls the outputs of the register file 4005 . In one embodiment, the register file 4005 includes two memory banks with one port per bank and is used in a ping-pong style, with back and forth access between the two memory banks.
Die Ausgabe des Multiplexers 4003 stellt ebenso die s-Ausgabe der Filtereinheit dar.The output of the multiplexer 4003 also represents the s output of the filter unit.
Die Ausgaben der Registerdatei 4005 sind mit den Eingaben des Multiplexers 4006 zusammen mit den extern gepufferten Daten bei einem Saumpuffer in 4020 angeschlos sen. Die Ausgabe 4006A umfaßt s(n-1), was eine zweimal verzögerte Version der Ausgabe von dem Multiplexer 4003 ist. Die Ausgabe 4006B umfaßt s(n), was eine verzögerte Version von s(n+1) ist. Die Ausgabe 4006C umfaßt p(n) für den Vorwärts modus und d(n) für den inversen Modus. Der Multiplexer 4006 wird ebenso gesteuert, um extern zu puffernde Saumdaten bei dem Saumpufferausgang 4021 bereitzustellen.The outputs of the register file 4005 are coupled to the inputs of the multiplexer 4006 along with the externally buffered data at a hem buffer in 4020. The output 4006 A includes s (n-1), which is a twice-delayed version of the output from the multiplexer 4003 . The output 4006 B includes s (n), which is a delayed version of s (n + 1). The output 4006 C includes p (n) for the forward mode and d (n) for the inverse mode. The multiplexer 4006 is also controlled to provide externally buffered seam data at the seam buffer output 4021 .
Die Ausgabe 4006C ist mit einem Eingang der Addierer 4008 und 4009 verbunden. Die andere Eingabe der Addierer 4008 und 4009 ist der Ausgang des Multiplexers 4015. Der Multiplexer 4015 handhabt die Randbedingungen bzw. Grenzbedingungen. Auf einer Grenze gibt der Multiplexer 4015 aus, wie die Null, die mit einem seiner Eingänge fest verdrahtet ist. Die fest verdrahtete Null kann geändert werden, um andere Werte bei manchen Ausführungsformen zu verwenden. Bei einer Nicht-Grenz bedingung gibt der Multiplexer 4015 t(n) aus, das von dem Addierer 4007 ausgegeben wird, der angeschlossen ist, um s(n+1) auf einen Eingang zu s(n-1) auf einen anderen Eingang zu addieren, indem s(n-1) von s(n+1) subtrahiert wird. The output 4006 C is connected to an input of the adders 4008 and 4009 . The other input to the adders 4008 and 4009 is the output of the multiplexer 4015 . The multiplexer 4015 handles the boundary conditions. On a boundary, the multiplexer outputs 4015 , like the zero hardwired to one of its inputs. The hard-wired zero can be changed to use other values in some embodiments. In a non-boundary condition, the multiplexer 4015 outputs t (n) output from the adder 4007 connected to s (n + 1) on an input to s (n-1) to another input by subtracting s (n-1) from s (n + 1).
Der Addierer 4008 addiert die Ausgabe 4006C vom Multiplexer 4006 zu der Ausgabe vom Multiplexer 4015, um die d-Ausgabe der Filtereinheit zu erzeugen.The adder 4008 adds the output 4006 C from the multiplexer 4006 to the output from the multiplexer 4015 to produce the d output of the filter unit.
Der Addierer 4009 subtrahiert die Ausgabe von 4006C vom Multiplexer 4006 von der Ausgabe vom Multiplexer 4015. Die Ausgabe des Addierers 4009 wird zu s(n) auf der Ausgabe 4006B des Multiplexers 4006 durch den Addierer 4010 addiert, um eine n-Bit-Ausgabe der Filtereinheit zu erzeugen. Die Ausgabe 4009 wird ebenso von s(n) der Ausgabe 4006B vom Multiplexer 4006 durch den Addierer 4011 subtrahiert, der die andere n-Bit-Ausgabe der Filtereinheit in der inversen Richtung ausgibt.The adder 4009 subtracts the output of 4006 C from the multiplexer 4006 from the output from the multiplexer 4015 . The output of the adder 4009 is added to s (n) on the output 4006 B of the multiplexer 4006 by the adder 4010 to produce an n-bit output of the filter unit. The output 4009 is also subtracted from s (n) of the output 4006 B from the multiplexer 4006 by the adder 4011 , which outputs the other n-bit output of the filter unit in the inverse direction.
Für Säume, die länger als ein Wavelet-Baum sind, können Saumdaten in einem auf einem Chip befindlichen statischen RAM (SRAM) oder einem externen Speicher anstelle einer Registerdatei 4005 gespeichert werden. Der Multiplexer 4006 stellt einen Zugriff zu und von diesem zusätzlichen Saumspeicher bereit.For seams that are longer than a wavelet tree, seam data may be stored in on-chip static RAM (SRAM) or external memory rather than a register file 4005 . Multiplexer 4006 provides access to and from this additional seam memory.
Der größte Hardwareaufwand bzw. die meisten Hardwarekosten der Filtereinheit 4000 sind auf die Registerdatei 4005 zurückzuführen. Der gesamte Speicherumfang, der benötigt wird, hängt von der Anzahl der Filtereinheiten ab. Bei einer Ausführungsform werden insgesamt 60 Stellen zum Speichern von drei Werten (s, s, d oder ss, ss, sd) benötigt. Wenn mehr Filtereinheiten verwendet werden, ist die benötigte Speichermen ge kleiner. Deshalb sind die Hardwarekosten bzw. der Hardwareaufwand für die Verwendung von mehreren Filtereinheiten gering.The largest hardware expenditure or the most hardware costs of the filter unit 4000 are due to the register file 4005 . The total amount of memory needed depends on the number of filter units. In one embodiment, a total of 60 locations are needed to store three values (s, s, d or ss, ss, sd). If more filter units are used, the required memory size is smaller. Therefore, the hardware costs or the hardware costs for the use of multiple filter units are low.
Eine schnelle inverse Transformation erlaubt eine geringere Latenz zwischen dem Ende des Dekodierens und Beginn der Dateiausgabeoperation, wie z. B. Drucken. Dies reduziert den Arbeitsspeicher, der für die Dekompression benötigt wird, und erlaubt größere Kodiereinheiten. Eine schnelle Vorwärtstransformation ermöglicht es, daß die Filter Diskontinuitäten in den Daten bzw. Daten-Bursts handhaben können, wenn eine größere Bandbreite verfügbar ist, was es wiederum ermöglicht, daß die Transformation mehr Daten zu dem Kontextmodell liefert, wenn ein Vorausschauen es dem Kon textmodell erlaubt, die Daten schnell zu verarbeiten. Falls die Vorwärtstransformation nicht mit dem Kontextmodell während des Kodierens Schritt halten kann, wird eine Plattenbandbreite bzw. Disk-Bandbreite während des Kodierens verschwendet, was die Zeit bis zum Beginn des Druckens verzögert. Ebenso können die Steuerung und der Datenfluß durch die Verwendung mehrerer Filter vereinfacht werden.A fast inverse transformation allows less latency between the ends the decoding and start of the file output operation, such. B. printing. This reduces and allows the memory needed for decompression larger encoding units. A fast forward transformation allows the Filter can handle discontinuities in the data or data bursts, if one greater bandwidth is available, which in turn allows the transformation provides more data to the context model when looking forward to it textmodell allows to process the data quickly. If the forward transformation does not keep up with the contextual model during coding becomes one Disk bandwidth or disk bandwidth is wasted during encoding, causing the Delayed time to the beginning of printing. Likewise, the controller and the Data flow through the use of multiple filters are simplified.
Fig. 4B ist ein Blockdiagramm einer Ausführungsform einer Vorwärtstransformation ersten Niveaus gemäß der vorliegenden Erfindung. Nimmt man Bezug auf Fig. 4B, so führen zwei Filtereinheiten 401 und 402, wie z. B. jene, die in Fig. 4A gezeigt sind, das erste Niveau der Transformation durch. Die Filtereinheit 401 führt eine Niveau-1-Horizontal transformation durch, während die Filtereinheit 402 eine Niveau-1-Vertikal transformation durchführt. Bei einer Ausführungsform arbeitet das erste Niveau der Transformation auf 2×2-Blöcken der Eingabe. Vier Register 403 bis 406 arbeiten als Verzögerungseinheiten, um Ausgaben der Filtereinheit 401 zu verzögern. Dies wird als eine kind-basierte Reihenfolge bezeichnet. Das Register 403 empfängt die S-Ausgabe der Filtereinheit 401, während die Register 404 und 405 die d-Ausgabe empfangen. Die Ausgabe des Registers 404 ist an die Eingabe des Registers 406 angeschlossen. Die Ausgaben der Register 403 und 406 sind an die Eingaben des Multiplexers 407 an geschlossen, wohingegen die s-Ausgabe der Filtereinheit 401 und die Ausgabe des Registers 405 an die Eingaben des Multiplexers 408 angeschlossen sind. Zwei Multi plexer 407 und 408 wählen Eingaben für die Filtereinheit 402 von jenen der verzöger ten Koeffizientenausgabe von der Filtereinheit 401 aus. FIG. 4B is a block diagram of an embodiment of a forward transform the first level according to the present invention. Referring to FIG. 4B, two filter units 401 and 402 , such as those shown in FIG . For example, those shown in Fig. 4A undergo the first level of transformation. The filter unit 401 performs level 1 horizontal transformation while the filter unit 402 performs level 1 vertical transformation. In one embodiment, the first level of transformation operates on 2 × 2 blocks of the input. Four registers 403 to 406 function as delay units to delay spending of the filtering unit four hundred and first This is called a child-based order. Register 403 receives the S output of filter unit 401 while registers 404 and 405 receive the d output. The output of the register 404 is connected to the input of the register 406 . The outputs of the registers 403 and 406 are closed to the inputs of the multiplexer 407 , whereas the s output of the filter unit 401 and the output of the register 405 are connected to the inputs of the multiplexer 408 . Two multiplexers 407 and 408 select inputs to the filter unit 402 from those of the delayed coefficient output from the filter unit 401 .
Die Filtereinheit 401 arbeitet konsekutiv auf zwei vertikal benachbarten Paaren von Eingaben bzw. Eingangssignalen. Dies erzeugt vier Koeffizienten, die mit der richtigen Verzögerung, die von den Registern 403 bis 406 für jede Komponente bereitgestellt wird, in die Filtereinheit 402 eingegeben werden. Drei dieser vier Ergebnisse können sofort ausgegeben werden, die "ss"-Ausgabe wird weiterverarbeitet. The filter unit 401 operates consecutively on two vertically adjacent pairs of inputs. This produces four coefficients that are inputted with the proper delay, which is provided from the registers 403 to 406 for each component in the filter unit 402nd Three of these four results can be output immediately, the "ss" output is processed further.
Die Vorwärtsübertragung gemäß dem ersten Niveau arbeitet auf Gruppen von vier Pixeln, die sich in 2×2-Gruppierungen befinden. Für Diskussionszwecke sollte die erste Zeile bzw. Reihe Pixel a und b enthalten, während die zweite Zeile bzw. Reihe Pixel c und d enthalten sollte. Die Operation der Erst-Niveau-Vier-Transformation in Fig. 4B ist wie folgt. Während des ersten Zyklus wird die horizontale Transformation auf die a- und b-Pixel angewendet, die durch die Filtereinheit 401 verarbeitet werden. Die Filtereinheit 401 erzeugt die Sab, was im Register 403 gespeichert wird, und Dab, was im Register 404 und 405 gespeichert wird. In dem nächsten Zyklus werden die Pixel c und d durch die Filtereinheit 401 verarbeitet, um die horizontale Transformation durchzuführen. Infolge der Anwendung der Filtereinheit 401 wird Scd, das im Register 403 gespeichert ist, und Dcd, das in den Registern 404 und 405 gespeichert ist, erzeugt. Bei diesem Zyklus werden Sab vom Register 403 und Scd vom Register 405 durch die Filtereinheit 402 verarbeitet, die einen vertikalen Durchlaß der Transformation durch führt und SS und SD erzeugt. Ebenso während des zweiten Zyklus bewegt sich der Wert Dab, vom Register 404 zum Register 406. Im nächsten Zyklus werden der Wert Dab vom Register 406 und Dcd von 405 durch die Filtereinheit 402 verarbeitet, die die Ausgaben DS und DD erzeugt. In demselben Zyklus verarbeitet Filtereinheit 401 die a- und b-Pixel von dem nächsten 2×2-Block.The forward transmission according to the first level operates on groups of four pixels which are in 2 × 2 groupings. For discussion purposes, the first row or row should contain pixels a and b, while the second row should contain pixels c and d. The operation of the first level four transformation in Fig. 4B is as follows. During the first cycle, the horizontal transformation is applied to the a and b pixels processed by the filter unit 401 . The filter unit 401 generates the S from what is stored in register 403, and D on what is stored in register 404 and 405th In the next cycle, the pixels c and d are processed by the filter unit 401 to perform the horizontal transformation. As a result of the application of the filter unit 401 , S cd stored in the register 403 and D cd stored in the registers 404 and 405 are generated. In this cycle, S ab from register 403 and S cd from register 405 are processed by filter unit 402 , which performs a vertical pass of the transform and generates SS and SD. Likewise, during the second cycle, the value moves from D, from the register 404 to the register 406th In the next cycle, the value D ab from register 406 and D cd from 405 are processed by filter unit 402 , which generates the outputs DS and DD. In the same cycle, filter unit 401 processes the a and b pixels from the next 2 x 2 block.
Fig. 5 ist ein Blockdiagramm einer Ausführungsform einer Vorwärtstransformation gemäß der vorliegenden Erfindung. Nimmt man Bezug auf Fig. 5, so führt die Niveau-1-Trans formation 502 die Niveau-1-Transformation durch. Bei einer Ausführungsform umfaßt die Niveau-1-Transformation die Niveau-1-Transformation der Fig. 4B. Die Filtereinheit 505 handhabt die Niveaus 2, 3 und 4 der Transformation. Ein Speicher 503 speichert "ss"-Koeffizienten, bis ausreichend Koeffizienten verfügbar sind, um die Transformation durchzuführen. Die Anzahl der Koeffizienten, die gespeichert werden müssen, ist unten in der Tabelle 2 gezeigt. (Jede Stelle speichert einen Koeffizienten für jede Komponente). Fig. 5 is a block diagram of one embodiment of a forward transform according to the present invention. Referring to Fig. 5, level 1 transformation 502 performs the level 1 transformation. In one embodiment, the level 1 transformation comprises the level 1 transformation of FIG. 4B. The filter unit 505 handles the levels 2, 3 and 4 of the transformation. A memory 503 stores "ss" coefficients until sufficient coefficients are available to perform the transformation. The number of coefficients to be stored is shown in Table 2 below. (Each digit stores a coefficient for each component).
Tabelle 2 - "ss"-VerzögerungsspeicherTable 2 - "ss" delay memory
Die Ordnungseinheit 504 multiplext die richtigen Eingaben in die Filtereinheit 505. Der Eingangspuffer 501 und der Ausgangspuffer 506 können erforderlich sein, um zwi schen der Transferreihenfolge, die von der Transformation benötigt wird, und der Ordnung bzw. Reihenfolge, die durch den Bandpuffer oder das Kontextmodell benötigt wird, abzustimmen.The ordering unit 504 multiplexes the correct entries into the filter unit 505 . The input buffer 501 and the output buffer 506 may be required to tune between the transfer order needed by the transform and the order needed by the band buffer or the context model.
Für die inverse Transformation wird der Datenfluß umgedreht, wobei die Niveau-4-In vers-Transformation gefolgt von der Niveau-3-, Niveau-2- und Niveau-1-Trans formation in einer Reihenfolge durchgeführt wird. Die Ausgabe der Niveau-2-Trans formation wird in die erste Niveau-Transformations-Hardware der Niveau-1-Trans formation 502 eingegeben. Ebenso wird ein vertikales Filtern vor einem horizontalen Filtern durchgeführt. Da das horizontale und vertikale Filtern identisch sind mit der Ausnahme, daß eine Richtung einen Zugriff zu zusätzlichen Speichern für die Säume erforderlich macht, kann eine Umkehrung des Datenflusses mit einem geringen Umfang an Multiplexen durchgeführt werden. Vor der inversen Transformation müssen die Zwei-Byte-Koeffizienten von der eingebetteten Form mit zwei Signalisierungsbits in normale Zweier-Komplementärzahlen konvertiert werden.For the inverse transformation, the data flow is reversed, with the level 4 inverse transformation followed by the level 3, level 2 and level 1 transformation performed in an order. The output of the level 2 transformation is input to the level 1 transformation first level hardware 502 . Likewise, vertical filtering is performed before horizontal filtering. Since the horizontal and vertical filtering are identical except that one direction requires access to additional memories for the seams, inversion of the data flow can be performed with a small amount of multiplexing. Prior to the inverse transform, the two-byte coefficients must be converted from the embedded form with two signaling bits to normal two's complement numbers.
Die Elemente, die in Fig. 4B und 5 gezeigt sind, können ebenso für die TT-Trans formationen verwendet werden.The elements shown in Figs. 4B and 5 can also be used for the TT transformations.
Die Transformations-Zeitsteuerung der Vorwärtstransformation der Fig. 5 basiert auf der Zeitsteuerung der einzelnen Filtereinheiten. Die erste Filtereinheit, die Filtereinheit 401, berechnet Horizontal-Niveau-1-Transformationen, während die zweite Filter einheit, die Filtereinheit 402, vertikale Niveau-1-Transformationen berechnet. Die dritte Filtereinheit, die Filtereinheit 505, berechnet Transformationen für Niveaus 2 bis 4 oder sie ist untätig.The transformation timing of the forward transformation of Fig. 5 is based on the timing of the individual filter units. The first filter unit, the filter unit 401 , calculates horizontal level 1 transforms, while the second filter unit, the filter unit 402 , computes vertical level 1 transforms. The third filter unit, the filter unit 505 , calculates transforms for levels 2 to 4 or it is idle.
Bei einer Ausführungsform berechnet die dritte Filtereinheit (505), wenn sie nicht untätig ist, horizontale Transformationen während geradzahligen Taktzyklen und vertikale Transformationen während ungeradzahligen Taktzyklen. Die Zeitsteuerung für die inverse Transformation ist ähnlich (aber umgekehrt).In one embodiment, the third filter unit ( 505 ), when not idle, computes horizontal transforms during even clock cycles and vertical transforms during odd clock cycles. The timing for inverse transformation is similar (but vice versa).
Bei dem folgenden Beispiel werden 2×2-Blöcke innerhalb eines Wavelet-Baums in der Transponierten einer Rasterordnung verarbeitet. Bemerkenswert ist, daß eine geringe Eingangs-/Ausgangs-(I/O)-Pufferung erforderlich sein könnte, um ein Schnell-Seiten modus-/EDO-DRAM zu unterstützen, falls 2×2-Blöcke innerhalb eines Wavelet-Baums statt dessen in Rasterordnung verarbeitet werden.In the following example, 2 × 2 blocks within a wavelet tree will be in the Transposed transposed a raster order. It is noteworthy that a small Input / output (I / O) buffering might be required to get a fast-paged page support mode / EDO DRAM if 2 × 2 blocks within a wavelet tree instead be processed in raster order.
Fig. 6 ist ein Zeitsteuerdiagramm für den Fall, wenn Koeffizienten ausgegeben werden.
Die folgende Zeitsteuerung bzw. der folgende Zeitablauf gilt für jedes Pixel. Es gibt
vier Komponenten pro Pixel.
Fig. 6 is a timing chart for the case where coefficients are output. The following timing or timing applies to each pixel. There are four components per pixel.
Da es für den Fachmann üblicher ist, sog. Pseudokodes in der englischen Sprache zu
lesen, wird der oben deutsch wiedergegebene Pseudokode im folgenden nochmals in
Englisch wiedergegeben:
Since it is more common for a person skilled in the art to read so-called pseudo codes in the English language, the pseudo code reproduced above in German is again reproduced in English:
Fig. 7A bis 7H zeigen die Ergebnisse (Ausgaben) jeder eindimensionalen Filteropera tion der TT-Transformation. Ein Rechteck zeigt Koeffizienten in einem einzigen Wavelet-Baum an, der den Eingabepixeln entspricht, die gegenwartig verarbeitet werden. Eine Schattierung zeigt Koeffizienten an, die von dem vorhergehenden Baum gespeichert werden. Die Werte, die mit "B" bezeichnet bzw. markiert werden, stellen Zwischenergebnisse dar, die gespeichert werden (und die die Differenz zwischen benachbarten Abtastwerten bzw. Werten darstellen). Die TT-Transformation ähnelt der TS-Transformation, benötigt aber mehr Speicher. Figs. 7A to 7H show the results (outputs) of each one-dimensional filter operation of the TT transformation. A rectangle displays coefficients in a single wavelet tree that corresponds to the input pixels that are currently being processed. Shading indicates coefficients stored by the previous tree. The values labeled "B" represent intermediate results that are stored (and represent the difference between adjacent samples or values). The TT transformation is similar to the TS transformation, but requires more memory.
Fig. 8 ist ein Blockdiagramm einer 10-Abgriffs-Vorwärts-/Invers-Filtereinheit. Bemer kenswert ist, daß hardware-verdrahtete Verschiebungen und Rundungsoffsets bzw. ein Rundungsversatz nicht gezeigt sind, um die vorliegende Erfindung nicht zu verschlei ern. Bemerkenswert ist, daß der Multiplexer 806 in Fig. 8 ebenso zur Spiegelung ("mirroring") bei Transformationsgrenzen verwendet werden kann. Für eine Im plementation der Spiegelung ist es ebenso nötig, daß der "d"-Eingang 0 gemacht wird und der s(n+2)-Eingang der Überlappeinheit gemultiplext wird. Fig. 8 is a block diagram of a 10-tap forward / inverse filter unit. It is noteworthy that hardware wired shifts and round offsets are not shown in order to avoid spoiling the present invention. It is noteworthy that the multiplexer 806 in Figure 8 also uses "mirroring" at transformation boundaries can be. It is also necessary for an implementation of the mirroring to make the "d" input 0 and multiplex the s (n + 2) input of the overlap unit.
Nimmt man Bezug auf Fig. 8, so sind die Addierer 801 und 802 angeschlossen, um die 2-n-Bit-Eingänge während des Vorwärtsdurchlaufs der Filtereinheit zu empfangen. Der Addierer 801 addiert die 2-n-Bit-Eingaben und gibt einen Wert aus, der mit einem Eingang des Multiplexers 803 verbunden ist. Der Addierer 802 subtrahiert einen Eingang von dem anderen, wobei er seine Ausgabe für einen Eingang des Multiplexers 804 erzeugt. Die Multiplexer 803 und 804 sind ebenso angeschlossen, um die s- und d-Eingaben jeweilig für den Invers-Modus-Betrieb der Filtereinheit zu empfangen. Die Ausgaben des Multiplexers 803 stellen eine n-Bit-Eingabe dar, die s(n+2) gleicht, während der Ausgang des Multiplexers 804 einer n+1-Bit-Eingabe entspricht, die p(n+2) für den Vorwärtsdurchlauf und d(n+2) für den inversen Durchlauf ist. Referring to Fig. 8, adders 801 and 802 are connected to receive the 2 n-bit inputs during the forward pass of the filter unit. The adder 801 adds the 2-n-bit inputs and outputs a value connected to an input of the multiplexer 803 . The adder 802 subtracts one input from the other, producing its output to an input of the multiplexer 804 . The multiplexers 803 and 804 are also connected to receive the s and d inputs, respectively, for the inverse-mode operation of the filter unit. The outputs of multiplexer 803 represent an n-bit input equal to s (n + 2) while the output of multiplexer 804 corresponds to an n + 1-bit input, p (n + 2) for forward and d (n + 2) for the inverse pass.
Beide Ausgaben der Multiplexer 803 und 804 sind mit den Eingaben des Speichers 805 verbunden. Ebenso sind mit den Eingaben des Speichers 805 die Ausgaben 806A und 806D bis F verbunden, die von dem Multiplexer 806 ausgegeben werden. Der Speicher 805 verzögert die Eingaben zu seinen Ausgängen basierend auf der räumlichen Stelle. Bei einer Ausführungsform umfaßt der Speicher 805 eine Registerdatei oder ein SRAM, das in einer Pingpong Art und Weise mit zwei Bänken oder einem Port pro Bank verbunden ist. Eine Adresse ist mit einem Eingang des Speichers verbunden, um die Ausgaben zu steuern, die für den Multiplexer 806 erzeugt werden. Bei einer Ausführungsform speichert die Adresse 16 oder 28 Stellen pro Komponente.Both outputs of the multiplexers 803 and 804 are connected to the inputs of the memory 805 . Similarly, the inputs of the memory 805 are connected to the outputs 806 A and 806 D to F output from the multiplexer 806 . The memory 805 delays the inputs to its outputs based on the spatial location. In one embodiment, memory 805 includes a register file or SRAM connected in a ping-pong fashion with two banks or one port per bank. An address is connected to an input of the memory to control the outputs generated for the multiplexer 806 . In one embodiment, the address stores 16 or 28 digits per component.
Die Ausgaben des Speichers 805 sind mit den Eingängen des Multiplexers 806 zu sammen mit den externen Pufferdaten, die von dem Saumpuffer bei 820 empfangen werden, verbunden. Die Ausgabe 806A des Multiplexers 806 umfaßt s(n+1), was eine einmal verzögerte Version von s(n+2) bei dem Ausgang von dem Multiplexer 803 ist. Der Ausgang 806B des Multiplexers 806 umfaßt s(n), was eine zweimal verzögerte Version des Ausgangs des Multiplexers 803 ist. Der Ausgang 806C des Multiplexers 806 umfaßt p(n) für den Vorwärtsdurchlauf, was eine zweimal verzögerte Version des Ausgangs des Multiplexers 806 ist, und d(n) in dem inversen Durchlauf, was eine zweimal verzögerte Version des Ausgangs des Multiplexers 804 ist. Der Ausgang 806D umfaßt s(n-2), was eine viermal verzögerte Version des Ausgangs des Multiplexers 803 ist. Der Ausgang 806E des Multiplexers 806 umfaßt s(n-1), was dreimal verzögert vom Ausgang des Multiplexers 803 ist. Letztlich umfaßt der Ausgang 806F t(n+1) in dem Vorwärtsdurchlauf, was eine einmal verzögerte Version der Ausgabe des Multiplexers 804 ist, und d(n+1) für den inversen Durchlauf, was eine einmal verzögerte Version der Ausgabe des Multiplexers 804 ist.The outputs of the memory 805 are connected to the inputs of the multiplexer 806 along with the external buffer data received from the seam buffer at 820. The output 806 A of the multiplexer 806 comprises s (n + 1), which is a once delayed version of s (n + 2) at the output from the multiplexer 803 . The output 806 B of the multiplexer 806 comprises s (n), which is a twice delayed version of the output of the multiplexer 803 . The output 806 C of the multiplexer 806 comprises p (n) for the forward pass, which is a twice delayed version of the output of the multiplexer 806 , and d (n) in the inverse pass, which is a twice delayed version of the output of the multiplexer 804 . Output 806 D includes s (n-2), which is a four-time delayed version of the output of multiplexer 803 . The output 806 E of the multiplexer 806 comprises s (n-1) which is three times delayed from the output of the multiplexer 803 . Finally, the output 806 includes F t (n + 1) in the forward pass, which is a once delayed version of the output of the multiplexer 804 , and d (n + 1) for the inverse pass, which is a once delayed version of the output of the multiplexer 804 is.
Die Überlappeinheit 807 ist angeschlossen, um die Ausgabe des Multiplexers 803 zusammen mit den Ausgaben 806A, D und E vom Multiplexer 806 zu empfangen. In Antwort auf diese Eingaben erzeugt die Überlappeinheit 807 t(n). Eine Ausführungs form der Überlappeinheit wird in Fig. 9 beschrieben. The overlap unit 807 is connected to receive the output of the multiplexer 803 along with the outputs 806 A, D and E from the multiplexer 806 . In response to these inputs, the overlap unit 807 generates t (n). An embodiment of the overlap unit is described in FIG. 9.
Die Ausgabe der Überlappeinheit 807, t(n), ist mit einem Eingang der Addierer 808 und 809 verbunden. Der Addierer 808 addiert t(n) zu dem Ausgang 806C des Multiple xers 806, um den D-Ausgang der Filtereinheit zu erzeugen. Der Addierer 809 sub trahiert den Ausgang 806C des Multiplexers 806 von t(n). Der Ausgang des Addierers 809 ist mit einem Eingang von jedem der Addierer 810 und 811 verbunden. Der Addierer 810 addiert den Ausgang des Addierers 809 mit dem Ausgang 806B des Multiplexers 806, um einen der n-Bit-Ausgaben des Filters zu erzeugen, wenn er als eine inverse Filtereinheit arbeitet. Der Addierer 811 subtrahiert den Ausgang des Addierers 809 von dem Ausgang 806B des Multiplexers 806, um die andere Ausgabe der Filtereinheit zu erzeugen, wenn er als ein inverser Filter arbeitet.The output of the overlap unit 807 , t (n), is connected to an input of the adders 808 and 809 . The adder 808 adds t (n) to the output 806 C of the multiplexer 806 to produce the D output of the filter unit. The adder 809 sub subtracts the output 806 C of the multiplexer 806 from t (n). The output of the adder 809 is connected to an input of each of the adders 810 and 811 . The adder 810 adds the output of the adder 809 to the output 806 B of the multiplexer 806 to produce one of the n-bit outputs of the filter when operating as an inverse filter unit. The adder 811 subtracts the output of the adder 809 from the output 806 B of the multiplexer 806 to produce the other output of the filter unit when operating as an inverse filter.
Fig. 9 ist ein Blockdiagramm einer Ausführungsform der Überlappeinheit für den Vorwärts-/Invers-Filter der Fig. 8. Nimmt man Bezug auf Fig. 9, so umfaßt die Überlappeinheit Addierer 901 bis 906, Multiplizierer 907 bis 909 und einen Dividierer 910. Bei den Multiplizierern und Dividierern kann es sich um hardware-verdrahtete Verschiebungen bzw. Verschieber handeln. Fig. 9 is a block diagram of an embodiment of the Überlappeinheit for the forward / inverse filter of FIG. 8. Referring to Fig. 9, the Überlappeinheit comprises adders 901-906, multipliers 907-909 and a divider 910th The multipliers and dividers may be hardware-wired shifters.
Die Überlappeinheit der Fig. 9 berechnet t(n) für die TT-Transformation, die oben beschrieben ist. Nimmt man Bezug auf Fig. 9, so ist der Addierer 901 angeschlossen, um den s(n+2)-Eingang zu empfangen und ihn von dem s(n-2)-Eingang zu subtrahie ren, und er erzeugt eine Ausgabe, die an einen Eingang des Addierers 903 angekoppelt ist. Der Addierer 902 ist angeschlossen, um den s(n-1)-Eingang zu empfangen und ihn von dem s(n+1)-Eingang zu subtrahieren. Der Ausgang des Addierers 902 ist an den Eingang des Multiplizierers 907 und Multiplizierers 908 angeschlossen. Der Multipli zierer 907 multipliziert seinen Eingang mit 2. Bei einer Ausführungsform wird die Multiplikation durch Verschieben der Bits zur linken Position durchgeführt. Die Ausgabe des Multiplizierers 907 ist an den anderen Eingang des Addierers 903 an geschlossen. The overlap unit of Fig. 9 calculates t (n) for the TT transformation described above. Referring to Fig. 9, the adder 901 is connected to receive the s (n + 2) input and subtract it from the s (n-2) input, and generates an output which is coupled to an input of the adder 903 . The adder 902 is connected to receive the s (n-1) input and to subtract it from the s (n + 1) input. The output of the adder 902 is connected to the input of the multiplier 907 and multiplier 908 . The multiplier 907 multiplies its input by 2. In one embodiment, the multiplication is performed by shifting the bits to the left position. The output of multiplier 907 is closed to the other input of adder 903 .
Der Multiplizierer 908 multipliziert die Ausgabe des Addierers 902 mit 16. Bei einer Ausführungsform wird die Multiplikation durchgeführt, indem die Bits verschoben werden, die von dem Addierer 902 ausgegeben werden, und zwar zu den linken vier Bit-Positionen. Der Ausgang des Multiplexers 908 ist an einen Eingang des Addierers 905 angeschlossen. Der Ausgang des Addierers 903 ist an einen Eingang des Addierers 904 angeschlossen und ebenso an den Eingang des Multiplexers 909.The multiplier 908 multiplies the output of the adder 902 by 16. In one embodiment, the multiplication is performed by shifting the bits output from the adder 902 to the left four bit positions. The output of the multiplexer 908 is connected to an input of the adder 905 . The output of the adder 903 is connected to an input of the adder 904 and also to the input of the multiplexer 909 .
Der Multiplizierer 909 multipliziert die Ausgabe des Addierers 903 mit 2. Bei einer Ausführungsform wird diese Multiplikation durchgeführt, indem die Bits verschoben werden, die von dem Addierer 903 ausgegeben werden, und zwar zu der linken Bit-Position. Die Ausgabe des Multiplizierers 909 ist mit dem anderen Eingang des Addierers 904 verbunden. Die Ausgabe des Addierers 904 ist mit dem anderen Eingang des Addierers 905 verbunden. Der Ausgang des Addierers 905 ist an einen Eingang des Addierers 906 angeschlossen, der diese zu 32 addiert, wobei es sich um einen hardwa re-verdrahteten Eingang handelt. Die Ausgabe des Addierers 906 ist an den Angang des Dividierers 910 angeschlossen. Der Dividierer 910 dividiert den Eingang durch 64. Bei einer Ausführungsform wird diese Division durch Verschieben der Bits des Ein gangs zu den rechten sechs Bit-Positionen bewerkstelligt. Die Ausgabe des Dividierers 910 umfaßt den t(n)-Ausgang. Bemerkenswert ist, daß die Fig. 9 jeden Ausgang mit dem aktuellen Wert auf den Leitungen zeigt.The multiplier 909 multiplies the output of the adder 903 by 2. In one embodiment, this multiplication is performed by shifting the bits output from the adder 903 to the left bit position. The output of multiplier 909 is connected to the other input of adder 904 . The output of the adder 904 is connected to the other input of the adder 905 . The output of the adder 905 is connected to an input of the adder 906 , which adds it to 32, which is a hardwired re-wired input. The output of the adder 906 is connected to the output of the divider 910 . Divider 910 divides the input by 64. In one embodiment, this division is accomplished by shifting the bits of the input to the right six bit positions. The output of divider 910 includes the t (n) output. It is noteworthy that Figure 9 shows each output with the current value on the lines.
Bemerkenswert ist, daß sowohl bei der reversiblen TS-Transformation als auch TT-Transformation, ähnlich bei der S-Transformation, der Tiefpaßfilter so implementiert wird, daß die Spanne des Eingangssignals x(n) dieselbe ist, wie die des Ausgangs signals s(n). Das heißt, es gibt kein Wachstum in dem glatten bzw. geglätteten Aus gang. Falls das Eingangssignal b-Bits tief ist, dann beträgt der glatte bzw. geglättete Ausgang ebenso b-Bits. Zum Beispiel ist, falls das Signal ein 8-Bit-Bild ist, der Ausgang des Tiefpaßfilters ebenso 8 Bits. Dies ist eine wichtige Eigenschaft für ein pyramidales System, wo der glatte Ausgang weiter dekomprimiert wird durch z. B. sukzessives Anwenden des Tiefpaßfilters. Bei Systemen nach dem Stand der Technik ist die Spanne des Ausgangssignals größer als jene des Eingangssignals, wodurch aufeinanderfolgende bzw. sukzessive Anwendungen des Filters erschwert sind. Ebenso gibt es keinen systemischen Fehler aufgrund des Rundens bei den Ganzzahl-Implemen tationen der Transformation, so daß sämtliche Fehler in einem verlustbehafteten System durch die Quantisierung gesteuert bzw. kontrolliert werden können. Zusätzlich weist der Tiefpaßfilter nur zwei Abgriffe auf, die ihn zu einem nicht überlappenden Filter machen. Diese Eigenschaft ist für die Hardware-Implementation wichtig.It is noteworthy that both in the reversible TS transformation as well TT transformation, similar to the S transformation, implemented the low-pass filter so is that the span of the input signal x (n) is the same as that of the output signal s (n). That is, there is no growth in the smoothed out gear. If the input signal is b-bit low, then the smooth or smoothed one Output as well b bits. For example, if the signal is an 8-bit image, that is Output of the low-pass filter as well 8 bits. This is an important property for one pyramidal system, where the smooth output is further decompressed by e.g. B. successively applying the low-pass filter. In prior art systems the spread of the output signal is greater than that of the input signal, whereby successive or successive applications of the filter are difficult. As well There is no systemic error due to rounding in the integer implemen tions of transformation, so that all errors in a lossy system can be controlled or controlled by the quantization. Additionally points the low pass filter only taps on it, turning it into a non-overlapping filter do. This property is important for the hardware implementation.
Bei der vorliegenden Erfindung werden die Koeffizienten, die als ein Ergebnis der Wavelet-Zerlegung erzeugt werden, entropiekodiert. Bei der vorliegenden Erfindung durchlaufen die Koeffizienten anfänglich ein eingebettetes Ordnen, bei dem die Koeffi zienten in einer visuell signifikanten Reihenfolge geordnet werden, oder allgemeiner bezüglich derselben Fehlermetrik geordnet werden (z. B. Verzerrungsmetrik bzw. Distorsionsmetrik). Fehler- oder Verzerrungsmetriken beinhalten z. B. einen Spitzen-Fehler oder mittleren quadrierten Fehler bzw. mittleren quadratischen Fehler (MSE). Zusätzlich kann ein Ordnen durchgeführt werden, um einer Bit-Signifikanz-Raumstelle, einer Relevanz hinsichtlich der Datenbasisabfrage und einer Richtung (vertikal, hori zontal, diagonal usw.) den Vorzug zu geben.In the present invention, the coefficients generated as a result of Wavelet decomposition generated, entropy-coded. In the present invention The coefficients initially undergo an embedded ordering in which the coefficients categorized in a visually significant order, or more generally with respect to the same error metric (eg distortion metric or Distorsionsmetrik). Error or distortion metrics include e.g. B. a spike error or mean squared error or mean square error (MSE). Additionally, ordering may be performed to provide a bit significance space location, a relevance in terms of database query and one direction (vertical, hori zontal, diagonal, etc.) to give preference.
Das Ordnen der Daten wird durchgeführt, um die eingebettete Quantisierung des Kodestroms zu erzeugen. Bei der vorliegenden Erfindung werden zwei ordnende Systeme verwendet: ein erstes zum Ordnen der Koeffizienten und ein zweites zum Ordnen der binären Werte innerhalb eines Koeffizienten. Das Ordnen der vorliegenden Erfindung erzeugt einen Bitstrom, der danach mit einem binären Entropiekodierer kodiert wird.The ordering of the data is performed to determine the embedded quantization of the To generate code stream. In the present invention, two ordering Systems uses: a first to order the coefficients and a second to the Order the binary values within a coefficient. The order of the present Invention generates a bitstream which is subsequently provided with a binary entropy coder is encoded.
Die meisten Transformationskoeffizienten stellen vorzeichenbehaftete Zahlen dar, selbst wenn die ursprünglichen Komponenten nicht vorzeichenbehaftet sind (jeder Koeffizient, der von wenigstens einem Detailfilter ausgegeben wird, ist vorzeichenbehaftet). Bei einer Ausführungsform ist die eingebettete Reihenfolge, die für binäre Werte innerhalb eines Koeffizienten verwendet wird, eine Reihenfolge Bitebene für Bitebene. Die Koeffizienten werden in einer Bit-Signifikanz-Darstellung vor dem Kodieren ausge drückt. Die Bit-Signifikanz ist eine Vorzeichen-Betrag-Darstellung, wo das Vorzeichen bit, eher als daß es das höchstwertige Bit (MSB) ist, mit dem ersten Bit mit Betrag ungleich Null kodiert wird. Das heißt, das Vorzeichenbit folgt dem ersten Bit mit Betrag ungleich Null, eher als daß es allen Betragsbits vorangeht. Ebenso wird das Vorzeichenbit so angesehen, daß es in derselben Bitebene wie das höchstwertige Betragsbit ungleich Null liegt.Most transform coefficients represent signed numbers, themselves if the original components are unsigned (any coefficient, which is output by at least one detail filter is signed). at In one embodiment, the embedded order is for binary values within a coefficient is used, an order bit plane bit plane. The Coefficients are output in a bit significance representation before encoding suppressed. The bit significance is a sign-magnitude representation where the sign bit, rather than being the most significant bit (MSB), with the first bit in magnitude is coded nonzero. That is, the sign bit follows the first bit Amount other than zero, rather than preceding all magnitude bits. Likewise, that will Sign bit considered that it is in the same bit plane as the most significant Magnitude bit not equal to zero.
Das Bit-Signifikanz-Format stellt eine Zahl dar, indem drei Sätze von Bits verwendet werden: Kopf, Schwanz und Vorzeichen. Die Kopfbits sind alle Null-Bits von dem MSB bis zu und einschließlich dem ersten Betragsbit ungleich Null. Die Bitebene, in der das erste Betragsbit ungleich Null auftritt, legt die Signifikanz des Koeffizienten fest. Der Satz von Schwanzbits umfaßt die Betragsbits nach dem ersten Betragsbit ungleich Null bis zu dem LSB. Das Vorzeichenbit bezeichnet einfach das Vorzeichen, wobei 0 ein positives Vorzeichen und 1 ein negatives Vorzeichen darstellen kann. Eine Zahl, wie z. B. ±1n, mit einem Null-Bit als das MSB, weist nur ein Kopfbit auf. Ein Null-Koeffizient hat keine Schwanz- oder Vorzeichenbits. Tabelle 3 zeigt alle mögli chen Werte zum Ausbilden von Bit-Koeffizienten, die von -7 bis 8 reichen. The bit significance format represents a number using three sets of bits: head, tail, and sign. The header bits are all zero bits from the MSB up to and including the first nonzero magnitude bit. The bit plane in which the first non-zero magnitude bit occurs determines the significance of the coefficient. The set of tail bits includes the magnitude bits after the first non-zero magnitude bit up to the LSB. The sign bit simply denotes the sign, where 0 can represent a positive sign and 1 a negative sign. A number, such as ± 1 n , with a zero bit as the MSB, has only one header. A zero coefficient has no tail or sign bits. Table 3 shows all possible values for forming bit coefficients ranging from -7 to 8.
Tabelle 3 - Bit-Signifikanz-Darstellung für 4-Bit-WerteTable 3 - Bit significance representation for 4-bit values
In Tabelle 3 enthält die Bit-Signifikanz-Darstellung, die in jeder Spalte gezeigt ist, ein oder zwei Bits. In dem Fall von zwei Bits, ist das erste Bit das erste 1-Bit und wird von dem Vorzeichenbit gefolgt.In Table 3, the bit significance representation shown in each column includes or two bits. In the case of two bits, the first bit is the first 1-bit and will followed by the sign bit.
In dem Fall, wo die Werte nicht negative ganze Zahlen sind, wie dies z. B. bezüglich
der Intensität der Pixel auftritt, ist die Reihenfolge, die verwendet werden kann, die
Bitebenen-Reihenfolge bzw. die Bitebenen-Ordnung (z. B. von der höchstwertigen zu
der niedrigswertigen Bitebene). Die Ausführungsformen, wo negative ganze Zweier
komplementzahlen ebenso erlaubt sind, ist die eingebettete Ordnung des Vorzeichenbits
dieselbe, wie das erste Bit ungleich Null des absoluten Werts der ganzen Zahl. Deshalb
wird das Vorzeichenbit nicht beachtet, bis ein Bit ungleich Null kodiert wird. Verwen
det man z. B. eine Vorzeichen-Betrag-Notation, so lautet die 16-Bitzahl -7:
In the case where the values are non-negative integers, as shown e.g. For example, as regards the intensity of the pixels, the order that can be used is the bit-plane order or bit-plane order (eg, from the most significant to the least significant bit-plane). The embodiments where negative integer integer numbers are also allowed, the embedded order of the sign bit is the same as the first non-zero bit of the integer value of the integer. Therefore, the sign bit is ignored until a nonzero bit is encoded. If you use z. For example, a sign magnitude notation, the 16-bit number is -7:
1000000000000111.1,000,000,000,000,111th
Auf einer Bitebenenbasis werden die ersten zwölf Entscheidungen "insignifikant" oder Null sein. Das erste 1-Bit tritt bei der dreizehnten Entscheidung auf. Als nächstes wird das Vorzeichenbit ("negativ") kodiert. Nachdem das Vorzeichenbit kodiert ist, werden die Schwanzbits verarbeitet. Die fünfzehnte und sechzehnte Entscheidung lautet jeweils "1".On a bit-plane basis, the first twelve decisions become "insignificant" or Be zero. The first 1-bit occurs at the thirteenth decision. Next will be the sign bit ("negative") is encoded. After the sign bit is encoded, processed the tail bits. The fifteenth and sixteenth decisions are respectively "1".
Da die Koeffizienten von der höchstwertigen Bitebene zu der niedrigstwertigen Bit ebene kodiert werden, muß die Anzahl der Bitebenen in den Daten bestimmt werden. Bei der vorliegenden Erfindung wird dies bewerkstelligt, indem eine obere Grenze für die Beträge der Koeffizientenwerte gefunden wird, die von den Daten berechnet werden oder von der Tiefe des Bildes und den Filterkoeffizienten abgeleitet wird. Wenn z. B. die obere Grenze 149 beträgt, dann gibt es acht signifikante Bits oder acht Bitebenen. Zur Beschleunigung der Software kann ein Bitebenenkodierer nicht verwendet werden. Bei einer alternative Ausführungsform wird eine Bitebene nur kodiert, wenn ein Koeffizient als eine binäre Zahl signifikant wird.Since the coefficients are from the most significant bitplane to the least significant bit level, the number of bit-planes in the data must be determined. In the present invention this is accomplished by setting an upper bound on the amounts of coefficient values found by the data are found or derived from the depth of the image and the filter coefficients. If z. B. the upper limit is 149, then there are eight significant bits or eight bit planes. To speed up the software, a bit-plane encoder can not be used. In an alternative embodiment, a bitplane is encoded only if one Coefficient as a binary number becomes significant.
Die vorliegende Erfindung richtet Koeffizienten vor der Bitebenenkodierung gegenein ander aus. Dies liegt daran, daß die Koeffizienten in verschiedenen Frequenzunterbän dern unterschiedliche Frequenzen darstellen, die der FFT oder der DCT ähneln. Durch das Ausrichten der Koeffizienten steuert die vorliegende Erfindung die Quantisierung. Die weniger heftig quanisierten Koeffizienten werden in Richtung auf die früheren Bitebenen ausgerichtet (z. B. nach links verschoben). Somit werden diese Koeffizienten, falls der Strom abgeschnitten wird, mehr Bits aufweisen, die sie festlegen, als die heftiger quantisierten Koeffizienten.The present invention sets coefficients before bit-plane encoding other. This is because the coefficients in different Frequenzunterbän different frequencies that are similar to FFT or DCT. By aligning the coefficients, the present invention controls quantization. The less heavily quantized coefficients are directed towards the earlier ones Bite planes aligned (eg moved to the left). Thus, these coefficients, if the stream is cut off, have more bits that set them than the more intense quantized coefficients.
Bei eine Ausführungsform werden die Koeffizienten für die beste Raten-Verzerrungs-Leistungs fähigkeit in Termen von SNR ("Signal to Noise Ratio" bzw. "Signal-zu-Rausch-Ver hältnis") oder MSE ausgedrückt. Es gibt viele mögliche Ausrichtungen bzw. Anordnungen einschließlich einer, die nahezu hinsichtlich der statistischen Fehlermetriken, wie z. B. MSE, ist. Alternativ könnte die Ausrichtung eine psychovisu elle Quantisierung der Koeffizientendaten erlauben. Die Ausrichtung hat einen wesentli chen Einfluß auf die Evolution der Bildqualität (oder in anderen Worten auf die Raten-Ver zerrungs-Kurve), aber sie hat einen vernachlässigbaren Einfluß das endgültige Kompressionsverhältnis des verlustfreien Systems. Andere Ausrichtungen können einer spezifischen Koeffizientenquantisierung, einem Interessenbereichs-Wiedergabetreue-Ko dieren ("Region of Interest"-Wiedergabetreue) oder einer Auflösungs-Progressivaus richtung ("resolution progressive alignment") entsprechen.In one embodiment, the coefficients for the best rate-distortion performance capability in terms of SNR ("Signal to Noise Ratio" or "Signal to Noise Ratio") There are many possible orientations or arrangements including one that is almost statistical Error metrics, such. B. MSE is. Alternatively, the orientation could be a psychovisu allow quantization of the coefficient data. The orientation has a significant influence on the evolution of image quality (or in other words on the rate ver distortion curve), but it has a negligible influence the final one Compression ratio of the lossless system. Other orientations can be one specific coefficient quantization, an area of interest fidelity co dieren ("Region of Interest" fidelity) or a resolution-progressive direction ("resolution progressive alignment").
Die Ausrichtung kann in dem Kopf der komprimierten Daten signalisiert sein oder sie kann für eine bestimmte Anwendung fixiert sein (d. h. das System hat nur eine Aus richtung). Die Ausrichtung der mit unterschiedlichen Größen versehenen Koeffizienten ist sowohl dem Kodierer als auch dem Dekodierer bekannt und hat keinen Einfluß auf die Effizienz des Entropiekodierers.The alignment may be signaled in the header of the compressed data or it can be fixed for a particular application (that is, the system has only one off direction). The orientation of the different-sized coefficients is known to both the encoder and the decoder and has no influence on the efficiency of the entropy coder.
Die Bittiefen der verschiedenen Koeffizienten in einer Zwei-Pegel-TS-Transformation und einer TT-Transformations-Zerlegung von einem Eingabebild mit b-Bits pro Pixel sind in Fig. 11 gezeigt. Die Fig. 12 stellt eine Ausführungsform der Multiplizierer für das Frequenzband dar, das für eine Koeffizientenausrichtung in der vorliegenden Erfindung verwendet wird. Um die Koeffizienten auszurichten bzw. abzustimmen, wird die 1-DD-Koeffizientengröße als eine Referenz verwendet, und Verschiebungen werden bezüglich dieser Größe durchgeführt bzw. vorgegeben. Eine Verschiebung von n stellt eine Multiplikation mit 2n dar.The bit depths of the various coefficients in a two-level TS transform and a TT transform decomposition from a b-bit per pixel input image are shown in FIG . Fig. 12 illustrates one embodiment of the multiplier for the frequency band used for coefficient alignment in the present invention. To align the coefficients, the 1-DD coefficient size is used as a reference, and shifts are made with respect to that size. A shift of n represents a multiplication by 2 n .
Bei einer Ausführungsform werden die Koeffizienten bezüglich des Betrags des größten Koeffizienten verschoben, um eine Ausrichtung aller Koeffizienten in dem Bild zu erzeugen. Die ausgerichteten Koeffizienten werden dann in Bitebenen gehandhabt, die Wichtigkeitsniveaus genannt werden, und zwar von dem höchstsignifikanten Wichtig keitsniveau zu dem niedrigstsignifikanten Wichtigkeitsniveau. Das Vorzeichen wird mit dem letzten Kopfbit eines jeden Koeffizienten kodiert. Das Vorzeichenbit ist dort, wo das letzte Kopfbit drinnen ist, und zwar ungeachtet in welchem Wichtigkeitsniveau das letzte Kopfbit drinnen ist. Es ist wichtig, daß die Ausrichtung einfach die Reihenfolge steuert, in der die Bits zu dem Entropiekodierer gesendet werden. Tatsächlich wird ein Auffüllen, Verschieben, Speichern oder Codieren von Extra-Null-Bits nicht durch geführt.In one embodiment, the coefficients with respect to the magnitude of the largest Coefficients shifted to align all the coefficients in the image produce. The aligned coefficients are then handled in bit planes, the Importance levels, from the most significant one level to the lowest significant importance level. The sign is with the last header bit of each coefficient. The sign bit is where the last header is inside, regardless of the level of importance last header is inside. It is important that the alignment is simply the order controls in which the bits are sent to the entropy encoder. In fact, one will Do not fill, move, save or encode extra zero bits guided.
Tabelle 4 zeigt eine Ausführungsform von Ausrichtzahlen zum Ausrichten von Koeffi zienten.Table 4 shows an embodiment of alignment numbers for aligning coefficients cient.
Tabelle 4 - KoeffizientenausrichtungTable 4 - Coefficient orientation
Die Ausrichtung von Koeffizienten unterschiedlicher Größe ist sowohl dem Kodierer als auch dem Dekodierer bekannt und hat keinen Einfluß auf die Effizienz des En tropiekodierers.The alignment of coefficients of different sizes is common to both the encoder as well as the decoder and has no influence on the efficiency of En tropiekodierers.
Bemerkenswert ist, daß die Codiereinheiten desselben Datensatzes unterschiedliche Ausrichtungen haben können. It is noteworthy that the coding units of the same data set differ Alignments can have.
Fig. 10 zeigt das Ordnen des Kodestroms und das Ordnen innerhalb einer Kodier einheit. Nimmt man Bezug auf Fig. 10, so folgen dem Header bzw. Kopf 1001 die Kodiereinheiten 1002 in der Reihenfolge vom obersten Band zum Boden. (Der Header bzw. Kopf 1001 ist optional bei Anwendungen, die für einen einzelnen bzw. einzig artigen Bildtyp gestaltet sind.) Jede Kodiereinheit beinhaltet wichtigste Daten 1003, weniger wichtige Daten 1004 und am wenigsten wichtig Daten 1005. Fig. 10 shows the ordering of the code stream and the ordering within a coding unit. Referring to Fig. 10, the header 1001 is followed by the encoding units 1002 in order from the top band to the bottom. (The header 1001 is optional in applications designed for a single image type.) Each encoding unit includes most important data 1003 , less important data 1004, and least importantly, data 1005 .
Das Kontextmodell bestimmt sowohl die Reihenfolge, in der die Daten kodiert werden und die Konditionierung, die für die spezifischen Bits der Daten verwendet wird. Das Ordnen wird zuerst beachtet. Das Ordnen der Daten bezüglich des höchsten Niveaus wurde bereits oben beschrieben. Die Daten werden in "wichtigste Daten" unterteilt, was hierin austauschbar als der wichtigste Hauptteil bzw. wichtigste Batzen bezeichnet wird (MIC bzw. "Most Important Chunk"), was verlustbehaftet in Transformations ordnung kodiert wird, und "weniger wichtige Daten", die hierin austauschbar als der am wenigsten wichtige Teil bzw. am wenigsten wichtige Batzen (LIC bzw. "Least Important Chunk) bezeichnet werden, und in einer eingebetteten vereinheitlichten bzw. vereinigten verlustfreien/verlustbehafteten Art und Weise kodiert wird.The context model determines both the order in which the data is encoded and the conditioning used for the specific bits of the data. The Ordering is considered first. The ordering of the data concerning the highest level has already been described above. The data is divided into "main data", what is interchangeably referred to herein as the main body or chunks becomes (MIC or "Most Important Chunk"), which is lossy in transformations is coded, and "less important data", which is interchangeable herein than the the least important part or least important parts (LIC or "Least Important Chunk), and in an embedded unified or coded lossless / lossy manner.
Die Ordnung in der die Koeffizienten während jeder Bitebene verarbeitet werden, läuft von der niedrigen Auflösung zu der hohen Auflösung (von der niedrigen Frequenz zu der hohen Frequenz). Der Koeffizientenunterbandkodierer innerhalb jeder Bitebene läuft von dem hohen Niveau (niedrige Auflösung, niedrige Frequenz) zu dem niedrigen Niveau (hohe Auflösung, hohe Frequenz). Innerhalb jedes Frequenzunterbandes findet das Kodieren in einer definierten Ordnung bzw. Reihenfolge statt. Bei einer Aus führungsform kann es sich bei der Ordnung um eine Rasterordnung, eine 2×2-Block ordnung, eine Serpentinenordnung bzw. gewundenen Ordnung, eine Peano-Abtast ordnung ("Peano scan order") usw. handeln. The order in which the coefficients are processed during each bit-plane is running from low resolution to high resolution (from low frequency to the high frequency). The coefficient subband coder within each bitplane runs from the high level (low resolution, low frequency) to the low Level (high resolution, high frequency). Within each frequency subband finds the coding takes place in a defined order or sequence. On an off The order may be a raster order, a 2 × 2 block Order, a serpentine order or tortuous order, a Peano-Abtast order ("Peano scan order") and so on.
Bei dem Fall einer Vier-Niveau-Zerlegung, wobei der Kodestrom der Fig. 3 verwendet
wird, ist die Reihenfolge wie folgt:
4-SS, 4-DS, 4-SD, 4-DD, 3-DS, 3-SD, 3-DD, 2-DS, 2-SD, 2-DD, 1-DS, 1-SD, 1-DD.In the case of a four-level decomposition using the code stream of Fig. 3, the order is as follows:
4-SS, 4-DS, 4-SD, 4-DD, 3-DS, 3-SD, 3-DD, 2-DS, 2-SD, 2-DD, 1-DS, 1-SD, 1 DD.
Eine Ausführung des Kontextmodells, die bei der vorliegenden Erfindung verwendet wird, wird im folgenden beschrieben. Dieses Modell verwendet Bits innerhalb einer Kodiereinheit basierend auf der räumlichen und spektralen Abhängigkeit der Koeffi zienten. Die verfügbaren binären Werte der benachbarten Koeffizienten und der Elternteil-Koeffizienten kann verwendet werden, um Kontexte zu erzeugen. Die Kontexte sind jedoch für die Dekodierfähigkeit und in kleiner Zahl für effiziente Adaption kausal.An embodiment of the context model used in the present invention will be described below. This model uses bits within one Encoding unit based on the spatial and spectral dependence of the coefficients cient. The available binary values of the neighboring coefficients and the Parent coefficients can be used to create contexts. The However, contexts are more efficient for decoding and small in number Adaptation causal.
Die vorliegende Erfindung liefert ein Kontextmodell, um den Bitstrom zu modellieren, der durch die Koeffizienten in der eingebetteten Bit-Signifikanz-Reihenfolge für den binären Entropiekodierer erzeugt wird.The present invention provides a context model to model the bitstream, by the coefficients in the embedded bit significance order for the binary entropy coder is generated.
Fig. 37 zeigt die Nachbarschaftskoeffizienten für jeden Koeffizienten einer Kodier einheit. Nimmt man Bezug auf Fig. 37, so werden die Nachbarschaftskoeffizienten mit offensichtlichen geographischen Bezeichnungen (z. B. N = Norden, NE = Nordosten, NW = Nordwesten, W = Westen, E = Osten, SE = Südosten usw.) bezeichnet. Sind ein Koeffizient, wie z. B. P in Fig. 37, und eine aktuelle Bitebene gegeben, kann das Kontextmodell jegliche Information von der gesamten Kodiereinheit vor der gegebenen Bitebene verwenden. Der Elternteil-Koeffizient des vorliegenden Koeffi zienten wird ebenso für dieses Kontextmodell verwendet. Fig. 37 shows the neighborhood coefficients for each coefficient of a coding unit. Referring to Fig. 37, the neighborhood coefficients are referred to by obvious geographical designations (e.g., N = north, NE = northeast, NW = northwest, W = west, E = east, SE = southeast, etc.). Are a coefficient, such. For example, given P in Figure 37, and a current bit-plane, the context model may use any information from the entire coding unit before the given bit-plane. The parent coefficient of the present coefficient is also used for this context model.
Die Kopfbits sind die am meisten kompressiblen Daten. Deshalb wird ein großer Kontextumfang oder eine Konditionierung verwendet, um die Kompression zu ver bessern. Eher, als daß die Nachbarschafts- oder Elternteil-Koeffizientenwerte verwen det werden, um den Kontext für das vorliegende Bit des vorliegenden Koeffizienten zu bestimmen, wird die Information auf zwei Signalisierbits verwendet, die in Verbindung mit Fig. 13A beschrieben sind. Diese Information kann in einem Speicher gespeichert werden oder dynamisch von dem Nachbarschafts- oder Elternteil-Koeffizienten be rechnet werden.The header bits are the most compressible data. Therefore, a large amount of context or conditioning is used to improve the compression. Rather than using the neighborhood or parent coefficient values to determine the context for the present bit of the present coefficient, the information is used on two signaling bits described in connection with Figure 13A. This information may be stored in memory or may be dynamically calculated by the neighborhood or parent coefficient.
Eine Ausführungsform des Einbettungsschemas für die vorliegende Erfindung basiert auf der Tatsache, daß, wenn mit dem Kodieren von Daten begonnen wird, der gesamte Bandpufferspeicher voll mit Daten ist, so daß es keinen extra verfügbaren Raum in dem Band zur Verwendung als Arbeitsspeicher gibt. Die vorliegende Erfindung schreibt einige der weniger wichtigen Daten in den Speicher, die später eingebettet werden sollen. Bei der vorliegenden Erfindung wären die Daten, die eingebettet werden sollen, in dem Speicher, und dies sind die weniger wichtigen Daten. Die wichtigeren Daten werden direkt kodiert. Die am wenigsten wichtigen Daten umfassen eine gewisse Anzahl der am wenigsten signifikanten Bits.One embodiment of the embedding scheme for the present invention is based on the fact that when starting to encode data, the whole Band buffer is full of data, so there is no extra space available the tape for use as memory. The present invention writes some of the less important data into the memory later embedded should be. In the present invention, the data would be embedded should, in the memory, and these are the less important data. The more important Data is coded directly. The least important data include a certain amount Number of least significant bits.
Bei einer Ausführungsform wird ein Teil eines jeden Koeffizienten zurück zu dem Speicher zum späteren Kodieren geschrieben, die Kopfbits und die Schwanzbits müssen bekannt sein, genauso gut, wie bekannt sein muß, ob das Vorzeichenbit in Ordnung ist bzw. der Ordnung bzw. Reihenfolge gemäß verarbeitet wurde, um ein korrektes Kodieren zu gewährleisten. Bei einer Ausführungsform werden zwei oder mehrere Signalisierbits (z. B. 3, 4, 5 usw.) verwendet, um die Kopf-, Schwanz- und Vorzeichen bitinformation anzuzeigen.In one embodiment, a portion of each coefficient is returned to the Memory written for later coding, the head bits and tail bits must be known, as well as it must be known whether the sign bit is OK order was processed according to a correct Ensuring coding. In one embodiment, two or more Signaling bits (e.g., 3, 4, 5, etc.) are used to control the head, tail, and sign to display bit information.
Bei einer Ausführungsform, wo 8-Bit-Speicherstellen verwendet werden, zeigen zwei Signalisierbits die Kopf-, Schwanz- und Vorzeichenbitinformation an. Die Verwendung von zwei Signalisierbits erlaubt, daß die am wenigsten wichtigen sechs Wichtigkeits niveaus zurück zu dem Speicher mit zwei Signalisierbits geschrieben werden. Ein Signalisierbit zeigt an, ob das höchstwertige Bit bzw. am meisten signifikante Bit der sechs Wichtigkeitsniveaus ein Kopf- oder ein Schwanzbit ist. Falls das erste signalisie rende Bit anzeigt, daß es ein Kopfbit ist, dann ist das zweite signalisierende Bit das Vorzeichen für den Koeffizienten. Auf der anderen Seite, falls das erste signalisierende Bit anzeigt, daß das höchstwertige Bit der Daten, das zurück zu dem Speicher ge schrieben wird, ein Schwanzbit ist, dann ist das zweite signalisierende Bit ein freies signalisierendes Bit, das eine zusätzliche Schwanzinformation enthalten kann, wie z. B., ob das wichtigste Schwanzbit das erste Schwanzbit oder ein späteres Schwanzbit ist.In one embodiment, where 8-bit memory locations are used, two show Signal bits indicate the header, tail and sign bit information. The usage of two signaling bits allows the least important six importance levels are written back to the memory with two signaling bits. On Signaling bit indicates whether the most significant bit or the most significant bit of the six importance levels is a head or tail bit. If the first signalis If this bit indicates that it is a header bit, then the second signaling bit is that Sign for the coefficient. On the other hand, if the first signaling Bit indicates that the most significant bit of data going back to memory is written, is a tail bit, then the second signaling bit is a free one signaling bit, which may contain additional tail information, such as. B., whether the most important tail bit is the first tail bit or a later tail bit.
Fig. 13A zeigt einen Koeffizienten, der in die wichtigsten Daten 1301, die als MIC bezeichnet werden, und weniger wichtige Daten 1302, die als LIC bezeichnet werden, aufgeteilt ist. Bei einer Ausführungsform umfaßt der MIC die sechs Bits höherer Ordnung eines jeden Koeffizienten, während der LIC die sechs Bits niederer Ordnung umfaßt. Die wichtigsten Daten 1301 werden zu dem Kontextmodell gesendet, um sofort in einer Koeffizientenreihenfolge kodiert zu werden. Kein Puffern im externen Speicher ist für diese Daten erforderlich. Die weniger wichtigen Daten 1302 werden in den Speicher geschrieben (z. B. RAM), um später kodiert zu werden und in dieser Reihen folge eingebettet zu werden. Zusätzlich werden die zwei Signalisierbits in den Daten in den Speicher geschrieben. Das Signalisierungsbit 1303 zeigt an, ob das höchstsignifi kante Bit in den Daten, das in den Speicher geschrieben wird, ein Kopfbit ist. Das Signalisierungsbit 1304 gibt das Vorzeichen für den Koeffizienten an oder zeigt, falls das Schwanzbit in den Daten enthalten ist oder nicht. Bemerkenswert ist, daß die Signalisierungsbits in einer verketteten Art und Weise mit den weniger wichtigen Daten 1302 gespeichert werden können oder in einem anderen Speicher oder einer anderen Speicherstelle, die mit dem Speicher in Verbindung steht, der weniger wichtige Daten 1302 speichert, so daß die Signalisierungsbits, die mit jedem Abschnitt eines Koeffi zienten in Verbindung stehen, identifiziert werden können. Fig. 13A shows a coefficient which is divided into the main data 1301 called MIC and less important data 1302 called LIC. In one embodiment, the MIC comprises the six higher-order bits of each coefficient, while the LIC comprises the six lower-order bits. The most important data 1301 is sent to the context model to be coded immediately in a coefficient order. No buffering in external memory is required for this data. The less important data 1302 is written into memory (e.g., RAM) for later encoding and nesting in this order. In addition, the two signaling bits in the data are written to memory. The signaling bit 1303 indicates whether the most significant bit in the data written to the memory is a header. The signaling bit 1304 indicates the sign for the coefficient or shows if the tail bit is included in the data or not. It is noteworthy that the signaling bits may be stored in a concatenated manner with the less important data 1302 or stored in another memory or other memory location associated with the memory that stores less important data 1302 such that the signaling bits which can be identified with each section of a coefficient.
Beispiele in Tabelle 5 zeigen die Verwendung von zwei Signalisierungsbits. Die Spalten des Körpers der Tabelle 5 sollen sich mit den Datentypen in der Fig. 13A ausrichten. Die Vorzeichenbits werden mit "S" bezeichnet, die Schwanzbits werden mit "T" bezeichnet, die nicht zu beachtenden Bits werden mit "x" bezeichnet, der Wert des Schwanz-ein-Bits wird mit "h" oder "t" bezeichnet. In Tabelle 5 gilt h=0 und t=1 für die Signalisierungsbits. Bei einer alternativen Ausführungsform können die Konventio nen umgekehrt werden. Bei einer Ausführungsform zeigt ein Vorzeichenbit in Tabelle 5 mit 0 ein positives Vorzeichen an, während ein Vorzeichenbit in Tabelle 5 mit 1 ein negatives Vorzeichen anzeigt. Eine entgegengesetzte Zuweisung kann verwendet werden. Bemerkenswert ist, daß das Vorzeichenbit immer mit dem ersten "Ein"-Bit gehalten bzw. beibehalten wird, so daß es zur selben Zeit zum Einbetten kodiert werden kann.Examples in Table 5 show the use of two signaling bits. The columns of the body of Table 5 are intended to align with the data types in Figure 13A. The sign bits are denoted by "S", the tail bits are denoted by "T", the bits to be ignored are designated by "x", the value of the tail one bit is denoted by "h" or "t". In Table 5, h = 0 and t = 1 for the signaling bits. In an alternative embodiment, the conventio NEN be reversed. In one embodiment, a sign bit in Table 5 indicates 0 with a positive sign, while a sign bit in Table 5 indicates 1 with a negative sign. An opposite assignment can be used. It is noteworthy that the sign bit is always held with the first "on" bit, so that it can be coded for embedding at the same time.
Tabelle 5Table 5
In Tabelle 5 oben bezeichnet "T" das entsprechende Bit in dem Koeffizienten und kann entweder 0 oder 1 sein.In Table 5 above, "T" denotes the corresponding bit in the coefficient and can be either 0 or 1.
Bei einer Ausführungsform werden während des Dekodierens, wenn die wichtigsten Daten dekodiert werden, sie in den Speicher geschrieben, und zur selben Zeit werden die richtigen zwei Signalisierungsbits in den Speicher geschrieben, um den Speicher für das Speichern weniger wichtiger Daten zu initialisieren. (In Abhängigkeit von der Ausrichtung der Koeffizienten können manche der wichtigsten Daten in dem zweiten Byte ebenso gespeichert werden.) Mit dieser Initialisierung erfordert das Dekodieren weniger wichtiger Daten mit einer Bitebene zu einer Zeit nur das Lesen und dann das Schreiben eines Bytes (oder weniger bei manchen Ausführungsformen) pro Koeffizient. Wenn die Koeffizienten gelesen werden, um in die inverse Transformation eingegeben zu werden, werden sie in eine normale numerische Form konvertiert (z. B. Zweier-Komplementform).In one embodiment, while decoding, the most important Data are decoded, they are written to memory, and at the same time the correct two signaling bits are written to memory to store for initialize storing less important data. (Depending on the Alignment of the coefficients can be some of the most important data in the second Bytes are stored as well.) With this initialization, decoding is required less important data with one bit level at a time just reading and then that Write one byte (or less in some embodiments) per coefficient. When the coefficients are read, entered into the inverse transformation they are converted to a normal numeric form (eg Two's complement).
Zusätzlich dazu, daß man "wichtigste Daten" und "weniger wichtige Daten" hat, kann man ebenso Daten während des Kodierens weglassen bzw. löschen oder quantisieren. Koeffizienten werden durch einen Quantisierungs-Skalierungsfaktor 2Q-1 quantisiert. (Die Quantisierung der Koeffizienten wird in dem JPEG-Standard beschrieben.) Bei der vorliegenden Erfindung stellt die Quantisierung eine Potenz von 2 dar, da eine Teilung bzw. Division durch das Weglassen bzw. Löschen von Bitebenen bewerkstelligt wird. Zum Beispiel stellt Q=1 eine Division durch 1 dar und somit ändern sich die Koeffi zienten nicht, während Q=2 eine Division durch 2 darstellt, was bedeutet, daß eine Bitebene weggelassen bzw. beseitigt bzw. gelöscht wurde. Diese Divisionen können implementiert werden, indem Verschiebungen (z. B. eine Verschiebung um eine Bitposi tion für Q=2) verwendet werden. Fig. 13B und 13C zeigen das Format der wichtigsten und weniger wichtigen Daten, wenn sowohl eine Quantisierungsausrichtung als auch eine Koeffizientenausrichtung für unterschiedliche Unterbänder berücksichtigt werden.In addition to having "most important data" and "less important data", one can also omit or delete or quantize data during encoding. Coefficients are quantized by a quantization scaling factor 2 Q-1 . (The quantization of the coefficients is described in the JPEG standard.) In the present invention, the quantization represents a power of 2, since division is accomplished by omitting bit-planes. For example, Q = 1 represents a division by 1, and thus the coefficients do not change while Q = 2 represents a division by 2, which means that a bit plane has been deleted. These divisions can be implemented by using shifts (eg, a shift by one bit position for Q = 2). Figures 13B and 13C show the format of the most important and less important data when both quantization orientation and coefficient alignment are considered for different subbands.
Fig. 13B zeigt den verlustfreien Fall, wo keine Daten weggelassen bzw. gelöscht werden. Folgt man der Konvention von JPEG, wird diese eine Quantisierung Q=1 genannt, da der aktuelle Koeffizient durch 1 (verlustfrei) dividiert wird. Die wichtig sten Daten werden ohne Kreuzschraffierung angezeigt, während die am wenigsten wichtigen Daten kreuz-schraffiert werden. Fig. 13B shows the lossless case where no data is deleted. Following the convention of JPEG, it is called a quantization Q = 1 because the current coefficient is divided by 1 (lossless). The most important data is displayed without cross-hatching, while the least important data is cross-hatched.
Fig. 13C zeigt den Fall, wo eine Bitebene mit Daten weggelassen bzw. gelöscht wurde (d. h. Q=2), weil das Weglassen einer Bitebene gleich einer Division durch 2 ist. Die weggelassene Bitebene wird in schwarz gezeigt. Fig. 13C shows the case where a bit plane with data has been deleted (ie, Q = 2) because the omission of a bit plane is equal to a division by 2. The omitted bit plane is shown in black.
Bemerkenswert ist, daß zusätzlich zu dem, was in den Fig. 13B und C gezeigt ist, die wichtigsten Daten ebenso die SS-Koeffizienten enthalten. Obwohl die Koeffizienten für 8-Bit-Daten gezeigt sind, würde die Verwendung eines reversiblen Farbraums 9-Bit-Daten erforderlich machen, wobei die Größe der Chrominanzkoeffizienten um ein Bit erhöht wird.Notably, in addition to what is shown in Figures 13B and C, the most important data also contains the SS coefficients. Although the coefficients for 8-bit data are shown, the use of a reversible color space would require 9-bit data, increasing the size of the chrominance coefficients by one bit.
Bei der vorliegenden Erfindung umfaßt das Vorzeichenbit-Kontextmodell das Kodieren des Vorzeichens nach dem letzten Kopfbit. Es gibt drei Kontexte für das Vorzeichen, in Abhängigkeit davon, ob der N-Koeffizient positiv, negativ oder das Vorzeichen noch nicht kodiert ist. Alternativ kann ein Kontext für das Vorzeichen verwendet werden oder das Vorzeichen kann immer als 50% kodiert werden.In the present invention, the sign bit context model includes coding of the sign after the last bit of the header. There are three contexts for the sign, depending on whether the N coefficient is positive, negative or the sign still is not coded. Alternatively, a context may be used for the sign or the sign can always be coded as 50%.
Eine Ausführungsform des Ordnens des Kodierens für Wavelet-Koeffizienten wird in
dem folgenden Pseudo-Kode zusammengefaßt:
One embodiment of ordering coding for wavelet coefficients is summarized in the following pseudo-code:
kodiere die wichtigsten Daten
kodiere die Position der ersten weniger wichtigen Bitebene mit Daten
für jede weniger wichtige Datenbitebene tue
kodiere eine weniger wichtige Datenbitebene.encode the most important data
encode the position of the first less important bit-plane with data for each less important bit-plane
encode a less important databit level.
Wenn die wichtigsten Daten kodiert werden, wird die erste Bitebene in den weniger wichtigen Daten, die nicht vollständig aus Null-Kopfbits bestehen, für jeden Koeffizien ten bestimmt. Dies ermöglicht es dem Kodierer und Dekodierer, über gesamte Bit ebenen von weniger wichtigen Daten hinwegzuschauen. Dies ist besonders nützlich zur Kodierung von Einheiten von schwarze und weißen Daten, wo alle Informationen in den K-Koeffizienten liegen und die CMY-Koeffizienten alle Null sind. Ein Nicht-Kodieren der Bitebenen hilft individuell einem Kompressionsverhältnis, insbesondere, falls R2(7) der längste Lauflängenkode ist, der verfügbar ist. (Siehe US-Patente Nrn. 5,381,145 und 5,583,500 für eine Beschreibung des "R2"-Kodes). Falls jedoch die vier parallelen Kodierkerne mit Komponenten synchron arbeiten, wird die Verarbeitungs geschwindigkeit durch die Komponente mit den meisten zu kodierenden Bitebenen bestimmt; Kerne ("cores"), die anderen Komponenten zugewiesen sind, sind während unkodierter Bitebenen untätig.When the key data is encoded, the first bit level becomes less important data that does not consist entirely of zero overhead bits for each coefficient determined. This allows the encoder and decoder, over entire bits to look away from less important data. This is especially useful for Encoding of units of black and white data, where all information in are the K coefficients and the CMY coefficients are all zero. A non-coding the bit planes individually helps a compression ratio, in particular, if R2 (7) is the longest run-length code that is available. (See U.S. Patent Nos. 5,381,145 and 5,583,500 for a description of the "R2" code). However, if the four parallel coding cores with components working synchronously, the processing becomes speed through the component with the most bit planes to be coded certainly; Cores assigned to other components are during unencoded bite levels idle.
Ein Flußdiagramm, das eine Ausführungsform des Betriebs des obigen Pseudo-Kodes zeigt, ist in Fig. 14 gezeigt. Nimmt man Bezug auf Fig. 14, so beginnt das Kon textmodell mit dem Kodieren des wichtigsten Teils bzw. Batzens (MIC) (Verarbei tungsblock 1401). Nach dem Kodieren des MIC's kodiert die Verarbeitungslogik die Position der ersten LIC-Bitebene mit Daten (Verarbeitungsblock 1402), wobei LIC für den am wenigsten wichtigen Batzen bzw. Teil steht. Dies gilt für die ganze Kodier einheit. Entweder werden 0, 1, 2, 3, 4, 5 oder 6 Bitebenen Daten enthalten, falls es sechs Bitebenen in dem LIC gibt. Dann setzt die Verarbeitungslogik eine aktuelle LIC-Bitebenen-Variable auf die erste LIC-Bitebene mit Daten (Verarbeitungsblock 1403).A flowchart showing an embodiment of the operation of the above pseudo-code is shown in FIG . Referring to Fig. 14, the textual model begins with the coding of the most significant part (MIC) (processing block 1401 ). After encoding the MIC, the processing logic encodes the position of the first LIC bit plane with data (processing block 1402 ), where LIC represents the least significant piece. This applies to the whole coding unit. Either 0, 1, 2, 3, 4, 5, or 6 bit-planes will contain data if there are six bit-planes in the LIC. Then, the processing logic sets a current LIC bitplane variable to the first LIC bitplane with data (processing block 1403 ).
Als nächstes bestimmt ein Test, ob alle LIC-Bitebenen mit Daten kodiert worden sind (Verarbeitungsblock 1404). Falls dem so ist, endet der Prozeß; falls nicht, kodiert die Verarbeitungslogik eine LIC-Bitebene (Verarbeitungsblock 1405) und stellt die aktuelle LIC-Bitebenen-Variable auf die nächste LIC-Bitebene ein (Verarbeitungsblock 1406). Danach springt die Verarbeitung zu dem Verarbeitungsblock 1404 zurück.Next, a test determines if all LIC bit planes have been encoded with data (processing block 1404 ). If so, the process ends; if not, the processing logic encodes a LIC bit plane (processing block 1405 ) and sets the current LIC bit plane variable to the next LIC bit plane (processing block 1406 ). Thereafter, the processing returns to the processing block 1404 .
Eine Ausführungsform der Ordnung bzw. Reihenfolge zum Kodieren der wichtigsten
Daten lautet wie folgt:
An embodiment of the order for coding the most important data is as follows:
Die wichtigsten Daten werden für Wavelt-Baum verarbeitet bzw. mit einem Wavelet-Baum zu einer Zeit. Zum erneuten Iterieren sind sie nicht eingebettet. Ein MIC-Vor herseher ("MIC lookahead") bestimmt Bitebenen, die alle Null-Kopfbits sind, für alle Nicht-SS-Koeffizienten in dem Wavelet-Baum. Bei einer Ausführungsform ist eine 4-Bit-Zahl ausreichend, um die erste Bitebene zu identifizieren, um individuell zu kodieren. Bei einer alternativen Ausführungsform, die in Fig. 15 gezeigt ist, wird ein Bit verwendet, um anzuzeigen, daß alle Nicht-SS-Koeffizienten 1501 der zweiten Zerlegung (schraffierter Bereich) Null sind, und ein anderes Bit, um anzuzeigen, daß alle Nicht-SS-Koeffizienten 1503 der ersten Zerlegung Null sind. Diese zwei Bits werden zusätzlich zu den vier Bits verwendet, die verwendet werden, um die erste Bitebene zu spezifizieren.The most important data are processed for a wavelet tree or with one wavelet tree at a time. They are not embedded for re-iterating. An MIC lookahead determines bit planes, which are all zero overhead bits, for all non-SS coefficients in the wavelet tree. In one embodiment, a 4-bit number is sufficient to identify the first bit-plane to encode individually. In an alternative embodiment, shown in Figure 15, one bit is used to indicate that all non-SS coefficients 1501 of the second decomposition (hatched area) are zero, and another bit to indicate that all are not -SS coefficients 1503 of the first decomposition are zero. These two bits are used in addition to the four bits used to specify the first bit-plane.
Bei einer alternativen Ausführungsform kann ein Baum-Vorherseher ("tree lookahead") verwendet werden, wo die SS-Koeffizienten kodiert werden, und dann wird für den ganze Baum die erste Bitebene mit Nicht-Null-Kopfbits kodiert.In an alternative embodiment, a tree lookahead may be used where the SS coefficients are encoded, and then for the whole tree encodes the first bit plane with non-zero overhead bits.
Um eine Kontext-Neubesuchs-Verzögerung zu berücksichtigen, falls eine Konditionie rung für das SS- und Erst-Bitebenen-Kodieren verwendet wird, kann das aktuelle Kodieren/Dekodieren der Bits des SS-Koeffizienten (der 9 Bits beträgt, falls ein reversibler Farbraum verwendet wird) und der Vorherseher-Wert alterniert werden. Falls Konditionieren nicht verwendet wird, ist ein Alternieren nicht erforderlich. To consider a context re-entry delay if a condition For the SS and first bit-plane encoding, the current Encoding / decoding the bits of the SS coefficient (which is 9 bits, if any) reversible color space is used) and the predictor value is alternated. If conditioning is not used then alternation is not required.
Wie zuvor diskutiert wurde, verwendet das Kontextmodell der vorliegenden Erfindung
ein Vorhersehen bzw. einen Vorherseher. Eine Ausführungsform des Vorhersehers
bzw. des Vorhersehens kann für die wichtigsten Daten verwendet werden, d. h. den
wichtigsten Teil bzw. wichtigsten Batzen (MIC). Bei einer Ausführungsform, wie in
Fig. 15 gezeigt ist, werden für jeden Baum 6 Bits verwendet: 4 für eine Maximum-Bit
ebene, 1 für Niveau 0 alle Null, 1 für Niveau 1 alle Null. Falls die maximale
Bitebene Null ist, dann werden die zwei Extrabits redundant, aber dies ist nicht
wichtig. Ansonsten wird eine adaptive Kodierentscheidung verwendet, um "isoliert
Null/nicht Null" zu entscheiden. Für Nicht-Null-Koeffizienten können sie weiter durch
folgendes spezifiziert werden:
As previously discussed, the contextual model of the present invention uses a predictor. An embodiment of the prediction or foresight can be used for the most important data, ie the most important parts (MIC). In one embodiment, as shown in Figure 15, 6 bits are used for each tree: 4 for a maximum bit level, 1 for level 0 all zero, 1 for level 1 all zero. If the maximum bit-level is zero, then the two extra bits become redundant, but this is not important. Otherwise, an adaptive coding decision is used to decide "isolated zero / not zero". For non-zero coefficients, they can be further specified by the following:
- - Eine M-ary-Operation, um den Wert und das Vorzeichen eines Koeffi zienten zu bestimmen. (Insgesamt: 2 Zyklen pro Koeffizient)- An M-ary operation to get the value and sign of a coeffi to determine the cus- (Total: 2 cycles per coefficient)
- - Eine adaptive Kodierungsentscheidung wird verwendet, um "±1/nicht ±1" zu entscheiden. Ein zweiter Zyklus wird verwendet, um das Vor zeichen mit dem Betrag gleich 1 und das Vorzeichen und den Wert für die Beträge größer als 1 zu bekommen. (Insgesamt: 3 Zyklen pro Koef fizient)An adaptive coding decision is used to "± 1 / not ± 1 ", a second cycle is used to adjust the pre sign with the amount equal to 1 and the sign and the value for to get the amounts greater than 1. (Total: 3 cycles per coef fizient)
- - In ähnlicher Weise kann "±1/nicht ±1", "±2,3/nicht ±2,3" usw. für insgesamt 4 Zyklen pro Koeffizient durchgeführt werden.- Similarly, "± 1 / not ± 1", "± 2.3 / not ± 2.3", etc. for a total of 4 cycles per coefficient are performed.
-
- Das folgende Verfahren:
- The following procedure:
Bemerkenswert ist, daß ein "Spezifizieren" eines Bits oder von Bits adaptives Kodieren sein kann, Kodieren mit 50% Wahrscheinlichkeit oder einfach Kodieren von Bits zu dem kodierten Datenstrom.It is noteworthy that "specifying" a bit or bits is adaptive coding can be, coding with 50% probability or simply coding bits to the coded data stream.
Falls alle oder die meisten der Bitebenen individuell zu kodieren sind, können manche Niveaus der Transformation ungenutzte Bitebenen aufgrund einer Ausrichtung haben - ungenutzte Bitebenen werden niemals kodiert. Es gibt eine Anzahl von Optionen zum Handhaben einer Bit-zu-Kontext-Verzögerung für die Kopf- und Schwanzbits. Ein Verfahren ist es, drei Koeffizienten alternierend zu tuen. Ein DD, ein SD und ein DS. Das Vorzeichenbit für Nicht-Null-Koeffizienten kann am Ende des Koeffizienten kodiert werden - da alle wichtigsten Daten immer verlustfrei sind, ist ein exaktes Folgen des ersten "Ein"-Bits nicht notwendig.If all or most of the bit-planes are to be coded individually, some may Levels of transformation have unused bit planes due to an orientation - Unused bit planes are never encoded. There are a number of options for Handle a bit-to-context delay for the header and tail bits. On The method is to do three coefficients alternately. A DD, an SD and a DS. The sign bit for non-zero coefficients may be at the end of the coefficient be coded - since all the most important data is always lossless, is an exact Consequences of the first "on" bit not necessary.
Eine Ausführungsform eines Flußdiagramms, das den Pseudo-Kode zum Kodieren des wichtigsten Teils bzw. Batzens zeigt, ist in Fig. 16 gezeigt. Nimmt man Bezug auf Fig. 16, so beginnt der Prozeß damit, daß die Prozeßlogik den gegenwärtigen Baum auf den ersten Baum einstellt (Verarbeitungsblock 1601). Dann kodiert die Verarbeitungslogik den SS-Koeffizienten (Verarbeitungsblock 1602). Nach Kodieren des SS-Koeffizienten, kodiert die Verarbeitungslogik die Position der ersten Bitebene mit Daten in dem MIC des Baums (Verarbeitungsblock 1603) oder führt den MIC-Vorherseher durch.An embodiment of a flowchart showing the pseudo-code for encoding the most significant part is shown in FIG . Referring to Figure 16, the process begins with the process logic setting the current tree to the first tree (processing block 1601 ). Then, the processing logic encodes the SS coefficient (processing block 1602 ). After encoding the SS coefficient, the processing logic encodes the position of the first bitplane with data in the MIC of the tree (processing block 1603 ) or performs the MIC predictor.
Dann testet die Verarbeitungslogik, ob der MIC des ganzen Baumes Null ist (Ver arbeitungsblock 1604). Falls der MIC des ganzen Baumes Null ist, schreitet die Verarbeitung beim Verarbeitungsblock 1614 fort; ansonsten geht die Verarbeitung zum Verarbeitungsblock 1605 über, wo die Verarbeitungslogik den aktuellen Koeffizienten zu den ersten Nicht-SS-Koeffizienten in dem Baum einstellt bzw. festlegt. Then the processing logic tests whether the MIC of the whole tree is zero (processing block 1604 ). If the MIC of the whole tree is zero, processing continues at processing block 1614 ; otherwise, processing transfers to processing block 1605 where the processing logic sets the current coefficient to the first non-SS coefficients in the tree.
Nach dem Einstellen des aktuellen Koeffizienten zu dem ersten Nicht-SS-Koeffizienten in dem Baum, stellt die Verarbeitungslogik die aktuelle Bitebene auf die erste Bitebene mit Daten ein (Verarbeitungsblock 1606). Dann kodiert die Verarbeitungslogik ein Bit des aktuellen Koeffizienten in der aktuellen Bitebene (Verarbeitungsblock 1607). Danach testet die Verarbeitungslogik, ob alle Bitebenen kodiert worden sind (Ver arbeitungsblock 1608). Falls alle Bitebenen kodiert worden sind, legt die Verarbei tungslogik die aktuelle Bitebene auf die nächste Bitebene fest (Verarbeitungsblock 1609) und geht zum Verarbeitungsblock 1607 über. Falls alle Bitebenen kodiert worden sind, testet die Verarbeitungslogik, ob der aktuelle Koeffizient Null ist (Verarbeitungs block 1610). Falls der aktuelle Koeffizient nicht Null ist, kodiert die Verarbeitungs logik das Vorzeichenbit (Verarbeitungsblock 1611) und die Verarbeitung geht zum Verarbeitungsblock 1613 über. Falls der aktuelle Koeffizient Null ist, dann geht die Verarbeitungslogik zu dem Verarbeitungsblock 1613 über.After setting the current coefficient to the first non-SS coefficient in the tree, the processing logic sets the current bit plane to data with the first bit plane (processing block 1606 ). Then, the processing logic encodes one bit of the current coefficient in the current bit plane (processing block 1607 ). Thereafter, the processing logic tests whether all bit-planes have been encoded (processing block 1608 ). If all bit-planes have been encoded, the processing logic sets the current bit-plane to the next bit-plane (processing block 1609 ) and proceeds to processing block 1607 . If all bit-planes have been encoded, the processing logic tests to see if the current coefficient is zero (processing block 1610 ). If the current coefficient is not zero, the processing logic encodes the sign bit (processing block 1611 ) and processing transfers to processing block 1613 . If the current coefficient is zero, then processing logic transfers to processing block 1613 .
Bei dem Verarbeitungsblock 1613 testet die Verarbeitungslogik, ob alle Koeffizienten in dem Baum kodiert worden sind. Falls alle Koeffizienten in dem Baum nicht kodiert worden sind, dann legt die Verarbeitungslogik den aktuellen Koeffizienten auf den nächsten Koeffizienten in dem Baum fest (Verarbeitungsblock 1612) und die Ver arbeitung geht zum Verarbeitungsblock 1606 über. Falls alle Koeffizienten in dem Baum kodiert worden sind, dann testet die Verarbeitungslogik, ob alle Bäume kodiert worden sind (Verarbeitungsblock 1614). Falls alle Bäume kodiert worden sind, endet die Verarbeitung; ansonsten geht die Verarbeitung zum Verarbeitungsblock 1615 über, wo die Verarbeitungslogik den aktuellen Baum auf den nächsten Baum festlegt und die Verarbeitung geht zum Verarbeitungsblock 1602 über.At processing block 1613 , the processing logic tests whether all coefficients in the tree have been encoded. If all the coefficients in the tree have not been encoded, then the processing logic sets the current coefficient to the nearest coefficient in the tree (processing block 1612 ), and processing transfers to processing block 1606 . If all the coefficients in the tree have been encoded, then the processing logic tests to see if all trees have been encoded (processing block 1614 ). If all trees have been encoded, processing ends; otherwise, processing transfers to processing block 1615 , where the processing logic sets the current tree to the next tree, and processing transfers to processing block 1602 .
Fig. 17 ist ein Blockdiagramm einer Ausführungsform der Formatiereinheit und ein Kontextmodell, das während des wichtigsten Datenkodierdurchlaufs verwendet wird. Nimmt man Bezug auf Fig. 17, so ist ein Tonnenschieber ("Barrel"-Schieber) 1701 angeschlossen, um die Stärke des Koeffizienten und einen Quantisierungspegel zu empfangen, der während des Kodierens verwendet wurde, um zu verhindern, daß die wichtigsten Daten die minimale Disk-Bandbreite bzw. Platten-Bandbreite überschreiten, wodurch eine verlustfreie Dekompression gewährleistet wird. Somit kontrolliert das Quantisierungsniveau den Tonnen-Schieber bzw. Barrel-Schieber 1701. Bei einer Ausführungsform verschiebt der Tonnen-Schieber 1701 die Betragsbits um 0, 1, 2 oder 3, um die Quantisierungen 1, 2, 4 oder 8 zu unterstützen. Bei einer alternativen Ausführungsform wird eine niedrigere oder höhere Anzahl von Quantisierungen unterstützt, wie z. B. nur zwei Quantisierungen. Fig. 17 is a block diagram of one embodiment of the formatter and a context model used during the most important data encoding run. Referring to Fig. 17, a barrel shifter 1701 is connected to receive the magnitude of the coefficient and a quantization level used during encoding to prevent the most important data from being the minimum Exceed disk bandwidth, thereby ensuring lossless decompression. Thus, the quantization level controls the barrel slide 1701 . In one embodiment, the barrel shifter 1701 shifts the magnitude bits by 0, 1, 2, or 3 to support the quantizations 1, 2, 4, or 8. In an alternative embodiment, a lower or higher number of quantizations is supported, such as. Eg only two quantizations.
Die Ausgabe des Tonnen-Schiebers 1701 umfaßt die sechs Bitebenen niedrigerer Ordnung, wobei es sich um die weniger wichtigen Daten handelt, und den Rest der Bits höherer Ordnung, wobei es sich um die wichtigsten Daten handelt. Bei einer alternati ven Ausführungsform wird ein einfacher Separationsmechanismus verwendet, um diese zwei Ausgaben zu erzeugen.The output of barrel shifter 1701 includes the six lower-level bit planes, which are the less important data, and the remainder of the higher-order bits, which are the most important data. In an alternative embodiment, a simple separation mechanism is used to generate these two outputs.
Beide Ausgaben des Tonnen-Schiebers 1701 werden in die erste Bitebeneneinheit 1702 eingegeben, die bestimmt, welche Bitebenen Daten in sich haben. Die erste Bitebenen einheit 1702 wird verwendet, um die Bitebene mit dem ersten "Ein"-Bit für die ganze Kodiereinheit zu finden (siehe Fig. 10), und zwar zur Verwendung, wenn die weniger wichtigen Daten verarbeitet werden. Eine andere Bitebeneneinheit 1706 ist angeschlos sen, um die wichtigsten Daten, die von einem Tonnen-Schieber 1701 ausgegeben werden, ebenso zu empfangen. Die erste Bitebeneneinheit 1706 wird für jeden Baum verwendet, wenn die wichtigeren Daten verarbeitet werden. Eine Ausführungsform der ersten Bitebeneneinheit wird unten unter Bezugnahme auf Fig. 18 beschrieben.Both outputs of the barrel shifter 1701 are input to the first bit plane unit 1702 , which determines which bit planes have data in them. The first bit plane unit 1702 is used to find the bit plane with the first "on" bit for the whole coding unit (see Fig. 10) for use when processing the less important data. Another bit-plane unit 1706 is connected to receive the most important data output from a barrel shifter 1701 as well. The first bitplane unit 1706 is used for each tree as the more important data is processed. An embodiment of the first bit plane unit will be described below with reference to FIG .
Der Tonnen-Schieber 1701 ist ebenso an die Vergleichseinheit 1703 und 1704 an geschlossen, die zwei Vergleiche mit den wichtigsten Daten durchführen, um die Zwei-Bit-Signalisierinformation für die weniger wichtigen Daten zu erzeugen. Die Ver gleichseinheit 1703 bestimmt, falls die wichtigsten Daten gleich 0 sind, dadurch wird angezeigt, ob ein Schwanzbit bereits aufgetreten ist (d. h. ob das Kodieren noch in dem Schwanz ist). Die Ausgabe der Vergleichseinheit 1703 ist das Schwanz-ein-Bit. Eine Vergleichseinheit 1704 bestimmt, ob die wichtigsten Daten gleich 1 sind. Falls die wichtigsten Daten gleich 1 sind, dann ist die Ausgabe von der obigen Tabelle 5 0. Die Ausgabe einer Vergleichseinheit 1704 ist an einen Eingang des Multiplexers (MUX) 1705 angeschlossen. Der andere Eingang zu dem Multiplexer 1705 ist angeschlossen, um das Vorzeichenbit zu empfangen. Eine Auswahleingabe des Multiplexers 1705 wird durch die Ausgabe einer Vergleichseinheit 1703 gesteuert, so daß, falls die Ausgabe der Vergleichseinheit 1703 anzeigt, daß das Bit ein Schwanzbit ist, dann die Ausgabe des Multiplexers 1705 ein "erstes Schwanz"-Bit 1304 ist. Jedoch, falls der Ausgang der Vergleichseinheit 1703 anzeigt, daß das Bit das Kopfbit ist, dann wird der Multiplexer 1705 gesteuert, um das Vorzeichen auszugeben.The barrel shifter 1701 is also closed to the comparison unit 1703 and 1704 which make two comparisons with the most important data to produce the two-bit signaling information for the less important data. The comparison unit 1703 determines if the most important data is equal to 0, thereby indicating whether a tail bit has already occurred (ie whether the coding is still in the tail). The output of compare unit 1703 is the tail-a-bit. A comparison unit 1704 determines whether the most important data is equal to one. If the most important data is equal to 1, then the output from the above table 5 is 0. The output of a compare unit 1704 is connected to an input of the multiplexer (MUX) 1705 . The other input to the multiplexer 1705 is connected to receive the sign bit. A select input of the multiplexer 1705 is controlled by the output of a compare unit 1703 so that if the output of the compare unit 1703 indicates that the bit is a tail bit, then the output of the multiplexer 1705 is a "first tail" bit 1304 . However, if the output of compare unit 1703 indicates that the bit is the header, then multiplexer 1705 is controlled to output the sign.
Bei einer Ausführungsform können die Vergleichseinheiten 1703 und 1704 implemen tiert werden, indem einfache Bit-Vergleicher verwendet werden.In one embodiment, compare units 1703 and 1704 may be implemented using simple bit comparators.
Ein Speicher 1707 ist angeschlossen, um das Vorzeichenbit, die wichtigsten Daten, die von dem Tonnen-Schieber 1701 ausgegeben werden, und die Ausgabe der Bitebenen einheit 1706 zu empfangen. Der Speicher 1707 wird verwendet, um Koeffizienten so zu verzögern, daß Elternteil- und Nachbarschafts-Information für das Konditionieren verfügbar ist. Die Organisation des Speichers 1707 wird im folgenden diskutiert.A memory 1707 is connected to receive the sign bit, the most important data output from the barrel shifter 1701 , and the output of the bit plane unit 1706 . Memory 1707 is used to delay coefficients such that parent and neighborhood information is available for conditioning. The organization of memory 1707 is discussed below.
Kontextmodelle (CM) 1710-1712 stellen eine Konditionierung für das Vorzeichen, den Kopf, den Schwanz und andere Bits bereit. Jedes dieser Kontextmodelle wird unten beschrieben.Context models (CM) 1710-1712 provide a conditioning for the sign, the head, tail and other bits ready. Each of these context models is described below.
Fig. 18 zeigt eine Ausführungsform einer Bitebeneneinheit. Nimmt man Bezug auf Fig. 18, so umfaßt die erste Bitebeneneinheit 1800 ein ODER-Gatter 1801, das angeschlos sen ist, um einen Koeffizienten und eine Rückkopplung von dem Ausgang eines Registers 1802 zu empfangen. Der Ausgang eines ODER-Gatters 1801 ist an den Eingang eines Registers 1802 angeschlossen. Das Register 1802 wird durch einen Start einer Baum-/Kodiereinheit-Rücksetzanzeige gesteuert. Der Ausgang des Registers 1802 ist an einem Prioritätskodierer 1803 angeschlossen. Der Ausgang des Prioritätskodie rers 1803 ist der Ausgang einer ersten Bitebeneneinheit 1800. Fig. 18 shows an embodiment of a bit plane unit. Referring to FIG. 18, the first bit plane unit 1800 includes an OR gate 1801 that is connected to receive a coefficient and a feedback from the output of a register 1802 . The output of an OR gate 1801 is connected to the input of a register 1802 . Register 1802 is controlled by a start of a Tree / Encoder Reset Display. The output of register 1802 is connected to a priority encoder 1803 . The output of the priority encoder 1803 is the output of a first bit-plane unit 1800 .
Beim Start wird das Register 1802 gelöscht. Jedes Bit eines Registers 1802 wird mit jedem Bit des Eingangskoeffizienten geodert, wobei das ODER-Gatter 1801 verwendet wird. Für jedes Bit des Koeffizienten, das 0 ist, verbleibt der Wert des Registers 1802 sein aktueller Wert, das zu dem Prioritätskodierer ausgegeben wird. Für jedes Bit des Koeffizienten, das eine 1 ist (z. B. das erste), ist die Ausgabe des ODER-Gatters 1801 zu dem Register 1802 1, was zu dem Prioritätskodierer 1803 ausgegeben wird. Der Prioritätskodierer 1803 lokalisiert dann die erste 1, die die erste Bitebene des Koeffi zienten ist, die eine 1 hat.At startup, register 1802 is cleared. Each bit of a register 1802 is ORed with each bit of the input coefficient, using the OR gate 1801 . For each bit of the coefficient that is 0, the value of the register 1802 remains its current value, which is output to the priority encoder. For each bit of the coefficient that is a 1 (eg, the first one), the output of the OR gate 1801 to the register 1802 is 1, which is output to the priority encoder 1803 . The priority encoder 1803 then locates the first 1, which is the first bit plane of the coefficient, which has a 1.
Jede Bitebene für die am wenigsten wichtigen Daten wird wie folgt verarbeitet:
Each bit-level for the least important data is processed as follows:
für jeden Baum tue
für jeden Koeffizienten tue
falls Start vom Vorherseh-Intervall
tue Vorhersehen
falls Vorhersehen nicht aktiv ist
kodiere Kopf- oder Schwanzbit
falls erstes "Ein"-Bit
kodiere Vorzeichenbit.do for every tree
do for each coefficient
if start from the foresight interval
do foresight
if foresight is not active
encode head or tail bits
if first "on" bit
encode sign bit.
Eine Ausführungsform der Verarbeitung des Kodierens einer LIC-Bitebene ist in dem Flußdiagramm der Fig. 19 gezeigt. Die Verarbeitung des Kodierens einer LIC-Bitebene beginnt damit, daß die Verarbeitungslogik den aktuellen Baum zu dem ersten Baum festlegt (Verarbeitungsblock 1901). Dann legt die Verarbeitungslogik den aktuellen Koeffizienten auf den ersten Nicht-SS-Koeffizienten in dem Baum fest (Verarbeitungs block 1902). Nach dem Festlegen des aktuellen Koeffizienten auf den ersten Nicht-SS-Ko effizienten in dem Baum, testet die Verarbeitungslogik, ob das Kodieren beim Start eines Vorherseh-Intervalls ist (Verarbeitungsblock 1903). Falls der Kodierprozeß bei dem Start eines Vorherseh-Intervalls ist, führt die Verarbeitungslogik ein Vorhersehen durch (Verarbeitung 1904) und die Verarbeitung schreitet zum Verarbeitungsblock 1905 fort. Falls der Kodierprozeß nicht beim Start eines Vorherseh-Intervalls ist, geht die Verarbeitungslogik direkt zum Verarbeitungsblock 1905 über und bestimmt, ob Vorhersehen aktiv ist.An embodiment of the processing of encoding a LIC bit plane is shown in the flowchart of FIG . The processing of encoding a LIC bit-plane begins with the processing logic determining the current tree to the first tree (processing block 1901 ). Then, the processing logic sets the current coefficient to the first non-SS coefficient in the tree (processing block 1902 ). After setting the current coefficient to the first non-SS coefficient in the tree, the processing logic tests whether encoding is at the start of a foresight interval (processing block 1903 ). If the encoding process is at the start of a predictive interval, the processing logic performs a foresight (processing 1904 ) and processing proceeds to processing block 1905 . If the encoding process is not at the start of a foresight interval, the processing logic goes directly to processing block 1905 and determines if foresight is active.
Falls Vorhersehen aktiv ist, schreitet die Verarbeitung beim Verarbeitungsblock 1909 fort, wo die Verarbeitungslogik bestimmt, ob alle Koeffizienten in dem Baum kodiert sind. Falls alle Koeffizienten in dem Baum kodiert sind, schreitet die Verarbeitung beim Verarbeitungsblock 1913 fort; ansonsten legt die Verarbeitungslogik den aktuellen Koeffizienten auf den nächsten Koeffizienten in dem Baum nach dem Vorherseh-Inter vall fest (Verarbeitungsblock 1910) und die Verarbeitung geht zum Verarbeitungs block 1903 über.If look ahead is active, processing continues at processing block 1909 where the processing logic determines whether all coefficients in the tree are encoded. If all coefficients in the tree are encoded, processing continues at processing block 1913 ; otherwise, the processing logic sets the current coefficient to the nearest coefficient in the tree after the predictive interval (processing block 1910 ), and processing transfers to processing block 1903 .
Falls das Vorhersehen nicht aktiv ist, kodiert die Verarbeitungslogik das Kopf- oder Schwanzbit (Verarbeitungsblock 1906) und testet dann, ob das erste Nicht-Null-Bit empfangen worden ist (Verarbeitungsblock 1907). Falls das erste Nicht-Null-Bit nicht empfangen worden ist, schreitet die Verarbeitung beim Verarbeitungsblock 1911 fort. Falls das erste Nicht-Null-Bit empfangen worden ist, schreitet die Verarbeitung beim Verarbeitungsblock 1908 fort, wo die Verarbeitungslogik das Vorzeichenbit kodiert und die Verarbeitung geht dann zum Verarbeitungsblock 1911 über.If foresight is not active, the processing logic encodes the header or tail bit (processing block 1906 ) and then tests to see if the first non-zero bit has been received (processing block 1907 ). If the first non-zero bit has not been received, processing continues at processing block 1911 . If the first non-zero bit has been received, processing continues at processing block 1908 where the processing logic encodes the sign bit, and then processing transfers to processing block 1911 .
Beim Verarbeitungsblock 1911 bestimmt die Verarbeitungslogik, ob alle Koeffizienten in dem Baum kodiert worden sind. Falls alle Koeffizienten in dem Baum nicht kodiert worden sind, legt die Verarbeitungslogik den aktuellen Koeffizienten auf den nächsten Koeffizienten in dem Baum fest (Verarbeitungsblock 1912) und geht zum Verarbei tungsblock 1903 über. Falls alle Koeffizienten in dem Baum kodiert worden sind, geht die Verarbeitung zum Verarbeitungsblock 1913 über, wo die Verarbeitungslogik testet, ob alle Bäume kodiert worden sind. Falls alle Bäume nicht kodiert worden sind, legt die Verarbeitungslogik den aktuellen Baum auf den nächsten Baum fest (Verarbeitungs block 1914) und die Verarbeitung schreitet beim Verarbeitungsblock 1902 fort. Falls alle Bäume kodiert worden sind, endet die Verarbeitung.At processing block 1911 , the processing logic determines whether all coefficients in the tree have been encoded. If all coefficients in the tree have not been encoded, the processing logic sets the current coefficient to the nearest coefficient in the tree (processing block 1912 ) and proceeds to processing block 1903 . If all the coefficients in the tree have been encoded, processing transfers to processing block 1913 , where the processing logic tests whether all trees have been encoded. If all the trees have not been encoded, the processing logic sets the current tree to the next tree (processing block 1914 ) and processing continues at processing block 1902 . If all trees have been encoded, processing ends.
Die Verarbeitung eines Wavelet-Baumes zu einer Zeit kann nicht wichtig sein, aber da die Transformation verursacht, daß Daten in dieser Ordnung bzw. Reihenfolge gelesen und geschrieben werden, kann es zweckmäßig sein. Falls die Daten durch Wavelet-Bäume verarbeitet werden, kann eine Anpassung an eine Bit-zu-Kontext-Verzögerung vorgenommen werden, indem zwischen DD-, SD- und DS-Koeffizienten alterniert wird (Alternieren zwischen Unterbäumen). Ansonsten kann ein Unterband zu einer Zeit kodiert werden. Ungeachtet der gewählten Reihenfolge werden ungenutzte Kopf-/Schwanzbits aufgrund der Ausrichtung unterschiedlicher Unterbänder niemals kodiert und erfordern keine untätigen bzw. unproduktiven Zyklen.Processing a wavelet tree at one time may not be important, but there the transformation causes data to be read in that order and written, it may be appropriate. If the data is through wavelet trees can be adapted to a bit-to-context delay be made by alternating DD, SD and DS coefficients (Alternate between subtrees). Otherwise, a subband may be at a time be encoded. Regardless of the chosen order will be unused Head / tail bits never encoded due to the alignment of different subbands and do not require idle or unproductive cycles.
Fig. 20 ist ein Blockdiagramm eine Ausführungsform der Vorherseher- und Kontekt modelle für weniger wichtige Daten. Bei einer Ausführungsform verwenden die wichtigsten Daten und die weniger wichtigen Daten dieselben Kontextmodelle (CM), die eine Konditionierung für die Vorzeichen-, Kopf- und Schwanzbits bereitstellen. Fig. 20 is a block diagram of an embodiment of the predictor and counter models for less important data. In one embodiment, the most important data and the less important data use the same context models (CM) that provide conditioning for the sign, head and tail bits.
Nimmt man Bezug auf Fig. 20, so werden Kontextmodelle 2001 bis 2003 mit den Eingangsdaten verbunden. Ein Vorzeichen-Kontextmodell 2001 ist angeschlossen, um das Schwanz-ein-Bit, ein Vorzeichen-/Erst-Schwanz-Bit-Signal und die Daten zu empfangen. Das Kopfbit-Kontextmodell 2002 ist angeschlossen, um das Schwanz-ein-Bit und die Daten zu empfangen. Das Schwanzbit-Kontextmodell 2003 ist angeschlos sen, um das Schwanz-ein-Bit, ein Vorzeichen-/Erst-Schwanz-Bit-Signal und die Daten zu empfangen. In Antwort auf ihre Eingänge erzeugt jedes Kontextmodell 2001 bis 2003 einen Kontext. Das erwähnte "Erst-Schwanz-Bit" kann auch als "erstes Schwanz bit" bezeichnet werden. Referring to Fig. 20, context models 2001 through 2003 are connected to the input data. A sign context model 2001 is connected to receive the tail-a-bit, a sign / first-tail bit signal, and the data. The header contextual model 2002 is connected to receive the tail-a-bit and the data. The tail bit context model 2003 is connected to receive the tail-a-bit, a sign / first-tail bit signal, and the data. In response to their inputs, each context model produces a context from 2001 to 2003 . The mentioned "first tail bit" may also be referred to as "first tail bit".
Die Kontexte, die durch die Kontextmodelle 2001 bis 2003 erzeugt werden, werden an die Eingänge des Multiplexers 2004 angeschlossen. Der Multiplexer 2004 wird durch die vorhergehenden Bits und die Bit-Signifikanz-Darstellung selbst gesteuert. Das Kopf- Kontextmodell 2002 wird verwendet, bis ein 1-Bit bei dem Dateneingang gesehen wird. Das Vorzeichen-Kontextmodell 2001 wird verwendet, wenn das letzte Bit das erste 1-Bit des Kopfes war. Danach wird das Schwanz-Kontextmodell 2003 verwendet.The contexts generated by the context models 2001 through 2003 are connected to the inputs of the 2004 multiplexer. The multiplexer 2004 is controlled by the preceding bits and the bit significance representation itself. The head context model 2002 is used until a 1-bit is seen at the data input. The sign context model 2001 is used when the last bit was the first 1-bit of the header. Thereafter, the tail context model 2003 is used.
Der Ausgang des Multiplexers 2004 ist an die "=Kopf?"-Einheit 2005 und den zuerst-ein/zuerst-aus-(FIFO für "first-in/first-out")-Puffer 2006 angeschlossen. Die "=Kopf?"-Einheit 2005 testet, ob der aktuelle Kontext ein Kopfbit-Kontext mit Null-Kopfbits in der Nachbarschaft und Elternteil ist. Falls alle Kontexte in dem Kopf sind, löscht ein Signal von der "=Kopf?"-Einheit 2005 den FIFO 2006.The output of the multiplexer 2004 is connected to the "= head?" Unit 2005 and the first-in-first-out (FIFO) buffer 2006 . The "= header?" Unit 2005 tests whether the current context is a header bit context with zero overhead bits in the neighborhood and parent. If all contexts are in the header, a signal from the "= header?" Unit 2005 clears the FIFO 2006 .
Die Kontexte und Ergebnisse werden im FIFO 2006 oder im Speicher für das Vorher seher-Intervall gepuffert. Am Ende des Intervalls werden, falls nötig, eine Vorherseher-Entscheidung und/oder individuelle Entscheidungen kodiert. Falls die Koeffizienten mit einem Wavelet-Baum zu einer Zeit verarbeitet werden, kann der FIFO zum Vorhersehen ein einziger FIFO sein, der für alle Unterbänder verwendet wird, oder mehrere FIFOs können verwendet werden, einer für jedes Unterband.The contexts and results are buffered in the FIFO 2006 or in the memory for the before-seeing interval. At the end of the interval, if necessary, a predictor's decision and / or individual decisions are encoded. If the coefficients are processed with a wavelet tree at a time, the FIFO foreseeing may be a single FIFO used for all subbands, or multiple FIFOs may be used, one for each subband.
Bemerkenswert ist, falls es zweckmäßig war, das Multiplexen zu reduzieren, die wichtigsten Daten ein Vorhersehen ebenfalls verwenden könnten. Es kann jedoch etwas redundant sein, sowohl ein Vorhersehen als auch eine erste Bitebene für jeden Baum zu verwenden.Remarkably, if it was expedient to reduce the multiplexing, the key data could also use foresight. But it can be something be redundant, both a foresight and a first bitplane for each tree to use.
Falls ein Kern, der einer Komponente zugewiesen ist, ein Vorzeichenbit kodiert, werden Kerne, die zu irgendwelchen anderen Komponenten zugewiesen sind, die nicht ein Vorzeichenbit bei derselben Bitebene kodieren, untätig bzw. unproduktiv sein. Deshalb können bis zu vier Taktzyklen für Vorzeichenbits verwendet werden, falls jeder Kern ein Vorzeichenbit auf einer unterschiedlichen Bitebene kodiert. Bei einer Ausführungsform gibt es bis zu sechs Kopf- oder Schwanzbits pro Koeffizienten.If a core assigned to a component encodes a sign bit, become cores that are assigned to any other components that are not encode a sign bit at the same bit plane, be idle or unproductive. Therefore, up to four clock cycles can be used for sign bits, if each core encodes a sign bit at a different bit-plane. At a Embodiment, there are up to six head or tail bits per coefficient.
Ein mögliches Zeitsteuerproblem ist, daß der wichtigste Teil bzw. Batzen ausreichend gut komprimiert, so daß die Disk bzw. Platte während des Dekodierens eines Teils der Daten untätig bzw. unproduktiv ist. Falls es eine ausreichende Speicherbandbreite für den Bandpuffer gibt, kann ein Vorhersehen verwendet werden, um die wichtigsten Daten schnelle zu verarbeiten. Dann können die weniger wichtigen Daten einen Kopf-Start bzw. einen Kopf-Beginn erhalten. Ebenso wäre es gut, falls die Disk eine Burst-Über tragungsrate bzw. eine diskontinuierliche Übertragungsrate hätte, die höher wäre als die maximal aufrechterhaltene Rate. Festplatten weisen normalerweise einen signifikanten Puffer auf und vielleicht würde ein vorauslaufendes Lesen in diesen Puffer die unnütze bzw. unproduktive Zeit beseitigen.One potential timing issue is that the most important part or chunk is sufficient compressed well, so that the disk during the decoding of a part of the Data is inactive or unproductive. If there is enough memory bandwidth for gives the band buffer, a foresight can be used to identify the most important Data to process fast. Then the less important data can head-start or received a head start. Likewise, it would be good if the disk burst over transmission rate or a discontinuous transmission rate that would be higher as the maximum sustained rate. Hard drives usually have one significant buffer on and maybe a reading ahead would be in these Buffer eliminate the useless or unproductive time.
Das Konditionieren, das in dem Kontextmodell verwendet wird, hängt von den Hard warekosten bzw. dem Hardwareaufwand gegenüber den Kompressionskompromissen ab. Deshalb werden in den folgenden Abschnitten viele Optionen zum Konditionieren vorgestellt, die von Designers beachtet werden können.The conditioning used in the context model depends on the hard the hardware costs or the hardware costs compared to the compression compromises from. Therefore, in the following sections, many options become available for conditioning presented, which can be noticed by designers.
Bei einer Ausführungsform des Kontextmodells werden SS-Koeffizienten nicht kodiert. Da sie nur 1/256 der ursprünglichen Daten ausmachen, führt deren Kodierung nur zu einem geringen Gewinn. Falls ihr Kodieren gewünscht ist, können sie durch ein Gray-Kodieren, ein Konditionieren auf dem vorhergehenden Bit in demselben Koeffizienten und/oder auf ein entsprechendes Bit in dem vorhergehenden Koeffizienten gehandhabt werden. In one embodiment of the context model, SS coefficients are not encoded. Since they make up only 1/256 of the original data, their encoding only results a small profit. If you want to encode, you can Gray coding, conditioning on the previous bit in the same coefficient and / or to a corresponding bit in the previous coefficient become.
Die vier Bits der Erst-Bitebenen-Information bzw. Information für die erste Bitebene für die wichtigsten Daten jedes Wavelet-Baums können ähnlich wie die SS-Koeffizien ten behandelt werden. Sie erhöhen die Größe der Originaldaten nur um 1/512. Bei einer Ausführungsform können sie unkodiert auf ihrer geringen Größe im Vergleich zu den ursprünglichen Daten bleiben oder eine Gray-Kodierung oder eine andere Konditio nierung durchlaufen.The four bits of the first bit plane information for the first bit plane for the most important data of each wavelet tree can be similar to the SS coefficients be treated. You only increase the size of the original data by 1/512. at In one embodiment, they may be uncoded on their small size as compared to remain the original data or a Gray coding or another Konditio go through.
In ähnlicher Weise, falls sechs Bits gemäß der Fig. 15 verwendet werden, können sie wie SS-Koeffizienten behandelt werden.Similarly, if six bits are used as shown in Figure 15, they can be treated as SS coefficients.
Fig. 21 ist ein Blockdiagramm für eine Ausführungsform des Kontextmodells, das die Konditionierung für Kopfbits bereitstellt. Nimmt man Bezug auf Fig. 21, so enthält das Kontextmodell 2100 Schieberegister, ähnliche wie jene, die in einem Bitebenen-Kon textmodell gefunden werden. Ein wichtiger Unterschied ist, daß anstelle der Verwen dung vorhergehender Koeffizientenbits von der aktuellen Bitebene das Konditionieren auf einer Schwanz-ein-Information basiert, die alle vorhergehenden Bitebenen und die zuvor kodierte Information in der aktuellen Bitebene verwendet. Ebenso werden manche Bits zum Identifizieren der kodierten Bitebene oder der Gruppe von kodierten Bitebenen und des Unterbandes oder der Gruppe von kodierten Unterbändern von dem Wichtigkeitsniveau und dem Unterband-Speicherbereichsbilden ("subband bucketing") (ratenartig) erzeugt. Figure 21 is a block diagram for one embodiment of the context model that provides header bit conditioning. Referring to Fig. 21, the context model 2100 includes shift registers similar to those found in a bit-plane context model. An important difference is that instead of using previous coefficient bits from the current bit-plane, conditioning is based on tail-on information that uses all previous bit-planes and the previously encoded information in the current bit-plane. Similarly, some bits for identifying the coded bit plane or group of coded bit planes and the subband or group of coded subbands are generated from the level of importance and subband bucketing (guess-like).
Nimmt man Bezug auf Fig. 21, so umfaßt das Kontextmodell zwei Eingänge, das aktuelle Signifikanzniveau 2110 und die Koeffizienten vom Speicher 2111. Das aktuelle Signifikanzniveau 2110 ist mit den Eingängen des Schwanz-ein-Informations-/Bitgene rator(en)-Blocks 2101 und dem Wichtigkeitsniveau- und Unterband-Speicherbereichs bildungs-Block 2102 verbunden, wobei der gebildete Speicher insbesondere Daten für eine Anwendung enthält und der Vorgang der Speicherbereichsbildung auch als "Bucketing"-Block bezeichnet wird und auch als Variablenzuweisung aufgefaßt werden kann. Die Koeffizienten von dem Speicher werden ebenso mit dem Block 2101 und den Register 2103 bis 2106 verbunden.Referring to FIG. 21, the context model includes two inputs, the current significance level 2110 and the coefficients from memory 2111 . The current significance level 2110 is connected to the inputs of the tail information / bit generator block (s) 2101 and the importance level and subband memory area formation block 2102 , the memory formed in particular including data for an application, and The storage area creation process is also referred to as a "bucketing" block and can also be understood as a variable assignment. The coefficients from the memory are also connected to block 2101 and registers 2103 to 2106 .
Der Block 2101 nimmt die Koeffizienten und bestimmt, ob es ein Bit gibt oder nicht. Bei einer Ausführungsform bestimmt 2101 ebenso, von wo das eine Bit ist. Die Ausgabe des Blocks 2101 stellt ein oder zwei Bits dar, die auf der Schwanz-ein-Infor mation basieren. Bei einer Ausführungsform stellt die Schwanz-Information eine Beziehung bezüglich dem her, ob oder ob nicht das erste Nicht-Null-Betragsbit be obachtet worden ist (z. B. ob das erste "Ein-Bit" beobachtet worden ist) und, falls dem so ist, wieviele Bitebenen dies ungefähr her ist. Tabelle 6 beschreibt die Schwanz- Information-Bits.The block 2101 takes the coefficients and determines whether or not there is a bit. In one embodiment, 2101 also determines from where the one bit is. The output of the block 2101 represents one or two bits based on the tail-in information. In one embodiment, the tail information establishes a relationship as to whether or not the first nonzero magnitude bit has been observed (eg, whether the first "one bit" has been observed), and if so that's how many bite planes this is about. Table 6 describes the tail information bits.
Tabelle 6 - Definition der Schwanz-InformationTable 6 - Definition of tail information
Von der 2-Bit-Schwanz-Information wird ein 1-Bit-"Schwanz-ein"-Wert synthetisiert, um anzuzeigen, ob die Schwanz-Information Null ist oder nicht. Bei einer Ausfüh rungsform werden die Schwanz-Information und die Schwanz-ein-Bits aktualisiert, unmittelbar, nachdem der Koeffizient kodiert worden ist. Bei einer anderen Aus führungsform tritt eine Aktualisierung später auf, um eine parallele Kontexterzeugung zu ermöglichen. From the 2-bit tail information, a 1-bit "tail-on" value is synthesized to indicate if the tail information is zero or not. In a Ausfüh The tail information and the tail-a-bits are updated immediately after the coefficient has been coded. At another off an update occurs later to parallel context generation to enable.
Zusätzlich können die zwei Bits verwendet werden, um anzuzeigen, daß das Wichtig keitsniveau kodiert worden ist. Die ersten zwei Bitebenen verwenden den Wert 0, die zweiten zwei 1, die dritten zwei 2 und die übrigen Bitebenen 3. Zusätzlich gibt es eine Lauflängekodierung der Bits, die alle Null-Kopf-Bits sind bzw. darstellen.In addition, the two bits can be used to indicate that the important thing level has been coded. The first two bit planes use the value 0, the second two 1, the third two 2 and the remaining bit planes 3. In addition there is one Run-length coding of the bits that are all zero-head bits.
Die 10 Bits des Kontextes für die Kopfbits beinhalten die 2 Bits von Information, jeweils von dem Elternteil und den West-Koeffizienten, 1 Bit von Information jeweils von den Nord-, Ost-, Südwest- und Süd-Koeffizienten und 2 Bits von der Wichtigkeits niveauinformation.The 10 bits of context for the header bits include the 2 bits of information each from the parent and the west coefficient, 1 bit of information respectively from the north, east, southwest and south coefficients and 2 bits of importance level information.
Bei einer Ausführungsform wird die Schwanz-Information nicht für manche oder alle Frequenzbänder verwendet. Dies ermöglicht es, daß ein Frequenzband dekodiert wird, ohne zuvor sein Elternteil zu dekodieren.In one embodiment, the tail information does not become for some or all Frequency bands used. This allows a frequency band to be decoded without first decoding his parent.
Bei einer Ausführungsform verwendet die Zuweisung der Bitebenen eines jeden Frequenzbandes zu den Wichtigkeitsniveaus eine Ausrichtung. Die Bestimmung der Schwanz-ein-Information des Elternteils verwendet eine zweite Ausrichtung, die weniger Bitebenen des Elternteils verwendet als tatsächlich kodiert worden sind. Dies ermöglicht es, daß manche Bitebenen eines Frequenzbandes dekodiert werden, ohne die entsprechenden Bitebenen des Elternteils in demselben Nichtigkeitsniveau zu dekodie ren (siehe Fig. 38). Zum Beispiel kann ein Bild mit einer pyramidalen Ausrichtung kodiert werden, wobei aber die Elternteil-Schwanz-ein-Information auf einer MSE-Ausrichtung basiert (siehe Fig. 39). Dies ermöglicht es dem Dekode, eine pyramidale Ausrichtung zudekodieren, eine MSE-Ausrichtung zu simulieren oder irgendeine Ausrichtung zwischen pyramidisch und MSE zu simulieren.In one embodiment, the assignment of the bit-planes of each frequency band to the importance levels uses an alignment. Parental tail information determination uses a second alignment that uses fewer bit planes of the parent than has actually been encoded. This allows some bit-planes of a frequency band to be decoded without decoding the corresponding bit-planes of the parent at the same level of nullity (see Figure 38). For example, an image may be encoded with a pyramidal orientation, but the parent tail information is based on MSE alignment (see Fig. 39). This allows the decode to decode a pyramidal orientation, to simulate MSE alignment, or to simulate any alignment between pyramidal and MSE.
Nimmt man Bezug auf Fig. 21, so sind die Ausgänge des Blocks 2101 mit den Ein gängen der Register 2103 bis 2106 gekoppelt. Die Register 2103 bis 2106 akkumulie ren die Nachbarschaftsdaten. Zum Beispiel halten die oberen/linken Schieberegister Bits während der Zeile aufrecht, die unmittelbar überhalb des aktuellen Koeffizienten ist. Das aktuelle Schieberegister enthält die Bits der aktuellen Zeile von Koeffizienten, während das untere/rechte Schieberegister 2105 die Zeilen der Zeile unmittelbar unterhalb des Schieberegisters enthält. Schließlich hält das Elternteil-Register 2106 die Elternteil-Daten aufrecht. Die Ausgänge der Schieberegister bilden den Kontext.Referring to Fig. 21, the outputs of the block 2101 to A transitions of the registers 2103-2106 are coupled. Registers 2103 to 2106 accumulate the neighborhood data. For example, the upper / left shift registers maintain bits during the line that is just above the current coefficient. The current shift register contains the bits of the current line of coefficients while the lower / right shift register 2105 contains the lines of the line just below the shift register. Finally, the parent register 2106 maintains the parent data. The outputs of the shift registers form the context.
Der Ausgang des Wichtigkeitsniveaus und des Speicherbildungsblocks bzw. "Bucket ing"-Blocks 2102 können ebenso für einen Kontext verwendet werden. Derartiges wäre Teil des Kontexts, wenn die Unterbänder und unterschiedliche Niveaus zu demselben Kontext zu kodieren sind. Falls dies der Fall ist, wird der Ausgang vom Block 2102 mit den Ausgängen der Register 2103 bis 2106 verbunden, um den Kontext auszu bilden. Falls nicht, umfaßt der Kontext nur die Ausgänge der Register 2103 bis 2106.The output of the importance level and the bucket block 2102 may also be used for a context. This would be part of the context if the subbands and different levels are to be coded to the same context. If so, the output from block 2102 is connected to the outputs of registers 2103 through 2106 to form the context. If not, the context includes only the outputs of registers 2103 through 2106 .
Ebenso ist der Ausgang von dem Kontextmodell 2100 ein Bit.Likewise, the output from the context model 2100 is one bit.
Ein Kodieren kann durchgeführt werden, indem zwischen DD-, SD- und DS-Koeffi zienten alterniert wird, um die Bit-zu-Kontext-Verzögerung zur Verwendung von Daten von der aktuellen Bitebene zu ermöglichen (wobei zwischen Unterbäumen alterniert wird).Coding can be done by choosing between DD, SD and DS coefficients client to the bit-to-context delay to use data from the current bit-plane (alternating between subtrees) becomes).
Bemerkenswert ist, daß der Speicher benötigt wird, um Koeffizienten zu speichern, die zur Konditionierung gebraucht werden (siehe Fig. 17). Der Speichergebrauch bezüglich einer Ausführungsform des Kontextmodells mit Konditionierung aller Nachbarn und Elternteile ist in Fig. 22 gezeigt. Eine kurze Saum-Transformationsordnung wird angenommen. (Ein externer Speicher kann verwendet werden, um eine lange Saum-Trans formationsordnung zu unterstützen. Dies würde sowohl einen zusätzlichen Speicherraum als auch eine zusätzliche Bandbreite erforderlich machen.)It is noteworthy that the memory is needed to store coefficients needed for conditioning (see Fig. 17). The memory usage for one embodiment of the context model with conditioning of all neighbors and parents is shown in FIG . A short hem-transformation order is assumed. (An external memory can be used to support a long seam transformation order, which would require both additional memory space and additional bandwidth.)
Die Konditionierung von Elternteilen hohen Niveaus ist besonders aufwendig. Der Niveau-4-DD-Koeffizient für einen gegebenen Baum wird nicht berechnet bis zu 16 Bäume später als die meisten der Niveau-1-DD-Koeffizienten für jenen Baum. Ebenso ist das Speichern ganzer Koeffizienten, die später zu kodieren sind (unschattiert in Fig. 22) viel aufwendiger als nur das Speichern der Schwanz-ein-Information zur späteren Verwendung bei der Konditionierung (kreuz-schraffiert in Fig. 22). Die Konditionie rung von nur der "West"-Information, wobei es sich um denselben Baum handelt, und der Elternteile, die ohne Daten von "West"-Bäumen erzeugt sind, würde den er forderlichen Speicherumfang erheblich reduzieren. Wenn ein Elternteil oder eine West-Information nicht verfügbar waren, ist das Kopieren der Information vom Norden oder Osten nützlich.The conditioning of high-level parents is particularly expensive. The level 4 DD coefficient for a given tree is not calculated up to 16 trees later than most of the level 1 DD coefficients for that tree. Similarly, storing entire coefficients to be coded later (unshaded in Fig. 22) is much more expensive than just storing tail information for later use in conditioning (cross-hatched in Fig. 22). The conditioning of only the "West" information, which is the same tree, and the parent generated without data from "West" trees would significantly reduce the amount of memory required. If a parent or West information was not available, copying the information from the north or east is useful.
Das Kontextmodell, das eine Konditionierung für Vorzeichenbits liefert, ist einfach. Falls das Vorzeichen der obigen Pixel bekannt ist, wird es für die Konditionierung verwendet. Falls das Vorzeichenbit für das obige Pixel unbekannt ist, dann wird das unkodierte Bit (R2(0)) verwendet. Alternativ kann keine Kodierung (R2(0)) für alle Vorzeichenbits verwendet werden.The context model that provides conditioning for sign bits is simple. If the sign of the above pixels is known, it will be for conditioning used. If the sign bit for the above pixel is unknown, then uncoded bit (R2 (0)) is used. Alternatively, no coding (R2 (0)) for all Sign bits are used.
Fig. 23 ist ein Blockdiagramm einer Ausführungsform des Kontextmodells für Vorzei chenbits. Nimmt man Bezug auf Fig. 23, so empfängt ein Multiplexer 2301 ein Nord-Vor zeichenbit 2303 und ein 0-Bit 2304 (verdrahtet) und wird durch ein Nord-Schwanz-ein-Bit 2302 gesteuert, um das Nord-Vorzeichenbit 2303 auszugeben, falls das Nord-Schwanz-ein-Bit 2302 eine 1 ist; ansonsten gibt der Multiplexer 2301 eine 0 aus. Somit liefert das Nordpixel das Nord-Schwanz-ein-Bit 2302 und das Nord-Vorzeichenbit 2303, um einen Kontext für das Pixel südlich des Nordpixels bereitzustellen. Fig. 23 is a block diagram of one embodiment of the context model for flag bits. Referring to Fig. 23, a multiplexer 2301 receives a north flag 2303 and a 0-bit 2304 (wired) and is controlled by a north tail one bit 2302 to output the north sign bit 2303 , if the north tail one bit 2302 is a 1; otherwise, the multiplexer 2301 outputs a 0. Thus, the north pixel provides north tail-a-bit 2302 and north sign bit 2303 to provide a context for the pixel south of the north pixel.
Es wird keine Konditionierung für Schwanzbits verwendet. Bei einer Ausführungsform wird ein fixierter Wahrscheinlichkeitszustand verwendet und keine Wahrscheinlichkeits aktualisierung wird verwendet. Tabelle 7 zeigt drei Optionen für Kodes, die für Schwanzbits zu verwenden sind. Die zweite Option, die R2(1) und R2(0) verwendet, stellt eine gute Wahl dar.No conditioning is used for tail bits. In one embodiment a fixed probability state is used and no probability Update is used. Table 7 shows three options for codes used for Tail bits are to be used. The second option, which uses R2 (1) and R2 (0), is a good choice.
Tabelle 7 - Wahrscheinlichkeitszustände (Kodes), die für Schwanzbits verwendet werdenTable 7 - Probability states (codes) used for tail bits
Bei einer Ausführungsform lautet der Kode gemäß eines goldenen Verhältnisses
("goldenes Verhältnis"-Kode bzw. "Golden Ratio"-Kode), der gut für Wahrscheinlich
keiten von M ≅ 60%, L ≅ 40% ist, wie folgt:
In one embodiment, the code according to a golden ratio ("Golden Ratio" code) that is good for probabilities of M ≅ 60%, L ≅ 40% is as follows:
Die minimale Anzahl der Kontextbins, die in dem System verwendet werden könnten, sind wie folgt. SS, erste Bitebene für jeden Baum, Vorzeichen- und Schwanzbits werden alle nicht kodiert (der verwendete Kode lautet R2(0)). Obwohl kein PEM-Zustand oder ein Bit für ein höchstwahrscheinliches Symbol (MPS) bzw. ein MPS-Bit gespeichert werden muß, muß es eine Logik geben, um den R2(0)-Kode auszuwählen. The minimum number of context bins that could be used in the system are as follows. SS, first bit plane for each tree, sign and tail bits all are not encoded (the code used is R2 (0)). Although no PEM state or Most Probable Symbol (MPS) bit or MPS bit must be stored, there must be some logic to select the R2 (0) code.
Deshalb ist der Hardwareaufwand in Abhängigkeit davon, wie dies gezählt wird, null oder ein Kontextbin. Adaptives Kodieren sollte für Kopfbits verwendet werden. Für weniger wichtige Daten ist, da eine Bitebene zu eine Zeit kodiert wird, das Konditio nieren der Bitebene nicht wichtig. Für die wichtigsten Daten kann die erste Bitebene für jeden Wavelet-Baum die Anzahl der Bitebenen ausreichend reduzieren, so daß Konditionierung der Bitebene nicht wichtig ist. Es ist weniger klar, was die Nützlich keit der Konditionierung des Unterbandes darstellt, aber dies wird ebenfalls in diesem Minimalkontextbeispiel ignoriert werden. Die Schwanz-ein-Bits dieser drei Nachbarn und eines Elternteils könnten für insgesamt vier Bits (16 Kontextbins) verwendet werden. Ein zusätzliches Kontextbin kann für einen Vorherseher bzw. für ein Vorher sehen verwendet werden. (Es kann zweckmäßig sein, die zwei Kopf-Kontextbins zusammen abzubilden, um Platz für das Vorhersehen zu machen, so daß die Speicher größe immer noch eine Potenz von 2 ist).Therefore, the hardware cost is zero depending on how it is counted or a context bin. Adaptive coding should be used for header bits. For less important data is that, as one bit-level is encoded at a time, the condition not important to the bit-plane. For the most important data, the first bit level for each wavelet tree reduce the number of bit planes sufficiently, so that Conditioning the bit-plane is not important. It is less clear what the useful This is also reflected in this sub-band conditioning Minimal context example to be ignored. The tail-a-bits of these three neighbors and one parent could be used for a total of four bits (16 context bins) become. An additional context bin may be for a forerunner or for a before to be used. (It may be convenient to use the two header context bins together to make room for the anticipation, so that the memory size is still a power of 2).
Mit vier Kernen (was eine vierfache Replizierung von Kontexten erforderlich macht) und zwei Kontextspeicherbänken pro Kern würde die minimal zu verwendende Anzahl von Kontextbins zwischen 128 und 144 liegen, und zwar in Abhängigkeit davon, wie "nicht kodierte" Kontexte gezählt werden und ob zwei Kopf-Kontextbins zusammen abgebildet werden bzw. durch Abbildung zusammengebracht werden.With four cores (which requires a four-fold replication of contexts) and two context memory banks per core would be the minimum number to use context bins between 128 and 144, depending on how "non-encoded" contexts are counted and whether two head context bins come together be mapped or brought together by illustration.
Ein System mit einem üppigen Konditionierungsumfang lautet wie folgt:
A system with a lush conditioning scope is as follows:
- - Für SS (9-Bit) und eine erste Bitebene (4 Bit) verwende 4 Kontextbins pro Bit, für insgesamt 52 Kontextbins (dies könnte in Bänke aufgeteilt werden, sie müssen nicht dupliziert werden).For SS (9 bits) and a first bit plane (4 bits) use 4 context bins per bit, for a total of 52 context bins (this could be split into banks, they do not have to be duplicated).
- - Schwanzbits werden nicht kodiert, aber sowohl R2(0) und R2(1) werden ver wendet. In Abhängigkeit davon, wie sie gezählt werden, kostet dies 0, 1 oder 2 Kontextbins.Tail bits are not coded, but both R2 (0) and R2 (1) are ver applies. Depending on how they are counted, this costs 0, 1 or 2 Context bins.
- - Zwei adaptive Kontexte und ein "Kein-Kode"-Kontext werden für die Vorzei chenbits verwendet. - Two adaptive contexts and one "no-code" context are considered to be the best chenbits used.
- - Die Kopfbits können 8 Bits von Nachbarn/Elternteil und 2 Bits für Unterband-/Bit ebenen-Information verwenden (1024 Kontextbins).The header bits can be 8 bits of neighbor / parent and 2 bits for subband / bit use level information (1024 context bins).
- - Ein Kontext wird für Vorhersehen verwendet.- A context is used for predicting.
Eine alternative Ausführungsform eines Kontextmodells einschließlich einer Aus führungsform einer Vorzeichen-/Betragseinheit, die Eingangskoeffizienten in ein Vorzeichen-/Betragsformat konvertiert, ist in der US-Patentanmeldung Nr. 08/498,695, eingereicht am 30. Juni 1995 mit dem Titel "Method and Apparatus for Compression Using Reversible Wavelet Transforms and an Embedded Codestream" und der US-Patentanmeldung Nr. 08/498,036, eingereicht am 30. Juni 1995, mit dem Titel "Re versible Wavelet Transform and Embedded Codestream Manipulation" und ebenso in der US-Patentanmeldung Nr. 08/642,518, eingereicht am 3. Mai 1996, mit dem Titel "Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device-Dependent Parser", und der US-Patentanmeldung Nr. 08/643, 268, eingereicht am 3. Mai 1996, mit dem Titel "Compression/Decompression Using Reversible Embedded Wavelets" beschrieben.An alternative embodiment of a context model including an Off of a sign / amount unit, the input coefficients in a Sign / magnitude format is described in U.S. Patent Application No. 08 / 498,695, filed on 30 June 1995, entitled "Method and Apparatus for Compression Using Reversible Wavelet Transforms and Embedded Codestream "and the U.S. Patent Application No. 08 / 498,036, filed June 30, 1995, entitled "Re versatile wavelet transform and embedded codestream manipulation "and also in U.S. Patent Application Serial No. 08 / 642,518, filed May 3, 1996, entitled "Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device Dependent Parser ", and US Patent Application No. 08/643, 268, filed May 3, 1996, entitled "Compression / Decompression Using Reversible Embedded Wavelets ".
Das Kontextmodell liefert Kontexte für Entropiekodieren der Daten. Bei einer Aus führungsform wird das Entropiekodieren, das durch die vorliegende Erfindung durch geführt wird, durch binäre Entropiekodierer durchgeführt. Ein einziger Kodierer kann verwendet werden, um einen einzigen Ausgabe-Kodestrom zu erzeugen. Alternativ können mehrere (physikalische oder virtuelle) Kodierer verwendet werden, um mehrere (physikalische oder virtuelle) Datenströme zu erzeugen.The context model provides contexts for entropy encoding of the data. On an off The entropy coding that is achieved by the present invention will be described is performed by binary entropy coders. A single encoder can can be used to generate a single output code stream. alternative Multiple (physical or virtual) encoders can be used to multiple to generate (physical or virtual) data streams.
Fig. 24 zeigt die Verwendung von M-ary-Kodieren für die LIC. Die Verwendung von M-ary für ein reduziertes Kodieren arbeitet als ein Vorherseher (wie gezeigt). Als erstes wird der Zustand der nächsten acht Koeffizienten untersucht. Falls irgendetwas in dem Kopf ist, wird ein Entropiekodieren mit den Kopfbits durchgeführt, so daß alle Kopfbits, einer pro Zyklus, entropiekodiert werden, bis alle Kopfbits bei den acht Koeffizienten kodiert sind. Nimmt man Bezug auf Fig. 24, so werden die Kopfbits, die 1 sind, in den ersten und dritten Zyklen kodiert, während die Kopfbits, die 0 sind, in den zweiten und vierten Zyklen kodiert werden. Wenn einmal die Kopfbits entropieko diert sind, werden die Vorzeichen und Schwanzbits in demselben Zyklus kodiert. Zum Beispiel werden in Fig. 24 alle Vorzeichen- und Schwanzbits, die einem Kopfbit, das 1 ist, folgen, in dem fünften Zyklus kodiert. Auf diese Art und Weise wird die Ge samtzahl der Zyklen reduziert. Fig. 24 shows the use of M-ary encodings for the LIC. The use of M-ary for reduced coding works as a forerunner (as shown). First, the state of the next eight coefficients is examined. If there is anything in the header, entropy coding is performed on the header bits so that all header bits, one per cycle, are entropy encoded until all header bits are encoded at the eight coefficients. Referring to Fig. 24, the header bits which are 1 are encoded in the first and third cycles, while the header bits which are 0 are encoded in the second and fourth cycles. Once the header bits are entropic-coded, the sign and tail bits are encoded in the same cycle. For example, in Fig. 24, all sign and tail bits following a header bit which is 1 are encoded in the fifth cycle. In this way, the total number of cycles is reduced.
Fig. 25 ist ein Blockdiagramm einer Ausführungsform des Vorderendes eines Druc kers. Nimmt man Bezug auf Fig. 25, so empfängt ein Aufbereiter bzw. Bildaufbereiter Daten in der Form eine Seitenbeschreibungssprache ("Page Description Language" PDL) oder einer Anzeigeliste. Der Aufbereiter 2501 kann eine Rasterbildverarbeitung umfassen. Für jede Stelle (z. B. jeden Punkt bzw. Spot) bestimmt der Aufbereiter 2501 seine Farbe (z. B. schwarz/weiß, 8-Bit-RGB-Werte, 8-Bit-CMYK-Werte in Abhängig keit von der Anwendung). Die Ausgabe des Aufbereiters 2501 stellt einen Satz von Pixeln dar, die in Bändern formatiert sind und in einem Bandpuffer (Speicher) 2503 gespeichert sind. Fig. 25 is a block diagram of an embodiment of the front end of a printer. Referring to Fig. 25, a renderer receives data in the form of a page description language (PDL) or a display list. The conditioner 2501 may include raster image processing. For each spot (eg, each spot), renderer 2501 determines its color (eg, black and white, 8-bit RGB values, 8-bit CMYK values, depending on the application ). The output of the renderer 2501 represents a set of pixels that are formatted in bands and stored in a band buffer (memory) 2503 .
Bei einer alternativen Ausführungsform werden Daten von einer Seitenbeschreibungs sprache (PDL), wie z. B. Adobe Postscript® oder Microsoft Windows® GDI, zu einer Anzeigeliste bzw. in eine Displayliste aufbereitet. Die Anzeigeliste bzw. Displayliste wird verwendet, um Bänder von Pixeln zu erzeugen. Bei dieser Ausführungsform wird angenommen, daß die Pixel kontinuierliche Tonwerte darstellen, und jegliche Halbton verarbeitung oder Zitterverarbeitung bzw. Dithering, die von der Druckmaschine gefordert wird, wird nach der Dekompression durchgeführt. In an alternative embodiment, data is from a page description language (PDL), such as B. Adobe Postscript® or Microsoft Windows® GDI, to a Display list or prepared in a display list. The display list or display list is used to create bands of pixels. In this embodiment assume that the pixels represent continuous tonal values, and any semitones processing or dithering or dithering by the printing press is required, is performed after decompression.
Bei der vorliegenden Erfindung wird der Speicher, der für den Bandpuffer 2503 verwendet wird, ebenso als Arbeitsraum zur Kompression verwendet (ohne den er forderlichen Speicher zu erhöhen). Diese duale Verwendung wird detaillierter im folgenden beschrieben.In the present invention, the memory used for the band buffer 2503 is also used as a work space for compression (without increasing the required memory). This dual use will be described in more detail below.
Der Kompressor 2504 komprimiert jedes Band von Pixel. Falls die Eingabe des Kompressors 2504 Halbton- oder Zitterpixel ("dithered pixels") darstellt, würde der Kompressor 2504 immer noch arbeiten, aber die erzielte Kompression wäre wahr scheinlich mit Wavelet-Prozessen schlecht. Ein binäres Kontextmodell kann bei Halbton- oder Zitterpixeln verwendet werden. Der Kompressor 2504 schreibt die komprimierten Daten auf die Disk 2505. Die Disk bzw. Platte 2505 kann eine Fest platte sein. Bei einer alternativen Ausführungsform kann es sich bei der Disk 2505 um einen Speicher mit wahlfreiem Zugriff (RAM), einen Flash-Speicher, eine optische Disk, jeden Typ von Speichereinrichtung oder jeden Typ von Kommunikationskanal handeln.The compressor 2504 compresses each band of pixels. If the input of the compressor 2504 represents dithered pixels, the compressor 2504 would still operate, but the compression achieved would probably be poor with wavelet processes. A binary context model can be used with halftone or dither pixels. The compressor 2504 writes the compressed data to the disk 2505 . The disk 2505 may be a hard disk. In an alternative embodiment, the disk 2505 may be a random access memory (RAM), a flash memory, an optical disk, any type of memory device, or any type of communication channel.
Fig. 26 ist ein Blockdiagramm einer Ausführungsform des Hinterendes des Druckers. Nimmt man Bezug auf Fig. 26, so umfaßt das Hinterende des Druckers 2500 einen Dekompressor 2602, der an die Disk bzw. Platte 2505, einen Bandpuffer (Speicher) 2603 und eine Druckmaschine 2604 angeschlossen ist. Der Dekompressor 2602 liest komprimierte Daten von der Festplatte 2505 und dekomprimiert sie. Die dekom primierten Daten werden in dem Bandpuffer (Speicher) 2603 in der Gestalt von Pixeln gespeichert. Bei dem Bandpuffer 2603 kann es sich um denselben Speicher, wie dem Bandpuffer 2503 handeln, um als ein Arbeitsraum für den Kompressor 2504 zu arbei ten. Der Dekompressor 2602 hält den Bandpuffer 2603 ausreichend voll, so daß die Pixel zu der Druckmaschine 2604 in Echtzeit gesendet werden können. Fig. 26 is a block diagram of one embodiment of the rear end of the printer. Referring to Fig. 26, the rear end of the printer 2500 includes a decompressor 2602 connected to the disk 2505 , a tape buffer (memory) 2603, and a printing machine 2604 . The decompressor 2602 reads compressed data from the hard disk 2505 and decompresses it. The decompressed data is stored in the band buffer (memory) 2603 in the form of pixels. In the band buffer 2,603th it may be the same memory as the band buffer 2503, as a working space for the compressor 2504 to processing th The decompressor 2602 keeps the band buffer 2603 has sufficient power so that the pixels sent to the printing press in 2604 in real time can be.
Fig. 27 stellt eine alternative Ausführungsform dar, die eine optionale Verbesserung enthält. Nimmt man Bezug auf Fig. 27, so laufen Pixel von dem Dekompressor 2602 zu dem Bandpuffer 2603 über einen Verbesserungsblock 2705, während eine andere Information, die die Information ist, die noch nicht Pixel (Teil-Koeffizienten) ist, direkt zu dem Bandpuffer 2603 gesendet wird. Ein Verbesserungsblock 2705 kann derartige Funktionen durch Interpolation, Glätten, Fehlerdiffusion, Halbtönen und/oder Zitterver arbeitung durchführen. Fig. 27 illustrates an alternative embodiment incorporating an optional enhancement. Referring to Figure 27, pixels from the decompressor 2602 pass to the band buffer 2603 via an enhancement block 2705 , while other information, which is the information that is not yet pixels (sub-coefficients), goes directly to the band buffer 2603 is sent. An improvement block 2705 may perform such functions by interpolation, smoothing, error diffusion, halftone and / or Zitterver processing.
Die benötigte Bandbreite zwischen dem Dekompressor 2602 und dem Bandpuffer 2603 erlaubt es dem Dekompressor 2602, zuerst die Transformationskoeffizienten zu dem Bandpuffer 2603 zu schreiben, auf den Bandpuffer 2603 zuzugreifen, um gewisse Koeffizienten zu erhalten und die inverse Transformation mit derartigen Koeffizienten durchzuführen und sie dann zurück zu dem Bandpuffer 2603 zu schreiben. Bemerkens wert ist, daß der Bandpuffer 2603 als ein Arbeitsspeicher klein sein kann. Zum Bei spiel, falls ein Vollseitenbild 64 Megabyte ist und ein Bandpuffer 2603 16 Megabyte ist, würde er immer noch als kleiner Arbeitsspeicher betrachtet werden.The required bandwidth between the decompressor 2602 and the band buffer 2603 allows the decompressor 2602 to write out the transformation coefficients to the band buffer 2603 to access the band buffer 2603 to obtain certain coefficients and perform the inverse transformation with such coefficients and then back to write to the tape buffer 2603 . Noteworthy is that the band buffer 2603 may be small as a working memory. For example, if a full page image is 64 megabytes and a tape buffer 2603 is 16 megabytes, it would still be considered a small memory.
Bei einer Ausführungsform erfordern A4-Bilder mit 400 dpi mit 32 Bits/Pixel (vier 8-Bit-Komponenten, CMYK) ungefahr 8 Seiten/Minute eine Datenrate von ungefähr 8 Mbytes/s von dem Bandpuffer 2603 zur Druckmaschine bzw. zum Drucker 2604. Die Übertragungsrate einer beispielhaften Festplatte liegt bei ungefähr 2 Mbytes pro Sekunde (z. B. 1,7-3,5 Mbytes/s). Deshalb ist eine typische Kompressionsrate von ungefähr 4 : 1 erforderlich, um die Bandbreite der Disk 2601 an die Bandbreite des Druckers anzupassen. Bei einer Ausführungsform sind der Kompressor 2504 in der Fig. 25 und der Dekompressor 2602 in der Fig. 26 oder 27 in einem einzigen integrier ten Schaltungschip enthalten.In one embodiment, 400 dpi, 32 bit / pixel (four 8-bit components, CMYK) A4 images require approximately 8 Mbps data rate from the tape buffer 2603 to the print engine or printer 2604 at approximately 8 pages / minute. The transfer rate of an exemplary hard disk is about 2 Mbytes per second (eg, 1.7-3.5 Mbytes / s). Therefore, a typical compression rate of about 4: 1 is required to match the bandwidth of the disk 2601 to the bandwidth of the printer. In one embodiment, the compressor 2504 in FIG. 25 and the decompressor 2602 in FIG. 26 or 27 are contained in a single integrated circuit chip.
Fig. 28 ist ein Blockdiagramm einer Ausführungsform eines integrierten Schaltungs-(IC)-Chips, der die Drucker-Kompression/-Dekompression enthält. Nimmt man Bezug auf Fig. 28, so ist das Pixeldaten-Interface 2801 mit dem Bandpuffer (nicht gezeigt) verbunden. Das Pixeldaten-Interface bzw. die Pixeldaten-Schnittstelle 2801 ist mit dem Bandpuffer (nicht gezeigt) verbunden. Die Pixeldaten-Schnittstelle 2801 erzeugt Adressen zum Lesen und Schreiben vom Pixeln von und zu dem Bandpuffer, und zwar jeweilig. Ein optionaler reversibler Farbraum 2802 kann enthalten sein, um eine reversible Farbraumkonversion durchzuführen. Die Koeffizientendaten-Schnittstelle 2804 erzeugt Adressen zum Lesen und Schreiben von Koeffizienten und stellt korrekt zwei Byte-Koeffizienten zusammen. Die Koeffizientendaten-Schnittstelle 2804 handhabt zusammen mit der Pixeldaten-Schnittstelle 2801 jegliches Zeilenpuffern oder Koeffi zientenpuffern, das in einem externen Speicher erforderlich ist. Die Koeffizientendaten-Schnitt stelle 2804 und die Verwendung eines reversiblen Farbraums wird im folgenden detaillierter diskutiert. Fig. 28 is a block diagram of one embodiment of an integrated circuit (IC) chip incorporating printer compression / decompression. Referring to Fig. 28, the pixel data interface 2801 is connected to the band buffer (not shown). The pixel data interface or pixel data interface 2801 is connected to the band buffer (not shown). The pixel data interface 2801 generates addresses for reading and writing the pixels from and to the band buffer, respectively. An optional reversible color space 2802 may be included to perform a reversible color space conversion. The coefficient data interface 2804 generates addresses for reading and writing coefficients and correctly assembles two byte coefficients. Coefficient data interface 2804, along with pixel data interface 2801, handles any line buffers or coefficient buffers required in external memory. The coefficient data interface 2804 and the use of a reversible color space will be discussed in more detail below.
Bemerkenswert ist, daß die Doppelpfeile implizieren, daß die Daten in beide Richtun gen fließen können. Zum Beispiel bewegen sich beim Komprimieren der Daten die Daten von links nach rechts durch die verschiedenen Komponenten des IC-Chips. Auf der anderen Seite bewegen sich, wenn die Daten komprimiert werden, die Daten im allgemeinen von rechts nach links.It is noteworthy that the double arrows imply that the data in both directions can flow. For example, when compressing the data, the Data from left to right through the various components of the IC chip. On On the other hand, when the data is compressed, the data moves in the general from right to left.
Wenn die Daten kodiert werden, werden die Pixeldaten von der Pixeldaten-Schnittstelle 2801 oder dem reversiblen Farbraum 2802 (falls enthalten) von dem Wavelet-Trans formationsblock 2803 empfangen, der die Wavelet-Transformation mit den Pixeldaten durchführt. Bei einer Ausführungsform stellt die Transformation, die von dem Wavelet-Trans formationsblock 2803 durchgeführt wird, eine überlappte Wavelet-Transformation dar. Sie stellt eine Energieverdichtung sowohl für die verlustfreie als auch für die verlustbehaftete Bildkompression bereit. Für die verlustbehaftete Kompression werden die Blockgrenzen-Artifakte, die JPEG-Plaguen, vermieden. Die Filterkoeffizienten werden so normalisiert, wenn sie richtig ausgerichtet sind, daß eine skalare Quantisie rung gute Ergebnisse bei verlustbehafteter Komprimierung bereitstellen. Bei einer Ausführungsform führt der Wavelet-Transformationsblock 2803 eine 2, 6-Transforma tion durch. Bei einer anderen Ausführungsform führt der Wavelet-Transformations block 2803 eine 2,10-Transformation durch. Der Wavelet-Transformationsblock 2803 kann andere gut bekannte Transformationen durchführen. Verschiedene Implementatio nen des Wavelet-Transformationsblocks 2803 werden detaillierter im folgenden be schrieben.When the data is encoded, the pixel data from the pixel data interface 2801 or the reversible color space 2802 (if included) is received by the wavelet transform block 2803 , which performs the wavelet transform on the pixel data. In one embodiment, the transformation performed by the wavelet transform block 2803 represents an overlapped wavelet transform. It provides energy compression for both lossless and lossy image compression. For lossy compression, the block boundary artifacts, the JPEG plagues, are avoided. The filter coefficients are normalized, if properly aligned, to provide scalar quantization with good results in lossy compression. In one embodiment, the wavelet transform block 2803 performs a 2, 6 transform. In another embodiment, the wavelet transform block 2803 performs a 2.10 transformation. Wavelet transform block 2803 may perform other well known transforms. Various implementations of the wavelet transform block 2803 will be described in more detail below.
Die Koeffizientenausgabe von dem Wavelet-Transformationsblock 2803 kann zurück zu dem Speicher geschrieben werden (z. B. der Bandpuffer), und zwar über die Koeffizien tendaten-Schnittstelle 2804 zum späteren Kodieren. Bei einer Ausführungsform sind die Daten, die zu dem Speicher zurückgeschrieben werden, weniger wichtige Daten und werden im folgenden detaillierter beschrieben. Derartige Daten werden später in den IC-Chip zurückgelesen und kodiert.The coefficient output from the wavelet transform block 2803 may be written back to the memory (e.g., the band buffer) via the coefficient interface 2804 for later encoding. In one embodiment, the data that is written back to the memory is less important data and will be described in more detail below. Such data is later read back into the IC chip and encoded.
Die Koeffizienten, die von dem Wavelet-Transformationsblock 2803 ausgegeben werden oder die über die Koeffizientendaten-Schnittstelle 2804 empfangen werden, werden dem Kontextmodell 2805 bereitgestellt. Das Kontextmodell 2805 stellt den Kontext zum Kodieren (und Dekodieren) von Daten bereit, und zwar unter Verwen dung des Kodierers/Dekodierers 2806. Bei einer Ausführungsform unterstützt das Kontextmodell 2805 das Senden von Daten direkt zum Kodieren. Auf diese Art und Weise arbeitet das Kontextmodell 2805 als das wichtigste Kontextmodell. Ein Ar chitektur zum Implementieren verschiedener Kontextmodelle wurde oben beschrieben.The coefficients output from the wavelet transform block 2803 or received via the coefficient data interface 2804 are provided to the context model 2805 . The context model 2805 provides the context for encoding (and decoding) data using the encoder / decoder 2806 . In one embodiment, the context model 2805 supports sending data directly for encoding. In this way, the context model 2805 works as the most important context model. An architecture for implementing various context models has been described above.
Bei einer Ausführungsform umfaßt der Kodierer/Dekodierer 2806 einen Hochgeschwin digkeitsparallelkodierer. Der Hochgeschwindigkeitsparallelkodierer handhabt ver schiedene Bits parallel. Bei einer Ausführungsform wird der Hochgeschwindigkeitspar allelkodierer in einer VLSI-Hardware oder einem Multiprozessor-Computer realisiert, ohne die Kompressionsleistungsfähigkeit zu opfern. Eine Ausführungsform eines Hochgeschwindigkeitsparallelkodierers, die bei der vorliegenden Erfindung verwendet werden kann, ist in dem US-Patent Nr. 5,381,145 beschrieben, das den Titel "Method and Apparatus for Parallel Decoding and Encoding of Data" trägt und am 10. Januar 1995 herausgegeben wurde. In one embodiment, the encoder / decoder 2806 includes a high speed parallel encoder. The high speed parallel coder handles different bits in parallel. In one embodiment, the high speed economy encoder is implemented in a VLSI hardware or a multiprocessor computer without sacrificing compression performance. One embodiment of a high speed parallel coder which can be used in the present invention is described in U.S. Patent No. 5,381,145, entitled "Method and Apparatus for Parallel Decoding and Encoding of Data", issued January 10, 1995.
Bei alternativen Ausführungsformen umfaßt der binäre Entropiekodierer entweder einen Q-Kodierer, einen QM-Kodierer, einen FSM-Kodierer usw. Die Q- und QM-Kodierer sind gut bekannt und stellen effiziente binäre Entropiekodierer dar. Die FSM-Kodierer stellen die einfachste Konversion von einer Wahrscheinlichkeit und einem Ergebnis ("outcome") zu einem komprimierten Bitstrom dar. Bei einer Ausführungsform wird der FSM-Kodierer realisiert, indem Nachschlagtabellen sowohl für einen Dekodierer als auch einen Kodierer verwendet werden. Eine Vielfalt von Wahrscheinlichkeits schätzverfahren können bei einem derartigen FSM-Kodierer verwendet werden. Bei einer Ausführungsform umfaßt der FSM-Kodierer der vorliegenden Erfindung einen B-Kodierer, der in dem US-Patent Nr. 5,272,478 mit dem Titel "Method and Apparatus for Entropy Coding", herausgegeben am 21. Dezember 1993, definiert ist.In alternative embodiments, the binary entropy encoder comprises either one Q encoders, a QM encoder, an FSM encoder, etc. The Q and QM encoders are well known and represent efficient binary entropy coders. The FSM coders Provide the simplest conversion of a probability and a result ("outcome") to a compressed bit stream. In one embodiment the FSM encoder realizes look-up tables for both a decoder as well as a coder can be used. A variety of probability Estimation methods can be used with such a FSM encoder. at In one embodiment, the FSM encoder of the present invention comprises a B coder disclosed in U.S. Patent No. 5,272,478 entitled "Method and Apparatus for Entropy Coding ", issued December 21, 1993.
Die Ausgabe des Kodierers/Dekodierers 2806 ist mit der Schnittstelle 2807 für kodierte Daten verbunden, die eine Schnittstelle zu der Disk oder einem anderen Speichermedi um oder sogar einem anderen Kanal bereitstellt.The output of the encoder / decoder 2806 is connected to the coded data interface 2807 , which provides an interface to the disk or other storage medium or even another channel.
Die Schnittstelle 2807 für kodierte Daten sendet und empfängt kodierte Daten von der Disk. Bei einer Ausführungsform kann, falls der SCSI-Kontroller bzw. die SCSI-Steuereinrichtung in dem Chip enthalten ist, er bzw. sie an dieser Stelle realisiert bzw. implementiert werden. Bei einer anderen Ausführungsform steht das Interface 2807 für kodierte Daten mit einem externen SCSI-Kontroller in Verbindung. Ein Nicht-SCSI-Speicher oder -Kommunikation kann verwendet werden.The coded data interface 2807 sends and receives coded data from the disc. In one embodiment, if the SCSI controller or controller is included in the chip, it may be implemented at that location. In another embodiment, the coded data interface 2807 communicates with an external SCSI controller. Non-SCSI memory or communication can be used.
Während der Dekompression werden kodierte Daten von dem Kodierer/Dekodierer 2806 von der Disk (oder einem anderen Speicher oder Kanal) über das Interface 2807 für kodierte Daten empfangen und darin dekomprimiert, wobei Kontexte von dem Kontextmodell 2805 verwendet werden. Die Koeffizienten, die sich aus der Dekom pression ergeben, werden invers durch den Wavelet-Transformationsblock 2803 transformiert. (Bemerkenswert ist, daß, obwohl ein Wavelet-Transformationsblock 2803 sowohl Vorwärts- als auch Inverstransformationen bei einer Ausführungsform durchführt, bei anderen Ausführungsformen die zwei Transformationen durch separate Blöcke durchgeführt werden können.) Die Ausgabe des Transformationsblockes 2803 umfaßt Pixel, die jegliche optionale Farbraumkonversion durchmachen und die zu dem Bandpuffer über das Pixeldaten-Interface 2801 ausgegeben werden.During decompression, encoded data is received by the encoder / decoder 2806 from the disk (or other memory or channel) via the encoded data interface 2807 and decompressed therein using contexts from the context model 2805 . The coefficients resulting from the decompression are inversely transformed by the wavelet transform block 2803 . (Note that although a wavelet transform block 2803 performs both forward and inverse transforms in one embodiment, in other embodiments, the two transforms may be performed by separate blocks.) The output of the transform block 2803 includes pixels undergoing any optional color space conversion and output to the band buffer via the pixel data interface 2801 .
Die grundsätzliche Zeitsteuerung des Systems während des Ausdruckens ist in Fig. 29 gezeigt. Nimmt man Bezug auf Fig. 29, so werden die kodierten Daten von jeder Kodiereinheit von der Disk gelesen. Es werden so viel wie möglich Daten gelesen und nach einer kurzen Verzögerung werden Koeffizienten dekodiert. Nachdem das Deko dieren vollendet ist, wird die inverse Wavelet-Transformation berechnet. Nachdem die Transformation vollendet ist, können die Pixel zu dem Druckgerät gesendet werden. Bemerkenswert ist, daß die Kreuzschraffur in Fig. 29 anzeigt, wenn verschiedene Aktionen für eine spezifische Kodiereinheit auftreten.The basic timing of the system during printing is shown in FIG . Referring to Fig. 29, the coded data from each coding unit is read from the disc. As much data as possible is read and after a short delay coefficients are decoded. After the decoding is completed, the inverse wavelet transform is calculated. After the transformation is completed, the pixels can be sent to the printing device. It is noteworthy that the cross-hatching in Fig. 29 indicates when various actions occur for a specific coding unit.
Fig. 10 zeigt die Organisation der kodierten Daten bei der vorliegenden Erfindung. Nimmt man Bezug auf Fig. 10, so werden die wichtigsten Daten 1003 in Koeffizienten reihenfolge kodiert (nicht eingebettet), und zwar unmittelbar, nachdem sie transformiert worden sind. Deshalb müssen diese Daten nicht gepuffert werden. Bei einer Aus führungsform wird der Umfang der wichtigsten Daten 1003 so begrenzt, daß er immer von der Disk gelesen werden kann. Fig. 10 shows the organization of coded data in the present invention. Referring to Fig. 10, the most important data 1003 is encoded in coefficient order (not embedded) immediately after being transformed. Therefore, these data do not need to be buffered. In one embodiment, the amount of key data 1003 is limited so that it can always be read from the disc.
Ein gewisser Umfang an weniger wichtigen Daten 1004 wird gepuffert, eingebettet und zu der Disk in der Wichtigkeitsordnung bzw. in der Reihenfolge der Wichtigkeit geschrieben. Die Datenmenge, die gepuffert, eingebettet und geschrieben werden kann, wird basierend auf der Übertragungszeit bestimmt. Das heißt, das System liest die Daten, bis die Übertragungszeit von der Disk erschöpft ist. Die Übertragungsrate der Disk bestimmt, wieviele Daten behalten werden. Diese Raten sind bekannt und von physikalischen Charakteristiken einer bestimmten Übertragung abhängig. A certain amount of less important data 1004 is buffered, embedded and written to the disk in order of importance. The amount of data that can be buffered, embedded, and written is determined based on the transmission time. That is, the system reads the data until the transfer time from the disk is exhausted. The transfer rate of the disc determines how much data is retained. These rates are known and dependent on physical characteristics of a particular transmission.
Für schwer zu komprimierende Bilder können manche Daten während der Kodierzeit weggelassen werden. Die Daten werden als am wenigsten wichtige Daten 1005 gezeigt. In dem Fall, daß es keine Möglichkeit gibt, daß die am wenigstens wichtigen Daten unter der Voraussetzung der bestmöglichen Disk-Übertragungsrate gelesen werden können, gibt es keinen Grund, jene Daten auf der Disk zu speichern. Für viele und vielleicht für die meisten Bilder würden keine Daten weggelassen bzw. gelöscht werden.For images that are difficult to compress, some data may be omitted during the encoding time. The data is shown as least important data 1005 . In the case where there is no possibility that the least important data can be read on the assumption of the best possible disk transfer rate, there is no reason to store that data on the disk. For many and perhaps most images, no data would be deleted or deleted.
Das Ordnen von kodierten Daten und wie es bewerkstelligt wird, wird im folgenden genauer beschrieben.The ordering of coded data and how it is accomplished will be described below described in more detail.
Im folgenden wird das Bandpuffer-Management während der Kompression und Dekom pression diskutiert, und zwar gefolgt durch eine Beschreibung des Einbettungsschemas für die kodierten Daten. Hardwareimplementationen der Transformation, des Kon textmodells und des Parallelismus mit dem Kodierer/Dekodierer werden ebenfalls beschrieben.The following is the band buffer management during compression and decom followed by a description of the embedding scheme for the encoded data. Hardware implementations of the transformation, the Kon Text model and the parallelism with the encoder / decoder are also described.
Fig. 30 zeigt eine mögliche Ausführungsform, wie Pixeldaten organisiert werden. Nimmt man Bezug auf Fig. 30, so wird eine Seite (Bild) 3000 in Bänder 3001 bis 3004 aufgeteilt. Bei einer Ausführungsform kann die Seite 3000 eine Seitenbeschreibungs sprache oder eine Anzeigenlisten-Beschreibung bzw. Display-List-Beschreibung einer Seite, die zur Erzeugung von Pixeln für die einzelnen Bänder verwendet wird, umfas sen. Bei einer Ausführungsform wird jedes Band 3001 bis 3004 individuell gerastert, indem eine Anzeigenlisten-Technologie verwendet wird. Jedes Band 3001 bis 3004 wird weiter in Kodiereinheiten aufgeteilt (z. B. 3001A-D). Fig. 30 shows one possible embodiment of how pixel data is organized. Referring to Fig. 30, one page (picture) 3000 is divided into bands 3001 to 3004 . In one embodiment, page 3000 may include a page description language or a display list description of a page used to generate pixels for the individual bands. In one embodiment, each band is individually rasterized 3001 to 3004 by a display list technology is used. Each band 3001 to 3004 is further divided into coding units (eg, 3001 A-D).
Ein Vorteil bei der Verwendung mehrerer Kodiereinheiten pro Band ist, daß Abschnitte des Bandpuffers in Rotation bzw. rotierend als Arbeitsspeicher während der Dekom pression (ähnlich dem Pingpong-Puffern) verwendet werden können. Mit anderen Worten, ein Teil der Pixel kann dekomprimiert, in dem Bandpuffer gespeichert und zu dem Drucker gesendet werden, während ein zweiter Teil des Bandpuffers als Arbeits speicher verwendet werden kann, um Koeffizient zu speichern, während dekodiert wird, wobei ein dritter Teil des Puffers verwendet wird, um die Pixel zu speichern, die den Koeffizienten entsprechen.An advantage of using multiple encoding units per band is that sections the tape buffer in rotation or rotating as memory during the decom Pressing (similar to the ping pong buffers) can be used. With others In other words, some of the pixels may be decompressed, stored in the tape buffer, and too while the second part of the tape buffer is working Memory can be used to store coefficient while decoded where a third part of the buffer is used to store the pixels correspond to the coefficients.
Fig. 31 zeigt einen Bandpuffer 3101 der Seite 3100. Der Bandpuffer 3101 umfaßt Kodiereinheiten 3001A-D. Die Kodiereinheiten 3101A und 3101B wirken als Arbeits speicher für den Dekompressor, um Koeffizienten zu speichern. Die Kodiereinheit 3101C speichert Pixel, die zu dem Drucker (oder Kanal) ausgegeben werden sollen, während die Kodiereinheit 3101D als ein Arbeitsraum für den Dekompressor arbeitet, indem die nächsten Pixel gespeichert werden. FIG. 31 shows a band buffer 3101 of page 3100 . The band buffer 3101 comprises coding units 3001 A-D. The coding units 3101 A and 3101 B act as working memory for the decompressor to store coefficients. The encoding unit 3101C stores pixels to be output to the printer (or channel) while the encoding unit 3101D operates as a work space for the decompressor by storing the next pixels.
Die Abschnitte des Bandpuffers 3101 können in Rotation verwendet werden, wenn die ganze Seite 3100 gedruckt wird. Zum Beispiel sind für die nächste Kodiereinheit die Pixel in der Kodiereinheit 3101D die Pixel, die zu dem Drucker ausgegeben werden sollen. Wenn diese auftritt, werden die Kodiereinheiten 3101B und 3101C als Arbeits raum für den Dekompressor verwendet werden, um Koeffizienten zu speichern. Ebenso wird zu jener Zeit eine Kodiereinheit 3101A als Arbeitsspeicher für den Dekompressor verwendet werden, um die nächsten Pixel, die zu dem Drucker ausgegeben werden sollen, zu speichern.The portions of the tape buffer 3101 may be used in rotation when the entire page 3100 is printed. For example, for the next encoding unit, the pixels in the encoding unit 3101D are the pixels to be output to the printer. When this occurs, the encoder units 3101 B and 3101 C will be used as the working space for the decompressor to store coefficients. Also at that time, a coding unit 3101A will be used as the working memory for the decompressor to store the next pixels to be output to the printer.
Bei der vorliegenden Erfindung sind die Koeffizienten größer als die Pixel. Deshalb wird doppelt so viel Speicher zu dem Arbeitsraumspeicher zugeordnet. Bei einer alternativen Ausführungsform können die Bänder in mehr oder weniger Kodiereinheiten aufgeteilt werden. Zum Beispiel können bei einer Ausführungsform die Bänder in acht Kodiereinheiten jeweils aufgeteilt werden. In the present invention, the coefficients are larger than the pixels. That's why twice as much memory is allocated to the workspace memory. At a Alternatively, the bands may be in more or less coding units be split. For example, in one embodiment, the bands may be in eight Coding units are each divided.
Zusammen managen die Pixeldaten-Schnittstelle und die Koeffizientendaten-Schnittstelle den Bandpufferspeicher effizient. Falls ein Schnellseitenmodus-DRAM, ein EDO-DRAM oder andere Speicher verwendet werden, die einen aufeinanderfolgenden Zugriff begünstigen, dann übertragen diese Schnittstellen Daten von aufeinanderfolgen den Adressen in ausreichend langen Bursts, um die potentielle Bandbreite des Speichers effizient zu nutzen. Manche Puffer können benötigt werden, um Burst-Zugriffe bzw. diskontinuierliche Zugriffe zu aufeinanderfolgenden Adressen zu unterstützen.Together, the pixel data interface and the coefficient data interface manage the tape buffer efficiently. If a fast-page mode DRAM, an EDO DRAM or other memories are used, which are consecutive Access, then these interfaces transmit data from one another the addresses in long enough bursts to the potential bandwidth of the memory efficient to use. Some buffers may be needed to handle burst accesses or to support discontinuous access to consecutive addresses.
Fig. 32 zeigt ein Zeitablaufdiagramm des Dekodierens, das Speicherzugrifferforder nisse für einen gleichzeitigen Speicherzugriff bzw. parallelen Speicherzugriff zeigt. Nimmt man Bezug auf Fig. 32, so ist die Bandbreite, die zum Dekodieren erforderlich ist, wie folgt. Man erinnere sich daran, daß bei einer Ausführungsform ein 2-MHz-Pixeltakt ein 8-MHz-Komponententakt und ein 32-MHz-Dekodertakt verwendet wurden und daß der Drucker 1 Byte/Komponententakt benötigt, die Transformation liest zwei Bytes pro Koeffizient und schreibt ein Byte pro Komponente. Falls die Transformation in der halben Kodiereinheitszeit durchgeführt wird, würde dies einen 6 Byte/Kompo nententakt erforderlich machen. Die Geschwindigkeit der Transformation ist durch die Speicherbandbreite beschränkt, nicht durch die Berechnungszeit. Falls eine Bandbreite eines 24 Byte/Komponententakt verfügbar ist, kann die Transformation innerhalb eines Achtels der Kodiereinheitszeit berechnet werden. Die Transformation kann eine zusätzliche Bandbreite benötigen, falls ein externer Speicher für Säume verwendet wird. Bei einer Ausführungsform braucht das Kodieren von Koeffizienten das Schrei ben von zwei Bytes pro Komponententakt für den wichtigsten Teil der kodierten Daten. Ein Dekodieren erfordert ein Lesen und ein Schreiben eines Bytes pro Komponenten takt für jede Bitebene des weniger wichtigen Teils der kodierten Daten. Bemerkenswert ist, daß dies bei manchen Ausführungsformen weniger sein kann. Bandbreiten von 4 Bytes pro Komponententakt und 24 Bytes pro Komponententakt würden jeweilig benötigt werden, falls beide Operationen die halbe Kodiereinheitszeit benötigen. Eine zusätzliche Bandbreite kann erforderlich sein, falls ein externer Speicher für eine Kontext-Sauminformation verwendet wurde. Figure 32 is a timing diagram of decoding showing memory access requirements for concurrent memory access and parallel memory access, respectively. Referring to Fig. 32, the bandwidth required for decoding is as follows. Recall that in one embodiment, a 2 MHz pixel clock, an 8 MHz component clock, and a 32 MHz decoder clock were used and that the printer requires 1 byte / component clock, the transform reads two bytes per coefficient and writes Byte per component. If the transformation is performed in half the encoding unit time, this would require a 6 byte / component clock. The speed of the transformation is limited by the memory bandwidth, not the computation time. If a bandwidth of a 24 byte / component clock is available, the transform can be calculated within one eighth of the encoder unit time. The transformation may require extra bandwidth if external memory is used for seams. In one embodiment, encoding coefficients requires writing two bytes per component clock for the most significant part of the encoded data. Decoding requires reading and writing one byte per component clock for each bitplane of the less important part of the encoded data. It should be noted that in some embodiments this may be less. Bandwidths of 4 bytes per component clock and 24 bytes per component clock would respectively be required if both operations require half the encoder unit time. Additional bandwidth may be required if external memory was used for context seam information.
Bei einer Ausführungsform beträgt die maximale Burst-Mode-Übertragungsrate vier Speicherzugriffe pro Komponententakt (ein Zugriff pro Kodierertakt). Deshalb ist bei einem 32-Bit-Datenbus die maximale Übertragungsrate etwas kleiner als 16 Bytes/Kom ponententakt. Mit einem 64-Bit-Datenbus ist die maximale Übertragungsrate etwas geringer als 32 Bytes/Komponententakt.In one embodiment, the maximum burst mode transmission rate is four Memory accesses per component clock (one access per encoder clock). That's why For a 32-bit data bus, the maximum transfer rate is slightly less than 16 bytes / com ponententakt. With a 64-bit data bus, the maximum transfer rate is something less than 32 bytes / component clock.
Jedes Bit eines jeden Koeffizienten in dem LIC benötigt ein Lesen und ein Schreiben des externen Speichers während des Dekodierens (ein Kodieren benötigt nur ein Lesen). Diese Speicherzugriffe machen die Mehrheit der erforderlichen Speicherband breite aus. Bei einer Ausführungsform speichert die vorliegende Erfindung, anstatt daß sie jeden LIC-Koeffizienten in 8 Bits speichert, die Koeffizienten, wobei weniger als 8 Bits, wenn möglich, verwendet werden, um die Bandbreiten-Erfordernisse zu redu zieren.Each bit of each coefficient in the LIC requires reading and writing of the external memory during decoding (encoding requires only one Read). These memory accesses make up the majority of the required memory tape wide out. In one embodiment, instead of that, the present invention stores it stores each LIC coefficient in 8 bits, the coefficients being less than 8 bits, if possible, are used to reduce the bandwidth requirements adorn.
Tabelle 8 zeigt, wieviel Speicher benötigt wird, um die LIC-Koeffizienten für das Dekodieren einer jeden Bitebene zu speichern. Nimmt man Bezug auf Tabelle 8, wenn man den MIC abhandelt bzw. tut, wird ein Bit pro Koeffizient geschrieben, welches das Schwanz-ein-Bit ist. Was für die Bitebene 5 geschrieben wird, wird für die Bit ebene 4 zurückgelesen: 2 bis 3 Bits, die das Schwanz-ein-Bit, was Bit 5 war, und ob Bit 5 1 war, dann ein Vorzeichenbit enthalten. Der Prozentsatz zeigt für jede Bitebene an, welcher Prozentsatz der Koeffizienten teilnimmt. Dies kann dadurch klarer gemacht werden, indem man auf die Fig. 13B schaut. Nimmt man Bezug auf die Fig. 13B, so hat die Bitebene 5 Koeffizienten von allen teilnehmenden Unterbändern, weil alle Koeffizienten von den DD1- bis zu den DS4- und SD4-Unterbändern Daten in der Bitebene 5 haben (wie durch eine Schattierung angedeutet ist). Die Bitebene 0 hat nur Koeffizienten von dem DD1-Unterband. Wie in Tabelle 8 gezeigt ist, haben beide Bitebenen 4 und 5 Koeffizienten von allen Unterbändern, so daß der Prozentsatz 100% ist, während die Bitebene 0 nur 25% der Koeffizienten hat (in dem DD1-Unterband). Wenn mehr Dekodieren auftritt, werden manche Bitebenen vollendet, bevor eine Bitebene 0 erreicht wird.Table 8 shows how much memory is needed to store the LIC coefficients for decoding each bitplane. Referring to Table 8, when dealing with the MIC, one bit is written per coefficient, which is the tail-one-bit. What is written for the bit-plane 5 is read back for bit-level 4: 2 to 3 bits, which was the tail-a-bit, which was bit 5, and if bit 5 was 1, then a sign bit. The percentage indicates for each bit level what percentage of the coefficients participate. This can be made clearer by looking at Fig. 13B. Referring to Fig. 13B, the bit plane 5 has coefficients of all participating subbands because all the coefficients from the DD1 to the DS4 and SD4 subbands have data in the bit plane 5 (as indicated by shading). , The bitplane 0 has only coefficients from the DD1 subband. As shown in Table 8, both bit-planes 4 and 5 have coefficients of all subbands, so that the percentage is 100%, while bit-plane 0 has only 25% of the coefficients (in the DD1 sub-band). As more decodes occur, some bit-planes are completed before a bit-level 0 is reached.
Tabelle 8 - Erforderliche Bits, um LIC-Koeffizienten während des Dekodierens zu speichernTable 8 - Required bits to store LIC coefficients during decoding
In Tabelle 8 ist während des Beginns des Dekodierens kein Dekodieren der Bitebenen aufgetreten; deshalb wird nur ein Bit (Bit/Koeffizient) eines jeden Koeffizienten gelesen, um zu bestimmen, ob es ein Kopf oder ein Schwanz ist. Wenn das Dekodieren fortschreitet, nimmt die Anzahl von Bits pro Koeffizient zu.In Table 8, during the beginning of decoding, there is no decoding of the bit planes occurred; therefore, only one bit (bit / coefficient) of each coefficient becomes read to determine if it is a head or a tail. If the decoding As the rate increases, the number of bits per coefficient increases.
Fig. 33 zeigt, wie ein zirkulares Adressieren verwendet werden kann, um das Schrei ben von Daten handzuhaben, die größer sind als die gelesenen Daten. Dies tritt auf, weil die Ergebnisse der Verarbeitung mehr zu schreibende Bits erzeugen als ursprüng lich gelesen wurden. Nimmt man Bezug auf Fig. 33, so beginnt der Prozeß, indem ein Bit pro Koeffizient geschrieben wird, was 1/8 des Speicherraums ist. Darauffolgend wird ein Bit pro Koeffizient gelesen, während 2 bis 3 Bits pro Koeffizient geschrieben werden. Dann werden die 2 bis 3 Bits pro Koeffizient gelesen, während 3 bis 4 Bits pro Koeffizient geschrieben werden. Dies schreitet fort, bis alle Daten abgehandelt sind. Fig. 33 shows how circular addressing can be used to handle the writing of data larger than the read data. This occurs because the results of processing produce more bits to write than were originally read. Referring to Fig. 33, the process begins by writing one bit per coefficient, which is 1/8 of the memory space. Subsequently, one bit per coefficient is read while writing 2 to 3 bits per coefficient. Then, the 2 to 3 bits per coefficient are read while writing 3 to 4 bits per coefficient. This continues until all the data has been dealt with.
Es gibt einige Optionen, um die Hardwareimplementationen zu vereinfachen. Anstatt daß immer die minimale Anzahl von Bits verwendet werden, würden nur z. B. 1, 2, 4, 6 oder 8 Bits verwendet werden, was dazu führen würde, daß ein Bit bei manchen Größen verschwendet werden würde. Ein Raum für das Vorzeichenbit könnte immer verwendet werden, selbst wenn das Vorzeichenbit nicht in dem LIC kodiert wurde oder noch nicht bekannt war.There are a few options to simplify hardware implementations. Instead of that always the minimum number of bits are used, only z. B. 1, 2, 4, 6 or 8 bits would be used, which would cause a bit in some Sizes would be wasted. A space for the sign bit could always be be used even if the sign bit was not coded in the LIC or was not known yet.
Eine Option, die weiter die Speicherbandbreite verringern würde, wäre, das Schwanz-ein-Bit nicht zu speichern, wenn es 20027 00070 552 001000280000000200012000285911991600040 0002019819405 00004 19908nicht notwendig ist. Zum Beispiel, wenn man die Bitebene 0 schreibt, gibt es 6 Bits, die entweder Kopf- oder Schwanzbits sind. Falls irgendeines dieser Bits nicht 0 sind, muß Schwanz-ein ("tail-on") wahr sein, und es ist kein Bedarf, die Schwanz-ein-Werte zu speichern und das Vorzeichenbit kann als das siebte Bit gespeichert werden.One option that would further reduce memory bandwidth would be the tail-a-bit not to be stored, if it is not necessary 20027 00070 552 001000280000000200012000285911991600040 0002019819405 00004 19908. For example, if you have the Bit level 0 writes, there are 6 bits that are either header or tail bits. If any of these bits are not 0, tail-on must be true, and it is There is no need to save the tail-a-values and the sign bit can be used as the seventh bit are stored.
Eine Speicherbandbreite für den wichtigsten Batzen (MIC) kann ebenso durch variable Längenspeicherverfahren reduziert werden. Indem einfach die minimale Anzahl von Bits verwendet werden, anstatt daß immer 8 Bits pro Koeffizient verwendet werden, würde zu Einsparungen führen. Das Speichern von 6-Bit-Vorhersehwerten (wie in Fig. 15) anstatt von 0 Koeffizientenbits, würde zu einer sogar noch effizienteren Verwen dung des Speichers führen.Memory bandwidth for the most important chunk (MIC) can also be reduced by variable length memory techniques. Simply using the minimum number of bits rather than always using 8 bits per coefficient would result in savings. Storing 6-bit predictive values (as in Fig. 15) rather than 0 coefficient bits would result in even more efficient use of the memory.
Die vorliegende Erfindung stellt eine optionale Durchführung einer reversiblen Farb raumkonversion bereit, die eine Konvertierung zwischen zwei Farbräumen erlaubt, so daß sie komplett reversibel und in einer Ganzzahl-Arithmetik implementierbar ist. Das heißt, die Farbraumdaten, die konvertiert werden, können umgekehrt werden, um alle existierenden Daten zu erhalten, und zwar ungeachtet jeglichen Rundens oder eines jeglichen Abschneidens, das während des Vorwärts-Konversionsprozesses auftritt. Reversible Farbräume werden in der US-Patentanmeldung Nr. 08/436,662, mit dem Titel "Method and Apparatus for Reversible Color Conversion", eingereicht am 8. Mai 1995 und übertragen auf den gegenwärtigen Anmelder, beschrieben.The present invention provides an optional implementation of a reversible color Space conversion ready, which allows a conversion between two color spaces, so that it is completely reversible and implementable in integer arithmetic. The means the color space data being converted can be reversed to all existing data, regardless of any rounding or one any clipping that occurs during the forward conversion process. Reversible color spaces are described in U.S. Patent Application Serial No. 08 / 436,662, commonly known as US Pat Title "Method and Apparatus for Reversible Color Conversion", filed on 8 May 1995 and assigned to the present applicant.
Die Farbraumkonversionen ermöglichen die Vorteile eines gegensätzlichen Farbraums, ohne die Fähigkeit zu opfern, verlustfreie Ergebnisse zu liefern. Für den verlustfreien Fall liefert ein entgegengesetzter Farbraum eine Dekorrelierung, die die Kompression verbessert. Für den verlustbehafteten Kode erlaubt ein entgegengesetzter Farbraum, daß Luminanzinformation weniger quantisiert wird als Chrominanzinformation, was eine höhere visuelle Qualität liefert. Wenn ein reversibler Farbraum mit der Transformation der vorliegenden Erfindung verwendet wird, ist eine korrekte Einbettung der Luminanz- und Chrominanzkoeffizienten eine Unterabtastung für die verlustbehaftete Kompression überlegen, während immer noch eine verlustfreie Kompression erlaubt wird.The color space conversions allow the advantages of an opposite color space, without sacrificing the ability to deliver lossless results. For the lossless Case, an opposite color space provides a decorrelation that compresses improved. For the lossy code, an opposite color space allows that Luminance information is less quantized as chrominance information, which is a higher visual quality. If a reversible color space with the transformation is used in the present invention, a correct embedding of the Luminance and chrominance coefficients sub-sample the lossy one Superior compression while still allowing lossless compression becomes.
Falls ein reversibler Farbraum verwendet wird, ist es wünschenswert, die Koeffizienten so auszurichten, daß das höchstwertige Bit bzw. am meisten signifikante Bit der 8-Bit-Luminanzkomponenten und der 9-Bit-Chrominanzkomponenten dieselbe Ausrichtung haben. Für die verlustbehaftete Kompression verursacht diese Ausrichtung, daß Chro minanzdaten doppelt so häufig quantisiert werden wie Luminanzdaten, und erlaubt ebenso die Möglichkeit einer verlustfreien Kompression für bzw. hinsichtlich der Luminanz und eine verlustbehaftete (aber mit sehr hoher Qualität) Kompression für bzw. hinsichtlich der Chrominanz. Diese beiden Ergebnisse ziehen einen Vorteil aus den Eigenschaften des menschlichen visuellen Systems. If a reversible color space is used, it is desirable to have the coefficients so that the most significant bit or the most significant bit of the 8-bit luminance components and the 9-bit chrominance components have the same orientation to have. For lossy compression, this alignment causes Chro min data is quantized twice as often as luminance data, and allowed as well as the possibility of a lossless compression for or regarding the Luminance and a lossy (but very high quality) compression for or in terms of chrominance. These two results take advantage the characteristics of the human visual system.
Häufig wird ein Drucker Dokumente haben, die überwiegend oder vollständig nicht kontinuierlich sind. Zum Beispiel können Textbilder mit nur schwarz und weiß (nur der 0- und 255-Wert) üblich sein.Often, a printer will have documents that are mostly or completely non-existent are continuous. For example, text images with only black and white (only the 0 and 255 value) be common.
Bei einer Ausführungsform wird das Histogramm von Bändern vollendet. Zum Beispiel können reine 0,255-Schwarz/Weiß-Bilder (die K-Komponente) neu auf 0,1-Bilder abgebildet werden. Ähnliche Verdichtungen können hinsichtlich Spot-Farbbildern bzw. Punkt-Farbbildern durchgeführt werden. Bemerkenswert ist, daß, wenn eine Verdich tung verwendet wird, die Kompression verlustfrei sein muß. Jedoch wird die erzielte verlustfreie Kompression wesentlich verbessert, wenn die Verdichtung durchgeführt wird.In one embodiment, the histogram of bands is completed. For example can pure 0.255 black and white images (the K component) new to 0.1 images be imaged. Similar densifications can be made with regard to spot color images or Point color images are performed. It is noteworthy that when a comp is used, the compression must be lossless. However, the scored lossless compression significantly improved when the compaction performed becomes.
Alternativ können, anstelle der Verwendung der überlappten Wavelet-Transformatio nen, die hierin beschrieben sind, binäre und Spot-Farbbilder durch ein verlustfreies, auf Bitebenen basierendes JBIG-ähnliches Kontextmodell gehandhabt werden.Alternatively, instead of using the overlapped wavelet transform described herein, binary and spot color images through a lossless, on Bite-level based JBIG-like context model.
Bei einer anderen alternativen Ausführungsform kann das System so gestaltet werden, daß es einen binären Modus enthält. Fig. 35 zeigt eine Ausführungsform eines binären Kontextmodells, das der Kontextmodell-Schablone bzw. -Maske vom JBIG-Stil ähnelt. Nimmt man Bezug auf Fig. 35, so stellen Schieberegister 3501 bis 3503 mehrere Bits pro bzw. für den JBIG-Standard bereit. Die Schieberegister 3501 und 3502 empfangen zweite und erste obere Zeilen von dem Zeilenpuffer 3500. Die "oberen" Leitungen stellen die Bits bereit, die den Pixeln in den Nordwest-(NW)-, Nord-(N)- und Nordost-(NE)-Positionen der Schablone entsprechen, wie in Fig. 37 gezeigt ist. Die Ausgaben der Schieberegister 3501 und 3502 werden direkt zu dem Kontextmodell 3505 geliefert. Die Ausgaben des Schieberegisters 3503 werden zu einem optionalen Multiplexer 3504 geliefert, der die adaptive Schablone des JBIG-Standards implementieren kann. Das Kontextmodell 3505 ist angeschlossen an die Wahrscheinlichkeitsschätzmaschine 3506, die wiederum an den Bitgenerator 3507 angeschlossen ist. Das Kontextmodell 3505, die Wahrscheinlichkeitsschätzmaschine 3506 und der Bitgenerator 3507 arbeiten zusam men, wie es in der Fachwelt gut bekannt ist.In another alternative embodiment, the system may be designed to include a binary mode. Figure 35 shows an embodiment of a binary context model that is similar to the JBIG style context model template. Referring to Fig. 35, shift registers 3501 to 3503 provide multiple bits per JBIG standard. The shift registers 3501 and 3502 receive second and first upper rows from the line buffer 3500 . The "upper" lines provide the bits corresponding to the pixels in the Northwest (NW), North (N), and Northeast (NE) positions of the template, as shown in Fig. 37. The outputs of the shift registers 3501 and 3502 are provided directly to the context model 3505 . The outputs of the shift register 3503 are provided to an optional multiplexer 3504 , which may implement the adaptive template of the JBIG standard. The context model 3505 is connected to the probability estimator 3506 , which in turn is connected to the bit generator 3507 . The context model 3505 , the probability estimator 3506 and the bit generator 3507 work together as is well known in the art.
Die Ausgabe des Multiplexers 3504 in Verbindung mit den Ausgaben des Schiebe registers 3501 und 3502 und eine Rückkopplung von dem Bitgenerator bilden die Kontextbinadresse, die zum Adressieren des Kontextspeichers verwendet wird. Bei einer Ausführungsform beinhaltet der Kontextspeicher 3505 1024 Kontexte mit 6 Bits, um jeden Wahrscheinlichkeitszustand zu beschreiben. Dies erfordert einen Kontext speicher von 1024 mal 6 Bits.The output of multiplexer 3504 in conjunction with the outputs of shift registers 3501 and 3502 and feedback from the bit generator form the context bin address used to address the context memory. In one embodiment, the context memory 3505 includes 1024 6-bit contexts to describe each probabilistic state. This requires a context memory of 1024 by 6 bits.
Da der Bitgenerator ein decodiertes Bit von der aktuellen Zeile als Teil der Kontext adresse bereitstellt, gibt es eine große "Bit-zu-Kontext"-Verzögerung einschließlich der Zugriffszeit für den Kontextspeicher.Because the bit generator is a decoded bit from the current line as part of the context There is a large "bit-to-context" delay including the Access time for the context memory.
Fig. 36 zeigt eine alternative Ausführungsform, die das dekodierte Bit von der aktuel len Zeile verwendet, um auf die Wahrscheinlichkeitsschätzmaschine in Verbindung mit einem selben Adressenblock 3601 zuzugreifen, der die Ausgaben des Schieberegisters 3501 und 3502 und die Ausgabe des Multiplexers 3504 empfängt. Der PEM 3506 empfängt das vorhergehende Bit und verwendet es, um das korrekte aus dem verwen deten Kontextpaar auszuwählen. Der ausgewählte Kontext wird aktualisiert und beide Kontexte werden zurück in den Speicher geschrieben. Derselbe Adressenblock 3601 detektiert Adressen, die bereits geschrieben worden sind, so daß die Daten bereits in der Wahrscheinlichkeitsschätzmaschine sind. Derselbe Adressenblock 3801 sendet ebenso das Signal, um die Daten zu verwenden, die bereits in der PEM sind (bei denen es sich um aktualisierte Daten handeln kann), und zwar anstatt der alten Information im Speicher. FIG. 36 shows an alternate embodiment that uses the decoded bit from the current line to access the probability estimator in conjunction with a same address block 3601 that receives the outputs of the shift registers 3501 and 3502 and the output of the multiplexer 3504 . The PEM 3506 receives the previous bit and uses it to select the correct context pair from the one used. The selected context is updated and both contexts are written back to memory. The same address block 3601 detects addresses that have already been written so that the data is already in the probability estimator. The same address block 3801 also sends the signal to use the data already in the PEM (which may be updated data) instead of the old information in memory.
Bei einer Ausführungsform beinhaltet der Decoder 1024 Kontextbins mit 6 Bits, um jeden Wahrscheinlichkeitszustand zu beschreiben. Dies macht eine Kontextspeicher mit 512×12 Bits erforderlich. Die Ausgaben des Schieberegisters 3501 und 3502 zu sammen mit der Ausgabe des Multiplexers 3504 liefern eine Teil-Kontextbin-Adresse, bei der nur die Verwendung des vorhergehenden Bits fehlt. Dies führt zu einer Aus wahl eines Kontextbinpaares aus dem Kontextspeicher 3505. Mehr als ein Bit eines Kontextbins kann von dem Teilkontext ausgeschlossen werden. Jede Speicherstelle enthält 2n Wahrscheinlichkeitszustände, wobei n die Anzahl der ausgeschlossenen Bits ist.In one embodiment, the decoder 1024 includes context bits with 6 bits to describe each probability state. This requires a 512x12 bit context memory. The outputs of the shift registers 3501 and 3502 along with the output of the multiplexer 3504 provide a partial context bin address which only misses the use of the previous bit. This leads to a selection of a context bin pair from the context memory 3505 . More than one bit of a context bin can be excluded from the subcontext. Each memory location contains 2 n probability states, where n is the number of excluded bits.
Bemerkenswert ist, daß die "Bit-zu-Kontext"-Verzögerung reduziert ist. Der Kontext speicherzugriff kann auftreten, bevor das vorhergehende Bit dekodiert wird. Die Verarbeitung des PEM-Zustands für beide Zustände in einem Paar kann parallel beginnen, bevor das vorhergehende Bit dekodiert ist. Ein Hochgeschwindigkeitsbetrieb kann erreicht werden.It is noteworthy that the "bit-to-context" delay is reduced. The context Memory access may occur before the previous bit is decoded. The Processing of the PEM state for both states in a pair can be done in parallel begin before the previous bit is decoded. A high-speed operation can be reached.
Zusätzlich zu der Fähigkeit, die Daten zu quantisieren, erfordert das Durchführen einer Ratensteuerung in dem Codierer ebenso das Messen der Rate, so daß Entscheidungen über die Quantisierung getroffen werden können. Falls die Rate anzeigt, daß die Kompression nicht gut ist (d. h. nicht bei einem gewünschten Niveau ist, kann die Quantisierung erhöht werden. Auf der anderen Seite; falls die Rate anzeigt, daß die Kompression zu hoch ist, kann die Quantisierung verringert werden. Ratensteuer-Ent scheidungen müssen identisch in dem Kodierer und dem Dekodierer gemacht werden.In addition to the ability to quantize the data, performing a Rate control in the encoder as well as measuring the rate so that decisions can be made about the quantization. If the rate indicates that the Compression is not good (that is, not at a desired level, the Quantization can be increased. On the other hand; if the rate indicates that the Compression is too high, the quantization can be reduced. Rate control Ent Divisions must be made identically in the encoder and the decoder become.
Ein Verfahren zur Gewährleistung, daß der Kodierer und der Dekodierer dieselben Entscheidungen machen, ist es, eine Signalisierung zu verwenden. Der Kodierer mißt die Rate bei vorbestimmten Intervallen und speichert die Quantisierung Q in einem Speicher für die zukünftige Verwendung in dem nächsten Intervall. Der Dekodierer ruft einfach erneut die Quantisierung von dem Speicher für jedes Intervall auf. Dies würde einen Extra-Speicher erfordern. Zum Beispiel wäre ein On-Chip-SRAM bzw. ein SRAM, der sich auf einem Chip befindet, mit 256 Stellen von 2 Bits (zum Anzeigen einer Änderung im q um +2, +1, 0, -1 oder zum Speichern von Q als 1, 2, 3, 4) ausreichend, um die Quantisierung Q alle 16 Zeilen für ein 4096-Zeilenbild zu ändern.A method of ensuring that the encoder and decoder are the same Make decisions is to use a signaling. The encoder measures the rate at predetermined intervals and stores the quantization Q in one Memory for future use in the next interval. The decoder calls just re-quantize the memory for each interval. This would require extra storage. For example, an on-chip SRAM would be SRAM, which is on a chip, with 256 bits of 2 bits (to display a change in q by +2, +1, 0, -1 or to save Q as 1, 2, 3, 4) sufficient to change the Q quantization every 16 lines for a 4096 line image.
Es gibt viele Optionen für die Ratenmessung. Fig. 34 zeigt ein Kodierer- und Dekodie rerpaar. Nimmt man Bezug auf Fig. 34, so ist ein Kodierer-/Dekodiererpaar gezeigt, das Kontextmodelle (CM), Wahrscheinlichkeitsschätzmodelle/-maschinen (PEM) und Bitgeneratoren (BG) zusammen mit einer Lauf-Zähl-Neuordungseinheit ("run count reorder unit"), eine Neuordnungseinheit für verschachtelte Wörter ("interleaved word reorder unit") und eine Schiebeeinrichtung enthält. All das ist in der Fachwelt gut bekannt. Hinsichtlich der Beschreibung wird auf die US-Patente Nrn. 5,381,145 und 5,583,500 des vorliegenden Anmelders verwiesen, deren Inhalt hiermit durch Be zugnahme aufgenommen ist.There are many options for rate measurement. Fig. 34 shows an encoder and decoder pair. Referring to Figure 34, there is shown an encoder / decoder pair including context models (CM), probability estimation models (PEM) and bit generators (BG) along with a run count reorder unit. ), an interleaved word reorder unit and a shifter. All of this is well known in the art. For the description, reference is made to US Pat. Nos. 5,381,145 and 5,583,500 by the present applicant, the contents of which are hereby incorporated by reference.
Die Ratenmessung muß explizit sein, falls der Dekoder sie nicht am selben Platz bzw. bei derselben Stelle messen kann. Zum Beispiel wird die Ratenmessung dem Dekoder als Teil des komprimierten Kodestroms bereitgestellt.The rate measurement must be explicit if the decoder is not in the same place or can measure at the same place. For example, the rate measurement is the decoder provided as part of the compressed code stream.
Eine andere Option für eine Ratenhandhabung, die als der kleinere Kreis gezeigt ist (Position 2 in Fig. 34), ist es, den Start der verschachtelten Wörter in dem Kodierer zu zählen. Bei einer anderen Ausführungsform wird dies nach der Biterzeugungsstufe durchgeführt (Position 4 in Fig. 34). Weil der Kodierer und der Dekodierer ein Kodewort zur selben Zeit starten, kann ein implizites Signalisieren der Rate verwendet werden. Das Zählen kann mit einer Zählhardware durchgeführt werden, die ein Register und einen Addierer umfaßt, der die Kodewortlängen addiert und die mittlere Kodewortlänge bestimmt. Eine Hardware, um das Zählen durchzuführen und eine mittlere Anzahl von Bits zu bestimmen, ist in der Fachwelt gut bekannt und wird in Fig. 34 als Block 3401 gezeigt. Es ist offensichtlich, daß dieser Block verwendet werden kann, um ähnliche Messungen bei anderen Stellen in dem System durch zuführen (z. B. Positionen 1, 2, 3, 4 auf sowohl dem Kodierer als auch Dekodierer).Another option for rate handling, shown as the smaller circle (position 2 in Figure 34), is to count the start of the interleaved words in the encoder. In another embodiment, this is done after the biting stage (position 4 in Figure 34). Because the encoder and decoder start a codeword at the same time, implicit rate signaling can be used. The counting may be performed with a counting hardware comprising a register and an adder which adds the code word lengths and determines the average code word length. Hardware for performing the counting and determining an average number of bits is well known in the art and is shown as block 3401 in FIG . It is obvious that this block can be used to perform similar measurements at other locations in the system (e.g., positions 1, 2, 3, 4 on both the encoder and decoder).
Andere Optionen wären das Zählen der Größe vollendeter Kodewörter nach dem Bitgenerator und vor der Neuordnungseinheit für verschachtelte Wörter (Position 3 in Fig. 34), oder die Bestimmung der aktuellen Datenmenge, die auf die Disk geschrieben ist (Position 1 in Fig. 34).Other options would be to count the size of completed codewords after the bit generator and before the nested word reordering unit (position 3 in Figure 34), or determine the current amount of data written to the disk (position 1 in Figure 34).
Die Ratenmessung kann implizit sein: sowohl der Kodierer als auch der Dekodierer führen dieselbe Ratenbestimmungsberechnung durch. Zum Beispiel könnten der Kodierer und der Dekodierer die mittlere Größe eines Kodewortes akkumulieren, jedesmal wenn ein neues Kodewort begonnen wird. Dies wird durch die Position in Fig. 34 dargestellt. (Die aktuelle Größe kann nicht verwendet werden, da der Kodierer nicht die Größe bis zu dem Ende des Kodewortes weiß). Falls die R-Kodes, die in dem Kern verwendet werden, hinsichtlich ihrer Größe von R2(0) bis R2(7) variieren, variiert die mittlere Kodewortgröße von 1 bis 4,5 Bits. Falls die Wahrscheinlichkeits schätzung gut arbeitet, sollte die Verwendung des mittleren sehr genau sein. In anderen Fällen sind die Differenzen zwischen der minimalen und der maximalen Kodewortlänge gegenüber dem mittleren typischerweise nicht so groß, so daß die Schätzung immer noch nützlich sein sollte. Die mittlere Größe eines Rz(k)-Kodewortes beträgt (k/2)+1 Bits.The rate measurement may be implicit: both the encoder and the decoder perform the same rate determination calculation. For example, the encoder and decoder could accumulate the average size of a codeword each time a new codeword is started. This is represented by the position in FIG . (The current size can not be used because the encoder does not know the size to the end of the codeword). If the R codes used in the core vary in size from R2 (0) to R2 (7), the average codeword size varies from 1 to 4.5 bits. If the probability estimate works well, the use of the middle should be very accurate. In other cases, the differences between the minimum and maximum codeword length are typically not as large as the mean, so the estimate should still be useful. The average size of an Rz (k) codeword is (k / 2) +1 bits.
Es kann das Ziel sein, daß in fast allen Fällen die wichtigsten Daten gut komprimiert werden und keine Quantisierung (Q=1) erforderlich sein wird. Nur "pathologische" Bilder werden eine Quantisierung (Q<1) benötigen. Das Einschließen des Quantisie rungsmerkmals kann jedoch garantieren, daß das System nicht bei pathologischen Bildern zusammenbrechen wird.It may be the goal that in almost all cases the most important data is compressed well and no quantization (Q = 1) will be required. Only "pathological" Images will require quantization (Q <1). Including the quantisie However, it can guarantee that the system is not pathological Pictures will collapse.
Ein anderer Vorteil der Kodiererratensteuerung ist, daß das Kodieren weniger wichtiger Daten gestoppt werden kann, wenn die maximale Bandbreite überschritten wird. Dies erhöht die Geschwindigkeit des Kodierens und vermindert die Gesamtzeit der ausge gebenen Daten (z. B. die gesamte Druckzeit wird vermindert).Another advantage of encoder rate control is that coding is less important Data can be stopped when the maximum bandwidth is exceeded. This increases the speed of coding and reduces the total time out given data (eg the total printing time is reduced).
Das beständige Verfolgen der Wirkungen von Quantisierungsänderungen (der Wert von Q) ist wichtig. Zum Beispiel muß die Definition des größten Koeffizienten in einer Gruppe von Koeffizienten mit den Quantisierungsänderungen konsistent sein. Ebenso muß die Rekonstruktion von quantisierten Koeffizienten (wenn Bitebenen weggelassen werden) die Anzahl der weggelassenen Bitebenen zum Erzielen der besten Ergebnisse berücksichtigen.Continuously tracking the effects of quantization changes (the value of Q) is important. For example, the definition of the largest coefficient in a Group of coefficients to be consistent with the quantization changes. As well the reconstruction of quantized coefficients (if bit planes omitted) must be omitted the number of omitted bit-planes to achieve the best results account.
Der Entropiekodierabschnitt der vorliegenden Erfindung umfaßt zwei Teile. Zum ersten stellen Hochgeschwindigkeitskodierkerne, die parallel arbeiten, eine Wahrscheinlich keitsschätzung und eine Biterzeugung bereit. Zweitens stellt ein Kontextmodell die Kontexte bereit, die zum Kodieren verwendet werden.The entropy coding portion of the present invention comprises two parts. First High-speed encoding cores that work in parallel are likely to do so assessment and biter production. Second, a contextual model represents the Contexts ready to be used for coding.
Die Anzahl der Kerne, die zum Erzielen der gewünschten Geschwindigkeit benötigt werden, ist anwendungsabhängig.The number of cores needed to achieve the desired speed be, is application-dependent.
Der andere Teil des Entropiekodiersystems ist das Kontextmodell für die Koeffizienten der vorliegenden Erfindung. Es gibt eine große Anzahl von Kompromissen, die bei der Implementierung des Kontextmodells möglich sind. Bei einer Ausführungsform liefert die vorliegende Erfindung ein Kontextmodell mit geringem Hardwareaufwand, das eine Parallelität bereitstellt, um die Verwendung der Hochgeschwindigkeitsparallelkodierer der vorliegenden Erfindung zu unterstützen. Ausführungsformen des Kontextmodells sind oben beschrieben.The other part of the entropy coding system is the context model for the coefficients of the present invention. There are a large number of tradeoffs involved in the Implementation of the context model are possible. In one embodiment provides The present invention is a context model with a low hardware cost, the one Parallelism provides for the use of high-speed parallel encoders to assist the present invention. Embodiments of the context model are described above.
Obwohl nur das Kontextmodell für Wavelet-Koeffizienten hierin beschrieben ist, ist die vorliegende Erfindung nicht auf Kontextmodelle beschränkt, die nur Wavelet-Koeffi zienten unterstützen. Zum Beispiel kann sie, falls ein Bitebenen-Kodiermodus für binäre oder Spot-Farbbilder gewünscht ist, ein zusätzliches Kontextmodell verwenden, wie es z. B. in der US-Patentanmeldung Nr. 08/642,518, eingereicht am 3. Mai 1996, mit dem Titel "Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device-Dependent Parser", und in der US-Patentanmeldung Nr. 08/643,268, eingereicht am 3. Mai 1996, mit dem Titel "Compression/Decompres sion Using Reversible Embedded Wavelets" beschrieben ist.Although only the context model for wavelet coefficients is described herein, FIG The present invention is not limited to context models that use only wavelet coefficients supporting clients. For example, if a bit-plane encoding mode for binary or spot color images is desired to use an additional contextual model, as it is z. In U.S. Patent Application No. 08 / 642,518, filed May 3, 1996, entitled "Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device Dependent Parser, "and in the US patent application No. 08 / 643,268, filed May 3, 1996, entitled "Compression / Decompres sion Using Reversible Embedded Wavelets ".
Bei einer Ausführungsform werden vier Hochgeschwindigkeitkodierkerne verwendet, um 8 Bits pro Koeffizient zu kodieren/dekodieren, wo Koeffizienten von 8 zu 12 Bits reichen (13, falls ein reversibler Farbraum verwendet wird). Bei einer Ausführungs form wird ein Kern zu einer jeden Komponente der vier Komponenten zugewiesen, wobei der Parallelismus und der Datenfluß vereinfacht werden. Jeder Koeffizient kann bis zu 16 Zyklen zum Kodieren/Dekodieren von Bits verwenden (einschließlich Ent scheidungen zum Vorhersehen usw.).In one embodiment, four high speed encoding cores are used to encode / decode 8 bits per coefficient, where coefficients are from 8 to 12 bits range (13, if a reversible color space is used). In one execution form, a kernel is assigned to each component of the four components, whereby the parallelism and the data flow are simplified. Each coefficient can Use up to 16 cycles to encode / decode bits (including Ent decisions on foresight, etc.).
Die vorliegende Erfindung hält die Kerne für jede Komponente in Synchronisation, selbst wenn gewisse Kerne unproduktiv sind, und zwar wegen ihres erfolgreichen Vorhersehens, oder ein anderer Kern handhabt ein Vorzeichenbit nach einem ersten "Ein"-Bit. Die Gesamtzeit zum Laufen des Kontextmodells wird in Abhängigkeit von den Daten, insbesondere der Wirksamkeit des Vorhersehens und in einem geringeren Umfang von den Stelle der ersten "Ein"-Bits variieren.The present invention synchronizes the cores for each component, even if certain cores are unproductive because of their successful ones Foresight or another kernel handles a sign bit after a first "A" bit. The total time to run the context model depends on the data, in particular the effectiveness of the foresight and in a lesser extent Scope vary from the location of the first "on" bits.
Die Erfindung läßt sich insbesondere wie folgt zusammenfassen:
Ein Verfahren und ein Apparat zum Durchführen eine Kompression und/oder einer
Dekompression wird beschrieben. Bei einer Ausführungsform umfaßt die vorliegende
Erfindung ein System mit einem Puffer, einer Wavelet-Transformationseinheit und
einem Kodierer. Die Wavelet-Transformationseinheit hat einen Eingang, der mit dem
Puffer verbunden ist, um eine Wavelet-Transformation mit den Pixeln durchzuführen,
die darin gespeichert sind und um Koeffizienten am Ausgang zu erzeugen. Der Kodie
rer ist an die Wavelet-Transformationseinheit angeschlossen, um die transformierten
Pixel zu kodieren, die von dem Puffer empfangen werden.
The invention can be summarized in particular as follows:
A method and apparatus for performing compression and / or decompression is described. In one embodiment, the present invention includes a system including a buffer, a wavelet transform unit, and an encoder. The wavelet transform unit has an input connected to the buffer to perform a wavelet transform with the pixels stored therein and to produce coefficients at the output. The encoder is connected to the wavelet transform unit to encode the transformed pixels received from the buffer.
14011401
Kodiere MIC
Encode MIC
14021402
Kodiere Position der ersten LIC-Bitebene mit Daten
Encode the position of the first LIC bit plane with data
14031403
Setze aktuelle LIC-Bitebene zu erster LIC-Bitebene mit Daten
Set the current LIC bit plane to the first LIC bit plane with data
14041404
Alle LIC-Bitebenen mit Daten kodiert
All LIC bit planes encoded with data
14051405
Kodiere eine LIC-Bitebene
Encode a LIC bitmap
14061406
Setze aktuelle LIC-Bitebene zu nächster LIC-Bitebene
Set the current LIC bit plane to the next LIC bit plane
16011601
Setze aktuellen Baum zu erstem Baum
Put current tree to first tree
16021602
Kodiere SS-Koeffizienten
Encode SS coefficients
16031603
Führe MIC-(oder Baum-)Vorhersehen durch (Perform MIC (or tree) foresight (
Fig.FIG.
5)
5)
16041604
Ist die MIC des gesamten Baumes 0?
Is the MIC of the entire tree 0?
16051605
Setze aktuellen Koeffizienten zu ersten Nicht-SS-Koeffizienten im Baum
Set current coefficients to first non-SS coefficients in the tree
16061606
Setze aktuelle Bitebene zu erster Bitebene mit Daten
Set current bit-plane to first bit-plane with data
16071607
Kodiere Bit eines aktuellen Koeffizienten in aktueller Bitebene
Encode bits of a current coefficient in the current bit plane
16081608
Alle Bitebenen kodiert?
All bitplanes coded?
16091609
Setze aktuelle Bitebene zu nächster Bitebene
Set the current bit-level to the next bit-level
16101610
Ist aktuelle Koeffizient 0?
Is current coefficient 0?
16111611
Kodiere Vorzeichenbit
Encode sign bit
16121612
Setze aktuellen Koeffizienten auf nächsten Koeffizienten im Baum
Set current coefficients to nearest coefficients in the tree
16131613
Alle Koeffizienten im Baum kodiert?
All coefficients encoded in the tree?
16141614
Alle Bäume kodiert?
All trees encoded?
19011901
Setze aktuellen Baum zu erstem Baum
Put current tree to first tree
19021902
Setze aktuellen Koeffizienten zu erstem Nicht-SS-Koeffizienten im Baum
Set current coefficients to first non-SS coefficients in the tree
19031903
Am Start eines Vorherseh-Intervalls?
At the start of a foresight interval?
19041904
Vorhersehen
foresee
19051905
Vorhersehen aktiviert?
Foresight enabled?
19061906
Kodiere Kopf- oder Schwanzbit
Code head or tail bit
19071907
Erstes Nicht-Null-Bit?
First non-zero bit?
19081908
Kodiere Vorzeichenbit
Encode sign bit
19091909
Alle Koeffizienten im Baum kodiert?
All coefficients encoded in the tree?
19101910
Setze aktuellen Koeffizienten zum nächsten Koeffizienten im Baum nach Vor
herseh-Intervall
Set current coefficients to the nearest coefficient in the tree by default
19111911
Alle Koeffizienten im Baum kodiert?
All coefficients encoded in the tree?
19121912
Setze aktuellen Koeffizienten zum nächsten Koeffizienten im Baum
Set current coefficients to the nearest coefficient in the tree
19131913
Alle Bäume kodiert?
All trees encoded?
Claims (78)
einem Puffer;
einer Wavelet-Transformationseinheit mit einem Eingang, der an den Puffer angeschlossen ist, um eine reversible Wavelet-Transformation mit Pixeln durchzufüh ren, die in dem Puffer gespeichert sind, und um Koeffizienten bei einem Ausgang zu erzeugen;
einem Kodierer, der mit der Wavelet-Transformationseinheit verbunden ist, um Bitebenen von wavelet-transformierten Pixeln von der Wavelet-Transformationseinheit und gespeicherte Bitebenen von wavelet-transformierten Pixeln, die von dem Puffer empfangen wurden, zu kodieren.1. System with:
a buffer;
a wavelet transform unit having an input connected to the buffer for performing a reversible wavelet transform on pixels stored in the buffer and producing coefficients at an output;
an encoder coupled to the wavelet transform unit to encode bit planes of wavelet-transformed pixels from the wavelet transform unit and stored bit planes of wavelet-transformed pixels received from the buffer.
ein Kontextmodell; und
einen parallelen Entropiekodierer;
bei welchem die wichtigsten Daten nicht eingebettet sind und in eine Koeffizien tenordnung bzw. -reihenfolge ohne Puffern kodiert sind bzw. werden, ein Teil weniger wichtiger Daten gepuffert, eingebettet und in einen Speicher in der Reihenfolge der Wichtigkeit geschrieben sind. The system of claim 1, wherein the encoder comprises:
a context model; and
a parallel entropy coder;
wherein the key data is not embedded and encoded in a buffers-free-of-buffers order, a part of less important data is buffered, embedded, and written to memory in the order of importance.
eine Wavelet-Transformation von Pixelinformation, die von einem Puffer empfangen wird, wird durchgeführt, wobei wenigstens eine Bitebene von Koeffizienten reversible wavelet-transformierte Pixel darstellt;
die Pixel in dem Puffer werden durch kodierte Bitebenen ersetzt; und
Bitebenen, die in dem Puffer gespeichert sind, werden kodiert.8. A method of compressing information comprising the steps of:
a wavelet transform of pixel information received from a buffer is performed, wherein at least one bit-plane of coefficients represents reversible wavelet-transformed pixels;
the pixels in the buffer are replaced by coded bit planes; and
Bit planes stored in the buffer are encoded.
einen Bandpuffer;
eine Anzahl von Kodiereinheiten für Koeffizienten, die eine inverse Trans formationsoperation durchmachen sollen;
wenigstens eine Kodiereinheit zum Speichern von Pixel, die an eine Ausgabe vorrichtung auszugeben sind;
wenigstens eine Kodiereinheit für Pixel, die zuvor invertierten transformierten Koeffizienten entsprechen, die zu der Ausgabevorrichtung zu senden sind;
einen Dekompressor, der mit dem Bandpuffer verbunden ist, wobei der Dekom pressor komprimierte Daten zu transformierten Koeffizienten dekomprimiert, die transformierten Koeffizienten zu dem Bandpuffer schreibt, transformierte Koeffizienten von dem Bandpuffer zurückliest, eine inverse Transformation mit den transformierten Koeffizienten, die von dem Bandpuffer zurückgelesen wurden, durchführt, um Pixel werte zu erzeugen, und Pixelwerte zu dem Bandpuffer schreibt.9. decompression system comprising:
a band buffer;
a number of coding units for coefficients to undergo an inverse transform operation;
at least one encoding unit for storing pixels to be output to an output device;
at least one encoding unit for pixels corresponding to previously inverted transformed coefficients to be sent to the output device;
a decompressor connected to the band buffer, the decompressor decompressing compressed data into transformed coefficients, writing the transformed coefficients to the band buffer, reading back transformed coefficients from the band buffer, inverse transforming with the transformed coefficients read back from the band buffer , is performed to generate pixel values and writes pixel values to the band buffer.
ein Koeffizient wird in die wichtigsten Daten und weniger wichtigen Daten aufgeteilt;
die wichtigsten Daten werden zu einem Kontextmodell zum sofortigen Kodieren in Koeffizientenordnung bzw. Koeffizientenreihenfolge gesendet;
die weniger wichtigen Daten und eine Anzahl von Signalisierbits werden in einem Speicher gespeichert; und
nach dem Kodieren der wichtigsten Daten aller Koeffizienten in dem Satz von Koeffizienten werden die weniger wichtigen Daten kodiert und gemäß einer Ordnung bzw. Reihenfolge eingebettet, die zum Teil auf der Anzahl bzw. Vielzahl der Signali sierbits basiert.13. Method comprising the following steps:
a coefficient is split into key data and less important data;
the most important data is sent to a context model for immediate coding in coefficient order or coefficient order;
the less important data and a number of signaling bits are stored in a memory; and
after encoding the most important data of all the coefficients in the set of coefficients, the less important data are encoded and embedded in accordance with an order based in part on the number or plurality of signaling bits.
einen Eingangspuffer mit einem Eingang, der angeschlossen ist, um Eingangs daten zu empfangen, und einem ersten und zweiten Ausgang, um gerade und ungerade Werte bzw. Abtastwerte bzw. Proben zu übertragen;
eine Erst-Niveau-Transformationseinheit, die angeschlossen ist, um die geraden und ungeraden Werte bzw. Abtastwerte zu empfangen und Koeffizienten zu erzeugen, wobei horizontale Tiefpaß- und vertikale Hochpaßkoeffizienten Ausgaben der Vor wartstransformation darstellen;
einen Speicher mit einem ersten Eingang, der angeschlossen ist, um ss-Koeffi zienten zu empfangen, die durch die Erst-Niveau-Transformation bzw. durch die Transformation gemäß einem ersten Niveau der Erst-Niveautransformationseinheit erzeugt werden, und mit einem zweiten Eingang um ss-Koeffizienten von einer Höher- Niveau-Transformationsfilterung zu empfangen;
eine Ordnungseinheit mit einem ersten Eingang, der an den Speicher ange schlossen ist, um ss-Koeffizienten für höhere Niveaus des Filterns zu ordnen; und
eine erste Filtereinheit, die an die Ordnungseinheit angeschlossen ist, um eine Anzahl von Transformationsniveaus anzuwenden, wobei die Filtereinheit eine Trans formation von ss-Koeffizienten gemäß einem höheren Niveau bzw. eine Höher-Niveau transformation-ss-Koeffizienten durchführt, die von der Ordnungseinheit empfangen wurden, wobei die Filtereinheit ss-Koeffizientenwerte erzeugt, die zu dem zweiten Eingang des Speichers und dem zweiten Eingang der Ordnungseinheit zurückgegeben bzw. rückgekoppelt werden.17. Forward transformation, comprising:
an input buffer having an input connected to receive input data and first and second outputs for transmitting even and odd samples;
a first-level transform unit connected to receive the even and odd values and to generate coefficients, wherein horizontal low-pass and vertical high-pass coefficients represent outputs of the pre-wait transform;
a memory having a first input connected to receive ss coefficients generated by the first-level transformation and by the first level transformation of the first level transformation unit and a second input by ss, respectively Receive coefficients from higher level transform filtering;
an ordering unit having a first input connected to the memory for ordering ss coefficients for higher levels of filtering; and
a first filter unit connected to the ordering unit for applying a number of transformation levels, the filter unit performing a transformation of ss coefficients according to a higher level and a higher level transformation ss coefficients, respectively, received from the ordering unit wherein the filter unit generates ss coefficient values which are fed back to the second input of the memory and to the second input of the ordering unit.
eine zweite Filtereinheit, um eine Erst-Niveau-Horizontaltransformation durch zuführen, bei welcher die zweite Filtereinheit einen ersten und einen zweiten Ausgang hat; eine erste einzelne bzw. einzige Verzögerung, die an den ersten Ausgang des zweiten Filters angeschlossen ist;
eine zweite einzelne bzw. einzige Verzögerung, die an den zweiten Ausgang des zweiten Filters angeschlossen ist;
eine Doppel-Verzögerung, die an den zweiten Ausgang des zweiten Filters angeschlossen ist;
einen ersten Multiplexer, der angeschlossen ist, um die Ausgaben der ersten einzelnen Verzögerung und der doppelten Verzögerung zu empfangen;
ein zweiter Multiplexer, der angeschlossen ist, um eine Ausgabe der ersten Filtereinheit und eine Ausgabe der zweiten einzelnen Verzögerung zu empfangen; und
eine dritte Filtereinheit, die angeschlossen ist, um die Ausgaben von dem ersten und zweiten Multiplexer zu empfangen und um eine Erst-Niveau-Vertikaltransformation durchzuführen.19. A forward transform according to claim 17, wherein the initial level transformation comprises:
a second filter unit for performing a first level horizontal transformation in which the second filter unit has first and second outputs; a first single delay connected to the first output of the second filter;
a second single delay connected to the second output of the second filter;
a double delay connected to the second output of the second filter;
a first multiplexer connected to receive the outputs of the first single delay and the double delay;
a second multiplexer connected to receive an output of the first filter unit and an output of the second single delay; and
a third filter unit connected to receive the outputs from the first and second multiplexers and to perform a first level vertical transformation.
einen Kompressor;
einen Arbeitsraumspeicher, der an den Kompressor angeschlossen ist, wobei der Arbeitsraumspeicher dieselbe Größe hat wie das Bild, und der Kompressor den Arbeits raumspeicher verwendet, um das Bild zu kodieren, indem Koeffizienten verwendet werden, die größer sind als die Pixel in dem Bild.20. An apparatus for compressing an image, the apparatus comprising:
a compressor;
a workspace memory connected to the compressor, the workspace memory having the same size as the image, and the compressor using the workspace memory to encode the image by using coefficients greater than the pixels in the image.
Kodieren der wichtigsten Daten;
Kodieren der Position der ersten Bitebene in den weniger wichtigen Daten für jeden Koeffizienten, die nicht vollständig aus Null-Kopfbits besteht;
Kodieren jeder Bitebene von weniger wichtigen Daten, die nicht vollständig aus Null-Kopfbits besteht.21. A method of encoding information comprising the most important data and the less important data, the method comprising the steps of:
Coding the most important data;
Encoding the position of the first bit plane in the less important data for each coefficient that is not entirely zero header bits;
Encoding each bitplane of less important data that is not entirely zero overhead bits.
für jeden Baum,
Kodieren des ss-Koeffizienten;
Durchführen eines Vorhersehens für die wichtigsten Daten; und
für jeden Nicht-ss-Koeffizienten,
Kodieren eines Kopf- oder Schwanzbits für jede Bitebene mit Daten,
und
Kodieren eines Vorzeichenbits, falls der Koeffizient nicht Null ist. 24. The method of claim 21, wherein the step of encoding the most important data comprises the steps of:
for every tree,
Encoding the ss coefficient;
Performing a foresight for the most important data; and
for each non-ss coefficient,
Coding a header or tail bit for each bit-plane with data
and
Encoding a sign bit if the coefficient is not zero.
für jeden Baum
Kodieren des ss-Koeffizienten;
Durchführen eines Vorhersehens, um Bitebenen zu bestimmen, die alle Null-Kopfbits für alle Nicht-SS-Koeffizienten in jedem Baum sind;
es wird bestimmt, ob die wichtigsten Daten des gesamten Baums Null sind;
falls die wichtigsten Daten des gesamten Baums nicht Null sind, dann
für alle Koeffizient in dem Baum
Bits des aktuellen Koeffizienten für alle Bitebenen werden kodiert, wobei der aktuelle Koeffizient der erste Nicht-ss-Koeffizient in dem Baum ist und mit der ersten Bitebene begonnen wird, die Daten enthält;
das Vorzeichenbit wird kodiert, falls der aktuelle Koeffi zient nicht Null ist.30. The method of claim 21, wherein the step of encoding the most important data comprises the steps of:
for every tree
Encoding the ss coefficient;
Performing a prediction to determine bit planes that are all zero overhead bits for all non-SS coefficients in each tree;
it is determined if the most important data of the whole tree is zero;
if the most important data of the whole tree is not zero, then
for all coefficient in the tree
Bits of the current coefficient for all bit-planes are encoded, the current coefficient being the first non-ss coefficient in the tree and starting with the first bit-plane containing data;
the sign bit is encoded if the current coefficient is not zero.
für jeden Baum;
für jeden Koeffizienten;
ein Vorhersehen wird durchgeführt, falls am Start eines Vorher sehintervalls;
Kodieren eines Kopf- oder Schwanzbits, falls das Vorhersehen nicht aktiv ist;
und
Kodieren eines Vorzeichenbits, falls das erste Ein-Bit aufgetreten ist und das Vorhersehen nicht aktiv ist.31. The method of claim 21, wherein the step of encoding the less important data comprises the steps of:
for every tree;
for each coefficient;
foresight is performed if at the start of a previous viewing interval;
Coding a header or tail bit if foresight is not active;
and
Encoding a sign bit if the first one bit has occurred and the look ahead is not active.
eine Einrichtung zum Kodieren der wichtigsten Daten;
eine Einrichtung zum Kodieren der Position der ersten Bitebene in den weniger wichtigen Daten für jeden Koeffizienten, der nicht vollständig aus Null-Kopfbits besteht;
eine Einrichtung zum Kodieren jeder Bitebene von weniger wichtigen Daten, die nicht vollständig aus Null-Kopfbits bestehen. 32. Apparatus for coding information comprising the most important data and the less important data, the apparatus comprising:
means for encoding the most important data;
means for encoding the position of the first bit plane in the less important data for each coefficient that does not consist entirely of zero overhead bits;
means for encoding each bitplane of less important data that does not consist entirely of zero overhead bits.
eine Einrichtung zum Kodieren des SS-Koeffizienten für jede Baum;
eine Einrichtung zum Durchführen eines Vorhersehens für die wichtigsten Daten für jeden Baum;
eine Einrichtung zum Kodieren eines Kopf- oder Schwanzbits für jede Bitebene mit Daten für jeden Nicht-SS-Koeffizienten für jeden Baum; und
eine Einrichtung zum Kodieren eines Vorzeichenbits, falls der Koeffizient für jeden Nicht-SS-Koeffizienten für jeden Baum nicht Null ist.35. Apparatus according to claim 32, wherein said means for encoding the most important data comprises:
means for encoding the SS coefficient for each tree;
means for making a prediction of the most important data for each tree;
means for coding a header or tail bit for each bit plane with data for each non-SS coefficient for each tree; and
means for encoding a sign bit if the coefficient for each non-SS coefficient for each tree is not zero.
eine Einrichtung zum Kodieren des SS-Koeffizienten für jeden Baum;
eine Einrichtung zum Durchführen eines Vorhersehens, um Bitebenen zu bestimmen, die alle Null-Kopfbits für alle Nicht-SS-Koeffizienten in jedem Baum sind;
eine Einrichtung zum Bestimmen, ob die wichtigsten Daten des gesamten Baumes für jeden Baum Null sind; und
eine Einrichtung, um Bits des aktuellen Koeffizienten für alle Bitebenen in dem Baum zu kodieren, falls die wichtigsten Daten für den gesamten Baum nicht Null sind, wobei der aktuelle Koeffizient der erste Nicht-ss-Koeffizienten in dem Baum ist und wobei mit der ersten Bitebene gestartet wird, die Daten enthält;
eine Einrichtung zum Kodieren des Vorzeichenbits, falls der aktuelle Koeffizient nicht Null ist für alle Koeffizienten in dem Baum, falls die wichtigsten Daten für den ganzen Baum nicht Null sind.41. Apparatus according to claim 32, wherein said means for encoding the most important data comprises:
means for coding the SS coefficient for each tree;
means for performing a look-ahead to determine bit planes that are all zero overhead bits for all non-SS coefficients in each tree;
means for determining if the most important data of the whole tree is zero for each tree; and
means for encoding bits of the current coefficient for all bit-planes in the tree if the most important data for the whole tree is non-zero, the current coefficient being the first non-ss coefficients in the tree and being at the first bit-plane is started, which contains data;
means for encoding the sign bit if the current coefficient is not zero for all coefficients in the tree if the most important data for the whole tree is not zero.
eine Einrichtung zum Durchführen eines Vorhersehens für jeden Koeffizienten für jeden Baum, falls am Start eines Vorherseh-Intervalls;
eine Einrichtung zum Kodieren eines Kopf- oder Schwanzbits für jeden Koeffi zienten für jeden Baum, falls das Vorhersehen nicht aktiv ist; und
eine Einrichtung zum Kodieren eines Vorzeichenbits für jeden Koeffizienten für jeden Baum, falls das erste Ein-Bit aufgetreten ist und das Vorhersehen nicht aktiv ist.42. Apparatus according to claim 32, wherein the means for encoding the less important data comprises:
means for performing a prediction for each coefficient for each tree, if at the start of a foresight interval;
means for coding a header or tail bit for each coefficient for each tree if the anticipation is not active; and
means for encoding a sign bit for each coefficient for each tree if the first one bit has occurred and the look ahead is not active.
eine vorbestimmte Anzahl von Koeffizienten wird untersucht;
ein Entropiekodieren aller Kopfbits mit einem pro Zyklus, bis alle Kopfbits in der vorbestimmten Anzahl von Koeffizienten kodiert sind;
ein Kodieren der Vorzeichen- und Schwanzbits der vorbestimmten Anzahl von Koeffizienten in demselben Zyklus.43. A method for m-ary encoding information, the method comprising the steps of:
a predetermined number of coefficients are examined;
entropy coding each header bit with one per cycle until all header bits in the predetermined number of coefficients are encoded;
encoding the sign and tail bits of the predetermined number of coefficients in the same cycle.
eine Pixeldaten-Schnittstelle, um Pixeldaten zwischen dem IC-Chip und dem Speicher zu übertragen;
eine reversible Wavelet-Transformation, die an die Pixeldaten-Schnittstelle angeschlossen ist, um Information zu und von dem Speicher über die Pixeldaten-Schnitt stelle zu übertragen;
ein Kontextmodell, das an die reversible Wavelet-Transformation angeschlossen ist, um Kontexte zum Kodieren der Daten, die davon beliefert werden, bereitzustellen;
einen Kodierer, um Koeffizienten zu kodieren, die durch die reversible Wavelet-Trans formation basierend auf Kontexten, die von dem Kontextmodell bereitgestellt werden, erzeugt werden.44. An integrated circuit (IC) chip, comprising:
a pixel data interface for transferring pixel data between the IC chip and the memory;
a reversible wavelet transform connected to the pixel data interface to transfer information to and from the memory via the pixel data interface;
a context model coupled to the reversible wavelet transform to provide contexts for encoding the data supplied thereby;
an encoder to encode coefficients generated by the reversible wavelet transform based on contexts provided by the context model.
wenigstens einen Bitgenerator, der angeschlossen ist, um die kodierten Daten zu empfangen und um die kodierten Daten basierend auf einer Wahrscheinlichkeitsschät zung zu dekodieren, wobei der wenigstens eine Bitgenerator ein dekodiertes Bit von einer aktuellen Zeile erzeugt;
eine Wahrscheinlichkeitsschätzmaschine, die an den wenigstens einen Bitgenera tor angeschlossen ist, um die Wahrscheinlichkeitsschätzung basierend auf dem deko dierten Bit von der aktuellen Zeile zu liefern;
ein Kontextmodell, das an die Wahrscheinlichkeitsschätzmaschine angeschlossen ist, um eine Anzahl von Kontexten der Wahrscheinlichkeitsschätzmaschine bereit zustellen, und zwar basierend auf einer Teil-Kontextadresse, wobei die Wahrscheinlich keitsschätzmaschine unter der Anzahl bzw. Vielzahl von Kontexten basierend auf dem dekodierten Bit auswählt. 51. A decoder for decoding coded data, the decoder comprising:
at least one bit generator connected to receive the encoded data and to decode the encoded data based on a probability estimate, the at least one bit generator generating a decoded bit from a current line;
a probability estimator connected to the at least one bit generator for providing the probability estimate based on the decoded bit from the current line;
a context model coupled to the probability estimator to provide a number of contexts to the probability estimator based on a partial context address, wherein the probability estimator selects among the plurality of contexts based on the decoded bit.
eine erste Bitebeneneinheit, die angeschlossen ist, um weniger wichtige Daten und wichtigste Daten zu empfangen, um zu bestimmen, welche Bitebenen Daten in sich haben, wobei die erste Bitebeneneinheit eine Anzeige der Bitebene mit dem ersten Ein-Bit für die gesamte Kodiereinheit zur Verwendung, wenn die weniger wichtigen Daten verarbeitet werden, erzeugt;
einen Vergleichsmechanismus, der angeschlossen ist, um die weniger wichtigen Daten und die wichtigsten Daten zu empfangen, um eine Signalisierinformation für die weniger wichtigen Daten zu erzeugen;
einen Speicher, der angeschlossen ist, um das Vorzeichenbit, die wichtigsten Daten und eine Anzeige der ersten Bitebene mit Daten zu empfangen, wobei der Speicher Koeffizienten verzögert, um Konditionierinformation bereitzustellen;
ein erstes Kontextmodell, das an den Speicher angeschlossen ist, um Kontexte für Vorzeichenbits bereitzustellen;
ein zweites Kontextmodell, das an den Speicher und die wichtigsten Daten angeschlossen ist, um Kontexte für die Kopfbits bereitzustellen; und
das dritte Kontextmodell, das an den Speicher und die wichtigsten Daten angeschlossen ist, um Kontexte für die Schwanzbits bereitzustellen.55. Context Model, comprising:
a first bit plane unit connected to receive less important data and most important data to determine which bit planes have data in it, the first bit plane unit displaying the bit plane having the first one bit for the entire coding unit for use, when the less important data is processed, generated;
a comparison mechanism connected to receive the less important data and the most important data to generate signaling information for the less important data;
a memory coupled to receive the sign bit, the most important data, and a first bit-plane indication with data, the memory delaying coefficients to provide conditioning information;
a first context model connected to the memory to provide sign bits contexts;
a second context model connected to the memory and the most important data to provide contexts for the header bits; and
the third context model attached to the memory and the most important data to provide tail bits contexts.
eine erste Vergleichseinheit, um zu bestimmen, falls die wichtigsten Daten gleich Null sind, um anzuzeigen, daß ein Schwanzbit bereits aufgetreten ist, wobei die Ausgabe der ersten Vergleichseinheit ein Schwanz-ein-Bit ist;
eine zweite Vergleichseinheit, um zu bestimmen, ob die wichtigsten Daten gleich Eins sind, wobei eine Ausgabe der zweiten Vergleichseinheit gleich Null ist, wenn die wichtigsten Daten gleich Eins sind; und
einen Multiplexer, der angeschlossen ist, um die Ausgabe der zweiten Ver gleichseinheit und das Vorzeichenbit zu empfangen, um ein erstes Schwanzbit auszu geben, falls der Auswähleingang in einem ersten Zustand ist, und um das Vorzeichen auszugeben, falls der Auswähleingang in einem zweiten Zustand ist.59. The contextual model of claim 55, wherein the comparison mechanism comprises:
a first compare unit for determining if the most important data is equal to zero to indicate that a tail bit has already occurred, the output of the first compare unit being a tail-a-bit;
a second compare unit for determining if the most important data is equal to one, an output of the second compare unit being equal to zero if the most important data is equal to one; and
a multiplexer connected to receive the output of the second compare unit and the sign bit to output a first tail bit if the select input is in a first state and to output the sign if the select input is in a second state ,
ein ODER-Gatter, das angeschlossen ist, um einen Koeffizienten und eine Rückkopplung zu empfangen;
ein Register, das angeschlossen ist, um die Ausgabe des ODER-Gatters zu empfangen; und
einen Prioritätskodierer, der angeschlossen ist, um die Ausgabe des Registers zu empfangen, um die erste Bitebene des Koeffizienten aufzuzeichnen, die eine Eins hat.62. The context model of claim 55, wherein the first bit level comprises:
an OR gate connected to receive a coefficient and a feedback;
a register connected to receive the output of the OR gate; and
a priority encoder connected to receive the output of the register for recording the first bit-plane of the coefficient having a one.
die mittlere Länge von Kodewörtern wird bestimmt, um eine Kodierrate zu identifizieren bzw. zu erkennen; und
eine Kompressionsrate wird basierend auf einem gewünschten Kompressions umfang eingestellt bzw. justiert.65. A method of performing compression comprising the following steps:
the average length of codewords is determined to identify a coding rate; and
a compression rate is adjusted based on a desired amount of compression.
ein Umfang bzw. Grad eines Quantisierungsniveaus wird erhöht, falls die Kodierrate anzeigt, daß die Kompression unterhalb eines ersten gewünschten Niveaus ist; und
der Grad bzw. der Umfang der Quantisierung wird abgesenkt, falls die Kodier rate anzeigt, daß die Kompression oberhalb des zweiten gewünschten Niveaus ist.66. The method of claim 65, further comprising the steps of:
a degree of quantization level is increased if the coding rate indicates that the compression is below a first desired level; and
the degree of quantization is lowered if the coding rate indicates that the compression is above the second desired level.
ein Kontextmodell;
eine Wahrscheinlichkeitsschätzmaschine, die an das Kontextmodell angeschlos sen ist;
einen Bitgenerator, der an die Wahrscheinlichkeitsschätzmaschine angeschlossen ist; und
eine Kodierratensteuerung, die an einen Ausgang des Bitgenerators angeschlos sen ist, um die Kodierrate zu steuern, indem eine mittlere Kodewortlänge bestimmt wird. 72. System comprising:
a context model;
a probability estimator that is connected to the context model;
a bit generator connected to the probability estimator; and
a coding rate controller connected to an output of the bit generator to control the coding rate by determining a mean code word length.
ein erster Teil von Daten wird von einem Speicher gelesen; und
eine zweite Datenmenge größer als die erste wird zu dem Speicher geschrieben, während die erste Datenmenge gelesen wird, um transformierte Bitebenen mit weniger Daten in den Bitebenen niedrigerer Ordnung des Satzes transformierter Koeffizienten auszugleichen.77. A method of processing a least significant portion of data bit-planes for a set of transformed coefficients, comprising the steps of:
a first part of data is read from a memory; and
a second data set greater than the first is written to the memory while the first data set is read to balance transformed bit planes with less data in the lower order bit planes of the set of transformed coefficients.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US84707497A | 1997-05-01 | 1997-05-01 | |
US08/847,074 | 1997-05-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19819405A1 true DE19819405A1 (en) | 1998-11-26 |
DE19819405B4 DE19819405B4 (en) | 2006-06-29 |
Family
ID=25299688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19819405A Expired - Fee Related DE19819405B4 (en) | 1997-05-01 | 1998-04-30 | Implementation of a reversible embedded wavelet system |
Country Status (6)
Country | Link |
---|---|
JP (2) | JP4148429B2 (en) |
KR (1) | KR100317792B1 (en) |
DE (1) | DE19819405B4 (en) |
FR (1) | FR2763766B1 (en) |
GB (1) | GB2325584B (en) |
HK (1) | HK1023470A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10008055A1 (en) * | 2000-02-22 | 2001-08-30 | Infineon Technologies Ag | Data compression method |
DE19844752B4 (en) * | 1997-09-30 | 2005-10-13 | Ricoh Co., Ltd. | An improved compression and decompression system with reversible wavelets and lossy roconstruction |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6201897B1 (en) * | 1998-11-09 | 2001-03-13 | Earth Resource Mapping | Transformation and selective inverse transformation of large digital images |
US6633688B1 (en) | 2000-04-28 | 2003-10-14 | Earth Resource Mapping, Inc. | Method system and apparatus for providing image data in client/server systems |
KR20030021009A (en) * | 2001-09-05 | 2003-03-12 | 김효준 | Image compression method using block-based zerotree and quadtree |
KR100451584B1 (en) * | 2001-12-20 | 2004-10-08 | 엘지전자 주식회사 | Device for encoding and decoding a moving picture using of a wavelet transformation and a motion estimation |
FR2834832B1 (en) * | 2002-01-11 | 2005-05-20 | Canon Kk | CODING DIGITAL DATA WITH HISTOGRAM CALCULATION |
US7460722B2 (en) | 2002-01-11 | 2008-12-02 | Canon Kabushiki Kaisha | Encoding of digital data with determination of sample path |
WO2004028142A2 (en) * | 2002-09-17 | 2004-04-01 | Vladimir Ceperkovic | Fast codec with high compression ratio and minimum required resources |
BRPI0818039A2 (en) | 2007-10-15 | 2014-10-14 | Chugai Pharmaceutical Co Ltd | METHOD FOR PRODUCING A CAPABLE OF HIGH-INCOME HYPEROPROTEIN PRODUCTION CELL. |
CN101981592B (en) * | 2007-11-30 | 2013-02-06 | 三菱电机株式会社 | Content aware resizing of images and videos |
KR101681059B1 (en) * | 2009-09-22 | 2016-12-01 | 삼성전자주식회사 | Video signal generation apparatus and method for minimizing crosstalk between luminace signal and color difference signal |
JP5298381B2 (en) * | 2011-12-20 | 2013-09-25 | 株式会社アクセル | Image processing apparatus and image processing method |
US9813718B2 (en) | 2013-10-03 | 2017-11-07 | Samsung Display Co., Ltd. | Apparatus and method for compact bit-plane data compression |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3639753A1 (en) * | 1986-11-21 | 1988-06-01 | Inst Rundfunktechnik Gmbh | METHOD FOR TRANSMITTING DIGITALIZED SOUND SIGNALS |
US5272478A (en) * | 1992-08-17 | 1993-12-21 | Ricoh Corporation | Method and apparatus for entropy coding |
US5638498A (en) * | 1992-11-10 | 1997-06-10 | Adobe Systems Incorporated | Method and apparatus for reducing storage requirements for display data |
US5381145A (en) * | 1993-02-10 | 1995-01-10 | Ricoh Corporation | Method and apparatus for parallel decoding and encoding of data |
US5583500A (en) * | 1993-02-10 | 1996-12-10 | Ricoh Corporation | Method and apparatus for parallel encoding and decoding of data |
DE19549491C2 (en) * | 1994-02-23 | 2003-08-07 | Ricoh Kk | Palletised image compression with entropy encoding |
GB2293734B (en) * | 1994-09-20 | 1997-04-09 | Ricoh Kk | Method for compression using reversible embedded wavelets |
US5748786A (en) * | 1994-09-21 | 1998-05-05 | Ricoh Company, Ltd. | Apparatus for compression using reversible embedded wavelets |
JP3302229B2 (en) * | 1994-09-20 | 2002-07-15 | 株式会社リコー | Encoding method, encoding / decoding method and decoding method |
GB2305829B (en) * | 1994-09-20 | 1997-10-22 | Ricoh Kk | A coder |
US6195465B1 (en) * | 1994-09-21 | 2001-02-27 | Ricoh Company, Ltd. | Method and apparatus for compression using reversible wavelet transforms and an embedded codestream |
US5867602A (en) * | 1994-09-21 | 1999-02-02 | Ricoh Corporation | Reversible wavelet transform and embedded codestream manipulation |
US5966465A (en) * | 1994-09-21 | 1999-10-12 | Ricoh Corporation | Compression/decompression using reversible embedded wavelets |
US5881176A (en) * | 1994-09-21 | 1999-03-09 | Ricoh Corporation | Compression and decompression with wavelet style and binary style including quantization by device-dependent parser |
US5731988A (en) * | 1995-05-08 | 1998-03-24 | Richo Company, Ltd. | Method and apparatus for reversible color conversion |
-
1998
- 1998-04-21 GB GB9808412A patent/GB2325584B/en not_active Expired - Fee Related
- 1998-04-28 JP JP11804898A patent/JP4148429B2/en not_active Expired - Fee Related
- 1998-04-30 KR KR1019980015709A patent/KR100317792B1/en not_active IP Right Cessation
- 1998-04-30 DE DE19819405A patent/DE19819405B4/en not_active Expired - Fee Related
- 1998-04-30 FR FR9805485A patent/FR2763766B1/en not_active Expired - Fee Related
-
2000
- 2000-04-28 HK HK00102587A patent/HK1023470A1/en not_active IP Right Cessation
-
2007
- 2007-03-26 JP JP2007080246A patent/JP2007267384A/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19844752B4 (en) * | 1997-09-30 | 2005-10-13 | Ricoh Co., Ltd. | An improved compression and decompression system with reversible wavelets and lossy roconstruction |
DE10008055A1 (en) * | 2000-02-22 | 2001-08-30 | Infineon Technologies Ag | Data compression method |
Also Published As
Publication number | Publication date |
---|---|
DE19819405B4 (en) | 2006-06-29 |
KR19980086694A (en) | 1998-12-05 |
GB2325584B (en) | 2000-03-29 |
FR2763766B1 (en) | 2002-10-25 |
JP2007267384A (en) | 2007-10-11 |
FR2763766A1 (en) | 1998-11-27 |
GB9808412D0 (en) | 1998-06-17 |
JPH10304368A (en) | 1998-11-13 |
HK1023470A1 (en) | 2000-09-08 |
JP4148429B2 (en) | 2008-09-10 |
GB2325584A (en) | 1998-11-25 |
KR100317792B1 (en) | 2002-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19626615C2 (en) | Compression method and apparatus using reversible wavelet transforms and an embedded code stream | |
DE19626600C2 (en) | Encoder and coding method | |
DE19861377B4 (en) | An improved compression and decompression system with reversible wavelets and lossy reconstruction | |
US5966465A (en) | Compression/decompression using reversible embedded wavelets | |
US5881176A (en) | Compression and decompression with wavelet style and binary style including quantization by device-dependent parser | |
US7492955B2 (en) | Method and apparatus for compression using reversible wavelet transforms and an embedded codestream | |
US6256415B1 (en) | Two row buffer image compression (TROBIC) | |
US7227999B2 (en) | Printing system application using J2K | |
DE69722601T2 (en) | DATA COMPRESSION WITH HYBRID LOSS ENTROPY CODING FROM RUN-LENGTH CODES | |
US6229927B1 (en) | Reversible embedded wavelet system implementation | |
US6757437B1 (en) | Compression/decompression using reversible embedded wavelets | |
US20030118241A1 (en) | Method and apparatus for compression using reversible wavelet transforms and an embedded codestream | |
DE19819405B4 (en) | Implementation of a reversible embedded wavelet system | |
DE19534730A1 (en) | Entropy encoder for facsimile transmission | |
US6934420B1 (en) | Wave image compression | |
DE69936304T2 (en) | RANGE-BASED SCALABLE PICTURE CODING | |
DE602004011213T2 (en) | INTRAFRAME COMPRESSION AND DECOMPRIMATION OF VIDEO SIGNALS WITH A FIXED BITRATE | |
Ngadiran | Rate scalable image compression in the wavelet domain | |
MILOVANOVIC et al. | DEVELOPMENT OF WAVELET TECHNIQUES IN JPEG2000 IMAGE CODING STANDARD | |
KR20000060518A (en) | Image compressing method |
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 |