US20060222254A1  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream  Google Patents
Method and apparatus for compression using reversible wavelet transforms and an embedded codestream Download PDFInfo
 Publication number
 US20060222254A1 US20060222254A1 US11/371,725 US37172506A US2006222254A1 US 20060222254 A1 US20060222254 A1 US 20060222254A1 US 37172506 A US37172506 A US 37172506A US 2006222254 A1 US2006222254 A1 US 2006222254A1
 Authority
 US
 United States
 Prior art keywords
 canceled
 data
 bit
 coefficients
 memory
 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.)
 Abandoned
Links
Images
Classifications

 G—PHYSICS
 G06—COMPUTING; CALCULATING; COUNTING
 G06F—ELECTRIC DIGITAL DATA PROCESSING
 G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
 G06F17/10—Complex mathematical operations
 G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, KarhunenLoeve, transforms
 G06F17/148—Wavelet transforms

 H—ELECTRICITY
 H03—BASIC ELECTRONIC CIRCUITRY
 H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
 H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
 H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
 H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and subband transform or selection between H.263 and H.264

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
 H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and subband transform or selection between H.263 and H.264
 H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of subband transforms of varying structure or type

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
 H04N19/129—Scanning of coding units, e.g. zigzag scan of transform coefficients or flexible macroblock ordering [FMO]

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
 H04N19/146—Data rate or code amount at the encoder output
 H04N19/15—Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
 H04N19/156—Availability of hardware or computational resources, e.g. encoding based on powersaving criteria

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
 H04N19/162—User input

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
 H04N19/167—Position within a video image, e.g. region of interest [ROI]

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
 H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
 H04N19/1883—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit relating to subband structure, e.g. hierarchical level, directional tree, e.g. lowhigh [LH], highlow [HL], highhigh [HH]

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
 H04N19/36—Scalability techniques involving formatting the layers as a function of picture distortion after decoding, e.g. signaltonoise [SNR] scalability

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/46—Embedding additional information in the video signal during the compression process

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
 H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
 H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
 H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using subband based transform, e.g. wavelets

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
 H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using subband based transform, e.g. wavelets
 H04N19/635—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using subband based transform, e.g. wavelets characterised by filter definition or implementation details

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
 H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using subband based transform, e.g. wavelets
 H04N19/64—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using subband based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
 H04N19/645—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using subband based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission by grouping of coefficients into blocks after the transform

 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 subband based transform, e.g. wavelets
 H04N19/64—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using subband based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
 H04N19/647—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using subband based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10H04N19/85, e.g. fractals
 H04N19/98—Adaptivedynamicrange coding [ADRC]

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
 H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
 H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peertopeer communication via Internet between remote STB's; Communication protocols; Addressing
 H04N21/637—Control signals issued by the client directed to the server or network components
 H04N21/6377—Control signals issued by the client directed to the server or network components directed to server

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
 H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
 H04N21/65—Transmission of management data between client and server
 H04N21/658—Transmission by the client directed to the server

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
 H04N19/115—Selection of the code volume for a coding unit prior to coding

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
 H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
 H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
 H04N19/146—Data rate or code amount at the encoder output

 H—ELECTRICITY
 H04—ELECTRIC COMMUNICATION TECHNIQUE
 H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
 H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
 H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
Abstract
A compression and decompression system in which a reversible wavelet filter are used to generates coefficients from input data, such as image data. The reversible wavelet filter is an efficient transform implemented with integer arithmetic that has exact reconstruction. The present invention uses the reversible wavelet filter in a lossless system (or lossy system) in which an embedded codestream is generated from the coefficients produced by the filter. An entropy coder performs entropy coding on the embedded codestream to produce the compressed data stream.
Description
 This application is a continuationinpart of Ser. No. 08/310,146, entitled Apparatus for Compression Using Reversible Embedded Wavelets, filed Sep. 20, 1994.
 The present invention relates to the field of data compression and decompression systems; particularly, the present invention relates to a method and apparatus for lossless and lossy encoding and decoding of data in compression/decompression systems.
 Data compression is an extremely useful tool for storing and transmitting large amounts of data. For example, the time required to transmit an image, such as a facsimile transmission of a document, is reduced drastically when compression is used to decrease the number of bits required to recreate the image.
 Many different data compression techniques exist in the prior art. Compression techniques can be divided into two broad categories, lossy coding and lossless coding. Lossy coding involves coding that results in the loss of information, such that there is no guarantee of perfect reconstruction of the original data. The goal of lossy compression is that changes to the original data are done in such a way that they are not objectionable or detectable. In lossless compression, all the information is retained and the data is compressed in a manner which allows for perfect reconstruction.
 In lossless compression, input symbols or intensity data are converted to output codewords. The input may include image, audio, onedimensional (e.g., data changing spatially or temporally), twodimensional (e.g., data changing in two spatial directions (or one spatial and one temporal dimension)), or multidimensional/multispectral data. If the compression is successful, the codewords are represented in fewer bits than the number of bits required for the uncoded input symbols (or intensity data). Lossless coding methods include dictionary methods of coding (e.g., LempelZiv), run length encoding, enumerative coding and entropy coding. In lossless image compression, compression is based on predictions or contexts, plus coding. The JBIG standard for facsimile compression and DPCM (differential pulse code modulation—an option in the JPEG standard) for continuoustone images are examples of lossless compression for images. In lossy compression, input symbols or intensity data are quantized prior to conversion to output codewords. Quantization is intended to preserve relevant characteristics of the data while eliminating unimportant characteristics. Prior to quantization, lossy compression system often use a transform to provide energy compaction. JPEG is an example of a lossy coding method for image data.
 Recent developments in image signal processing continue to focus attention on a need for efficient and accurate forms of data compression coding. Various forms of transform or pyramidal signal processing have been proposed, including multiresolution pyramidal processing and wavelet pyramidal processing. These forms are also referred to as subband processing and hierarchical processing. Wavelet pyramidal processing of image data is a specific type of multiresolution pyramidal processing that may use quadrature mirror filters (QMFs) to produce subband decomposition of an original image. Note that other types of nonQMF wavelets exist. For more information on wavelet processing, see Antonini, M., et al., “Image Coding Using Wavelet Transform”, IEEE Transactions on Image Processing, Vol. 1, No. 2, April 1992; Shapiro, J., “An Embedded Hierarchical Image Coder Using Zerotrees of Wavelet Coefficients”, Proc. IEEE Data Compression Conference, pgs. 214223, 1993.
 One problem associated with much of prior art wavelet processing is that a large memory is required to store all of the data while it is being processed. In other words, in performing wavelet processing, all of the data must be examined before encoding is performed on the data. In such a case, there is no data output until at least one full pass has been made through all of the data. In fact, wavelet processing typically involves multiple passes through the data. Because of this, a large memory is often required. It is desirable to utilize wavelet processing, while avoiding the requirement of a large memory. Furthermore, it is desirable to perform wavelet processing using only a single pass through the data.
 Many wavelet or subband transform implementations require filters in a particular canonical form. For example, low and highpass filters must be the same length, the sum of the squares of the coefficients must be one, the highpass filter must be the time and frequency reverse of the lowpass filter, etc. (See U.S. Pat. No. 5,014,134 issued May 1991 to Lawton et al.). It is desirable to allow a wider class of filters. That is, it is desirable to provide wavelet or subband transform implementations that use low and highpass filters that are not the same length, the sum of the squares of the coefficients need not be one, the highpass filter need not be the time and frequency reverse of the lowpass filter, etc.
 The present invention provides lossy and lossless compression using a transform that provides good energy compaction.
 A compression and decompression system is described. In the compression system, an encoder encodes input data into a compressed data stream. In one embodiment, the encoder comprises a reversible wavelet filter, an ordering and modeling mechanism and an entropy coder. The reversible wavelet filter transforms the input data into a plurality of coefficients. The ordering and modeling mechanism receives the coefficients and generates an embedded codestream. The entropy coder performs entropy coding on the embedded codestream to produce the compressed data stream.
 The present invention will be understood more fully from the detailed description given below and from the accompanying drawings of various embodiments of the invention, which, however, should not be taken to limit the invention to the specific embodiments, but are for explanation and understanding only.

FIG. 1 is a block diagram of one embodiment of the encoding portion of the coding system of the present invention. 
FIG. 2 is a block diagram of one embodiment of the coefficient data ordering and modeling of the present invention. 
FIG. 3A is a block diagram of a wavelet analysis/synthesis system. 
FIG. 3B illustrates forward and reverse representations of transform systems for filtering with nonoverlapped minimal length reversible filters. 
FIG. 4 is a block diagram illustrating alternative embodiments of a 2D reversible filter. 
FIG. 5 illustrate results of performing a four level decomposition. 
FIG. 6 illustrates the parental relationship between two consecutive levels. 
FIG. 7 is a block diagram of a threelevel pyramidal transform. 
FIG. 8 is a block diagram of a twodimensional, two level transform. 
FIG. 9 is a block diagram illustrating onedimensional filters performing a multiresolution decompression. 
FIG. 10 is a block diagram of a system using the reversible wavelets of the present invention. 
FIG. 11 are block diagrams of enhancement and analysis system using the reversible wavelets of the present invention. 
FIG. 12A illustrates coefficient size in the present invention. 
FIG. 12B is one embodiment of the multipliers for the frequency band used for coefficient alignment in the present invention. 
FIG. 13 is a flow chart of one embodiment of the encoding process of the present invention. 
FIG. 14 is a flow chart of one embodiment of the decoding process of the present invention. 
FIG. 15 is a flow chart of the modeling process of the present invention. 
FIG. 16 is one embodiment of the forward wavelet filter of the present invention. 
FIG. 17 is a block diagram of one embodiment of a reverse wavelet filter of the present invention. 
FIG. 18 illustrates the coefficient range of various transforms. 
FIGS. 19A and 19B illustrate two embodiments of context models using lookup tables. 
FIG. 20 illustrates one embodiment of a wavelet decomposition stages. 
FIG. 21 illustrates one coding unit. 
FIG. 22 illustrates vertical passes with the TStransform. 
FIG. 23 illustrates buffering and coefficient computation. 
FIG. 24A illustrates one embodiment of a codestream configuration. 
FIG. 24B illustrates one embodiment of a codestream configuration for a low resolution target. 
FIG. 25 illustrates the neighboring relationship among coefficients (or pixels).  FIGS. 26AD illustrate embodiments of context models.

FIG. 27 is a block diagram of one embodiment of the context model of the present invention. 
FIG. 28 is a block diagram of one embodiment of the sign/magnitude unit of the present invention. 
FIG. 29 illustrates the dynamic allocation of coded data memory for one pass operation. 
FIG. 30 illustrates one embodiment of a channel manager. 
FIG. 31 illustrates memory utilization in the present invention. 
FIG. 32 illustrates a bitstream in the present invention. 
FIG. 33 illustrates the structure of a segment. 
FIG. 34 illustrates target devices versus a parameter space. 
FIGS. 35A and 35B illustrate various embodiments of the parser of the present invention.  A method and apparatus for compression and decompression is described. In the following detailed description of the present invention numerous specific details are set forth, such as types of coders, numbers of bits, signal names, etc., in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, wellknown structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.
 Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a selfconsistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
 It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
 The present invention also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose machines may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these machines will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
 The following terms are used in the description that follows. A definition has been included for these various terms. However, the definition provided should not be considered limiting to the extent that the terms are known in the art. These definitions are provided to help in the understanding of the present invention.
 bitsignificance: A number representation, similar to sign magnitude, with head bits, followed by the sign bit, followed by tail bits, if any. The embedding encodes in bitplane order with respect to this representation.
 coding unit: Unit of coefficients that are coded together and can be in arbitrary order. In one embodiment, a coding unit comprises one or more trees arranged in a rectangle. A coding unit may consist of an entire image, set of images or other data set. The coding unit has a significant impact on the buffer size needed for computing a transform. Also, in one embodiment, no contents can be derived from coefficients outside the current coding unit. However, the entropy codes may be reset within a coding unit or after many coding units. The coding unit is not necessarily randomly addressable.
 context model: Available information relative to the current bit to be coded that give historically learned information about the current bit. This enables conditional probability estimation for entropy coding.
 trees: The coefficients, and the pixels, that are related to a single coefficient in the LL of the highest level wavelet decomposition. The number of coefficients is a number of the number of levels.
 band: The coefficients, and the pixels, that are related to a single row or line of coefficients in the LL of the highest level wavelet decomposition for twodimensional data. Bands are similarly defined for data of other dimensions.
 decomposition level: A location in the wavelet decomposition pyramid.
 embedded quantization: Quantization that is implied by the codestream. For example, if the importance levels are placed in order, from the most important to the least, then quantization is performed by simple truncation of the codestream. The same functionality is available with tags, markers, pointers, or other signaling.
 entropy coder: A device that encodes a current bit based on its context. The context allows probability estimation for the best representation of the current bit (or multiple bits).
 fixedrate: An application or system that maintains a certain pixel rate and has a limited bandwidth channel. This requires achieving local average compression rather than a global average compression. Example: MPEG.
 fixedsize: An application or system that has a limited size buffer. In such a case, a global average compression is achieved, e.g., a print buffer. (An application can be both fixedrate and fixedsize or either.)
 fixedlength: A system that converts a specific block of data to a specific block of compressed data, e.g., BTC. Fixedlength codes serve fixedrate and fixedsize applications; however, the ratedistortion performance is often poor compared with variable rate systems.
 Horizon context model: A context model for use with an entropy coder (in one embodiment), defined herein as part of the present invention.
 head: In bitsignificance representation, the head bits are the magnitude bits from the most significant up to and including the first nonzero bit
 overlapped transform: A transform where a single source sample point contributes to multiple coefficients of the same frequency. Examples include many wavelets and the Lapped Orthogonal Transform.
 progressive: A codestream that is ordered such that a coherent decompressed result is available from part of the coded data which can be refined with more data. In some embodiments, a codestream that is ordered with deepening bitplanes of data; in this case, it usually refers to wavelet coefficient data.
 pyramidal: Succession of resolutions where each lower resolution is a linear factor of two greater (a factor of four in area).
 reversible transform: An efficient transform implemented with integer arithmetic that has exact reconstruction.
 Stransform: A specific reversible wavelet filter pair with a 2tap low pass and a 2tap high pass filter.
 tail: In bitsignificance representation, the tail bits are the magnitude bits with less significance than the most significant nonzero bit.
 tail information: In one embodiment, four states possible for a coefficient represented in bitsignificance representation. It is a function of the coefficient and the current bitplane, and is used for the Horizon context model.
 tailon: In one embodiment, two states depending on whether the tail information state is zero or nonzero. It is used for the Horizon context model.
 TStransform: TwoSix transform, a specific wavelet filter pair with a 2tap low pass and a 6tap high pass filter.
 unified lossless/lossy: The same compression system provides a coded data stream capable of lossless or lossy reconstruction. In the case of the present invention as will be described below, this codestream is capable of both without settings or instructions to the encoder.
 visual importance levels: By definition of the specific system, the input data (pixel data, coefficients, error signals, etc.) is divided logically into groups with the same visual impact. For example, the most significant bitplane, or planes, is probably more visually important than lessor planes. Also low frequency information is generally more important than high frequency. Most working definitions of “visual significance”, including the present invention as described below, are with respect to some error metric. Better visual metrics, however, could be incorporated in the system definition of visual importance. Alternate data types have alternate importance levels, for example, audio data has audio importance levels.
 wavelet filters: The high and low pass synthesis and analysis filters used in wavelet transform.
 wavelet transform: A transformation with both “frequency” and “time (or space)” domain constraints. In a described embodiment, it is a transform consisting of 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.
Overview of the Present Invention  The present invention provides a compression/decompression system having an encoding portion and a decoding portion. The encoding portion is responsible for encoding input data to create compressed data, while the decoding portion is responsible for decoding previously encoded data to produce a reconstructed version of the original input data. The input data may comprise a variety of data types, such as image (still or video), audio, etc. In one embodiment, the data is digital signal data; however, analog data digitized, text data formats, and other formats are possible. The source of the data may be a memory or channel for the encoding portion and/or the decoding portion.
 In the present invention, elements of the encoding portion and/or the decoding portion may be implemented in hardware or software, such as that used on a computer system. The present invention provides a lossless compression/decompression system. The present invention may also be configured to perform lossy compression/decompression.
 Overview of the System of the Present Invention

FIG. 1 is a block diagram of one embodiment of the encoding portion of the system. Note the decoding portion of the system operates in reverse order, along with the data flow. Referring toFIG. 1 , input image data 101 is received by wavelet transform block 102. The output of wavelet transform block 102 is coupled to coefficient data ordering and modeling block 103. In response to the output from wavelet transform block 102, the ordering/modeling block 103 produces at least one bit stream that is received by an entropy coder 104. In response to the input from ordering/modeling block 103, entropy coder 104 produces code stream 107.  In one embodiment, the ordering/modeling block 103 comprises a sign/magnitude formatting unit 201 and a joint space/frequency context model 202, such as shown in
FIG. 2 . In one embodiment, the joint space/frequency context model 202 comprises a horizon context model, as is described below. The input of the sign/magnitude unit 201 is coupled to the output of the wavelet transform coding block 102. The output of sign/magnitude unit 201 is coupled to joint space/frequency modeling block 202. The output of JSF context model 202 is coupled to the input of entropy coder 104 which produces the output code stream 107.  Referring back to
FIG. 1 , in the present invention, the image data 101 is received and transform coded using reversible wavelets in wavelet transform block 102, as defined below, to produce a series of coefficients representing a multiresolution decomposition of the image. The reversible wavelet transforms of the present invention are not computationally complicated. The transforms may be performed in software or hardware with no systematic error. Furthermore, the wavelets of the present invention are excellent for energy compaction and compression performance. These coefficients are received by the ordering/modeling block 103.  The ordering/modeling block 103 provides coefficient ordering and modeling. The coefficient ordering provides an embedded data stream. The embedded data stream allows a resulting codestream to be quantized at encode time, transmission time, or decode time. In one embodiment, ordering/modeling block 103 orders and converts the coefficients into signmagnitude format and, based on their significance (as described below later), the formatted coefficients are subjected to an embedded modeling method. In one embodiment, the formatted coefficients are subjected to joint spatial/frequency modeling.
 The results of ordering and modeling comprise decisions (or symbols) to be coded by the entropy coder. In one embodiment, all decisions are sent to a single coder. In another embodiment, decisions are labeled by significance, and decisions for each significance level are processed by different (physical or virtual) multiple coders.
 Referring back to
FIG. 2 , the bit stream(s) resulting from JSF context model block 201 are encoded in order of significance using entropy coder 104. In one embodiment, entropy coder 104 comprises one or more binary entropy coders.  Wavelet Decomposition
 The present invention initially performs decomposition of an image (in the form of image data) or another data signal using reversible wavelets. In the present invention, a reversible wavelet transform comprises an implementation of an exactreconstruction system in integer arithmetic, such that a signal with integer coefficients can be losslessly recovered. By using reversible wavelets, the present invention is able to provide lossless compression with finite precision arithmetic. The results generated by applying the reversible wavelet transform to the image data are a series of coefficients.
 The reversible wavelet transform of the present invention may be implemented using a set of filters. In one embodiment, the filters are a twotap lowpass filter and a sixtap highpass filter. In one embodiment, these filters are implemented using only addition and subtraction operations (plus hardwired bit shifting). Also, in an embodiment of the present invention, the highpass filter generates its output using the results of the lowpass filter. The resulting highpass coefficients are only a few bits greater than the pixel depth and the lowpass coefficients are the same as the pixel depth. Because only the lowpass coefficients are repeatedly filtered in a pyramidal decomposition, coefficient resolution is not increased in multilevel decompositions.
 In alternate embodiments, the lowpass filter output coefficients could increase in size, instead of highpass filter output coefficients.
 A wavelet transform system is defined by a pair of FIR analysis filters h_{0}(n), h_{1}(n), and a pair of FIR synthesis filters g_{0}(n), g_{1}(n). In the present invention, h_{0 }and g_{0 }are the lowpass filters and h_{1 }and g_{1 }are the highpass filters. A block diagram of the wavelet system is shown in
FIG. 3A . Referring toFIG. 3A , for an input signal, x(n), the analysis filters h_{0 }and h_{1 }are applied and the outputs are decimated by 2 (critically subsampled) to generate the transformed signals y_{0}(n) and y_{1}(n), referred to herein as lowpassed (smooth) and highpassed (detail) coefficients respectively. The analysis filters and their corresponding decimation, or subsampling, blocks form the analysis portion of the wavelet transform system. The coder/decoder contain all the processing logic and routines performed in the transformed domain (e.g., prediction, quantization, coding, etc.). The wavelet system shown inFIG. 3A also includes a synthesis portion in which the transformed signals are upsampled by 2 (e.g., a zero is inserted after every term) and then passed through synthesis filters, g_{0}(n) and g_{1}(n). The lowpassed (smooth) coefficients y_{0}(n) are passed through the lowpass synthesis filter g_{0 }and the highpassed (detail) coefficients y_{1}(n) are passed through the highpassed filter g_{1}. The output of filters g_{0}(n) and g_{1}(n) are combined to produce {circumflex over (x)}(n).  While downsampling and upsampling are performed in some embodiments, in other embodiments, filters are used such that computations which are unneeded due to downsampling and upsampling are not performed.
 The wavelet system may be described in terms of the Ztransform, where X(Z), {circumflex over (X)}(Z) are the input and output signals respectively, Y_{0}(Z), Y_{1}(Z) are the lowpassed and highpassed transformed signals, H_{0}(Z), H_{1}(Z) the lowpass and the highpass analysis filters and finally G_{0}(Z), G_{1}(Z) are the lowpass and the highpass synthesis filters. If there is no alteration or quantization in the transform domain, the output {circumflex over (X)}(Z) in
