JP2007267384A - Compression apparatus and compression method - Google Patents

Compression apparatus and compression method Download PDF

Info

Publication number
JP2007267384A
JP2007267384A JP2007080246A JP2007080246A JP2007267384A JP 2007267384 A JP2007267384 A JP 2007267384A JP 2007080246 A JP2007080246 A JP 2007080246A JP 2007080246 A JP2007080246 A JP 2007080246A JP 2007267384 A JP2007267384 A JP 2007267384A
Authority
JP
Japan
Prior art keywords
data
bit
coefficients
encoding
coefficient
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.)
Pending
Application number
JP2007080246A
Other languages
Japanese (ja)
Inventor
Edward L Schwartz
エル シュワルツ エドワード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of JP2007267384A publication Critical patent/JP2007267384A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/36Scalability techniques involving formatting the layers as a function of picture distortion after decoding, e.g. signal-to-noise [SNR] scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To perform high-speed lossy/lossless compression. <P>SOLUTION: In an integrated circuit (IC) incorporating a printer compression/decompression function, during encoding, pixel data are input from a band buffer through a pixel data I/F 2801 to a wavelet transform block 2803, and converted to reversible wavelet, and highest importance data of a transform coefficient are applied to a context model 2805 for encoding. Lowest importance data of the transform coefficient are stored through a coefficient data I/F 2804 into the band buffer, then read out, given to the context model 2805, and encoded. <P>COPYRIGHT: (C)2008,JPO&INPIT

Description

本発明は、データ圧縮及び伸長システムの分野に係り、特に、圧縮/伸長システムにおけるロスレス及びロッシーのデータ符号化及び復号化に関する。   The present invention relates to the field of data compression and decompression systems, and more particularly to lossless and lossy data encoding and decoding in compression / decompression systems.

データ圧縮は、大量のデータの蓄積及び伝送のために非常に有用なツールである。例えば、文書のファクシミリ伝送のような画像伝送に要する時間は、圧縮を利用して画像の再生に必要とされるビット数を減らすと飛躍的に短縮される。   Data compression is a very useful tool for storing and transmitting large amounts of data. For example, the time required for image transmission such as facsimile transmission of a document is drastically shortened by reducing the number of bits required for image reproduction using compression.

従来より、多くの様々なデータ圧縮手法が存在している。圧縮手法は、おおまかに分類すると2つのカテゴリー、つまりロッシー符号化とロスレス符号化とに分けることができる。ロッシー符号化とは、情報の損失を生じ、したがって元のデータの完全な再現が保証されない符号化のことである。ロッシー符号化の目標とするところは、元のデータから変わったとしても、その変化が不快であったり目だったりしないようにすることである。ロスレス圧縮では、情報がすべて保存され、データは完全に復元可能な方法で圧縮される。   Conventionally, many different data compression methods exist. The compression method can be roughly divided into two categories: lossy coding and lossless coding. Lossy encoding is an encoding that results in loss of information and thus does not guarantee a complete reproduction of the original data. The goal of lossy coding is to keep the change from being uncomfortable or noticeable even if it changes from the original data. In lossless compression, all information is stored and the data is compressed in a fully recoverable manner.

ロスレス圧縮では、入力シンボルもしくは輝度データが出力符号語に変換される。入力としては、画像データ、音声データ、1次元データ(例えば空間的または時間的に変化するデータ)、2次元データ(例えば2つの空間軸方向に変化する(または1つの空間次元と1つの時間次元で変化する)データ)、あるいは多次元/マルチスペクトルのデータがあろう。圧縮がうまくいけば、その符号語は、符号化前の入力シンボル(または輝度データ)のために必要とされたビット数より少ないビット数で表現される。ロスレス符号化法には、辞書符号化方式(例えば、Lempel-Ziv方式)、ランレングス符号化方式、計数符号化方式、エントロピー符号化方式がある。ロスレス画像圧縮では、圧縮は予測またはコンテクストと符号化に基づいている。ファクシミリ圧縮用JBIG標準(ISO/IEC
11544)と、DPCM(差分パルス符号変調−連続階調画像用のJPEG標準のオプション)は画像用のロスレス圧縮の例である。ロッシー圧縮では、入力シンボルまたは輝度データは、量子化され、しかるのちに出力符号語へ変換される。量子化の目的とするところは、データの重要な特徴量を保存する一方で、重要でない特徴量を除去することである。ロッシー圧縮システムは、量子化に先立ち、エネルギー集中をするための変換を利用することが多い。JPEGは画像データ用のロッシー符号化法の一例である。
In lossless compression, input symbols or luminance data are converted into output codewords. As input, image data, audio data, one-dimensional data (for example, data that changes spatially or temporally), two-dimensional data (for example, changes in two spatial axis directions (or one spatial dimension and one temporal dimension) Data), or multidimensional / multispectral data. If compression is successful, the codeword is represented with a number of bits less than that required for the input symbol (or luminance data) before encoding. Lossless coding methods include a dictionary coding method (for example, a Lempel-Ziv method), a run length coding method, a count coding method, and an entropy coding method. In lossless image compression, the compression is based on prediction or context and coding. JBIG standard for facsimile compression (ISO / IEC
11544) and DPCM (Differential Pulse Code Modulation-JPEG standard option for continuous tone images) are examples of lossless compression for images. In lossy compression, input symbols or luminance data are quantized and then converted to output codewords. The purpose of quantization is to preserve important feature quantities of data while removing unimportant feature quantities. Lossy compression systems often use transforms to concentrate energy prior to quantization. JPEG is an example of a lossy encoding method for image data.

画像信号処理における近年の開発は、効率的かつ高精度のデータ圧縮符号化方式の追求に関心を集中してきた。変換またはピラミッド信号処理の様々な方式が提案されており、その中に多重解像度ピラミッド処理方式とウェーブレット・ピラミッド処理方式とがある。これら2方式はサブバンド処理方式及び階層処理方式とも呼ばれる。画像データのウェーブレット・ピラミッド処理方式は、クァドレチャーミラーフィルタ(Quadrature Mirror filter;QMF)を用いてオリジナル画像のサブバンド分割をする特殊な多重解像度ピラミッド処理方式である。なお、他の非QMFウェーブレット方式もある。ウェーブレット処理方式に関し、これ以上の情報を得るには、例えば非特許文献1、2を参照されたい。また、可逆変換に関する情報を得るには、非特許文献3を参照されたい。   Recent developments in image signal processing have focused on the pursuit of efficient and highly accurate data compression and coding schemes. Various schemes for transformation or pyramid signal processing have been proposed, including multi-resolution pyramid processing schemes and wavelet pyramid processing schemes. These two methods are also called a subband processing method and a hierarchical processing method. The wavelet pyramid processing method for image data is a special multi-resolution pyramid processing method for subband division of an original image using a quadrature mirror filter (QMF). There are other non-QMF wavelet methods. For more information on the wavelet processing method, refer to Non-Patent Documents 1 and 2, for example. To obtain information on reversible transformation, see Non-Patent Document 3.

Antonini,M.,et al.,“Image Coding Using Wavelet Transform”,IEEE Transactions on Image Processing,Vol.1,No.2,April 1992Antonini, 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.214-223,1993Shapiro, J., “An Embedded Hierarchical Image Coder Using Zerotrees of Wavelet Coefficients”, Proc. IEEE Data Compression Conference, pgs. 214-223, 1993 Said,A.and Pearlman,W.,“Reversible Image Compression via Multiresolution Representation and Predictive Coding”,Dept.of Electrical,Computer and System Engineering,Renssealaer Polytechnic Institute,Troy,NY 1993Said, A. and Pearlman, W., “Reversible Image Compression via Multiresolution Representation and Predictive Coding”, Dept. of Electrical, Computer and System Engineering, Renssealaer Polytechnic Institute, Troy, NY 1993

圧縮は、しばしば非常に時間がかかり、また膨大なメモリを必要とする。より高速に、かつ/又は、可能なかぎり少ないメモリで、圧縮を行うのが望ましい。品質を保証できない、圧縮率が不十分である、あるいはデータレートが制御可能でないという理由で、圧縮が全く利用されなかった応用分野もある。しかし、伝送及び/又は記憶すべき情報量を減らすため圧縮の利用が望ましい。   Compression is often very time consuming and requires a large amount of memory. It is desirable to perform compression at higher speeds and / or with as little memory as possible. In some applications, compression has not been used at all because quality cannot be guaranteed, compression rate is insufficient, or data rate is not controllable. However, the use of compression is desirable to reduce the amount of information to be transmitted and / or stored.

デジタルコピア、プリンタ及び多機能機器は、フレーム記憶を備えると性能が非常に向上する。フレーム記憶が圧縮されれば、これら製品におけるフレーム記憶に必要とされるメモリが減り、したがってそのコストが削減される。しかし、多くのフレーム記憶はランダムアクセスメモリ(RAM)で実現される。RAMは高速であるが一般に高価である。ハードディスクもメモリとして使用でき、一般に安い(一般にRAMほど高価ではない)と考えられる。したがって、システムの製造者であれば、フレーム記憶などにRAMにかえてハードディスクを用い、より安価なシステムを製造することが有利であると考えるであろう。   Digital copiers, printers, and multi-function devices have greatly improved performance with frame storage. If frame storage is compressed, the memory required for frame storage in these products is reduced, thus reducing its cost. However, many frame stores are implemented with random access memory (RAM). RAM is fast but generally expensive. A hard disk can also be used as memory and is generally considered cheap (generally not as expensive as RAM). Therefore, a system manufacturer would find it advantageous to use a hard disk instead of RAM for frame storage or the like to manufacture a cheaper system.

速度が重要なアプリケーションにとってハードディスクを使用することの一つの問題点は、RAMほど高速にハードディスクから情報を直接呼び出すことが困難であることである。また、多くのハードディスクは、情報をディスクに格納する時に、ディスクに格納可能な情報量を増加させるため圧縮を利用する。この圧縮の実行に要する時間も、速度が重要なアプリケーションでハードディスクの使用をためらわせる要因であろう。ハードディスクの使用、圧縮の利用に内在する速度の遅さが、速度の重要なアプリケーションにハードディスクを使用することを難しくしている。   One problem with using a hard disk for applications where speed is important is that it is difficult to call information directly from the hard disk as fast as RAM. Many hard disks also use compression to increase the amount of information that can be stored on the disk when information is stored on the disk. The time it takes to perform this compression may also be a factor in discouraging the use of hard disks in speed critical applications. The slowness inherent in the use of hard disks and the use of compression makes it difficult to use hard disks for speed critical applications.

よって、本発明は、高速なロッシー/ロスレス圧縮を可能にすることを主たる目的とする。本発明のもう一つの目的は、高価なRAMに代えて安価なハードディスクを使用可能なシステムを提供することを目的とする。本発明の他の目的は、速度をハードディスクにマッチングさせ、かつ、圧縮を利用してハードディスクをプリントエンジンなどのシステムの他の部分の帯域幅にマッチングさせることができるようにすることである。また、本発明の別の目的は、圧縮及び伸長のための時間がRAM速度に比べそれほど遅くない場合にRAMを使用できるようにすることである。本発明の他の目的は、以下の説明から明らかになろう。   Therefore, the main object of the present invention is to enable high-speed lossy / lossless compression. Another object of the present invention is to provide a system that can use an inexpensive hard disk instead of an expensive RAM. Another object of the present invention is to match the speed to the hard disk and use compression to allow the hard disk to be matched to the bandwidth of other parts of the system, such as the print engine. Another object of the present invention is to allow the RAM to be used when the time for compression and decompression is not very slow compared to the RAM speed. Other objects of the present invention will become apparent from the following description.

請求項1の発明は、ウェーブレット変換の結果、生成された係数を圧縮する圧縮装置であって、前記係数を最高重要度データと低重要度データとに分割する手段と、前記最高重要度データを直ちに係数順に符号化するためコンテクストモデルへ送出する手段と、前記低重要度データ及び当該低重要度データ中の複数の指示ビットを格納するメモリと、前記最高重要度データを符号化した後に、前記メモリに格納されている前記低重要度データを符号化するとともに、前記複数の指示ビットに基づいた順序付けを行う手段とを有することを特徴とする。 The invention of claim 1 is a compression apparatus for compressing coefficients generated as a result of wavelet transform, the means for dividing the coefficients into highest importance data and low importance data, and the highest importance data. Means for immediately sending out to the context model for encoding in order of coefficients; a memory storing the low importance data and a plurality of instruction bits in the low importance data; and after encoding the highest importance data, And means for encoding the low importance data stored in the memory and performing ordering based on the plurality of instruction bits.

請求項2の発明は、ウェーブレット変換の結果、生成された係数を圧縮する圧縮方法であって、前記係数を最高重要度データと低重要度データとに分割するステップと、前記最高重要度データを直ちに係数順に符号化するためコンテクストモデルへ送くるステップと、前記低重要度データ及び当該低重要度データ中の複数の指示ビットをメモリに格納するステップと、前記最高重要度データを符号化した後に、前記メモリに格納されている前記低重要度データを符号化するとともに、前記複数の指示ビットに基づいた順序付けを行うステップとを有することを特徴とする。 The invention of claim 2 is a compression method for compressing a coefficient generated as a result of wavelet transform, the step of dividing the coefficient into highest importance data and low importance data, and the highest importance data Immediately sending to the context model for encoding in order of coefficients; storing the low importance data and a plurality of instruction bits in the low importance data in memory; and after encoding the highest importance data And encoding the low importance data stored in the memory and performing ordering based on the plurality of instruction bits.

本発明によれば、高速なロッシー/ロスレス圧縮が可能になり、また、圧縮/伸長システムに安価なハードディスクを使用可能となり、また、速度をハードディスクにマッチングさせ、かつ、圧縮を利用してハードディスクをプリントエンジンなどのシステムの他の部分の帯域幅にマッチングさせることが可能になる等々の多くの効果を得られる。   According to the present invention, high-speed lossy / lossless compression is possible, an inexpensive hard disk can be used for the compression / decompression system, the speed is matched to the hard disk, and the hard disk is compressed using compression. Many effects can be obtained, such as being able to match the bandwidth of other parts of the system, such as a print engine.

圧縮及び伸長のための方法及び装置について述べる。以下の説明において、遅延の種類、ビットレート、フィルタの種類等々の様々な具体例が示される。しかし、当業者には、そのような具体例によらずに本発明を実施し得ることが明白になろう。他方、本発明をいたずらに難解にしないため、周知の構造及びデバイスはブロック図の形式で表し、詳しくは示さない。   A method and apparatus for compression and decompression is described. In the following description, various specific examples such as delay type, bit rate, filter type, and the like are shown. However, it will be apparent to those skilled in the art that the present invention may be practiced without such specific examples. On the other hand, well-known structures and devices are shown in block diagram form and are not shown in detail in order not to obscure the present invention.

以下の詳細説明のかなりの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号表現によって与えられる。このようなアルゴリズム記述及び表現は、データ処理技術分野の当業者によって、その研究の内容を他の当業者に対し最も効率的に伝えるために用いられる手段である。あるアルゴリズムがあり、それが概して、希望する結果に至る自己矛盾のないステップ系列だと考えられるとしよう。これらのステップは、物理量の物理的処理を必要とするものである。必ずという訳ではないが、これらの物理量は記憶、転送、結合、比較、その他処理が可能な電気的または磁気的信号の形をとるのが普通である。これらの信号をビット、値、要素、記号、文字、用語、数値等で表わすのが、主に慣用上の理由から、時に都合がよいことが分かっている。   A significant portion of the detailed description below is given by algorithms and symbolic representations of operations on data bits in computer memory. Such 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. Suppose that there is an algorithm that is generally considered a self-consistent sequence of steps that leads to the desired result. These steps are those requiring physical processing of physical quantities. Usually, though not necessarily, these physical 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 represent these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

しかしながら、このような用語や同様の用語は、適切な物理量と関係付けられるべきであり、また、これら物理量につけた便宜上のラベルに過ぎないということに留意すべきである。以下の説明から明らかなように、特に断わらない限り、「処理」「演算」「計算」「判定」「表示」等々の用語を用いて論じることは、コンピュータシステムのレジスタ及びメモリの内部の物理的(電子的)な量として表現されたデータを処理して、コンピュータシステムのメモリまたはレジスタ、同様の情報記憶装置、情報伝送装置あるいは表示装置の内部の同様に物理量として表現された他のデータへ変換する、コンピュータシステムあるいは同様の電子演算装置の作用及びプロセスを指すものである。   However, it should be noted that such and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels attached to these physical quantities. As will be apparent from the following description, unless otherwise specified, discussion using terms such as “processing”, “operation”, “calculation”, “judgment”, “display”, etc. Processes data expressed as (electronic) quantities and converts them into other data expressed as physical quantities in the same way as memory or registers in computer systems, similar information storage devices, information transmission devices or display devices It refers to the operation and process of a computer system or similar electronic computing device.

本発明はまた、本明細書に述べる操作を実行するための装置にも関係する。この装置は、要求目的のために専用に作られてもよいし、あるいは、汎用コンピュータを内蔵プログラムにより選択的に駆動または再構成したものでもよい。そのようなプログラムは、それに限定されないが、コンピュータのシステムバスにそれぞれ接続されたフロッピーディスク、光ディスク、CD−ROM、光磁気ディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カード又は光カード、あるいは電子的命令の格納に適したその他の媒体など、コンピュータの読み出し可能な記憶媒体に格納してよい。本明細書に提示されるアルゴリズム及び表示は、本質的に、どのような特定のコンピュータ、その他装置とも関わりがない。様々な汎用マシンを本明細書に述べたところに従ったプログラムと一緒に利用してよいが、必要とされる方法のステップの実行のためのより特化した装置を作るほうが好都合であるかもしれない。これら多様なマシンに要求される構造は以下の説明より明らかになろう。さらに、いかなる特定のプログラミング言語とも関連付けることなく本発明を説明する。本明細書において述べるように、本発明を実現するために多様なプログラミング言語を使用し得ることが理解されよう。   The present invention also relates to an apparatus for performing the operations described herein. This device may be made exclusively for the required purpose, or it may be a general-purpose computer selectively driven or reconfigured by a built-in program. Such programs include, but are not limited to, floppy disks, optical disks, CD-ROMs, magneto-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs connected to the computer system bus. May be stored in a computer readable storage medium, such as a magnetic card or optical card, or other medium suitable for storing electronic instructions. The algorithms and displays presented herein are essentially unrelated to any particular computer or other device. Various general purpose machines may be utilized with programs according to those described herein, but it may be more convenient to create a more specialized device for performing the required method steps. Absent. The required structure for a variety of these machines will appear from the description below. In addition, the present invention is described without being associated with any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the invention, as described herein.

下記用語が以下の説明に用いられる。これら各種用語にはすでに語義がある。しかし、規定された語義は、それら用語が当該分野において知られている範囲に限定して考えられるべきでない。これら語義は、本発明の理解を手助けするために規定されたものである。   The following terms are used in the description below. These terms already have meaning. However, the defined meanings should not be considered limited to the extent that the terms are known in the art. These terms are defined in order to help understanding of the present invention.

ABS符号化:
ビット生成のための単純なコード(例えばランコード)と使用符号語に基づく確率予測(例えばテーブルを用いる確率予測)を利用する並列エントロピー符号化法。一実施例にあっては、ABS符号化は数個のコーダからのストリームのマルチプレキシング及びデマルチプレキシングのための方法も含む。
ABS encoding:
A parallel entropy encoding method that uses a simple code (for example, a run code) for bit generation and a probability prediction based on a used codeword (for example, a probability prediction using a table). In one embodiment, ABS coding also includes methods for multiplexing and demultiplexing streams from several coders.

桁揃え(alignment):
ある周波数帯域内の変換係数の、他の周波数帯域に対するシフト度合。
Alignment:
The degree of shift of the transform coefficient within a frequency band relative to other frequency bands.

算術符号化:
有限精度演算によるShannon/Elias符号化、バイナリ・エントロピーコーダに限らない。
Arithmetic coding:
It is not limited to Shannon / Elias encoding and binary entropy coder by finite precision arithmetic.

B符号化:
圧縮のために有限状態マシンを利用するバイナリ・エントロピーコーダ。Huffman符号化と違って、有限状態マシンの利用がバイナリ・シンボルをうまく処理し、ある範囲の入力確率に対して有効である。
B encoding:
A binary entropy coder that uses a finite state machine for compression. Unlike Huffman coding, the use of a finite state machine handles binary symbols well and is effective for a range of input probabilities.

バイナリ・エントロピーコーダ:
最高確率シンボル(mps)及び最低確率シンボル(lps)として表現されることの多いバイナリ(yes/no)デシジョンに基づいて動作するノイズレスのコーダ。
Binary entropy coder:
A noiseless coder that operates on binary (yes / no) decisions, often expressed as the highest probability symbol (mps) and the lowest probability symbol (lps).

バイナリ方式:
画素のエッジ−フィル(edge-fill)Grayエンコーディングと特殊なコンテクストモデルを用いる符号化方式。
Binary method:
A coding scheme using pixel edge-fill Gray encoding and a special context model.

バイナリ方式コンテクストモデル:
2値及び階調数が少ない画像データのためのコンテクストモデル。
Binary context model:
A context model for image data with a small number of binary values and gradations.

ビット・シグニフィカンス(bit-significance):
符号(sign)絶対値表現に似た数表現で、ヘッド(head)ビットの後に符号(sign)ビットが続き、さらに、テール(tail)ビットがあれば、その後に続く。埋め込み(embedding)は、この数表現に対しビットプレーン順に符号化する。
Bit-significance:
A number representation similar to the sign absolute value representation, where the head bit is followed by a sign bit, followed by a tail bit, if any. Embedding encodes this number representation in bit-plane order.

子ベース(child-based)順:
2次元画像のスキャン順。ラスタ順に似ているが、2×2ブロック単位で動作する。ある「親」周波数帯域をラスタ順にスキャンすることを考える。各係数は4個の子を持っているであろう。これらの子は、左上のものから始めて右上、左下、右下と順序付けられ、その後に次の親と次の4つの子の組が続き、以下同様にラインの終わりまで続く。そして処理は次の2ラインに戻り、最終的に右下コーナーで終わる。どのラインもスキップされない。子ベース順は2×2ブロック順とも呼ばれる。
Child-based order:
Scan order of 2D images. Similar to raster order, but operates in 2 × 2 block units. Consider scanning a “parent” frequency band in raster order. Each coefficient will have 4 children. These children are ordered from top left to top right, bottom left, bottom right, followed by the next parent and next four child pairs, and so on until the end of the line. The process then returns to the next two lines and finally ends at the lower right corner. No lines are skipped. The child base order is also called 2 × 2 block order.

係数:
変換後の成分。
coefficient:
Ingredient after conversion.

成分:
画像の構成要素。成分が画素を構成する。例えば、赤、緑、青の帯域は成分帯域である。個々の画素は赤、緑、青の成分から構成される。成分と成分帯域に、画像への空間写像を持つ任意の種類の情報を含めることができる。
component:
Image component. A component constitutes a pixel. For example, the red, green, and blue bands are component bands. Each pixel is composed of red, green, and blue components. Components and component bands can contain any type of information that has a spatial mapping to the image.

コンテクストモデル:
符号化しようとするカレント・ビットに関し因果的に利用できる情報で、カレント・ビットに関する過去に学習した情報を提供してエントロピー符号化のための条件付確率予測を可能にする。2値画像において、ある画素のための1つの可能なコンテクストは、同じラインの先行2画素と前ラインの3画素である。
Context model:
Information that can be causally used for the current bit to be encoded and provides previously learned information about the current bit to enable conditional probability prediction for entropy coding. In a binary image, one possible context for a pixel is the two preceding pixels on the same line and the three pixels on the previous line.

分割レベル:
ウェーブレット分割ピラミッド内の位置。解像度と直接関係がある。
Split level:
Position in wavelet split pyramid. It is directly related to resolution.

効率変換:
係数への最高のエネルギー集中を達成すると同時に最小のビット数を用いてそれら係数を表現する変換。
Efficiency conversion:
A transformation that achieves the highest energy concentration in the coefficients while representing them using the least number of bits.

埋め込みコンテクストモデル:
コンテクストビンと結果の重要度レベルへの分割を、重要な値が保存されれば効率的なロッシー圧縮が得られるように行うコンテクストモデル。
Embedded context model:
A context model that divides context bins and results into importance levels so that efficient lossy compression can be achieved if important values are preserved.

順序付けによる埋め込み:
明示的な重要度のラベリングはないが、最も重要なデータが初めの部分にくるように圧縮データが順序付けされる、埋め込みコンテクストモデルの特殊ケース。
Embedding by ordering:
A special case of an embedded context model where there is no explicit importance labeling, but the compressed data is ordered so that the most important data comes first.

埋め込み量子化:
コードストリームに包含される量子化。例えば、重要度レベルが最高のレベルから最低のレベルへと順に並べられているときには、コードストリームの単なる打ち切りによって量子化が行われる。タグ、マーカー、ポインタ、その他の信号によって同じ働きを得ることができる。復号化時には画像に対し多重量子化を行うことができるが、符号化時には単一の埋め込み量子化しか行うことができない。
Embedded quantization:
Quantization included in the codestream. For example, when the importance levels are arranged in order from the highest level to the lowest level, the quantization is performed by simply truncating the code stream. The same function can be obtained by tags, markers, pointers, and other signals. Multiple quantization can be performed on an image at the time of decoding, but only single embedded quantization can be performed at the time of encoding.

エントロピーコーダ:
カレント・ビットを、確率予測に基づいて符号化又は復号化する装置。本明細書では、エントロピーコーダは多重コンテクストバイナリコーダとも呼ばれることがある。カレント・ビットのコンテクストは何らかの選ばれた配置の「近傍」ビットであり、カレント・ビット(1ビットまたは複数ビット)の最適表現のための確率予測を可能にする。一実施例では、エントロピーコーダはバイナリコーダ、並列ランレングスコーダ、又はHuffmanコーダである。
Entropy coder:
An apparatus for encoding or decoding current bits based on probability prediction. As used herein, an entropy coder may also be referred to as a multiple context binary coder. The context of the current bit is a “neighbor” bit in some chosen arrangement, allowing probability prediction for an optimal representation of the current bit (one or more bits). In one embodiment, the entropy coder is a binary coder, a parallel run length coder, or a Huffman coder.

エントリー・ポイント:
既知の符号化状態で始まる符号化データ中のポイント。復号化器は、この点から、その前データを復号化することなく復号化を開始できる。これには、大抵の場合、コンテクストとバイナリ・エントロピーコーダを所期状態にリセットする必要がある。各符号化単位の符号化データはエントリーポイントから始まる。
Entry points:
A point in the encoded data that begins with a known encoding state. From this point, the decoder can start decoding without decoding the previous data. This usually requires resetting the context and binary entropy coder to the desired state. The encoded data of each encoding unit starts from an entry point.

固定長:データの特定ブロックを圧縮データの特定ブロックへ変換する方式。例えばBTC(ブロック符号化)と、VQ(ベクトル量子化)のいくつかの方式。固定長コードは固定レート・固定サイズのアプリケーションに適するが、レート・歪み性能は可変レート方式に比べ劣ることが多い。 Fixed length: A method of converting a specific block of data into a specific block of compressed data. For example, some methods of BTC (block coding) and VQ (vector quantization). Fixed length codes are suitable for fixed rate and fixed size applications, but rate and distortion performance is often inferior to variable rate systems.

固定レート:
ある一定の画素レートを維持し、帯域幅の限定された通信路を持つアプリケーション又はシステム。一実施例においては、この目標を達成するため、全体的に平均した圧縮というより、局所的に平均した圧縮が達成される。例えば、MPEGは固定レートを要求する。
Fixed rate:
An application or system that maintains a certain pixel rate and has a limited bandwidth channel. In one embodiment, locally averaged compression is achieved to achieve this goal, rather than globally averaged compression. For example, MPEG requires a fixed rate.

固定サイズ:
限られたサイズのバッファを持つアプリケーション又はシステム。一実施例では、この目標を達成するため全体的に平均した圧縮がなされる。例えば、プリント・バッファ。(アプリケーションは、固定レートのことも、固定サイズのことも、その両方のこともある。)
周波数帯域:
各周波数帯域は、同じフィルタ処理系列によりもたらされる一群の係数を表す。
Fixed size:
An application or system that has a limited size buffer. In one embodiment, overall average compression is used to achieve this goal. For example, print buffer. (Applications can be fixed rate, fixed size, or both.)
frequency band:
Each frequency band represents a group of coefficients produced by the same filtering sequence.

ヘッド・ビット:
ビット・シグニフィカンス表現において、ヘッドビットとは、最上位ビッから最初の非ゼロのビットまでの、該最初の非ゼロビットを含めた絶対値ビットである。
Head bit:
In the bit-significance representation, the head bit is an absolute value bit including the first non-zero bit from the most significant bit to the first non-zero bit.

ハフマン(Huffman)コーダ:
一般に、各シンボルに対して整数個のビットを発生する固定長コーダ。
Huffman coder:
In general, a fixed length coder that generates an integer number of bits for each symbol.

重要度レベル:
埋め込みデータの1つのビットプレーン全体に対応する、圧縮される前の符号化データの単位。重要度レベルは、異なった係数周波数帯域からの適切なビットプレーン全てを含む。
Importance level:
A unit of encoded data before compression corresponding to one entire bit plane of embedded data. The importance level includes all the appropriate bit planes from different coefficient frequency bands.

LPS(最低確率シンボル):
50%未満の確率を持つバイナリデシジョンにおける事象(outcome)。
2つの事象が等確率の時にどちらがmps又はlpsに選ばれるかは符号化器と復号化器が同じ選定をするならば重要なことではない。
LPS (lowest probability symbol):
An event in a binary decision with a probability of less than 50%.
Which is chosen to be mps or lps when the two events are of equal probability is not important if the encoder and decoder make the same choice.

ロスレス/ノイズレス/可逆符号化:
原データの完全な復元が可能な方法によるデータ圧縮。
Lossless / noiseless / lossless coding:
Data compression in a way that allows complete restoration of the original data.

ロッシー符号化:
原データの完全な復元を保障しないデータ符号化。視覚的に不快であったり目立ったりしないように、原データから変化してもよい。多くの場合、固定レートが可能である。
Lossy encoding:
Data encoding that does not guarantee complete restoration of the original data. It may change from the original data so that it is not visually uncomfortable or noticeable. In many cases, a fixed rate is possible.

MPS(最高確率シンボル):
50%を超える確率を持つバイナリデシジョンにおける事象。
MPS (highest probability symbol):
An event in a binary decision with a probability greater than 50%.

重複変換:
単一のソース標本点が同じ周波数の複数の係数に寄与する変換。その例に、多くのウェーブレット及び重複直交変換がある。
Duplicate conversion:
A transformation in which a single source sample point contributes to multiple coefficients of the same frequency. Examples include many wavelets and overlapping orthogonal transforms.

親係数:カレントの係数又は画素と同じ画像空間をカバーする、すぐ上の階層レベルの係数又は画素。例えば図1において、1SD係数の親は2SD係数であり、これは3SD係数の親である。 Parent coefficient: The coefficient or pixel at the next higher level that covers the same image space as the current coefficient or pixel. For example, in FIG. 1, the parent of the 1SD coefficient is the 2SD coefficient, which is the parent of the 3SD coefficient.

確率予測マシン/モジュール:
コンテクスト内での確率を追跡する、符号化システムの要素。
Probability prediction machine / module:
An element of an encoding system that tracks probabilities within a context.

プログレッシブ画素深度:
フル解像度のデータのビットプレーンが浅いほうから深いほうへ順序付けられたコードストリーム。
Progressive pixel depth:
A code stream in which bit planes of full resolution data are ordered from shallow to deep.

プログレッシブ・ピラミッド:
解像度が下がる毎に各次元が2分の1(面積では4分の1)になる解像度成分の系列。
Progressive pyramid:
A series of resolution components in which each dimension is halved (1/4 in area) each time the resolution is lowered.

Qコーダ:
乗算が加算によって置き換えられ、確率が離散値に限定され、確率予測値がビット出力時に更新されるバイナリ算術コーダ。
Q coder:
A binary arithmetic coder in which multiplication is replaced by addition, the probability is limited to a discrete value, and the probability prediction value is updated when the bit is output.

ラスター順:
2次元画像のスキャン順。左上コーナーからスタートして左から右へ移動し、それから次ラインの左端に戻り、最終的に右下コーナーで終了する。どのラインもスキップされない。
Raster order:
Scan order of 2D images. Start from the upper left corner, move from left to right, then return to the left edge of the next line, and finally end at the lower right corner. No lines are skipped.

可逆変換:
一実施例では、圧縮結果を原データに復元可能な、整数演算により実現される効率変換。
Reversible conversion:
In one embodiment, the efficiency conversion realized by integer arithmetic that can restore the compression result to the original data.

テールビット(又はテール):
ビット・シグニフィカンス表現で、テール(tail)ビットとは最上位の非ゼロのビットより下位の絶対値ビットである。
Tail bit (or tail):
In bit-significance representation, a tail bit is an absolute value bit lower than the most significant non-zero bit.

タイル(tile)データセグメント:
一つの符号化単位を完全に記述するコードストリームの部分。
Tile data segment:
The part of the code stream that completely describes one coding unit.

TS変換:
2・6(Two−Six)変換。2タップ・ローパス分析フィルタと6タップ・ハイパス分析フィルタからなる特殊な可逆ウェーブレットフィルタ対。合成フィルタは、分析フィルタのクァドレチャーミラー(quadrature mirror)フィルタである。
TS conversion:
2. 6 (Two-Six) conversion. A special reversible wavelet filter pair consisting of a 2-tap low-pass analysis filter and a 6-tap high-pass analysis filter. The synthesis filter is a quadrature mirror filter of the analysis filter.

TT変換:
2・10(Two-Ten)変換。2タップ・ローパス分析フィルタと10タップ・ハイパス分析フィルタからなる特殊な可逆ウェーブレットフィルタ対。合成フィルタは分析フィルタのクァドレチャー・ミラー・フィルタである。
TT conversion:
2.10 (Two-Ten) conversion. A special reversible wavelet filter pair consisting of a 2-tap low-pass analysis filter and a 10-tap high-pass analysis filter. The synthesis filter is a quadrature mirror filter of the analysis filter.

統合型(unified)ロスレス/ロッシー:
同じ圧縮システムが、ロスレス復元又はロッシー復元が可能なコードストリームを提供する。本発明の一実施例では、このコードストリームは復号化器に対する設定情報も指令もなくてよい。
Unified lossless / lossy:
The same compression system provides a codestream that can be lossless or lossy restored. In one embodiment of the invention, this codestream may have no configuration information or instructions for the decoder.

ウェーブレット・フィルタ:
ウェーブレット変換に使われるハイパスとローパスの合成フィルタ及び分析フィルタ。
Wavelet filter:
High-pass and low-pass synthesis and analysis filters used for wavelet transform.

ウェーブレット変換:
「周波数」及び「時間(又は空間)」の両方の領域の拘束条件がある変換。一実施例では、ハイパスフィルタとローパスフィルタからなる変換である。結果として得られた係数は1/2に間引かれ(臨界フィルタ処理され)、それらフィルタがローパス係数にかけられる。
Wavelet transform:
A transformation with constraints in both the “frequency” and “time (or space)” domains. In one embodiment, the conversion is made up of a high-pass filter and a low-pass filter. The resulting coefficients are decimated by 1/2 (critically filtered) and the filters are subjected to low pass coefficients.

ウェーブレット木:
最高レベルのウェーブレット分割のSS部内の単一の係数と関係付けられた係数と画素。係数の個数はレベル数の関数である。図1は、1つのウェーブレット木に含まれる係数を示す。ウェーブレット木のスパンは、分割レベル数に依存する。例えば、ウェーブレット木のスパンは、1レベル分割では4画素、2レベル分割では16画素、等々である。図59に、1つのウェーブレット木に集約される画素の個数を様々なレベル数の場合について示す。2次元の場合、各ウェーブレット木はSD,DD,DSと呼ばれる3つの部分木からなる。
Wavelet wood:
Coefficients and pixels associated with a single coefficient in the SS part of the highest level wavelet split. The number of coefficients is a function of the number of levels. FIG. 1 shows the coefficients included in one wavelet tree. The span of the wavelet tree depends on the number of division levels. For example, the span of a wavelet tree is 4 pixels for 1 level division, 16 pixels for 2 level division, and so on. FIG. 59 shows the number of pixels aggregated in one wavelet tree for various levels. In the two-dimensional case, each wavelet tree consists of three subtrees called SD, DD, and DS.

<概要>
本発明は、符号化部及び復号化部を持つ圧縮/伸長システムを提供する。符号化部は入力データを符号化して圧縮データを生成する働きをし、他方、復号化部は既に符号化されたデータを復号化して元の入力データの再構成データを生成する働きをする。入力データとして、画像(静止画像あるいは動画像)、音声等々の様々な種類のデータがあり得る。一実施例では、データはデジタル信号データであるが、デジタル化したアナログデータ、テキストデータ形式、その他の形式も可能である。そのデータのソースは、例えば符号化部及び/又は復号化部のためのメモリまたは通信路である。
<Overview>
The present invention provides a compression / decompression system having an encoding unit and a decoding unit. The encoder serves to encode the input data and generate compressed data, while the decoder serves to decode the already encoded data and generate reconstructed data of the original input data. As input data, there can be various types of data such as images (still images or moving images), voices, and the like. In one embodiment, the data is digital signal data, but digitized analog data, text data formats, and other formats are possible. The source of the data is, for example, a memory or a communication path for an encoding unit and / or a decoding unit.

本発明において、符号化部及び/又は復号化部の構成要素は、ハードウエアによって実現されてもよいし、あるいはコンピュータシステム上で利用されるようなソフトウエアによって実現されてもよい。本発明はロスレス圧縮/伸長システムを提供する。本発明は、ロッシー圧縮/伸長を実行するようにも構成できる。   In the present invention, the components of the encoding unit and / or the decoding unit may be realized by hardware, or may be realized by software as used on a computer system. The present invention provides a lossless compression / decompression system. The present invention can also be configured to perform lossy compression / decompression.

本発明のシステムは、可逆ウェーブレットによる高速のロッシー/ロスレス圧縮を用いるが、これについては後により詳しく説明する。このシステムは、例えばレーザープリンタのようなプリンタであるかもしれない。一実施例では、このプリンタは与えられたページの記憶に安価なハードディスクを用いることにより、必要とされる高価なランダムアクセスメモリ(RAM)の量を大幅に削減する。そのハードディスク又は他の記憶装置の限定された帯域幅を、プリントエンジンに必要とされる、より大きな帯域幅に合わせるために圧縮が利用される。本発明の符号化技術はプリントエンジンの要求する高速、リアルタイム性を満たし、さらに本発明は、画像の特性及びハードディスクのバースト性に応じて、優れたロッシー圧縮又はロスレス圧縮のどちらも可能である。   The system of the present invention uses high-speed lossy / lossless compression with reversible wavelets, which will be described in more detail later. The system may be a printer such as a laser printer. In one embodiment, the printer significantly reduces the amount of expensive random access memory (RAM) required by using an inexpensive hard disk to store a given page. Compression is used to match the limited bandwidth of the hard disk or other storage device to the larger bandwidth required by the print engine. The encoding technique of the present invention satisfies the high speed and real-time properties required by the print engine, and the present invention can perform either excellent lossy compression or lossless compression depending on the characteristics of the image and the burst property of the hard disk.

以下の詳細な説明において、可逆ウェーブレットによる圧縮の概要、圧縮フレーム記憶のアプリケーション、カラーレーザープリンタ、プリンタ・チップの実例について述べる。プリンタのレンダリング・エンジンはハードディスクを記憶に利用する。ハードディスクはプリント・エンジンより低速であるので、レートを整合させるため圧縮が利用される。ディスプレイリスト(display list)技法も、レンダリング中に必要とされるメモリを減らすために利用してよい。ディスプレイリスト・ベースのレンダリングエンジンは、圧縮システムが画像のバンドを独立に処理することを許容する。なお、プリンタシステムに関連して本発明を説明するが、本発明は圧縮及び/又は伸長サブシステムを含む他のシステムにも適用可能である。   In the following detailed description, an overview of reversible wavelet compression, compressed frame storage applications, color laser printers, and printer chip examples are described. The printer's rendering engine uses the hard disk for storage. Since hard disks are slower than print engines, compression is used to match rates. Display list techniques may also be used to reduce the memory required during rendering. Display list-based rendering engines allow compression systems to process image bands independently. Although the present invention will be described in connection with a printer system, the present invention is applicable to other systems including a compression and / or decompression subsystem.

また、埋め込み統合型ロスレス/ロッシー圧縮システムについても本明細書において述べる。システムの埋め込み特性は、品質をディスクの転送レートにより決定可能にする。圧縮が容易な画像(例えば、テキスト及び/又は線画からなる殆どの文書)の場合、ロスレス圧縮がなされる。圧縮しにくい画像(例えば、ノイズの多い自然画像及び/又は中間調のある文書)の場合、高品質のロッシー圧縮がなされる。   An embedded integrated lossless / lossy compression system is also described herein. The embedded nature of the system allows quality to be determined by the transfer rate of the disk. For images that are easy to compress (eg, most documents consisting of text and / or line drawings), lossless compression is performed. For images that are difficult to compress (eg, noisy natural images and / or halftone documents), high quality lossy compression is performed.

カラー画像のロスレス圧縮と高品質ロッシー圧縮の両方をサポートするシステムに関する説明については、米国特許出願第08/642,518号(1996年5月3日受理、“Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device-Dependent Parser”)、及び、米国特許出願第08/436,662(1995年5月8日受理、“Method and Apparatus for Reversible Color Conversion”)を参照されたい。   For a description of a system that supports both lossless and high-quality lossy compression of color images, see US patent application Ser. No. 08 / 642,518 (accepted May 3, 1996, “Compression and Decompression with Wavelet Style and Binary Style Including Quantization”. by Device-Dependent Parser ”) and US patent application Ser. No. 08 / 436,662 (accepted May 8, 1995,“ Method and Apparatus for Reversible Color Conversion ”).

<可逆ウェーブレット>
本発明は、可逆ウェーブレットによる圧縮を利用する。
<Reversible wavelet>
The present invention utilizes compression by reversible wavelets.

<ウェーブレット分割>
本発明は、初めに、可逆ウェーブレットを利用して、(画像データとしての)画像または他のデータ信号の分割を行う。本発明において、可逆ウェーブレット変換は、整数係数を持つ信号のロスレス復元が可能な完全再構成システムを整数演算で実現する。効率逆変換は、行列式が1(又はほぼ1)の変換行列を使用する可逆変換である。
<Wavelet division>
The present invention initially uses reversible wavelets to split an image (as image data) or other data signal. In the present invention, the reversible wavelet transform realizes a complete reconstruction system capable of lossless restoration of a signal having integer coefficients by integer arithmetic. The inverse efficiency transformation is a reversible transformation using a transformation matrix whose determinant is 1 (or almost 1).

本発明は、可逆ウェーブレットを用いることにより、有限精度の演算でロスレス圧縮をすることが可能である。画像データに可逆ウェーブレット変換を適用することにより生成される結果は、係数の系列である。   In the present invention, lossless compression can be performed with a finite precision operation by using a reversible wavelet. The result generated by applying the reversible wavelet transform to the image data is a sequence of coefficients.

本発明の可逆ウェーブレット変換は、1組のフィルタを用いて実現できる。一実施例では、それらのフィルタは、本明細書においてTS変換もしくは2・6変換と呼ばれる変換を行うための2タップ・ローパスフィルタと6タップ・ハイパスフィルタである。他の一実施例では、それらのフィルタは、本明細書においてTT変換もしくは2・10変換と呼ばれる変換を行うための2タップ・ローパスフィルタと10タップ・ハイパスフィルタである。これらフィルタは、加減算(とハードワイヤのビットシフト)だけで実現することができる。   The reversible wavelet transform of the present invention can be realized using a set of filters. In one embodiment, the filters are a 2-tap low-pass filter and a 6-tap high-pass filter for performing a transformation referred to herein as a TS transform or a 2 · 6 transform. In another embodiment, the filters are a 2-tap low-pass filter and a 10-tap high-pass filter for performing a transformation referred to herein as a TT transform or a 2 · 10 transform. These filters can be realized only by addition and subtraction (and hard wire bit shift).

TT変換には、TS変換に比べると、少なくとも1つの長所と、少なくとも1つの短所がある。長所は、TT変換がTS変換よりも良好な圧縮が得られることである。TT変換の短所は、10タップのフィルタが長い分、高いハードウェアコストを要することである。   The TT conversion has at least one advantage and at least one disadvantage compared to the TS conversion. The advantage is that the TT transform provides better compression than the TS transform. The disadvantage of TT conversion is that a long 10-tap filter requires high hardware costs.

<2次元ウェーブレット分割>
本発明のローパスフィルタ及びハイパスフィルタを用いて、多重解像度分割が行なわれる。分割レベル数は可変であり任意数でよいが、現在のところ分割レベル数は2レベルから8レベルまでである。最大レベル数は、log2(入力の長さ又は幅の最大値)である。
<2D wavelet division>
Multi-resolution division is performed using the low-pass filter and high-pass filter of the present invention. The number of division levels is variable and may be any number, but currently the number of division levels is from 2 to 8 levels. The maximum number of levels is log 2 (the maximum value of the input length or width).

画像のような2次元データに対し変換を行う最も普通のやり方は、1次元フィルタを別々に適用する方法、つまり、ラインに沿って適用し、次に列に沿って適用するという方法である。第1レベルの分割により4つの異なった帯域の係数が得られ、これらは本明細書ではSS,DS,SD,DDと呼ばれる。これら文字は、ロー(L)パスフィルタとハイ(H)パスフィルタにそれぞれ対応する前述のスムーズ(S)フィルタとディテール(D)フィルタを指す。したがって、SS帯域はライン方向及び列方向の両方のスムーズフィルタより得られた係数からなっている。   The most common way of transforming two-dimensional data such as an image is to apply the one-dimensional filter separately, that is, along the lines and then along the columns. The first level of division yields four different band coefficients, referred to herein as SS, DS, SD, and DD. These letters refer to the aforementioned smooth (S) filter and detail (D) filter corresponding to the low (L) pass filter and the high (H) pass filter, respectively. Therefore, the SS band consists of coefficients obtained from smooth filters in both the line direction and the column direction.

ウェーブレット分割の各周波数部分帯域はさらに分割することができる。最も普通のやりかたはSS部分帯域だけをさらに分割する方法であり、各分割レベルのSS周波数部分帯域が生成された時にそれをさらに分割することになろう。このような多重分割はピラミッド分割と呼ばれる。記号SS,SD,DS,DDと分割レベル番号によって各分割を表示する。   Each frequency subband of wavelet division can be further divided. The most common way is to further divide only the SS sub-band, which will be further divided when the SS frequency sub-band of each division level is generated. Such multiple division is called pyramid division. Each division is displayed by symbols SS, SD, DS, DD and division level number.

なお、本発明のTS変換、TT変換のいずれかを用いても、ピラミッド分割によって係数のサイズは増加しない。   It should be noted that the coefficient size does not increase by pyramid division even if either the TS transform or the TT transform of the present invention is used.

可逆ウェーブレット変換が再帰的に画像に適用される場合、第1レベルの分割は最も細かいディテールもしくは解像度に対し作用する。第1分割レベルで、画像は4つの部分画像(すなわち部分帯域)に分解される。各部分帯域は、1つの空間周波数帯域を表わしている。第1レベルの部分帯域は1SS,1SD,1DS,1DDと表される。原画像を分割するプロセスに水平と垂直の両次元について1/2サブサンプリングが含まれるので、第1レベルの部分帯域1SS,1SD,1DS,1DDはそれぞれ、入力が持っていた画像の画素(または係数)の1/4の個数の係数を持つ。   When the reversible wavelet transform is applied recursively to the image, the first level segmentation works on the finest detail or resolution. At the first division level, the image is decomposed into four partial images (ie, partial bands). Each partial band represents one spatial frequency band. The first level partial bands are represented as 1SS, 1SD, 1DS, and 1DD. Since the process of dividing the original image includes 1/2 subsampling in both the horizontal and vertical dimensions, the first level subbands 1SS, 1SD, 1DS, and 1DD are respectively the pixels of the image that the input had (or Of the number of coefficients).

部分帯域1SSは、水平方向の低い周波数の情報と垂直方向の低い周波数の情報を同時に含んでいる。一般に、画像エネルギーの大部分は、この部分帯域に集中している。部分帯域1SDは、水平方向の低い周波数の情報と垂直方向の高い周波数の情報(例えば水平方向エッジの情報)を含んでいる。部分帯域1DSは、水平方向の高い周波数の情報と垂直方向の低い周波数の情報(例えば垂直方向エッジの情報)を含んでいる。部分帯域1DDは、水平方向の高い周波数の情報と垂直方向の高い周波数の情報(例えばテクスチャ又は斜めエッジの情報)を含んでいる。   The partial band 1SS includes information on the low frequency in the horizontal direction and information on the low frequency in the vertical direction at the same time. In general, most of the image energy is concentrated in this partial band. The partial band 1SD includes low frequency information in the horizontal direction and high frequency information in the vertical direction (for example, horizontal edge information). The partial band 1DS includes high frequency information in the horizontal direction and low frequency information in the vertical direction (for example, vertical edge information). The partial band 1DD includes high frequency information in the horizontal direction and high frequency information in the vertical direction (for example, texture or oblique edge information).

この後に続く下位の第2、第3、第4分割レベルはそれぞれ、前レベルの低周波数SS部分帯域を分割することによって作られる。第1レベルの部分帯域1SSが分割されて、やや精細な第2レベルの部分帯域2SS,2SD,2DS,2DDが作られる。同様に、部分帯域2SSが分割されて、精細度の粗い第3レベルの部分帯域3SS,3SD,3DS,3DDが生成される。また、部分帯域3SSが分割されることにより、精細度がより粗い第4レベルの部分帯域4SS,4SD,4DS,4DDが作られる。1/2サブサンプリングにより、第2レベルの各部分帯域は原画像の16分の1の大きさである。このレベルの各標本(つまり画素)は、原画像中の同一位置のやや細いディテールを表す。同様に、第3レベルの各部分帯域は、原画像の64分の1の大きさである。このレベルでの各画素は、原画像中の同一位置のかなり粗いディテールを表す。また、第4レベルの各部分帯域は原画像の256分の1の大きさである。   Subsequent lower second, third, and fourth division levels are each created by dividing the previous level low frequency SS sub-band. The first level partial band 1SS is divided to create slightly finer second level partial bands 2SS, 2SD, 2DS, and 2DD. Similarly, the partial band 2SS is divided to generate third-level partial bands 3SS, 3SD, 3DS, and 3DD with a coarse definition. Further, by dividing the partial band 3SS, fourth-level partial bands 4SS, 4SD, 4DS, and 4DD having a coarser definition are created. With ½ subsampling, each second level subband is 1 / 16th the size of the original image. Each sample (ie pixel) at this level represents a slightly fine detail at the same position in the original image. Similarly, each partial band of the third level is 1 / 64th the size of the original image. Each pixel at this level represents a fairly coarse detail at the same location in the original image. Further, each partial band of the fourth level is 1/256 the size of the original image.

分割された画像はサブサンプリングのために原画像より大きさが小さいので、原画像の格納に使用されたメモリを、分割された部分帯域の全部の格納のために使用できる。つまり、3レベル分割の場合、原画像と分割部分帯域1SS,2SSは捨てられてしまい、保存されない。   Since the divided image is smaller than the original image for sub-sampling, the memory used for storing the original image can be used for storing all of the divided sub-bands. That is, in the case of three-level division, the original image and the divided partial bands 1SS and 2SS are discarded and are not stored.

4つの部分帯域分割レベルについて述べたが、個々のシステムの要求に応じて、それ以上のレベルを生成することも可能である。また、DCTのような他の変換又は一次元配置の部分帯域を用いて、異なった親子関係を定義してもよい。   Although four sub-band splitting levels have been described, it is possible to generate more levels depending on individual system requirements. Different parent-child relationships may be defined using other transforms such as DCT or one-dimensionally arranged subbands.

なお、本発明のウェーブレットフィルタによれば、ピラミッド分割は係数サイズを増加させない。
他の実施例においては、SSのほかに他の部分帯域も分割されるかもしれない。
According to the wavelet filter of the present invention, pyramid division does not increase the coefficient size.
In other embodiments, other sub-bands besides SS may be split.

<ウェーブレットの木構造>
ピラミッド分割のウェーブレット係数には自然で有用な木構造がある。部分帯域分割の結果は、最終の分割レベルに対応したただ一つのSS周波数部分帯域である。これに対し、レベル数と同数のSD,DS,DD帯域がある。この木構造により、ある周波数帯域内の係数の親は、それより低い解像度の同じ周波数帯域内の係数であり、かつ同じ空間位置関係にあることが明らかになる。
<Wavelet tree structure>
There are natural and useful tree structures for wavelet coefficients of pyramid division. The result of the subband division is a single SS frequency subband corresponding to the final division level. On the other hand, there are as many SD, DS, and DD bands as the number of levels. This tree structure reveals that the parents of the coefficients in a certain frequency band are the coefficients in the same frequency band with a lower resolution and have the same spatial positional relationship.

本発明においては、各木は、SS係数と、3つの部分木すなわちDS,SD,DDの部分木からなる。本発明の処理は、普通、これら3つの部分木に対して行われる。各木のルートは、純粋に平滑な係数である。画像のような2次元信号の場合、3つの部分木があり、それぞれの部分木は4つの子を持つ。この木階層構造は2次元信号に限定されない。例えば、1次元信号の場合、各部分木は1つの子を持つ。これ以上の高い次元は、1次元の場合及び2次元の場合から導き出される。   In the present invention, each tree includes an SS coefficient and three subtrees, that is, subtrees of DS, SD, and DD. The process of the present invention is normally performed on these three subtrees. The root of each tree is a purely smooth coefficient. In the case of a two-dimensional signal such as an image, there are three subtrees, and each subtree has four children. This tree hierarchical structure is not limited to a two-dimensional signal. For example, in the case of a one-dimensional signal, each subtree has one child. Higher dimensions are derived from the one-dimensional case and the two-dimensional case.