FIG. 3 , is given by$\begin{array}{c}\hat{X}\left(Z\right)=\frac{1}{2}\left[{H}_{0}\left(Z\right){G}_{0}\left(Z\right)+{H}_{1}\left(Z\right){G}_{1}\left(Z\right)\right]X\left(Z\right)+\\ \frac{1}{2}\left[{H}_{0}\left(Z\right){G}_{0}\left(Z\right)+{H}_{1}\left(Z\right){G}_{1}\left(Z\right)\right]X\left(Z\right).\end{array}$
In the present invention, the second term of {circumflex over (X)}(Z), referred to as the “aliasing” term, is canceled because the synthesis filters are defined to be the quadrature mirror of the analysis filters, i.e.,$\{\begin{array}{c}{G}_{0}\left(Z\right)={H}_{1}\left(Z\right)\\ {G}_{1}\left(Z\right)={H}_{0}\left(Z\right)\end{array}\hspace{1em}$
In terms of the filter coefficients,$\{\begin{array}{c}{g}_{0}\left(n\right)={\left(1\right)}^{n}{h}_{1}\left(n\right)\\ {g}_{1}\left(n\right)={\left(1\right)}^{n}{h}_{0}\left(n\right)\end{array}\hspace{1em}$
Therefore, for a quadrature mirror filter pairs, after substitution, the output is:$\hat{X}\left(z\right)=\frac{1}{2}\left[{H}_{0}\left(Z\right){H}_{1}\left(Z\right){H}_{1}\left(Z\right){H}_{0}\left(Z\right)\right]X\left(Z\right).$  Thus, in the quadrature mirror system of the present invention, the output is defined in terms of the analysis filters only. The wavelet transform is applied recursively to the transformed signals in that the outputs generated by the filters are used as inputs, directly or indirectly, into the filters. In the described embodiment, only the lowpassed transformed component y_{0}(n) is recursively transformed such that the system is pyramidal. An example of such a pyramidal system is shown in
FIG. 6 .  The Z transform is a convenient notation for expressing the operation of hardware and/or software on data. Multiplication by Z^{−m }models a m clock cycle delay in hardware, and an array access to the mth previous element in software. Such hardware implementations include memory, pipestages, shifters, registers, etc.
 In the present invention, the signals, x(n) and {circumflex over (x)}(n), are identical up to a multiplicative constant and a delay term, i.e. in terms of the Ztransform,
{circumflex over (X)}(Z)=cZ ^{−m} X(Z).
This is called an exact reconstruction system. Thus, in one embodiment of the present invention, the wavelet transform initially applied to the input data is exactly reconstructable.  One embodiment of the present invention using the Hadamard Transform is an exact reconstruction system, which in normalized form has the following representation in the Zdomain:
$\{\begin{array}{c}{H}_{0}\left(Z\right)=\frac{1}{\sqrt{2}}\left(1+{Z}^{1}\right)\\ {H}_{1}\left(Z\right)=\frac{1}{\sqrt{2}}\left(1{Z}^{1}\right)\end{array}\hspace{1em}$
After substitution, the output is
{circumflex over (X)}(Z)=Z ^{−1} X(Z),
which is clearly an exactreconstruction. For more information on the Hadamard Transform, see Anil K. Jain, Fundamentals of Image Processing, pg. 155.  A reversible version of the Hadamard Transform is referred to herein as the Stransform. For more information on Stransform, see Said, A. and Pearlman, W. “Reversible Image Compression via Multiresolution Representation and Predictive Coding,” Dept. of Electrical, Computer and Systems Engineering, Renssealaer Polytechnic Institute, Troy, N.Y. 1993. Since the Hadamard Transform is an exact reconstruction transform, the following unnormalized version (which differs from the Hadamard Transform by constant factors) is also an exact reconstruction transform:
$\{\begin{array}{c}{h}_{0}\left(Z\right)=\frac{1}{2}\left(1+{Z}^{1}\right)\\ {h}_{1}\left(Z\right)=1{Z}^{1}\end{array}\hspace{1em}$  Given the samples of the input signal as x_{0}, x_{1}, the Stransform is a reversible implementation of this system as,
$\{\begin{array}{c}{y}_{0}\left(0\right)=\lfloor \left(x\left(0\right)+x\left(1\right)\right)/2\rfloor \\ {y}_{1}\left(0\right)=x\left(0\right)x\left(1\right)\end{array}\hspace{1em}$  The Stransform may be defined by the outputs with a generic index, n, as follows:
$\{\begin{array}{c}s\left(n\right)=\lfloor \frac{x\left(2n\right)+x\left(2n+1\right)}{2}\rfloor \\ d\left(n\right)=x\left(2n\right)X\left(2n+1\right)\end{array}\hspace{1em}$
Note that the factor of two in the transform coefficients addressing is the result of an implied subsampling by two. This transform is reversible and the inverse is:$\{\begin{array}{c}x\left(2n\right)=s\left(n\right)+\lfloor \frac{d\left(n\right)+1}{2}\rfloor \\ x\left(2n+1\right)=s\left(n\right)\lfloor \frac{d\left(n\right)}{2}\rfloor \end{array}\hspace{1em}$  The notation └.┘ means to round down or truncate and is sometimes referred to as the floor function. Similarly, the ceiling function ┌.┐ means round up to the nearest integer.
 The proof that this implementation is reversible follows from the fact that the only information lost in the approximation is the least significant bit of x(0)+x(1). But since the least significant bits of x(0)+x(1) and x(0)−x(1) are identical, this can be recovered from the highpass output y_{1}(0). In other words,
$\{\begin{array}{c}x\left(0\right)={y}_{0}\left(0\right)+\lfloor \left({y}_{1}\left(0\right)+1\right)/2\rfloor \\ x\left(1\right)={y}_{0}\left(0\right)\lceil \left({y}_{1}\left(0\right)1\right)/2\rceil \end{array}\hspace{1em}$  The Stransform is a nonoverlapping transform using minimal length reversible filters. Minimal length filters comprise a pair of filters, where both filters have two taps. Minimal length transforms do not provide good energy compaction. Minimal length filters implement a nonoverlapped transform because the length of the filters is equal to the number of filters. Overlapped transforms use at least one filter which has length greater than the number of filters. Overlapped transforms using longer (nonminimal length) filters can provide better energy compaction. The present invention provides nonminimal length reversible filters which permits an overlapped transform.
 Another example of an exactreconstruction system comprises the Two/Six (TS)Transform which has the Zdomain definition,
$\{\begin{array}{c}{H}_{0}\left(Z\right)=\frac{1}{\sqrt{2}}\left(1+{Z}^{1}\right)\\ {H}_{1}\left(Z\right)=\frac{1}{8\sqrt{2}}\left(1{Z}^{1}+8{Z}^{2}8{Z}^{3}+{Z}^{4}+{Z}^{5}\right)\end{array}\hspace{1em}$  After substitution, the output is
{circumflex over (X)}(Z)=2Z ^{−3} X(Z),
which is an exactreconstruction transform.  The rational unnormalized version of the TStransform comprises:
$\{\begin{array}{c}{h}_{0}\left(Z\right)=\frac{1}{2}\left(1+{Z}^{1}\right)\\ {h}_{1}\left(Z\right)=\frac{1}{8}\left(1{Z}^{1}+8{Z}^{2}8{Z}^{3}+{Z}^{4}+{Z}^{5}\right)\end{array}\hspace{1em}$  If x(0), x(1), . . . x(5) are six samples of the signal, then the first three lowpassed coefficients y_{0}(0), y_{0}(1), y_{0}(2) and the first highpassed coefficient y_{1}(0) are given by:
$\{\begin{array}{c}{y}_{0}\left(0\right)=\lfloor \left(x\left(0\right)+x\left(1\right)\right)/2\rfloor \\ {y}_{0}\left(1\right)=\lfloor \left(x\left(2\right)+x\left(3\right)\right)/2\rfloor \\ {y}_{0}\left(2\right)=\lfloor \left(x\left(4\right)+x\left(5\right)\right)/2\rfloor \end{array}\hspace{1em}$ ${y}_{1}\left(0\right)=\lfloor \left(\left(x\left(0\right)+x\left(1\right)\right)\right)+8\left(x\left(2\right)x\left(3\right)\right)+\left(x\left(4\right)+x\left(5\right)\right)/8\rfloor .$  However, the straight forward implementation of the rational unnormalized version of the TStransform is not reversible. The following example shows that the implementation is nonreversible locally. A longer sequence can be constructed as an example for the global case. Since −(x(0)+x(1))+(x(4)+x(5))≠−y_{0}(0)+y_{0}(2) because of rounding to compute y_{0}(0) and y_{0}(2), this transform is not reversible using local information.
 For example, if x(0)=1, x(1)=1, x(2)=3, x(3)=1, x(4)=1, x(5)=1, then
y _{0}(0)=└(1+1)/2┘=1
y _{0}(1)=└(3+1)/2┘=2
y _{0}(2)=└(1+1)/2┘=1
y _{1}(0)=└[−(1+1)+8(3−1)+(1+1)]/8┘=└(−2+16+2)/8┘=2
and if x(0)=1, x(1)=2, x(2)=4, x(3)=1, x(4)=1, x(5)=1, then
y _{0}(0)=└(1+2)/2┘=1
y _{0}(1)=└(4+1)/2┘=2
y _{0}(2)=└(1+1)/2┘=1
y _{1}(0)=└[−(1+2)+8(4−1)+(1+1)]┘/8=└(−3+24+2)/8┘=└23/8┘=2
Since y_{0}(0), y_{0}(1), y_{0}(2) and y_{1}(0) are the same for two different sets of inputs x(0) . . . x(5), the transform is not reversible, since given y_{0}(0), . . . y_{1}(0) it cannot be determined from this local information which of the two sets were input. (Note that it can be proved that the transform is not reversible using global information from all coefficients.)  Now consider a reversible TStransform, which is referred to herein as an RTStransform, which provides a different highpass filtering operation.
 If x(0), x(1), x(2), x(3), x(4), x(5) are 6 samples of the signal, then the first three lowpassed coefficients y_{0}(0), y_{0}(1), y_{0}(2) and the first highpassed coefficient y_{1}(0) are given by,
$\{\begin{array}{c}{y}_{0}\left(0\right)=\lfloor \left(x\left(0\right)+x\left(1\right)\right)/2\rfloor \\ {y}_{0}\left(1\right)=\lfloor \left(x\left(2\right)+x\left(3\right)\right)/2\rfloor \\ {y}_{0}\left(2\right)=\lfloor \left(x\left(4\right)+x\left(5\right)\right)/2\rfloor \end{array}\hspace{1em}$ $\begin{array}{c}{y}_{1}\left(0\right)=\lfloor (\lfloor \left(x\left(0\right)+x\left(1\right)\right)/2\rfloor +4\left(x\left(2\right)x\left(3\right)\right)+\\ \lfloor \left(x\left(4\right)+x\left(5\right)\right)/2\rfloor +2)/4\rfloor \\ =\lfloor \left({y}_{0}\left(0\right)+4\left(x\left(2\right)x\left(3\right)\right)+{y}_{0}\left(2\right)+2\right)/4\rfloor .\end{array}$
Since
x(2)−x(3)=y _{1}(0)−└−(y _{0}(0)−y _{0}(2)+2)/4┘
then x(2)−x(3) is completely known. With y_{0}(1)=└(x(2)+x(3))/2┘ and x(2)−x(3) and x(2)−x(3) defined above, x(2) and x(3) may be recovered because the least significant bits of x(0)+(1) and x(0)−x(1) are identical.  Specifically, let
d(0)=x(2)−x(3)=y _{1}(0)−└(−Y _{0}(0)+y _{0}(2)+2)/4┘
x(2)=y _{0}(1)+└(d(0)+1)/2┘
x(3)=y _{0}(1)+┌(d(0)−1)/2┐  In one embodiment of the RTStransform, as well as that of the Stransform, a dividebyeight is implemented as a dividebytwo and then a dividebyfour in order to provide additional accuracy. Note that mathematically the equation
$\frac{1}{8}\left(1{Z}^{1}+8{Z}^{2}8{Z}^{3}+{Z}^{4}+{Z}^{5}+4\right)$
and the equation$\frac{1}{4}\left(\frac{1}{2}\left(1{Z}^{1}\right)+4\left({Z}^{2}{Z}^{3}\right)+\frac{1}{2}\left({Z}^{4}+{Z}^{5}\right)+2\right)$
are the same when performed with infinite precision arithmetic. The reason the second equation represents a reversible filter is apparent when physically implemented with integer arithmetic. Exemplary hardware implementations of the lowpass filter and the highpass filter are described in conjunction withFIGS. 16 and 17 .  Note that in both the Stransform and the RTStransform, the lowpass filter is implemented so that the range of the input signal x(n) is the same as the output signal y_{0}(n). For example, if the signal is an 8bit image, the output of the lowpass filter is also 8 bits. This is an important property for a pyramidal system where the lowpass filter is successively applied because in prior art systems the range of the output signal is greater than that of the input signal, thereby making successive applications of the filter difficult. In addition, the lowpass filter has only two taps which makes it a nonoverlapping filter. This property is important for the hardware implementation, as is described below later.
 In a more generic format, the reversible TStransform is defined by the expression of the two outputs of a lowpass and a highpass filter:
$\{\begin{array}{c}s\left(n\right)=\lfloor \frac{x\left(2n\right)+x\left(2n+1\right)}{2}\rfloor \\ d\left(n\right)=\frac{\lfloor \frac{x\left(2n\right)+x\left(2n+1\right)}{2}\rfloor +4\left(x\left(2n+2\right)x\left(2n+3\right)\right)+\lfloor \frac{x\left(2n+4\right)+x\left(2n+5\right)}{2}\rfloor}{4}\end{array}\hspace{1em}$
The expression for d(n) can be simplified and written with the use of s(n) (moreover the integer division by 4 can be rounded by adding a 2 to the numerator). These result in:$\{\begin{array}{c}s\left(n\right)=\lfloor \frac{x\left(2n\right)+x\left(2n+1\right)}{2}\rfloor \\ d\left(n\right)=x\left(2n+2\right)\left(2n+3\right)+\lfloor \frac{s\left(n\right)+s\left(n+2\right)+2}{4}\rfloor \end{array}\hspace{1em}$
The TStransform is reversible and the inverse is:$\{\begin{array}{c}x\left(2n\right)=s\left(n\right)+\lfloor \frac{p\left(n\right)+1}{2}\rfloor \\ x\left(2n+1\right)=s\left(n\right)\lfloor \frac{p\left(n\right)}{2}\rfloor \end{array}\hspace{1em}$
where p(n) must first be computed by,$p\left(n\right)=d\left(n1\right)\lfloor \frac{s\left(n1\right)+s\left(n+1\right)+2}{4}\rfloor $  The results from the lowpass filter may be used twice (in the first and third terms) in the highpass filter. Therefore, only two other additions need to be performed to arrive at the results of the highpass filter.
 The TStransform, in addition to being reversible, is also efficient. Hence, it lends itself quite well to lossless compression. The TStransform (like the Stransform) has no growth in the smooth output, i.e., if the input signal is b bits deep, so is the smooth output. This is useful for in pyramidal systems, defined in the next section, where the smooth output is decomposed further. There is no systemic error due to rounding in the integer implementation of the transform, so all error in a lossy system can be controlled by quantization.
 Among the four filters participating in a wavelet transform, the lowpass synthesis filter is the most important because it combines the quantized coefficients and also smooths the artifacts. This fact has led to the choice of a relatively long (sixtap) and particularly well behaved filter for the lowpass synthesis filter in the present invention. Note that in a QMF system, there are only two independent filters.
 Many overlapped, nonminimal length reversible filters may be used in the present invention. Such forward and inverse representations of the transform system for filtering with nonoverlapped minimal length reversible filters is shown in
FIG. 3B . For instance, the following class of filters may be used in the present invention. For an integer L≧z,
d(0)=x(2(└L/2┘+1))−x(2(└L/2┘+1)+1)
and
y _{0}(0)=└(x(0)+x(1))/2┘
y _{0}(1)=└(x(2)+x(3))/2┘
y _{0}(L−1)=└(x(2└(L−1)/2┘)+x(2└(L−1)/2┘+1))/2┘
and${y}_{1}\left(0\right)=\frac{\sum _{i=0}^{\lfloor L/2\rfloor}{a}_{i}{y}_{0}\left(i\right)+\mathrm{bd}\left(0\right)+\sum _{j=\lfloor L/2\rfloor +2}^{L1}{c}_{i}{y}_{0}\left(j\right)+\lfloor \frac{k}{2}\rfloor}{k}$  The length of the highpass filter is 2 L. If L is odd, the filter may be closer to a symmetric filter. If a_{i}, b, c_{i }and k are integers and k≦b, then the filter is reversible. If a_{i}, b, c_{i}, and k are powers of two (or the negative or complement of a power of two), then the implementation of the filter may be simplified. If k=b (regardless of the values of a_{i }and c_{i}) then the range of the output of the highpass filter y_{1 }is minimized. For each a_{i}, if there is exactly one c_{j }where a_{i}=−c_{j}, then the highpass filter will have no response to a constant input. If a_{i}=−c_{j }when j−(L−1)=i, then the filter may be closer to a symmetric filter.
 Another useful property is
$\sum _{i=0}^{\lfloor L/2\rfloor}\left[\left({a}_{i}\right){\left(2i\right)}^{m}+\left({a}_{i}\right){\left(2i+1\right)}^{m}\right]+\left(b\right){\left(2\left(\lfloor 1/2\rfloor +1\right)\right)}^{m}\left(b\right){\left(2\left(\lfloor 1/2\rfloor +1\right)+1\right)}^{m}+\sum _{j=\lfloor L/2\rfloor +2}^{L1}\left[{{c}_{j}\left({2}_{j}\right)}^{m}+{{c}_{j}\left({2}_{j}+1\right)}^{m}\right]=0$  This makes the highpass filter have no response to a linearly changing input when m=1 and a quadratically changing input when m=2, etc., where m is the moment condition. This property is the principle reason that the RTStransform has better energy compaction than the Stransform.
 While filters must meet the minimum constraints for reversibility, for different applications, filters may be used that meet none, some or all of the other properties. In some embodiments, one of the following example highpass filters is used. The filters are listed in a notation that just lists the integer coefficients of the rational version of the filter, to avoid obscuring the invention.
 1 1 −4 −4 16 −16 4 4 −1 −1
 1 1 −3 −3 8 −8 3 3 −1 −1
 −1 −1 0 0 16 −16 0 0 1 1
 −1 −1 4 4 −16 −16 256 −256 16 16 −4 −4 1 1
 3 3 −22 −22 128 −128 22 22 −3 −3
 The last filter is referred to as the (Two/Ten) TTfilter, and it has the property that it has no response to a cubically increasing function. Note—that since 22=16+2×3 and 3=2+1, this filter can be implemented with a total of seven additions and subtractions.
 In one embodiment, the filters can be combined and applied to a block, such that both the horizontal and the vertical passes are performed in one operation.
FIG. 4 illustrates the filters to perform the combined operation. Configuration (a) shows the use of two separate 1D reversible filters, one for each pass, that include a 1D filter and 1D rounding. Configuration (b) shows a 1D filter 401, followed by another 1D filter 402, ending with a 2D rounding operation 403. This configuration produces more precise results in that it allows for better rounding.  The strict reversibility requirements for filters can be relaxed by noting the following. High pass coefficients are encoded and decoded in the some order. Pixel values corresponding to previously decoded high pass coefficients are known exactly, so they can be used in current high pass filtering. For example, the following filter can be used when a raster order is used.
${H}_{1}\left(Z\right)=\lfloor \frac{1}{4}\left(\lfloor \frac{1}{2}\left(1+{Z}^{1}\right)\rfloor +\lfloor \frac{1}{2}\left(8\left({Z}^{2}{Z}^{3}\right)+\left({Z}^{4}+{Z}^{5}\right)\right)\rfloor +2\right)\rfloor $  The use of a single fixed highpass filter is not required. Adaptive filters may be used or multiple filters may be used. The data used to adapt or select among multiple filters must be restricted to data that is available in the decoder prior to a particular inverse filtering operation.
 One way to use multiple filters is to process the highpass coefficients progressively. Alternate highpass filtering operations (y_{1}(0), y_{1}(2), y_{1}(4), . . . ) may be processed first with a reversible filter such as the RTS highpass filter. The remaining processing (y_{1}(1), y_{1}(3), y_{1}(5), . . . ) may use a nonreversible filter of up to six taps, because the exact values of the inputs to the overlap portion of the filter are known. For example, any of the following filters may be used.
 −1 3 −3 1
 −1 4 −4 1
 −3 8 −8 3
 1 −5 10 −10 5 −1
 1 −4 8 −8 4 −1
 Note that QMF filters are not used in some embodiments.
 In some embodiments, the high pass filter may be replaced with a prediction/interpolation operation. A predictor/interpolator may predict the difference between a pair of inputs using any data that is available in the decoder prior to a particular prediction/interpolation operation. The predicted difference is subtracted from the actual difference of the inputs and the result is outputted. In one embodiment, prior art prediction methods used in DPCM, progressive coding or spatial domain coding are used.
 In one embodiment, nonlinear filters may be used, such as morphological filters (e.g., a median filter). In one embodiment, the 1,1 filter is used in conjunction with a different filter for the highpass. Such a filter system must be able to transmit the difference between two pixels. Based on any data the decoder has, a prediction can be made as to what the difference should be. A nonlinear morphological filter may be used to do the estimate. The present invention computes the median around a pixel using the actual pixels on the causal side of the window and inputting them into the filter. On the noncausal side of the filter, the low pass coefficients are used instead of pixel values.
 TwoDimensional Wavelet Decomposition
 Using the lowpass and highpass filters of the present invention, a multiresolution decomposition is performed. The number of levels of composition is variable and may be any number; however, currently the number of decomposition levels equals from two to five levels.
 The most common way to perform the transform on twodimensional data, such as an image, is to apply the onedimensional filters separately, i.e., along the rows and then along the columns. The first level of decomposition leads to four different bands of coefficients, referred to herein as LL, HL, LH, and HH. The letters stand for low (L) and high (H) corresponding to the application smooth and detail filters defined above respectively. Hence, the LL band consist of coefficients from the smooth filter in both row and column directions. It is common practice to place the wavelet coefficients in the format as in
FIGS. 5A5D .  Each subblock in a wavelet decomposition can be further decomposed. The most common practice is to only decompose the LL subblock further, but this can be done a number of times. Such a multiple decomposition is called pyramidal decomposition (
FIGS. 5A5D ). The designation LL, LH, HL, HH and the decomposition level number denote each decomposition. Note that with either filters, S or TS, of the present invention, pyramidal decomposition does not increase the coefficient size.  For example, if the reversible wavelet transform is recursively applied to an image, the first level of decomposition operates on the finest detail, or resolution. At a first decomposition level, the image is decomposed into four subimages (e.g., subbands). Each subband represents a band of spatial frequencies. The first level subbands are designated LL_{0}, LH_{0}, HL_{0 }and HH_{0}. The process of decomposing the original image involves subsampling by two in both horizontal and vertical dimensions, such that the first level subbands LL_{0}, LH_{0}, HL_{0 }and HH_{0 }each have onefourth as many coefficients as the input has pixels (or coefficients) of the image, such as shown in
FIG. 5A .  Subband LL_{0 }contains simultaneously low frequency horizontal and low frequency vertical information. Typically a large portion of the image energy is concentrated in this subband. Subband LH_{0 }contains low frequency horizontal and high frequency vertical information (e.g., horizontal edge information). Subband HL_{0 }contains high frequency horizontal information and low frequency vertical information (e.g., vertical edge information). Subband HH_{0 }contains high frequency horizontal information and high frequency vertical information (e.g., texture or diagonal edge information).
 Each of the succeeding second, third and fourth lower decomposition levels is produced by decomposing the low frequency LL subband of the preceding level. This subband LL_{0 }of the first level is decomposed to produce subbands LL_{1}, LH_{1}, HL_{1 }and HH_{1 }of the moderate detail second level, as shown in
FIG. 5B . Similarly, subband LL_{1 }is decomposed to produce coarse detail subbands LL_{2}, LH_{2}, HL_{2 }and HH_{2 }of the third level, as shown inFIG. 5C . Also, subband LL_{2 }is decomposed to produce coarser detail subbands LL_{3}, LH_{3}, HL_{3 }and HH_{3 }of the third level, as shown inFIG. 5D . Due to subsampling by two, each second level subband is onesixteenth the size of the original image. Each sample (e.g., pel) at this level represents moderate detail in the original image at the same location. Similarly, each third level subband is 1/64 the size of the original image. Each pel at this level corresponds to relatively coarse detail in the original image at the same location. Also, each fourth level subband is 1/256 the size of the original image.  Since the decomposed images are physically smaller than the original image due to subsampling, the same memory used to store the original image can be used to store all of the decomposed subbands. In other words, the original image and decomposed subbands LL_{0 }and LL_{1 }are discarded and are not stored in a three level decomposition.
 Although only four subband decomposition levels are shown, additional levels could be developed in accordance with the requirements of a particular system. Also, with other transformations such as DCT or linearly spaced subbands, different parentchild relationships may be defined.
 There is a natural and useful tree structure to wavelet coefficients in a pyramidal decomposition. Note that there is a single LL subblock corresponding to the last level of decomposition. On the other hand, there are an many LH, HL, and HH bands as the number of levels. The tree structure defines the parent of a coefficient in a frequency band to be a coefficient in a same frequency band at a lower resolution and related to the same spatial locality.
FIG. 6 shows the parental relationship between two consecutive levels.  Referring to
FIG. 6 , the coefficient at A is the direct parent to B, C, and D but is also parent to the coefficients that have B, C and D as parents. Specifically, B is parent to the four coefficients around E and the sixteen coefficients around H, etc.  The process of multiresolution decomposition may be performed using a filtering system, such as that depicted in
FIG. 7 . An input signal representing a onedimensional signal with length L is lowpass and highpass filtered by filter units 701 and 702 before being subsampled by two via units 703 and 705. A subsampled output signal from unit 703 is lowpass and highpass filtered by units 705 and 706 before being subsampled by two via units 707 and 708, respectively. Subband components L and H appear at respective outputs of units 707 and 708. Similarly, the output signal from unit 705 is lowpass and highpass filtered by units 709 and 710 before being subsampled by units 711 and 712, respectively. Subband components L and H appear at respective outputs of units 711 and 712. As described above, the filters in one embodiment of the present invention used in subband decomposition are digital quadrature mirror filters for splitting the horizontal and vertical frequency bands into low frequency and high frequency bands. 
FIG. 8 illustrates a twodimensional, twolevel transform.FIG. 9 also illustrates a twodimensional, twolevel transform implemented using onedimensional filters, such as those shown inFIGS. 16 and 17 . The onedimensional filters are applied at every other position, to avoid computation rendered unnecessary by subsampling. In one embodiment, onedimensional filters share computation between lowpass and highpass computation.  Therefore, the present invention provides a system for compression and decompression in which nonminimal length, overlapped reversible filters are used.
FIG. 10 is a block diagram of one embodiment of such a system. Referring toFIG. 10 , hierarchical decompression is initially performed. The results of the hierarchical decomposition are sent to a compressor for compression. The compression performed may include vector quantization, scalar quantization, zero run length coding, Huffman coding, Tunstall, etc. The output of the compressor compresses data representing a compressed version of the original input data. A decompressor may receive the data at sometime in the future and decompress the data. The present invention then performs an inverse decomposition using nonminimal length, overlapped reversible filters to generate a reconstructed version of the original data. Note that the nonminimal length, overlapped reversible filters comprise nonS transform filters.  The reversible wavelet filters of the present invention may also be used in exemplary analysis and enhancement systems, such as shown in
FIG. 11 . Referring toFIG. 11 , hierarchical decomposition is performed on input data using nonminimal length, overlapped reversible wavelet filters. The analysis unit receives the coefficients generated by the filters and classifies them into decisions, e.g., rather than encoding the coefficients completely, only relevant information is extracted. For example, in a document archiving system, blank pages might be recognized using only the coarsest lowpass subband. Another example would be to only use high pass information from a particular subband to distinguish between image of text and images of natural scenes. The hierarchical decomposition may be used for registering multiple images, such that coarse registration is done first with coarse subbands. In another embodiment, the coefficients undergo enhancement or filtering followed by inverse decomposition. Sharpening, edge enhancements, noise control, etc. may be performed using a hierarchical decomposition. Thus, the present invention provides a wavelet transform for use in joint time/space and frequency domain analysis and filtering/enhancement systems.  Ordering and Modeling of the Coefficients and Bit Planes
 In the present invention, the coefficients generated as a result of the wavelet decomposition are entropy coded. In the present invention, the coefficients initially undergo embedded coding in which the coefficients are ordered in a visually significant order or, more generally, ordered with respect to some error metric (e.g., distortion metric). Error or distortion metrics include peak error, and mean squared error (MSE). Additionally, ordering can be performed to give preference to bitsignificance spatial location, relevance for data base querying, and directionally (vertical, horizontal, diagonal, etc.).
 The ordering of the data is performed to create the embedded quantization of the codestream. In the present invention, two ordering systems are used: a first for ordering the coefficients and a second for ordering the binary values within a coefficient. The ordering of the present invention produces a bitstream that is thereafter coded with a binary entropy coder.
 In one embodiment, the coefficient ordering and modeling comprises Mary coding. In an alternate embodiment, it may be embedded by band only, instead of by bit. Also, for lossless coding or single quality lossy coding (e.g., quantization specified at the encoder), nonembedded coding may be used in the coefficient ordering and modeling.
 Coding Unit
 In the present invention, a coding unit is a rectangular set of trees that are coded independently of the rest of the image. The coding unit represents the smallest unit of coded data (although there are quantization options that would allow partial coding units to be decoded). All of the data in a coding unit is available to the encoder at one time, e.g., buffered in memory.
 The choice of a coding unit is implementation dependent. The coding unit may be defined as the entire image (or other data set) or a single tree of the present invention or any rectangle in between. In one embodiment, the choice of a coding unit may entail a compromise between compression efficiency and memory usage.
 In one embodiment, all the coefficients within a coding unit are available in random access memory. Since all coefficients within a coding unit are available in random access memory, the embedding order between the coefficients within a coding unit can be any arbitrary order. This order is known to both the encoder and the decoder. But since the entropy coder is causal with respect to this ordering, the order has a significant impact on the compression and is chosen with care. One embodiment of particular ordering is described below.
 Modeling
 In the present invention, joint spatial/frequency modeling comprises an embedded coding system used to encode the coefficients generated by the wavelet transform of the present invention. The joint space/frequency modeling takes advantage of both the known frequency bands and the neighboring pixels (or data). One embodiment of the joint space/frequency modeling is referred to herein as horizon modeling.
 The data is initially formatted in sign magnitude format, which is followed by the data being sorted based on significance. In another embodiment, to further reduce workspace memory, the coefficients could be stored in a magnitude/mantissa form instead of a sign/magnitude.
 After the data is sorted with respect to the given significance metric, the data is encoded.
 Assuming a digital signal, x(n), for each x(n) is represented with R bits of precision, then the embedded coding of the present invention encodes the most significant bit (or bits) of every x(n) of the signal, then the next significant bit (or bits) and so on. For example, in the case of visually defined ordering, an image that requires better quality in the center than along the corners or near the edges (such as some medical images) may be subjected to encoding such that the loworder bits of the central pixels might be coded prior to the higherorder bits of the boundary pixels.
 BitSignificance Representation
 In one embodiment, the embedded order used for binary values within a coefficient is by bitplane. The coefficients are expressed in bitsignificance representation. Bitsignificance is a signmagnitude representation where the sign bit, rather than being the most significant bit (MSB), is encoded with the first nonzero magnitude bit.
 There are three types of bits in a number represented in bitsignificance form: head, tail, and sign. The head bits are all the zero bits from the MSB to the first nonzero magnitude bit plus the first nonzero bit. The bitplane where the first nonzero magnitude bit occurs defines the significance of the coefficient. The bits after the first nonzero magnitude bit to the LSB are the tail bits. The sign bit simply denotes the sign. A number with a nonzero bit as the MSB has only one head bit. A zero coefficient has no tail or sign bits.
 In the case where the values are nonnegative integers, such as occurs with respect to the intensity of pixels, the order that may be used is the bitplane order (e.g., from the most significant to the least significant bitplane). In embodiments where two's complement negative integers are also allowed, the embedded order of the sign bit is the same as the first nonzero bit of the absolute value of the integer. Therefore, the sign bit is not considered until a nonzero bit is coded. For example, using sign magnitude notation, the 16bit number −7 is:
 1000000000000111
 On a bitplane basis, the first twelve decisions will be “insignificant” or zero. The first 1bit occurs at the thirteenth decision. Next, the sign bit (“negative”) will be coded. After the sign bit is coded, the tail bits are processed. The fifteenth and sixteenth decisions are both “1”.
 Coefficient Alignment
 The coefficients in the different subblocks represent different frequencies similar to the FFT or the DCT. The quantization is performed by aligning coefficients with respect to each other before the bitplane encoding. The less heavily quantized coefficients will be aligned toward the earlier bitplanes (e.g., shifted to the left). Thus, if the stream is truncated, these coefficients will have more bits defining them than the more heavily quantized coefficients.
 In one embodiment, the coefficients are aligned for the best rate distortion performance in terms of SNR or MSE. Alternately, the alignment could allow a physchovisual quantization of the coefficient data. The alignment has significant impact on the evolution of the image quality (or in other words on the ratedistortion curve), but has negligible impact on the final compression ratio of the lossless system.
 The bit depths of the various coefficients in a twolevel TStransform decomposition from an input image with b bits per pixel are shown in
FIG. 12 . To align the coefficients, the 1HH coefficient size is used as a reference, and shifts are given with respect to this size. Table 1 shows an example of this alignment process.TABLE 1 Example of coefficient alignment, b = 8 1HH Reference 10 9 8 7 6 5 4 3 2 1 0 xHL or xLH Left 3 8 7 6 5 4 3 2 1 0 xHL or xLH Left 2 8 7 6 5 4 3 2 1 0 xHL or xLH Left 1 8 7 6 5 4 3 2 1 0 xHL or xLH none 8 7 6 5 4 3 2 1 0 xHL or xLH Right 1 8 7 6 5 4 3 2 1 0
Note the sign bit is not the MSB and is encoded with the first tail bit. It is important to note that the alignment simply controls the order the bits are sent to the entropy coder. Actual padding, shifting, storage, or coding of extra zero bits is not performed.
Context Model  One embodiment of the Horizon context model used in the present invention is described below. This model uses bits within a coding unit based on the spatial and spectral dependencies of the coefficients. The available binary values of the neighboring coefficients, and parent coefficients can be used to create contexts. The contexts, however, are causal for decodability and in small numbers for efficient adaptation.
 Entropy Coding
 In one embodiment, the entropy coding performed by the present invention is performed by binary entropy coders. In one embodiment, entropy coder 104 comprises a Qcoder, a QMcoder, a finite state machine coder, a high speed parallel coder, etc. A single coder may be used to produce a single output code stream. Alternately, multiple (physical or virtual) coders may be employed to produce multiple (physical or virtual) data streams.
 In one embodiment, the binary entropy coder of the present invention comprises a Qcoder. For more information on the Qcoder, see Pennebaker, W. B., et al., “An Overview of the Basic Principles of the Qcoder Adaptive Binary Arithmetic,” IBM Journal of Research and Development, Vol. 32, pg. 71726, 1988. In an alternate embodiment, a binary entropy coder uses a QMcoder, which is a well known and efficient binary entropy coder. It is particularly efficient on bits with very high probability skew. The QMcoder is used in both the JPEG and JBIG standards.
 The binary entropy coder may comprise a finite state machine (FSM) coder. Such a coder provides the simple conversion from a probability and an outcome to a compressed bit stream. In one embodiment, a finite state machine coder is implemented using table lookups for both decoder and encoder. A variety of probability estimation methods may be used with such a finite state machine coder. Compression is excellent for probabilities close to 0.5. Compression for highly skewed probabilities depends on the size of the lookup table used. Like the QMcoder, it is useful with embedded bit streams because the decisions are coded in the order of occurrence. There is no possibility for “carryover” problems because the outputs are defined by a lookup table. In fact, there is a maximum delay between encoding and the production of a compressed output bit, unlike the Q and QM coders. In one embodiment, the finite state machine coder of the present invention comprises a Bcoder defined in U.S. Pat. No. 5,272,478, entitled “Method and Apparatus for Entropy Coding”, issued Dec. 21, 1993.
 In one embodiment, the binary entropy coder of the present invention comprises a high speed parallel coder. Both the QMcoder and the FSM coder require that one bit be encoded or decoded at a time. The highspeed parallel coder handles several bits in parallel. In one embodiment, the high speed parallel coder is implemented in VLSI hardware or multiprocessor computers without sacrificing compression performance. One embodiment of a high speed parallel coder that may be used in the present invention is described in U.S. Pat. No. 5,381,145, entitled “Method and Apparatus for Parallel Decoding and Encoding of Data”, issued Jan. 10, 1995.
 Most efficient binary entropy coders are limited in speed by fundamental feedback loops. A possible solution is to divide the incoming data stream into multiple streams and feed these to parallel encoders. The output of the encoders are multiple streams of variablelength coded data. One problem with this type of approach is how to transmit the data on a single channel. The high speed parallel coder described in U.S. Pat. No. 5,381,145 solves this problem with a method of interleaving these coded data streams.
 Many of the contexts used in the present invention are fixed probability, which makes a finite state machine coder, such as the Bcoder especially useful. Note when a system using probabilities close to 0.5, both high speed parallel coder disclosed above and the finite state machine coder operate with more efficiency than the Qcoder. Thus, both have a potential compression advantage with the context model of the present invention.
 The Encoding and Decoding Process of the Present Invention
 The following flow charts,
FIGS. 1315 , depict one embodiment of the encoding and decoding processes of the present invention. These processes may be performed in software or with hardware. In either case, references have been made to processing logic, which may represent either. 
FIG. 13 illustrates one embodiment of the encoding process of the present invention. Referring toFIG. 13 , the encoding process begins by having processing logic acquiring an input data for a coding unit (processing block 1301). Next, processing logic applies reversible filter(s) to the input data unit of the coding unit (processing block 1302).  A test then determines if another level of decomposition is desired (processing block 1303). If so, processing logic applies the reversible filter to all the LL coefficients (processing block 1304), and the process loops back and continues at processing block 1303. If another level of decomposition is not desired, processing continues at processing block 1305 where processing logic converts the coefficients to sign/magnitude form.
 After converting coefficients to the sign/magnitude form, a bitplane variable, S, is set to the most significant bitplane (processing block 1306).
 Then, the processing logic optionally initializes the entropy coder (processing block 1307).
 Once the entropy coder has been initialized, processing logic models each bit of each coefficient with the context model and entropy codes the bits (processing block 1308). After entropy coding the bit, the data is either transmitted or stored (processing block 1309).
 Thereafter, a test determines if there are any more coding units in the image (processing block 1310). If there are more coding units, processing continues to processing block 1301. On the other hand, if there are no more coding units, then processing ends.

FIG. 14 illustrates one embodiment of the decoding process of the present invention. Referring toFIG. 14 , the process begins by processing logic retrieving coded data for one coding unit (processing block 1401). Next, a variable S is set to the most significant bitplane (processing block 1402). After setting the bitplane variable S to the most significant bitplane, processing logic optionally initializes the entropy coder (processing block 1403).  After the entropy coder has been initialized, processing logic sets the initial value of each coefficient to zero (processing block 1404). Then the processing logic models each bit of each coefficient with a context model and entropy decoder (processing block 1405) and converts coefficients to proper form for filtering (processing block 1406). This conversion may convert from bit significance to two's compliment form. Thereafter, the processing logic applies an inverse filter(s) on the coefficients starting from the highest level of decomposition (processing block 1407).
 A test then determines if all the levels have been inverse filtered (processing block 1408). If all the levels have not been inverse filtered, processing logic applies the inverse filter(s) on the coefficients from the next highest level of decomposition (processing block 1409), and processing continues at processing block 1408. If all the levels have been inverse filtered, processing continues at processing block 1410 where the reconstructed data is either stored or transmitted. After storing the transmitted reconstructed data, a test determines if there are more coding units (processing block 1411). If there are more coding units, processing loops back and continues at processing block 1401 where the process is repeated. If there are no more coding units, the process ends.

FIG. 15 illustrates one embodiment of the process for modeling bits according to the present invention. Referring toFIG. 15 , the process for modeling bits begins by setting a coefficient variable C to the first coefficient (processing block 1501). Then, a test determines if c>2^{s}. If yes, processing continues at processing block 1503 where processing logic codes bit S of coefficient C using the model for tail bits and processing continues at processing block 1508. The model for tail bits may be a stationary (nonadaptive) model. If c is not greater that 2^{s}, then processing continues at processing block 1504 where processing logic applies a template for head bits (i.e., the initial zeros and the first on “1” bit). After applying the template, processing logic codes bit S of coefficient C (processing block 1505). Possible templates are shown in FIGS. 26AC. Templates may be implemented with LUTs, as shown inFIGS. 19A and 19B .  Next, a test determines if bit S of coefficient C is on (processing block 1506). If bit S of coefficient C is not on, processing continues at processing block 1508. On the other hand, if bit S of coefficient C is on, processing continues at processing block 1507 where processing logic codes the sign bit. Thereafter, processing continues at processing block 1508.
 At processing block 1508, a test determines if coefficient C is the last coefficient. If coefficient C is not the last coefficient, processing continues at processing block 1509 where the coefficient variable C is set to the next coefficient and processing continues at processing block 1502. On the other hand, if coefficient C is the last coefficient, processing continues at processing block 1510 where a test determines if S is the last bitplane. If S is not the last bitplane, bitplane variable S is decremented by 1 (processing block 1511) and processing continues at processing block 1501. If S is the last bitplane, processing ends.
 Alternative Embodiments of the Present Invention
 The present invention may be implemented in hardware and/or software. A hardware implementation of the present invention requires implementation of the wavelet filters, memory/data flow management to provide the data for the filters, a context model to control the embedded coding of the present invention, memory/data flow management to provide the data for the context model, and a binary entropy coder.
 Wavelet Filters
 One embodiment of the forward wavelet filter of the present invention is shown in
FIG. 16 . The wavelet filter shown inFIG. 16 accommodates 4 16 bit two's complement input pixels, shown as x(2)−x(5).  Referring to
FIG. 16 , the two tap “1 1” lowpass filter uses one 16bit adder 1601. The outputs are called S and D, respectively. The output of the adder (S) is truncated to 16 bits using shiftby1 block 1603. The shiftby1 block 1603 performs a divideby2 function by shifting its 17bit input to the right one bit.  The six tap “−1 −1 8−8 1 1” highpass filter requires the computation of −S_{0}+4D_{1}+S_{2}. The function S_{2}−S_{0 }is computed with 16bit subtractor 1605 receiving the output of shiftby1 block 1603 and the Y_{0}(0). The 4D_{1 }term is computed using subtractor 1602, shiftby2 block 1604 and adder 1608. The output produced by 16bit subtractor 1602 is shifted to the left two places by shiftbytwo block 1604, thereby effectively multiplying its output by four. The output of block 1604 is added to 2 by adder 1608. Note that because of the shift by 2, adder 1608 may be replaced by wiring. Adding the 4D_{1 }output from adder 1608 to the output of subtractor 1605 is performed by 20bit adder 1606. The output of the adder 1606 is truncated to 18 bits using shiftby2 block 1607. Shiftby2 block 1607 performs a divideby4 function by shifting its 20 bit input to the right two bits.
 Thus, the total computational hardware required (not counting registers for storing temporary results) is:
 1@ 16bit adder,
 2@ 16bit subtractors,
 1@19bit adder.
 Note that shifting (and adder 1608) is performed by the wiring, such that no logic is needed.
 In other embodiments, for inputs of size N, one Nbit adder, two Nbit subtractors and one (N+3) bit adder may be used.
 Due to the extremely low hardware cost of these adders/subtractors, parallel implementations of the filters can be used if desired.
 Note that alternatively, instead of subtracting X(3) and X(2), X(4)−X(5) can be computed and saved until needed later as X(2)−X(3) for the next shift or application of the filter. Both the forward filter (and the inverse filter described below) may be pipelined to achieve higher throughput.
 The inverse wavelet filter is shown in
FIG. 17 . The inputs of Y_{0}(0) and Y_{0}(2) are subtracted by subtractor 1701. Two (2) is added from the output of subtractor 1701 by adder 1709. The result of the addition is shifted to the right two bits by shiftby2 block 1702. This effectively divides the output of the subtractor by 4. A subtraction is performed between the output of shiftby2 block 1704 and the Y_{1}(0) input. The input Y_{0}(1) is shifted one bit to the left by shiftby1 block 1703, thereby multiplying the input by two. After Y_{0}(1) is shifted by 1 (multiplied by two), the LSB of the shifted value is the LSB taken from the output of subtractor 1704 and combined with the 16 bits output from shiftby1 block 1703 to form an input for adder 1705 and subtractor 1706. The other input for adder 1705 and subtractor 1706 is the output of subtractor 1704. The outputs of adder 1705 and subtractor 1706 may subsequently undergo clipping.  A choice of two clip operations may be used. In both cases, the 20bit value is shifted by 1 (divided by 2), to a 19bit value. For a system that only performs lossless compression, the least significant 16 bits can be output (the remaining 3 bits can be ignored). In a lossy system (or a lossy/lossless system), the 19bit value is set to zero if it is negative or set to 2^{16}−1 if it is greater than 2^{16}−1; otherwise, the least significant 16 bits can be output.
 For inputs of size N bits, one Nbit subtractor, one (N+1) bit adder, one (N+2) bit subtractor, one (N+3) bit adder and one (N+3) bit subtractor may be used, and the clip unit outputs N bits.
 In one embodiment of the wavelet transform, Monte Carlo division is used in the transform computations, wherein a pseudo random generator is used and based on its output, the results of a transform operation are either rounded up or down. Such an implementation may be used as long as a decoder is aware of the rounding being performed (i.e., uses the same random generator starting at the same point).
 Memory Usage for Data Flow Management for Wavelet Filters
 With respect to memory and data flow management for the wavelet filters of the present invention, for images where a full frame can fit in memory, memory/data flow management is not a difficult issue. Even for 1024×1024 16 bit medical images (e.g., 2 Mbytes in size), requiring a full frame buffer is reasonable for many applications. For larger images (e.g., A4, 400 DPI 4color images are about 50 Mbytes in size), performing the wavelet transform with a limited amount of line buffer memory is desirable.
 Note that a full frame buffer is not necessary for the present invention to implement a onepass system. Because of this, the memory required may be reduced by about a factor of 100 (compared to using a full frame buffer for large images). The onepass system of the present invention is described later.
 The data stored in the filter memory is a series of coefficients that are to be subjected to the embedded coding and binary entropy coding. The embedded coding uses a context model to coordinate the use of horizon coding, and to provide data in the proper order. The context model operates in conjunction with a memory management scheme. For systems with a full frame buffer, providing data in the proper order is not difficult.
 For systems with a finite amount of workspace memory, in one embodiment, different height transforms are used to reduce the number of workspace lines of memory needed for storage. Thus, if a wider image is encountered, it may be compressed efficiently within the allotted workspace memory. For instance, the Stransform may be used vertically to reduce the number of lines.
 Memory is required to buffer raster data, so a wavelet transform can be performed. In some applications, minimizing this memory is important for reducing cost. A technique for accomplishing this is described below.
 One embodiment of the wavelet 2D transform described herein is designed for a onepass implementation and restricted memory usage. In one embodiment, the wavelet transforms applied to achieve the pyramidal decomposition are only TS and S transforms. In this embodiment, there are four levels of separable pyramidal decompositions. In one embodiment, a four level decomposition is performed using the S and TS transforms. In one embodiment, in the horizontal (rowwise) decomposition, solely the TStransform is used, i.e., the horizontal decomposition is formed of TSTSTSTS. In the vertical (columnwise) decomposition, the Stransform and the TStransform are both used in the form of TSTSSS. Two of the TStransforms are replaced by Stransform at a small cost to the compression, but significant impact on the memory usage. The horizontal and vertical transforms are applied alternatively as usual (
FIG. 20 ).  Note that any combination of the S and TS transforms may be used to implement the horizontal and vertical transforms. Note that although the orders of the transforms may be mixed, the decoder must be aware of the order and must perform a reverse operation in the reverse order to be fully reversible.
 Coefficient Trees
 In a pyramidal system, the coefficients can be grouped into sets using a tree structure. The root of each tree is a purely lowpass coefficient.
FIG. 6 illustrates the tree structure of one purely lowpass coefficient of the transformed image. For a twodimensional signal such as an image, the root of the tree has three “children” and the rest of the nodes have four children each. The tree hierarchically is not limited to two dimensional signals. For example, for a one dimensional signal, a root has one child and nonroot nodes have two children each. Higher dimensions follow from the onedimensional and twodimensional cases.  The tree structure is also apparent from the operation of the filters shown in
FIGS. 79 . The operation of the pairs of filters with subsampling causes the previously described coefficients to be related.  In one embodiment, the coefficients are coded in a bit significance, or bitplane embedded system. Since the coefficients are coded from most significant bitplane to least significant bitplane, the number of bitplanes in the data must be determined. In the present invention, this is accomplished by finding an upper bound on the magnitudes of the coefficient values calculated from the data or derived from the depth of the image and the filter coefficients. For example, if the upper bound is 149, then there are 8 bits of significance or 8 bitplanes. For speed in software, bitplane coding may not be used. In an alternate embodiment, a bitplane is coded only when a coefficient becomes significant as a binary number.
 In one embodiment, the horizon context model of the present invention comprises the bitsignificance embedded encoding of the wavelet coefficients that feeds a binary entropy coder.
 Context Model Alternatives
 Once the decomposition has been completed and the data coefficients ordered, the context model of the present invention is used to encode the coefficients. There are various context models that may be used. Decisions may be conditioned on spatial location, level, and/or bit position. Decisions may also be conditioned on previously decoded data that is close to the current data in spatial location, level, and/or bit position.
 Some examples are as follows. The most significant tail bit (and therefore most easily predicted) could use a different context than the rest of the tail bits. Head bits can be conditioned on the same bit for spatially close previous coefficients at the same transform level. Similarly, the sign bits for significant coefficients might be conditioned on the sign of spatially close previous coefficients at the same level or the sign of the coefficient of the parent.
 Context model improvements might be especially important when compressing images that have spatial or multiresolution structure. Grayscale images of line drawings or text are an example of images with both of these types of structure. Improvements are also important for compressing files that already have to be compressed and decompressed with a specified peak error.
 When performing the present invention in software, a large amount of time is expended to obtain bits for contexts because the bits are required for conditioning (e.g., every head bit). In one embodiment of the present invention, a software implementation may be speeded up using lookup tables (LUTs). This avoids separate bit extraction operations for the North (N), Northwest (NW), West (W) and Southwest (SW) pixels that are used as contexts.

FIGS. 19A and 19B illustrate a state machine for head bit conditioning in the present invention. Referring toFIG. 19A , a LUT 1901 for a new parent is shown coupled to an encode/decode block 1902. LUT 1901 is coupled to receive bits indicative of a parent, bits representing the above (NE) coefficients, the current (E) coefficient and the coefficient below (S). In one embodiment, the parent input and current input comprise two bits each. Other inputs to LUT 1901 include all or part of the context output from LUT 1901 and the output of encode/decode block 1902, as feedbacks. In one embodiment, 8 of 10 bits output as a context by LUT 1901 are fed back to an input of LUT 1901.  The NE, E and S coefficients are used because they represent the leading edge of template information which comprises coefficient information associated with the previous bitplanes. Note that the Southeast (SE) coefficient may be used instead of the South (S) coefficient.
 In one embodiment, if the template is outside the coding unit, the outside conditioning bits may be replaced with bits from the current pixel.

FIG. 19B illustrates state machine conditioning using a LUT for the same parent. In such a case, the entire context is fed back as an input to LUT 1903.  Where data is processed in raster order, using a LUT reduces the number of memory accesses because the same memory used to generate the last context does not have to be reloaded.
 To reduce the size of LUT memory, alternatively the parent conditioning can be done separately by ORing with the output of a LUT which only handles the other conditioning.
 A slightly larger LUT table can also provide most of the conditioning for the next bitplane also. Another smaller LUT could take the state information from the current context LUT and combine it with the newly available data from the next bitplane. This may especially be useful if coding one tree at a time.
 As described above with respect to the present invention, “efficient” may be defined to mean the transform has determinant of 1. In such a case, code space is not wasted by saving room to code low probability events when the low probability is zero. However, 8bit coefficients are still input and produce an 8bit coefficient and one 9bit coefficient. Therefore, efficiency may still be improved. The added inefficiency is due to the rotation of the space of possible coefficients.
 It should be noted that certain results of the transform operations uniquely identify numbers used in the computations. This occurs when the results are near the bounds of those ranges of possible results. This is exemplified by
FIG. 18 , wherein u represents the lowpass and v represents the highpass. Because the values of u and v are not independent, these numbers may also be easier to entropy code taking joint information into account. This is because, as shown inFIG. 18 , for most low pass values, some code space for the high pass is not used. In many applications there is little advantage because the probability assigned to these impossible pairs is low. However, there might be a worthwhile gain in some applications. To speed operations, more bits of the LL coefficients could be sent prior to the LH, HL and HH coefficients. This may make bounding easier.  In some embodiments, after each coding unit has been coded, everything is reset, all the statistics and probabilities are reset when coding the second unit. In one embodiment, some of the statistics or all are saved. These then act as the initial statistics when coding of a later coding unit begins. In one embodiment, the statistics are saved at a predetermined point in the coding of the first or previous coding unit. For example, after coding the third bit plane, the statistics used by code the current coding unit are saved and act as the statistics for the beginning of coding of the following coding unit or later coding unit. In another embodiment, the classes for all images are evaluated and a hard coded set of statistics are determined. Then, coding is performed using these hard coded statistics as a default. In another embodiment, statistics are saved for each bit plane, such that when coding in the similar bit plane in another tile, the statistics are used.
 In one embodiment, there is no coding until the first one bit. At the occurrence of the first one bit in the coefficient, the sign is encoded. Although the head bits are image/region dependent, the tail bits are more uniform across different images and regions. Based on how far the tail bits are from the initial one bit (in the head bit), certain probability classes are used to encode the bits in the tail. In one embodiment, the first tail bit in a coefficient is coded with a probability class including 0.7. The second and third tail bits are coded with a probability class including 0.6. Lastly, the fourth and further tail bits are coded with probability classes that includes 0.5.
 A. Performing the Wavelet Transform
 In the onepass system, the wavelet transform performed is a compromise between compression performance and the amount of memory used. The coding unit size is chosen for the least memory usage with the fewest line buffers (assuming the image is delivered in raster order). The intermediate coefficients of the wavelet transform are stored in the same memory replacing the input as appropriate.
 Choice of Wavelet Transform Filters
 The wavelet 2D transform described herein is designed for a onepass implementation and restricted memory usage. There are four levels of separable pyramidal decompositions. In the horizontal decomposition, solely the TStransform is used, i.e., the horizontal decomposition is formed of TSTSTSTS. In the vertical decomposition, the Stransform and the TStransform are both used, and the vertical decomposition is formed of TSTSSS. The horizontal and vertical transforms are applied alternatively.
FIG. 20 illustrates the horizontal and vertical decompositions.  Two of the TStransforms are replaced by Stransform at a small cost to the lossless compression, but significant impact on the memory usage. The choice of using the Stransform in the last two vertical passes is solely to use less memory. The usage of the Stransform saves approximately 32 lines of coefficient buffer (e.g., 16 lines down from 48 lines). Note that using the TStransform for all the decompositions does provide better compression performance.
 Coding Unit Definition
 In one embodiment, the coding unit is defined by one line of trees (a line of LL coefficients and all their descendants. With four levels of decomposition, this implies that in the spatial domain, a coding unit is 16 lines by the width of the image.
FIG. 21 illustrates one coding unit. Note thatFIG. 21 is not to scale. The level 1 block is the image after one 2D decomposition. To reiterate, the names LL(lowlow), LH (lowhigh), HL (highlow), and HH (highhigh) are used to address a subblock and are applied to all the level 14 blocks. Level 2 block is the result of the 2D decomposition of the subblock LL in the level 1 block. Similarly, blocks 3 and 4 are 2D decompositions of the subblocks LL in level 2 block and level 3 block respectively.  A coding unit is 8 lines high for the HH, HL, and LH coefficients in level 1, 4 lines high in level 2, 2 lines high in level 3, and 1 line in level 4 and the LL subblock. Notice that as the resolution decreases at each step, the length as well as the number of rows halve. Each coefficient in the LL of the level 4 block is the top parent of a tree.
 Buffering and Coefficient Computation
 In order to generate one coding unit described in
FIG. 21 , a workspace buffer of size 2·w·m, where w is the width of the image, and m is the maximum coefficient size in bits, may be used. Because of the nature of the wavelet filters chosen for the vertical transform (i.e., columnwise) passes, the workspace memory requirement is approximately 1820 lines. Each horizontal transform (i.e., rowwise) pass, all of which are TStransforms, is computed one line (row) at a time and the new coefficients replace the old coefficients or pixels.  The first two vertical transform passes use the TStransform filters. Because of the sixtap high pass filter, each high pass coefficient in the vertical pass depends on six lines of either pixel of coefficient data. A high pass TS coefficient generated is related to the top two lines with four lines below for overlap. This is shown in
FIG. 22 . Referring toFIG. 22 , a vertical image segment of a coding unit is shown. The vertical image segment of the coding is the result of the original image being transformed by a horizontal pass of the TStransform. A vertical level 1 segment of a coding unit is shown and is the first level 2D transform of the image. The vertical level 1 segment is obtained by performing a horizontal pass with a TStransform. A vertical level 2 segment of a coding unit is also shown and results from applying the TS transform on the LL subblock of the level 1 block on both dimensions.  It should be noted that since the TStransform is overlapped by four pixels (or coefficients), four lines of data are saved at the end of a coding unit to be used in the computation of the coefficients of the next coding unit. In other words, to create the level 1 coefficients, two extra lines of pixels are needed at both the top and the bottom or four extra lines are needed at the bottom. To create the level 2 coefficients, two extra lines of level 1 coefficients are needed at both the top and the bottom, or four are needed at the bottom. To generate these extra level 1 coefficients, another two lines of pixels are required on both the top and the bottom or four are needed at the bottom. Thus, each coding unit spans 28 vertical lines.
 Importantly, however, no extra computation is required to generate these “extra” level 1 coefficients since they will be used in the coding units above and below the current one. Also note that only 20 lines of storage are required because only the level 2 coefficients are stored.
 The final two vertical passes are Stransforms that have no overlap in the low pass and, thus, do not require extra lines.
 Memory for the Transform Computation
 Given pixel values or coefficient values of size b bits (in the range of −2^{b−1 }. . . , 0, . . . 2^{b−1}−1) the smooth outputs, s(.), of both the Stransform and the TStransform are also b bits. In other words, they have the same range as the input. However, the onedimensional detail outputs, d(.), of the Stransform and TStransform will take b+1 and b+2 bits to express respectively.

FIG. 23 illustrates some of the line buffering needed in addition to the coding unit. The gray areas and arrows are the coefficients which are part of the current coding unit and need to be saved in memory for the current coding. The dashed arrows are the temporary coefficients which are needed to compute the coefficients in the coding unit. These are overwritten by the new coefficients. The solid arrows are the coefficients which are the byproducts of the computation of the current coding unit coefficients and are saved to be part of the next coding unit.  The final level (level 4) of coefficients is a single line in all four subblocks (LL, LH, HL, HH). Referring only to the vertical transform, to calculate level 4 from level 3, the Stransform is used so all subblocks require only two lines of coefficients in level 3. Likewise, to calculate level 3 from level 2 requires four lines of coefficients in level 2. All of these coefficients are part of the current coding unit.
 To calculate the vertical passes of level 2 and 1, the TStransform is used. Because of the overlapped nature of the sixtap high pass overlapped filter, these levels require data from the next coding unit. That data is used to calculate the coefficients in the current coding unit and then are stored for use in the next coding unit.
 To calculate the high pass subblocks in level 2 (LH, HH) from level 1, 12 lines are needed (8 lines to 4 lines from downsampling and 4 extra lines for the overlap). These lines are shown in low pass subblocks of level 1 (LL, HL) of
FIG. 23 as the 8 lines that are part of the current coding unit and 4 lines that are part of the next.  To calculate the 12 lines in the low pass subblocks of level 1 (LL, HL), 24 lines are needed from level 0. These 24 lines at level 0 can create the 10 lines in the high pass subblocks of level 1 (16 lines to 8 lines from downsampling and 4 extra lines for the overlap). It is most efficient to calculate all 10 of these lines and store them at level 1 even though only 8 are needed for the current coding unit. Thus, only the 4 extra lines used for the overlap need be saved at level 0.
 Starting from an image of pixel depth b, for a separable 2D transform, for the case that both row and column transforms are TS, the ranges of the coefficients are b, b+2, b+4 for LL, HL, LH, HH (
FIG. 12 ) subblocks respectively. In the case the separable 2D transform consists of horizontal TS and vertical S transforms, the ranges of the coefficients are, b, b+1, b+2, b+3 for LL, HL, LH, HH respectively. Tables 2, 3, 4, 5, and 6 illustrate the calculation for the memory required by each block. Note that the calculation is done in terms of size in bits for an image of width w, one for each block:TABLE 2 Memory cost for Level 0 Subblock L H Memory 4 · b · w/2 4 · (b + 2) · w/2 
TABLE 3 Memory cost for Level 1 Subblock LL HL LH HH Memory 4 · b · w/2 10 · (b + 2) · w/2 12 · (b + 2) · 10 · (b + 4) · w/2 w/2 
TABLE 4 Memory cost for Level 2 Subblock LL HL LH HH Memory 0 · b · w/4 4 · (b + 2) · w/4 4 · (b + 2) · 4 · (b + 4) · w/4 w/4 
TABLE 5 Memory cost for Level 3 Subblock LL HL LH HH Memory 0 · b · w/8 2 · (b + 1) · w/8 2 · (b + 2) · 2 · (b + 3) · w/8 w/8 
TABLE 6 Memory cost for Level 4 Subblock LL HL LH HH Memory 1 · b · w/16 1 · (b + 1) · w/16 1 · (b + 2) · 1 · (b + 3) · w/16 w/16
Adding all of the above numbers equals$\left(26b+55\frac{7}{8}\right)\xb7w$
bits, which rounded is (26b+56)·w bits. A two line computational buffer of the largest size, b+4 bits, adds 2·(b+4)·w bits leading to a total memory cost of (28b+64)·w bits. For example, for an 8bit 512 pixel wide image, 147,456 bits or about 18 K bytes of memory is required.  In one embodiment, the size of the transform is selected based on the width of the image and the fixed size of the memory available. In other words, an image of a particular may be inputted into the system of the present invention, and due to a limited amount of available transform memory, the number of levels of decomposition are reduced. If more memory is available, then the number of decomposition levels are increased. Note that this may occur dynamically as the image is being received into the system. If enough memory is available, the LL coefficients are fed through wavelet filters to perform the additional level of decomposition. Note that an effect of decreasing or increasing the number of levels is to decrease or increase, respectively, the amount of compression that may be achieved.
 B. Embedded Order of the Present Invention
 Ordering of the Codestream

FIG. 24A illustrates the ordering of the codestream and the ordering within a coding unit. Referring toFIG. 24A , the header 2401 is followed by the coding units 2402 in order from top to bottom. Within a coding unit, the LL coefficients 2403 are uncoded in raster (line) order. Following the LL coefficients is entropy coded data one bitplane at a time, starting from the most significant bitplane to the least significant bitplane. Then the first bitplane from every coefficient is coded followed by the second bitplane, etc.  Alignment of the Coefficients
 In one embodiment of the present invention, the context model uses an unnormalized 1+Z^{−1 }lowpass filter. However, the context model may be used with normalized filters, such as
$\frac{1+{Z}^{1}}{\sqrt{2}}$  In order to use normalized filters, an alignment unit between the forward wavelet filter 1600 and the context model 105, can be used to compensate for the energy gained (or alternatively, lost) from the unnormalized filter, which improves compression. Because alignment allows nonuniform quantization for lossy operation, alignment can enhance the visual quality of lossy image reconstructions. In the onedimensional case, coefficients from each level of the tree would have different alignment
$\left(\mathrm{divisors}=\sqrt{2},2,2\sqrt{2},4,\mathrm{multipliers}=2\sqrt{2},2,\sqrt{2},1\right).$
In the twodimensional case, the divisors would be 2, 4, 8, 16 and the multipliers would be 8, 4, 2, 1.  Since the alignment is only for grouping similar binary decisions for coding, using the exact normalization value is not critical. The alignment must be inverted during decoding, so both multiplication and division are required. Using factors/divisors that are powers of two would allow hardware efficient shifting to be performed instead. When coefficients are multiplied by a power of two, the lessor significant zero bits added do not have to be coded.
 Coefficient alignment can be used for tuning and for finer and nonuniform quantization. In case of images (two dimensional signals), one embodiment of the RTStransform aligns the coefficients by multiplying the frequency band by the numbers depicted in
FIG. 12B . Multiplying these numbers results in the RTStransform being a very close approximation of the exact reconstruction wavelets of the TStransforms.  This onepass embodiment uses only one alignment that is optimal with respect to MSE for the filter pairings. Table 7 illustrates the alignment numbers. The coefficients are coded by bitsignificance where the first bitplane is the left most magnitude bit of all the coefficients. The sign bit for each coefficient is not coded until the highest bitplane where that coefficient has a nonzero magnitude bit. In other words, the sign bit is encoded right after the first “onbit” is coded. This has the advantage of not coding a sign bit for any coefficient that has zero magnitude, and not coding a sign bit until the point in the embedded codestream where the sign bit is relevant. For an image of pixel depth b, the largest possible coefficient magnitude is 2^{b+3}−1, i.e., a b+3 bit number. Therefore, every coefficient is encoded in b+3 binary decisions plus an additional one for the sign bit, if needed.
TABLE 7 Coefficient alignment 1HH 1HL, 1LH 2HH 2HL, 2LH 3HH 3HL, 3LH 4HH 4HL, 4LH reference Left 1 Left 1 Left 2 Left 2 Left 3 Left 3 Left 4  The alignment of different sized coefficients is known to both the coder and the decoder and has no impact on the entropy coder efficiency.
 Note also that every subblock of every block of a coding unit has its own possible largest magnitude range, which is known to the coder and the decoder. For most subblocks, there are several completely deterministic binary zero values that are skipped by the entropy coder for the sake of efficiency.
 The order that the coefficients during each bitplane are processed are from the low resolution to the high resolution and from low frequency to the high frequency. The coefficient coder within each bitplane is from the high level (low resolution, low frequency) to the low level (high resolution, high frequency) as follows:
 4LL, 4HL, 4LH, 4HH, 3HL, 3LH, 3HH, 2HL, 2LH, 2HH, 1HL, 1LH, 1HH
 Within each subblock, the coding is in raster scan order.
 Note that coding units of the same data set may have different alignments. In one embodiment, the alignment may be specified in a header, such as header 2401 in
FIG. 24A .  The Horizon Context Model

FIG. 25 shows the neighborhood coefficients for every coefficient of a coding unit. Referring toFIG. 25 , the neighborhood coefficients are denoted with the obvious geographical notations (e.g., N=north, NE=northeast, etc).  Given a coefficient, such as P in
FIG. 25 , and a current bitplane, the context model can use any information from all of the coding unit prior to the given bitplane. The parent coefficient of the present coefficient is also used for this context model.  Rather than using the neighborhood or parent coefficient values to determine the context for the present bit of the present coefficient, the information is reduce to two bits referred to herein as tailinformation. This information can be stored in memory or calculated dynamically from the neighbor or parent coefficient. The tailinformation relates whether or not the first nonzero magnitude bit has been observed (e.g., whether the first “onbit” has been observed) and, is so, about how many bitplanes ago. Table 8 describes the tailinformation bits.
TABLE 8 Definition of the tail information Tail Definition 0 no onbits is observed yet 1 the first onbit was on the last bitplane 2 the first onbit was two or three bitplanes ago 3 the first onbit was more than three bitplanes ago
From the 2bit tail information, a “tailon” bit of information indicates whether the tail information is zero or not. In one embodiment, the tailinformation and the tailon bits are updated immediately after the coefficient has been coded. In another embodiment, updating occurs later to allow parallel context generation.  As an example, Table 9 shows the tailon bit, as a function of bitplane, for a coefficient with the magnitude expressed in binary as follows (“*” means it does not matter whether it is 0 or 1):
0 0 0 1 * * * * 
TABLE 9 Table if tail information for the example context coefficient Bitplane 1 2 3 4 5 6 7 8 Prior to the occurrence of the 0 0 0 1 2 2 3 3 example coefficient Subsequent to the occurrence 0 0 0 0 1 2 2 3 of the example coefficient
A third type of context information is the sign bit. Since the signbit is coded right after the first onbit, the tail indicates whether the sign information is known or not. Therefore, the signbit has no information context unless the tail is nonzero (recall that there are three possibilities for the sign: positive, negative, or unknown).  The context model of the system uses up to 11 bits to described the context. This number is not fully specified: only 1030 or 1031 contexts are actually used, including the sign bit contexts. The meaning of every bit position depends on the previous binary values. One embodiment follows these rules:
 If the tailon bit of the present coefficient is zero (for head bits), then 1024 contexts from the tailinformation bits of the parent and W coefficient and the tailon bit of the NW, N, NE, E, SW, and S coefficients respectively. In one embodiment, adaptive coding is used for head bits. In some embodiments, a single context is used to provide some “run coding” of head bits. If the next 16 bits to be coded are all head bits and their N, S, E, and W neighbors and parent all have tailinformation 0, a single decision will be coded. This decision indicates if any of the 16 bits to be coded has a one bit at the current bitplane. If there is no one bit, the 16 decisions normally coded can be skipped. If any of the next 16 coefficients contain their first significant bit, then 16 decisions are used one for each bit. This “look ahead” results in fewer calls to the binary entropy coder which results in higher speed and higher compression.
 If the tailon bit of the present coefficient is one (for tail bits), then three contexts from the tailinformation bits present coefficient. Fixed probability coding may be used as discussed previously.
 If the present bit of the present coefficient is the first nonzero magnitude bit, then the sign bit of the present coefficient is encoded immediately after. The context for the sign bit is 3 contexts from the N_tailon bit and the N_sign bit, where if the N_tailon bit is zero, then the N_sign bit is unknown. If the N_sign bit is unknown, the sign is coded with the probability 0.5. Otherwise, the sign is coded adaptively.
 In summary, an 11 bit number is created denoting the context from the information available from the current, neighboring, and parent coefficients in the same coding unit.
 FIGS. 26AD illustrate causal and noncausal coefficients that may be used to condition a coefficient P. Each of the templates illustrated include the use of both tailon bits and tailon information. While the tailon bit of each coefficient provides 1 bit, the tailon information of each coefficient comprises 2 bits. In
FIG. 26A , the total number of bits provided by the template is 8. InFIGS. 26B and 26C , the total number of bits provided by the template is 10.  Additional bits may be used to condition the head bits of coefficient P. In one embodiment, two additional bits may specify bit position as follows:
 00 first bit (MSB) and second bit
 01 third bit and fourth bit
 10 fifth bit and sixth bit
 11 other bits
 It should be noted that other templates may be designed based on neighboring and parent coefficients. Furthermore, in one embodiment, the coefficients used to condition coefficient P are causal, if not by position by bit plane.
 In one embodiment, the Stransform parents are used for conditioning, not TStransform parents. This reduces buffering needed for conditioning by saving low pass lines before continuing to code the next one. This is not advantageous where the order of entropy coding is important and encoder memory is not important.
 Note that there is a tradeoff between having more contexts to create more skewed data and the adaptation efficiency as a result of less data within a context.
 In one embodiment, the tail bits that do not need conditioning do not have to be buffered (for conditioning). They can be coded immediately as soon as they are available. In such a case, the channel manager may send the bits out immediately to the channel.
 In one embodiment, rather than coding the coefficients on the lowest level of the decomposition in the same way as the other coefficients or not coding them at all, the coefficients may be coded using prediction coding, such as DPCM.
 For tail coding bits, either fixed probabilities or adaptive ones may be used.
 With respect to conditioning, the last bit may be conditioned, in part, on the secondtolast bit. Also, bits after the first “on” bit may be conditioned on how far they are from the first “on” bit.
 In one embodiment, some tail bits are coded adaptively. For example, when there are fewer than T tail bits in a coefficient (e.g. T=2, T=3), adaptive coding is used. The context for these bits include the bit position and any previously coded tail bits in the current coefficient. This is similar to the Mary coding of centers taught by Langdon for DPCM data.
 In an alternative embodiment, some or all data is coded with a Mary entropy coder instead of a binary entropy coder. Mary coders include Tunstall, fixed Huffman, Adaptive Huffman, etc. For example, one Huffman code could be used for head bits. In an alternative embodiment instead of coding head bits one bit at a time, a priority encoder is used to determine the position of the first “on” bit. The bits in the binary representation of the position are then coded with a binary entropy coder.
 Horizon Context Model
 The context model of the present invention is shown in block diagram form in
FIG. 27 . Context model 2700 contains the sign/magnitude unit 109 (FIG. 2 ), and three units for processing the different bits in the coefficient. Based on the bit being coded, one of the three units is selected. A switch may be included to facilitate the switching between the units in a hardware implementation. These units include a head bit block 2701, a sign bit block 2702, and a tail bit block 2703. The head bit block 2701, a sign bit block 2702, and a tail bit block 2703 model the head bits, the sign and the tail bits, respectively, as described above. The output of these three units is sent to the entropy coder 104 (FIG. 1 ).  The coder may include optional control that saves states (optional), provides initial states and resets the coder (for instance, at the end of a coding unit).
 The contexts defined above are used with an adaptive binary entropy coder with a few exceptions. The contexts of the head bits (present coefficient tailon bit=0) and the sign bits when N_tailon=1 are allowed to adapt.
 However, the bits after tailon=1 and the sign bits when N_tailon=0 are modeled by a stationary source. In these cases, the adaptation feature of the entropy coder is not necessary and, in fact, can be a source of compression inefficiency. For the following contexts a fixed (nonadaptive) state, described in terms of the states of the Qcoder is used.
 Statistical Models
 The context is for coding the sign bit when N_tailon=0 (the sign of the Ncoefficient is not known) is coded at the fixed Qcoder state 0—probability approximately 0.5.
 The context is for coding the first binary value after the first nonzero (tailinformation=1)) bit is coded at the fixed Qcoder state 4—probability approximately 0.7.
 The context is for coding the second and the third binary values after the first nonzero bit (tail information=2) is coded at the fixed Qcoder state 3—probability approximately 0.6.
 The context is for coding the fourth and later binary values after the first nonzero bit (tailinformation=3) is coded at the fixed Qcoder state 0—probability approximately 0.5.
 In some embodiments, the entropy coding is reset after each coding unit, so the adaptation cost for contexts that are allowed to adapt (e.g., contexts used to encode binary values before the first onbit) is significant. To keep this cost to a minimum, a set of initial states may be computed for these contexts from, for instance, some training data.
 The following discussion assumes that the coefficients are 18bits and that the input data has undergone a four level decomposition.
 One embodiment of the sign/magnitude unit 109 is shown in
FIG. 28 and converts input coefficients into a sign/magnitude format. Sign/magnitude unit 109 is coupled to receive 18 bits of the coefficients and includes an inverter 2801 and a multiplexer (MUX) 2802. The sign/magnitude unit 109 outputs a significance indication (e.g., a 5bit value), the mantissa of the input coefficient, (e.g., 17 bits), the sign of the input coefficient 1 bit and an index from counter 2804, (e.g., 7 bits.)  MUX 2802 is coupled to receive 17 bits of the coefficient directly input into sign/magnitude unit 109 and an inverted version of the 17 bits from two's complementer 2801. Based on the sign bit (coefficient bit 17) received on the select input of MUX 2802, the positive of the two inputs is output as the mantissa.
 Coding Alternatives
 The binary entropy coder is given a context and the bit to be encoded.
 For bitplane by bitplane coding, the present invention uses a carrysave style computation (on a general purpose computer) so the computation is done with a data format that is suitable for fast coding by bitplane. For instance, in such an implementation, a 32 bit processor may compute 1 bit of each of 32 coefficients in the same bit plane at the same time, instead of one entire coefficient. Using such an embodiment results in increased speed when coding by bitplanes.
 Since a coding unit is encoded at a time and all the coefficients in a coding unit reside in the memory, there is no memory cost for the storage of context information, except what the adaptive binary entropy coder needs. For example, the Qcoder needs to keep the binary value of the LPS (least significant symbol) for all contexts and the current state for each context that is allowed to adapt. Since Qcoder has 30 states, a 6 bit number (1 bit for the LPS and 5 bits for states) is needed for each context. Therefore, the memory cost is 1024×5+1030=6150 bits of memory.
 Note that there is no special signaling information necessary for the onepass embodiment described above. If the number of levels of decomposition were a variable, that would require at least 3 bits of header information. The header used for this embodiment, but not counted in the compressed bits, are the following:
 Width, 2 bytes,
 Height, 2 bytes,
 Bits per pixel of input image, 1 bytes.
 Memory Management
 Memory management for coded data in the one pass system is presented for systems that store all of the data in memory and for systems that transmit data in a channel. In the onepass system, coded data must be stored such that it can be accessed in an embedded causal fashion, so that less significant data can be discarded without losing more significant data. Since coded data is variable length, dynamic memory allocation can be used.
 In one embodiment of the present invention, the embedded coding scheme uses 18 bitplanes and, thus, assigns 18 levels of significance to the data. The coder in a onepass system is “embedded causal.” That is, the decoding events corresponding to a bitplane do not require information from lower order bitplanes. In one embodiment, all of the bits from one tree will be coded before any of the bits in the next tree are coded, so bits of different significance are not separated. For coders that do not use internal state, like Huffman coders, this is not a problem. However, many sophisticated compressors with better compression use internal state.
 One way to solve this problem for these coders is to use 18 different coders, perhaps 18 Qcoder chips. A technique that would allow the use of 9 Qcoder chips is described in U.S. Pat. No. 5,097,261 (Langdon, Jr.), entitled “Data Compression for Recording on a Record Medium,” issued Mar. 17, 1992. A better way uses a pipelined coder to implement different virtual codes with a single physical coder, such as that described in U.S. Pat. No. 5,381,145, entitled “Method and Apparatus for Parallel Decoding and Encoding of Data”, issued Jan. 10, 1995. In such a coder, the multiple bit generator states for each probability are each assigned to a part of the data. For example, each of 18 states could be assigned to a particular bitplane for 18 bit data. Registers in the shifter in the coder are also assigned to each part of the data. In the encoder, no interleaving is performed; each part of the data is simply bitpacked.
 In embodiments either with multiple physical or virtual coders, memory is allocated to each part of the data. When compression is complete, a linked list describing the memory allocated plus the contents of the allocated memory is the result.
 If the memory overflows, the memory allocation routing causes more important data to overwrite less important data. For example, the least significant bit of numeric data might be overwritten first. The information that describes how memory is allocated must be stored in addition to the coded data.

FIG. 29 shows an example dynamic memory allocation unit for three categories of significance. Only three categories are described to avoid obscuring the present invention; typically, a larger number of categories, such as 8, 16 or 18, would be used. A register file (or other storage) holds a pointer for each category of significance plus another pointer for indicating the next free memory location. The memory is divided into fixed size pages.  Initially, each pointer assigned to a significance category points to the start of a page of memory and the free pointer points to the next available page of memory. Coded data, identified with a significance category, is stored at the memory location addressed by the corresponding pointer. The pointer is then incremented to the next memory location.
 When the pointer reaches the maximum for the current page, the address of the start of the next free page stored in the free pointer is stored with the current page as a link. In one embodiment, the part of the coded data memory or a separate memory or register file could be used for this purpose. Then the current pointer is set to the next free page. The free pointer is incremented. These steps cause a new page of memory to be allocated to a particular significance category and provide links to pages of memory containing data for a common significance category so that the order of allocation can be determined during decoding.
 When all pages in the memory are in use and there is more data that is more significant than the least significant data in memory, memory reassignment may be performed. Three such reassignment techniques are described. In all three cases, memory assigned to the least significant data is reassigned to more significant data and no more least significant data is stored.
 First, the page currently being used by the least significant data is simply assigned to the more significant data. Since most typical entropy coders use internal state information, all of the least significant data stored previously in that page is lost.
 Second, the page currently being used by the least significant data is assigned to the more significant data. Unlike the previous case, the pointer is set to the end of the page and as more significant data is written to the page, the corresponding pointer is decremented. This has the advantage of preserving the least significant data at the start of the page if the more significant data does not require the entire page.
 Third, instead of the current page of least significant data being reassigned, any page of least significant data may be reassigned. This requires that the coded data for all pages be coded independently, which may reduce the compression achieved. It also requires that the uncoded data corresponding to the start of all pages be identified. Since any page of least significant data can be discarded, greater flexibility in quantization is available.
 The third alternative might be especially attractive in a system that achieves a fixed rate of compression over regions of the image. A specified number of memory pages can be allocated to a region of the image. Whether lessor significant data is retained or not can depend on the compression achieved in a particular region. Note that the memory assigned to a region might not be fully utilized if lossless compression required less than the amount of memory assigned. Achieving a fixed rate of compression on a region of the image can support random access to the image regions.
 When compression is complete, the data may be transferred, if desired, to a channel or storage device in order of significance. The various links and pointers would then no longer be needed and multipass decoding could be performed. Alternatively, for onepass decoding, the pointers to the data for each significance can be kept.
 In some applications, some significance categories might not be used. For example, a 16bit compressor might be used on a 12bit medical image, so significance categories corresponding to bitplanes 15 . . . 12 would be unused. In implementations with large pages and many unused significance categories, this would waste memory (when the system does not know in advance that some categories are unused), since memory does not have to be allocated to them. Another solution to this memory waste would be to use a small memory (or register) to hold a count for each significance category. The count would keep track of the number of “insignificant” decisions that occur before any other decision occurs. The memory required to store these counters must be “tradedoff” against the memory used by unused significance categories.
 The ability to write data into each page from both ends can be used to better utilize the total amount of memory available in the system. When all pages are allocated, any page that has sufficient free space at the end can be allocated for use from the end. The ability to use both ends of a page must be balanced against the cost of keeping track of the location where the two types of data meet. Note that this is different from the case where one of the data types was not significant and could simply be overwritten.
 Improvements
 In one embodiment, the present invention provides lossless compression with a small memory buffer. The present invention is capable of serving many different application and device environments. The following describes techniques to implement various features to enable the system of the present invention to be more flexible for different applications and target devices. Note that for the present invention, choices in resolution, pixel depth, random access, quantization, etc. do not have to be made at encode time.
 Data Arrangement
 With respect to data arrangement, there are a number of options for arranging the image and coefficient data with the system of the present invention. As is discussed in more detail below, these options include, but are not limited to, the tiling of coded units, the number of levels of decomposition, the selection of wavelet transform filters, and the alignment of coefficients. As such, each of these could be a user or system designer controlled parameter.
 As discussed above, one parameter may be the tiling of coded units. The height and width of the coding unit are defined with respect to trees of the present invention. For random access, the start of the coded data for each coding unit can be designated by pointers or markers in the codestream or pointers in the header. This would allow access to blocks not the width of the image.
 Another parameter that may be controlled is the number of levels of decomposition. Varying the number of levels of decomposition varies the compression performance based on the fact that the more levels of decomposition results in better compression. Note that varying the number of decomposition levels also affects the memory requirements, as more levels requires more line buffers. More levels might be needed to target a resolution below full resolution. For example, if an original image is 2000 dpi, five levels of decomposition is needed to achieve about 63 dpi. This allows a high resolution scan to be displayed at close to real size on a monitor without decompression and subsampling.
 The type of wavelet transform filters for the horizontal and vertical pass at each level may also be different. This allows for different memory requirements and compression performance. Note that the coefficient size does not increase with more levels. Also, since the wavelet transform is an order N transform, and there is less data to transform as the levels increase, there is little computational cost for more levels.
 Target Devices for the Embedded Codestream
 There are many possible application targets for a particular compressed codestream. It might be desirable to have a codestream that can be sent to a monitor with lower resolution but full pixel depth, a printer with full resolution but lower pixel depth, a fixedrate realtime device with a limited channel, or a fixedsize limited memory device. It is possible that the same codestream is required to serve all of these needs.
FIG. 34 shows a generalization of the relative device characteristics a single application might serve.  Transmission or Decode Codestream Parser
 The system of the present invention with enough speed at the encoder and decoder and enough bandwidth can extract the required data from the decompressed image. Furthermore, the encoder can create a codestream that is intended for one of the above devices. At the encoder, the image can be quantized or down sampled in the traditional fashion.
 However, a virtue of the present invention is that, with the proper signaling, a codestream can be created that can be parsed before transmission or decoding without decompression for any of the above devices. Such a parser may be shown in
FIGS. 35A and B. Referring toFIG. 35A , a parser 3501 is shown receiving a lossless bitstream and generating a lossy bitstream. Referring toFIG. 35B , a parser 3502 is shown receiving a lossy bitstream and generating another lossy bitstream; however, the relationship between the output and the input inFIG. 35B in such that the present invention has the property of being idempotent, which will be described in further detail below. Note that in the case of both parsers 3501 and 3502, the bit rate of data received as an input is greater than that being outputted.  Low Resolution, High Pixel Depth Embedded Target
 If the target is a low resolution, high pixel depth embedded target, this application assumes that the target device has a lower spatial resolution than is available but the full pixel depth is required. Examples of a low resolution, high pixel depth embedded target are monitors. Using the codestream shown in
FIG. 24A , each bitplane is decoded for as many higher level coefficients as needed. This requires the parser to truncate each bitplane. To assist the parser, each bitplane of each coding unit could have markers or pointers denoting the location where the truncation can occur. In such an embodiment, if more than one target resolution is desired, more markers or pointers are required. The bitplanes are coded independently so the entropy coder can be reset for the next bitplane.  Another approach is to embed the data differently, such as shown in
FIG. 24B . Referring toFIG. 24B , the target resolution coefficients within each coding unit is coded first followed by the bitplanes of the remaining high resolution coefficients. In this case, there is only one truncation necessary per coding unit and the entropy coder need not be reset. Markers or pointers can denote the desired truncation point.  High Resolution, Low Pixel Depth Embedded Target
 If the target is a high resolution, low pixel depth embedded target, this application assumes that the target device requires the full resolution available, or more, but cannot use the full pixel depth. Examples of the high resolution, low pixel depth embedded target include low end printers and standard monitors (when images are more than 8 bits/plane). The codestream shown in
FIG. 24A is embedded in this order. Each coding unit is truncated at the point at the right number of bitplanes and the transform is performed on the quantized coefficients. There is a direct relationship between coefficient depth and pixel depth. Markers or pointers can denote the desired truncation point.  Alternately, if the codestream is embedded as shown in
FIG. 24B , then two markers or pointers are used to denote truncation, one for the low resolution bitplanes and one for the high resolution bitplanes. The two sets of bitplanes are coded independently to allow the entropy coder to be reset.  Yet another alternative is to decode some or all of the low resolution coefficients, as described with respect to the low resolution, high pixel depth embedded target, and possibly some data from the high resolution coefficients. Then perform the interpolating wavelet transform described below.
 FixedRate Embedded Target
 If the target is a fixedrate embedded target, this application assumes that a realtime constant pixel output must be maintained while using a constrained channel. In this case, there is a certain maximum codestream data rate locally in time (minimum compression ratio). To achieve this goal, first, the coding units are chosen based on the amount of buffering available at the target device. This defines the locality over which the average compression ratio is to be achieved. Then each coding unit with more data than is allowed is truncated.
 Note that if the codestream data rate does not exceed the maximum channel bandwidth the image is recovered losslessly. This is not true of any other fixedrate system.
 FixedSize Embedded Target
 If the target is a fixedsize embedded target, this application assumes that a fixedsize frame buffer is available to the compressed image data. Unlike the fixedrate application, this requires a minimum compression rate averaged over the entire image, not just locally. Of course, the fixedrate method could be used here, but, by using the concept of averaging over the entire image rather than locally, better bit allocation and image quality can be obtained.
 If the coding unit contained the entire image, it would be trivial to truncate the data that overflows the buffer. If coding units are less than the entire image and all the coding units are truncated to the same number of bits, there is no guarantee that the truncation has uniformly removed the lowest importance levels. A simple solution is to record at encode time (or a later parsing time) the number of coded bits that each importance level contributes to the codestream for each coding unit or globally, or both. The recording can be done using simple counters. These numbers are recorded in a header and can be used for deciding how to truncate each coding unit at transmission or storage time. The header contains an importance level and its corresponding number of bits. The header may also contain this information for each of the coding units that are contained in the stream. When deciding where to truncate, the same effect on each coding unit. For example, if due to memory constrainst, it is determined that one and a half importance levels are to be discarded, then one and a half importance levels from each coding unit are discarded. This allows the effect of the truncation to be spread across the coding units in a uniform manner.
 Achieving a fixedsize compressed image can be achieved at encode time as well. The memory is divided into segments for importance levels. If the memory is about to overflow, lessor important segments are overwritten with more important data.
 Note that if the compressed data does not overflow the memory buffer the image is recovered losslessly. This is not true of any other fixedsize system.
 Interpolating with the Wavelet Transform
 Wavelets can be used to interpolate images to higher resolution. The results are visually quite comparable to bicubic spline techniques. If the compressed data is already in the form of wavelet coefficients, the effective additional computation for interpolation is less than bicubic spline.
 Imagine that all the coefficients of N level decomposition are available. By creating a new lowest level of coefficients, by padding with zeros or some other method, and then performing a N+1 level wavelet reconstruction, the new image is a 2:1 interpolated version of the original.
 This method can also be used with the systems in which there are target devices for the embedded codestream, especially for high resolution, low pixel depth target devices. The coding units are truncated so only the low resolution coefficients are present (or only the low resolution coefficients and a few bits of some or all of the high resolution coefficients). The coefficients are padded to the higher resolution and the reconstruction is performed.
 Using a Channel
 In a system where data is transmitted in a channel instead of being stored in a memory and fixed size pages of memory are used (but only one page per significance category is needed), when a page of memory is full, it is transmitted in the channel, and memory location can be reused as soon as they are transmitted. In some applications, the page size of the memory can be the size of data packets used in the channel or a multiple of the packet size.
 In some communications systems, for example ATM (Asynchronous Transfer Mode), priorities can be assigned to packets. ATM has two priority levels, priority and secondary. Secondary packets are only transmitted if sufficient bandwidth is available. A threshold can be used to determine which significance categories are priority and which are secondary. Another method would be to use a threshold at the encoder to not transmit significance categories that were less significant than a threshold.
 Thus, one embodiment of the memory manager of the present invention controls the storage of compressed data in a fixed size memory. That is, the memory manager divides the compressed data into different importance levels. When the memory is full, lessor important data is overwritten by more important data.
 In order to manage a channel using a limited amount of buffer memory (e.g., a fixedrate), in one embodiment of the present invention, all data is transmitted if sufficient bandwidth is available; otherwise, lessor importance data is discarded and only more important data is transmitted.

FIG. 30 illustrates a system utilizing a channel manager. Referring toFIG. 30 , wavelet transform 3001 generates coefficients. These coefficients are subjected to context model 3002. Context model 3002 is coupled to a channel manager 3003 that includes a buffer memory. The channel manager 3003 is coupled to a limited bandwidth channel 3004.  Channel manager 3003 controls the rate at which data is output to channel 3004. As data is received into its buffer memory, channel manager 3003 determines if the amount of data is greater than the bandwidth of channel 3004. If the amount of data is not greater, then channel manager 3003 outputs all of the data. On the other hand, if the amount of data received into the buffer memory is greater than the channel bandwidth, then channel manager 3003 discards information in its buffer memory to match the bandwidth of channel 3004.
 Channel 3004 may indicate its bandwidth to channel manager 3003. In another embodiment, channel manager 3003 may dynamically determine the bandwidth of channel 3004 based on the amount of time that it takes channel 3004 to send a predetermined unit (e.g., packet) of data through channel 3004. That is, the channel bandwidth can be treated as dynamic if desired.
 In one embodiment, channel manager 3003 operates on an image that is broken up into tiles (or bands). This is a “tile dominant over importance” scheme in contrast to the fixed size memory manager where tiling and importance are somewhat independent. Each tile is separately coded and divided by importance levels and fixed size pages. Therefore, all the coded data for each tile is grouped together. Coded data within each tile is tagged by importance level.
 In one embodiment, the buffer memory in channel manager 3403 is at least two (or perhaps three) times the size of the channel's packet size and several times (perhaps four times) larger than the expected compressed data size for a tile.
 A fixed maximum amount of the buffer memory is assigned to a tile. The maximum amount is matched to the bandwidth of the channel. Buffer memory is broken into fixed size segments and allocated as needed. If the memory usage reaches the maximum allowed, segments are reassigned as in the management of fixed size memory system.

FIG. 31 illustrates an example of buffer memory usage. Referring toFIG. 31 , a circular buffer memory has multiple fixed sized segments 3101 that are divided into multiple fixed size packets 3102 for channel input/output. As shown, different tiles of data may occupy the same packet of memory. In one embodiment, the different tiles represent different importance levels. As the packet size amount of buffer space is used, channel manager 3103 indicates to the context model to output the data to channel 3104 (FIG. 30 ). As shown, tile N−2 and part of tile N−1 would be output as the current packet. Thus, a packet size amount of memory is allocated and filed in order to match the bandwidth of the channel.  If the buffer does not fill up, the extra memory may be used for future tiles. In one embodiment, to avoid noticeable tile boundaries at the start of a difficult to compress region versus the next block, only some fraction (½, ⅓, etc.) of the extra is used by the next tile.
 The channel manager of the present invention may be used where data can only be transmitted in a certain period of time. Using such a channel manager, the data transmission occurs during the time period regardless of the complexity, because the data is embedded based on its importance.
 Alternate Embodiment of the Channel Manager
 One goal of the channel manager of the present invention is to use minimal memory. In one embodiment, where the channel manager does not contain buffer memory, the following may be used:
 for each coding unit

 for each bitplane do
 for each frequency do
 for each spatial location do
 for each frequency do
 for each bitplane do
 In one embodiment, the coder (or set it to a known state) is reset at the start of each band. In one embodiment a band comprises 16 lines for a four level decomposition if the band memory is to be reduced.

FIG. 32 illustrates a bitstream using the above method. Referring toFIG. 32 , the bit stream is divided into fixed size segments, which are channel packets, disk sectors or whatever is a reasonable amount of buffer for the channel. Note that this division may be no more than a logical division during encoding; the encoder can output using no buffering if desired. Each fixed size segment includes an indication of the most important data in the segment.  The structure of a segment is shown in
FIG. 33 . Referring toFIG. 33 , the bitstream for one segment includes coded data 3301, an optional pointer(s) or ID 3302 and a level of the most important data in the segment 3303. In one embodiment, bit field 3303 comprises 2 to 5 bits. If the most important level is 0 (the most important one), the next to last M bits of the segment is a pointer that tells where in the segment the level 0 data starts at. Note that the first segment of data can be entirely coded data, no overhead is needed.  In one embodiment, the starting point for each band may be identified using restart markers, similar to those used in the JPEG standard. However, the marker used should be that symbol that occurs least often during coding.
 Now again considering
FIG. 31 , assume it is desired to decompress only some importance levels (perhaps only the most important level). Decompression starts with the first segment. For segment 2, the “level of the most important data in segment” is checked, and perhaps the entire segment can be skipped where the most important level contained in the segment is less than the level(s) being decompressed. For the third segment, the pointer is used to find the start of band 2, and decompression of band 2 can begin.  Note that to ensure that all the most significant data in a segment is obtained, it might be required to decompress the entire segment, particularly when more than one band falls in the segment.
 By selectively decompressing only a predetermined number of significant bands, a preview image maybe obtained. This may be advantageous when data is in embedded form and lossy versions of lossless data are desired.
 Depending on the desired access and quantization possibilities, and whether or not the time to decompress an entire band is important, the optional pointer(s) or ID at the end of the segment can contain:

 A next segment pointer for fixed size memory management.
 An ID for the segment or ID of band(s) contained. (Supports channel quantization, would indicate if segment 2 were dropped for example)
 The number of different bands that the segment contains data for (or at least a bit indicating that a band contains more than two segments). (Supports not decompressing entire segments after decompressing the desired data).
 An example of the overhead for a band of 512×16 pixels, consider 8bit image having 2:1 lossless compression, and a segment size of 512 bytes. Note that a band typically compresses to 8 segments. For 32 importance levels, 5 bit tags are used. Assume pointers are on byte boundaries, so 9bit pointers are used. Therefore, there are 49 overhead bits/(32K compressed bits +49) representing a total of 0.15%.
 NearLossless
 One concept of near lossless compression is based on absolute error in the reconstructed pixel values. Hence, in a nearlossless compressed image with an absolute error of 1 it is guaranteed that no pixel value in the decompressed image differs from the original by more than 1 unit of pixel value. This is an absolute definition independent of the pixel depth or the dynamic range of the image. An obvious and, under some reasonable assumptions, optimal to such a system is to keep the compression/decompression part lossless and use preprocessing and postprocessing schemes to achieve nearlossless. This method has been adopted in this implementation.
 The nearlossless compressed image with an absolute error of e is achieved by the quantization method that maps every 2e+1 consecutive integers to their middle integer. For example, for error equal to 3, the pixel values are quantized such that 0 through 6 is mapped to 3 and 7 through 13 is mapped to 10, and so on. The quantized image as such is not suited for a transformbased compression system. Hence, it is mapped onetoone (losslessly) into an image of lower dynamic range or depth, called the shallow image. This is done by mapping the middle values (representative values) to consecutive integers preserving the order. Mathematically given a pixel value x, it is quantized to:
$q\left(x\right)=\left(\lfloor \frac{x}{2e+1}\rfloor +1\right)\xb7e$
The onetoone mapping of the representative values to the shallow image values is,$p\left(x\right)=\lfloor \frac{x}{e}\rfloor 1$
The inverse of the onetoone mapping p which maps the shallow image values back to representative values is,
p ^{−1}(x)=e·(x+1)
Quantization (q(x))) followed by the mapping to the shallow image values (p(x)) is the preprocessing operation, which proceeds the lossless compression. The map from the shallow image values to the representative values form the postprocessing operation, which follows the lossless decompression.  Transform domain quantization can also be used. Many coefficients have an effect on peak error propagates through multiple levels of the transform. It is easier to determine the effect on peak error for the highpass coefficients that have no children.
 Consider a onedimensional signal which is to be encoded with a maximum peak error of ±E. This can be achieved by quantizing the finest detail highpass coefficients to ±2. For a twodimensional signal, since there are two applications of the highpass filter, the finest detail HH coefficients can be quantized to ±4E.
 An alternative to using quantization of the input image is to control the decisions to the entropy coder. One example is the following. For each coefficient, if setting the coefficient to zero would not cause the error in any pixel affected by that coefficient to exceed the maximum error, the coefficient is set to zero. In some implementations only particular coefficients will be tested, perhaps only the AC coefficients that have no children. Coefficients can be considered with a greedy strategy where one is considered at a time. Other strategies can consider small groups of coefficients and choose to zero the largest possible subset of the group.
 As described above, quantization is achieved by the embedding function and is optimized to maximize performance with respect to a quantitative metric such a RMSE. In one embodiment, the quantization of the various coefficients is performed to achieve improved results with respect to the Human Visual System. In such a case, little modification of the embedding scheme is required. For instance, the coefficients are shifted to change the relation between them by a factor of two and/or to represent the number in a different type of numbering system such as Gray code.
 The compressed wavelet system of the present invention may be useful in an image editing situation. In the prior art, applying image processing functions to a full resolution print image is time consuming and makes interactive processing difficult.
 In one embodiment, if an image editing system saved tiles that are compressed, it could very quickly apply operations to the scale representation (the very low pass) for the user to evaluate. This can be done quickly because only the displayed pixels are operated on. It is only an approximation of the final result since the actual full resolution pixels affect the output. The user will therefore zoom in (perhaps on some text) on various portions of the image. As the user does, the image editing system applies the operation to that part of the image. To facilitate this, a tree is stored that contains the compressed coefficients and information about which processing operations have been applied and which still need to be applied.
 In one embodiment, the importance levels are redefined to permit lossless compression in a defined window and lossy compression for the rest of the image. The window could be fixed or selectable by a user. There could be multiple windows of different importance. In one embodiment, the window is as small as 48×48 blocks, although it should be possible to have much finer occurrence even down to the two pixel level.
 A possible application of this is satellite imagery, where satellites use a lossless window on data so that statistical studies are not messed up with JPEG artifacts, but the lossy compression allows a much wider field of view than would be possible with lossless compression.
 In one embodiment, the user draw arbitrary boxes on an image and specifies the relative importance of the data in the box. Once a box has been drawn, software increases the size of the box bigger to the smallest size which meets the required constraints and contains the user box. The file header would contain information about the boxes used and the importance level. The encoder and decoder would then provide more resolution to the coefficients in the important boxes as coding/decoding proceeds. For the satellite imagery case, the important window is likely to be predefined.
 Idempotent Operation
 For a lossy compressor, in general, idempotent operation as DCDCI=DCI, where I is the image, C the compression operation and D the decompression operation. In the present invention, when data is compressed to X bits and then decompressed, they should be able to be recompressed to X bits and have the original X bits. There is an even stronger version of idempotent for an embedded system. In one embodiment, an image when compressed to X bits, decompressed and recompressed to Y bits with Y<X is the same as if the original image is compressed to Y bits.
 This is important because compression and processing causes images to drift farther from the original. If the compressor is idempotent, then multiple lossy compression decompression cycles do not affect the data. In the present invention, it does not matter how many times data is compressed and decompressed at the same compression ratio. Also, a lossy input to a parser subjected to further quantization produces an identical result to the case when a lossless input is used. Thus, the present invention comprises a transformbased idempotent system that includes a wavelet transform, a context model, and an entropy coder, such that coefficients are described and stored in an order such that removing information does not change the description for prior coefficients.
 Applications
 The present invention may be used for a number of applications, some of which are mentioned as examples below. Specifically, highend applications with highresolution and deep pixels and applications that are artifact intolerant can use the present invention. The present invention enables highend applications maintain the highest quality in highquality environments while applications with more limited bandwidth, data storage, or display capabilities can also use the same compressed data. This is precisely the deviceindependent representation that is commonly being required of modern imaging applications such as web browsers.
 The superior lossless compression performance of the present invention on deep pixel images (10 bits to 16 bits per pixel) is ideal for medical imagery. In addition to the lossless compression, the present invention is a true lossy compressor without many of the artifacts known to blockbased compressors. Lossy artifacts derived by using the present invention tend to be along sharp edges where they are often hidden by the visual masking phenomena of the Human Visual System.
 The present invention may be used in applications involving the prepress industry in which the images tend to be very high resolution and have high pixel depth. With the pyramidal decomposition of the present invention, it is easy for the prepress operator to perform image processing operations on a lower resolution lossy version of the image (on a monitor). When satisfied, the same operations can be performed on the lossless version.
 The present invention is also applicable for use in facsimile document applications where the time of transmission required without compression is often too long. The present invention allows very high image output from fax machines with different spatial and pixel resolutions. Since transmission time is a premium in this application, the interpolation feature of the present invention is useful.
 The present invention may be used in image archival systems that require compression, particularly for increasing storage capacity. The device independent output of the present invention is useful because the system can be accessed by systems with different resources in bandwidth, storage, and display. Also, progressive transmission capabilities of the present invention are useful for browsing. Lastly, the lossless compression is desirable for output devices in image archiving systems may be provided by the present invention.
 The hierarchical progressive nature in the lossless or high quality lossy data stream of the present invention make it ideal for use in the World Wide Web, particularly where device independence, progressive transmission, high quality, and open standards are imperative.
 The present invention is applicable to satellite images, particularly those that tend to be deep pixel and high resolution. Furthermore, satellite imagery applications have limited bandwidth channel. The present invention allows flexibility and with its progressive transmission qualities, it may be used to allow humans to browse or preview images.
 Some satellites are using a lossless window on data so that statistical studies are not messed up with JPEG artifacts, but the lossy compression allows a much wider field of view than would be possible with lossless compression.
 In one embodiment, the importance levels may be redefined to get lossless compression in a defined window and lossy compression for the rest of the image. The window could be fixed or selectable by a user. There could be multiple windows of different importance. One implementation would probably be with 48×48 blocks as the smallest unit for a window, although it should be possible to have much finer accuracy even down to the two pixel level. This will probably result in more accurate pixels close to the lossless region, but this might make the region stand out less.
 One way this might be implemented is to have the user draw arbitrary boxes on an image and specify the relative importance of the date in the box. Software would make the box bigger to the smallest size which meets the required constraints and contains the user box. The file header would contain information about the boxes used and the importance level. The encoder and decoder would then provide more resolution to the coefficients in the important boxes as coding/decoding proceeds. For the satellite imagery case, the important window is likely to be predefined. Note that this is applicable to applications other than satellite imagery.
 “Fixedrate”, limitedbandwidth applications such as ATM networks need ways of reducing data if it overflows the available bandwidth. However, there should be no quality penalty if there is enough bandwidth (or the compression is high enough). Likewise, “fixedsize” applications like limitedmemory frame stores in computers and other imaging devices need a way to reduce data if the memory fills. Once again, there should be no penalty for an image that can be compressed losslessly into the right amount of memory.
 The embedded codestream of the present invention serves both of these applications. The embedding is implicit to allow the codestream to be trimmed or truncated for transmission or storage of a lossy image. If no trimming or truncation is required, the image arrives losslessly.
 In sum, the present invention provides a single continuoustone image compression system. The system of the present invention is lossless and lossy with the same codestream and uses quantization that is embedded (implied by the codestream). The system is also pyramidal, progressive, provides a means for interpolation, and is simple to implement. Therefore, the present invention provides a flexible “deviceindependent” compression system.
 The unified lossy and lossless compression system is very useful. Not only is the same system capable of stateoftheart lossy and lossless compression performance, the same codestream is as well. The application can decide to retain the lossless code of an image or truncate it to a lossy version while encoding, during storage or transmission of the codestream, or while decoding.
 Lossy compression provided by the present invention is achieved by embedded quantization. That is, the codestream includes the quantization. The actual quantization (or visual importance) levels can be a function of the decoder or the transmission channel, not necessarily the encoder. If the bandwidth, storage, and display resources allowed it, the image is recovered losslessly. Otherwise, the image is quantized only as much as required by the most limited resource.
 The wavelet used in the present invention is pyramidal, wherein a decomposition by a factor of two of the image without difference images is performed. This is more specific than hierarchical decomposition. For applications that need thumbnails for browsing or to display images on low resolution devices, the pyramidal nature of the present invention is ideal.
 The embedding use in the present invention is progressive, specifically by bitplane, i.e., MSB followed by lessor bits. Both the spatial and wavelet domains can be decomposed progressively, although the present invention is progressive in the wavelet domain specifically. For applications that have spatial resolution but lower pixel resolution, such as printers, the progressive ordering of the bits in the present invention is ideal. These features are available with the same codestream.
 One virtue of the structure of the present invention is that it provides a computationally efficient mode for interpolation. If higher resolution is desired, the high pass coefficients can be interpolated from the available wavelet coefficients and the inverse wavelet of the present invention is performed. This method is visually competitive with bicubic spline but is far less computationally intensive with the transform of the present invention.
 The present invention is idempotent meaning that an image can be decompressed in a lossy form and recompressed to the same codestream. This virtue allows multiple compression and decompression cycles in an application that has browsing, filtering, or editing.
 The present invention is relatively simple to implement in both software and hardware. The wavelet transform can be calculated with just four add/subtract operations and a few shifts for each highpass, lowpass coefficient pair. The embedding and encoding is performed with a simple “context model” and a binary “entropy coder”. The entropy coder can be performed with a finite state machine or parallel coders.
 Whereas many alterations and modifications of the present invention will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that the particular embodiment shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of the preferred embodiment are not intended to limit the scope of the claims which in themselves recite only those features regarded as essential to the invention.
Claims (83)
1. (canceled)
2. (canceled)
3. (canceled)
4. (canceled)
5. (canceled)
6. (canceled)
7. (canceled)
8. (canceled)
9. (canceled)
10. (canceled)
11. (canceled)
12. (canceled)
13. (canceled)
14. (canceled)
15. (canceled)
16. (canceled)
17. (canceled)
18. (canceled)
19. (canceled)
20. (canceled)
21. (canceled)
22. (canceled)
23. (canceled)
24. (canceled)
25. (canceled)
26. (canceled)
27. (canceled)
28. (canceled)
29. (canceled)
30. (canceled)
31. (canceled)
32. (canceled)
33. (canceled)
34. (canceled)
35. (canceled)
36. (canceled)
37. (canceled)
38. (canceled)
39. (canceled)
40. (canceled)
41. (canceled)
42. (canceled)
43. (canceled)
44. (canceled)
45. (canceled)
46. (canceled)
47. (canceled)
48. (canceled)
49. (canceled)
50. (canceled)
51. (canceled)
52. (canceled)
53. (canceled)
54. (canceled)
55. (canceled)
56. (canceled)
57. (canceled)
58. (canceled)
59. (canceled)
60. (canceled)
61. (canceled)
62. (canceled)
63. (canceled)
64. (canceled)
65. (canceled)
66. (canceled)
67. (canceled)
68. An apparatus comprising:
a wavelet transform to generate wavelet coefficients;
a model to model the wavelet coefficients from the wavelet transform as part of a process to generate coded data; and
a channel manager to control rate at which the coded data is transmitted to a limited bandwidth channel, the coded data being categorized based on significance.
69. The apparatus defined in claim 68 wherein the wavelet transform comprises a reversible wavelet transform.
70. The apparatus defined in claim 68 wherein the channel manager divides the coded data based on significance.
71. The apparatus defined in claim 70 wherein the channel manager determines significance for portions of the coded data using a threshold.
72. The apparatus defined in claim 71 wherein the channel manager includes a memory to store coded data and overwrites less important data when the memory is full.
73. The apparatus defined in claim 71 wherein the channel manager prevents transmission of coded data categorized as less significance, where significance is determined based on a threshold.
74. The apparatus defined in claim 68 wherein the limited bandwidth channel indicates its bandwidth to the channel manager.
75. The apparatus defined in claim 68 wherein the channel manager dynamically determines the bandwidth of the limited bandwidth channel based on the amount of time expended in sending a predetermined packet of data through the channel.
76. The apparatus defined in claim 68 wherein tiles in the coded data are categorized based on the significance.
77. A method comprising:
generating wavelet coefficients using a wavelet transform;
modeling the wavelet coefficients from the wavelet transform as part of a process to generate coded data; and
controlling rate at which the coded data is transmitted to a limited bandwidth channel, the coded data being categorized based on significance.
78. The method defined in claim 77 wherein the wavelet transform comprises a reversible wavelet transform.
79. The method defined in claim 77 wherein controlling rate at which the coded data is transmitted to a limited bandwidth channel comprises dividing the coded data based on significance.
80. The method defined in claim 79 further comprising:
storing coded data in a memory; and
overwriting less important data in the memory when the memory is full.
81. The method defined in claim 79 wherein controlling rate at which the coded data is transmitted to a limited bandwidth channel comprises preventing transmission of coded data categorized as less significance, where significance is determined based on a threshold.
82. The method defined in claim 77 further comprises the limited bandwidth channel indicating its bandwidth to a channel manager.
83. The method defined in claim 77 wherein tiles in the coded data are categorized based on the significance.
Priority Applications (5)
Application Number  Priority Date  Filing Date  Title 

US08/310,146 US5748786A (en)  19940921  19940921  Apparatus for compression using reversible embedded wavelets 
US8498695A true  19950630  19950630  
US09/499,255 US6873734B1 (en)  19940921  20000207  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
US10/226,853 US7068849B2 (en)  19940921  20020822  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
US11/371,725 US20060222254A1 (en)  19940921  20060308  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
Applications Claiming Priority (1)
Application Number  Priority Date  Filing Date  Title 

US11/371,725 US20060222254A1 (en)  19940921  20060308  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
Related Parent Applications (1)
Application Number  Title  Priority Date  Filing Date  

US10/226,853 Continuation US7068849B2 (en)  19940921  20020822  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
Publications (1)
Publication Number  Publication Date 

US20060222254A1 true US20060222254A1 (en)  20061005 
Family
ID=23201196
Family Applications (4)
Application Number  Title  Priority Date  Filing Date 

US08/310,146 Expired  Lifetime US5748786A (en)  19940921  19940921  Apparatus for compression using reversible embedded wavelets 
US08/693,649 Expired  Lifetime US6222941B1 (en)  19940921  19960809  Apparatus for compression using reversible embedded wavelets 
US11/371,725 Abandoned US20060222254A1 (en)  19940921  20060308  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
US11/599,794 Expired  Fee Related US7492955B2 (en)  19940921  20061114  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
Family Applications Before (2)
Application Number  Title  Priority Date  Filing Date 

US08/310,146 Expired  Lifetime US5748786A (en)  19940921  19940921  Apparatus for compression using reversible embedded wavelets 
US08/693,649 Expired  Lifetime US6222941B1 (en)  19940921  19960809  Apparatus for compression using reversible embedded wavelets 
Family Applications After (1)
Application Number  Title  Priority Date  Filing Date 

US11/599,794 Expired  Fee Related US7492955B2 (en)  19940921  20061114  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
Country Status (4)
Country  Link 

US (4)  US5748786A (en) 
JP (6)  JP3436832B2 (en) 
DE (1)  DE19534943B4 (en) 
NL (1)  NL1001248C2 (en) 
Cited By (10)
Publication number  Priority date  Publication date  Assignee  Title 

US20050036695A1 (en) *  20020906  20050217  Takanori Yano  Image processing apparatus, image processing method, and storage medium 
US20100049778A1 (en) *  20070412  20100225  Thomson Licensing  Method and apparatus for selectively reducing noise in a digital signal 
US20110286530A1 (en) *  20090126  20111124  Dong Tian  Frame packing for video coding 
US20120163470A1 (en) *  20101224  20120628  Microsoft Corporation  Image and video decoding implementations 
US9161034B2 (en)  20070206  20151013  Microsoft Technology Licensing, Llc  Scalable multithread video decoding 
US9185384B2 (en)  20070412  20151110  Thomson Licensing  Tiling in video encoding and decoding 
US9210421B2 (en)  20110831  20151208  Microsoft Technology Licensing, Llc  Memory management for video decoding 
US9215445B2 (en)  20100129  20151215  Thomson Licensing  Blockbased interleaving 
US9554134B2 (en)  20070630  20170124  Microsoft Technology Licensing, Llc  Neighbor determination in video decoding 
US9819949B2 (en)  20111216  20171114  Microsoft Technology Licensing, Llc  Hardwareaccelerated decoding of scalable video bitstreams 
Families Citing this family (173)
Publication number  Priority date  Publication date  Assignee  Title 

US6173275B1 (en) *  19930920  20010109  Hnc Software, Inc.  Representation and retrieval of images using context vectors derived from image information elements 
US7251637B1 (en)  19930920  20070731  Fair Isaac Corporation  Context vector generation and retrieval 
US6549666B1 (en) *  19940921  20030415  Ricoh Company, Ltd  Reversible embedded wavelet system implementation 
US5748786A (en) *  19940921  19980505  Ricoh Company, Ltd.  Apparatus for compression using reversible embedded wavelets 
US6873734B1 (en) *  19940921  20050329  Ricoh Company Ltd  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
US5659631A (en) *  19950221  19970819  Ricoh Company, Ltd.  Data compression for indexed color image data 
SE507410C2 (en) *  19951108  19980525  Ericsson Telefon Ab L M  Method and apparatus for motion estimation 
US5982434A (en) *  19960322  19991109  Sony Corporation  Image signal coding method and device thereof, image signal decoding method and device thereof, and recording medium 
US6141452A (en) *  19960513  20001031  Fujitsu Limited  Apparatus for compressing and restoring image data using wavelet transform 
US6125201A (en) *  19970625  20000926  Andrew Michael Zador  Method, apparatus and system for compressing data 
US6310972B1 (en) *  19960628  20011030  Competitive Technologies Of Pa, Inc.  Shape adaptive technique for image and video compression 
IL119523D0 (en) *  19961030  19970110  Algotec Systems Ltd  Data distribution system 
US5909518A (en) *  19961127  19990601  Teralogic, Inc.  System and method for performing waveletlike and inverse waveletlike transformations of digital data 
US5748116A (en) *  19961127  19980505  Teralogic, Incorporated  System and method for nested split coding of sparse data sets 
US5859604A (en) *  19970114  19990112  International Business Machines Corporation  Merged VLSI implementation of hardware optimized QCoder and software optimized QMCoder 
US7003168B1 (en) *  19970311  20060221  Vianet Technologies, Inc.  Image compression and decompression based on an integer wavelet transform using a lifting scheme and a correction method 
US6445823B1 (en) *  19970312  20020903  Texas Instruments Incorporated  Image compression 
AUPO600897A0 (en) *  19970404  19970501  Canon Information Systems Research Australia Pty Ltd  An efficient method of image compression comprising a low resolution image in the bit stream 
GB2325584B (en) *  19970501  20000329  Ricoh Kk  Decompression system using inverse wavelet transform 
US5949911A (en) *  19970516  19990907  Teralogic, Inc.  System and method for scalable coding of sparse data sets 
US6021227A (en) *  19970630  20000201  HewlettPackard Company  Image compression system including encoder having run mode 
EP0930788A4 (en) *  19970730  20031217  Mitsubishi Electric Corp  Method and device for compressing and expanding image 
EP0905651A3 (en) *  19970929  20000223  Canon Kabushiki Kaisha  Image processing apparatus and method 
US6956973B1 (en) *  19970930  20051018  Texas Instruments Incorporated  Image compression 
DE19744407C1 (en)  19971008  19990211  Luratech Ges Fuer Luft Und Rau  Multidimensional discrete wavelet transformation method for digital or digitised data 
US6937659B1 (en) *  19971114  20050830  Ac Capital Management, Inc.  Apparatus and method for compressing video information 
US6044172A (en) *  19971222  20000328  Ricoh Company Ltd.  Method and apparatus for reversible color conversion 
JP3679586B2 (en) *  19971224  20050803  キヤノン株式会社  Encoding and decoding apparatus and the encoding and decoding method 
US20020044692A1 (en) *  20001025  20020418  Goertzen Kenbe D.  Apparatus and method for optimized compression of interlaced motion images 
WO1999041697A1 (en)  19980213  19990819  Quvis, Inc.  Apparatus and method for optimized compression of interlaced motion images 
US6134350A (en) *  19980218  20001017  Dome Imaging Systems, Inc.  Method of producing wavelets and compressing digital images and of restoring the digital images 
AUPP248498A0 (en) *  19980320  19980423  Canon Kabushiki Kaisha  A method and apparatus for encoding and decoding an image 
JP3639108B2 (en) *  19980331  20050420  株式会社ソニー・コンピュータエンタテインメント  Drawing device and drawing method, and providing medium 
AU3770699A (en) *  19980429  19991116  Zulu Broadcasting Llc  Portable data transmission system for global and local computer networks 
US6236757B1 (en) *  19980618  20010522  Sharp Laboratories Of America, Inc.  Joint coding method for images and videos with multiple arbitrarily shaped segments or objects 
US8050329B2 (en) *  19980626  20111101  Mediatek Inc.  Method and apparatus for generic scalable shape coding 
US6215907B1 (en) *  19980626  20010410  FisherRosemont Systems, Inc.  Recursive online wavelet data compression technique for use in data storage and communications 
US6310978B1 (en) *  19981001  20011030  Sharewave, Inc.  Method and apparatus for digital data compression 
AUPP686498A0 (en) *  19981030  19981126  Canon Kabushiki Kaisha  A decoder for decoding a coded representation of a digital image 
US6606416B1 (en)  19981030  20030812  Canon Kabushiki Kaisha  Encoding method and apparatus for representing a digital image 
US6463177B1 (en) *  19981104  20021008  Sharp Laboratories Of America, Inc.  Dynamic management of embedded coded images in a digital storage device 
US6487319B1 (en) *  19981118  20021126  Sarnoff Corporation  Apparatus and method for identifying the location of a coding unit 
US6208276B1 (en) *  19981230  20010327  At&T Corporation  Method and apparatus for sample rate pre and postprocessing to achieve maximal coding gain for transformbased audio encoding and decoding 
US6718065B1 (en) *  19990204  20040406  Quvis, Inc.  Optimized signal quantification 
CA2361410A1 (en) *  19990204  20000810  Quvis, Inc.  Optimized signal quantification 
WO2000046741A1 (en) *  19990204  20000810  Quvis, Inc.  Improving compressed image appearance using stochastic resonance and energy replacement 
EP1030524A1 (en) *  19990219  20000823  Alcatel Alsthom Compagnie Generale D'electricite  Method for encoding a digital image and coder 
US6215908B1 (en) *  19990224  20010410  Intel Corporation  Symmetric filtering based VLSI architecture for image compression 
JP2000295618A (en) *  19990308  20001020  Texas Instr Inc <Ti>  Image encoding method using embedding type zero tree pattern and bit plane 
US6633679B1 (en)  19990323  20031014  Teletechnologies, Ltd.  Visually lossless still image compression for CMYK, CMY and Postscript formats 
CN1197253C (en)  19990415  20050413  株式会社理光  Data high speed compressing and stretching method and device 
US6643406B1 (en)  19990728  20031104  Polaroid Corporation  Method and apparatus for performing linear filtering in wavelet based domain 
US7065253B2 (en)  19990903  20060620  Intel Corporation  Wavelet zerotree coding of ordered bits 
US6594391B1 (en) *  19990903  20030715  Lucent Technologies Inc.  Method and apparatus for texture analysis and replicability determination 
US6771829B1 (en) *  19991023  20040803  Fastvdo Llc  Method for local zerotree image coding 
US6549673B1 (en) *  19991028  20030415  Lucent Technologies Inc.  Waveletbased compression of images for storage, transmission and reconstruction using hierarchical subband decomposition 
JP2001136524A (en) *  19991102  20010518  Ricoh Co Ltd  Compression and expansion device 
US6912250B1 (en)  19991112  20050628  Cornell Research Foundation Inc.  System and methods for precursor cancellation of intersymbol interference in a receiver 
TW452708B (en) *  19991124  20010901  Winbond Electronics Corp  Architecture for fast compression of 2dimensional image data 
US8204924B1 (en)  19991206  20120619  Hrl Laboratories, Llc  Variable precision wavelets 
US6671413B1 (en) *  20000124  20031230  William A. Pearlman  Embedded and efficient lowcomplexity hierarchical image coder and corresponding methods therefor 
AUPQ618500A0 (en)  20000313  20000406  Canon Kabushiki Kaisha  Memory management of compressed images data 
EP1152620A3 (en) *  20000428  20020911  Avxing International Ltd.  Image coding embedded in matrix operation 
US7023922B1 (en) *  20000621  20060404  Microsoft Corporation  Video coding system and method using 3D discrete wavelet transform and entropy coding with motion information 
US6678422B1 (en) *  20000830  20040113  National Semiconductor Corporation  Method and apparatus for image data compression with low memory requirement 
US7239424B1 (en) *  20000908  20070703  Ricoh Co., Ltd.  Waveletbased image processing path 
US6549674B1 (en) *  20001012  20030415  Picsurf, Inc.  Image compression based on tiled waveletlike transform using edge and nonedge filters 
WO2002035849A1 (en) *  20001024  20020502  Eyeball Networks Inc.  Threedimensional waveletbased scalable video compression 
AUPR192700A0 (en)  20001206  20010104  Canon Kabushiki Kaisha  Storing coding image data in storage of fixed memory size 
US7069545B2 (en) *  20001229  20060627  Intel Corporation  Quantization and compression for computation reuse 
US6895120B2 (en) *  20010330  20050517  Ricoh Co., Ltd.  5,3 wavelet filter having three high pair and low pair filter elements with two pairs of cascaded delays 
AUPR433901A0 (en) *  20010410  20010517  Lake Technology Limited  High frequency signal construction method 
WO2002091219A1 (en) *  20010507  20021114  Hrl Laboratories, Llc  Method and apparatus for jointly optimizing linear signal processing filters with subband filters 
US6956903B2 (en) *  20010529  20051018  Intel Corporation  Method and apparatus for threedimensional wavelet transform 
US6834123B2 (en) *  20010529  20041221  Intel Corporation  Method and apparatus for coding of wavelet transformed coefficients 
US6697521B2 (en) *  20010615  20040224  Nokia Mobile Phones Ltd.  Method and system for achieving coding gains in waveletbased image codecs 
DE10129240A1 (en)  20010618  20030102  Fraunhofer Ges Forschung  Method and apparatus for processing timediscrete audio samples 
US7082450B2 (en) *  20010830  20060725  Nokia Corporation  Implementation of a transform and of a subsequent quantization 
EP1294196A3 (en) *  20010904  20041027  Interuniversitair Microelektronica Centrum Vzw  Method and apparatus for subband encoding and decoding 
JP3796432B2 (en) *  20011031  20060712  キヤノン株式会社  Filtering apparatus and filtering method 
US7206457B2 (en) *  20011127  20070417  Samsung Electronics Co., Ltd.  Method and apparatus for encoding and decoding key value data of coordinate interpolator 
US7460722B2 (en) *  20020111  20081202  Canon Kabushiki Kaisha  Encoding of digital data with determination of sample path 
FR2834855B1 (en) *  20020111  20040402  Canon Kk  data encoding with numerical determination of samples course 
US7630569B2 (en) *  20020226  20091208  Decegama Angel  Realtime software video/audio transmission and display with content protection against camcorder piracy 
US7317840B2 (en) *  20020226  20080108  Decegama Angel  Methods for realtime software video/audio compression, transmission, decompression and display 
US20030198395A1 (en) *  20020419  20031023  Droplet Technology, Inc.  Wavelet transform system, method and computer program product 
US7447631B2 (en) *  20020617  20081104  Dolby Laboratories Licensing Corporation  Audio coding system using spectral hole filling 
DE10229706A1 (en) *  20020702  20041209  TMobile Deutschland Gmbh  A method for memory management in a Speichrmedium a digital terminal in a data storage according to the method of the prioritized pixel transmission 
JP3902990B2 (en) *  20020702  20070411  キヤノン株式会社  Hadamard transform method and apparatus 
US7239754B2 (en) *  20020716  20070703  Hiroshi Akimoto  Method, apparatus and system for compressing still images in multipurpose compression systems 
DE20321883U1 (en)  20020904  20120120  Microsoft Corp.  Computer apparatus and system for quantized transform coefficients of a block Entropiedecodieren 
JP3956360B2 (en) *  20020930  20070808  株式会社リコー  Imaging apparatus and image processing method 
FR2846179B1 (en)  20021021  20050204  Medialive  adaptive and progressive scrambling audio stream 
JP2004153751A (en) *  20021101  20040527  Ricoh Co Ltd  Image processing apparatus and image processing method 
FR2846837B1 (en) *  20021105  20050429  Canon Kk  data encoding with numerical determination of a path from the data 
US7463782B2 (en) *  20021105  20081209  Canon Kabushiki Kaisha  Data encoding with an amplitude model and path between the data and corresponding decoding 
US7330597B2 (en) *  20021122  20080212  Texas Instruments Incorporated  Image compression 
FR2849980B1 (en) *  20030115  20050408  Medialive  Method for the distribution of video sequences, and decoder system for the implementation of this prodede 
AU2003900531A0 (en) *  20030130  20030220  Canon Kabushiki Kaisha  Compression into a fixed buffer 
FR2852179A1 (en)  20030306  20040910  Thomson Licensing Sa  Video image coding method, involves entropic coding of high space frequency signal related to current image by taking into account temporal context based on estimated vector movement 
FR2853786B1 (en) *  20030411  20050805  Medialive  Method and equipment distribution products digital videos with a restriction at least some representation and reproduction rights 
JP4135617B2 (en) *  20030908  20080820  ソニー株式会社  The image coding apparatus and method 
JP4949037B2 (en) *  20031118  20120606  スカラド、アクチボラグＳｃａｌａｄｏ Ａｂ  Method and image representation format for processing the digital image 
US20050228654A1 (en) *  20040330  20051013  Yolanda Prieto  Method and apparatus for improved bit rate efficiency in wavelet based codecs by means of subband correlation 
US7653255B2 (en)  20040602  20100126  Adobe Systems Incorporated  Image region of interest encoding 
US7570286B2 (en) *  20050527  20090804  Honda Motor Co., Ltd.  System and method for creating composite images 
GB2429593A (en)  20050826  20070228  Electrosonic Ltd  Data compressing using a wavelet compression scheme 
WO2007028241A2 (en) *  20050907  20070315  Universal Data Protection Corporation  Method and system for data security of recording media 
US20070071331A1 (en) *  20050924  20070329  Xiteng Liu  Image compression by economical quaternary reaching method 
US20070271250A1 (en) *  20051019  20071122  Monro Donald M  Basis selection for coding and decoding of data 
JP2007188211A (en) *  20060112  20070726  Matsushita Electric Ind Co Ltd  Image processor, image pickup device, image processing method and program therefor 
US20070162531A1 (en) *  20060112  20070712  Bhaskar Kota  Flow transform for integrated circuit design and simulation having combined data flow, control flow, and memory flow views 
US8674855B2 (en) *  20060113  20140318  Essex Pa, L.L.C.  Identification of text 
US7783079B2 (en) *  20060407  20100824  Monro Donald M  Motion assisted data enhancement 
US7586424B2 (en) *  20060605  20090908  Donald Martin Monro  Data coding using an exponent and a residual 
US7845571B2 (en) *  20060619  20101207  Monro Donald M  Data compression 
US7770091B2 (en) *  20060619  20100803  Monro Donald M  Data compression for use in communication systems 
US20070290899A1 (en) *  20060619  20071220  Donald Martin Monro  Data coding 
WO2008007760A1 (en) *  20060713  20080117  Nec Corporation  Encoding and decoding device and encoding method and decoding method 
JP4182446B2 (en) *  20060714  20081119  ソニー株式会社  The information processing apparatus and method, program, and recording medium 
US7689049B2 (en) *  20060831  20100330  Donald Martin Monro  Matching pursuits coding of data 
US7508325B2 (en) *  20060906  20090324  Intellectual Ventures Holding 35 Llc  Matching pursuits subband coding of data 
US7974488B2 (en) *  20061005  20110705  Intellectual Ventures Holding 35 Llc  Matching pursuits basis selection 
US20080084924A1 (en) *  20061005  20080410  Donald Martin Monro  Matching pursuits basis selection design 
JP4732316B2 (en) *  20061207  20110727  キヤノン株式会社  The image processing apparatus, a recording apparatus, image processing method, program, and storage medium 
US7707214B2 (en) *  20070221  20100427  Donald Martin Monro  Hierarchical update scheme for extremum location with indirect addressing 
US7707213B2 (en) *  20070221  20100427  Donald Martin Monro  Hierarchical update scheme for extremum location 
US20080205505A1 (en) *  20070222  20080828  Donald Martin Monro  Video coding with motion vectors determined by decoder 
US10194175B2 (en) *  20070223  20190129  Xylon Llc  Video coding with embedded motion 
US20080218809A1 (en) *  20070308  20080911  Wen Wu Chen  Method and architecture of sending and receiving facsimile over instant messaging software 
WO2008126139A1 (en) *  20070330  20081023  Fujitsu Limited  Image data compressor and decoder 
US7545291B2 (en)  20070712  20090609  Donald Martin Monro  FIFO radix coder for electrical computers and digital data processing systems 
US8144037B2 (en) *  20070712  20120327  Intellectual Ventures Fund 44 Llc  Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems 
US7602316B2 (en) *  20070712  20091013  Monro Donald M  Data coding/decoding for electrical computers and digital data processing systems 
US7511638B2 (en) *  20070712  20090331  Monro Donald M  Data compression for communication between two or more components in a system 
US7990289B2 (en) *  20070712  20110802  Intellectual Ventures Fund 44 Llc  Combinatorial coding/decoding for electrical computers and digital data processing systems 
US7671767B2 (en) *  20070712  20100302  Donald Martin Monro  LIFO radix coder for electrical computers and digital data processing systems 
US7511639B2 (en) *  20070712  20090331  Monro Donald M  Data compression for communication between two or more components in a system 
US7548176B2 (en) *  20070712  20090616  Donald Martin Monro  Data coding buffer for electrical computers and digital data processing systems 
US8055085B2 (en) *  20070712  20111108  Intellectual Ventures Fund 44 Llc  Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems 
US7737869B2 (en) *  20070712  20100615  Monro Donald M  Symbol based data compression 
GB0716158D0 (en) *  20070817  20070926  Imagination Tech Ltd  Data compression 
US8238677B2 (en) *  20080307  20120807  International Business Machines Corporation  Adaptive lossless data compression method for compression of color image data 
JP4875649B2 (en) *  20080319  20120215  株式会社リコー  Image processing apparatus, image processing method and image processing program 
US8179974B2 (en) *  20080502  20120515  Microsoft Corporation  Multilevel representation of reordered transform coefficients 
US20100002147A1 (en) *  20080702  20100107  Horizon Semiconductors Ltd.  Method for improving the deringing filter 
US8406307B2 (en)  20080822  20130326  Microsoft Corporation  Entropy coding/decoding of hierarchically organized data 
US7786903B2 (en) *  20081006  20100831  Donald Martin Monro  Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems 
US7791513B2 (en) *  20081006  20100907  Donald Martin Monro  Adaptive combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems 
US7864086B2 (en) *  20081006  20110104  Donald Martin Monro  Mode switched adaptive combinatorial coding/decoding for electrical computers and digital data processing systems 
US7786907B2 (en) *  20081006  20100831  Donald Martin Monro  Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems 
CN102131081A (en) *  20100113  20110720  华为技术有限公司  Dimensionmixed coding/decoding method and device 
US8559741B2 (en) *  20100602  20131015  Altek Corporation  Lossless image compression method 
CA2952521A1 (en)  20100817  20120223  Samsung Electronics Co., Ltd.  Video encoding method and apparatus using transformation unit of variable tree structure, and video decoding method and apparatus 
AU2015203104B2 (en) *  20100817  20160630  Samsung Electronics Co., Ltd.  Video encoding method and apparatus using transformation unit of variable tree structure, and video decoding method and apparatus 
US8793391B2 (en) *  20101130  20140729  Deutsche Telekom Ag  Distortionaware multihomed scalable video streaming to multiple clients 
US8917950B2 (en)  20110118  20141223  Sony Corporation  Simplifying parametric loop filters 
US8494290B2 (en) *  20110505  20130723  Mitsubishi Electric Research Laboratories, Inc.  Method for coding pictures using hierarchical transform units 
US8537171B2 (en) *  20110513  20130917  Samsung Display Co., Ltd.  Piecewise noncausal compression and subsequent decompression of quantized data for processing of decompressed data in higher precision processing space 
JP2014521273A (en)  20110720  20140825  フリースケール セミコンダクター インコーポレイテッド  Method and apparatus for encoding an image 
US9432704B2 (en) *  20111106  20160830  Akamai Technologies Inc.  Segmented parallel encoding with frameaware, variablesize chunking 
JP5966346B2 (en) *  20111221  20160810  ソニー株式会社  An image processing apparatus and method 
JP5966347B2 (en) *  20111221  20160810  ソニー株式会社  An image processing apparatus and method 
US20150163496A1 (en) *  20120601  20150611  Bayerische Motoren Werke Aktiengesellschaft  Method and apparatus for performing compression of image data 
KR20140103453A (en) *  20130218  20140827  삼성디스플레이 주식회사  Image processing part, display apparatus having the same and method of processing image using the same 
FR3005816A1 (en) *  20130517  20141121  I Ces Innovative Compression Engineering Solutions  Method for encoding, including compressed images, including "range code" or arithmetic compression. 
US9485456B2 (en)  20131230  20161101  Akamai Technologies, Inc.  Framerate conversion in a distributed computing system 
US9357237B2 (en)  20141028  20160531  Sony Corporation  Image processing system with bitstream reduction and method of operation thereof 
US9357232B2 (en)  20141028  20160531  Sony Corporation  Image processing system with binary decomposition and method of operation thereof 
US10063889B2 (en)  20141028  20180828  Sony Corporation  Image processing system with conditional coding and method of operation thereof 
US9674554B2 (en)  20141028  20170606  Sony Corporation  Image processing system with coding mode and method of operation thereof 
US9294782B1 (en)  20141028  20160322  Sony Corporation  Image processing system with artifact reduction mechanism and method of operation thereof 
US9992252B2 (en)  20150929  20180605  Rgb Systems, Inc.  Method and apparatus for adaptively compressing streaming video 
Citations (99)
Publication number  Priority date  Publication date  Assignee  Title 

US3580655A (en) *  19640423  19710525  Battelle Development Corp  Wavefront reconstruction 
US3950103A (en) *  19721027  19760413  Canadian Patents And Development Limited  Method and apparatus to determine spatial distribution of magnitude and phase of electromagnetic fields especially optical fields 
US4136954A (en) *  19761229  19790130  Jamieson John A  Imaging apparatus including spatialspectral interferometer 
US4155097A (en) *  19760907  19790515  U.S. Philips Corporation  Method and arrangement for the redundancyreducing coding of pictures 
US4190861A (en) *  19760907  19800226  U.S. Philips Corporation  Method and arrangement for redundancyreducing picture coding 
US4393456A (en) *  19810319  19830712  Bell Telephone Laboratories, Incorporated  Digital filter bank 
US4437087A (en) *  19820127  19840313  Bell Telephone Laboratories, Incorporated  Adaptive differential PCM coding 
US4569075A (en) *  19810728  19860204  International Business Machines Corporation  Method of coding voice signals and device using said method 
US4599567A (en) *  19830729  19860708  Enelf Inc.  Signal representation generator 
US4652881A (en) *  19840110  19870324  Lewis Bernard L  Efficient adaptive filter bank 
US4663660A (en) *  19860620  19870505  Rca Corporation  Compressed quantized imagedata transmission technique suitable for use in teleconferencing 
US4674125A (en) *  19830627  19870616  Rca Corporation  Realtime hierarchal pyramid signal processing apparatus 
US4751742A (en) *  19850507  19880614  Avelex  Priority coding of transform coefficients 
US4760563A (en) *  19860109  19880726  Schlumberger Technology Corporation  Seismic exploration using exactly invertible discrete transformation into taup space 
US4799179A (en) *  19850201  19890117  Telecommunications Radioelectriques Et Telephoniques T.R.T.  Signal analysing and synthesizing filter bank system 
US4805129A (en) *  19861117  19890214  Sony Corporation  Twodimensional finite impulse response filter arrangements 
US4815023A (en) *  19870504  19890321  General Electric Company  Quadrature mirror filters with staggeredphase subsampling 
US4817182A (en) *  19870504  19890328  General Electric Company  Truncated subband coding of images 
US4821223A (en) *  19851004  19890411  Sony Corporation  Twodimensional finite impulse response filters 
US4827336A (en) *  19871218  19890502  General Electric Company  Symbol code generation processing from interframe DPCM of TDM'd spatialfrequency analyses of video signals 
US4829378A (en) *  19880609  19890509  Bell Communications Research, Inc.  Subband coding of images with low computational complexity 
US4837517A (en) *  19870716  19890606  Schlumberger Technology Corporation  Spatial frequency method and apparatus for investigating earth conductivity with high vertical resolution by induction techniques 
US4839889A (en) *  19860326  19890613  Ant Nachrichtentechnik Gmbh  Digital filter tree 
US4894713A (en) *  19870605  19900116  The Belgian State  Method of coding video signals 
US4897717A (en) *  19880330  19900130  Starsignal, Inc.  Computerbased video compression system 
US4899147A (en) *  19880603  19900206  Unisys Corporation  Data compression/decompression apparatus with throttle, startup and backward read controls 
US4904073A (en) *  19880810  19900227  Aware, Inc.  Fractal tiling for multiple mirror optical devices 
US4918524A (en) *  19890314  19900417  Bell Communications Research, Inc.  HDTV Subband coding using IIR filter bank 
US4922544A (en) *  19860912  19900501  Crosfield Electronics Limited  Image processing 
US4929946A (en) *  19890209  19900529  Storage Technology Corporation  Adaptive data compression apparatus including run length encoding for a tape drive system 
US4929223A (en) *  19860218  19900529  Adolph Coors Company  Packaging alignment system 
US4936665A (en) *  19871025  19900626  Whitney Theodore R  High resolution imagery systems and methods 
US4982283A (en) *  19880506  19910101  General Electric Company  Linesequential pyramid processing of a plurality of rasterscanned image variables 
US4985927A (en) *  19880325  19910115  Texas Instruments Incorporated  Method of detecting and reviewing pattern defects 
US4987480A (en) *  19890711  19910122  Massachusetts Institute Of Technology  Multiscale coding of images 
US4999705A (en) *  19900503  19910312  At&T Bell Laboratories  Three dimensional motion compensated video coding 
US5000183A (en) *  19880930  19910319  U.S. Philips Corporation  Device for processing an echographic signal 
US5001764A (en) *  19880325  19910319  Texas Instruments Incorporated  Guardbands for pattern inspector 
US5014134A (en) *  19890911  19910507  Aware, Inc.  Image compression method and apparatus 
US5018210A (en) *  19880325  19910521  Texas Instruments Incorporated  Pattern comparator with substage illumination and polygonal data representation 
US5081645A (en) *  19900806  19920114  Aware, Inc.  Novel spread spectrum codec apparatus and method 
US5095447A (en) *  19880325  19920310  Texas Instruments Incorporated  Color overlay of scanned and reference images for display 
US5097331A (en) *  19900824  19920317  Bell Communications Research, Inc.  Multiple blocksize transform video coding using an asymmetric subband structure 
US5097261A (en) *  19891122  19920317  International Business Machines Corporation  Data compression for recording on a record medium 
US5101280A (en) *  19890519  19920331  Fuji Photo Film Co., Ltd.  Device for coding a picture signal by compression 
US5101446A (en) *  19900531  19920331  Aware, Inc.  Method and apparatus for coding an image 
US5103306A (en) *  19900328  19920407  Transitions Research Corporation  Digital image compression employing a resolution gradient 
US5109451A (en) *  19880428  19920428  Sharp Kabushiki Kaisha  Orthogonal transform coding system for image data 
US5121191A (en) *  19910315  19920609  Aware, Inc.  Method and apparatus for coding motion pictures 
US5124930A (en) *  19890303  19920623  ThomsonCsf  Method for analyzing a signal by wavelets 
US5128791A (en) *  19900813  19920707  Bell Communications Research, Inc.  Multichannel HDTV system 
US5128757A (en) *  19900618  19920707  Zenith Electronics Corporation  Video transmission system using adaptive subband coding 
US5182645A (en) *  19900711  19930126  U.S. Philips Corporation  Apparatus for deriving a compatible lowdefinition interlaced television signal and other components for reconstructing the original signal from an interlaced highdefinition television signal 
US5223926A (en) *  19910111  19930629  Sony Broadcast & Communications Limited  Compression of video signals 
US5276525A (en) *  19910322  19940104  Bell Communications Research, Inc.  Twodimensional block scanning for subband image and video coding 
US5303200A (en) *  19920702  19940412  The Boeing Company  Ndimensional multiport memory 
US5315670A (en) *  19911112  19940524  General Electric Company  Digital data compression system including zerotree coefficient coding 
US5321776A (en) *  19920226  19940614  General Electric Company  Data compression system including successive approximation quantizer 
US5379355A (en) *  19920824  19950103  Ricoh Corporation  Data encoding using one or more adaptive decision trees 
US5381145A (en) *  19930210  19950110  Ricoh Corporation  Method and apparatus for parallel decoding and encoding of data 
US5384869A (en) *  19911224  19950124  Sony United Kingdom Limited  Image processing apparatus 
US5412741A (en) *  19930122  19950502  David Sarnoff Research Center, Inc.  Apparatus and method for compressing information 
US5414780A (en) *  19930127  19950509  Immix  Method and apparatus for image data transformation 
US5416604A (en) *  19920527  19950516  Samsung Electronics Co., Ltd.  Image compression method for bitfixation and the apparatus therefor 
US5420891A (en) *  19930318  19950530  New Jersey Institute Of Technology  Multiplierless 2band perfect reconstruction quadrature mirror filter (PRQMF) banks 
US5481308A (en) *  19920207  19960102  At&T Corp.  Method and apparatus for synthesizing subband video images 
US5495292A (en) *  19930903  19960227  Gte Laboratories Incorporated  Interframe wavelet transform coder for color video compression 
US5497435A (en) *  19930207  19960305  Image Compression Technology Ltd.  Apparatus and method for encoding and decoding digital signals 
US5511151A (en) *  19920610  19960423  Canon Information Systems, Inc.  Method and apparatus for unwinding image data 
US5534925A (en) *  19940502  19960709  Cognitech Inc.  Image compression by optimal reconstruction 
US5537493A (en) *  19930827  19960716  Sony Corporation  Apparatus for compressing image data employing entropy encoding of data scanned from a plurality of spatial frequency bands 
US5541594A (en) *  19940328  19960730  Utah State University Foundation  Fixed quality source coder with fixed threshold 
US5600373A (en) *  19940114  19970204  Houston Advanced Research Center  Method and apparatus for video image compression and decompression using boundarysplinewavelets 
US5602589A (en) *  19940819  19970211  Xerox Corporation  Video image compression using weighted wavelet hierarchical vector quantization 
US5631977A (en) *  19921208  19970520  Fuji Xerox Co., Ltd.  Encoding device for encoding an image along an order determined by resolution tone level 
US5638498A (en) *  19921110  19970610  Adobe Systems Incorporated  Method and apparatus for reducing storage requirements for display data 
US5717789A (en) *  19930908  19980210  California Institute Of Technology  Image enhancement by nonlinear extrapolation in frequency space 
US5748786A (en) *  19940921  19980505  Ricoh Company, Ltd.  Apparatus for compression using reversible embedded wavelets 
US5754793A (en) *  19950419  19980519  Samsung Electronics Co., Ltd.  Wavelet image compression/recovery apparatus and method using human visual system modeling 
US5867602A (en) *  19940921  19990202  Ricoh Corporation  Reversible wavelet transform and embedded codestream manipulation 
US5880856A (en) *  19941205  19990309  Microsoft Corporation  Progressive image transmission using discrete wavelet transforms 
US6020975A (en) *  19961220  20000201  Apple Computer, Inc.  System and method for accelerated data recompression 
US6026198A (en) *  19960209  20000215  Fujitsu Limited  Data compression and restoration system for encoding an input character on the basis of a conditional appearance rate obtained in relation to an immediately preceding character string 
US6031940A (en) *  19961127  20000229  Teralogic, Inc.  System and method for efficiently encoding video frame sequences 
US6088062A (en) *  19961029  20000711  Sony Corporation  Picture signal processing apparatus 
US6088395A (en) *  19970923  20000711  Winbond Electronics Corp.  Compressing/decompressing apparatus and method to compress and decompress a video graphics signal 
US6195465B1 (en) *  19940921  20010227  Ricoh Company, Ltd.  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
US6201897B1 (en) *  19981109  20010313  Earth Resource Mapping  Transformation and selective inverse transformation of large digital images 
US6229929B1 (en) *  19980514  20010508  Interval Research Corporation  Border filtering of video signal blocks 
US6237010B1 (en) *  19971006  20010522  Canon Kabushiki Kaisha  Multimedia application using flashpix file format 
US6236765B1 (en) *  19980805  20010522  Intel Corporation  DWTbased upsampling algorithm suitable for image display in an LCD panel 
US20010003544A1 (en) *  19991209  20010614  Hiroshi Kajiwara  Image processing apparatus and method and storage medium 
US6263109B1 (en) *  19980925  20010717  HewlettPackard Company  Contextbased ordering and coding of transform coefficient bitplanes for embedded bitstreams 
US6339658B1 (en) *  19990309  20020115  Rockwell Science Center, Llc  Error resilient still image packetization method and packet structure 
US6350989B1 (en) *  19990423  20020226  Sandia National Laboratories  Waferfused semiconductor radiation detector 
US6356668B1 (en) *  19981229  20020312  Eastman Kodak Company  Method for efficient rate control 
US6546143B1 (en) *  19990312  20030408  HewlettPackard Development Company  Efficient waveletbased compression of large images 
US6549673B1 (en) *  19991028  20030415  Lucent Technologies Inc.  Waveletbased compression of images for storage, transmission and reconstruction using hierarchical subband decomposition 
US20030110299A1 (en) *  19981021  20030612  Mathias Larsson  Partial retrieval of images in the compressed domain 
Family Cites Families (43)
Publication number  Priority date  Publication date  Assignee  Title 

US4223354A (en)  19780830  19800916  General Electric Company  Phase corrected raster scanned light modulator and a variable frequency oscillator for effecting phase correction 
US4701006A (en)  19850220  19871020  Stanford University  Opticaldigital hologram recording 
US4868868A (en)  19860930  19890919  Oki Electric Industry Co., Ltd.  Subband speech analyzing and synthesizing device 
FR2606576B1 (en)  19861107  19890203  Labo Electronique Physique  Device for transmitting high definition television images in narrowband channels 
US4774574A (en) *  19870602  19880927  Eastman Kodak Company  Adaptive block transform image coding method and apparatus 
DE3853555D1 (en)  19870609  19950518  Sony Corp  Processing the motion vector in digital television images. 
US4785349A (en)  19871005  19881115  Technology Inc. 64  Digital video decompression system 
US5156943A (en)  19871025  19921020  Whitney Theodore R  High resolution imagery systems and methods 
US5028995A (en) *  19871028  19910702  Hitachi, Ltd.  Picture signal processor, picture signal coder and picture signal interpolator 
US5072308A (en)  19890621  19911210  International Mobile Machines Corporation  Communication signal compression system and method 
US4974187A (en)  19890802  19901127  Aware, Inc.  Modular digital signal processing system 
US5073964A (en)  19890804  19911217  Aware, Inc.  Signal processing device and method 
US5241395A (en) *  19890807  19930831  Bell Communications Research, Inc.  Adaptive transform coding using variable block size 
US5235435A (en)  19891108  19930810  Adobe Systems Incorporated  Method of producing halftone images 
US5173880A (en)  19891226  19921222  Exxon Production Research Company  Method of generating seismic wavelets using seismic range equation 
US5068911A (en)  19900209  19911126  Aware, Inc.  Method and apparatus for representing an image 
US5384725A (en) *  19900518  19950124  Yale University  Method and apparatus for encoding and decoding using waveletpackets 
DE4016172C1 (en)  19900519  19910328  Werner 5900 Siegen De Ackermann  
US5148498A (en)  19900801  19920915  Aware, Inc.  Image coding apparatus and method utilizing separable transformations 
US5049992A (en)  19900827  19910917  Zenith Electronics Corporation  HDTV system with receivers operable at different levels of resolution 
US5049993A (en)  19901003  19910917  Bell Communications Research, Inc.  Format conversion preprocessing method and circuit 
JP3012698B2 (en) *  19910129  20000228  オリンパス光学工業株式会社  Encoding apparatus and encoding method of the image data 
US5262958A (en)  19910405  19931116  Texas Instruments Incorporated  Splinewavelet signal analyzers and methods for processing signals 
JPH04323963A (en) *  19910423  19921113  Canon Inc  Picture processing method and device 
US5235434A (en) *  19910627  19930810  Polaroid Corporation  Method and apparatus for selectively adjusting the brightness of large regions of an image 
US5347479A (en) *  19911227  19940913  Nec Corporation  Smallsize wavelet transform apparatus 
US5272478A (en) *  19920817  19931221  Ricoh Corporation  Method and apparatus for entropy coding 
JPH06125543A (en) *  19921012  19940506  Toshiba Corp  Encoding device 
US5563960A (en) *  19930122  19961008  David Sarnoff Research Center, Inc.  Apparatus and method for emphasizing a selected region in the compressed representation of an image 
JP3293920B2 (en) *  19930122  20020617  キヤノン株式会社  Image processing apparatus and method 
US5583500A (en) *  19930210  19961210  Ricoh Corporation  Method and apparatus for parallel encoding and decoding of data 
US5546477A (en) *  19930330  19960813  Klics, Inc.  Data compression and decompression 
WO1994023385A2 (en)  19930330  19941013  Adrian Stafford Lewis  Data compression and decompression 
EP0622741A3 (en)  19930330  19981230  KLICS, Ltd.  Device and method for data compression/decompression 
JP3499254B2 (en)  19930604  20040223  富士写真フイルム株式会社  Image data compression method 
JP3282138B2 (en)  19930908  20020513  富士写真フイルム株式会社  Image data compression processing method and an image data reconstructing method 
IL107658D0 (en)  19931118  19940731  State Of Israel Ministy Of Def  A system for compaction and reconstruction of wavelet data 
US5453945A (en) *  19940113  19950926  Tucker; Michael R.  Method for decomposing signals into efficient timefrequency representations for data compression and recognition 
US5966465A (en) *  19940921  19991012  Ricoh Corporation  Compression/decompression using reversible embedded wavelets 
US5881176A (en) *  19940921  19990309  Ricoh Corporation  Compression and decompression with wavelet style and binary style including quantization by devicedependent parser 
US5604824A (en)  19940922  19970218  Houston Advanced Research Center  Method and apparatus for compression and decompression of documents and the like using splines and splinewavelets 
US5909518A (en) *  19961127  19990601  Teralogic, Inc.  System and method for performing waveletlike and inverse waveletlike transformations of digital data 
US5999656A (en) *  19970117  19991207  Ricoh Co., Ltd.  Overlapped reversible transforms for unified lossless/lossy compression 

1994
 19940921 US US08/310,146 patent/US5748786A/en not_active Expired  Lifetime

1995
 19950918 JP JP23798795A patent/JP3436832B2/en not_active Expired  Fee Related
 19950920 NL NL1001248A patent/NL1001248C2/en not_active IP Right Cessation
 19950920 DE DE1995134943 patent/DE19534943B4/en not_active Expired  Fee Related

1996
 19960809 US US08/693,649 patent/US6222941B1/en not_active Expired  Lifetime

2002
 20020902 JP JP2002256535A patent/JP2003179498A/en active Pending

2003
 20030203 JP JP2003026242A patent/JP2003274186A/en active Pending

2005
 20050419 JP JP2005120796A patent/JP3800552B2/en not_active Expired  Lifetime
 20050419 JP JP2005120798A patent/JP2005304056A/en active Pending
 20050419 JP JP2005120797A patent/JP2005304055A/en active Pending

2006
 20060308 US US11/371,725 patent/US20060222254A1/en not_active Abandoned
 20061114 US US11/599,794 patent/US7492955B2/en not_active Expired  Fee Related
Patent Citations (99)
Publication number  Priority date  Publication date  Assignee  Title 

US3580655A (en) *  19640423  19710525  Battelle Development Corp  Wavefront reconstruction 
US3950103A (en) *  19721027  19760413  Canadian Patents And Development Limited  Method and apparatus to determine spatial distribution of magnitude and phase of electromagnetic fields especially optical fields 
US4155097A (en) *  19760907  19790515  U.S. Philips Corporation  Method and arrangement for the redundancyreducing coding of pictures 
US4190861A (en) *  19760907  19800226  U.S. Philips Corporation  Method and arrangement for redundancyreducing picture coding 
US4136954A (en) *  19761229  19790130  Jamieson John A  Imaging apparatus including spatialspectral interferometer 
US4393456A (en) *  19810319  19830712  Bell Telephone Laboratories, Incorporated  Digital filter bank 
US4569075A (en) *  19810728  19860204  International Business Machines Corporation  Method of coding voice signals and device using said method 
US4437087A (en) *  19820127  19840313  Bell Telephone Laboratories, Incorporated  Adaptive differential PCM coding 
US4674125A (en) *  19830627  19870616  Rca Corporation  Realtime hierarchal pyramid signal processing apparatus 
US4599567A (en) *  19830729  19860708  Enelf Inc.  Signal representation generator 
US4652881A (en) *  19840110  19870324  Lewis Bernard L  Efficient adaptive filter bank 
US4799179A (en) *  19850201  19890117  Telecommunications Radioelectriques Et Telephoniques T.R.T.  Signal analysing and synthesizing filter bank system 
US4751742A (en) *  19850507  19880614  Avelex  Priority coding of transform coefficients 
US4821223A (en) *  19851004  19890411  Sony Corporation  Twodimensional finite impulse response filters 
US4760563A (en) *  19860109  19880726  Schlumberger Technology Corporation  Seismic exploration using exactly invertible discrete transformation into taup space 
US4929223A (en) *  19860218  19900529  Adolph Coors Company  Packaging alignment system 
US4839889A (en) *  19860326  19890613  Ant Nachrichtentechnik Gmbh  Digital filter tree 
US4663660A (en) *  19860620  19870505  Rca Corporation  Compressed quantized imagedata transmission technique suitable for use in teleconferencing 
US4922544A (en) *  19860912  19900501  Crosfield Electronics Limited  Image processing 
US4805129A (en) *  19861117  19890214  Sony Corporation  Twodimensional finite impulse response filter arrangements 
US4815023A (en) *  19870504  19890321  General Electric Company  Quadrature mirror filters with staggeredphase subsampling 
US4817182A (en) *  19870504  19890328  General Electric Company  Truncated subband coding of images 
US4894713A (en) *  19870605  19900116  The Belgian State  Method of coding video signals 
US4837517A (en) *  19870716  19890606  Schlumberger Technology Corporation  Spatial frequency method and apparatus for investigating earth conductivity with high vertical resolution by induction techniques 
US4936665A (en) *  19871025  19900626  Whitney Theodore R  High resolution imagery systems and methods 
US4827336A (en) *  19871218  19890502  General Electric Company  Symbol code generation processing from interframe DPCM of TDM'd spatialfrequency analyses of video signals 
US4985927A (en) *  19880325  19910115  Texas Instruments Incorporated  Method of detecting and reviewing pattern defects 
US5095447A (en) *  19880325  19920310  Texas Instruments Incorporated  Color overlay of scanned and reference images for display 
US5018210A (en) *  19880325  19910521  Texas Instruments Incorporated  Pattern comparator with substage illumination and polygonal data representation 
US5001764A (en) *  19880325  19910319  Texas Instruments Incorporated  Guardbands for pattern inspector 
US4897717A (en) *  19880330  19900130  Starsignal, Inc.  Computerbased video compression system 
US5109451A (en) *  19880428  19920428  Sharp Kabushiki Kaisha  Orthogonal transform coding system for image data 
US4982283A (en) *  19880506  19910101  General Electric Company  Linesequential pyramid processing of a plurality of rasterscanned image variables 
US4899147A (en) *  19880603  19900206  Unisys Corporation  Data compression/decompression apparatus with throttle, startup and backward read controls 
US4829378A (en) *  19880609  19890509  Bell Communications Research, Inc.  Subband coding of images with low computational complexity 
US4904073A (en) *  19880810  19900227  Aware, Inc.  Fractal tiling for multiple mirror optical devices 
US5000183A (en) *  19880930  19910319  U.S. Philips Corporation  Device for processing an echographic signal 
US4929946A (en) *  19890209  19900529  Storage Technology Corporation  Adaptive data compression apparatus including run length encoding for a tape drive system 
US5124930A (en) *  19890303  19920623  ThomsonCsf  Method for analyzing a signal by wavelets 
US4918524A (en) *  19890314  19900417  Bell Communications Research, Inc.  HDTV Subband coding using IIR filter bank 
US5101280A (en) *  19890519  19920331  Fuji Photo Film Co., Ltd.  Device for coding a picture signal by compression 
US4987480A (en) *  19890711  19910122  Massachusetts Institute Of Technology  Multiscale coding of images 
US5014134A (en) *  19890911  19910507  Aware, Inc.  Image compression method and apparatus 
US5097261A (en) *  19891122  19920317  International Business Machines Corporation  Data compression for recording on a record medium 
US5103306A (en) *  19900328  19920407  Transitions Research Corporation  Digital image compression employing a resolution gradient 
US4999705A (en) *  19900503  19910312  At&T Bell Laboratories  Three dimensional motion compensated video coding 
US5101446A (en) *  19900531  19920331  Aware, Inc.  Method and apparatus for coding an image 
US5128757A (en) *  19900618  19920707  Zenith Electronics Corporation  Video transmission system using adaptive subband coding 
US5182645A (en) *  19900711  19930126  U.S. Philips Corporation  Apparatus for deriving a compatible lowdefinition interlaced television signal and other components for reconstructing the original signal from an interlaced highdefinition television signal 
US5081645A (en) *  19900806  19920114  Aware, Inc.  Novel spread spectrum codec apparatus and method 
US5128791A (en) *  19900813  19920707  Bell Communications Research, Inc.  Multichannel HDTV system 
US5097331A (en) *  19900824  19920317  Bell Communications Research, Inc.  Multiple blocksize transform video coding using an asymmetric subband structure 
US5223926A (en) *  19910111  19930629  Sony Broadcast & Communications Limited  Compression of video signals 
US5121191A (en) *  19910315  19920609  Aware, Inc.  Method and apparatus for coding motion pictures 
US5276525A (en) *  19910322  19940104  Bell Communications Research, Inc.  Twodimensional block scanning for subband image and video coding 
US5315670A (en) *  19911112  19940524  General Electric Company  Digital data compression system including zerotree coefficient coding 
US5384869A (en) *  19911224  19950124  Sony United Kingdom Limited  Image processing apparatus 
US5481308A (en) *  19920207  19960102  At&T Corp.  Method and apparatus for synthesizing subband video images 
US5321776A (en) *  19920226  19940614  General Electric Company  Data compression system including successive approximation quantizer 
US5416604A (en) *  19920527  19950516  Samsung Electronics Co., Ltd.  Image compression method for bitfixation and the apparatus therefor 
US5511151A (en) *  19920610  19960423  Canon Information Systems, Inc.  Method and apparatus for unwinding image data 
US5303200A (en) *  19920702  19940412  The Boeing Company  Ndimensional multiport memory 
US5379355A (en) *  19920824  19950103  Ricoh Corporation  Data encoding using one or more adaptive decision trees 
US5638498A (en) *  19921110  19970610  Adobe Systems Incorporated  Method and apparatus for reducing storage requirements for display data 
US5631977A (en) *  19921208  19970520  Fuji Xerox Co., Ltd.  Encoding device for encoding an image along an order determined by resolution tone level 
US5412741A (en) *  19930122  19950502  David Sarnoff Research Center, Inc.  Apparatus and method for compressing information 
US5414780A (en) *  19930127  19950509  Immix  Method and apparatus for image data transformation 
US5497435A (en) *  19930207  19960305  Image Compression Technology Ltd.  Apparatus and method for encoding and decoding digital signals 
US5381145A (en) *  19930210  19950110  Ricoh Corporation  Method and apparatus for parallel decoding and encoding of data 
US5420891A (en) *  19930318  19950530  New Jersey Institute Of Technology  Multiplierless 2band perfect reconstruction quadrature mirror filter (PRQMF) banks 
US5537493A (en) *  19930827  19960716  Sony Corporation  Apparatus for compressing image data employing entropy encoding of data scanned from a plurality of spatial frequency bands 
US5495292A (en) *  19930903  19960227  Gte Laboratories Incorporated  Interframe wavelet transform coder for color video compression 
US5717789A (en) *  19930908  19980210  California Institute Of Technology  Image enhancement by nonlinear extrapolation in frequency space 
US5600373A (en) *  19940114  19970204  Houston Advanced Research Center  Method and apparatus for video image compression and decompression using boundarysplinewavelets 
US5541594A (en) *  19940328  19960730  Utah State University Foundation  Fixed quality source coder with fixed threshold 
US5534925A (en) *  19940502  19960709  Cognitech Inc.  Image compression by optimal reconstruction 
US5602589A (en) *  19940819  19970211  Xerox Corporation  Video image compression using weighted wavelet hierarchical vector quantization 
US5748786A (en) *  19940921  19980505  Ricoh Company, Ltd.  Apparatus for compression using reversible embedded wavelets 
US5867602A (en) *  19940921  19990202  Ricoh Corporation  Reversible wavelet transform and embedded codestream manipulation 
US6195465B1 (en) *  19940921  20010227  Ricoh Company, Ltd.  Method and apparatus for compression using reversible wavelet transforms and an embedded codestream 
US5880856A (en) *  19941205  19990309  Microsoft Corporation  Progressive image transmission using discrete wavelet transforms 
US5754793A (en) *  19950419  19980519  Samsung Electronics Co., Ltd.  Wavelet image compression/recovery apparatus and method using human visual system modeling 
US6026198A (en) *  19960209  20000215  Fujitsu Limited  Data compression and restoration system for encoding an input character on the basis of a conditional appearance rate obtained in relation to an immediately preceding character string 
US6088062A (en) *  19961029  20000711  Sony Corporation  Picture signal processing apparatus 
US6031940A (en) *  19961127  20000229  Teralogic, Inc.  System and method for efficiently encoding video frame sequences 
US6020975A (en) *  19961220  20000201  Apple Computer, Inc.  System and method for accelerated data recompression 
US6088395A (en) *  19970923  20000711  Winbond Electronics Corp.  Compressing/decompressing apparatus and method to compress and decompress a video graphics signal 
US6237010B1 (en) *  19971006  20010522  Canon Kabushiki Kaisha  Multimedia application using flashpix file format 
US6229929B1 (en) *  19980514  20010508  Interval Research Corporation  Border filtering of video signal blocks 
US6236765B1 (en) *  19980805  20010522  Intel Corporation  DWTbased upsampling algorithm suitable for image display in an LCD panel 
US6263109B1 (en) *  19980925  20010717  HewlettPackard Company  Contextbased ordering and coding of transform coefficient bitplanes for embedded bitstreams 
US20030110299A1 (en) *  19981021  20030612  Mathias Larsson  Partial retrieval of images in the compressed domain 
US6201897B1 (en) *  19981109  20010313  Earth Resource Mapping  Transformation and selective inverse transformation of large digital images 
US6356668B1 (en) *  19981229  20020312  Eastman Kodak Company  Method for efficient rate control 
US6339658B1 (en) *  19990309  20020115  Rockwell Science Center, Llc  Error resilient still image packetization method and packet structure 
US6546143B1 (en) *  19990312  20030408  HewlettPackard Development Company  Efficient waveletbased compression of large images 
US6350989B1 (en) *  19990423  20020226  Sandia National Laboratories  Waferfused semiconductor radiation detector 
US6549673B1 (en) *  19991028  20030415  Lucent Technologies Inc.  Waveletbased compression of images for storage, transmission and reconstruction using hierarchical subband decomposition 
US20010003544A1 (en) *  19991209  20010614  Hiroshi Kajiwara  Image processing apparatus and method and storage medium 
Cited By (25)
Publication number  Priority date  Publication date  Assignee  Title 

US20050036695A1 (en) *  20020906  20050217  Takanori Yano  Image processing apparatus, image processing method, and storage medium 
US7310447B2 (en) *  20020906  20071218  Ricoh Co., Ltd.  Image processing apparatus, image processing method, and storage medium 
US9161034B2 (en)  20070206  20151013  Microsoft Technology Licensing, Llc  Scalable multithread video decoding 
US20100049778A1 (en) *  20070412  20100225  Thomson Licensing  Method and apparatus for selectively reducing noise in a digital signal 
US9986254B1 (en)  20070412  20180529  Dolby Laboratories Licensing Corporation  Tiling in video encoding and decoding 
US9973771B2 (en)  20070412  20180515  Dolby Laboratories Licensing Corporation  Tiling in video encoding and decoding 
US8443025B2 (en) *  20070412  20130514  Thomson Licensing  Method and apparatus for selectively reducing noise in a digital signal 
US9838705B2 (en)  20070412  20171205  Dolby Laboratories Licensing Corporation  Tiling in video encoding and decoding 
US9185384B2 (en)  20070412  20151110  Thomson Licensing  Tiling in video encoding and decoding 
US9706217B2 (en)  20070412  20170711  Dolby Laboratories Licensing Corporation  Tiling in video encoding and decoding 
US9445116B2 (en)  20070412  20160913  Thomson Licensing  Tiling in video encoding and decoding 
US9219923B2 (en)  20070412  20151222  Thomson Licensing  Tiling in video encoding and decoding 
US9232235B2 (en)  20070412  20160105  Thomson Licensing  Tiling in video encoding and decoding 
US10129557B2 (en)  20070412  20181113  Dolby Laboratories Licensing Corporation  Tiling in video encoding and decoding 
US9819970B2 (en)  20070630  20171114  Microsoft Technology Licensing, Llc  Reducing memory consumption during video decoding 
US9554134B2 (en)  20070630  20170124  Microsoft Technology Licensing, Llc  Neighbor determination in video decoding 
US9648325B2 (en)  20070630  20170509  Microsoft Technology Licensing, Llc  Video decoding implementations for a graphics processing unit 
US9420310B2 (en)  20090126  20160816  Thomson Licensing  Frame packing for video coding 
US20110286530A1 (en) *  20090126  20111124  Dong Tian  Frame packing for video coding 
US9036714B2 (en) *  20090126  20150519  Thomson Licensing  Frame packing for video coding 
US9215445B2 (en)  20100129  20151215  Thomson Licensing  Blockbased interleaving 
US20120163470A1 (en) *  20101224  20120628  Microsoft Corporation  Image and video decoding implementations 
US9706214B2 (en) *  20101224  20170711  Microsoft Technology Licensing, Llc  Image and video decoding implementations 
US9210421B2 (en)  20110831  20151208  Microsoft Technology Licensing, Llc  Memory management for video decoding 
US9819949B2 (en)  20111216  20171114  Microsoft Technology Licensing, Llc  Hardwareaccelerated decoding of scalable video bitstreams 
Also Published As
Publication number  Publication date 

NL1001248C2 (en)  19970604 
JP3436832B2 (en)  20030818 
JP2005304054A (en)  20051027 
JP2005304055A (en)  20051027 
JP2003274186A (en)  20030926 
US20070116369A1 (en)  20070524 
JP2003179498A (en)  20030627 
DE19534943B4 (en)  20060112 
DE19534943A1 (en)  19960328 
US5748786A (en)  19980505 
NL1001248A1 (en)  19960321 
JP3800552B2 (en)  20060726 
JP2005304056A (en)  20051027 
US7492955B2 (en)  20090217 
JPH08139935A (en)  19960531 
US6222941B1 (en)  20010424 
Similar Documents
Publication  Publication Date  Title 

US5903676A (en)  Contextbased, adaptive, lossless image codec  
US6459816B2 (en)  Image processing system for compressing image data including binary image data and continuous tone image data by a subband transform method with a highcompression rate  
US6289132B1 (en)  Apparatus and method for optimized compression of interlaced motion images  
US6643406B1 (en)  Method and apparatus for performing linear filtering in wavelet based domain  
US6483946B1 (en)  Apparatus and method for encoding zerotrees generated by a waveletbased coding technique  
Taubman et al.  Embedded block coding in JPEG 2000  
US6665444B1 (en)  Image processing apparatus and method, and storage medium  
Boulgouris et al.  Lossless image compression based on optimal prediction, adaptive lifting, and conditional arithmetic coding  
US7024046B2 (en)  System and method for the lossless progressive streaming of images over a communication network  
US5497435A (en)  Apparatus and method for encoding and decoding digital signals  
Gormish et al.  Lossless and nearly lossless compression for highquality images  
US6707948B1 (en)  Image compression for memoryconstrained decoders  
US6546143B1 (en)  Efficient waveletbased compression of large images  
US6801665B1 (en)  Method and apparatus for compressing and decompressing images  
US6301392B1 (en)  Efficient methodology to select the quantization threshold parameters in a DWTbased image compression scheme in order to score a predefined minimum number of images into a fixed size secondary storage  
Zettler et al.  Application of compactly supported wavelets to image compression  
Bilgin et al.  Threedimensional image compression with integer wavelet transforms  
US20030133500A1 (en)  Method and apparatus for subband encoding and decoding  
US5563960A (en)  Apparatus and method for emphasizing a selected region in the compressed representation of an image  
Taubman  High performance scalable image compression with EBCOT  
US6873343B2 (en)  Scalable graphics image drawings on multiresolution image with/without image data reusage  
US6466698B1 (en)  Efficient embedded image and video compression system using lifted wavelets  
US6347157B2 (en)  System and method for encoding a video sequence using spatial and temporal transforms  
US6249614B1 (en)  Video compression and decompression using dynamic quantization and/or encoding  
US6157746A (en)  Apparatus and method for encoding wavelet trees generated by a waveletbased coding method 