多重解像度分割のプロセスは、フィルタ系列を使って行うことができる。1次元の典型的フィルタを使って実現される2次元2レベル変換の例については、米国特許出願第08/498,695号(1995年6月30日受理、“Method and Apparatus For Compression Using Reversible Wavelet Transforms and an Embedded Codestream”)及び米国特許出願第08/498,036号(1995年6月30日受理、“Reversible Wavelet Transform and Embedded Codestream Manipulation”)を参照されたい。   The multi-resolution partitioning process can be performed using a filter sequence. For an example of a two-dimensional two-level transform implemented using a one-dimensional typical filter, see US patent application Ser. No. 08 / 498,695 (June 30, 1995, “Method and Apparatus For Compression Using Reversible Wavelet Transforms and an Embedded Codestream ") and U.S. Patent Application No. 08 / 498,036 (accepted June 30, 1995," Reversible Wavelet Transform and Embedded Codestream Manipulation ").

<順ウェーブレット変換の実行>
本発明では、2回の1-D演算によって、すなわち、まず水平方向の1-D演算を行い、次に垂直方向の1-D演算を行うことによって、ウェーブレット変換が実施される。一実施例においては、あるハードウェアで水平方向の演算を実行し、別のハードウェアで垂直方向の演算を実行する。
<Perform forward wavelet transform>
In the present invention, wavelet transformation is performed by two 1-D operations, that is, by first performing a horizontal 1-D operation and then performing a vertical 1-D operation. In one embodiment, one piece of hardware performs horizontal computations and another piece of hardware performs vertical computations.

レベル数で反復回数が決まる。一実施例では、水平方向と垂直方向の両方についてTT変換を使って、4レベル分割が実行される。別の実施例では、TT変換に代えTS変換を使って、4レベル分割が実行される。   The number of iterations is determined by the number of levels. In one embodiment, a four level split is performed using TT transform for both horizontal and vertical directions. In another embodiment, 4-level splitting is performed using TS conversion instead of TT conversion.

本発明の変換は、演算効率が非常に優れている。一実施例において、本発明は、必要とされるオンチップ及びオフチップのメモリの容量と帯域幅を減らすように、変換で行われる計算を順序付けする。   The conversion of the present invention is very efficient in computing efficiency. In one embodiment, the present invention orders the calculations performed in the transformation to reduce the required on-chip and off-chip memory capacity and bandwidth.

<変換のための計算順序とデータフロー>
前述のように本発明においては、変換の計算のための基本単位はウェーブレット木である。4レベル変換の場合を考えると、各ウェーブレット木は16×16の画素ブロックである。16×16ブロックの画素(CMYK画像の場合は4成分全部)が本発明の変換部に入力され、係数生成のための可能な計算が全て実行される。(逆変換も同様であり、16×16の係数ブロックが入力され、可能な全ての計算が実行される)
本発明は重複変換を用いるため、先行の隣接木からの情報が記憶されて計算に利用される。カレントのウェーブレット木と先行隣接情報との間の境界は、本明細書ではシーム(seam)と呼ばれる。本発明の変換を実行するためにシームを越えて保存される情報については、後に詳述する。
<Calculation order and data flow for conversion>
As described above, in the present invention, the basic unit for calculation of transformation is a wavelet tree. Considering the case of 4-level conversion, each wavelet tree is a 16 × 16 pixel block. Pixels of 16 × 16 blocks (all four components in the case of CMYK images) are input to the conversion unit of the present invention, and all possible calculations for coefficient generation are executed. (The inverse transformation is similar, a 16x16 coefficient block is input and all possible calculations are performed)
Since the present invention uses overlap transformation, information from the preceding neighboring tree is stored and used for calculation. The boundary between the current wavelet tree and the preceding neighbor information is referred to herein as a seam. Information stored across the seam to perform the transformation of the present invention will be described in detail later.

<ウェーブレット木の順序付け>
特定のアプリケーション(例えば印刷)の場合、本発明の符号化単位は幅が大きく長さが小さいため、変換を計算するためのウェーブレット木の順序付けが重要である。一実施例では、各符号化単位は4096×256画素からなる。
<Ordering wavelet trees>
For certain applications (eg printing), the coding unit of the present invention is wide and small in length, so the ordering of the wavelet tree to compute the transform is important. In one embodiment, each coding unit consists of 4096 × 256 pixels.

以下の説明では、符号化単位はそれぞれ4096×256画素からなる。しかしながら、それ以外のサイズの符号化単位にも以下に述べる順序付けを適用可能であることに留意されたい。図2はラスタ順と同様の順序を示す。この順序を、本明細書では長シーム変換順と呼ぶ。図2において、太線はシームを越えて保存されるデータ量を示し、また、どの位のメモリ量が変換の計算に必要とされるかを示している。このデータは、水平方向変換の場合には1つのウェーブレット木に比例するが、垂直方向の変換の場合には画像の幅(本例では4096)に比例する。このデータのためのメモリ量では、外部メモリを使用する必要があるかもしれない。しかし、ラスタ順に近いため、逆変換期間に、ウェーブレット木の1つの水平行が画素へ変換されると直ちにデータを変換部から(例えば、プリンタのアプリケーションではプリンタへ)出力することができる。   In the following description, each encoding unit is composed of 4096 × 256 pixels. However, it should be noted that the ordering described below can be applied to coding units of other sizes. FIG. 2 shows an order similar to the raster order. This order is referred to herein as a long seam transformation order. In FIG. 2, the bold lines indicate the amount of data stored across the seam, and how much memory is required for the conversion calculation. This data is proportional to one wavelet tree in the case of horizontal transformation, but is proportional to the image width (4096 in this example) in the case of vertical transformation. With the amount of memory for this data, it may be necessary to use external memory. However, since it is close to the raster order, data can be output from the conversion unit (for example, to a printer in a printer application) as soon as one horizontal line of the wavelet tree is converted into pixels in the inverse conversion period.

図3は別の順序を示すもので、この順序を本明細書では短シーム順と呼ぶ。シームのためのメモリ量は、水平方向の変換の場合には符号化単位の高さ(本例では256)に比例し、垂直方向の変換の場合には1つのウェーブレット木に比例する。この順序によれば必要なメモリ量が大幅に減少し、オンチップ記憶が可能になる。   FIG. 3 shows another order, which is referred to herein as a short seam order. The amount of memory for the seam is proportional to the height of the coding unit (256 in this example) in the case of horizontal transformation, and is proportional to one wavelet tree in the case of vertical transformation. This order greatly reduces the amount of memory required and allows on-chip storage.

図4は、別の短シーム順を示す。メモリ量が2つのウェーブレット木に比例するという負担があるが、ラスタ順に処理される連続した画素の個数が増加する。この順序又はそれに類似した順序によって、シーム(seam)メモリのコストをほとんど増加させることなく、バンドバッファの高速ページモードRAM又はEDO(extended data out)RAMをより効率的に使用できる。この効率向上が得られるのは、殆どのメモリが隣接したメモリロケーションのアクセスのために最適化されているからである。したがって、シーム順により隣接メモリアクセスの使用が増加することで、メモリ使用効率の向上がもたらされる。   FIG. 4 shows another short seam order. There is a burden that the amount of memory is proportional to two wavelet trees, but the number of consecutive pixels processed in raster order increases. This order or similar order allows more efficient use of the band buffer's fast page mode RAM or EDO (extended data out) RAM with little increase in the cost of seam memory. This efficiency gain is obtained because most of the memory is optimized for accessing adjacent memory locations. Therefore, the use of adjacent memory access increases according to the seam order, thereby improving the memory usage efficiency.

<1つのウェーブレット木を得るための計算>
以下の式はTS変換とTT変換の両方を定義する。入力x(n)に対するローパスフィルタの出力であるスムーズ(smooth)信号s(n)と、ハイパスフィルタの出力であるディテール(detail)信号d(n)は次式のように計算される。
<Calculation to obtain one wavelet tree>
The following equations define both TS conversion and TT conversion. A smooth signal s (n) that is the output of the low-pass filter for the input x (n) and a detail signal d (n) that is the output of the high-pass filter are calculated as follows.

Figure 2007267384
Figure 2007267384

逆変換は次式で示される。 The inverse transformation is shown by the following equation.

Figure 2007267384
Figure 2007267384

ただし、p(n)は次式により計算される。 However, p (n) is calculated by the following equation.

Figure 2007267384
Figure 2007267384

TS変換とTT変換はt(n)の定義が異なる。   TS conversion and TT conversion differ in the definition of t (n).

TS変換の場合は次のとおりである。 The case of TS conversion is as follows.

Figure 2007267384
Figure 2007267384

TT変換の場合は次のとおりである。 The case of TT conversion is as follows.

Figure 2007267384
Figure 2007267384

なお、以下の説明において、   In the following explanation,

Figure 2007267384
Figure 2007267384

は切り捨てて丸めること、つまり打ち切りを意味し、床関数と呼ばれることがある。 Means rounding down, that is, censoring, and is sometimes called the floor function.

<TS変換>
6タップ・フィルタと2タップ・フィルタを偶数位置に使用する結果、3つの情報を記憶しなければならない。6タップ・フィルタは2ディレーを必要とする。2タップ・フィルタは、その結果を6タップ・フィルタの結果に対し中心に置くことができるようにするために1ディレーを必要とする。具体的には、2つのs(・)値と、1つのd(・)値又はd(・)計算の部分結果を記憶する必要がある。これらの値のメモリは、フィルタ処理がシームを跨いでも跨がなくても、同じである。
<TS conversion>
As a result of using a 6-tap filter and a 2-tap filter in even positions, three pieces of information must be stored. A 6-tap filter requires 2 delays. A 2-tap filter requires one delay to be able to center its result relative to the result of a 6-tap filter. Specifically, it is necessary to store two s (•) values and one d (•) value or partial result of d (•) calculation. The memory of these values is the same regardless of whether the filtering process crosses the seam or not.

図5から図12は、本発明のウェーブレット木に対し4レベル変換のためのTS変換フィルタを適用する度に得られる結果を示すものである。これらの図において、ローパスフィルタの出力はスムーズ(smooth)の代わりに“s”と表示されており、ハイパスフィルタの出力はデイテール(detail)の代わりに“d”と表示されている。“B”は“d”の計算に用いられる中間値、すなわちx(2n)-x(2n+1)値を意味する。“B”値は順変換時に用いられ、逆変換の場合には、どの計算にも用いられない“d”値がその場所に格納される。記号“sd”は、ある係数が、水平方向のローパスフィルタをかけてから垂直方向のハイパスフィルタをかけた結果であることを示す。“ds”,“dd”,“ss”,“dB”,“sB”の意味も同様である。太線の四角は256個の入力画素に対応する。網掛けした“s”,“ds”,“ss”値は、前のウェーブレット木を使って計算され、カレントのウェーブレット木で用いるために記憶される。   FIGS. 5 to 12 show the results obtained each time a TS transform filter for four-level transform is applied to the wavelet tree of the present invention. In these drawings, the output of the low-pass filter is displayed as “s” instead of smooth, and the output of the high-pass filter is displayed as “d” instead of detail. “B” means an intermediate value used for calculating “d”, that is, an x (2n) −x (2n + 1) value. The “B” value is used at the time of forward conversion, and in the case of reverse conversion, the “d” value that is not used for any calculation is stored at that location. The symbol “sd” indicates that a certain coefficient is the result of applying a low-pass filter in the horizontal direction and then applying a high-pass filter in the vertical direction. The meanings of “ds”, “dd”, “ss”, “dB”, and “sB” are the same. The bold square corresponds to 256 input pixels. The shaded “s”, “ds”, “ss” values are calculated using the previous wavelet tree and stored for use in the current wavelet tree.

順変換の場合、レベル2,レベル3及びレベル4の変換の入力は前レベルで得られた“ss”係数である。“sd”,“ds”,“dd”係数は完成しているから、計算された時に出力可能である。逆変換は全ての計算を逆順に、すなわち、レベルを最初に第4レベル、次に第3レベル、第2レベル、最後に第1レベルの順に、方向を初めに垂直方向、次に水平方向の順にして行う。変換のパス内では、順変換と逆変換のデータフローは同一であり、計算が異なるだけである。   In the case of forward conversion, the input of level 2, level 3 and level 4 conversion is the “ss” coefficient obtained at the previous level. Since the “sd”, “ds”, and “dd” coefficients are complete, they can be output when calculated. Inverse transformation reverses all computations in reverse order, that is, level first to 4th level, then 3rd level, 2nd level, and finally 1st level, direction first to vertical, then horizontal Do in order. In the conversion path, the data flow of the forward conversion and the reverse conversion is the same and only the calculation is different.

<TS変換のハードウェア>
図13は、1次元フィルタを実現するための順/逆フィルタユニットの一実施例のブロック図である。メモリと計算ユニットだけが示されており、ハードワイアド・シフトは示されていない。図13において、フィルタユニット4000は順変換及び逆変換の両方を処理する。他の実施例は順変換と逆変換のために別々のユニットを使用する。順変換の場合、サイズ“n”の入力が用いられ、“s”出力と“d”出力が生成される。逆変換の場合、“s”入力と“d”入力が使われ、別の出力が
生成される。
<TS conversion hardware>
FIG. 13 is a block diagram of an embodiment of a forward / reverse filter unit for realizing a one-dimensional filter. Only memory and computing units are shown, no hardwired shifts are shown. In FIG. 13, the filter unit 4000 processes both forward and inverse transforms. Other embodiments use separate units for forward and inverse transformations. For forward conversion, an input of size “n” is used and an “s” output and a “d” output are generated. In the case of the inverse transformation, the “s” input and the “d” input are used and another output is generated.

加算器4001は、nビットの入力を受け取り、それら入力を加算して出力x(2n+2)+x(2n+3)を出すように接続される。加算器4002は一方のnビット入力を他方のnビット入力から減算し、x(2n+2)-x(2n+3)の値を出力する。加算器4001,4002の出力はマルチプレクサ(mux)4003,4004の一方の入力にそれぞれ接続される。mux4003,4004の他方の入力は、s入力とd入力を受け取るようにそれぞれ接続されている。一実施例では、s入力はnビットであり、d入力はnビットより大きい。   Adder 4001 is connected to receive n-bit inputs, add the inputs and provide output x (2n + 2) + x (2n + 3). The adder 4002 subtracts one n-bit input from the other n-bit input and outputs a value of x (2n + 2) −x (2n + 3). The outputs of the adders 4001 and 4002 are connected to one input of multiplexers (muxes) 4003 and 4004, respectively. The other inputs of mux 4003 and 4004 are connected to receive s and d inputs, respectively. In one embodiment, the s input is n bits and the d input is greater than n bits.

mux4003,4004の出力は、フィルタが順モードか逆モードかを指示する順/逆制御信号によって制御される。順モード、逆モードのいずれにおいても、mux4003の出力はs(n+1)である。他方、mux4004の出力は、順モードではp(n+1)であり、逆モードではd(n+1)である。mux4003,4004の出力は、mux4006から出力されるs(n)のフィードバックとともにレジスタファイル4005の入力と接続される。レジスタファイル4005は1つのウェーブレットの長さ分の各成分のためのエントリーを持つ。データは通常、レジスタファイル4005を通過する。空間位置に基づき、レジスタファイル4005への入力は遅延されて出力される。アドレス入力がレジスタファイル4005の出力を制御する。一実施例では、レジスタファイル4005は、1バンクにつき1つのポートを持つ2つのメモリバンクからなり、2つのメモリバンクを交互にピンポン式にアクセスして使用される。
mux4003の出力はフィルタユニットのs出力でもある。
The outputs of mux 4003 and 4004 are controlled by forward / reverse control signals that indicate whether the filter is in forward mode or reverse mode. In both the forward mode and the reverse mode, the output of the mux 4003 is s (n + 1). On the other hand, the output of the mux 4004 is p (n + 1) in the forward mode and d (n + 1) in the reverse mode. The outputs of mux 4003 and 4004 are connected to the input of register file 4005 together with the feedback of s (n) output from mux 4006. The register file 4005 has an entry for each component for the length of one wavelet. Data typically passes through register file 4005. Based on the spatial position, the input to the register file 4005 is delayed and output. Address input controls the output of register file 4005. In one embodiment, the register file 4005 consists of two memory banks with one port per bank and is used by alternately accessing the two memory banks in a ping-pong manner.
The output of mux 4003 is also the s output of the filter unit.

レジスタファイル4005の出力は、シームバッファ入力4020の外部バッファデータとともにmux4006の入力に接続される。その出力4006Aは、mux4003の出力が2回遅延されたs(n-1)である。出力4006Bは、s(n+1)を1回遅延されたs(n)である。出力4006Cは、順変換のときはp(n)であり、逆変換のときはd(n)である。mux4006はまた、外部にバッファされるシーム(seam)データをシームバッファ出力4021に出力するように制御される。出力4006Cは、加算器4008,4009の一方の入力に接続される。加算器4008,4009の他方の入力はmux4015の出力である。mux4015は境界条件を処理する。境界上では、mux4015は、その入力の一方に布線された0を出力する。実施例によっては、布線の0は別の値を使うように変更されるかもしれない。非境界の条件では、加算器4007により一方の入力s(n+1)から他方の入力s(n-1)を減算することによって出力されるt(n)をmux4015は出力する。   The output of register file 4005 is connected to the input of mux 4006 along with the external buffer data at seam buffer input 4020. The output 4006A is s (n-1) obtained by delaying the output of the mux 4003 twice. The output 4006B is s (n) obtained by delaying s (n + 1) once. The output 4006C is p (n) for forward conversion and d (n) for reverse conversion. The mux 4006 is also controlled to output externally buffered seam data to the seam buffer output 4021. The output 4006C is connected to one input of adders 4008 and 4009. The other input of the adders 4008 and 4009 is the output of the mux 4015. mux 4015 handles boundary conditions. On the boundary, mux 4015 outputs a 0 wired to one of its inputs. In some embodiments, the wire 0 may be changed to use a different value. Under non-boundary conditions, the mux 4015 outputs t (n) output by subtracting the other input s (n−1) from one input s (n + 1) by the adder 4007.

加算器4008は、mux4006の出力4006Cとmux4015の出力を加算し、フィルタユニットのd出力を発生する。
加算器4009は、mux4015の出力からmux4006の出力4006Cを減算する。加算器4009の出力はmux4006の出力4006Bのs(n)と加算器4010によって加算され、フィルタユニットのnビット出力が生成される。加算器4009の出力はまた、加算器4011によってmux4006の出力4006Bであるs(n)から減算され、加算器4011はフィルタユニットの他方のnビット出力を逆向きに出力する。
The adder 4008 adds the output 4006C of the mux 4006 and the output of the mux 4015, and generates the d output of the filter unit.
The adder 4009 subtracts the output 4006C of the mux 4006 from the output of the mux 4015. The output of the adder 4009 is added by s (n) of the output 4006B of the mux 4006 and the adder 4010 to generate an n-bit output of the filter unit. The output of adder 4009 is also subtracted from s (n), which is output 4006B of mux 4006, by adder 4011, and adder 4011 outputs the other n-bit output of the filter unit in the reverse direction.

1つのウェーブレット木より長いシームの場合には、シームデータは、レジスタファイル4005ではなく、オンチップのスタティックRAM(SRAM)又は外部メモリに格納されるかもしれない。mux4006は、このような付加的なシームメモリに対するアクセスを提供する。   For seams longer than one wavelet tree, the seam data may be stored in on-chip static RAM (SRAM) or external memory, rather than in register file 4005. The mux 4006 provides access to such additional seam memory.

フィルタユニット4000のハードウェアコストの大部分は、レジスタファイル4005によるものである。全体の必要メモリ量はフィルタユニットの個数によって決まる。一実施例では、3つの値(s,s,d又はss,ss,sd)を記憶するために合計60ロケーションが必要とされる。それより多数のフィルタユニットが使用される時には、それぞれのフィルタユニットのための必要メモリは、それより少ない。したがって、多数のフィルタユニットを使用するハードウェアコストは低い。   Most of the hardware cost of the filter unit 4000 is due to the register file 4005. The total required memory amount is determined by the number of filter units. In one embodiment, a total of 60 locations are required to store three values (s, s, d or ss, ss, sd). When more filter units are used, less memory is required for each filter unit. Therefore, the hardware cost for using a large number of filter units is low.

高速の逆変換は、復号化の終了と印刷のようなデータ出力動作の開始との間の遅れ時間の短縮を可能にする。これは、伸長のために必要な作業域メモリを減少させ、より大きな符号化単位を可能にする。高速の順変換は、より大きな帯域幅を使用可能な時にフィルタがデータのバーストを処理できるようにし、したがって、ルックアヘッドによってコンテクストモデルがデータを素早く処理できる時には、変換がより多くのデータをコンテクストモデルに供給することを可能にする。符号化期間に順変換がコンテクストモデルに追従できないと、符号化中のディスクの帯域幅が無駄になり、印刷の開始時間を遅らせる。また、多数のフィルタを備えることにより、制御及びデータフローを単純化できる。   Fast inverse transformation allows for a reduction in the delay time between the end of decoding and the start of a data output operation such as printing. This reduces the work area memory required for decompression and allows for larger coding units. Fast forward transforms allow the filter to process bursts of data when more bandwidth is available, and therefore transforms process more data into the context model when the context model can process the data quickly with look ahead. Makes it possible to supply to. If forward conversion cannot follow the context model during the encoding period, the bandwidth of the disk being encoded is wasted and the printing start time is delayed. Also, by providing a large number of filters, control and data flow can be simplified.

図14は本発明による第1レベル順変換の一実施例のブロック図である。図14において、図13で説明したような2つのフィルタユニット401,402は、変換の第1レベルを実行する。フィルタユニット401はレベル1の水平変換を行い、フィルタユニット402はレベル1の垂直変換を行う。一実施例では、第1レベル変換は入力の2×2ブロックを処理する。4つのレジスタ403〜406はフィルタユニット401の出力を遅延させるためのディレーユニットとして働く。これは子ベース順と呼ばれる。レジスタ403はフィルタユニット401のs出力を受け取り、レジスタ404,405はd出力を受け取る。レジスタ404の出力はレジスタ406の入力に接続される。レジスタ403,406の出力はmux407の入力に接続され、フィルタユニット401のs出力とレジスタ405の出力はmux408の入力に接続される。2つのmux407,408は、フィルタユニット401から出力された係数を遅延したものからフィルタユニット402の入力を選択する。   FIG. 14 is a block diagram of an embodiment of the first level forward conversion according to the present invention. In FIG. 14, two filter units 401 and 402 as described in FIG. 13 perform the first level of conversion. The filter unit 401 performs level 1 horizontal conversion, and the filter unit 402 performs level 1 vertical conversion. In one embodiment, the first level transform processes a 2 × 2 block of input. The four registers 403 to 406 function as delay units for delaying the output of the filter unit 401. This is called child-based order. The register 403 receives the s output of the filter unit 401, and the registers 404 and 405 receive the d output. The output of register 404 is connected to the input of register 406. The outputs of the registers 403 and 406 are connected to the input of the mux 407, and the s output of the filter unit 401 and the output of the register 405 are connected to the input of the mux 408. The two muxes 407 and 408 select the input of the filter unit 402 from the delayed coefficients output from the filter unit 401.

フィルタユニット401は、2つの垂直方向に隣接した入力対を連続的に処理して4つの係数を生成し、これら係数は各成分毎にレジスタ403〜406によって適切に遅延されてフィルタユニット402に入力することができる。4つの結果のうちの3つは直ちに出力することができるが、“ss”出力はさらに処理される。   Filter unit 401 sequentially processes two vertically adjacent input pairs to generate four coefficients, which are appropriately delayed by registers 403-406 for each component and input to filter unit 402. can do. Three of the four results can be output immediately, but the “ss” output is further processed.

第1レベル順変換は2×2配置の4画素のグループを処理する。説明のため、第1行に画素a,bがあり、第2行に画素c,dがあるとする。図14の第1レベル変換の動作は次のとおりである。最初のサイクルで、フィルタユニット401によって水平変換が画素a,bに施される。フィルタユニット401はSab,Dabを生成し、Sabはレジスタ403に格納され、Dabはレジスタ404,405に格納される。次のサイクルで、画素c,dがフィルタユニット401によって水平処理が行われ。このフィルタユニット401を適用した結果、ScdとDcdが生成され、Scdはレジスタ403に、Dcdはレジスタ404,405に格納される。このサイクルで、レジスタ403からのSabとレジスタ405からのScdをフィルタユニット402が処理して変換の垂直パスを実行し、SSとSDを生成する。また、この第2サイクル期間中に、値Dabはレジスタ404からレジスタ406へ移動する。次のサイクルで、レジスタ406からの値Dabとレジスタ405からの値Dcdがフィルタユニット402により処理され、フィルタユニット402は出力DS,DDを生成する。同じサイクル中に、フィルタユニット401は次の2×2ブロックのa,b画素を処理する。   The first level forward transformation processes groups of 4 pixels in a 2 × 2 arrangement. For explanation, it is assumed that the pixels a and b are in the first row and the pixels c and d are in the second row. The operation of the first level conversion in FIG. 14 is as follows. In the first cycle, the filter unit 401 performs horizontal conversion on the pixels a and b. The filter unit 401 generates Sab and Dab, Sab is stored in the register 403, and Dab is stored in the registers 404 and 405. In the next cycle, the pixels c and d are horizontally processed by the filter unit 401. As a result of applying the filter unit 401, Scd and Dcd are generated, and Scd is stored in the register 403 and Dcd is stored in the registers 404 and 405. In this cycle, the filter unit 402 processes Sab from the register 403 and Scd from the register 405 to execute a vertical path of conversion, and generates SS and SD. Also during this second cycle, the value Dab moves from register 404 to register 406. In the next cycle, the value Dab from the register 406 and the value Dcd from the register 405 are processed by the filter unit 402, and the filter unit 402 generates outputs DS and DD. During the same cycle, the filter unit 401 processes the next 2 × 2 block of a and b pixels.

図15は、本発明による順変換の一実施例のブロック図である。図15において、レベル1変換部502はレベル1変換を実行する。一実施例では、レベル1変換部502は図14のレベル1変換部からなる。フィルタユニット505は変換のレベル2,3,4を処理する。メモリ503は“ss”係数を、変換を実行するために必要なだけの係数が得られるまで記憶する。記憶する必要がある係数の個数を図60に示す。(各ロケーションは各成分の1つの係数を格納する)
順序ユニット504は、適切な入力をフィルタユニット505にマルチプレクスする。入力バッファ501と出力バッファ506は、この変換部に要求される転送順序とバンドバッファ又はコンテクストモデルに要求される順序との間の整合をとるために必要であろう。
FIG. 15 is a block diagram of an embodiment of forward conversion according to the present invention. In FIG. 15, a level 1 conversion unit 502 performs level 1 conversion. In one embodiment, the level 1 converter 502 comprises the level 1 converter of FIG. The filter unit 505 processes the conversion levels 2, 3, and 4. Memory 503 stores “ss” coefficients until enough coefficients are obtained to perform the transformation. The number of coefficients that need to be stored is shown in FIG. (Each location stores one coefficient for each component)
The order unit 504 multiplexes the appropriate input to the filter unit 505. The input buffer 501 and the output buffer 506 may be necessary to match the transfer order required for this converter and the order required for the band buffer or context model.

逆変換の場合、データフローが逆にされ、レベル4逆変換が行われたのちにレベル3、レベル2、レベル1の変換が順に行われる。レベル2変換の出力は第1レベル変換ハードウェアであるレベルレベル1変換部502へ入力される。また、垂直フィルタ処理が水平フィルタ処理の前に行われる。水平フィルタ処理と垂直フィルタ処理は一方がシーム用の付加的メモリに対するアクセスを必要とする以外は同じであるから、少量のマルチプレキシングによってデータフローを逆にすることが可能である。逆変換の前に、2バイト係数を、2つの信号用ビットを持つ埋め込み形式から普通の2の補数の数値へ変換する必要がある。
図14及び図15に示した要素は、TT変換の場合にも同様に使用できる。
In the case of reverse conversion, the data flow is reversed, and after level 4 reverse conversion is performed, level 3, level 2, and level 1 conversion are performed in order. The output of level 2 conversion is input to the level level 1 conversion unit 502 which is first level conversion hardware. Further, the vertical filter process is performed before the horizontal filter process. Since one of the horizontal filtering and the vertical filtering is the same except that one requires access to additional memory for the seam, it is possible to reverse the data flow with a small amount of multiplexing. Prior to the inverse conversion, it is necessary to convert the 2-byte coefficient from an embedded form with two signal bits to an ordinary two's complement number.
The elements shown in FIGS. 14 and 15 can be used similarly in the case of TT conversion.

<変換タイミング>
図15の順変換部の変換タイミングは、個々のフィルタユニットのタイミングがベースになる。第1のフィルタユニットすなわちフィルタユニット401は水平方向レベル1変換を計算し、第2のフィルタユニットすなわちフィルタユニット402は垂直方向レベル1変換を計算する。第3のフィルタユニットすなわちフィルタユニット505はレベル2〜4の変換を計算し、又は遊休状態である。
<Conversion timing>
The conversion timing of the forward conversion unit in FIG. 15 is based on the timing of each filter unit. The first filter unit or filter unit 401 calculates the horizontal level 1 transform, and the second filter unit or filter unit 402 calculates the vertical level 1 transform. The third filter unit or filter unit 505 computes level 2-4 transforms or is idle.

一実施例では、第3のフィルタユニット(505)は、遊休状態でなければ、偶数クロックサイクル期間中に水平変換を計算し、奇数クロックサイクル期間中に垂直変換を計算する。逆変換のためのタイミングも同様である(ただし逆になる)。   In one embodiment, the third filter unit (505) calculates horizontal conversion during even clock cycles and vertical conversion during odd clock cycles if not idle. The timing for the reverse conversion is the same (but reverse).

以下に述べる例では、ウェーブレット木内の2×2ブロックは、ラスタ順の転置順に処理される。なお、ウェーブレット木内の2×2ブロックがラスタ順に処理されるならば、高速ページモードDRAM/EDO(extended data out)DRAMをサポートするために必要とされる入/出力(I/O)バッファリングがもっと少なくなるかもしれない。   In the example described below, 2 × 2 blocks in a wavelet tree are processed in raster order transposition order. Note that if 2 × 2 blocks in the wavelet tree are processed in raster order, the input / output (I / O) buffering required to support high speed page mode DRAM / EDO (extended data out) DRAM is required. Maybe less.

図16は、係数が出力される時のタイミング図である。以下のタイミングは画素毎のタイミングである。1画素あたり4つの成分がある。   FIG. 16 is a timing chart when the coefficients are output. The following timing is for each pixel. There are four components per pixel.

時刻0から開始 do:
for
(x+0;x<16/2;y++)
for(y=0;y<16;y++)
(x,y)にレベル1水平フィルタを適用
時刻1から開始 do:
for(x=0;y<16/2;y++)/
for(y=0;y<16/2;y++)
for(xx=-1;xx<1;xx++) /* 0=smmoth,-1=previous detail */
(2*x+xx,y)にレベル1垂直フィルタを適用
for(x=0;x<8/2;x++)
時刻18+x*32から開始、偶数時刻にdo:
for(y=0;y<8;y++)
(x,y)にレベル2水平フィルタを適用
for(x=0;x<8/2;x++)
時刻21+x*32から開始、奇数時刻にdo:
for(y=0;y<8/2;y++)
for(xx=-1;xx<1;xx++) /* 0=smooth,-1=previous detail */
(2*x+xx,y)にレベル2垂直フィルタを適用
for(x=0;x<4/2;x++)
時刻66+x*64から開始、偶数時刻にdo:
for(y=0;y<4;y++)
(x,y)にレベル3水平フィルタを適用
for(x=0;x<4/2;x++)
時刻69+x*64から開始、奇数時刻にdo:
for(y=0;y<4/2;y++)
for(xx=-1;xx<1;xx++) /* 0=smooth,-1=previous detail*/
(2*x+xx,y)にレベル3垂直フィルタを適用
時刻138に
(0,0)にレベル4水平フィルタを適用
時刻140に
(0,1)にレベル4水平フィルタを適用
時刻141に
(0,0)にレベル4垂直フィルタを適用 /* smooth */
時刻143に
(-1,0)にレベル4垂直フィルタを適用 /* previous detail */
Start from time 0 do:
for
(x + 0; x <16/2; y ++)
for (y = 0; y <16; y ++)
Apply level 1 horizontal filter to (x, y) Start at time 1 do:
for (x = 0; y <16/2; y ++) /
for (y = 0; y <16/2; y ++)
for (xx = -1; xx <1; xx ++) / * 0 = smmoth, -1 = previous detail * /
Apply level 1 vertical filter to (2 * x + xx, y)
for (x = 0; x <8/2; x ++)
Start from time 18 + x * 32, do:
for (y = 0; y <8; y ++)
Apply level 2 horizontal filter to (x, y)
for (x = 0; x <8/2; x ++)
Start at time 21 + x * 32, do:
for (y = 0; y <8/2; y ++)
for (xx = -1; xx <1; xx ++) / * 0 = smooth, -1 = previous detail * /
Apply level 2 vertical filter to (2 * x + xx, y)
for (x = 0; x <4/2; x ++)
Start at time 66 + x * 64, do:
for (y = 0; y <4; y ++)
Apply level 3 horizontal filter to (x, y)
for (x = 0; x <4/2; x ++)
Start at time 69 + x * 64, do:
for (y = 0; y <4/2; y ++)
for (xx = -1; xx <1; xx ++) / * 0 = smooth, -1 = previous detail * /
Apply level 3 vertical filter to (2 * x + xx, y) at time 138
Apply level 4 horizontal filter to (0,0) at time 140
Apply level 4 horizontal filter to (0,1) at time 141
Apply level 4 vertical filter to (0,0) / * smooth * /
At time 143
Apply level 4 vertical filter to (-1,0) / * previous detail * /

<TT変換>
図17から図24はTT変換の各1次元フィルタ処理の結果(出力)を示す。太線の長方形は、現在処理されている入力画素に対応する1つのウェーブレット木内の係数を示し、網掛けしたものは記憶されている前ウェーブレット木からの係数を示す。“B”と記された値は記憶される中間結果である(また、隣接標本間の差分である)。TT変換はTS変換と似ているが、もっと多くのメモリを必要とする。
<TT conversion>
FIGS. 17 to 24 show the results (outputs) of each one-dimensional filter process of TT conversion. The bold rectangle indicates the coefficient in one wavelet tree corresponding to the currently processed input pixel, and the shaded one indicates the coefficient from the previous wavelet tree stored. The value marked “B” is the stored intermediate result (and also the difference between adjacent samples). The TT transform is similar to the TS transform, but requires more memory.

図25は、10タップの順/逆フィルタユニットのブロック図である。なお、ハードワイアド・シフト(hardwired shfts)と丸めオフセット(rounding offsets)は煩雑さを避けるため示されていない。図25中のmux806を変換境界でのミラー処理のためにも使用できることに注意されたい。ミラー処理を1回行うために、重複ユニットの“d”入力のゼロイング(zeroing)とs(n+2)入力のマルチプレキシングも行う必要がある。   FIG. 25 is a block diagram of a 10 tap forward / reverse filter unit. Note that hardwired shfts and rounding offsets are not shown to avoid complexity. Note that mux 806 in FIG. 25 can also be used for mirroring at the transformation boundary. In order to perform the mirror processing once, it is necessary to perform "d" input zeroing and s (n + 2) input multiplexing of the overlapping unit.

図25において、加算器801,802は、フィルタユニットの順パス期間中に2nビット入力を受け取るように接続される。加算器801は2nビット入力を加算して値を出力し、この値はmux803の一方の入力に与えられる。加算器802は一方の入力を他方の入力から減算し、mux804の一方の入力への出力を発生する。mux803,804はまた、フィルタユニットの逆モード動作のためにs,d入力をれぞれ受け取るように接続される。mux803の出力はnビット入力で、これはs(n+2)であり、mux804の出力はn+1ビット入力で、これは順パスのp(n+2)、逆パスのd(n+2)である。   In FIG. 25, adders 801 and 802 are connected to receive a 2n bit input during the forward pass period of the filter unit. The adder 801 adds 2n-bit inputs and outputs a value, and this value is given to one input of the mux 803. Adder 802 subtracts one input from the other input and generates an output to one input of mux 804. The mux 803 and 804 are also connected to receive s and d inputs, respectively, for reverse mode operation of the filter unit. The output of mux 803 is an n-bit input, which is s (n + 2), and the output of mux 804 is an n + 1-bit input, which is p (n + 2) for the forward path and d (n + for the reverse path 2).

mux803,804の出力はメモリ805の入力に接続される。メモリ805の入力には、mux806の出力806A,806D〜806Fも接続されるる。メモリ805は、その入力を空間配置に基づいて遅延させて出力に出す。一実施例では、メモリ805はレジスタファイル、又は、2つのバンクを有しかつ1バンクあたり1つのポートを持ちピンポン式に動作させられるSRAMから構成される。メモリ805の入力には、mux806へ送出される出力を制御するためにアドレスが入力される。一実施例では、このアドレスは1成分あたり16又は28ロケーションを格納する。   The outputs of mux 803 and 804 are connected to the input of memory 805. Outputs 806A and 806D to 806F of the mux 806 are also connected to the input of the memory 805. The memory 805 delays the input based on the spatial arrangement and outputs it to the output. In one embodiment, the memory 805 is comprised of a register file or SRAM that has two banks and has one port per bank and is operated ping-pong. An address is input to the input of the memory 805 to control the output sent to the mux 806. In one embodiment, this address stores 16 or 28 locations per component.

メモリ805の出力は、シームバッファ入力802より受け取る外部バッファデータとともにmux806の入力に接続される。mux806の出力806Aは、s(n+1)、すなわちmux803の出力のs(n+2)を1回遅延(シングルディレー)させたものである。mux806の出力806Bは、s(n)すなわちmux803の出力を2回遅延(ダブルディレー)させたものである。mux806の出力806Cは、順パスではp(n)すなわちmux806の出力を2回遅延させたものであり、逆パスではd(n)すなわちmux804の出力を2回遅延させたものである。mux806の出力806Eは、s(n-1)すなわちmux803の出力を3回遅延させたものである。最後に、出力806Fは、順パスではp(n+1)、すなわちmux804の出力を1回遅延させたものであり、逆パスではd(n+1)すなわちmux804の出力を1回遅延させたものである。   The output of memory 805 is connected to the input of mux 806 along with external buffer data received from seam buffer input 802. The output 806A of the mux 806 is obtained by delaying s (n + 1), that is, s (n + 2) of the output of the mux 803 once (single delay). The output 806B of the mux 806 is obtained by delaying s (n), that is, the output of the mux 803, twice (double delay). The output 806C of the mux 806 is obtained by delaying the output of p (n), that is, the mux 806 twice in the forward path, and by delaying the output of d (n), that is, the mux 804, in the reverse path. The output 806E of the mux 806 is obtained by delaying s (n-1), that is, the output of the mux 803 three times. Finally, the output 806F is p (n + 1) in the forward path, that is, the output of the mux 804 delayed once, and d (n + 1), that is, the output of the mux 804 is delayed once in the reverse path. Is.

重複ユニット807は、mux803の出力並びにmux806の出力806A,806D,806Eを受け取るように接続される。重複ユニット807は、その入力に応答してt(n)を発生する。重複ユニットの一実施例を図26に示す。   Duplicate unit 807 is connected to receive the output of mux 803 as well as the outputs 806A, 806D, 806E of mux 806. Duplicate unit 807 generates t (n) in response to the input. An example of the overlapping unit is shown in FIG.

重複ユニット807の出力t(n)は加算器808,809に接続される。加算器808はt(n)をmux806の出力806Cと加算し、フィルタユニットのD出力を生成する。加算器809は、mux806の出力806Cをt(n)から減算する。加算器809の出力は加算器810,811の各入力に接続される。加算器810は、加算器809の出力とmux806の出力806Bを加算し、逆フィルタユニットとして動作時のフィルタユニットのnビット出力の1つを発生する。加算器811は、加算器809の出力をmux806の出力806Bから減算し、逆フィルタとして動作時のフィルタユニットの他方の出力を生成する。   The output t (n) of the duplication unit 807 is connected to adders 808 and 809. The adder 808 adds t (n) with the output 806C of the mux 806 to generate the D output of the filter unit. The adder 809 subtracts the output 806C of the mux 806 from t (n). The output of the adder 809 is connected to each input of the adders 810 and 811. The adder 810 adds the output of the adder 809 and the output 806B of the mux 806 to generate one of the n-bit outputs of the filter unit when operating as an inverse filter unit. The adder 811 subtracts the output of the adder 809 from the output 806B of the mux 806, and generates the other output of the filter unit when operating as an inverse filter.

図26は、図25の順/逆フィルタのための重複ユニットの一実施例のブロック図である。図26において、この重複ユニットは加算器901〜906、乗算器907〜909、除算器901からなる。乗算器及び除算器はハードワイアド・シフトであってもよい。   FIG. 26 is a block diagram of one embodiment of an overlapping unit for the forward / reverse filter of FIG. In FIG. 26, this overlapping unit includes adders 901 to 906, multipliers 907 to 909, and a divider 901. The multiplier and divider may be hard wired shift.

図26の重複ユニットは、前述のTT変換のためのt(n)を計算する。図26において、加算器901はs(n+2)入力を受け取り、それをs(n-2)入力から減算するように接続され、加算器903の一方の入力に接続される出力を発生する。加算器902は、s(n-1)を受け取り、それをs(n+1)から減算するように接続される。加算器902の出力は乗算器907,908の入力に接続される。乗算器907は、その入力を2倍する。一実施例においては、この乗算は、入力のビットを1ビット左シフトすることによりなされる。乗算器907の出力は加算器903の他方の入力に接続される。   The overlapping unit in FIG. 26 calculates t (n) for the above-described TT conversion. In FIG. 26, adder 901 receives an s (n + 2) input, is connected to subtract it from the s (n-2) input, and generates an output connected to one input of adder 903. . Adder 902 is connected to receive s (n-1) and subtract it from s (n + 1). The output of the adder 902 is connected to the inputs of multipliers 907 and 908. Multiplier 907 doubles the input. In one embodiment, this multiplication is done by shifting the input bits one bit to the left. The output of the multiplier 907 is connected to the other input of the adder 903.

乗算器908は、加算器902の出力を16倍する。一実施例では、この乗算は、加算器902から出力されるビットを4ビット左シフトすることによりなされる。乗算器908の出力は、加算器905の一方の入力に接続される。加算器903の出力は、加算器904の一方の入力と乗算器909の入力に接続される。   Multiplier 908 multiplies the output of adder 902 by 16. In one embodiment, this multiplication is done by left shifting the bits output from adder 902 by 4 bits. The output of the multiplier 908 is connected to one input of the adder 905. The output of the adder 903 is connected to one input of the adder 904 and the input of the multiplier 909.

乗算器909は加算器903の出力を2倍する。一実施例では、この乗算は、加算器903より出力されるビットを1ビット左シフトすることによりなされる。乗算器909の出力は加算器904の他方の入力に接続される。加算器904の出力は加算器906の入力に接続され、ハードワイヤド入力である32と加算される。加算器906の出力は除算器910の入力に接続される。除算器910は、入力を64で除算する。一実施例では、この除算は、入力のビットを6ビット右シフトすることによりなされる。除算器910の出力はt(n)出力となる。なお、図26は、各出力にカレント値を示している。   Multiplier 909 doubles the output of adder 903. In one embodiment, this multiplication is done by shifting the bits output from adder 903 left by one bit. The output of the multiplier 909 is connected to the other input of the adder 904. The output of the adder 904 is connected to the input of the adder 906 and is added to the hard-wired input 32. The output of adder 906 is connected to the input of divider 910. Divider 910 divides the input by 64. In one embodiment, this division is done by right shifting the bits of the input by 6 bits. The output of the divider 910 is t (n) output. FIG. 26 shows the current value for each output.

可逆TS変換、可逆T変換の両方において、S変換と同様に、ローパスフィルタを、入力信号x(n)のレンジが出力信号s(n)のレンジと同じになるように作ることができる。すなわち、スムーズ(smooth)出力は増大しない。入力信号が8ビット深さのときは、スムーズ出力もbビットである。例えば、信号が8ビット画像のときには、ローパスフィルタの出力も8ビットである。このことは、スムーズ出力が例えば連続的にローパスフィルタをかけることにより更に圧縮されるピラミッドシステムにとって重要な特性である。従来のシステムにおいては、出力信号のレンジが入力信号のレンジより大きいため、連続的にフィルタをかけることが困難である。また、変換の整数演算に系統誤差がないので、ロッシーシステムの全ての誤差を量子化によって制御可能である。さらに、ローパスフィルタは、2つのタップしか持たないため、非重複フィルタになる。この特性は、ハードウェア化のために重要である。   In both the reversible TS conversion and the reversible T conversion, the low-pass filter can be made so that the range of the input signal x (n) is the same as the range of the output signal s (n), as in the S conversion. That is, the smooth output does not increase. When the input signal is 8 bits deep, the smooth output is also b bits. For example, when the signal is an 8-bit image, the output of the low-pass filter is 8 bits. This is an important characteristic for pyramid systems where the smooth output is further compressed, for example by continuous low pass filtering. In conventional systems, the output signal range is larger than the input signal range, making it difficult to filter continuously. In addition, since there is no systematic error in the integer operation of conversion, all errors in the lossy system can be controlled by quantization. Furthermore, since the low-pass filter has only two taps, it becomes a non-overlapping filter. This property is important for hardware implementation.

<埋め込み順序づけ>
本発明では、ウェーブレット分割の結果生成された係数はエントロピー符号化される。本発明では、係数は最初に埋め込み順序付けを施されるが、この埋め込み順序付けにおいては、視覚的に重要な順に係数が順序付けられ、より一般的には、何等かの誤差距離(例えば、歪み距離)に関連して係数が順序付けられる。誤差距離または歪み距離には、ピーク誤差と平均2乗誤差(MSE)が含まれる。また、順序付けは、ビット・シグニフィカンス(bit-significance)空間配置より、データベース照会のための妥当性を優先させるように、また方向別に(垂直、水平、斜め等)、行ってもよい。
<Embedding ordering>
In the present invention, the coefficients generated as a result of wavelet division are entropy coded. In the present invention, the coefficients are first subjected to embedding ordering, in which the coefficients are ordered in a visually significant order, and more generally some error distance (eg, distortion distance). The coefficients are ordered with respect to The error distance or distortion distance includes a peak error and a mean square error (MSE). In addition, the ordering may be performed in such a way that priority is given to the validity for database query over bit-significance space arrangement and for each direction (vertical, horizontal, diagonal, etc.).

データの順序付けは、コードストリームの埋め込み量子化を生じさせるために行われる。本発明においては、2つの順序付け方法が用いられる。すなわち、その一つは係数を順序付けするためのものであり、もう一つは係数中の2進値を順序付けするためのものである。本発明の順序付けはビットストリームを生成し、このビットストリームはその後にバイナリ・エントロピーコーダにより符号化される。   Data ordering is performed to cause embedded quantization of the codestream. In the present invention, two ordering methods are used. That is, one is for ordering the coefficients, and the other is for ordering the binary values in the coefficients. The ordering of the present invention produces a bitstream that is then encoded by a binary entropy coder.

<ビット・シグニフィカンス表現>
原成分が符号無しの時でも、大抵の変換係数は符号付き数値である(少なくとも1つのディテール(detail)フィルタから出力される係数はどれも符号付きである)。一実施例では、係数内の2進値に用いられる埋め込み順序はビットプレーン順である。係数は、符号化される前に、ビット・シグニフィカンス表現で表される。ビット・シグニフィカンス表現は、最上位ビット(MSB)ではなくて、符号ビットが最初の非ゼロの絶対値ビットと一緒にエンコードされる符号・絶対値表現である。すなわち、符号ビットは、絶対値ビット全体の前に来るのではなく、最初の非ゼロの絶対値ビットの次に来る。また、符号ビットは、最上位の非ゼロ絶対値ビットと同じビットプレーン内にあるとみなされる。
<Bit Significance Expression>
Even when the original component is unsigned, most transform coefficients are signed numbers (any coefficient output from at least one detail filter is signed). In one embodiment, the embedding order used for binary values in the coefficients is bit-plane order. The coefficients are represented in bit-significance representation before being encoded. A bit-significance representation is a sign / absolute representation in which the sign bit is encoded with the first non-zero absolute bit, not the most significant bit (MSB). That is, the sign bit does not come before the entire absolute value bit, but comes after the first non-zero absolute value bit. Also, the sign bit is considered to be in the same bit plane as the most significant non-zero absolute value bit.

ビット・シグニフィカンス形式は数値を3組のビット、すなわちヘッドビット、テール(tail)ビット及び符号ビットによって表現する。ヘッドビットとは、MSBから最初の非ゼロ絶対値ビットまでの全てのゼロビット(最初の非ゼロ絶対値ビットを含む)である。最初の非ゼロ絶対値ビットが現れるビットプレーンで、係数の重要度が定まる。テールビットは、最初の非ゼロ絶対値ビットの後からLSBまでの絶対値ビットからなる。符号ビットはただ単に符号(sign)を表わすもので、例えば0は正符号を、1は負符号を表す。MSBが非ゼロビットの、±2のn乗のような数値は、ヘッドビットを1ビットしか持たない。ゼロの係数は、テールビットも符号ビットも持たない。図61は−7から8までの4ビット係数の取り得る全ての値を示す。   The bit-significance format represents a numerical value by three sets of bits: a head bit, a tail bit, and a sign bit. A head bit is all zero bits (including the first non-zero absolute value bit) from the MSB to the first non-zero absolute value bit. The importance of the coefficient is determined by the bit plane in which the first non-zero absolute value bit appears. The tail bit consists of absolute value bits after the first non-zero absolute value bit up to LSB. The sign bit simply represents a sign, for example, 0 represents a positive sign and 1 represents a negative sign. A numerical value such as ± 2 to the nth power with MSB being a non-zero bit has only one head bit. Zero coefficients have no tail bits or sign bits. FIG. 61 shows all possible values of 4-bit coefficients from -7 to 8.

図61において、各段に表されるビット・シグニフィカンス表現は1ビット又は2ビットを含む。2ビットの場合、その最初のビットは最初の1のビットであり、その後に符号ビットが来る。   In FIG. 61, the bit-significance representation represented in each stage includes 1 bit or 2 bits. In the case of 2 bits, the first bit is the first 1 bit followed by the sign bit.

画素の輝度に関して起こるような、値が非負整数の場合、採用し得る順序はビットプレーン順(例えば、最上位ビットプレーンから最下位ビットプレーンへの順序)である。2の補数による負整数も許容される実施例では、符号ビットの埋め込み順序は、整数の絶対値の最初の非ゼロビットと同じである。したがって、1つの非ゼロビットが符号化されるまで、符号ビットは考慮されない。例えば、符号・絶対値表記法によれば、16ビット数−7は
1000000000000111
である。ビットプレーン・ベースでは、初めの12デシジョン(decision)は“非有意”すなわちゼロとなる。最初の1のビットは13番目のデシジョンに見つかる。次に符号ビット(“負”)が符号化される。符号ビットが符号化された後、テールビットが処理される。14番目と15番目のデシジョンは共に“1”である。
If the value is a non-negative integer, such as occurs with respect to pixel brightness, the order that can be employed is the bit plane order (eg, the order from the most significant bit plane to the least significant bit plane). In embodiments where negative integers with two's complement are also acceptable, the sign bit padding order is the same as the first non-zero bit of the absolute value of the integer. Thus, the sign bit is not considered until one non-zero bit is encoded. For example, according to the sign / absolute value notation, the 16-bit number -7 is 1000000000000111.
It is. On a bit plane basis, the first 12 decisions are “insignificant” or zero. The first 1 bit is found in the 13th decision. The sign bit (“negative”) is then encoded. After the sign bit is encoded, the tail bit is processed. The 14th and 15th decisions are both "1".

係数は最上位のビットプレーンから最下位のビットプレーンへと符号化されるので、データのビットプレーン数が正確にわからなければならない。本発明においては、データから計算される、又は画像の深さ及びフィルタ係数から導き出される係数値の絶対値の上境界を見つけることによって、ビットプレーン数が決定される。例えば、その上境界が149のときには、有意な8ビットつまり8つのビットプレーンがある。ソフトウエアの速度では、ビットプレーン符号化を利用できないかもしれない。別の実施例では、ビットプレーンが符号化されるのは、係数が2進数として意味をなす時だけである。   Since the coefficients are encoded from the most significant bit plane to the least significant bit plane, the number of data bit planes must be known accurately. In the present invention, the number of bit planes is determined by finding the upper boundary of the absolute value of the coefficient value calculated from the data or derived from the image depth and the filter coefficients. For example, when its upper boundary is 149, there are significant 8 bits or 8 bit planes. At the speed of software, bitplane coding may not be available. In another embodiment, the bit plane is only encoded when the coefficients make sense as binary numbers.

<係数桁揃え(alignment)>
本発明は、ビットプレーン符号化の前に、係数を相互に桁揃えする。こうするのは、FFTやDCTと同様、異なった周波数部分帯域内の係数は異なった周波数を表すからである。本発明は、係数を桁揃えすることにより量子化を制御する。軽く量子化される係数ほど早いビットプレーン側へ桁揃えされる(例えば左へシフトされる)。よって、ストリームが打ち切られる場合、これらの係数は、それを定義するビットが、より重く量子化された係数に比べ多くなる。
<Coefficient digit alignment>
The present invention aligns the coefficients with each other prior to bit-plane coding. This is because, like FFT and DCT, coefficients in different frequency sub-bands represent different frequencies. The present invention controls quantization by aligning the coefficients. The lighter quantized coefficients are aligned to the faster bit plane side (for example, shifted to the left). Thus, if the stream is censored, these coefficients will have more bits that define them than the more heavily quantized coefficients.

一実施例では、係数はSNR又はMSEからみて最高のレート・歪み性能が得られるように桁揃えされる。MSEのような統計誤差距離から見てほぼ最適の桁揃えを含め、可能な多くの桁揃えがある。あるいは、桁揃えは係数データの物理視覚的(physchovisual)量子化を可能にするかもしれない。桁揃えは画像品質に(換言すればレート・歪み曲線に)相当な影響を及ぼすが、ロスレスシステムの最終的な圧縮率には殆ど影響を与えない。特殊な量子化である注目領域忠実度符号化には、他の桁揃え、すなわち解像度プログレッシブ桁揃えが合うかもしれない。   In one embodiment, the coefficients are aligned for best rate and distortion performance in terms of SNR or MSE. There are many possible alignments, including a near-optimal alignment from a statistical error distance such as MSE. Alternatively, justification may allow physchovisual quantization of the coefficient data. The alignment has a considerable effect on the image quality (in other words on the rate / distortion curve), but has little effect on the final compression ratio of the lossless system. Other digit alignment, that is, resolution progressive alignment, may be suitable for attention area fidelity encoding, which is a special quantization.

桁揃えは、圧縮データのヘッダ中で指示されてもよいし、個別のアプリケーション用に固定されてもよい(すなわちシステムが1つの桁揃えしか持たない)。様々なサイズの係数に関する桁揃えは、符号化器及び復号化器の両方に分かっているので、エントロピーコーダの効率に全く影響を与えない。   Alignment may be indicated in the header of the compressed data, or may be fixed for individual applications (ie the system has only one alignment). The alignment for various sized coefficients is known to both the encoder and the decoder and thus has no effect on the efficiency of the entropy coder.

bビット/画素の画像の2レベルのTS変換及びTT変換分割における各種係数のビット深さが図28に示されている。図29は、本発明において係数桁揃えに用いられる周波数帯域に対する乗数の一例である。係数の桁揃えのために、1-DD係数のサイズが基準として用いられ、このサイズに対するシフトが与えられる。nシフトは2のn乗倍することである。   FIG. 28 shows bit depths of various coefficients in the two-level TS conversion and TT conversion division of an image of b bits / pixel. FIG. 29 is an example of a multiplier for the frequency band used for coefficient alignment in the present invention. For coefficient alignment, the size of the 1-DD coefficient is used as a reference, and a shift relative to this size is given. The n shift is to multiply 2 to the power of n.

一実施例では、最大の係数の絶対値に対して係数をシフトすることにより、画像中の全ての係数の桁揃えを生成する。そして、桁揃え後の係数は、重要度レベルと呼ばれるビットプレーン単位で、最上位の重要度レベルより最下位の重要度レベルへと処理される。符号は、各係数の最後のヘッドビットと一緒に符号化される。符号ビットは最後のヘッドビットの重要度レベルにある。重要なことは、桁揃えがエントロピーコーダへビットが送られる順序を制御するに過ぎないことである。割増0ビットのパッディング、シフト、格納、符号化が実際に行われるわけではない。   In one embodiment, alignment of all coefficients in the image is generated by shifting the coefficients relative to the absolute value of the largest coefficient. The coefficients after the alignment are processed in bit plane units called importance levels from the highest importance level to the lowest importance level. The code is encoded with the last head bit of each coefficient. The sign bit is at the importance level of the last head bit. The important thing is that justification controls the order in which bits are sent to the entropy coder. The padding, shifting, storing, and encoding of the extra 0 bits are not actually performed.

図62に係数桁揃えのための桁揃え数の一例を示す。
様々なサイズの係数に関する桁揃えは、符号化器と復号化器の両方に分かっているのでエントロピーコーダの効率にはまったく影響を与えない。
同じデータセットの符号化単位が異なった桁揃えを持つ場合があることに注意されたい。
FIG. 62 shows an example of the number of digit alignment for coefficient digit alignment.
The alignment for coefficients of various sizes has no effect on the efficiency of the entropy coder since it is known to both the encoder and the decoder.
Note that encoding units of the same data set may have different alignments.

<コードストリームの順序付け及びコンテクストモデル>
図27は、コードストリームの順序付けと、符号化単位内部の順序付けを示す。図27において、ヘッダ1001の後に、符号化単位1002が上の帯域より下の帯域へと順に続く。(単一の画像タイプ用にデザインされたアプリケーションでは、ヘッダ1001はオプションである。)
各符号化単位は、最高重要度のデータ1003、低重要度データ1004、最低重要度のデータ1005からなる。
<Code stream ordering and context model>
FIG. 27 shows the ordering of the code streams and the ordering within the coding unit. In FIG. 27, after the header 1001, the coding unit 1002 is sequentially continued from the upper band to the lower band. (In an application designed for a single image type, header 1001 is optional.)
Each coding unit is composed of data 1003 having the highest importance, data 1004 having a lower importance, and data 1005 having the lowest importance.

コンテクストモデルは、データが符号化される順序とデータの特定ビット用の条件付けの両方を決定する。順序付けについてまず考える。データの最高レベルの順序付けは前述した。データは、変換順にロスレス符号化される「最高重要度のデータ」(MICと呼ぶこともある)と、埋め込み統合型ロスレス/ロッシー方式で符号化される「低重要度のデータ」(LICと呼ぶこともある)とに分けられる。   The context model determines both the order in which data is encoded and the conditioning for specific bits of data. Think about ordering first. The highest level ordering of the data is described above. The data is “less important data” (sometimes referred to as MIC) that is lossless encoded in the order of conversion, and “low importance data” (referred to as LIC) that is encoded using the embedded integrated lossless / lossy method. Sometimes).

各ビットプレーン内で係数が処理される順序は、低い解像度より高い解像度へ向かう順(低い周波数より高い周波数へ向かう順)である。各ビットプレーン内の係数部分帯域の順序は、高いレベル(低解像度、低周波数)より低いレベル(高解像度、高周波数)への順である。各周波数部分帯域の内部において、符号化はある決まった順序でなされる。一実施例では、その順序はラスター順、2×2ブロック順、S字状(serpentine)順、Peanoスキャン順、等々である。   The order in which the coefficients are processed within each bit plane is the order from a lower resolution to a higher resolution (an order from a lower frequency to a higher frequency). The order of the coefficient sub-bands in each bit plane is from higher level (low resolution, low frequency) to lower level (high resolution, high frequency). Within each frequency subband, the encoding is done in a certain order. In one embodiment, the order is raster order, 2 × 2 block order, serpentine order, Peano scan order, and so on.

図27のコードストリームを用いる4レベル分割の場合、その順序は次のとおりである。
4-SS,4-DS,4-SD,4-DD,3-DS,3-SD,3-DD,2-DS,2-SD,2-DD,1-DS,1-SD,1-DD
In the case of 4-level division using the code stream of FIG. 27, the order is as follows.
4-SS, 4-DS, 4-SD, 4-DD, 3-DS, 3-SD, 3-DD, 2-DS, 2-SD, 2-DD, 1-DS, 1-SD, 1- DD

本発明に利用される水平コンテクストモデルの一実施例を以下に説明する。このモデルは、空間的、スペクトル的な係数の従属性に基づいて符号化単位内のビットを利用する。近傍係数及び親係数に関して得られる2進値を、コンテクストを生成するために利用できる。しかし、コンテクストはデコーダビリティと因果関係があり、また、多少は効率的適応と因果関係がある。   One embodiment of the horizontal context model used in the present invention will be described below. This model uses bits in a coding unit based on spatial and spectral coefficient dependencies. The binary values obtained for the neighborhood and parent coefficients can be used to generate the context. However, context has a causal relationship with decodeability, and more or less with efficient adaptation.

本発明は、バイナリ・エントロピーコーダのために、係数により生成された埋め込みビット・シグニフィカンス順のビットストリームをモデル化するためのコンテクストモデルを提供する。   The present invention provides a context model for modeling embedded bit-significance-order bitstreams generated by coefficients for binary entropy coders.

図56は、符号化単位の各係数の近傍係数を示す。図56において、近傍係数は分かりやすい地理的表記法で表されている(例えば、N=北、NE=北東、等々)。図56のPのような、ある係数とカレント・ビットプレーンが与えられると、コンテクストモデルは、そのビットプレーンより前の符号化単位全ての任意の情報を利用できる。このコンテクストモデルの場合、注目係数の親係数も利用される。   FIG. 56 shows the neighborhood coefficients of each coefficient of the coding unit. In FIG. 56, the neighborhood coefficients are represented in an easy-to-understand geographical notation (for example, N = north, NE = northeast, etc.). Given a coefficient and the current bit plane, such as P in FIG. 56, the context model can use any information in all of the coding units prior to that bit plane. In the case of this context model, the parent coefficient of the attention coefficient is also used.

ヘッドビットは、最も圧縮できるデータである。したがって、圧縮率を上げるため、大量のコンテクストもしくは条件付けが使われる。近傍係数又は親係数の値を注目係数の注目ビットのコンテクストを決定するために利用するのではなく、その情報は図30に関連して説明する2つの指示ビットにまとめられる。この情報は、メモリに格納されてもよいし、近傍係数又は親係数から動的に計算されてもよい。   The head bit is the most compressible data. Therefore, a large amount of context or conditioning is used to increase the compression rate. Rather than using the value of the neighborhood coefficient or the parent coefficient to determine the context of the bit of interest of the coefficient of interest, the information is grouped into two indicator bits described in connection with FIG. This information may be stored in memory or calculated dynamically from neighborhood coefficients or parent coefficients.

<メモリからディスクへの埋め込み>
本発明のための埋め込みスキームの一実施例は、データの符号化の開始時にはバンドバッファメモリ全体がデータで塞がっているので、作業域メモリとして利用できる余分なスペースがバンドバッファメモリ内にないという事実をベースにしている。本発明においては、埋め込まれるデータはメモリに格納され、また重要度が低いデータである。それより重要度の高いデータは直接符号化される。重要度が最低のデータはいくつかの最下位ビットからなる。
<Embedding from memory to disk>
One embodiment of the embedding scheme for the present invention is the fact that there is no extra space in the band buffer memory that can be used as work area memory because the entire band buffer memory is filled with data at the start of data encoding. Based on. In the present invention, the data to be embedded is stored in a memory and is data with low importance. Data with higher importance is directly encoded. The least important data consists of several least significant bits.

一実施例において、各係数の一部が後に符号化するためメモリに再書き込みされるときには、的確な符号化を保証するために、符号ビットが分かっていることは勿論、ヘッドビットとテールビットも分からなければならない。一実施例では、ヘッド、テール及び符号ビットの情報を指示するために2ビット又はそれ以上(例えば、3ビット、4ビット、5ビット等々)の指示ビットが用いられる。   In one embodiment, when a portion of each coefficient is rewritten to memory for later encoding, the head bits and tail bits are of course also known to ensure the correct encoding, as well as the head and tail bits. I have to know. In one embodiment, two or more indicator bits (eg, three bits, four bits, five bits, etc.) are used to indicate head, tail and sign bit information.

一実施例では、8ビットのメモリロケーションが使用される場合、2ビットの指示ビットでヘッド、テール及び符号ビットの情報を指示する。2ビットの指示ビットを使用すれば、最低重要度の6重要度レベルを2指示ビットと一緒にメモリに再書き込みすることができる。1つの指示ビットで、6重要度レベルの最上位ビットがヘッドビットであるかテールビットであるかを指示する。第1の指示ビットがヘッドビットであることを指示するときには、第2の指示ビットはその係数の符号である。他方、第1の指示ビットがメモリに再書き込みされたデータの最上位ビットがテールビットであることを指示するときには、第2の指示ビットは自由な指示ビットであり追加的なテール情報、例えば最高重要度のテールビットが最初のテールビットであるか、もっと後のテールビットであるかを指示することができる。   In one embodiment, when 8 bit memory locations are used, 2 indication bits indicate head, tail and sign bit information. If two instruction bits are used, the least important six importance levels can be rewritten to the memory along with the two instruction bits. One indication bit indicates whether the most significant bit of the 6 importance level is a head bit or a tail bit. When indicating that the first indicator bit is a head bit, the second indicator bit is the sign of the coefficient. On the other hand, when the first indicator bit indicates that the most significant bit of the data rewritten to the memory is a tail bit, the second indicator bit is a free indicator bit and additional tail information, e.g. It can indicate whether the importance tail bit is the first tail bit or a later tail bit.

図30は、最高重要度のデータ1301(MICと呼ばれる)と低重要度のデータ1302(LICと呼ばれる)に分割された係数を示す。一実施例では、MICは各係数の上位6ビットからなり、LICは下位6ビットからなる。最高重要度データ1301はコンテクストモデルへ送られ、直ちに係数順に符号化される。このデータについては、外部メモリにバッファリングする必要はない。低重要度データ1302はメモリ(例えばRAM)に書き込まれ、その後、重要度順に符号化され埋め込まれる。また、データ中の2ビットの指示ビットがメモリに書き込まれる。指示ビット1303は、メモリに書き込まれたデータの最上位ビットがヘッドビットであるか否かを示す。指示ビット1304は、係数の符号を与えるか、そのデータに最初のテールビットが含まれているか否かを示す。なお、指示ビットは、低重要度データ1302と連結した形で記憶してもよいし、データ1302を記憶しているメモリと関連した別のメモリ又はメモリロケーションに、係数の各部分に関連した指示ビットを識別できように格納してもよい。   FIG. 30 shows the coefficients divided into highest importance data 1301 (referred to as MIC) and low importance data 1302 (referred to as LIC). In one embodiment, the MIC consists of the upper 6 bits of each coefficient and the LIC consists of the lower 6 bits. The highest importance data 1301 is sent to the context model and immediately encoded in coefficient order. This data need not be buffered in external memory. The low importance data 1302 is written in a memory (for example, RAM), and then encoded and embedded in order of importance. In addition, two instruction bits in the data are written into the memory. The instruction bit 1303 indicates whether the most significant bit of the data written in the memory is a head bit. The instruction bit 1304 gives the sign of the coefficient or indicates whether or not the first tail bit is included in the data. The instruction bits may be stored in a form concatenated with the low importance data 1302 or may be stored in another memory or memory location associated with the memory storing the data 1302 and associated with each part of the coefficient. The bits may be stored so that they can be identified.

図63中の例で2ビットの指示ビットの使い方を示す。図63の欄は図30のデータ形式と一致するように配列されている。符号ビットは“S”で示され、テールビットは“T”で表され、何でも構わないビットは“X”で表され、テールオン(tail-on)ビットの値は“h”又は“t”で表されている。図63において、指示ビットは、h=0,t=1である。この取り決めを、他の実施例において、そのまま用いてよい。一実施例では、図63の0の符号ビットは正符号を示し、1の符号ビットは負符号を示す。その逆の割り当てを用いてもよい。なお、符号ビットは常に最初の“on”ビットと一緒に保存されるので、同時に符号化して埋め込むことができる。
図63において、“T”は係数の対応ビットを指し、0又は1である。
The example in FIG. 63 shows how to use 2-bit instruction bits. The columns in FIG. 63 are arranged to match the data format in FIG. The sign bit is indicated by “S”, the tail bit is indicated by “T”, the arbitrary bit is indicated by “X”, and the value of the tail-on bit is “h” or “t”. It is represented. In FIG. 63, the instruction bits are h = 0 and t = 1. This convention may be used as is in other embodiments. In one embodiment, the 0 sign bit in FIG. 63 indicates a positive sign and the 1 sign bit indicates a negative sign. The reverse assignment may be used. Note that the sign bit is always stored with the first “on” bit, so it can be encoded and embedded at the same time.
In FIG. 63, “T” indicates the corresponding bit of the coefficient and is 0 or 1.

一実施例では、復号化期間中に、最高重要度のデータは、それが復号化される時にメモリに書き込まれ、同時に、低重要度データを記憶するためにメモリを初期化するため、適当な2つの指示ビットがメモリに書き込まれる。(係数の桁揃えによっては最高重要度データの一部が次のバイトにも格納されることがある)この初期化によって、低重要度データを1度に1ビットプレーンずつ復号化するのに、1係数あたり1バイト(実施例によっては、1バイト未満)を読み出して書き込むだけでよい。係数が読み出されて逆変換に入力される時に、その係数は普通の数値形式(例えば2の補数形式)に変換される。   In one embodiment, during the decryption period, the most important data is written to memory as it is decrypted, and at the same time it is suitable to initialize the memory to store the less important data. Two instruction bits are written to the memory. (Depending on the alignment of the coefficients, part of the highest importance data may also be stored in the next byte.) This initialization allows the low importance data to be decoded one bit plane at a time. It is only necessary to read and write 1 byte per coefficient (less than 1 byte in some embodiments). When a coefficient is read and input to the inverse transform, the coefficient is converted to a normal numerical format (eg, 2's complement format).

“最高重要度データ”と“低重要度データ”のほかに、符号化時に捨てられる又は量子化されるデータもあるかもしれない。係数は、量子化スケールファクタ(2のQ-1乗)で割られる。(係数の量子化はJPEG規格に述べられている)
発明においては、除算はビットプレーンの切り捨てによって行われるので、量子化は2のベキ乗である。例えば、Q=1は1による除算を意味するから、係数は変化しないが、Q=2は2による除算を意味するから、1つのビットプレーンが切り捨てられるということである。これらの除算は、シフト例えば、Q=2のときは1ビット位置分のシフト)によって行ってもよい。図31と図32は、様々な部分帯域について、量子化と係数桁揃えの両方を考慮した最高重要度データと低重要度データの形式を示す。
In addition to “highest importance data” and “low importance data”, some data may be discarded or quantized during encoding. The coefficient is divided by the quantization scale factor (2 to the power of Q-1). (Coefficient quantization is described in the JPEG standard)
In the invention, since the division is performed by truncating the bit plane, the quantization is a power of two. For example, since Q = 1 means division by 1, the coefficient does not change, but since Q = 2 means division by 2, one bit plane is truncated. These divisions may be performed by a shift, for example, a shift of one bit position when Q = 2. FIG. 31 and FIG. 32 show the formats of the highest importance data and the low importance data in consideration of both quantization and coefficient alignment for various partial bands.

図31は、データが切り捨てられないロスレスのケースを示す。JPEGの規約にならい、これを量子化A=1と呼ぶ。というのは、現実の係数が1で除算される(損失なし)であるからである。最高重要度データは網が掛けられていない。低重要度データは網掛けされている。   FIG. 31 shows a lossless case where data is not truncated. Following the JPEG convention, this is called quantization A = 1. This is because the actual coefficient is divided by 1 (no loss). The highest importance data is not shaded. Low importance data is shaded.

図32は、1ビットプレーン分のデータが切り捨てられたケースを示す。1つのビットプレーンを切り捨てることは2で割ることと等価であるので、Q=2である。捨てられたビットプレーンは黒で表されている。   FIG. 32 shows a case where data for one bit plane is truncated. Since truncating one bit plane is equivalent to dividing by 2, Q = 2. The discarded bit plane is represented in black.

図31と図32に示されているもののほかに、最高重要度データにはSS係数も含まれることに注意されたい。係数ビットは8ビットデータとして示されているが、可逆色空間を使用するときには8ビットのデータが必要となり、色差係数のサイズが1ビットだけ増加する。   Note that in addition to those shown in FIGS. 31 and 32, the highest importance data includes SS coefficients. The coefficient bits are shown as 8-bit data, but when using the reversible color space, 8-bit data is required, and the size of the color difference coefficient increases by 1 bit.

本発明において、符号ビットのコンテクストモデルは、最後のヘッドビットの次の符号の符号化を含む。N係数が正であるか負であるか、符号がまだ符号化されていないか否かによって、符号に関するコンテクストは3つ存在する。あるいは、符号について1つのコンテクストだけを用いてもよい、すなわち符号を常に50%として符号化してもよい。   In the present invention, the code bit context model includes the encoding of the code following the last head bit. There are three contexts related to the sign, depending on whether the N coefficient is positive or negative and whether the sign is not yet encoded. Alternatively, only one context may be used for the code, i.e. the code may always be encoded as 50%.

<ウェーブレット係数の符号化順序>
ウェーブレット係数の符号化順序の一例を次の擬似コードにまとめる:
最高重要度データを符号化
最初のデータのある低重要度ビットプレーンの位置を符号化
for各低重要度データビットプレーン do
1つの低重要度データビットプレーンを符号化
<Coding order of wavelet coefficients>
An example of the encoding order of wavelet coefficients is summarized in the following pseudo code:
Encode highest importance data Encode the location of the low importance bitplane with the first data
for each low importance data bitplane do
Encode one low-importance data bitplane

最高重要度データが符号化される時に、0のヘッドビットだけでない低重要度データの最初のビットプレーンを、各係数について求める。こうすることで、符号化器及び復号化器が低重要度データのビットプレーン全体についてルックアヘッド(look-ahead)をすることが可能になる。このことは、全情報がK係数にありCMY係数が全て0の白黒データ単位の符号化の場合に有用である。ビットプレーンを個別的に符号化しないことは、特にR2(7)が使用可能な最長のランレングスコードである場合に、圧縮率を向上させる。(“R2”コードについては、米国特許第5,381,145号及び同5,583,500号を参照されたい)
しかし、4つの並列符号化コア(core)が同時に成分を処理するときには、処理速度は符号化すべき最多のビットプレーンを持つ成分によって決まる。他の成分に割り当てられたコアは、符号化されないビットプレーンの期間中、遊休状態である。
When the highest importance data is encoded, the first bit plane of low importance data that is not only zero head bits is determined for each coefficient. This allows the encoder and decoder to look-ahead over the entire bit plane of low importance data. This is useful in the case of encoding in black and white data units in which all information is in K coefficients and CMY coefficients are all 0. Not encoding the bit planes individually improves the compression rate, especially when R2 (7) is the longest run-length code that can be used. (See US Pat. Nos. 5,381,145 and 5,583,500 for “R2” code)
However, when four parallel coding cores process components simultaneously, the processing speed is determined by the component with the most bit planes to be encoded. The cores assigned to other components are idle during the period of the uncoded bitplane.

前記擬似コードの処理の一実施例を説明するフローチャートが図33に示されている。図33において、コンテクストモデルはまず最高重要度部分(MIC)を符号化する(処理ブロック1401)。MICの符号化後、処理ロジックは低重要度部分(LIC)の最初のデータを持つビットプレーンの位置を符号化する(処理ブロック1402)。これは符号化単位全体に対するものである。LICに6個のビットプレーンがあるときには、そのビットプレーンのどれもデータを含まないか、1個、又は2個、3個、4個、5個あるいは6個のビットプレーンがデータを含む。次に処理ロジックは、カレントLICビットプレーン変数に、この最初のデータを持つLICビットプレーンを設定する(処理ブロック1403)。   FIG. 33 is a flowchart for explaining an example of the pseudo code processing. In FIG. 33, the context model first encodes the highest importance part (MIC) (processing block 1401). After encoding the MIC, processing logic encodes the location of the bit plane with the first data in the low importance part (LIC) (processing block 1402). This is for the entire coding unit. When there are 6 bit planes in the LIC, none of the bit planes contain data, or 1 or 2, 3, 4, 5 or 6 bit planes contain data. Next, processing logic sets the LIC bit plane having this first data in the current LIC bit plane variable (processing block 1403).

データのあるLICビットプレーンが全て符号化されたか判定する(処理ブロック1404)。その全部が符号化済みならば処理は終了するが、そうでなければ1つのLICビットプレーンを符号化し(処理ブロック1405)、カレントLICビットプレーン変数に、次のLICビットプレーンを設定する(処理ブロック1406)。そして、処理は処理ブロック1404にループバックする。   It is determined whether all LIC bitplanes with data have been encoded (processing block 1404). If all of them have been encoded, the process ends. Otherwise, one LIC bit plane is encoded (processing block 1405), and the next LIC bit plane is set in the current LIC bit plane variable (processing block). 1406). Processing then loops back to processing block 1404.

<最高重要度データの符号化順序>
最高重要度データの符号化順序の一実施例は次の通りである:
for 各木 do
SS係数を符号化
MICルックアヘッドを実行(又は木ルックアヘッドを実行)
for 各非SS係数
for データのある各ビット(プレーン)do
ヘッドビット又はテールビットを符号化
if 係数は0でない
符号ビットを符号化
<Encoding order of highest importance data>
An example of the encoding order of the highest importance data is as follows:
for each tree do
Encode SS coefficient
Perform MIC look-ahead (or perform tree look-ahead)
for each non-SS coefficient
for each bit (plain) with data do
Encode head bit or tail bit
if coefficient is not 0
Encode the sign bit

最高重要度データは、1ウェーブレット木が一度に処理される。繰り返しになるが、最高重要度データは埋め込まれない。MICルックアヘッドにより、ウェーブレット木内のSSでない全係数についてヘッドビットがオールゼロでないビットプレーンを決定する。一実施例では、個別に符号化すべき最初のビットプレーンを識別するのに4ビット数値で十分である。図34に示す他の実施例においては、1つのビットが、第2分割のSS以外の全ての係数1501(網掛け領域)が0であることを示すために用いられ、もう1つのビットが、第1分割のSS以外の全ての係数1503が0であることを示すために用いられる。これら2ビットが、最初のビットプレーンの識別のために用いられる4ビットに加えて用いられる。   For the highest importance data, one wavelet tree is processed at a time. Again, the highest importance data is not embedded. The MIC look-ahead determines a bit plane whose head bits are not all zero for all non-SS coefficients in the wavelet tree. In one embodiment, a 4-bit number is sufficient to identify the first bit plane to be encoded separately. In another embodiment shown in FIG. 34, one bit is used to indicate that all the coefficients 1501 (shaded area) except the second division SS are 0, and the other bit is Used to indicate that all coefficients 1503 other than the first division SS are zero. These 2 bits are used in addition to the 4 bits used to identify the first bit plane.

他の実施例においては、SS係数が符号化され、次に木全体について非ゼロのヘッドビットを持つ最初のビットプレーンが符号化される、木ルックアヘッドが用いられるかもしれない。   In other embodiments, a tree look-ahead may be used in which SS coefficients are encoded and then the first bit plane with non-zero head bits for the entire tree is encoded.

SS係数と最初のビットプレーンの符号化のために条件付けが利用されるときにコンテクスト再来遅延を補償するため、SS係数のビット(可逆色空間を使用するなら9ビット)の実際の符号化/復号化とルックアヘッド値を交替させてよい。条件付けが利用されないときには、交替は必要とされない。   Actual encoding / decoding of SS coefficient bits (9 bits if reversible color space is used) to compensate for context repeat delay when conditioning is used for encoding SS coefficients and the first bitplane And look ahead values may be alternated. When conditioning is not used, no alternation is required.

前述のように、本発明のコンテクストモデルはルックアヘッドを利用する。このルックアヘッドの一例が、最高重要度データすなわち最高重要度部分(MIC)に対し用いられてよい。一実施例では、図34に示すように、各木のために6ビット、すなわち、最大ビットプレーンのために4ビット、レベル0オールゼロのビットプレーンのために1ビット、レベル1オールゼロのビットプレーンのために1ビット、が用いられる。最大ビットプレーンがゼロのときには、余分な2ビットが冗長であるが大したことではない。別の方法では、”(孤立した)ゼロ/非ゼロ”を判定するため適応的符号化判定が用いられる。非ゼロ係数については、以下によりさらに記述される:
・係数の値と符号を決定するためのM項演算(合計:2サイクル/係数)
・“±1/非±1”を判定するため適応的符号化判定が用いられる。
絶対値が1のときに符号を求め、絶対値が1を超えるときに符号と値を求めるために、もう1サイクル使用される。(合計:3サイクル/係数)
・同様に、“±1/非±1”、“±2,3/非±2,3”等々を合計4サイクル/係数で行うことができる。
・以下の手順:
if MICビットプレーン全部は0でない then
デシジョン“-1,0,1”又は“その他”を適応符号化
if “-1,0,1” then
“0”又は“-1,+1”を適応符号化
if “-1,+1” then
符号ビットを記述
else
“-3,-2,2,3”又は“その他”を適応符号化
if “-3,-2,2,3” then
“-2,2”又は“-3,3”を1ビットで記述
符号ビットを記述
else
木に対し決定された最大ビット数で値を記述
符号ビットを記述
As described above, the context model of the present invention uses look-ahead. An example of this look-ahead may be used for highest importance data or highest importance part (MIC). In one embodiment, as shown in FIG. 34, 6 bits for each tree, ie, 4 bits for the maximum bit plane, 1 bit for the level 0 all-zero bit plane, and 1 bit for the level 1 all-zero bit plane. One bit is used for this purpose. When the maximum bitplane is zero, the extra 2 bits are redundant but not a big deal. Another method uses adaptive coding decisions to determine “(isolated) zero / non-zero”. Non-zero coefficients are further described by:
-M-term operation to determine coefficient value and sign (total: 2 cycles / coefficient)
An adaptive coding decision is used to determine “± 1 / non ± 1”.
Another cycle is used to determine the sign when the absolute value is 1 and to determine the sign and value when the absolute value exceeds 1. (Total: 3 cycles / coefficient)
Similarly, “± 1 / non ± 1”, “± 2,3 / non ± 2,3”, etc. can be performed at a total of 4 cycles / coefficient.
・ The following procedure:
if MIC bitplane is not all zero then
Adaptive coding of decision "-1,0,1" or "other"
if “-1,0,1” then
Adaptive encoding of “0” or “-1, + 1”
if “-1, + 1” then
Describe the sign bit
else
Adaptive encoding of “-3, -2,2,3” or “others”
if “-3, -2,2,3” then
"-2,2" or "-3,3" is described with 1 bit
Describe the sign bit
else
Describe the value with the maximum number of bits determined for the tree
Describe the sign bit

なお、1ビット又は複数ビットの”記述”は、適応符号化でも、50%確率での符号化でも、単なる符号化データストリームへのコピーでもよい。   The 1-bit or multiple-bit “description” may be adaptive coding, coding with 50% probability, or simply copying to a coded data stream.

全部又は大部分のビットプレーンを個別に符号化すべきときには、変換のいくつかのレベルに桁揃えのため利用されないビットプレーンがあり、この利用されないビットプレーンは符号化されない。ヘッドビット及びテールビットについてのビット−コンテクスト遅延(bit to context delay)の処理については多くの選択肢がある。一つの方法は、3つの係数、DD,SD及び,DSを交互に処理する方法である。非0係数の符号ビットは係数の最後に符号化できる。これは、最高重要度データは全部が常にロスレスであり、最初の”オン”ビットのすぐ後に続く必要はないからである。   When all or most of the bit planes are to be encoded individually, there are bit planes that are not used for alignment at some level of conversion, and this unused bit plane is not encoded. There are many options for handling bit-to-context delay for head bits and tail bits. One method is a method of alternately processing three coefficients, DD, SD, and DS. The sign bit of the non-zero coefficient can be encoded at the end of the coefficient. This is because the highest importance data is always lossless and does not need to follow immediately after the first “on” bit.

最高重要度部分(MIC)を符号化するための擬似コードを説明するフローチャートの一例が図35に示されている。図35において、処理ロジックが最初の木をカレント木とすることから処理が始まる(処理ブロック1601)。次に、処理ロジックはSS係数を符号化する(処理ブロック1602)。SS係数の符号化後、処理ロジックは当該木のMIC中のデータを持つ最初のビットプレーンの位置を符号化する(処理ブロック1603)、すなわちMICルックアヘッドを行う。   An example of a flowchart describing the pseudo code for encoding the highest importance part (MIC) is shown in FIG. In FIG. 35, processing begins when the processing logic sets the first tree as the current tree (processing block 1601). Next, processing logic encodes the SS coefficient (processing block 1602). After encoding the SS coefficient, processing logic encodes the position of the first bit plane with data in the MIC of the tree (processing block 1603), i.e., performs MIC look-ahead.

次に、処理ロジックは、木全部のMICがゼロであるか判定する(処理ブロック1604)。木全部のMICがゼロならば処理ロジックは処理ブロック1614に進むが、そうでなければ、処理ブロック1605に移行し、処理ロジックは当該木の最初の非SS係数をカレント係数にする。   Next, processing logic determines whether the MIC of the entire tree is zero (processing block 1604). If the MIC for the entire tree is zero, processing logic proceeds to processing block 1614, otherwise, processing logic moves to processing block 1605 where processing logic makes the first non-SS coefficient of the tree the current coefficient.

カレント係数を木の最初の非SS係数に設定した後、処理ロジックは、データを持つ最初のビットプレーンをカレントビットプレーンにする(処理ブロック1606)。次に処理ロジックは、カレントビットプレーンのカレント係数の1つのビットを符号化する(処理ブロック1607)。その後、処理ロジックは、その全てのビットプレーンが符号化されたか判定する(処理ブロック1608)。ビットプレーン全部の符号化が済んでいないときには、処理ブロックは次のビットプレーンをカレントビットプレーンとし(処理ブロック1609)、処理ブロック1607へ進む。全部のビットプレーンが符号化されてしまったときには、処理ロジックはカレント係数がゼロであるか判定する(処理ブロック1610)。カレント係数がゼロでなければ、処理ロジックは符号ビットを符号化し(処理ブロック1611)、処理ブロック1613へ進む。カレント係数がゼロならば、処理ロジックは処理ブロック1613へ進む。   After setting the current coefficient to the first non-SS coefficient of the tree, processing logic makes the first bit plane with data the current bit plane (processing block 1606). Next, processing logic encodes one bit of the current coefficient of the current bit plane (processing block 1607). Thereafter, processing logic determines whether all of the bitplanes have been encoded (processing block 1608). If the entire bit plane has not been encoded, the processing block sets the next bit plane as the current bit plane (processing block 1609) and proceeds to processing block 1607. When all of the bit planes have been encoded, processing logic determines whether the current coefficient is zero (processing block 1610). If the current coefficient is not zero, processing logic encodes the sign bit (processing block 1611) and proceeds to processing block 1613. If the current coefficient is zero, processing logic proceeds to processing block 1613.

処理ブロック1613で、処理ロジックは木内の全係数の符号化が済んだか判定する。木の全係数の符号化が済んでいなければ、処理ロジックは木内の次の係数をカレント係数とし(処理ブロック1612)、処理ブロック1606へ進む。木内の全係数が符号化されてしまったときには、処理ロジックは全ての木の符号化が済んだか判定する(処理ブロック1614)。全ての木が符号化されたときには処理が終了するが、そうでなければ処理ブロック1615に進み、処理ロジックは次の木をカレント木とし、処理ブロック1602に移行する。   At processing block 1613, processing logic determines whether all the coefficients in the tree have been encoded. If all the coefficients of the tree have not been encoded, processing logic sets the next coefficient in the tree as the current coefficient (processing block 1612) and proceeds to processing block 1606. When all the coefficients in the tree have been encoded, processing logic determines whether all trees have been encoded (processing block 1614). If all trees have been encoded, processing ends; otherwise, processing continues at processing block 1615 where processing logic sets the next tree as the current tree and transitions to processing block 1602.

図36は、最高重要度データの符号化パス期間に利用されるフォーマッティング・ユニット及びコンテクストモデルの一実施例のブロック図である。図36において、バレルシフタ1701は、最高重要度データが最小ディスク帯域を超えないようにしてロスレス圧縮を保証するため、係数の絶対値と符号化時に用いられた量子化レベルを受け取るように接続される。このように、量子化レベルでバレルシフタ1701を制御する。一実施例では、バレルシフタ1701は、絶対値ビットを0,1,2又は3ビットだけシフトして1,2,4又は8の量子化をサポートする。他の実施例では、これより低い又は高い量子化数がサポートされる、例えば2量子化をサポートするだけである。   FIG. 36 is a block diagram of one embodiment of a formatting unit and context model used during the encoding pass period of the highest importance data. In FIG. 36, a barrel shifter 1701 is connected to receive the absolute value of the coefficients and the quantization level used during encoding to ensure lossless compression so that the highest importance data does not exceed the minimum disk bandwidth. . In this way, the barrel shifter 1701 is controlled at the quantization level. In one embodiment, barrel shifter 1701 supports 1, 2, 4 or 8 quantization by shifting absolute value bits by 0, 1, 2 or 3 bits. In other embodiments, lower or higher quantization numbers are supported, for example only 2 quantization is supported.

バレルシフタ1701の出力は、下位の6ビットプレーンすなわち低重要度データと、残りの高位ビットプレーンすなわち最高重要度データとからなる。他の実施例では、これら2出力を生じさせるために単純な分離メカニズムが用いられる。   The output of the barrel shifter 1701 is composed of lower 6 bit planes, ie, low importance data, and the remaining high order bit planes, ie, highest importance data. In other embodiments, a simple separation mechanism is used to produce these two outputs.

バレルシフタ1701の両出力は先頭ビットプレーンユニット1702に入力され、データを含んでいるビットプレーンが判別される。先頭ビットプレーンユニット1702は、低重要度データ処理時に用いられる全ての符号化単位について、最初の”オン”ビットを持つビットプレーンを見つけるために利用される。(図27参照)。もう一つの先頭ビットプレーンユニット1706も、バレルシフタ1701から出力される最高重要度データを受け取るよう接続されている。先頭ビットプレーンユニット1706は、高重要度データ処理時に各木に対し利用される。先頭ビットプレーンユニットの一実施例を、図37を参照して後述する。   Both outputs of the barrel shifter 1701 are input to the head bit plane unit 1702, and a bit plane including data is discriminated. The first bit plane unit 1702 is used to find a bit plane having the first “on” bit for all coding units used during low importance data processing. (See FIG. 27). Another leading bit plane unit 1706 is also connected to receive the highest importance data output from the barrel shifter 1701. The head bit plane unit 1706 is used for each tree during high importance data processing. An example of the first bit plane unit will be described later with reference to FIG.

バレルシフタ1701は比較ユニット1703,1704にも接続される。これら比較ユニット1703,1704は最高重要度データに対し2つの比較を行い、低重要度データのための2ビットの指示情報を発生する。比較ユニット1703は、最高重要度データが0であるか判定することにより、テールビットが既に出現したか(すなわち、符号化がもうテール内であるか)指示する。比較ユニット1703の出力がテールオンビットである。比較ユニット1704は、最高重要度データが1であるか否か判定する。最高重要度データが1であると、図63から、出力は0である。比較ユニット1704の出力は、マルチプレクサ(MUX)1705の一方の入力に接続される。mux1705の他方の入力は符号ビットを受け取るように接続されている。mux1705のセレクト入力は比較ユニット1703の出力によって制御され、比較ユニット1703の出力がテールビットであると指示するときにきmux1705の出力は“先頭テール”ビット1304である。しかし、比較ユニット1703の出力がヘッドビットであると指示するときには、mux1705は符号を出力するように制御される。   Barrel shifter 1701 is also connected to comparison units 1703 and 1704. These comparison units 1703 and 1704 perform two comparisons on the highest importance data and generate 2-bit instruction information for the low importance data. The comparison unit 1703 indicates whether the tail bit has already appeared (ie, whether the encoding is already in the tail) by determining whether the highest importance data is zero. The output of the comparison unit 1703 is a tail on bit. The comparison unit 1704 determines whether or not the highest importance data is 1. If the highest importance level data is 1, the output is 0 from FIG. The output of the comparison unit 1704 is connected to one input of a multiplexer (MUX) 1705. The other input of mux 1705 is connected to receive the sign bit. The select input of mux 1705 is controlled by the output of comparison unit 1703, and the output of mux 1705 is a “leading tail” bit 1304 when indicating that the output of comparison unit 1703 is a tail bit. However, when the output of the comparison unit 1703 indicates that it is a head bit, the mux 1705 is controlled to output a code.

一実施例では、比較ユニット1703,1704は単純なビット比較器により構成される。   In one embodiment, the comparison units 1703 and 1704 are comprised of simple bit comparators.

メモリ1707が、符号ビット、バレルシフタ1701より出力される最高重要度データ、及び先頭ビットプレーンユニット1706の出力を受け取るように接続される。メモリ1707は、親と近傍の情報を条件付けに利用できるよう係数を遅延させるために利用される。メモリ1707の構成は後述する。   A memory 1707 is connected to receive the sign bit, the highest importance data output from the barrel shifter 1701, and the output of the first bit plane unit 1706. Memory 1707 is used to delay the coefficients so that parent and neighbor information can be used for conditioning. The configuration of the memory 1707 will be described later.

コンテクストモデル(CM)1710〜1712は符号、ヘッド、テール、その他のビットのための条件付けを与える。これら各コンテクストモデルについては後述する。   The context model (CM) 1710-1712 provides conditioning for codes, heads, tails, and other bits. Each of these context models will be described later.

図37は、先頭ビットプレーンユニットの一実施例を示す。図37において、先頭ビットプレーンユニット1800は、係数とレジスタ1802の出力からのフィードバックを受け取るように接続されたORゲート1801を有する。ORゲート1801の出力はレジスタ1802の入力に接続される。レジスタ1802は、木スタート/符号化単位リセット指示によって制御される。レジスタ1802の出力はプライオリティエンコーダ1803に接続される。プライオリティエンコーダ1803の出力は、先頭ビットプレーンユニット1800の出力である。   FIG. 37 shows an embodiment of the head bit plane unit. In FIG. 37, the leading bit plane unit 1800 has an OR gate 1801 connected to receive the coefficients and feedback from the output of the register 1802. The output of the OR gate 1801 is connected to the input of the register 1802. The register 1802 is controlled by a tree start / coding unit reset instruction. The output of the register 1802 is connected to the priority encoder 1803. The output of the priority encoder 1803 is the output of the first bit plane unit 1800.

初めに、レジスタ1802がクリアされる。レジスタ1802の各ビットは、ORゲート1801によって入力係数の各ビットと論理和がとられる。係数の0の各ビットについては、レジスタ1802の値は現在の値のままであり、それがプライオリティエンコーダ1803へ出力される。係数の1の各ビット(例えば先頭の1)については、ORゲート1801のレジスタ1802への出力は1であり、これがプライオリティエンコーダ1803へ入力される。そして、プライオリティエンコーダ1803は先頭の1を見つけるが、これが係数の1を持つ最初のビットプレーンである。   Initially, register 1802 is cleared. Each bit of the register 1802 is ORed with each bit of the input coefficient by an OR gate 1801. For each bit of coefficient 0, the value in register 1802 remains the current value and is output to priority encoder 1803. For each bit of coefficient 1 (for example, the leading 1), the output to the register 1802 of the OR gate 1801 is 1, and this is input to the priority encoder 1803. The priority encoder 1803 finds the leading 1 and this is the first bit plane with a coefficient of 1.

<低重要度データの処理順序>
最低重要度データの各ビットプレーンは以下のように処理される:
for 各木 do
for 各係数 do
if ルックアヘッド区間の始まり
ルックアヘッドを実行
if ルックアヘッドはアクティブでない
ヘッドビット又はテールビットを符号化
if 先頭の“オン”ビット
符号ビットを符号化
<Processing order of low importance data>
Each bit plane of the lowest importance data is processed as follows:
for each tree do
for each coefficient do
if Start of look-ahead interval
Perform look ahead
if lookahead is not active
Encode head bit or tail bit
if First “on” bit
Encode the sign bit

LICビットプレーンの符号化プロセスの一実施例を図38のフローチャートに示す。LICビットプレーン符号化プロセスは、処理ロジックが最初の木をカレント木にすることから始まる(処理ブロック1901)。次に、処理ロジックは、カレント木の最初の非SS係数をカレント係数とする(処理ブロック1902)。カレント木の最初の非SS係数をカレント係数とした後、処理ブロックは符号化がルックアヘッド区間の開始点に対するものか判定する(処理ブロック1903)。符号化プロセスがルックアヘッド区間の開始点にあるきには、処理ロジックはルックアヘッドを行う(処理ブロック1904)、そして処理ブロック1905に進む。符号化プロセスがルックアヘッド区間の開始点にないときには、処理ロジックは直ちに処理ブロック1905に移行し、ルックアヘッドがアクティブであるか判定する。   One embodiment of the LIC bit-plane encoding process is shown in the flowchart of FIG. The LIC bitplane encoding process begins with processing logic making the first tree the current tree (processing block 1901). Next, processing logic sets the first non-SS coefficient of the current tree as the current coefficient (processing block 1902). After making the first non-SS coefficient of the current tree the current coefficient, the processing block determines whether the encoding is for the start point of the look-ahead interval (processing block 1903). When the encoding process is at the start of the look-ahead interval, processing logic performs a look-ahead (processing block 1904) and proceeds to processing block 1905. If the encoding process is not at the start of the look-ahead interval, processing logic immediately moves to processing block 1905 to determine if the look-ahead is active.

ルックアヘッドがアクティブならば、処理ロジックは処理ブロック1909へ進み、カレント木の全係数が符号化されたか判定する。カレント木の全係数が符号化されたときには処理ブロック1913から処理が継続するが、そうでないときには、処理ロジックはルックアヘッド区間の後のカレント木の次の係数をカレント係数とし(処理ブロック1910)、処理ブロック1903へ進む。   If the look ahead is active, processing logic proceeds to processing block 1909 to determine if all the coefficients of the current tree have been encoded. Processing continues from processing block 1913 when all coefficients of the current tree are encoded, otherwise processing logic sets the next coefficient of the current tree after the look-ahead interval as the current coefficient (processing block 1910). Proceed to process block 1903.

ルックアヘッドがアクティブでないときには、処理ロジックはヘッドビット又はテールビットを符号化し(処理ブロック1906)、次に最初の非ゼロビットが受け取られたか判定する(処理ブロック1907)。最初の非ゼロビットが受け取られていないならば、処理ロジックは処理ブロック1911へ進む。最初の非ゼロビットが受け取られているならば、処理ブロック1908に進み、処理ロジックは符号ビットを符号化し、そして処理は処理ブロック1911へ進む。   When lookahead is not active, processing logic encodes the head or tail bits (processing block 1906) and then determines whether the first non-zero bit has been received (processing block 1907). If the first non-zero bit has not been received, processing logic proceeds to processing block 1911. If the first non-zero bit has been received, processing proceeds to processing block 1908 where processing logic encodes the sign bit and processing proceeds to processing block 1911.

処理ブロック1911で、処理ロジックはカレント木の全係数が符号化されたか判定する。カレント木の全係数が符号化済みでなければ、処理ロジックはカレント木の次の係数をカレント係数とし(処理ブロック1912)、処理ブロック1903へ移行する。カレント木の全係数が符号化されたならば処理ブロック1913に進み、処理ロジックは全ての木が符号化されたか判定する。全ての木が符号化済みでなければ、処理ロジックは次の木をカレント木とし(処理ブロック1914)、処理ブロック1902から処理を継続する。全木が符号化済みならば、処理は終了する。   At processing block 1911, processing logic determines whether all the coefficients of the current tree have been encoded. If all the coefficients of the current tree have not been encoded, processing logic sets the next coefficient of the current tree as the current coefficient (processing block 1912) and moves to processing block 1903. If all the coefficients of the current tree have been encoded, processing proceeds to processing block 1913 where processing logic determines whether all trees have been encoded. If all trees have not been encoded, processing logic sets the next tree as the current tree (processing block 1914) and continues processing from processing block 1902. If the entire tree has been encoded, the process ends.

1つのウェーブレット木を一度に処理することは重要ではないが、変換はデータをその順に読み書きさせるため、それが都合がよいであろう。ウェーブレット木毎にデータが処理されるときには、ビット−コンテクスト遅延を、DD,SD,DS係数間の交替(部分木間の交替)によって調整できる。別の方法として、一度に1つの部分帯域を符号化してもよい。どのような順序を選んだとしても、異なった部分帯域の桁揃えに用いられないヘッド/テールビットは、符号化されることがないから、無駄なサイクルを必要としない。   It is not important to process one wavelet tree at a time, but it may be convenient because the transformation causes the data to be read and written in that order. When data is processed for each wavelet tree, the bit-context delay can be adjusted by alternation between DD, SD, and DS coefficients (alternation between subtrees). Alternatively, one partial band may be encoded at a time. Whatever order is chosen, head / tail bits that are not used to align different sub-bands are not encoded and therefore do not require wasted cycles.

図39は、低重要度データのためのルックアヘッド及びコンテクストモデルの一実施例のブロック図である。一実施例では、最高重要度データ及び低重要度データは、符号、ヘッド及びテールビットのための条件付けを与える同じコンテクストモデル(CM)を利用する。   FIG. 39 is a block diagram of one embodiment of a look ahead and context model for low importance data. In one embodiment, the highest importance data and the lower importance data utilize the same context model (CM) that provides conditioning for the sign, head and tail bits.

図39において、コンテクストモデル2001〜2003は入力データを受け取るように接続される。符号コンテクストモデル2001はテールオンビット、符号/先頭テールビット指示及びデータを受け取るように接続される。ヘッドビットコンテクストモデル2002は、テールオンビット及びデータを受け取るように接続される。テールビットコンテクストモデル2003は、テールオンビット、符号/先頭テールビット指示及びデータを受け取るように接続される。各コンテクストモデル2001〜2003は、そのに入力に応じて1つのコンテクストを生成する。   In FIG. 39, context models 2001-2003 are connected to receive input data. The code context model 2001 is connected to receive tail on bits, code / head tail bit indication and data. The head bit context model 2002 is connected to receive tail on bits and data. The tail bit context model 2003 is connected to receive tail on bits, code / head tail bit indication and data. Each context model 2001-2003 generates one context according to the input.

コンテクストモデル2001〜2003によって生成されるコンテクストは、mux2004の入力に接続される。mux2004は、前ビット及びビットシグニフィカンス表現そのものによって制御される。ヘッドビットコンテクストモデル2002は、データ入力に1のビットが来るまで利用される。符号コンテクストモデル2001は、最後のビットがヘッドの最初の1のビットであった時に利用される。その後、テールビットコンテクストモデル2003が利用される。   The context generated by the context models 2001-2003 is connected to the input of mux 2004. The mux 2004 is controlled by the previous bit and the bit-significance representation itself. The head bit context model 2002 is used until 1 bit comes to the data input. The code context model 2001 is used when the last bit is the first one bit of the head. Thereafter, the tail bit context model 2003 is used.

mux2004の出力は、“=ヘッド?”ユニット2005及び先入れ/先出し(FIFO)バッファ2006に接続される。“=ヘッド?”ユニット2005は、現在のコンテクストが近傍及び親の0のヘッドビットがあるヘッドビットコンテクストであるか調べる。コンテクストが全てヘッドにあるときには、“=ヘッド?”ユニット2005から出る信号でFIFOバッファ2006をクリアする。   The output of mux 2004 is connected to a “= head?” unit 2005 and a first in / first out (FIFO) buffer 2006. The “= head?” Unit 2005 checks whether the current context is a head bit context with a neighbor and a parent zero head bit. When all the contexts are in the head, the FIFO buffer 2006 is cleared by a signal output from the “= head?” Unit 2005.

コンテクストと結果は、ルックアヘッド区間中、FIFO2006又は他のメモリにバッファされる。ルックアヘッド区間の終わりで、必要ならば、ルックアヘッド・デシジョン及び/又は個々のデシジョンが符号化される。一度に1ウェーブレット木ずつ係数が処理される場合には、ルックアヘッド用のFIFOは、単一のFIFOを全ての部分帯域のために用いてもよいし、部分帯域毎に1つずつ、複数のFIFOを用いてもよい。   Contexts and results are buffered in FIFO 2006 or other memory during the look-ahead period. At the end of the look-ahead interval, look-ahead decisions and / or individual decisions are encoded if necessary. If the coefficients are processed one wavelet tree at a time, the look-ahead FIFO may use a single FIFO for all subbands, or multiple, one for each subband. A FIFO may be used.

なお、マルチプレキシングを減らしたいのであれば、最高重要度データもルックアヘッドを利用してもよい。しかし、各木毎にルックアヘッドと先頭ビットプレーンの両方を利用するのは、やや冗長である。   If it is desired to reduce multiplexing, look-ahead may also be used for the highest importance data. However, it is somewhat redundant to use both the look-ahead and the head bit plane for each tree.

ある成分に割り当てられたコアが符号ビットを符号化するときには、同じビットプレーンの符号ビットを符号化しない、他成分に割り当てられたコアは遊休状態となる。したがって、各コアが別のビットプレーンの符号ビットを符号化するときには、最高4クロックサイクルを符号ビットに対して使用してよい。一実施例では、1係数につき、最高6ビットのヘッド又はテールビットがある。   When a core allocated to a certain component encodes a code bit, a core allocated to another component that does not encode a code bit of the same bit plane is in an idle state. Thus, up to 4 clock cycles may be used for a sign bit when each core encodes a sign bit of another bit plane. In one embodiment, there are up to 6 bits of head or tail bits per coefficient.

タイミングに関し考えられる1つの問題点は、最高重要度部分が十分に圧縮されることにより、そのデータの一部分の復号化期間にディスクが遊休状態になることである。バンドバッフアに十分なメモリ帯域があるならば、最高重要度データの処理を高速化するためルックアヘッドを利用してもよい。その場合、低重要度データがヘッドの始まりとなることがある。また、ディスクが、最高持続レートより高いバースト転送レートを有しても大丈夫であろう。ハードディスクは、かなりのバッファを持っているのが普通で、このバッファに先読みすることで遊休時間が排除されるであろう。   One possible problem with timing is that the highest importance portion is fully compressed, which results in the disk being idle during the decoding period of that portion of data. If the band buffer has sufficient memory bandwidth, look-ahead may be used to speed up the processing of the most important data. In that case, low importance data may be the beginning of the head. It would also be ok for the disk to have a burst transfer rate higher than the maximum sustained rate. A hard disk usually has a significant buffer, and prefetching into this buffer will eliminate idle time.

<コンテクストモデルの一部の条件付け>
コンテクストモデルで利用される条件付けは、ハードウェアコストと圧縮率との兼ね合いで決まる。したがって、以下の部分では、条件付けのための多くの選択肢を提示し設計者の検討に供する。
<Partial conditioning of the context model>
The conditioning used in the context model is determined by a trade-off between hardware cost and compression ratio. Therefore, in the following part, many options for conditioning are presented for the designer's consideration.

<SS係数のためのコンテクストモデル>
コンテクストモデルの一実施例においては、SS係数は符号化されない。SS係数は原データの高々256分の1であるので、それらを符号化する利益は殆どない。もしSS係数を符号化したいなら、Grayエンコーディング、同一係数中の前ビットによる条件付け、及び/又は前係数中の対応ビットによる条件付けによって処理してよかろう。
<Context model for SS coefficient>
In one embodiment of the context model, SS coefficients are not encoded. Since SS coefficients are at most 256 times less than the original data, there is little benefit in encoding them. If it is desired to encode the SS coefficient, it may be handled by Gray encoding, conditioning by the previous bit in the same coefficient, and / or conditioning by the corresponding bit in the previous coefficient.

<先頭ビットプレーンのためのコンテクストモデル>
各ウェーブレット木の最高重要度データについての先頭ビットプレーン情報の4ビットは、SS係数と同様な方法で処理できる。これは原データのサイズを521分の1しか増加させない。一実施例では、それらは、原データに比べサイズが小さいため符号化されなくともよく、また、Grayエンコーディングと何らかの条件付けをしてもよい。
同様に、図34に従って6ビットが用いられるときには、それら6ビットをSS係数と同様に処理してよい。
<Context model for the first bit plane>
The 4 bits of the head bit plane information for the highest importance data of each wavelet tree can be processed in the same way as the SS coefficient. This only increases the size of the original data by a factor of 521. In one embodiment, they may not be encoded because they are smaller than the original data, and may be conditioned in some way with Gray encoding.
Similarly, when 6 bits are used according to FIG. 34, these 6 bits may be processed in the same way as SS coefficients.

<ヘッドビットのためのコンテクストモデル>
図40は、ヘッドビットのための条件付けを提供するコンテクストモデルの一実施例のブロック図である。図40において、コンテクストモデル2100は、ビットプレーンコンテクストモデルに見られるものと同様のシフトレジスタを含む。重要な相違点は、カレントビットプレーンの先行係数を利用せず、条件付けがテールオン情報をベースにしており、全ての先行ビットプレーンとカレントビットプレーン中の既に符号化された情報を利用することである。また、符号化されたビットプレーン又はビットプレーン群と、重要度レベル及び部分帯域バケッティングにより生成された符号化部分帯域又は部分帯域群のレートを識別するため数ビットを利用することである。
<Context model for head bits>
FIG. 40 is a block diagram of one embodiment of a context model that provides conditioning for head bits. In FIG. 40, the context model 2100 includes a shift register similar to that found in the bit-plane context model. The key difference is that it does not use the leading coefficient of the current bitplane, the conditioning is based on tail-on information, and uses already encoded information in all the leading bitplanes and the current bitplane. . Also, use several bits to identify the encoded bit plane or group of bit planes, the importance level and the rate of the encoded partial band or partial band group generated by partial band bucketing.

図40において、コンテクストモデル2100は2つの入力、すなわちカレント重要度レベル2110とメモリからの係数2111を有する。カレント重要度レベル2110はテールオン情報/ビットジェネレータブロック2101と重要度レベル・部分帯域バケッティング(bucketing)ブロック2102の入力に接続される。メモリからの係数2111はブロック2101とレジスタ2103〜2106に接続される。   In FIG. 40, the context model 2100 has two inputs: a current importance level 2110 and a coefficient 2111 from memory. The current importance level 2110 is connected to the inputs of the tail-on information / bit generator block 2101 and the importance level / subband bucketing block 2102. The coefficient 2111 from the memory is connected to the block 2101 and the registers 2103 to 2106.

ブロック2101は、係数を受け取って1のビットの有無を判定する。一実施例では、ブロック2101は1のビットの場所も特定する。ブロック2101の出力は、テールオン情報に基づいた1ビット又は2ビットである。一実施例では、テール情報は、最初の非0絶対値ビットが観測されているか否か(先頭の“オンビット”が観測されたか否か)を表し、また、観測されているならば、何ビットプレーン前かを表す。図64はテール情報ビットの説明である。   Block 2101 receives the coefficient and determines the presence or absence of a 1 bit. In one embodiment, block 2101 also identifies the location of one bit. The output of block 2101 is 1 bit or 2 bits based on tail-on information. In one embodiment, the tail information indicates whether or not the first non-zero absolute value bit is observed (whether or not the leading “on bit” is observed), and if so, what Indicates whether it is before the bit plane. FIG. 64 is an explanation of tail information bits.

この2ビットのテール情報から、そのテール情報がゼロか否かを示す1ビットの“テール・オン”値が合成される。一実施例では、テール情報とテール・オンビットは係数が符号化された直後に更新される。別の実施例では、その更新は、並列的コンテクスト生成を可能にするため、もっと後に行われる。   From this 2-bit tail information, a 1-bit “tail-on” value indicating whether the tail information is zero or not is synthesized. In one embodiment, tail information and tail on bits are updated immediately after the coefficients are encoded. In another embodiment, the update is done later to allow parallel context generation.

さらに、この2ビットは、符号化される重要度レベルを示すために利用される。最初の2ビットプレーンは値0を、第2の2ビットプレーンは値1を、第3の2ビットプレーンは値2を、残りのビットプレーンは値3を使用する。さらに、すべてゼロの、ヘッドビットのランレングス・エンコーディングがある。   In addition, these 2 bits are used to indicate the importance level to be encoded. The first 2-bit plane uses the value 0, the second 2-bit plane uses the value 1, the third 2-bit plane uses the value 2, and the remaining bit-planes use the value 3. In addition, there is an all-zero headbit run-length encoding.

ヘッドビットのためのコンテクストの10ビットは、親とW(西)係数それぞれからの2ビット情報、N(北),E(東),SW(南西),S(南)の各係数からの1ビット情報、2ビットの重要性レベル情報からなる。   The 10 bits of the context for the head bit are 2 bits from the parent and W (west) coefficients respectively, 1 from each coefficient of N (north), E (east), SW (southwest), and S (south). It consists of bit information and 2-bit importance level information.

一実施例では、一部又は全ての周波数帯域についてテール情報が用いられない。こうすることにより、周波数帯域を、その親を前もって復号化することなく復号化できるようになる。   In one embodiment, tail information is not used for some or all frequency bands. By doing so, the frequency band can be decoded without decoding its parent in advance.

別の実施例では、各周波数帯域のビットプレーンの重要度レベルへの割り当てに、一つの桁揃えを用いる。親のテール・オン情報の決定に、もう一つの桁揃えを利用するが、これは実際に符号化されたものより少ない親ビットプレーンを利用する。これは、ある周波数帯域のいくつかのビットプレーンを、同じ重要度レベルの親の対応ビットプレーンを復号化せずに復号化できるようにする(図57参照)。例えば、MSE桁揃えに基づいた親のテール・オン情報によらず、ピラミッド桁揃えにより画像を符号化できる(図58参照)。これにより、復号化器は、ピラミッド桁揃えで復号化して、MSE桁揃えを模擬し又はピラミッド桁揃えとMSE桁揃えの間の任意の桁揃えを模擬することができる。   In another embodiment, a single alignment is used to assign bit planes of each frequency band to importance levels. Another alignment is used to determine the tail-on information of the parent, but this uses fewer parent bitplanes than those actually encoded. This allows several bit planes in a frequency band to be decoded without decoding the parent corresponding bit plane of the same importance level (see FIG. 57). For example, an image can be encoded by pyramid alignment regardless of parent tail-on information based on MSE alignment (see FIG. 58). This allows the decoder to decode with pyramid alignment and simulate MSE alignment or any alignment between pyramid alignment and MSE alignment.

図40において、ブロック2101の出力はレジスタ2103〜2106の入力に接続される。レジスタ2103〜2106は近傍データを蓄積する。例えば、上/左シフトレジスタ2103は、カレント係数の直上のビットを、そのラインの間中保持する。カレント・シフトレジスタ2104はカレントラインの係数のビットを保持し、下/右シフトレジスタ2105はシフトレジスタの直下ラインからのラインを保持する。最後に、親レジスタ2106は親データを保持する。こられシフトレジスタの出力がコンテクストを構成する。   In FIG. 40, the output of the block 2101 is connected to the inputs of the registers 2103 to 2106. Registers 2103 to 2106 accumulate neighboring data. For example, the up / left shift register 2103 holds the bit immediately above the current coefficient throughout the line. The current shift register 2104 holds the coefficient bit of the current line, and the lower / right shift register 2105 holds the line from the line immediately below the shift register. Finally, the parent register 2106 holds parent data. The output of the shift register constitutes a context.

重要度レベル・部分帯域バケッティング(bucketing)ブロック2102の出力もコンテクストとして利用される。複数の部分帯域及び異なったレベルを同じコンテクストで符号化しようとする時にコンテクストの一部となるような場合である。そのような場合、ブロック2102の出力は、レジスタ2103〜2106の出力と組み合わされてコンテクストを構成する。そのような場合でなければ、コンテクストはレジスタ2103〜2106の出力だけから構成される。
また、コンテクストモデル2100から1つのビットが出力される。
The output of the importance level / subband bucketing block 2102 is also used as a context. This is the case where multiple partial bands and different levels become part of the context when trying to encode with the same context. In such a case, the output of block 2102 is combined with the outputs of registers 2103 to 2106 to form a context. Otherwise, the context consists only of the outputs of registers 2103-2106.
One bit is output from the context model 2100.

カレントビットプレーンのデータを使用するためのビット−コンテクスト遅延を考慮して、DD,SD,DS係数間の交替により符号化を行ってもよい(部分木間の交替)。   In consideration of a bit-context delay for using data of the current bit plane, encoding may be performed by alternation between DD, SD, and DS coefficients (alternation between subtrees).

なお、条件付けに必要となる係数を格納するためにメモリが必要となる(図36参照)。全ての近傍係数及び親により条件付けするコンテクストモデルの一実施例のためのメモリ使用方法を図41に示す。短シーム変換順を想定している。(外部メモリを使用して長シーム変換順をサポートすることもできる。それには、メモリ量と帯域幅の両方の追加が必要となろう。)
高レベルの親による条件付けは非常にコストがかかる。ある木のレベル4のDD係数は、当該木のレベル1のDD係数の殆どより16木だけ後になるまで計算されない。また、後で符号化される係数全体(図41の影が付けられていない係数)を記憶することは、後に条件付けで利用するためのテールオン情報(図41の影が付けられたもの)だけを記憶する場合にくらべて非常にコストがかかる。同じ木にある“西”情報と当該“西”木のからのデータなしに生成される親のみに基づいて条件付けをすれば、必要となるメモリ量が大幅に減少するであろう。親又は西の情報が得られない場合には、北又は東から得られる情報をコピーするのが有効である。
Note that a memory is required to store the coefficients necessary for conditioning (see FIG. 36). The memory usage for one embodiment of a context model conditioned by all neighborhood coefficients and parents is shown in FIG. A short seam conversion order is assumed. (External memory can also be used to support long seam transformation order, which would require both additional memory and bandwidth.)
Conditioning by high level parents is very costly. The level 4 DD coefficients for a tree are not calculated until 16 trees later than most of the level 1 DD coefficients for that tree. In addition, storing the entire coefficient to be encoded later (coefficient not shaded in FIG. 41) only stores tail-on information (shaded in FIG. 41) for later use in conditioning. It is very expensive compared to memorizing. Conditioning based only on “west” information in the same tree and the parent generated without data from the “west” tree would significantly reduce the amount of memory required. If parent or west information is not available, it is useful to copy information obtained from north or east.

<符号ビットのコンテクストモデル>
符号ビットのための条件付けを与えるコンテクストモデルは単純である。上の画素の符号が分かっているときには、それが条件付けのために利用される。上の画素の符号が分かっていないときには、そのビットは符号化されない。((R2(0))が利用される。あるいは、全符号ビットについて不符号化(R2(0))を使用できる)。
<Sign bit context model>
The context model that gives the conditioning for the sign bit is simple. When the sign of the upper pixel is known, it is used for conditioning. When the sign of the upper pixel is not known, the bit is not encoded. ((R2 (0)) is used, or uncoded (R2 (0)) can be used for all code bits).

図42は、符号ビットのためのコンテクストモデルの一実施例のブロック図である。図42において、mux2301は、北の符号ビット2303と0のビット2304を受け取り、北のテールオンビット2302により制御されることにより、北のテールオンビット2302が1のときに北の符号ビット2303を出力し、そうでないときに0を出力する。このように、北の画素は、その南の画素に対するコンテクストを提供するための北テールオンビット2302と北符号ビット2303を供給する。   FIG. 42 is a block diagram of one embodiment of a context model for code bits. In FIG. 42, mux 2301 receives north sign bit 2303 and 0 bit 2304 and is controlled by north tail on bit 2302 to set north sign bit 2303 when north tail on bit 2302 is 1. Outputs 0 otherwise. Thus, the north pixel provides a north tail on bit 2302 and a north code bit 2303 to provide context for the south pixel.

<テールビットのコンテクストモデル>
テールビットに対しては条件付けは利用されない。一実施例では、固定した確率状態が用いられ、確率更新は用いられない。図65は、テールビットに用いられるコードの3つの選択肢を表す。R2(1)とR2(0)を用いる2番目の選択肢が良い選択である。
<Tailbit context model>
Conditioning is not used for tail bits. In one embodiment, a fixed probability state is used and no probability update is used. FIG. 65 shows three choices of codes used for tail bits. The second option using R2 (1) and R2 (0) is a good choice.

一実施例では、M≒60%,L≒40%なる確率に好適な黄金比コードは次のとおりである:
入力 符号語
MMM 00
MML 110
ML 01
LM 10
SS 111
In one embodiment, a golden ratio code suitable for the probability of M≈60% and L≈40% is as follows:
Input codeword MMM 00
MML 110
ML 01
LM 10
SS 111

<コンテクストビン(bin)の要約>
システムで利用可能なコンテクストビンの最小個数は次のとおりである。SS,各木の先頭ビットプレーン、符号及びテールビットはすべて符号化されない(R2(0)コードが使われる)。PEM状態や最高確率シンボル(MPS)ビットを記憶する必要はないが、R2(0)コードを選択するためのロジックがなければならない。したがって、これをどのように考えるかによるが、ハードウェアコストは0又は1コンテクストビンである。ヘッドビットに対しては適応符号化が用いられるべきである。低重要度データは、1ビットプレーンが一度に符号化されるから、ビットプレーンによる条件付けは重要でない。最高重要度データについては、各ウェーブレット木の先頭ビットプレーンは、ビットプレーン数を十分に減少させるであろうから、それらビットプレーンによる条件付けは重要でない。部分帯域による条件付けの有効性は、どのようなものかあまり明確でないが、これもこの最小のコンテクスト例では無視できる。3つの近傍係数と1つの親係数のテールビットを合計4ビット(16コンテクストビン)のために使用してよい。1つの追加のコンテクストビンをルックアヘッドのために使用してよい。(メモリサイズが依然として2のベキ乗となるように、2つのコンテクストビンを一緒にマッピングしてルックアヘッド用の空きを作るのが、より好都合であるかもしれない。)
<Summary of context bin (bin)>
The minimum number of context bins available in the system is as follows: The SS, the leading bit plane of each tree, the sign and the tail bit are all unencoded (R2 (0) code is used). There is no need to store the PEM state or the highest probability symbol (MPS) bit, but there must be logic to select the R2 (0) code. Therefore, depending on how this is considered, the hardware cost is 0 or 1 context bin. For head bits, adaptive coding should be used. For low importance data, the bit plane conditioning is not important because one bit plane is encoded at a time. For the highest importance data, the leading bit planes of each wavelet tree will reduce the number of bit planes sufficiently, so conditioning with those bit planes is not important. The effectiveness of subband conditioning is not very clear, but it can also be ignored in this minimal example context. Three neighborhood coefficients and one parent coefficient tail bit may be used for a total of 4 bits (16 context bins). One additional context bin may be used for look ahead. (It may be more convenient to map the two context bins together to make room for the look ahead so that the memory size is still a power of 2.)

4つのコアを用い(コンテクストを4回複写する必要がある)、また1コアあたり2つのコンテクストメモリバンクを用いる場合、”符号化されない”コンテクストをどのように考えるか、また2つのヘッドコンテクストビンが一緒にマッピングされるか否かによって、使用すべきコンテクストの最小個数は128と144の間となろう。   When using 4 cores (contexts need to be copied 4 times) and using 2 context memory banks per core, how to consider a "non-encoded" context, and 2 head context bins Depending on whether they are mapped together, the minimum number of contexts to use will be between 128 and 144.

十分な条件付けのあるシステムは以下のとおりである:
・SS(9ビット)と先頭ビットプレーン(4ビット)のために、1ビットあたり4コンテクストビン、合計52コンテクストビンを使用する。(これらコンテクストビンはバンクに分割されてもよい、複写される必要はない。)
・テールビットは符号化されず、R2(0)とR2(1)の両方が使用される。これをどう考えるかによるが、そのコストは0,1又は2コンテクストビンである。
・2つの適応的コンテクストと1つの”無コード”コンテクストが符号ビットのために用いられる。
・ヘッドビットは近傍係数/親係数のために8ビット、部分帯域/ビットプレーン情報のために2ビット(1024コンテクストビン)を使用し得る。
・1つのコンテクストがルックアヘッドのために使用される。
A well-conditioned system is as follows:
• For SS (9 bits) and leading bit plane (4 bits), use 4 context bins per bit, for a total of 52 context bins. (These context bins may be divided into banks and need not be copied.)
-The tail bits are not encoded and both R2 (0) and R2 (1) are used. Depending on how this is considered, the cost is 0, 1 or 2 context bins.
Two adaptive contexts and one “no code” context are used for the sign bit.
Head bits may use 8 bits for neighborhood / parent coefficients and 2 bits (1024 context bins) for partial band / bitplane information.
One context is used for look ahead.

コンテクストモデルの他の例が、入力係数を符号/絶対値形式に変換する符号/絶対値ユニットの一例とともに、米国特許出願第08/498,695号(1995年6月30日受理、“Method and Apparatus For Compression Using Reversible Wavelet Transforms and an Embedded Codestream”)、米国特許出願第08/498,036号(1995年6月30日受理、“Reversible Wavelet Transform and Embedded Codestream Manipulation”)、米国特許出願第08/642,518号(1996年5月3日受理、“Compression and Decompression with Wavelet Style amd Binary StyleIncluding Quantization by Device-Dependent Parser”)、及び、米国特許出願第08/643,268号(1996年5月3日受理、“Compression/Deconpression Using Reversible Embedded Wavelets”)、に記載されている。   Another example of a context model is US patent application Ser. No. 08 / 498,695 (June 30, 1995, “Method and Apparatus For”, with an example of a sign / absolute unit that converts input coefficients to sign / absolute value format. Compression Using Reversible Wavelet Transforms and an Embedded Codestream ”), US Patent Application No. 08 / 498,036 (accepted June 30, 1995,“ Reversible Wavelet Transform and Embedded Codestream Manipulation ”), US Patent Application No. 08 / 642,518 (1996) Accepted May 3, 1996, “Compression and Decompression with Wavelet Style amd Binary Style Including Quantization by Device-Dependent Parser”, and US Patent Application No. 08 / 643,268 (accepted May 3, 1996, “Compression / Deconpression Using Reversible Embedded Wavelets ”).

このコンテクストモデルはデータのエントロピー符号化のためのコンテクストを提供する。一実施例では、本発明によって行われる全てのエントロピー符号化は、バイナリ・エントロピーコーダによって実行される。単一のコーダを使用して単一の出力コードストリームを生成してもよい。あるいは、多数の(現実の又は仮想の)コーダを使用して多数の(現実の又は仮想の)データストリームを生成してもよい。   This context model provides a context for entropy coding of data. In one embodiment, all entropy encoding performed by the present invention is performed by a binary entropy coder. A single coder may be used to generate a single output code stream. Alternatively, multiple (real or virtual) coders may be used to generate multiple (real or virtual) data streams.

<LICのためのM項符号化>
図43は、LICに対するM項符号化の利用を表している。M項符号化を圧縮符号化のために利用すると、ルックアヘッドとして作用する(図示の如く)。初めに、次の8係数の状態が調べられる。ヘッドに何かあると、ヘッドビットに対しエントロピー符号化が行われ、8係数の全ヘッドビットが符号化されるまで、全ヘッドビットが毎サイクル1ビットずつエントロピー符号化される。図43において、1のヘッドビットは第1サイクル及び第3サイクルで符号化されるが、0のヘッドビットは第2サイクル及び第4サイクルで符号化される。全ヘッドビットがエントロピー符号化されると、符号ビットとテールビットが同一サイクルで符号化される。例えば、図43において、1のヘッドビットの次にくる符号ビット及びテールビットは全て第5サイクルで符号化される。このようにして、全体のサイクル数が減少する。
<M-term coding for LIC>
FIG. 43 illustrates the use of M-term coding for LIC. When M-term coding is used for compression coding, it acts as a look-ahead (as shown). First, the state of the next 8 coefficients is examined. If there is something in the head, entropy coding is performed on the head bits, and all head bits are entropy coded one bit per cycle until all head bits of 8 coefficients are coded. In FIG. 43, 1 head bit is encoded in the first cycle and the third cycle, while 0 head bit is encoded in the second cycle and the fourth cycle. When all head bits are entropy encoded, the code bits and tail bits are encoded in the same cycle. For example, in FIG. 43, the code bits and tail bits that come after one head bit are all encoded in the fifth cycle. In this way, the total number of cycles is reduced.

<本発明の印刷システムへの応用>
図44は、プリンタのフロントエンドの一実施例のブロック図である。図44において、レンダラー(renderer)2501はページ記述言語又はディスプレイリストの形式のデータを受け取る。レンダラー2501は、ラスター画像処理によって構成されてもよい。各ロケーション(例えばスポット)毎に、レンダラー2501は、その色(アプリケーションによるが、例えば、白黒、8ビットRGB値、8ビットCMYK値)を決定する。レンダラー2501の出力は、バンドにフォーマットされた画素の集合であり、バンドバッファ(メモリ)2503に格納される。
<Application of the present invention to a printing system>
FIG. 44 is a block diagram of an embodiment of a printer front end. In FIG. 44, a renderer 2501 receives data in the form of a page description language or a display list. The renderer 2501 may be configured by raster image processing. For each location (eg spot), the renderer 2501 determines its color (depending on the application, eg black and white, 8-bit RGB value, 8-bit CMYK value). The output of the renderer 2501 is a set of pixels formatted in a band and is stored in a band buffer (memory) 2503.

他の実施例では、Adobe Postscript(登録商標)やMicrosoft Windows(登録商標)GDIのようなページ記述言語(PDL)によるデータはディスプレイリストへ変換される。このディスプレイリストは画素のバンドを生成するために用いられる。この実施例では、画素は連続階調値を表すと仮定され、プリントエンジンに必要とされる何らかの中間調処理もしくはディザ処理が、伸長後に行われることになろう。   In another embodiment, data in a page description language (PDL) such as Adobe Postscript (registered trademark) or Microsoft Windows (registered trademark) GDI is converted into a display list. This display list is used to generate a band of pixels. In this embodiment, the pixels are assumed to represent continuous tone values, and any halftoning or dithering required by the print engine will occur after decompression.

本発明においては、バンドバッファ2503として使用されるメモリは、圧縮用作業域としても使用される(必要メモリを増加させない)。この二重利用については詳しく後述する。   In the present invention, the memory used as the band buffer 2503 is also used as a compression work area (does not increase the necessary memory). This double use will be described later in detail.

圧縮器2504は各画素バンドを圧縮する。圧縮器2504に対する入力が中間調処理もしくはディザ処理された画素であるときにも圧縮器2504は動作するが、ウェーブレット処理による場合、圧縮率は良くないであろう。中間調処理もしくはディザ処理された画素に対してはバイナリコンテクストモデルを利用できる。圧縮器2504は圧縮データをディスク2505に書き込む。ディスク2505はハードディスクかもしれない。別の実施例では、ディスク2505はランダムアクセスメモリ(RAM)、フラッシュメモリ、光ディスク、磁気テープ、任意の種類の記憶手段、任意種類の通信チャネルかもしれない。   The compressor 2504 compresses each pixel band. The compressor 2504 will also operate when the input to the compressor 2504 is halftoned or dithered pixels, but the compression rate will not be good when using wavelet processing. A binary context model can be used for halftone or dithered pixels. The compressor 2504 writes the compressed data to the disk 2505. The disk 2505 may be a hard disk. In another embodiment, disk 2505 may be random access memory (RAM), flash memory, optical disk, magnetic tape, any type of storage means, and any type of communication channel.

図45は、プリンタのバックエンドの一実施例のブロック図である。図45において、プリンタのバックエンド2500はディスク2505に接続された伸長器2602、バンドバッファ(メモリ)2603、プリントエンジン2604からなる。伸長器2602は、ハードディスク2505から圧縮データを読み込んで伸長する。伸長されたデータは画素形式でバンドバッファ(メモリ)2603に格納される。バンドバッファ2603は、圧縮器2504のための作業域として働くバンドバッファ2503と同じメモリでもよい。プリントエンジン2604に対し画素をリアルタイムに送ることができるようにするため、伸長器2602はバンドバッファ2603をデータが十分に満たされた状態に保つ。   FIG. 45 is a block diagram of an embodiment of a printer back end. In FIG. 45, the printer back end 2500 includes a decompressor 2602, a band buffer (memory) 2603, and a print engine 2604 connected to a disk 2505. The decompressor 2602 reads compressed data from the hard disk 2505 and decompresses it. The decompressed data is stored in a band buffer (memory) 2603 in a pixel format. Band buffer 2603 may be the same memory as band buffer 2503 that serves as a work area for compressor 2504. In order to be able to send pixels to the print engine 2604 in real time, the decompressor 2602 keeps the band buffer 2603 fully filled with data.

図46は、オプショナルな画質改善を含む別の実施例である。図46において、伸長器2602より出力される画素は画質改善ブロック2705を介してバンドバッファ2603に入力するが、他の情報すなわち未だ画素になっていない情報(部分的な係数)はバンドバッファ2603へ直接送られる。画質改善ブロック2705は、補間処理、平滑化処理、誤差拡散処理、中間調処理及び/又はディザ処理などの機能を果たす。   FIG. 46 is another embodiment including optional image quality improvement. In FIG. 46, the pixels output from the decompressor 2602 are input to the band buffer 2603 via the image quality improvement block 2705, but other information, that is, information (partial coefficients) that has not yet become a pixel, is input to the band buffer 2603. Sent directly. The image quality improvement block 2705 performs functions such as interpolation processing, smoothing processing, error diffusion processing, halftone processing, and / or dither processing.

伸長器2602とバンドバッファ2603の間に必要となる帯域幅のため、伸長器2602はまず、変換係数をバンドバッファ2603に書き込み、バンドバッファ2603をアクセスして特定の係数を取り込み、逆変換を行ってからバンドバッファ2603に再び書き込む。なお、バンドバッファ2603は、作業域としては小さいかもしれない。例えば、1ページの画像が64Mバイトでバンドバッファ2603が16Mバイトでも、小さな作業域メモリだと考えられるであろう。   Because of the bandwidth required between the decompressor 2602 and the band buffer 2603, the decompressor 2602 first writes the transform coefficient into the band buffer 2603, accesses the band buffer 2603, takes in the specific coefficient, and performs the inverse transform. Then, the data is written again in the band buffer 2603. The band buffer 2603 may be small as a work area. For example, even if an image of one page is 64 Mbytes and the band buffer 2603 is 16 Mbytes, it can be considered as a small work area memory.

例えば、32ビット/画素(8ビットの4成分CMYK)、400dpiのA4画像で、8ページ/分の場合に必要とされる、バンドバッファ2603からプリントエンジン2604へのデータレートは、約8Mバイト/秒である。代表的なハードディスクの転送速度はおおよそ2Mバイト/秒(例えば1.7〜3.5Mバイト/秒)である。したがって、ディスク2505の帯域幅をプリンタの帯域幅に整合させるためには、約4:1の圧縮率が要求される。一実施例によれば、図44の圧縮器2504及び図45又は図46の伸長器2602が、単一の集積回路チップに収容される。   For example, the data rate from the band buffer 2603 to the print engine 2604 required for 8 pages / minute for a 32-bit / pixel (8-bit 4-component CMYK), 400 dpi A4 image is about 8 Mbyte / Seconds. The transfer rate of a typical hard disk is approximately 2 Mbyte / second (for example, 1.7 to 3.5 Mbyte / second). Therefore, in order to match the bandwidth of the disk 2505 with the bandwidth of the printer, a compression ratio of about 4: 1 is required. According to one embodiment, the compressor 2504 of FIG. 44 and the expander 2602 of FIG. 45 or 46 are housed in a single integrated circuit chip.

図47は、プリンタの圧縮/伸長機能を内蔵した集積回路(IC)チップの一実施例のブロック図である。図47において、画素データインターフェース2801はバンドバッファ(不図示)と接続される。画素データインターフェース2801は、バンドバッファに対する読み書きのためのアドレスを生成する。可逆色空間変換を行うため、オプショナルの可逆色空間変換器2802が含まれるかもしれない。係数データインターフェース2804は、読み書きのためのアドレスを生成し、また2バイト係数を正しくアセンブルする。係数データインターフェース2804は、画素データインターフェース2801と一緒に、外部メモリにある必要のあるラインバッファリング又は係数バッファリングを制御する。係数データインターフェース2804と、可逆色空間変換の利用については後により詳しく説明する。   FIG. 47 is a block diagram of an embodiment of an integrated circuit (IC) chip incorporating a printer compression / decompression function. In FIG. 47, the pixel data interface 2801 is connected to a band buffer (not shown). The pixel data interface 2801 generates an address for reading and writing to the band buffer. An optional reversible color space converter 2802 may be included to perform reversible color space conversion. The coefficient data interface 2804 generates addresses for reading and writing, and correctly assembles 2-byte coefficients. Coefficient data interface 2804, along with pixel data interface 2801, controls line buffering or coefficient buffering that needs to be in external memory. The use of the coefficient data interface 2804 and reversible color space conversion will be described in more detail later.

なお、双方向の矢印は、データがいずれの向きにも流れ得ることを意味している。例えば、データを圧縮する時には、ICチップの様々なコンポーネントを通じてデータは左から右へ流れる。他方、データ伸長時には、データはおおむね右から左へ向かって流れる。   Note that the bidirectional arrows mean that data can flow in either direction. For example, when compressing data, the data flows from left to right through various components of the IC chip. On the other hand, at the time of data decompression, the data generally flows from right to left.

データの符号化時には、画素データインターフェース2801から、又は可逆色空間変換器2802から(それが含まれているとき)、画素をウェーブレット変換ブロック2803が受け取ってウェーブレット変換を施す。一実施例において、ウェーブレット変換ブロック2803により実行される変換は重複ウェーブレット変換である。これはロスレス及びロッシーの画像圧縮のためのエネルギー集中をする。ロッシー圧縮の場合、JPEGの悩みであるブロック境界歪みが回避される。フィルタ係数は、適切に桁揃えされた時には、スカラー量子化で良好なロッシー圧縮結果が得られるように正規化される。一実施例では、ウェーブレット変換ブロック2803は、2・6変換を行う。他の実施例では、ウェーブレット変換ブロック2803は2・10変換を行う。ウェーブレット変換ブロック2803は他の公知の変換を行ってもよい。ウェーブレット変換ブロック2803の様々な具体例について後に詳述する。   When encoding data, the wavelet transform block 2803 receives the pixels from the pixel data interface 2801 or from the reversible color space converter 2802 (when included) and performs wavelet transform. In one embodiment, the transform performed by wavelet transform block 2803 is a duplicate wavelet transform. This does energy concentration for lossless and lossy image compression. In the case of lossy compression, block boundary distortion, which is a problem with JPEG, is avoided. The filter coefficients are normalized so that a good lossy compression result is obtained with scalar quantization when properly aligned. In one embodiment, wavelet transform block 2803 performs a 2 · 6 transform. In another embodiment, wavelet transform block 2803 performs 2 · 10 transform. The wavelet transform block 2803 may perform other known transforms. Various specific examples of the wavelet transform block 2803 will be described in detail later.

ウェーブレット変換ブロック2803から出力された係数は、後で符号化するため、係数データインターフェース2804を介してメモリ(例えばバンドバッファ)へ再び書き込まれることがある。一実施例では、メモリに再書き込みされるデータは低重要度データであり、その詳細は後述する。このようなデータは、その後にICチップに読み込まれ符号化される。   The coefficients output from the wavelet transform block 2803 may be rewritten to the memory (eg, band buffer) via the coefficient data interface 2804 for later encoding. In one embodiment, the data rewritten to the memory is low importance data, details of which will be described later. Such data is then read into the IC chip and encoded.

ウェーブレット変換ブロック2803より出力された係数、又は係数データインターフェース2804を介して受け取られた係数は、コンテクストモデル2805に供給される。コンテクストモデル2805は、符号化器/復号化器2806によるデータの符号化(又は復号化)のためのコンテクストを提供する。一実施例では、コンテクストモデル2805はデータを直接的に符号化へ渡すことができる。このように、コンテクストモデル2805は最高重要度コンテクストモデルとして動作する。各種のコンテクストモデルの実現構成は前述した。   The coefficient output from the wavelet transform block 2803 or the coefficient received via the coefficient data interface 2804 is supplied to the context model 2805. The context model 2805 provides a context for encoding (or decoding) data by the encoder / decoder 2806. In one embodiment, the context model 2805 can pass data directly to encoding. In this way, the context model 2805 operates as the highest importance context model. The implementation configuration of various context models has been described above.

一実施例では、符号化器/復号化器2806は高速並列コーダからなる。高速並列コーダは、数ビットを並列に処理する。一実施例では、高速並列コーダはVLSIハードウェアで実現され、あるいは圧縮性能を犠牲にすることなくマルチプロセッサ・コンピュータで実現される。本発明において利用し得る高速並列コーダの一例が、1995年1月10日発行の米国特許第5,381,145号“Method and Apparatus for Parallel Decoding and Encoding of Data”に述べられている。   In one embodiment, encoder / decoder 2806 comprises a high speed parallel coder. A high speed parallel coder processes several bits in parallel. In one embodiment, the high speed parallel coder is implemented with VLSI hardware or a multiprocessor computer without sacrificing compression performance. An example of a high-speed parallel coder that can be used in the present invention is described in US Pat. No. 5,381,145 “Method and Apparatus for Parallel Decoding and Encoding of Data” issued January 10, 1995.

他の実施例では、バイナリ・エントロピーコーダはQコーダ、QMコーダ、有限状態マシンコーダ等からなる。QMコーダは周知の効率バイナリエントロピーコーダである。有限状態マシン(FSM)コーダは確率及び事象(outcome)から圧縮ビットストリームへの単純な変換を提供する。一実施例では、有限状態マシンコーダは、テーブルルックアップにより、符号化器及び復号化器の両方として実現される。多様な確率予測法を、このような有限状態マシンコーダで利用できる。一実施例では、本発明の有限状態マシンコーダは、1993年12月21日発行の米国特許第5,272,478号“Method and Apparatus for Entropy Coding”に記載されているBコーダからなる。   In other embodiments, the binary entropy coder comprises a Q coder, a QM coder, a finite state machine coder, and the like. The QM coder is a well-known efficient binary entropy coder. A finite state machine (FSM) coder provides a simple conversion from probability and outcome to a compressed bitstream. In one embodiment, the finite state machine coder is implemented as both an encoder and a decoder with table lookup. A variety of probability prediction methods can be used with such a finite state machine coder. In one embodiment, the finite state machine coder of the present invention comprises a B coder described in US Pat. No. 5,272,478 “Method and Apparatus for Entropy Coding” issued Dec. 21, 1993.

符号化器/復号化器2806の出力は、ディスク又は他の記憶媒体あるいは他の通信路とのインターフェースを提供する符号化データインターフェース2807に接続される。   The output of the encoder / decoder 2806 is connected to an encoded data interface 2807 that provides an interface to a disk or other storage medium or other communication path.

符号化データインターフェース2807は、ディスクとの間で符号化データを送受する。一実施例では、SCSIインターフェースコントローラがチップに含まれているならば、それはこの点に実装されるであろう。他の実施例では、符号化データインターフェース2807は外部のSCSIコントローラと通信する。SCSI以外の記憶又は通信が利用されてもよい。   The encoded data interface 2807 transmits / receives encoded data to / from the disk. In one embodiment, if a SCSI interface controller is included on the chip, it will be implemented at this point. In other embodiments, the encoded data interface 2807 communicates with an external SCSI controller. Storage or communication other than SCSI may be used.

伸長期間に、符号化データインターフェース2807を介し、ディスク(又は他のメモリ装置もしくは通信路)より符号化データが符号化器/復号化器2806に受信され、そこでコンテクストモデル2805より与えられるコンテクストを使って伸長される。伸長により得られた係数はウェーブレット変換ブロック2803によって逆変換される。(なお、一実施例ではウェーブレット変換ブロック2803が順変換と逆変換の両方を遂行するが、他の実施例では順変換と逆変換は別々のブロックにより行われる。)
ウェーブレット変換ブロック2803の出力は画素からなり、これはオプショナルな色空間変換を施され、画素データインターフェース2801を介してバンドバッファへ出力される。
During the decompression period, the encoded data is received from the disk (or other memory device or channel) via the encoded data interface 2807 to the encoder / decoder 2806, where the context provided by the context model 2805 is used. Is expanded. The coefficient obtained by the decompression is inversely transformed by the wavelet transform block 2803. (Note that in one embodiment, the wavelet transform block 2803 performs both forward transform and inverse transform, but in other embodiments, the forward transform and inverse transform are performed by separate blocks.)
The output of the wavelet transform block 2803 is composed of pixels, which are subjected to an optional color space transform and output to the band buffer via the pixel data interface 2801.

印刷期間におけるシステムの基本タイミングが図48に示されている。図48において、各符号化単位の符号化データがディスクから読み出される。可能な限り多くのデータが読み出され、短時間遅れて、係数が復号化される。復号化が終わると、逆ウェーブレット変換が計算される。この変換の終了後、画素をプリントエンジンへ送ることができる。なお、図48中の影付けは、特定の符号化単位に対し様々なアクションが何時生じるかを明らかにする。   The basic timing of the system during the printing period is shown in FIG. In FIG. 48, the encoded data of each encoding unit is read from the disk. As much data as possible is read and the coefficients are decoded with a short delay. When decoding is complete, the inverse wavelet transform is calculated. After this conversion is complete, the pixels can be sent to the print engine. Note that the shading in FIG. 48 clarifies when various actions occur for a specific coding unit.

<メモリからディスクへの係数埋め込み>
図27は、本発明における符号化データの構成を示す。図27において、最高重要度データ1003は変換された直後に係数順に符号化される(埋め込まれない)。したがって、このデータはバッファされる必要がない。一実施例では、最高重要度データ1003は、常にディスクから読み出すことができるように、その量が制限される。
<Embedding coefficients from memory to disk>
FIG. 27 shows the structure of encoded data in the present invention. In FIG. 27, the highest importance data 1003 is encoded (not embedded) in the order of coefficients immediately after conversion. Therefore, this data need not be buffered. In one embodiment, the amount of highest importance data 1003 is limited so that it can always be read from the disk.

ある量の低重要度データ1004がバッファされ、埋め込まれ、そしてディスクに重要度の順に書き込まれる。バッファし、埋め込みし、書き込むことができるデータ量は、転送時間によって決まる。すなわち、システムは、ディスクからの転送時間が終了するまでデータを読み込む。ディスクの転送レートによって、どれだけのデータが保存されるかが決まる。これらのレートは分かっており、また個々の転送の物理特性に依存している。   A certain amount of low importance data 1004 is buffered, embedded and written to disk in order of importance. The amount of data that can be buffered, embedded and written depends on the transfer time. That is, the system reads data until the transfer time from the disk ends. How much data is stored depends on the disc transfer rate. These rates are known and depend on the physical characteristics of the individual transfers.

圧縮しにくい画像の場合、符号化期間に捨てられるデータもある。このデータは最低重要度データ1005として示されている。最良のディスク転送レートの場合でも最低重要度データを読み出させる可能性が全くないのであれば、そのデータをディスクに格納する理由がない。多くの、おそらく殆どの画像では、データが捨てられることはないであろう。   For images that are difficult to compress, some data is discarded during the encoding period. This data is shown as minimum importance data 1005. If there is no possibility of reading out the least important data even at the best disk transfer rate, there is no reason to store the data on the disk. For many, perhaps most images, the data will not be discarded.

符号化データの順序付けと、それを達成する方法については、既に詳しく説明した。   The ordering of the encoded data and the method for achieving it have already been described in detail.

以下、圧縮時及び伸長時のバンドバッファの管理について述べ、続いて符号化データの埋め込みスキームについて説明する。変換、コンテクストモデル及び符号化器/復号化器の並列化のハードウェアによる実現例についても説明する。   Hereinafter, management of the band buffer at the time of compression and expansion will be described, and then an embedded scheme of encoded data will be described. A hardware implementation of the conversion, context model, and encoder / decoder parallelization is also described.

<画素及び係数のインターフェース>
図49は、画素データの編成方法の一例を示す。図49において、ページ3000はバンド3001〜3004に分割される。一実施例では、ページ3000はページ記述言語又はディスプレイリストによる1ページの記述からなり、各バンドの画素を生成するために使用される。一実施例では、バンド3001〜3004のそれぞれは、ディスプレイリスト技法によって、別々にラスタライズされる。各バンド3001〜3004はさらに符号化単位(例えば3001A〜3001D)に分割される。
<Pixel and coefficient interface>
FIG. 49 shows an example of a method for organizing pixel data. In FIG. 49, the page 3000 is divided into bands 3001 to 3004. In one embodiment, page 3000 consists of a page description in a page description language or display list and is used to generate pixels for each band. In one embodiment, each of bands 3001-3004 is rasterized separately by display list techniques. Each band 3001 to 3004 is further divided into coding units (for example, 3001A to 3001D).

1バンドにつき多数の符号化単位を用いる利点は、伸長期間にバンドバッファの部分部分を循環的に(ピンポンバッファと同様に)作業域として使用できることである。換言すれば、ある部分の画素を伸長しバンドバッファに格納し、プリンタへ送ると同時に、バンドバッファの別の部分を係数を復号化している間格納するための作業域として使用しつつ、その係数に対応した画素を記憶するためにバンドバッフアのもう1つの部分を使用することができる。   The advantage of using a large number of coding units per band is that a part of the band buffer can be used cyclically (similar to a ping-pong buffer) as a work area during the decompression period. In other words, a certain part of the pixels is decompressed and stored in the band buffer and sent to the printer, while at the same time another part of the band buffer is used as a work area for storing the coefficients while decoding the coefficients. Another part of the band buffer can be used to store the pixels corresponding to.

図50は、ページ3100のバンドバッファ3101を示す。バンドバッファ3101は符号化単位3101A〜3101Dからなる。符号化単位3101A,3101Bは、伸長器が係数を格納するための作業域として働く。符号化単位3101Cはプリンタへ送る画素を記憶し、一方、符号化単位3101Dは伸長器が次の画素を格納するための作業域として働く。   FIG. 50 shows the band buffer 3101 of the page 3100. The band buffer 3101 includes encoding units 3101A to 3101D. Coding units 3101A and 3101B serve as a work area for the decompressor to store the coefficients. Coding unit 3101C stores the pixels to send to the printer, while coding unit 3101D serves as a work area for the decompressor to store the next pixel.

ページ3100全体が印刷される時に、バンドバッファ3101の部分部分を循環的に使用できる。例えば、次の符号化単位として、符号化単位3101Dの画素がプリンタへ出力される画素である。そうなった時に、符号化単位3101B,3101Cは伸長器が係数を記憶するための作業域として使用される。またその時に、符号化単位3101Aは伸長器が次にプリンタへ出力する画素を記憶するための作業域として使用される。   When the entire page 3100 is printed, a portion of the band buffer 3101 can be used cyclically. For example, as the next encoding unit, the pixel of the encoding unit 3101D is a pixel output to the printer. When this happens, coding units 3101B and 3101C are used as a work area for the decompressor to store the coefficients. At that time, the encoding unit 3101A is used as a work area for storing the pixels that the decompressor outputs next to the printer.

本発明においては、係数は画素より大きい。したがって、2倍のメモリが作業域メモリに割り当てられる。別の実施例では、バンドは多くの又はより少ない符号化単位に分割される。例えば、一実施例では、バンドはそれぞれ8個の符号化単位に分割される。   In the present invention, the coefficient is larger than the pixel. Therefore, twice as much memory is allocated to the work area memory. In another embodiment, the band is divided into many or fewer coding units. For example, in one embodiment, each band is divided into 8 coding units.

<メモリ帯域幅>
画素データインターフェースと係数データインターフェースは協力してバンドバッファメモリを効率的に管理する。高速ページモードDRAM、EDO(extended data out)DRAM、その他の連続アクセスに適したメモリが使用されるときには、これらインターフェースは連続したアドレスのデータを十分な長さのバーストとして転送し、メモリの可能帯域幅を有効に利用する。連続したアドレスに対するバーストアクセスをサポートするために、いくつかの小バッファが必要とされるかもしれない。
<Memory bandwidth>
The pixel data interface and the coefficient data interface cooperate to efficiently manage the band buffer memory. When high-speed page mode DRAM, EDO (extended data out) DRAM, or other memory suitable for continuous access is used, these interfaces transfer data at consecutive addresses as a sufficiently long burst, and the available bandwidth of the memory. Make effective use of width. Several small buffers may be needed to support burst access to consecutive addresses.

図51は、並列メモリアクセス要求を説明する復号化タイミング図である。図51において、復号化に必要とされる帯域幅は以下のとおりである。一実施例において、2MHz画素クロック、8MHz成分クロック、32MHz復号化器クロックが用いられ、また、プリントエンジンが1バイト/成分クロックを要求し、変換器が1係数につき2バイトを読み込み、1成分につき1バイトを書き込むことを思い出されたい。変換が符号化単位時間の半分で実行されるとすれば、変換は6バイト/成分クロックを必要とする。変換速度は、計算時間ではなくメモリ帯域幅によって制限される。24バイト/成分クロックの帯域幅を利用できるならば、符号化単位時間の8分の1の時間内で変換を計算できるであろう。外部メモリがシームのために使用されるときには、変換は余分な帯域幅を必要とするかもしれない。一実施例では、符号化データの最高重要度部分については、係数を復号化するのに1成分クロックあたり2バイトの書き込みを必要とする。符号化データの低重要度部分の各ビットプレーンについては、復号化するのに1成分クロックにつき1バイトの読み出しと書き込みを必要とする。なお、これは実施例によってはもっと小さいかもしれない。両方の動作が符号化単位時間の半分を使うならば、4バイト/成分クロックの帯域幅と24バイト/成分クロックの帯域幅がそれぞれ必要となろう。コンテクストシーム情報のために外部メモリが使用されるならば、余分な帯域幅が必要となるかもしれない。   FIG. 51 is a decoding timing diagram illustrating parallel memory access requests. In FIG. 51, the bandwidth required for decoding is as follows. In one embodiment, a 2 MHz pixel clock, an 8 MHz component clock, a 32 MHz decoder clock are used, the print engine requests a 1 byte / component clock, and the converter reads 2 bytes per coefficient, per component. Remember to write a byte. If the conversion is performed in half of the encoding unit time, the conversion requires 6 bytes / component clock. Conversion speed is limited by memory bandwidth, not computation time. If a bandwidth of 24 bytes / component clock is available, the transform could be calculated within 1 / 8th of the encoding unit time. When external memory is used for seams, the conversion may require extra bandwidth. In one embodiment, the highest importance portion of the encoded data requires 2 bytes to be written per component clock to decode the coefficients. For each bit plane of the low-importance portion of the encoded data, it is necessary to read and write one byte per component clock for decoding. Note that this may be smaller in some embodiments. If both operations use half of the encoding unit time, then 4 bytes / component clock bandwidth and 24 bytes / component clock bandwidth would be required respectively. If external memory is used for context seam information, extra bandwidth may be required.

一実施例では、最高のバーストモード転送速度は、4メモリアクセス/成分クロック(1アクセス/復号化器クロック)である。したがって、32ビットのデータバスを用いれば、最高転送速度は16バイト/成分クロックよりやや小さい。64ビットのデータバスを用いれば、最高転送速度は32バイト/成分クロックよりやや小さい。   In one embodiment, the highest burst mode transfer rate is 4 memory accesses / component clock (1 access / decoder clock). Therefore, when a 32-bit data bus is used, the maximum transfer rate is slightly smaller than 16 bytes / component clock. If a 64-bit data bus is used, the maximum transfer rate is slightly smaller than 32 bytes / component clock.

<LICメモリの必要帯域幅の削減>
LICの各係数の各ビットは、復号化中に外部メモリの1回の読み出しと1回の書き込みを必要とする。(符号化には1回の読み出ししか必要としない。)これらのメモリアクセスが必要とされるメモリ帯域幅の大半の原因である。一実施例では、各LIC係数を8ビット単位で記憶する代わりに、可能な時に8ビット未満を使って係数を記憶することにより必要な帯域幅を減らす。
<Reducing the required bandwidth of LIC memory>
Each bit of each coefficient of the LIC requires one read and one write to the external memory during decoding. (Encoding requires only one read.) These memory accesses are responsible for most of the memory bandwidth required. In one embodiment, instead of storing each LIC coefficient in units of 8 bits, the required bandwidth is reduced by storing the coefficients using less than 8 bits when possible.

図66は、各ビットプレーンの復号化のためLIC係数を記憶するのに必要なメモリ量を表している。図66において、MICの処理時に1係数につき1ビット(テールオンビット)が書き込まれる。ビットプレーン5のために書き込まれるものがビットプレーン4のために再び読み出される:テールオンビットと、ビット5が何であったかと、ビット5が1であったときの符号ビットを含む2〜3ビットである。割合は、各ビットプレーンについて、何パーセントの係数が関係しているかを示す。これは、図31を見ればもっと明瞭になろう。図31において、DD1からDS4,SD4までの部分帯域からの全係数がビットプレーン5にデータを持つので(網掛けされているように)、ビットプレーン5は全ての部分帯域からの係数を持つ。ビットプレーン0はDD1部分帯域からの係数しか持たない。図66に示されるように、ビットプレーン4とビットプレーン5は共に全部分帯域からの係数を有するので、その割合は100%であるが、ビットプレーン0は25%の係数しか持たない(DD1部分帯域に)。復号化が進むにつれ、いくつかのビットプレーンはビットプレーン0に達する前に完了する。   FIG. 66 shows the amount of memory required to store LIC coefficients for decoding each bit plane. In FIG. 66, 1 bit (tail on bit) is written per coefficient during the MIC processing. What is written for bit plane 5 is read again for bit plane 4: a tail on bit, what bit 5 was, and 2-3 bits including the sign bit when bit 5 was 1 is there. The ratio indicates how many coefficients are involved for each bit plane. This will be clearer from FIG. In FIG. 31, since all the coefficients from the partial bands DD1 to DS4 and SD4 have data in the bit plane 5 (as shaded), the bit plane 5 has coefficients from all the partial bands. Bitplane 0 has only coefficients from the DD1 partial band. As shown in FIG. 66, since both bit plane 4 and bit plane 5 have coefficients from the entire partial band, the ratio is 100%, but bit plane 0 has only a coefficient of 25% (DD1 portion). To the band). As decoding proceeds, some bitplanes are completed before bitplane 0 is reached.

図66において、復号化の開始時はビットプレーンの復号化は全く行われていないため、全ての係数の1ビット(1係数につき1ビット)だけ読み出されヘッド又はテールであるか調べられる。復号化が進むにしたがい1係数あたりのビット数が増加する。   In FIG. 66, since decoding of the bit plane is not performed at the start of decoding, only one bit of all the coefficients (one bit per coefficient) is read to check whether it is a head or tail. As decoding progresses, the number of bits per coefficient increases.

図52は、読み出されたデータより大きなデータの書き込みを処理するため循環アドレッシングを利用する方法を説明するものである。このようなことが起きるのは、処理の結果、初めに読み出されたビットより多い、書き込むべきビットが発生するからである。図52において、プロセスは1係数あたり1ビット(メモリスペースの8分の1である)を書き込むことから始まる。続いて、1係数あたり1ビットが読み出され、同時に1係数あたり2〜3ビットが書き込まれる。次に、1係数あたり2〜3ビットが読み出され、同時に1係数あたり3〜4ビットが書き込まれる。これがデータ全部が処理されるまで続く。   FIG. 52 illustrates a method of using cyclic addressing to process writing of data larger than the read data. This occurs because the processing results in more bits to be written than initially read bits. In FIG. 52, the process begins by writing one bit per coefficient (which is one eighth of the memory space). Subsequently, 1 bit is read per coefficient, and 2 to 3 bits are written simultaneously per coefficient. Next, 2-3 bits per coefficient are read, and 3-4 bits per coefficient are written simultaneously. This continues until all the data has been processed.

ハードウェア構成を簡略化するためのいくつかの選択肢がある。常に最小数のビットを使用するのではなく、ことによれば1,2,3,4,6又は8ビットだけが使用されるかもしれない。これは、サイズによっては1ビットが無駄なるかもしれない。LICにおいて符号ビットが符号化されないか分かっていないときでも、符号ビットのためのスペースは常に使用できるだろう。   There are several options for simplifying the hardware configuration. Rather than always using the minimum number of bits, possibly only 1, 2, 3, 4, 6 or 8 bits may be used. This may waste 1 bit depending on the size. Even when it is not known in the LIC that the sign bit is not encoded, the space for the sign bit will always be available.

メモリ帯域幅を一層減少させるであろう選択肢は、テールオンビットを必要でないときには記憶しないことかもしれない。例えば、ビットプレーン0を書き込む時には、ヘッドビットかテールビットの6ビットがある。これらビットのどれかが非0ならば、テールオンは真のはずであり、テールオン値を記憶する必要はなく、符号ビットを第7ビットとして記憶させることができる。   An option that would further reduce the memory bandwidth may be to not store the tail on bit when not needed. For example, when writing bit plane 0, there are 6 bits, head bits or tail bits. If any of these bits are non-zero, the tail on should be true and there is no need to store the tail on value and the sign bit can be stored as the seventh bit.

最高重要度部分(MIC)のためのメモリ帯域幅も可変長記憶方法によって減らしてもよい。いつも1係数あたり8ビットを使用する代わりに、最小数のビットを使用するだけでも節減をもたらすだろう。0係数の代わりに6ビットのルックアヘッド値(図34に示すような)を記憶すれば、メモリが一層効率的に使用されることになろう。   The memory bandwidth for the highest importance part (MIC) may also be reduced by a variable length storage method. Instead of always using 8 bits per coefficient, using only the minimum number of bits will result in savings. If a 6-bit look-ahead value (as shown in FIG. 34) is stored instead of the zero coefficient, the memory will be used more efficiently.

<可逆色空間>
本発明は、2つの色空間の間の変換を完全に可逆的でかつ整数演算で実行可能とする可逆色空間変換を随意に実行できるようにする。すなわち、変換された色空間データを逆変換することにより、順変換過程で丸めや打ち切りが行われようと既存のデータを全て得ることができる。可逆色空間変換は、本願出願人に譲渡された米国特許出願第08/436,662号(1995年5月8日受理、“Method and Apparatus for Reversible Color Conversion”)に記載されている。
<Reversible color space>
The present invention makes it possible to optionally perform a reversible color space conversion that makes the conversion between two color spaces completely reversible and can be performed with integer arithmetic. That is, by reversely transforming the converted color space data, all existing data can be obtained regardless of whether rounding or truncation is performed in the forward conversion process. Reversible color space conversion is described in commonly assigned US patent application Ser. No. 08 / 436,662 (accepted May 8, 1995, “Method and Apparatus for Reversible Color Conversion”).

色空間変換は、ロスレスの結果を提供する能力を損なわずに反対(opponent)色空間の利点を活かす。ロスレスの場合、反対色空間は相関を弱め圧縮を向上させる。ロッシーの場合、反対色空間は輝度情報を色差情報より軽く量子化させ視覚的品質の向上をもたらす。本発明の変換に可逆色空間が使用されると、輝度及び色差係数の埋め込みはロッシー圧縮としてはサブサンプリングよりも優れており、しかもロスレス圧縮が可能である。   Color space conversion takes advantage of the opponent color space without compromising the ability to provide lossless results. In the lossless case, the opposite color space weakens the correlation and improves compression. In the case of lossy, the opposite color space quantizes the luminance information lighter than the color difference information, resulting in improved visual quality. When a reversible color space is used in the conversion of the present invention, embedding of luminance and color difference coefficients is superior to subsampling as lossy compression, and lossless compression is possible.

可逆色空間が使用されるときには、8ビット輝度成分の最上位ビットと9ビット色差成分が同じ桁揃えとなるように係数を桁揃えするのが望ましい。ロッシー圧縮のためには、この桁揃えは色差データを輝度データの2倍に量子化せしめ、また輝度のロスレス圧縮と色差のロッシー(ただし非常に高品質の)圧縮を可能にする。これらの結果は共にHuffman視覚系の特性を利用する。   When the reversible color space is used, it is desirable to align the coefficients so that the most significant bit of the 8-bit luminance component and the 9-bit color difference component have the same digit alignment. For lossy compression, this alignment allows the color difference data to be quantized twice as much as the luminance data, and allows lossless compression of the luminance and lossy (but very high quality) compression of the color difference. Both of these results take advantage of the characteristics of the Huffman visual system.

<他の画素操作>
プリンタは、殆ど又は全体が非連続階調の文書をしばしば処理する。例えば、黒と白だけ(0と255の値だけ)からなるテキスト画像が普通であろう。一実施例では、バンドのヒストグラムが作られる。例えば、0,255黒/白だけの画像(K成分)を0,1画像に再写像することができる。同様のコンパクション(compaction)をスポットカラー画像に対して施すことができる。なお、コンパクションが使われるときには、圧縮はロスレスでなければならない。しかし、コンパクションが行われる時には、達成されるロスレス圧縮は実質的に改善される。
<Other pixel operations>
Printers often process most or all non-continuous tone documents. For example, a text image consisting only of black and white (only values 0 and 255) would be common. In one embodiment, a band histogram is created. For example, an image with only 0,255 black / white (K component) can be re-mapped to 0,1 image. Similar compaction can be applied to spot color images. Note that compression must be lossless when compaction is used. However, the lossless compression achieved is substantially improved when compaction takes place.

また、本明細書に述べた重複ウェーブレット変換を使う代わりに、ロスレス、ビットプレーン・ベースの、JBIGのようなコンテクストモデルによって、2値画像とスポットカラー画像を処理することもできる。   Further, instead of using the overlapping wavelet transform described in this specification, a binary image and a spot color image can be processed by a context model such as JBIG based on a lossless bit plane.

他の実施例では、システムがバイナリモードを持つように設計されるかもしれない。図54は、JBIG方式コンテクストモデルテンプレートと類似したバイナリコンテクストモデルの一実施例を示す。図54において、シフトレジスタ3501〜3503はJBIG標準にしたがう複数のビットを提供する。シフトレジスタ3501,3502は、ラインバッファ3500より2つ上のラインと1つ上のラインを受け取る。この“上”ラインは、図56に示されるような、テンプレートの北西(NW)位置、北(N)位置及び北東(NE)位置の画素に対応するビットを提供する。シフトレジスタ3501,3502の出力は直接的にコンテクストモデル(メモリ)3505に与えられる。シフトレジスタ3503の出力は、JBIG標準の適応的テンプレートを実現できるオプショナルなmux3504へ与えられる。コンテクストメモリ(モデル)3505は確率予測マシン3506に接続され、確率予測マシン3506はビットジェネレータ3507へ接続される。コンテクストメモリ(モデル)3505、確率予測マシン3506、ビットジェネレータ3507は相互に従来周知の方法で動作する。   In other embodiments, the system may be designed to have a binary mode. FIG. 54 shows an example of a binary context model similar to the JBIG context model template. In FIG. 54, shift registers 3501-3503 provide a plurality of bits according to the JBIG standard. The shift registers 3501 and 3502 receive two lines above and one line above the line buffer 3500. This “top” line provides bits corresponding to the northwest (NW), north (N) and northeast (NE) position pixels of the template, as shown in FIG. The outputs of the shift registers 3501 and 3502 are directly given to the context model (memory) 3505. The output of the shift register 3503 is fed to an optional mux 3504 that can implement a JBIG standard adaptive template. The context memory (model) 3505 is connected to a probability prediction machine 3506, and the probability prediction machine 3506 is connected to a bit generator 3507. The context memory (model) 3505, the probability prediction machine 3506, and the bit generator 3507 operate in a mutually known manner.

mux3504の出力は、シフトレジスタ3501,3502の出力及びビットジェネレータ3507からのフィードバックと共に、コンテクストメモリ3505のアドレッシングに使われるコンテクストビンアドレスを形成する。一実施例では、コンテクストメモリ3505は、一実施例では、コンテクストメモリ3505に、各確率状態を記述するための6ビットからなるコンテクストモデルが1,024個入っている。これは1,024×6ビットのコンテクストメモリを必要とする。   The output of mux 3504, together with the outputs of shift registers 3501 and 3502 and feedback from bit generator 3507, forms a context bin address that is used for the addressing of context memory 3505. In one embodiment, the context memory 3505, in one embodiment, contains 1,024 context models consisting of 6 bits for describing each probability state. This requires a 1,024 × 6 bit context memory.

ビットジェネレータ3507は、カレント・ラインから復号化されたビットを、コンテクストアドレスの一部として提供するので、コンテクストメモリに対するアクセス時間を含んだ大きな“ビット−コンテクスト”遅延がある。   Since bit generator 3507 provides the decoded bits from the current line as part of the context address, there is a large “bit-context” delay that includes access time to the context memory.

図55は、シフトレジスタ3501,3502の出力及びマルチプレクサ3504の出力を受け取る同一アドレス指示ブロック3601と協力し、確率予測マシンをアクセスするために、カレント・ラインからの復号化ビットを使用する他の実施例を示す。PEM3506は、前ビットを受け取り、それを利用して、使用されたコンテクスト対の中から適切な1つのコンテクストを選択する。選択されたコンテクストは更新され、両コンテクストはメモリに再書き込みされる。同一アドレス指示ブロック3601は、既に読み出されてデータが確率予測マシン内にあるアドレスを検出する。同一アドレス指示ブロック3801は、メモリ内の失効した情報に代えてPEM内に既にあるデータ(更新されたデータかもしれない)を使用するための信号も発生する。   FIG. 55 cooperates with the same addressing block 3601 that receives the outputs of shift registers 3501 and 3502 and the output of multiplexer 3504, and another implementation that uses decoded bits from the current line to access the probability prediction machine. An example is shown. The PEM 3506 receives the previous bit and uses it to select one appropriate context from the context pair used. The selected context is updated and both contexts are rewritten to memory. The same address indication block 3601 detects an address that has already been read and data is in the probability prediction machine. The same address indication block 3801 also generates a signal to use data already in the PEM (which may be updated data) instead of stale information in the memory.

一実施例では、復号化器は各確率状態を記述する6ビットからなる1024個のコンテクストビンを含む。これは512×12ビットのコンテクストメモリを必要とする。シフトレジスタ3501,3502の出力は、マルチプレクサ3504の出力と共に、前ビットだけが利用されない部分コンテクストビンアドレスを与える。これにより、コンテクストメモリ3505から1対のコンテクストビンが選択される。コンテクストビンの2ビット以上を部分コンテクストから排除できる。各メモリロケーションに2のn乗個の確率状態が入る。ここでnは排除されたビットの個数である。   In one embodiment, the decoder includes 1024 context bins of 6 bits that describe each probability state. This requires a 512 × 12 bit context memory. The outputs of the shift registers 3501 and 3502 along with the output of the multiplexer 3504 give a partial context bin address where only the previous bit is not used. As a result, a pair of context bins is selected from the context memory 3505. Two or more bits of the context bin can be excluded from the partial context. There are 2 n probability states in each memory location. Here, n is the number of excluded bits.

“ビット−コンテクスト”遅延が減少することに注意されたい。前ビットが復号化される前にコンテクストメモリアクセスが生じてもよい。前ビットが復号化される前に、対をなす両状態に対するPEM状態の処理が並列的に開始してもよい。高速動作を達成できる。   Note that the “bit-context” delay is reduced. A context memory access may occur before the previous bit is decoded. Before the previous bit is decoded, processing of the PEM state for both paired states may begin in parallel. High speed operation can be achieved.

<符号化器レート制御>
符号化器のレート制御を行うには、データを量子化する能力があるだけでなく、量子化に関する決定ができるようにレートを測定することも必要である。レートが圧縮が良好でないこと(すなわち所望のレベルでないこと)を示すときには、量子化を増大させてよい。他方、レートが圧縮が高すぎることを示すときには、量子化を減少させてよい。レート制御決定は符号化器と復号化器とで全く同じように行われねばならない。
<Encoder rate control>
Encoder rate control requires not only the ability to quantize the data, but also measure the rate so that decisions about quantization can be made. When the rate indicates poor compression (ie not at the desired level), the quantization may be increased. On the other hand, when the rate indicates that the compression is too high, the quantization may be reduced. The rate control decision must be made in exactly the same way at the encoder and decoder.

符号化器と復号化器が同じ決定をするよう保証する一方法は、シグナリング(signaling)を使うことである。符号化器は所定のインターバルでレートを測定し、次インターバルで利用するため量子化Qをメモリに記憶する。復号化器は単純に各インターバルのための量子化をメモリから取り出す。これには余分なメモリが必要である。例えば、(Qの+2,+1,0,-1の変化の表示又は1,2,3,4のQの記憶のための)256ロケーション×2ビットのオンチップSRAMは、4096ライン画像に対し16ライン毎に量子化Qを変化させるのに足りるであろう。   One way to ensure that the encoder and decoder make the same decision is to use signaling. The encoder measures the rate at a predetermined interval and stores the quantization Q in memory for use at the next interval. The decoder simply retrieves the quantization for each interval from memory. This requires extra memory. For example, a 256-location x 2-bit on-chip SRAM (for displaying +2, + 1,0, -1 changes in Q or storing 1, 2, 3, 4 Q) can generate 4096 line images. On the other hand, it would be sufficient to change the quantization Q every 16 lines.

レート測定には様々な選択肢がある。図53は、符号化器と復号化器のペアを示す。図53に示す符号化器/復号化器ペアは、コンテクストモデル(CM)、確率予測モデル/マシン(PEM)、及びビットジェネレータ(BG)、並びにランカウント(run count)並べ換えユニット、インターリーブド(interleaved)ワード並べ換えユニット及びシフタからなる。説明については、本願出願人に譲渡された、また引用により本明細書に組み込まれる米国特許第5,381,145号及び同第5,583,500号を参照されたい。   There are various options for rate measurement. FIG. 53 shows an encoder / decoder pair. The encoder / decoder pair shown in FIG. 53 includes a context model (CM), a probability prediction model / machine (PEM), and a bit generator (BG), and a run count reordering unit, interleaved. ) Consists of word rearrangement unit and shifter. See US Pat. Nos. 5,381,145 and 5,583,500, assigned to the assignee of the present application and incorporated herein by reference.

復号化器がレートを同じ場所で測定できないとしても、レート測定値は明確でなければならない。例えば、レート測定値は、圧縮コードストリームの一部として復号化器に与えられる。   Even if the decoder cannot measure the rate at the same location, the rate measurement must be clear. For example, the rate measurement is provided to the decoder as part of the compressed code stream.

小さい方のサークル(図53中の位置2)として示した、もう一つのレート測定の選択肢は、符号化器においてインターリーブド・ワードの始まりをカウントすることである。これは、他の実施例では、ビット生成ステージ(図53中の位置4)の後で行われる。符号化器と復号化器は同時に符号語に取りかかるため、レートの暗黙的なシグナリングを用いてもよい。このカウントを、レジスタと符号語長を加算する加算器からなる平均符号語長を測定する計算ハードウェアによって行ってもよい。このカウントと平均ビット数測定を行うためのハードウェアは当該技術分野では周知であり、図53にブロック3401として示されている。このブロックを、システム中の別の場所(例えば、符号化器及び復号化器の両方の位置1,2,3,4)で同様の測定をするために用いてもよいことは明らかであろう。   Another rate measurement option, shown as the smaller circle (position 2 in FIG. 53), is to count the beginning of the interleaved word at the encoder. This is done after the bit generation stage (position 4 in FIG. 53) in other embodiments. Since the encoder and decoder work on the codeword at the same time, rate implicit signaling may be used. This counting may be performed by computational hardware that measures the average codeword length consisting of a register and an adder that adds the codeword length. The hardware for performing this count and average bit count measurement is well known in the art and is shown as block 3401 in FIG. It will be apparent that this block may be used to make similar measurements at other locations in the system (eg, positions 1, 2, 3, 4 of both encoder and decoder). .

他の選択肢は、ビットジェネレータの後及びインターリーブド・ワード並べ換えユニットの前(図53の位置3)で完全な符号語のサイズをカウントする方法や、ディスクに実際に書き込まれたデータ量を測定する方法(図53の位置1)であろう。   Other options are to count the complete codeword size after the bit generator and before the interleaved word reordering unit (position 3 in FIG. 53), or measure the amount of data actually written to disk. It would be the method (position 1 in FIG. 53).

レート測定は暗黙的でもよい。すなわち、符号化器と復号化器の両方で同じレート測定計算を行う。例えば、符号化器と復号化器が、新しい符号語が始まる度に符号語の平均サイズを累積してもよい。これは図53の位置4に示されている。(実際のサイズを使うことはできない。符号化器は符号語の終わりまでサイズが分からないからである。)
コアに使用されるRコードのサイズがR2(0)からR2(7)まで変わるときには、平均符号語サイズは1ビットから4.5ビットまで変化する。確率予測がうまくいけば、平均を使うことは非常に正確であろう。そうでなくとも、最小符号語長と最大符号語長の差は平均に対し一般的にそれほど大きくないので、予測値は依然として有効である。Rz(k)符号語の平均サイズはk/2+1ビットである。
Rate measurement may be implicit. That is, the same rate measurement calculation is performed in both the encoder and the decoder. For example, the encoder and decoder may accumulate the average codeword size each time a new codeword starts. This is shown at position 4 in FIG. (The actual size cannot be used because the encoder does not know the size until the end of the codeword.)
When the size of the R code used for the core changes from R2 (0) to R2 (7), the average codeword size changes from 1 bit to 4.5 bits. If the probability prediction is successful, using the average will be very accurate. Otherwise, the predicted value is still valid because the difference between the minimum codeword length and the maximum codeword length is generally not very large relative to the average. The average size of the Rz (k) codeword is k / 2 + 1 bits.

目標とするところは、ほぼ全ての場合に、最高重要度データが十分に圧縮され、かつ無量子化(Q=1)が必要とならないことであろう。“病理学の”画像だけは量子化(Q>1)を必要とする。しかし、量子化機能を含むことにより、病理学の画像に対しシステムが動かなくならないよう保証することができる。   The goal is that in almost all cases, the highest importance data will be sufficiently compressed and no quantization (Q = 1) will be required. Only “pathological” images require quantization (Q> 1). However, by including a quantization function, it can be ensured that the system does not move for pathological images.

符号化器レート制御のもう一つの利益は、最大帯域幅に達した時に低重要度データの符号化を止めることができることである。これは符号化スピードを増加させ、データ出力のためのトータル時間を減少させる(例えばトータル印刷時間を減らす)。   Another benefit of encoder rate control is that encoding of low importance data can be stopped when maximum bandwidth is reached. This increases the encoding speed and reduces the total time for data output (eg, reduces the total printing time).

量子化変化の結果(Qの値)を記憶することが重要である。例えば、量子化が変化する場合、一群の係数中の最大係数の決定は首尾一貫していなければならない。また、(ビットプレーンが捨てられる場合に)量子化係数を再構成するのに、最良の結果を得るためには捨てられたビットプレーン数を考慮する必要がある。   It is important to store the result of the quantization change (Q value). For example, if the quantization changes, the determination of the maximum coefficient in a group of coefficients must be consistent. Also, to reconstruct the quantized coefficients (when bit planes are discarded), the number of discarded bit planes needs to be considered for best results.

<高速の並列符号化とコンテクストモデル>
本発明のエントロピー符号化部は2つの部分からなる。一つは並列動作する高速符号化コアで、確率予測とビット生成をする。もう一つはコンテクストモデルで、符号化に使うコンテクストを提供する。
<High-speed parallel coding and context model>
The entropy encoding unit of the present invention consists of two parts. One is a high-speed coding core that operates in parallel, and performs probability prediction and bit generation. The other is a context model, which provides the context used for encoding.

所要速度を達成するために必要なコアの個数はアプリケーション次第である。   The number of cores required to achieve the required speed depends on the application.

エントロピー符号化システムの他の部分は、本発明の係数のためのコンテクストモデルである。コンテクストモデルを構築するにあたって、とり得るトレードオフが数多くある。本発明は、一実施例において、本発明の高速並列コーダの使用をサポートするための並列化を可能にするコンテクストモデルを低いハードウェアコストで提供する。このコンテクストモデルの実施例は前述した。   Another part of the entropy coding system is the context model for the coefficients of the present invention. There are many possible trade-offs when building a context model. The present invention, in one embodiment, provides a context model that enables parallelism to support the use of the high speed parallel coder of the present invention at low hardware costs. Examples of this context model have been described above.

ウェーブレット係数のためのコンテクストモデルについてだけ説明したが、本発明はウェーブレット係数だけをサポートするコンテクストモデルに限定されるものではない。例えば、2値画像又はスポットカラー画像のためにビットプレーン符号化モードが必要ならば、米国特許出願第08/642,518号(1996年5月3日受理、“Compression and Decompression with Wavelet Style and Binary Style Including Quantization by Device-Dependent Parser”)、及び、米国特許出願第08/643,268号(1996年5月3日、“Compression/Decompression Using Reversible Embedded Wavelets”に述べられているような、補助のコンテクストモデルを利用してよい。   Although only context models for wavelet coefficients have been described, the present invention is not limited to context models that support only wavelet coefficients. For example, if a bit plane coding mode is required for binary or spot color images, US patent application Ser. No. 08 / 642,518 (accepted May 3, 1996, “Compression and Decompression with Wavelet Style and Binary Style Including” Quantization by Device-Dependent Parser ”) and US patent application No. 08 / 643,268 (May 3, 1996,“ Compression / Decompression Using Reversible Embedded Wavelets ”) You can do it.

<並列化>
一実施例では、係数のビット数が8ビットから12ビットまで(可逆色空間が使われるときには13ビットまで)の場合に、1係数あたり8ビットを符号化/復号化するために4つの高速符号化コアが使用される。一実施例では、1つのコアに4成分のそれぞれが割り当てられ、並列化とデータフローを単純化する。各係数は、(ルックアヘッドのためのデシジョン等を含む)ビットの符号化/復号化のために最大16サイクルまで使うことができる。
<Parallelization>
In one embodiment, four fast codes to encode / decode 8 bits per coefficient when the number of bits of the coefficient is from 8 bits to 12 bits (up to 13 bits when lossless color space is used). Cores are used. In one embodiment, each of the four components is assigned to one core, simplifying parallelization and data flow. Each coefficient can be used for up to 16 cycles for bit encoding / decoding (including decisions for look-ahead etc.).

本発明は、一部のコアがそのルックアヘッドの成功により遊休状態であったり別のコアが先頭の“オン”ビットの後の符号ビットを処理中であっても、各成分用コアを同期した状態に維持する。コンテクストモデルを動作させるためのトータル時間は、データによって変動し、特にルックアヘッドの有効性によって大きく変動し、また、それほどではないが先頭の“オン”ビットの位置によっても変動する。   The present invention synchronizes the component cores even when some cores are idle due to the success of their look-ahead and other cores are processing the sign bit after the leading “on” bit. Maintain state. The total time for operating the context model varies depending on the data, and particularly varies greatly depending on the effectiveness of the look-ahead, and also varies depending on the position of the leading “on” bit.

以上の説明を読めば当業者には本発明の多くの変形及び修正が明白となるであろうから、説明のために図示、説明された特定の実施例は限定することを意図したものでは決してないものと理解されるべきである。   Many variations and modifications of this invention will become apparent to those skilled in the art after reading the foregoing description, so that the specific embodiments shown and described for purposes of illustration are in no way intended to be limiting. It should be understood as not.

コンテクスト従属関係を示す図である。It is a figure which shows a context dependency. ラスタ順と同様の順序を示す図である。It is a figure which shows the same order as a raster order. 短シーム順の一例を示す図である。It is a figure which shows an example of a short seam order. 短シーム順の他の例を示す図である。It is a figure which shows the other example of a short seam order. TS変換のレベル1水平処理結果を示す図である。It is a figure which shows the level 1 horizontal processing result of TS conversion. TS変換のレベル1垂直処理結果を示す図である。It is a figure which shows the level 1 vertical processing result of TS conversion. TS変換のレベル2水平処理結果を示す図である。It is a figure which shows the level 2 horizontal processing result of TS conversion. TS変換のレベル2垂直処理結果を示す図である。It is a figure which shows the level 2 vertical processing result of TS conversion. TS変換のレベル3水平処理結果を示す図である。It is a figure which shows the level 3 horizontal processing result of TS conversion. TS変換のレベル3垂直処理結果を示す図である。It is a figure which shows the level 3 vertical processing result of TS conversion. TS変換のレベル4水平処理結果を示す図である。It is a figure which shows the level 4 horizontal processing result of TS conversion. TS変換のレベル4垂直処理結果を示す図である。It is a figure which shows the level 4 vertical processing result of TS conversion. 順/逆フィルタの一例のブロック図である図である。It is a figure which is a block diagram of an example of a forward / reverse filter. 本発明による第1レベル順変換の一例のブロック図である。It is a block diagram of an example of the first level forward conversion according to the present invention. 本発明による完全な順変換の一例を示すブロック図である。It is a block diagram which shows an example of perfect forward conversion by this invention. 係数出力時のタイミング図である。It is a timing chart at the time of coefficient output. TT変換のレベル1水平処理結果を示す図である。It is a figure which shows the level 1 horizontal processing result of TT conversion. TT変換のレベル1垂直処理結果を示す図である。It is a figure which shows the level 1 vertical processing result of TT conversion. TT変換のレベル2水平処理結果を示す図である。It is a figure which shows the level 2 horizontal processing result of TT conversion. TT変換のレベル2垂直処理結果を示す図である。It is a figure which shows the level 2 vertical processing result of TT conversion. TT変換のレベル3水平処理結果を示す図である。It is a figure which shows the level 3 horizontal processing result of TT conversion. TT変換のレベル3垂直処理結果を示す図である。It is a figure which shows the level 3 vertical processing result of TT conversion. TT変換のレベル4水平処理結果を示す図である。It is a figure which shows the level 4 horizontal processing result of TT conversion. TT変換のレベル4垂直処理結果を示す図である。It is a figure which shows the level 4 vertical processing result of TT conversion. 10タップの順/逆フィルタユニットのブロック図である。It is a block diagram of a 10 tap forward / reverse filter unit. 図25に示す順/逆フィルタにおける重複ユニットの一例のブロック図である。It is a block diagram of an example of the duplication unit in the forward / reverse filter shown in FIG. コードストリームの順序付け及び符号化単位内の順序付けを示す図である。It is a figure which shows the ordering of the code stream, and the ordering within a coding unit. bビット/画素の入力画像を2レベルTS変換及びTT変換で分解した場合の各種係数のビット深さを示す図である。It is a figure which shows the bit depth of various coefficients at the time of decomposing | disassembling the input image of b bit / pixel by 2 level TS conversion and TT conversion. 本発明において係数桁揃えに用いられる周波数帯域に対する乗数の一例を示す図である。It is a figure which shows an example of the multiplier with respect to the frequency band used for coefficient digit alignment in this invention. 最高重要度データと低重要度データとに分割した係数を示す図である。It is a figure which shows the coefficient divided | segmented into the highest importance data and the low importance data. データが捨てられることのないロスレスのケースを示す図である。It is a figure which shows the lossless case where data is not thrown away. データの1ビットプレーンが捨てられたケースを示す図である。It is a figure which shows the case where 1 bit plane of data was thrown away. 圧縮/伸長システムの動作の一例を示すフローチャートである。It is a flowchart which shows an example of operation | movement of a compression / decompression system. 一つの木に対し6ビットが用いられる例を示す図である。It is a figure which shows the example in which 6 bits are used with respect to one tree. 最高重要度部分の符号化を示すフローチャートである。It is a flowchart which shows the encoding of the highest importance part. 最高重要度データの符号化パスに用いられるフォーマッティングユニット及びコンテクストモデルの一例のブロック図である。It is a block diagram of an example of the formatting unit and context model used for the encoding pass of highest importance data. 先頭ビットプレーンユニットの一例を示すブロック図である。It is a block diagram which shows an example of a head bit plane unit. LICビットプレーンの符号化プロセスの一例を示すフローチャートである。It is a flowchart which shows an example of the encoding process of a LIC bit plane. 低重要度データのためのルックアヘッド・モデル及びコンテクストモデルの一例を示すブロック図である。FIG. 4 is a block diagram illustrating an example of a look ahead model and a context model for low importance data. ヘッドビットのためのコンテクストモデルの一例を示すブロック図である。It is a block diagram which shows an example of the context model for head bits. 全ての隣り合うもの及び親による条件付けがあるコンテクストモデルの一例のためのメモリ使用方法を示す図である。FIG. 6 illustrates a memory usage for an example context model with all neighbors and parental conditioning. 符号ビットのためのコンテクストモデルの一例を示すブロック図である。It is a block diagram which shows an example of the context model for a code bit. LICに対する並列符号化の一例を示す図である。It is a figure which shows an example of the parallel encoding with respect to LIC. プリンタのフロントエンドの一例を示すブロック図である。FIG. 2 is a block diagram illustrating an example of a front end of a printer. プリンタのバックエンドの一例を示すブロック図である。2 is a block diagram illustrating an example of a back end of a printer. FIG. プリンタのバックエンドの他の例を示すブロック図である。FIG. 10 is a block diagram illustrating another example of a back end of a printer. プリンタの圧縮/伸長機能を含む集積回路チップの一例を示すブロック図である。FIG. 3 is a block diagram illustrating an example of an integrated circuit chip including a compression / decompression function of a printer. 印刷時の基本タイミングを示す図である。It is a figure which shows the basic timing at the time of printing. 画素データの編成方法の一例を示す図である。It is a figure which shows an example of the organization method of pixel data. バンドバッファを示す図である。It is a figure which shows a band buffer. 同時メモリアクセス要求を明らかにする復号化タイミング図である。FIG. 66 is a decoding timing diagram that reveals a simultaneous memory access request. 読み出されたデータより大きなデータの書き込みを処理するための循環アドレッシングの利用法を示す図である。It is a figure which shows the utilization method of the cyclic addressing for processing writing of data larger than the read data. 符号化器と復号化器のペアを示すブロック図である。It is a block diagram which shows the pair of an encoder and a decoder. バイナリコンテクストモデルの一例を示すブロック図である。It is a block diagram which shows an example of a binary context model. バイナリコンテクストモデルの他の例を示すフロック図である。It is a flock figure which shows the other example of a binary context model. 符号化単位の各係数の近傍係数を示す図である。It is a figure which shows the neighborhood coefficient of each coefficient of an encoding unit. MSE桁揃えに基づいたピラミッド桁揃えを示す図である。It is a figure which shows the pyramid digit alignment based on MSE digit alignment. ウェーブレット係数のMSE桁揃えを示す図である。It is a figure which shows the MSE digit alignment of a wavelet coefficient. 様々なレベル数の場合のウェーブレット木のスパンを示す表図である。It is a table | surface figure which shows the span of the wavelet tree in the case of various level numbers. 記憶する必要のある”ss”係数の個数を示す表図である。FIG. 5 is a table showing the number of “ss” coefficients that need to be stored. 4ビット係数のビットシグニフィカンス表現を示す表図である。It is a table | surface figure which shows the bit significance expression of a 4-bit coefficient. 係数桁揃えのための桁揃え数を示す表図である。It is a table | surface figure which shows the number of alignment for coefficient alignment. 最高重要度データ及び低重要度データの指示ビットを説明する表図である。It is a table | surface figure explaining the instruction | indication bit of highest importance data and low importance data. テール情報の定義を示す表図である。It is a table | surface figure which shows the definition of tail information. テールビットに用いられる確率状態を示す表図である。It is a table | surface figure which shows the probability state used for a tail bit. 各ビットプレーンの復号化のためのLIC係数の記憶に要するメモリ量を示す表図である。It is a table | surface figure which shows the memory amount required for the memory | storage of the LIC coefficient for decoding of each bit plane.

符号の説明Explanation of symbols

401,402 フィルタユニット
403〜406 レジスタ
407,408 マルチプレクサ(mux)
501 入力バッファ
502 レベル1変換部
503 ”ss”遅延メモリ
504 レベル2〜4順序ユニット
505 フィルタユニット
506 出力バッファ
801,802 加算器
803,804 マルチプレクサ(mux)
805 メモリ
806 マルチプレクサ(mux)
807 重複ユニット
807〜811 加算器
901〜906 加算器
907〜909 乗算器
910 除算器
1001 ヘッダ
1002 符号化単位
1003 最高重要度データ
1004 低重要度データ
1005 最低重要度データ
1301 最高重要度データ
1302 低重要度データ
1303,1304 指示ビット
1701 バレルシフタ
1702,1706 先頭ビットプレーンユニット
1703,1704 比較ユニット
1705 マルチプレクサ(mux)
1707 メモリ
1710 符号コンテクストモデル
1711 ヘッドコンテクストモデル
1712 テールコンテクストモデル
1801 ORゲート
1802 レジスタ
1803 プライオリティエンコーダ
2001 符号コンテクストモデル
2002 ヘッドコンテクストモデル
2003 テールコンテクストモデル
2004 マルチプレクサ(mux)
2005 ”=ヘッド?”ユニット
2006 FIFOバッファ
2101 テールオン情報/ビットジェネレータブロック
2102 重要度レベル・部分帯域バケッティングブロック
2103 上/左シフトレジスタ
2104 カレントシフトレジスタ
2105 下/右シフトレジスタ
2106 親レジスタ
2301 マルチプレクサ(mux)
2501 レンダラー
2503 バンドバッファ
2504 圧縮器
2505 ディスク
2602 伸長器
2603 バンドバッファ
2604 プリントエンジン
2705 画質改善ブロック
2801 画素データインターフェース
2802 可逆色空間変換器
2803 ウェーブレット変換ブロック
2804 係数データインターフェース
2805 コンテクストモデル
2806 符号化器/復号化器
2807 符号化データインターフェース
3500 ラインバッファ
3501〜3503 シフトレジスタ
3504 マルチプレクサ(mux)
3505 コンテクストメモリ
3506 確率予測マシン(PEM)
3507 ビットジェネレータ
3601 同一アドレス指示ブロック
4001,4002 加算器
4003,4004 マルチプレクサ(mux)
4005 レジスタファイル
4007〜4011 加算器
4015 マルチプレクサ(mux)
401, 402 Filter unit 403-406 Register 407, 408 Multiplexer (mux)
501 Input buffer 502 Level 1 conversion unit 503 "ss" delay memory 504 Level 2 to 4 order unit 505 Filter unit 506 Output buffer 801, 802 Adder 803, 804 Multiplexer (mux)
805 Memory 806 Multiplexer (mux)
807 Duplicate unit 807 to 811 Adder 901 to 906 Adder 907 to 909 Multiplier 910 Divider 1001 Header 1002 Coding unit 1003 Highest importance data 1004 Low importance data 1005 Lowest importance data 1301 Highest importance data 1302 Low importance Degree data 1303, 1304 Instruction bit 1701 Barrel shifter 1702, 1706 First bit plane unit 1703, 1704 Comparison unit 1705 Multiplexer (mux)
1707 Memory 1710 Code context model 1711 Head context model 1712 Tail context model 1801 OR gate 1802 Register 1803 Priority encoder 2001 Code context model 2002 Head context model 2003 Tail context model 2004 Multiplexer (mux)
2005 “= head?” Unit 2006 FIFO buffer 2101 tail-on information / bit generator block 2102 importance level / subband bucketing block 2103 upper / left shift register 2104 current shift register 2105 lower / right shift register 2106 parent register 2301 multiplexer (mux) )
2501 Renderer 2503 Band buffer 2504 Compressor 2505 Disc 2602 Decompressor 2603 Band buffer 2604 Print engine 2705 Image quality improvement block 2801 Pixel data interface 2802 Reversible color space converter 2803 Wavelet transform block 2804 Coefficient data interface 2805 Context model 2806 Encoder / Decode Encoder 2807 Encoded data interface 3500 Line buffer 3501-3503 Shift register 3504 Multiplexer (mux)
3505 Context Memory 3506 Probability Prediction Machine (PEM)
3507 Bit generator 3601 Same address indication block 4001, 4002 Adder 4003, 4004 Multiplexer (mux)
4005 Register file 4007 to 4011 Adder 4015 Multiplexer (mux)

Claims (21)

バッファ、
該バッファに格納されている画素に対し可逆ウェーブレット変換を行って係数を出力に生成するための、該バッファに接続された入力を有するウェーブレット変換ユニット、
及び
該ウェーブレット変換ユニットから出力されるウェーブレット変換画素のビットプレーン及び該バッファより受け取った該バッファに格納されたウェーブレット変換画素のビットプレーンを符号化するための、該該ウェーブレット変換ユニットに接続されたコーダを具備してなる圧縮システム。
buffer,
A wavelet transform unit having an input connected to the buffer for performing a reversible wavelet transform on the pixels stored in the buffer to generate coefficients at the output;
A coder connected to the wavelet transform unit for encoding the wavelet transform pixel bitplane output from the wavelet transform unit and the wavelet transform pixel bitplane received from the buffer and stored in the buffer. A compression system comprising:
該バッファが少なくとも1つの画素バンドを格納するためのバンドバッファからなることを特徴とする請求項1記載の圧縮システム。   2. A compression system according to claim 1, wherein the buffer comprises a band buffer for storing at least one pixel band. 該コーダが、コンテクストモデルと並列エントロピーコーダを具備し、
最高重要度データは埋め込まれず、バッファリングされずに係数順に符号化され、低重要度データの一部はバッファリングされ、埋め込まれ、そして重要度順にメモリに書き込まれることを特徴とする請求項1記載の圧縮システム。
The coder comprises a context model and a parallel entropy coder;
The highest importance data is not embedded and is encoded in coefficient order without buffering, and a portion of the lower importance data is buffered, embedded and written to memory in order of importance. The compression system described.
該コーダが高速並列コーダからなることを特徴とする請求項1記載の圧縮システム。   2. A compression system according to claim 1, wherein said coder comprises a high-speed parallel coder. 該コーダがQMコーダからなることを特徴とする請求項1記載の圧縮システム。   The compression system according to claim 1, wherein the coder comprises a QM coder. 該コーダが有限状態マシンコーダからなることを特徴とする請求項1記載の圧縮システム。   The compression system of claim 1, wherein the coder comprises a finite state machine coder. 符号化データインターフェースをさらに具備することを特徴とする請求項1記載の圧縮システム。   The compression system of claim 1, further comprising an encoded data interface. バッフアより受け取った画素情報をウェーブレット変換するステップ、ここで、係数の少なくとも1つのビットプレーンでウェーブレット変換画素を表現する、
該バッファ内の画素を符号化ビットプレーンによって置き換えるステップ、及び
該バッファ内のビットプレーンを符号化するステップを含んでなる圧縮方法。
Wavelet transforming the pixel information received from the buffer, wherein the wavelet transform pixel is represented by at least one bit plane of the coefficients;
A method of compression comprising: replacing a pixel in the buffer with an encoded bit plane; and encoding the bit plane in the buffer.
バンドバッファ、
逆変換処理を施される係数のための複数の符号化単位、
出力装置へ出力される画素を格納するための少なくとも1つの符号化単位、
該出力装置へ出力される既に逆変換された係数に対応する画素のための少なくとも1つの符号化単位、及び
該バンドバッファに接続された伸長器を具備してなり、該伸長器が圧縮データを変換係数に伸長し、該変換係数を該バンドバッファに書き込み、該バンドバッファより該変換係数を再び読み出し、それに逆変換を施して画素値を生成し、それを該バンドバッファに書き込むことを特徴とする伸長システム。
Band buffer,
A plurality of coding units for the coefficients to be subjected to inverse transform processing;
At least one encoding unit for storing pixels to be output to the output device;
At least one coding unit for pixels corresponding to already inverse transformed coefficients output to the output device, and a decompressor connected to the band buffer, wherein the decompressor The conversion coefficient is expanded, the conversion coefficient is written into the band buffer, the conversion coefficient is read out again from the band buffer, a reverse conversion is performed on the conversion coefficient to generate a pixel value, and the pixel value is written into the band buffer. Stretching system to do.
係数を最高重要度データと低重要度データとに分割するステップ、
最高重要度データを直ちに係数順に符号化するためコンテクストモデルへ送るステップ、
低重要度データ及び複数の指示ビットをメモリに格納するステップ、
及び
係数の集合中の全係数の最高重要度データを符号化した後に、低重要度データを符号化し、該複数の指示ビットに部分的に基づいた順序で埋め込むステップを含んでなる圧縮方法。
Dividing the coefficient into highest importance data and lower importance data,
Sending the highest importance data immediately to the context model for encoding in coefficient order;
Storing low importance data and a plurality of instruction bits in a memory;
And a method of encoding comprising encoding the highest importance data of all coefficients in the set of coefficients, then encoding the low importance data and embedding the plurality of instruction bits in a partially based order.
入力データを受け取るように接続された入力と、偶数サンプルと奇数サンプルを転送するための第1と第2の出力とを持つ入力バッフア、
該偶数サンプルと該奇数サンプルを受け取って係数を生成するように接続され、その水平ローパス係数と垂直ハイパス係数が当該順変換装置の出力であるところの第1レベル変換ユニット、
該第1レベル変換ユニットによって生成されたss係数を受け取るように接続された第1入力と、より上のレベルの変換フィルタ処理からのss係数を受け取るように接続された第2入力とを有するメモリ、
より上のフィルタ処理のためにSS係数を順序付けするための、該メモリに接続された第1入力を持つ順序付けユニット、及び
複数の変換レベルを適用するために該順序付けユニットに接続された第1のフィルタユニットを具備してなり、該フィルタユニットは該順序付けユニットより受け取ったss係数に対しより上のレベルの変換を行い、該フィルタユニットが生成するss係数は該メモリの該第2入力と該順序付けユニットの第2の入力にフィードバックされることを特徴とする順変換装置。
An input buffer having inputs connected to receive input data and first and second outputs for transferring even and odd samples;
A first level conversion unit connected to receive the even and odd samples and generate coefficients, the horizontal low-pass coefficient and the vertical high-pass coefficient being the output of the forward converter;
A memory having a first input connected to receive ss coefficients generated by the first level conversion unit and a second input connected to receive ss coefficients from a higher level conversion filtering process ,
An ordering unit having a first input connected to the memory for ordering SS coefficients for higher filtering and a first unit connected to the ordering unit for applying a plurality of transform levels; A filter unit, which performs a higher level transformation on the ss coefficients received from the ordering unit, the ss coefficients generated by the filter unit being the second input of the memory and the ordering A forward conversion device fed back to the second input of the unit.
画像を圧縮するための装置であって、圧縮器、及び、該圧縮器に接続された作業域メモリを具備してなり、該作業域メモリは画像と同じサイズであり、該圧縮器は画像中の画素より大きな係数を使用して画像を符号化するために該作業域を利用することを特徴とする圧縮装置。   An apparatus for compressing an image comprising a compressor and a work area memory connected to the compressor, the work area memory being the same size as the image, wherein the compressor is in the image A compression apparatus, characterized in that the work area is used to encode an image using a coefficient larger than a pixel. 最高重要度データと低重要度データとからなる情報を符号化する方法であって、
最高重要度データを符号化するステップ、
0のヘッドビットだけから構成されていない各係数の低重要度データにおける最初のビットプレーンの位置を符号化するステップ、及び
0のヘッドビットだけから構成されていない低重要度データの各ビットプレーンを符号化するステップを含んでなる符号化方法。
A method of encoding information consisting of highest importance data and lower importance data,
Encoding the highest importance data;
Encoding the position of the first bit plane in the low importance data for each coefficient not composed of only zero head bits, and each bit plane of the low importance data not composed of only zero head bits. An encoding method comprising the step of encoding.
最高重要度データと低重要度データからなる情報を符号化する装置であって、
最高重要度データを符号化するための手段、
0のヘッドビットのみからなるものでない各係数の低重要度データにおける最初のビットプレーンの位置を符号化するための手段、及び
0のヘッドビットのみからなるものでない低重要度データの各ビットプレーンを符号化するための手段を具備してなる符号化装置。
A device that encodes information consisting of highest importance data and lower importance data,
Means for encoding the highest importance data,
Means for encoding the position of the first bit plane in the low importance data for each coefficient not consisting of only zero head bits, and each bit plane for the low importance data not consisting of zero head bits. An encoding device comprising means for encoding.
情報のm項符号化の方法であって、
所定数の係数を調べるステップ、
該所定数の係数中の全てのヘッドビットが符号化されるまで、全てのヘッドビットを毎サイクル1つずつエントロピー符号化するステップ、及び
該所定数の係数の符号ビット及びテールビットを同じサイクルで符号化するステップを含んでなる符号化方法。
A method of m-term coding of information,
Examining a predetermined number of coefficients,
Entropy encoding all head bits one by one every cycle until all head bits in the predetermined number of coefficients are encoded, and the sign bits and tail bits of the predetermined number of coefficients in the same cycle An encoding method comprising the step of encoding.
集積回路チップとメモリとの間で画素データを転送するための画素データインターフェース、
該画素データインターフェースを介し、該メモリへ及び該メモリから情報を転送するための、該画素データインターフェースに接続された可逆ウェーブレット変換部、
該可逆ウェーブレット変換部より与えられたデータを符号化するためのコンテクストを提供するための、該可逆ウェーブレット変換部に接続されたコンテクストモデル、
該可逆ウェーブレット変換部によって生成された係数を、該コンテクストモデルによって提供されたコンテクストに基づいて符号化するための符号化器を具備してなる集積回路。
A pixel data interface for transferring pixel data between the integrated circuit chip and the memory;
A reversible wavelet transform unit connected to the pixel data interface for transferring information to and from the memory via the pixel data interface;
A context model connected to the reversible wavelet transform unit for providing a context for encoding the data given by the reversible wavelet transform unit;
An integrated circuit comprising an encoder for encoding a coefficient generated by the reversible wavelet transform unit based on a context provided by the context model.
符号化データを復号化するための復号化装置であって、
符号化データを受け取り、該符号化データを確率予測値に基づいて復号化するために接続され、カレントラインから復号化されたビットを生成する少なくとも1つのビットジェネレータ、
該カレントラインから復号化されたビットに基づいて確率予測値を提供するために該少なくとも1つのビットジェネレータに接続された確率予測マシン、及び
部分コンテクストアドレスに基づいて複数のコンテクストを該確率予測マシンに与えるための、該確率予測マシンに接続されたコンテクストモデルを具備してなり、該確率予測マシンが該復号化されたビットに基づいて該複数のコンテクストからコンテクストを選択することを特徴とする復号化装置。
A decoding device for decoding encoded data,
At least one bit generator connected to receive the encoded data and to decode the encoded data based on the probability prediction value and generate decoded bits from the current line;
A probability prediction machine connected to the at least one bit generator to provide a probability prediction value based on bits decoded from the current line; and a plurality of contexts based on a partial context address to the probability prediction machine. A decoding comprising: a context model connected to the probability prediction machine for providing the probability prediction machine selecting a context from the plurality of contexts based on the decoded bits; apparatus.
低重要度データと最高重要度データを受け取り、どのビットプレーンがデータを含んでいるか判定するために接続され、該低重要度データの処理時に使用される符号化単位全体の最初のオンビットを持つビットプレーンの指示を生成する先頭ビットプレーンユニット、
低重要度データと最高重要度データを受け取り、該低重要度データのための指示情報を生成するために接続された比較メカニズム、
符号ビット、最高重要度データ、及びデータを持つ最初のビットプレーンの指示を受け取るように接続され、条件付け情報を提供するため係数を遅延させるメモリ、
該符号ビットのためのコンテクストを提供するため該メモリに接続された第1のコンテクストモデル、
ヘッドビットのためのコンテクストを提供するため該メモリ及び該最高重要度データに接続された第2のコンテクストモデル、
テールビットのためのコンテクストを提供するため該メモリ及び該最高重要度データに接続された第3のコンテクストモデルを具備してなるコンテクストモデル装置。
Receives low and high importance data and is connected to determine which bitplane contains data and has the first on bit of the entire coding unit used when processing the low importance data The first bitplane unit that generates the bitplane indication,
A comparison mechanism connected to receive low and high importance data and generate instruction information for the low importance data;
A memory connected to receive the sign bit, the highest importance data, and an indication of the first bitplane with data, delaying the coefficients to provide conditioning information,
A first context model connected to the memory to provide a context for the sign bit;
A second context model connected to the memory and the highest importance data to provide a context for the head bit;
A context model device comprising a third context model connected to the memory and the highest importance data to provide a context for a tail bit.
符号化レートを確認するため符号語の平均長を測定するステップ、及び、所要の圧縮量に基づいて圧縮レートを調整するステップを含んでなる圧縮実行方法。   A method for performing compression, comprising: measuring an average length of a codeword to confirm a coding rate; and adjusting a compression rate based on a required compression amount. コンテクストモデル、
該コンテクストモデルに接続された確率予測マシン、
該確率予測マシンに接続されたビットジェネレータ、及び
平均符号語長を測定することによって符号化レートを制御するための、該ビットジェネレータに接続された符号化器レート制御手段を具備してなる符号化システム。
Context model,
A probability prediction machine connected to the context model;
A bit generator connected to the probability prediction machine, and an encoding rate control means connected to the bit generator for controlling an encoding rate by measuring an average codeword length; system.
変換係数の集合のデータビットプレーンの最低重要度部分を処理する方法であって、
メモリから第1の量のデータを読み出すステップ、及び
該変換係数の集合の下位のビットプレーン中のデータの少ない変換ビットプレーンを補うため、該第1の量のデータの読み出しと同時に該第1の量のデータより大きな第2の量のデータをメモリに書き込むステップを含んでなる変換係数処理方法。
A method for processing the least important part of a data bit plane of a set of transform coefficients,
Reading a first amount of data from the memory, and simultaneously with reading the first amount of data, to compensate for the less transformed bit planes in the lower bit planes of the set of transform coefficients A transform coefficient processing method comprising a step of writing a second amount of data larger than the amount of data into the memory.
JP2007080246A 1997-05-01 2007-03-26 Compression apparatus and compression method Pending JP2007267384A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US84707497A 1997-05-01 1997-05-01

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP11804898A Division JP4148429B2 (en) 1997-05-01 1998-04-28 Compression system, compression method, and decompression system

Publications (1)

Publication Number Publication Date
JP2007267384A true JP2007267384A (en) 2007-10-11

Family

ID=25299688

Family Applications (2)

Application Number Title Priority Date Filing Date
JP11804898A Expired - Fee Related JP4148429B2 (en) 1997-05-01 1998-04-28 Compression system, compression method, and decompression system
JP2007080246A Pending JP2007267384A (en) 1997-05-01 2007-03-26 Compression apparatus and compression method

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP11804898A Expired - Fee Related JP4148429B2 (en) 1997-05-01 1998-04-28 Compression system, compression method, and decompression system

Country Status (6)

Country Link
JP (2) JP4148429B2 (en)
KR (1) KR100317792B1 (en)
DE (1) DE19819405B4 (en)
FR (1) FR2763766B1 (en)
GB (1) GB2325584B (en)
HK (1) HK1023470A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009051109A1 (en) 2007-10-15 2009-04-23 Chugai Seiyaku Kabushiki Kaisha Method of constructing cells with high productivity of foreign protein
JP2011505631A (en) * 2007-11-30 2011-02-24 ミツビシ・エレクトリック・リサーチ・ラボラトリーズ・インコーポレイテッド Content-aware resizing for images and videos
US9813718B2 (en) 2013-10-03 2017-11-07 Samsung Display Co., Ltd. Apparatus and method for compact bit-plane data compression

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141446A (en) * 1994-09-21 2000-10-31 Ricoh Company, Ltd. Compression and decompression system with reversible wavelets and lossy reconstruction
US6201897B1 (en) 1998-11-09 2001-03-13 Earth Resource Mapping Transformation and selective inverse transformation of large digital images
DE10008055A1 (en) * 2000-02-22 2001-08-30 Infineon Technologies Ag Data compression method
US6633688B1 (en) 2000-04-28 2003-10-14 Earth Resource Mapping, Inc. Method system and apparatus for providing image data in client/server systems
KR20030021009A (en) * 2001-09-05 2003-03-12 김효준 Image compression method using block-based zerotree and quadtree
KR100451584B1 (en) * 2001-12-20 2004-10-08 엘지전자 주식회사 Device for encoding and decoding a moving picture using of a wavelet transformation and a motion estimation
FR2834832B1 (en) * 2002-01-11 2005-05-20 Canon Kk CODING DIGITAL DATA WITH HISTOGRAM CALCULATION
US7460722B2 (en) 2002-01-11 2008-12-02 Canon Kabushiki Kaisha Encoding of digital data with determination of sample path
JP4859368B2 (en) * 2002-09-17 2012-01-25 ウラディミール・ツェペルコヴィッツ High-speed codec with minimum required resources providing a high compression ratio
KR101681059B1 (en) * 2009-09-22 2016-12-01 삼성전자주식회사 Video signal generation apparatus and method for minimizing crosstalk between luminace signal and color difference signal
JP5298381B2 (en) * 2011-12-20 2013-09-25 株式会社アクセル Image processing apparatus and image processing method

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3639753A1 (en) * 1986-11-21 1988-06-01 Inst Rundfunktechnik Gmbh METHOD FOR TRANSMITTING DIGITALIZED SOUND SIGNALS
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding
US5638498A (en) * 1992-11-10 1997-06-10 Adobe Systems Incorporated Method and apparatus for reducing storage requirements for display data
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
DE19549491C2 (en) * 1994-02-23 2003-08-07 Ricoh Kk Palletised image compression with entropy encoding
US5748786A (en) * 1994-09-21 1998-05-05 Ricoh Company, Ltd. Apparatus for compression using reversible embedded wavelets
GB2293734B (en) * 1994-09-20 1997-04-09 Ricoh Kk Method for compression using reversible embedded wavelets
GB2305829B (en) * 1994-09-20 1997-10-22 Ricoh Kk A coder
JP3302229B2 (en) * 1994-09-20 2002-07-15 株式会社リコー Encoding method, encoding / decoding method and decoding method
US6195465B1 (en) * 1994-09-21 2001-02-27 Ricoh Company, Ltd. Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US5881176A (en) * 1994-09-21 1999-03-09 Ricoh Corporation Compression and decompression with wavelet style and binary style including quantization by device-dependent parser
US5867602A (en) * 1994-09-21 1999-02-02 Ricoh Corporation Reversible wavelet transform and embedded codestream manipulation
US5966465A (en) * 1994-09-21 1999-10-12 Ricoh Corporation Compression/decompression using reversible embedded wavelets
US5731988A (en) * 1995-05-08 1998-03-24 Richo Company, Ltd. Method and apparatus for reversible color conversion

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009051109A1 (en) 2007-10-15 2009-04-23 Chugai Seiyaku Kabushiki Kaisha Method of constructing cells with high productivity of foreign protein
JP2011505631A (en) * 2007-11-30 2011-02-24 ミツビシ・エレクトリック・リサーチ・ラボラトリーズ・インコーポレイテッド Content-aware resizing for images and videos
US9813718B2 (en) 2013-10-03 2017-11-07 Samsung Display Co., Ltd. Apparatus and method for compact bit-plane data compression

Also Published As

Publication number Publication date
HK1023470A1 (en) 2000-09-08
JP4148429B2 (en) 2008-09-10
GB2325584B (en) 2000-03-29
KR100317792B1 (en) 2002-02-19
FR2763766A1 (en) 1998-11-27
JPH10304368A (en) 1998-11-13
DE19819405A1 (en) 1998-11-26
KR19980086694A (en) 1998-12-05
DE19819405B4 (en) 2006-06-29
FR2763766B1 (en) 2002-10-25
GB2325584A (en) 1998-11-25
GB9808412D0 (en) 1998-06-17

Similar Documents

Publication Publication Date Title
US7016545B1 (en) Reversible embedded wavelet system implementation
US8565298B2 (en) Encoder rate control
JP3800551B2 (en) Data processing apparatus and method
JP3693988B2 (en) Communication management system and communication management method
JP2007267384A (en) Compression apparatus and compression method
US5881176A (en) Compression and decompression with wavelet style and binary style including quantization by device-dependent parser
US5966465A (en) Compression/decompression using reversible embedded wavelets
JP3653183B2 (en) Wavelet coefficient reconstruction processing method and apparatus, and recording medium
US6757437B1 (en) Compression/decompression using reversible embedded wavelets
JP2005218124A (en) Data compression system
GB2341035A (en) Video coding method

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080716

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090128