JP4148429B2 - 圧縮システム、圧縮方法及び伸長システム - Google Patents
圧縮システム、圧縮方法及び伸長システム Download PDFInfo
- Publication number
- JP4148429B2 JP4148429B2 JP11804898A JP11804898A JP4148429B2 JP 4148429 B2 JP4148429 B2 JP 4148429B2 JP 11804898 A JP11804898 A JP 11804898A JP 11804898 A JP11804898 A JP 11804898A JP 4148429 B2 JP4148429 B2 JP 4148429B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- wavelet transform
- data
- buffer
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/36—Scalability techniques involving formatting the layers as a function of picture distortion after decoding, e.g. signal-to-noise [SNR] scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/15—Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/115—Selection of the code volume for a coding unit prior to coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【発明の属する技術分野】
本発明は、データ圧縮及び伸長システムの分野に係り、特に、圧縮/伸長システムにおけるロスレス及びロッシーのデータ符号化及び復号化に関する。
【0002】
【従来の技術】
データ圧縮は、大量のデータの蓄積及び伝送のために非常に有用なツールである。例えば、文書のファクシミリ伝送のような画像伝送に要する時間は、圧縮を利用して画像の再生に必要とされるビット数を減らすと飛躍的に短縮される。
【0003】
従来より、多くの様々なデータ圧縮手法が存在している。圧縮手法は、おおまかに分類すると2つのカテゴリー、つまりロッシー符号化とロスレス符号化とに分けることができる。ロッシー符号化とは、情報の損失を生じ、したがって元のデータの完全な再現が保証されない符号化のことである。ロッシー符号化の目標とするところは、元のデータから変わったとしても、その変化が不快であったり目だったりしないようにすることである。ロスレス圧縮では、情報がすべて保存され、データは完全に復元可能な方法で圧縮される。
【0004】
ロスレス圧縮では、入力シンボルもしくは輝度データが出力符号語に変換される。入力としては、画像データ、音声データ、1次元データ(例えば空間的または時間的に変化するデータ)、2次元データ(例えば2つの空間軸方向に変化する(または1つの空間次元と1つの時間次元で変化する)データ)、あるいは多次元/マルチスペクトルのデータがあろう。圧縮がうまくいけば、その符号語は、符号化前の入力シンボル(または輝度データ)のために必要とされたビット数より少ないビット数で表現される。ロスレス符号化法には、辞書符号化方式(例えば、Lempel-Ziv方式)、ランレングス符号化方式、計数符号化方式、エントロピー符号化方式がある。ロスレス画像圧縮では、圧縮は予測またはコンテクストと符号化に基づいている。ファクシミリ圧縮用JBIG標準(ISO/IEC 11544)と、DPC
M(差分パルス符号変調−連続階調画像用のJPEG標準のオプション)は画像用のロスレス圧縮の例である。ロッシー圧縮では、入力シンボルまたは輝度データは、量子化され、しかるのちに出力符号語へ変換される。量子化の目的とするところは、データの重要な特徴量を保存する一方で、重要でない特徴量を除去することである。ロッシー圧縮システムは、量子化に先立ち、エネルギー集中をするための変換を利用することが多い。JPEGは画像データ用のロッシー符号化法の一例である。
【0005】
画像信号処理における近年の開発は、効率的かつ高精度のデータ圧縮符号化方式の追求に関心を集中してきた。変換またはピラミッド信号処理の様々な方式が提案されており、その中に多重解像度ピラミッド処理方式とウェーブレット・ピラミッド処理方式とがある。これら2方式はサブバンド処理方式及び階層処理方式とも呼ばれる。画像データのウェーブレット・ピラミッド処理方式は、クァドレチャーミラーフィルタ(Quadrature Mirror filter;QMF)を用いてオリジナル画像のサブバンド分割をする特殊な多重解像度ピラミッド処理方式である。なお、他の非QMFウェーブレット方式もある。ウェーブレット処理方式に関し、これ以上の情報を得るには、Antonini,M.,et al.,“Image Coding Using Wavelet Transform”,IEEE Transactions on Image Processing,Vol.1,No.2,April 1992、及び、Shapiro,J.,“An Embedded Hierarchical Image Coder Using Zerotrees of Wavelet Coefficients”,Proc.IEEE Data Compression Conference,pgs.214-223,1993を参照されたい。また、可逆変換に関する情報を得るには、Said,A.and earlman,W.,“Reversible Image Compression via Multiresolution Representation and Predictive Coding”,Dept.of Electrical,Computer and System Engineering,Renssealaer Polytechnic Institute,Troy,NY 1993を参照されたい。
【0006】
【発明が解決しようとする課題】
圧縮は、しばしば非常に時間がかかり、また膨大なメモリを必要とする。より高速に、かつ/又は、可能なかぎり少ないメモリで、圧縮を行うのが望ましい。品質を保証できない、圧縮率が不十分である、あるいはデータレートが制御可能でないという理由で、圧縮が全く利用されなかった応用分野もある。しかし、伝送及び/又は記憶すべき情報量を減らすため圧縮の利用が望ましい。
【0007】
デジタルコピア、プリンタ及び多機能機器は、フレーム記憶を備えると性能が非常に向上する。フレーム記憶が圧縮されれば、これら製品におけるフレーム記憶に必要とされるメモリが減り、したがってそのコストが削減される。しかし、多くのフレーム記憶はランダムアクセスメモリ(RAM)で実現される。RAMは高速であるが一般に高価である。ハードディスクもメモリとして使用でき、一般に安い(一般にRAMほど高価ではない)と考えられる。したがって、システムの製造者であれば、フレーム記憶などにRAMにかえてハードディスクを用い、より安価なシステムを製造することが有利であると考えるであろう。
【0008】
速度が重要なアプリケーションにとってハードディスクを使用することの一つの問題点は、RAMほど高速にハードディスクから情報を直接呼び出すことが困難であることである。また、多くのハードディスクは、情報をディスクに格納する時に、ディスクに格納可能な情報量を増加させるため圧縮を利用する。この圧縮の実行に要する時間も、速度が重要なアプリケーションでハードディスクの使用をためらわせる要因であろう。ハードディスクの使用、圧縮の利用に内在する速度の遅さが、速度の重要なアプリケーションにハードディスクを使用することを難しくしている。
【0009】
よって、本発明は、高速なロッシー/ロスレス圧縮を可能にすることを主たる目的とする。本発明のもう一つの目的は、高価なRAMに代えて安価なハードディスクを使用可能なシステムを提供することを目的とする。本発明の他の目的は、速度をハードディスクにマッチングさせ、かつ、圧縮を利用してハードディスクをプリントエンジンなどのシステムの他の部分の帯域幅にマッチングさせることができるようにすることである。また、本発明の別の目的は、圧縮及び伸長のための時間がRAM速度に比べそれほど遅くない場合にRAMを使用できるようにすることである。本発明の他の目的は、以下の説明から明らかになろう。
【0010】
【課題を解決するための手段】
上記目的を達成するため、以下に列挙した構成のシステム及び方法が本発明に包含される。
【0011】
(1) 画素値及びウェーブレット変換係数を格納するバッファと、
前記バッファに格納されている画素値に対してウェーブレット変換を行ってウェーブレット変換係数を出力するウェーブレット変換ユニットと、
前記ウェーブレット変換ユニットから出力されるウェーブレット変換係数のうち下位ビットの低重要度データを前記バッファに送出して該バッファに再格納する第1の送出手段と、
前記バッファに格納されている前記ウェーブレット変換係数の低重要度データをコーダユニットに送出する第2の送出手段と、
前記ウェーブレット変換ユニットから出力されるウェーブレット変換係数の上位ビットの重要度データ、あるいは、前記第2の送出手段による前記バッファからの前記ウェーブレット変換係数の低重要度データが入力され、符号化処理を行うコーダユニットとを有し、
前記ウェーブレット変換係数の重要度データは、前記バッファに格納されずに直ちに前記コーダユニットに送出されて符号化処理され、
前記ウェーブレット変換係数の低重要度データは、前記第1の送出手段により前記バッファに格納された後、前記第2の送出手段により前記コーダユニットに送出されて符号化処理されることを特徴とする圧縮システム。
【0012】
(2) 前記バッファが少なくとも1つの画像を複数に分割したバンドデータを格納するためのバンドバッファからなることを特徴とする(1)記載の圧縮システム。
【0013】
(3) 前記コーダユニットは、前記ウェーブレット変換係数の符号化される順序と条件を決定するコンテクストモデルと、前記ウェーブレット変換係数のエントロピー符号化処理を行うエントロピーコーダとを具備し、
前記ウェーブレット変換係数の重要度データは、前記バッファに格納されずに前記コンテクストモデルに送出され、該コンテクストモデルを用いて前記エントロピーコーダで直ちに係数順序に符号化され、
前記ウェーブレット変換係数の低重要度データは、前記第1の送出手段により前記バッファに格納された後、前記第2の送出手段により前記コンテクストモデルに送出され、該コンテクストモデルを用いて前記エントロピーコーダで重要度順に符号化される、
ことを特徴とする(1)記載の圧縮システム。
【0014】
(4) 前記エントロピーコーダが高速並列コーダからなることを特徴とする(3)記載の圧縮システム。
【0015】
(5) 前記エントロピーコーダがQMコーダからなることを特徴とする(3)記載の圧縮システム。
【0016】
(6) 前記エントロピーコーダが有限状態マシンコーダからなることを特徴とする(3)記載の圧縮システム。
【0017】
(7) 画素値及びウェーブレット変換係数をバッファに格納し、前記画素値にウェーブレット変換ユニットでウェーブレット変換を行い、前記ウェーブレット変換係数をコーダユニットで符号化する圧縮方法であって、
前記バッファに格納されている画素値に対して前記ウェーブレット変換ユニットでウェーブレット変換を行ってウェーブレット変換係数を出力するステップと、
前記ウェーブレット変換ユニットから出力されるウェーブレット変換係数のうち、上位ビットの重要度データは前記コーダユニットに送出し、下位ビットの低重要度データは前記バッファに送出して該バッファに再格納するステップと、
前記バッファに格納されている前記ウェーブレット変換係数の低重要度データを前記コーダユニットに送出するステップと、
前記ウェーブレット変換ユニットから出力されるウェーブレット変換係数の重要度データ、あるいは、前記バッファからの前記ウェーブレット変換係数の低重要度データに対して前記コーダユニットで符号化処理を行うステップとを有し、
前記ウェーブレット変換係数の重要度データは、前記バッファに格納されずに直ちに前記コーダユニットに送出されて符号化処理され、
前記ウェーブレット変換係数の低重要度データは、前記バッファに格納された後、前記コーダユニットに送出されて符号化処理されることを特徴とする圧縮方法。
【0018】
(8) 前記コーダユニットは、前記ウェーブレット変換係数の符号化される順序と条件を決定するコンテクストモデルと、前記ウェーブレット変換係数のエントロピー符号化処理を行うエントロピーコーダとを具備し、
前記ウェーブレット変換係数の最高重要度データは、前記バッファに格納されずに前記コンテクストモデルに送出され、該コンテクストモデルを用いて前記エントロピーコーダで直ちに係数順序に符号化され、
前記ウェーブレット変換係数の低重要度データは、前記バッファに格納された後、前記コンテクストモデルに送出され、該コンテクストモデルを用いて前記エントロピーコーダで重要度順に符号化される、
ことを特徴とする(7)記載の圧縮方法。
【0019】
(9) (1)乃至(6)のいずれか1に記載の圧縮システムに対する伸長システムであって、
逆変換処理を施されるウェーブレット変換係数のための複数の符号化単位、出力装置へ出力される画素値を格納するための少なくとも1つの符号化単位、及び、前記出力装置へ送出される既に逆変換されたウェーブレット変換係数に対応する画素値のための少なくとも1つの符号化単位に分割され、画素値及びウェーブレット変換係数を格納するバンドバッファと、
前記バンドバッファに接続された伸長器とを具備し、
前記伸長器が圧縮データをウェーブレット変換係数に伸長し、前記ウェーブレット変換係数を前記バンドバッファに書き込み、前記バンドバッファより前記ウェーブレット変換係数を再び読み出し、それに逆変換を施して画素値を生成し、前記バンドバッファに書き込むことを特徴とする伸長システム。
【0020】
【発明の実施の形態】
圧縮及び伸長のための方法及び装置について述べる。以下の説明において、遅延の種類、ビットレート、フィルタの種類等々の様々な具体例が示される。しかし、当業者には、そのような具体例によらずに本発明を実施し得ることが明白になろう。他方、本発明をいたずらに難解にしないため、周知の構造及びデバイスはブロック図の形式で表し、詳しくは示さない。
【0021】
以下の詳細説明のかなりの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号表現によって与えられる。このようなアルゴリズム記述及び表現は、データ処理技術分野の当業者によって、その研究の内容を他の当業者に対し最も効率的に伝えるために用いられる手段である。あるアルゴリズムがあり、それが概して、希望する結果に至る自己矛盾のないステップ系列だと考えられるとしよう。これらのステップは、物理量の物理的処理を必要とするものである。必ずという訳ではないが、これらの物理量は記憶、転送、結合、比較、その他処理が可能な電気的または磁気的信号の形をとるのが普通である。これらの信号をビット、値、要素、記号、文字、用語、数値等で表わすのが、主に慣用上の理由から、時に都合がよいことが分かっている。
【0022】
しかしながら、このような用語や同様の用語は、適切な物理量と関係付けられるべきであり、また、これら物理量につけた便宜上のラベルに過ぎないということに留意すべきである。以下の説明から明らかなように、特に断わらない限り、「処理」「演算」「計算」「判定」「表示」等々の用語を用いて論じることは、コンピュータシステムのレジスタ及びメモリの内部の物理的(電子的)な量として表現されたデータを処理して、コンピュータシステムのメモリまたはレジスタ、同様の情報記憶装置、情報伝送装置あるいは表示装置の内部の同様に物理量として表現された他のデータへ変換する、コンピュータシステムあるいは同様の電子演算装置の作用及びプロセスを指すものである。
【0023】
本発明はまた、本明細書に述べる操作を実行するための装置にも関係する。この装置は、要求目的のために専用に作られてもよいし、あるいは、汎用コンピュータを内蔵プログラムにより選択的に駆動または再構成したものでもよい。そのようなプログラムは、それに限定されないが、コンピュータのシステムバスにそれぞれ接続されたフロッピーディスク、光ディスク、CD−ROM、光磁気ディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カード又は光カード、あるいは電子的命令の格納に適したその他の媒体など、コンピュータの読み出し可能な記憶媒体に格納してよい。本明細書に提示されるアルゴリズム及び表示は、本質的に、どのような特定のコンピュータ、その他装置とも関わりがない。様々な汎用マシンを本明細書に述べたところに従ったプログラムと一緒に利用してよいが、必要とされる方法のステップの実行のためのより特化した装置を作るほうが好都合であるかもしれない。これら多様なマシンに要求される構造は以下の説明より明らかになろう。さらに、いかなる特定のプログラミング言語とも関連付けることなく本発明を説明する。本明細書において述べるように、本発明を実現するために多様なプログラミング言語を使用し得ることが理解されよう。
【0024】
下記用語が以下の説明に用いられる。これら各種用語にはすでに語義がある。しかし、規定された語義は、それら用語が当該分野において知られている範囲に限定して考えられるべきでない。これら語義は、本発明の理解を手助けするために規定されたものである。
【0025】
ABS符号化:
ビット生成のための単純なコード(例えばランコード)と使用符号語に基づく確率予測(例えばテーブルを用いる確率予測)を利用する並列エントロピー符号化法。一実施例にあっては、ABS符号化は数個のコーダからのストリームのマルチプレキシング及びデマルチプレキシングのための方法も含む。
【0026】
桁揃え(alignment):
ある周波数帯域内の変換係数の、他の周波数帯域に対するシフト度合。
【0027】
算術符号化:
有限精度演算によるShannon/Elias符号化、バイナリ・エントロピーコーダに限らない。
【0028】
B符号化:
圧縮のために有限状態マシンを利用するバイナリ・エントロピーコーダ。Huffman符号化と違って、有限状態マシンの利用がバイナリ・シンボルをうまく処理し、ある範囲の入力確率に対して有効である。
【0029】
バイナリ・エントロピーコーダ:
最高確率シンボル(mps)及び最低確率シンボル(lps)として表現されることの多いバイナリ(yes/no)デシジョンに基づいて動作するノイズレスのコーダ。
【0030】
バイナリ方式:
画素のエッジ−フィル(edge-fill)Grayエンコーディングと特殊なコンテクストモデルを用いる符号化方式。
【0031】
バイナリ方式コンテクストモデル:
2値及び階調数が少ない画像データのためのコンテクストモデル。
【0032】
ビット・シグニフィカンス(bit-significance):
符号(sign)絶対値表現に似た数表現で、ヘッド(head)ビットの後に符号(sign)ビットが続き、さらに、テール(tail)ビットがあれば、その後に続く。埋め込み(embedding)は、この数表現に対しビットプレーン順に符号化する。
【0033】
子ベース(child-based)順:
2次元画像のスキャン順。ラスタ順に似ているが、2×2ブロック単位で動作する。ある「親」周波数帯域をラスタ順にスキャンすることを考える。各係数は4個の子を持っているであろう。これらの子は、左上のものから始めて右上、左下、右下と順序付けられ、その後に次の親と次の4つの子の組が続き、以下同様にラインの終わりまで続く。そして処理は次の2ラインに戻り、最終的に右下コーナーで終わる。どのラインもスキップされない。子ベース順は2×2ブロック順とも呼ばれる。
【0034】
係数:
変換後の成分。
【0035】
成分:
画像の構成要素。成分が画素を構成する。例えば、赤、緑、青の帯域は成分帯域である。個々の画素は赤、緑、青の成分から構成される。成分と成分帯域に、画像への空間写像を持つ任意の種類の情報を含めることができる。
【0036】
コンテクストモデル:
符号化しようとするカレント・ビットに関し因果的に利用できる情報で、カレント・ビットに関する過去に学習した情報を提供してエントロピー符号化のための条件付確率予測を可能にする。2値画像において、ある画素のための1つの可能なコンテクストは、同じラインの先行2画素と前ラインの3画素である。
【0037】
分割レベル:
ウェーブレット分割ピラミッド内の位置。解像度と直接関係がある。
【0038】
効率変換:
係数への最高のエネルギー集中を達成すると同時に最小のビット数を用いてそれら係数を表現する変換。
【0039】
埋め込みコンテクストモデル:
コンテクストビンと結果の重要度レベルへの分割を、重要な値が保存されれば効率的なロッシー圧縮が得られるように行うコンテクストモデル。
【0040】
順序付けによる埋め込み:
明示的な重要度のラベリングはないが、最も重要なデータが初めの部分にくるように圧縮データが順序付けされる、埋め込みコンテクストモデルの特殊ケース。
【0041】
埋め込み量子化:
コードストリームに包含される量子化。例えば、重要度レベルが最高のレベルから最低のレベルへと順に並べられているときには、コードストリームの単なる打ち切りによって量子化が行われる。タグ、マーカー、ポインタ、その他の信号によって同じ働きを得ることができる。復号化時には画像に対し多重量子化を行うことができるが、符号化時には単一の埋め込み量子化しか行うことができない。
【0042】
エントロピーコーダ:
カレント・ビットを、確率予測に基づいて符号化又は復号化する装置。
本明細書では、エントロピーコーダは多重コンテクストバイナリコーダとも呼ばれることがある。カレント・ビットのコンテクストは何らかの選ばれた配置の「近傍」ビットであり、カレント・ビット(1ビットまたは複数ビット)の最適表現のための確率予測を可能にする。一実施例では、エントロピーコーダはバイナリコーダ、並列ランレングスコーダ、又はHuffmanコーダである。
【0043】
エントリー・ポイント:
既知の符号化状態で始まる符号化データ中のポイント。復号化器は、この点から、その前データを復号化することなく復号化を開始できる。これには、大抵の場合、コンテクストとバイナリ・エントロピーコーダを所期状態にリセットする必要がある。各符号化単位の符号化データはエントリーポイントから始まる。
【0044】
固定長:データの特定ブロックを圧縮データの特定ブロックへ変換する方式。例えばBTC(ブロック符号化)と、VQ(ベクトル量子化)のいくつかの方式。固定長コードは固定レート・固定サイズのアプリケーションに適するが、レート・歪み性能は可変レート方式に比べ劣ることが多い。
【0045】
固定レート:
ある一定の画素レートを維持し、帯域幅の限定された通信路を持つアプリケーション又はシステム。一実施例においては、この目標を達成するため、全体的に平均した圧縮というより、局所的に平均した圧縮が達成される。例えば、MPEGは固定レートを要求する。
【0046】
固定サイズ:
限られたサイズのバッファを持つアプリケーション又はシステム。一実施例では、この目標を達成するため全体的に平均した圧縮がなされる。例えば、プリント・バッファ。(アプリケーションは、固定レートのことも、固定サイズのことも、その両方のこともある。)
周波数帯域:
各周波数帯域は、同じフィルタ処理系列によりもたらされる一群の係数を表す。
【0047】
ヘッド・ビット:
ビット・シグニフィカンス表現において、ヘッドビットとは、最上位ビッから最初の非ゼロのビットまでの、該最初の非ゼロビットを含めた絶対値ビットである。
【0048】
ハフマン(Huffman)コーダ:
一般に、各シンボルに対して整数個のビットを発生する固定長コーダ。
【0049】
重要度レベル:
埋め込みデータの1つのビットプレーン全体に対応する、圧縮される前の符号化データの単位。重要度レベルは、異なった係数周波数帯域からの適切なビットプレーン全てを含む。
【0050】
LPS(最低確率シンボル):
50%未満の確率を持つバイナリデシジョンにおける事象(outcome)。
2つの事象が等確率の時にどちらがmps又はlpsに選ばれるかは符号化器と復号化器が同じ選定をするならば重要なことではない。
【0051】
ロスレス/ノイズレス/可逆符号化:
原データの完全な復元が可能な方法によるデータ圧縮。
【0052】
ロッシー符号化:
原データの完全な復元を保障しないデータ符号化。視覚的に不快であったり目立ったりしないように、原データから変化してもよい。多くの場合、固定レートが可能である。
【0053】
MPS(最高確率シンボル):
50%を超える確率を持つバイナリデシジョンにおける事象。
【0054】
重複変換:
単一のソース標本点が同じ周波数の複数の係数に寄与する変換。その例に、多くのウェーブレット及び重複直交変換がある。
【0055】
親係数:
カレントの係数又は画素と同じ画像空間をカバーする、すぐ上の階層レベルの係数又は画素。例えば図1において、1SD係数の親は2SD係数であり、これは3SD係数の親である。
【0056】
確率予測マシン/モジュール:
コンテクスト内での確率を追跡する、符号化システムの要素。
【0057】
プログレッシブ画素深度:
フル解像度のデータのビットプレーンが浅いほうから深いほうへ順序付けられたコードストリーム。
【0058】
プログレッシブ・ピラミッド:
解像度が下がる毎に各次元が2分の1(面積では4分の1)になる解像度成分の系列。
【0059】
Qコーダ:
乗算が加算によって置き換えられ、確率が離散値に限定され、確率予測値がビット出力時に更新されるバイナリ算術コーダ。
【0060】
ラスター順:
2次元画像のスキャン順。左上コーナーからスタートして左から右へ移動し、それから次ラインの左端に戻り、最終的に右下コーナーで終了する。どのラインもスキップされない。
【0061】
可逆変換:
一実施例では、圧縮結果を原データに復元可能な、整数演算により実現される効率変換。
【0062】
テールビット(又はテール):
ビット・シグニフィカンス表現で、テール(tail)ビットとは最上位の非ゼロのビットより下位の絶対値ビットである。
【0063】
タイル(tile)データセグメント:
一つの符号化単位を完全に記述するコードストリームの部分。
【0064】
TS変換:
2・6(Two−Six)変換。2タップ・ローパス分析フィルタと6タップ・ハイパス分析フィルタからなる特殊な可逆ウェーブレットフィルタ対。合成フィルタは、分析フィルタのクァドレチャーミラー(quadrature mirror)フィルタである。
【0065】
TT変換:
2・10(Two-Ten)変換。2タップ・ローパス分析フィルタと10タップ・ハイパス分析フィルタからなる特殊な可逆ウェーブレットフィルタ対。合成フィルタは分析フィルタのクァドレチャー・ミラー・フィルタである。
【0066】
統合型(unified)ロスレス/ロッシー:
同じ圧縮システムが、ロスレス復元又はロッシー復元が可能なコードストリームを提供する。本発明の一実施例では、このコードストリームは復号化器に対する設定情報も指令もなくてよい。
【0067】
ウェーブレット・フィルタ:
ウェーブレット変換に使われるハイパスとローパスの合成フィルタ及び分析フィルタ。
【0068】
ウェーブレット変換:
「周波数」及び「時間(又は空間)」の両方の領域の拘束条件がある変換。一実施例では、ハイパスフィルタとローパスフィルタからなる変換である。結果として得られた係数は1/2に間引かれ(臨界フィルタ処理され)、それらフィルタがローパス係数にかけられる。
【0069】
ウェーブレット木:
最高レベルのウェーブレット分割のSS部内の単一の係数と関係付けられた係数と画素。係数の個数はレベル数の関数である。図1は、1つのウェーブレット木に含まれる係数を示す。ウェーブレット木のスパンは、分割レベル数に依存する。例えば、ウェーブレット木のスパンは、1レベル分割では4画素、2レベル分割では16画素、等々である。図59に、1つのウェーブレット木に集約される画素の個数を様々なレベル数の場合について示す。2次元の場合、各ウェーブレット木はSD,DD,DSと呼ばれる3つの部分木からなる。
【0070】
<概要>
本発明は、符号化部及び復号化部を持つ圧縮/伸長システムを提供する。符号化部は入力データを符号化して圧縮データを生成する働きをし、他方、復号化部は既に符号化されたデータを復号化して元の入力データの再構成データを生成する働きをする。入力データとして、画像(静止画像あるいは動画像)、音声等々の様々な種類のデータがあり得る。一実施例では、データはデジタル信号データであるが、デジタル化したアナログデータ、テキストデータ形式、その他の形式も可能である。そのデータのソースは、例えば符号化部及び/又は復号化部のためのメモリまたは通信路である。
【0071】
本発明において、符号化部及び/又は復号化部の構成要素は、ハードウエアによって実現されてもよいし、あるいはコンピュータシステム上で利用されるようなソフトウエアによって実現されてもよい。本発明はロスレス圧縮/伸長システムを提供する。本発明は、ロッシー圧縮/伸長を実行するようにも構成できる。
【0072】
本発明のシステムは、可逆ウェーブレットによる高速のロッシー/ロスレス圧縮を用いるが、これについては後により詳しく説明する。このシステムは、例えばレーザープリンタのようなプリンタであるかもしれない。一実施例では、このプリンタは与えられたページの記憶に安価なハードディスクを用いることにより、必要とされる高価なランダムアクセスメモリ(RAM)の量を大幅に削減する。そのハードディスク又は他の記憶装置の限定された帯域幅を、プリントエンジンに必要とされる、より大きな帯域幅に合わせるために圧縮が利用される。本発明の符号化技術はプリントエンジンの要求する高速、リアルタイム性を満たし、さらに本発明は、画像の特性及びハードディスクのバースト性に応じて、優れたロッシー圧縮又はロスレス圧縮のどちらも可能である。
【0073】
以下の詳細な説明において、可逆ウェーブレットによる圧縮の概要、圧縮フレーム記憶のアプリケーション、カラーレーザープリンタ、プリンタ・チップの実例について述べる。プリンタのレンダリング・エンジンはハードディスクを記憶に利用する。ハードディスクはプリント・エンジンより低速であるので、レートを整合させるため圧縮が利用される。ディスプレイリスト(display list)技法も、レンダリング中に必要とされるメモリを減らすために利用してよい。ディスプレイリスト・ベースのレンダリングエンジンは、圧縮システムが画像のバンドを独立に処理することを許容する。なお、プリンタシステムに関連して本発明を説明するが、本発明は圧縮及び/又は伸長サブシステムを含む他のシステムにも適用可能である。
【0074】
また、埋め込み統合型ロスレス/ロッシー圧縮システムについても本明細書において述べる。システムの埋め込み特性は、品質をディスクの転送レートにより決定可能にする。圧縮が容易な画像(例えば、テキスト及び/又は線画からなる殆どの文書)の場合、ロスレス圧縮がなされる。圧縮しにくい画像(例えば、ノイズの多い自然画像及び/又は中間調のある文書)の場合、高品質のロッシー圧縮がなされる。
【0075】
カラー画像のロスレス圧縮と高品質ロッシー圧縮の両方をサポートするシステムに関する説明については、米国特許出願第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”)を参照されたい。
【0076】
<可逆ウェーブレット>
本発明は、可逆ウェーブレットによる圧縮を利用する。
【0077】
<ウェーブレット分割>
本発明は、初めに、可逆ウェーブレットを利用して、(画像データとしての)画像または他のデータ信号の分割を行う。本発明において、可逆ウェーブレット変換は、整数係数を持つ信号のロスレス復元が可能な完全再構成システムを整数演算で実現する。効率逆変換は、行列式が1(又はほぼ1)の変換行列を使用する可逆変換である。
【0078】
本発明は、可逆ウェーブレットを用いることにより、有限精度の演算でロスレス圧縮をすることが可能である。画像データに可逆ウェーブレット変換を適用することにより生成される結果は、係数の系列である。
【0079】
本発明の可逆ウェーブレット変換は、1組のフィルタを用いて実現できる。一実施例では、それらのフィルタは、本明細書においてTS変換もしくは2・6変換と呼ばれる変換を行うための2タップ・ローパスフィルタと6タップ・ハイパスフィルタである。他の一実施例では、それらのフィルタは、本明細書においてTT変換もしくは2・10変換と呼ばれる変換を行うための2タップ・ローパスフィルタと10タップ・ハイパスフィルタである。これらフィルタは、加減算(とハードワイヤのビットシフト)だけで実現することができる。
【0080】
TT変換には、TS変換に比べると、少なくとも1つの長所と、少なくとも1つの短所がある。長所は、TT変換がTS変換よりも良好な圧縮が得られることである。TT変換の短所は、10タップのフィルタが長い分、高いハードウェアコストを要することである。
【0081】
<2次元ウェーブレット分割>
本発明のローパスフィルタ及びハイパスフィルタを用いて、多重解像度分割が行なわれる。分割レベル数は可変であり任意数でよいが、現在のところ分割レベル数は2レベルから8レベルまでである。最大レベル数は、log2(入力の長さ又は幅の最大値)である。
【0082】
画像のような2次元データに対し変換を行う最も普通のやり方は、1次元フィルタを別々に適用する方法、つまり、ラインに沿って適用し、次に列に沿って適用するという方法である。第1レベルの分割により4つの異なった帯域の係数が得られ、これらは本明細書ではSS,DS,SD,DDと呼ばれる。これら文字は、ロー(L)パスフィルタとハイ(H)パスフィルタにそれぞれ対応する前述のスムーズ(S)フィルタとディテール(D)フィルタを指す。したがって、SS帯域はライン方向及び列方向の両方のスムーズフィルタより得られた係数からなっている。
【0083】
ウェーブレット分割の各周波数部分帯域はさらに分割することができる。最も普通のやりかたはSS部分帯域だけをさらに分割する方法であり、各分割レベルのSS周波数部分帯域が生成された時にそれをさらに分割することになろう。このような多重分割はピラミッド分割と呼ばれる。記号SS,SD,DS,DDと分割レベル番号によって各分割を表示する。
【0084】
なお、本発明のTS変換、TT変換のいずれかを用いても、ピラミッド分割によって係数のサイズは増加しない。
【0085】
可逆ウェーブレット変換が再帰的に画像に適用される場合、第1レベルの分割は最も細かいディテールもしくは解像度に対し作用する。第1分割レベルで、画像は4つの部分画像(すなわち部分帯域)に分解される。各部分帯域は、1つの空間周波数帯域を表わしている。第1レベルの部分帯域は1SS,1SD,1DS,1DDと表される。原画像を分割するプロセスに水平と垂直の両次元について1/2サブサンプリングが含まれるので、第1レベルの部分帯域1SS,1SD,1DS,1DDはそれぞれ、入力が持っていた画像の画素(または係数)の1/4の個数の係数を持つ。
【0086】
部分帯域1SSは、水平方向の低い周波数の情報と垂直方向の低い周波数の情報を同時に含んでいる。一般に、画像エネルギーの大部分は、この部分帯域に集中している。部分帯域1SDは、水平方向の低い周波数の情報と垂直方向の高い周波数の情報(例えば水平方向エッジの情報)を含んでいる。部分帯域1DSは、水平方向の高い周波数の情報と垂直方向の低い周波数の情報(例えば垂直方向エッジの情報)を含んでいる。部分帯域1DDは、水平方向の高い周波数の情報と垂直方向の高い周波数の情報(例えばテクスチャ又は斜めエッジの情報)を含んでいる。
【0087】
この後に続く下位の第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の大きさである。
【0088】
分割された画像はサブサンプリングのために原画像より大きさが小さいので、原画像の格納に使用されたメモリを、分割された部分帯域の全部の格納のために使用できる。つまり、3レベル分割の場合、原画像と分割部分帯域1SS,2SSは捨てられてしまい、保存されない。
【0089】
4つの部分帯域分割レベルについて述べたが、個々のシステムの要求に応じて、それ以上のレベルを生成することも可能である。また、DCTのような他の変換又は一次元配置の部分帯域を用いて、異なった親子関係を定義してもよい。
【0090】
なお、本発明のウェーブレットフィルタによれば、ピラミッド分割は係数サイズを増加させない。
他の実施例においては、SSのほかに他の部分帯域も分割されるかもしれない。
【0091】
<ウェーブレットの木構造>
ピラミッド分割のウェーブレット係数には自然で有用な木構造がある。部分帯域分割の結果は、最終の分割レベルに対応したただ一つのSS周波数部分帯域である。これに対し、レベル数と同数のSD,DS,DD帯域がある。この木構造により、ある周波数帯域内の係数の親は、それより低い解像度の同じ周波数帯域内の係数であり、かつ同じ空間位置関係にあることが明らかになる。
【0092】
本発明においては、各木は、SS係数と、3つの部分木すなわちDS,SD,DDの部分木からなる。本発明の処理は、普通、これら3つの部分木に対して行われる。各木のルートは、純粋に平滑な係数である。画像のような2次元信号の場合、3つの部分木があり、それぞれの部分木は4つの子を持つ。この木階層構造は2次元信号に限定されない。例えば、1次元信号の場合、各部分木は1つの子を持つ。これ以上の高い次元は、1次元の場合及び2次元の場合から導き出される。
【0093】
多重解像度分割のプロセスは、フィルタ系列を使って行うことができる。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”)を参照されたい。
【0094】
<順ウェーブレット変換の実行>
本発明では、2回の1-D演算によって、すなわち、まず水平方向の1-D演算を行い、次に垂直方向の1-D演算を行うことによって、ウェーブレット変換が実施される。一実施例においては、あるハードウェアで水平方向の演算を実行し、別のハードウェアで垂直方向の演算を実行する。
【0095】
レベル数で反復回数が決まる。一実施例では、水平方向と垂直方向の両方についてTT変換を使って、4レベル分割が実行される。別の実施例では、TT変換に代えTS変換を使って、4レベル分割が実行される。
【0096】
本発明の変換は、演算効率が非常に優れている。一実施例において、本発明は、必要とされるオンチップ及びオフチップのメモリの容量と帯域幅を減らすように、変換で行われる計算を順序付けする。
【0097】
<変換のための計算順序とデータフロー>
前述のように本発明においては、変換の計算のための基本単位はウェーブレット木である。4レベル変換の場合を考えると、各ウェーブレット木は16×16の画素ブロックである。16×16ブロックの画素(CMYK画像の場合は4成分全部)が本発明の変換部に入力され、係数生成のための可能な計算が全て実行される。(逆変換も同様であり、16×16の係数ブロックが入力され、可能な全ての計算が実行される)
本発明は重複変換を用いるため、先行の隣接木からの情報が記憶されて計算に利用される。カレントのウェーブレット木と先行隣接情報との間の境界は、本明細書ではシーム(seam)と呼ばれる。本発明の変換を実行するためにシームを越えて保存される情報については、後に詳述する。
【0098】
<ウェーブレット木の順序付け>
特定のアプリケーション(例えば印刷)の場合、本発明の符号化単位は幅が大きく長さが小さいため、変換を計算するためのウェーブレット木の順序付けが重要である。一実施例では、各符号化単位は4096×256画素からなる。
【0099】
以下の説明では、符号化単位はそれぞれ4096×256画素からなる。しかしながら、それ以外のサイズの符号化単位にも以下に述べる順序付けを適用可能であることに留意されたい。図2はラスタ順と同様の順序を示す。この順序を、本明細書では長シーム変換順と呼ぶ。図2において、太線はシームを越えて保存されるデータ量を示し、また、どの位のメモリ量が変換の計算に必要とされるかを示している。このデータは、水平方向変換の場合には1つのウェーブレット木に比例するが、垂直方向の変換の場合には画像の幅(本例では4096)に比例する。このデータのためのメモリ量では、外部メモリを使用する必要があるかもしれない。しかし、ラスタ順に近いため、逆変換期間に、ウェーブレット木の1つの水平行が画素へ変換されると直ちにデータを変換部から(例えば、プリンタのアプリケーションではプリンタへ)出力することができる。
【0100】
図3は別の順序を示すもので、この順序を本明細書では短シーム順と呼ぶ。シームのためのメモリ量は、水平方向の変換の場合には符号化単位の高さ(本例では256)に比例し、垂直方向の変換の場合には1つのウェーブレット木に比例する。この順序によれば必要なメモリ量が大幅に減少し、オンチップ記憶が可能になる。
【0101】
図4は、別の短シーム順を示す。メモリ量が2つのウェーブレット木に比例するという負担があるが、ラスタ順に処理される連続した画素の個数が増加する。この順序又はそれに類似した順序によって、シーム(seam)メモリのコストをほとんど増加させることなく、バンドバッファの高速ページモードRAM又はEDO(extended data out)RAMをより効率的に使用できる。この効率向上が得られるのは、殆どのメモリが隣接したメモリロケーションのアクセスのために最適化されているからである。したがって、シーム順により隣接メモリアクセスの使用が増加することで、メモリ使用効率の向上がもたらされる。
【0102】
<1つのウェーブレット木を得るための計算>
以下の式はTS変換とTT変換の両方を定義する。入力x(n)に対するローパスフィルタの出力であるスムーズ(smooth)信号s(n)と、ハイパスフィルタの出力であるディテール(detail)信号d(n)は次式のように計算される。
【0103】
【数1】
【0104】
逆変換は次式で示される。
【0105】
【数2】
【0106】
ただし、p(n)は次式により計算される。
【0107】
【数3】
【0108】
TS変換とTT変換はt(n)の定義が異なる。
【0109】
TS変換の場合は次のとおりである。
【0110】
【数4】
【0111】
TT変換の場合は次のとおりである。
【0112】
【数5】
【0113】
なお、以下の説明において、
【0114】
【数6】
【0115】
は切り捨てて丸めること、つまり打ち切りを意味し、床関数と呼ばれることがある。
【0116】
<TS変換>
6タップ・フィルタと2タップ・フィルタを偶数位置に使用する結果、3つの情報を記憶しなければならない。6タップ・フィルタは2ディレーを必要とする。2タップ・フィルタは、その結果を6タップ・フィルタの結果に対し中心に置くことができるようにするために1ディレーを必要とする。具体的には、2つのs(・)値と、1つのd(・)値又はd(・)計算の部分結果を記憶する必要がある。これらの値のメモリは、フィルタ処理がシームを跨いでも跨がなくても、同じである。
【0117】
図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”値は、前のウェーブレット木を使って計算され、カレントのウェーブレット木で用いるために記憶される。
【0118】
順変換の場合、レベル2,レベル3及びレベル4の変換の入力は前レベルで得られた“ss”係数である。“sd”,“ds”,“dd”係数は完成しているから、計算された時に出力可能である。逆変換は全ての計算を逆順に、すなわち、レベルを最初に第4レベル、次に第3レベル、第2レベル、最後に第1レベルの順に、方向を初めに垂直方向、次に水平方向の順にして行う。変換のパス内では、順変換と逆変換のデータフローは同一であり、計算が異なるだけである。
【0119】
<TS変換のハードウェア>
図13は、1次元フィルタを実現するための順/逆フィルタユニットの一実施例のブロック図である。メモリと計算ユニットだけが示されており、ハードワイアド・シフトは示されていない。図13において、フィルタユニット4000は順変換及び逆変換の両方を処理する。他の実施例は順変換と逆変換のために別々のユニットを使用する。順変換の場合、サイズ“n”の入力が用いられ、“s”出力と“d”出力が生成される。逆変換の場合、“s”入力と“d”入力が使われ、別の出力が生成される。
【0120】
加算器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ビットより大きい。
【0121】
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出力でもある。
【0122】
レジスタファイル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は出力する。
【0123】
加算器4008は、mux4006の出力4006Cとmux4015の出力を加算し、フィルタユニットのd出力を発生する。
加算器4009は、mux4015の出力からmux4006の出力4006Cを減算する。加算器4009の出力はmux4006の出力4006Bのs(n)と加算器4010によって加算され、フィルタユニットのnビット出力が生成される。加算器4009の出力はまた、加算器4011によってmux4006の出力4006Bであるs(n)から減算され、加算器4011はフィルタユニットの他方のnビット出力を逆向きに出力する。
【0124】
1つのウェーブレット木より長いシームの場合には、シームデータは、レジスタファイル4005ではなく、オンチップのスタティックRAM(SRAM)又は外部メモリに格納されるかもしれない。mux4006は、このような付加的なシームメモリに対するアクセスを提供する。
【0125】
フィルタユニット4000のハードウェアコストの大部分は、レジスタファイル4005によるものである。全体の必要メモリ量はフィルタユニットの個数によって決まる。一実施例では、3つの値(s,s,d又はss,ss,sd)を記憶するために合計60ロケーションが必要とされる。それより多数のフィルタユニットが使用される時には、それぞれのフィルタユニットのための必要メモリは、それより少ない。したがって、多数のフィルタユニットを使用するハードウェアコストは低い。
【0126】
高速の逆変換は、復号化の終了と印刷のようなデータ出力動作の開始との間の遅れ時間の短縮を可能にする。これは、伸長のために必要な作業域メモリを減少させ、より大きな符号化単位を可能にする。高速の順変換は、より大きな帯域幅を使用可能な時にフィルタがデータのバーストを処理できるようにし、したがって、ルックアヘッドによってコンテクストモデルがデータを素早く処理できる時には、変換がより多くのデータをコンテクストモデルに供給することを可能にする。符号化期間に順変換がコンテクストモデルに追従できないと、符号化中のディスクの帯域幅が無駄になり、印刷の開始時間を遅らせる。また、多数のフィルタを備えることにより、制御及びデータフローを単純化できる。
【0127】
図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の入力を選択する。
【0128】
フィルタユニット401は、2つの垂直方向に隣接した入力対を連続的に処理して4つの係数を生成し、これら係数は各成分毎にレジスタ403〜406によって適切に遅延されてフィルタユニット402に入力することができる。4つの結果のうちの3つは直ちに出力することができるが、“ss”出力はさらに処理される。
【0129】
第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画素を処理する。
【0130】
図15は、本発明による順変換の一実施例のブロック図である。図15において、レベル1変換部502はレベル1変換を実行する。一実施例では、レベル1変換部502は図14のレベル1変換部からなる。フィルタユニット505は変換のレベル2,3,4を処理する。メモリ503は“ss”係数を、変換を実行するために必要なだけの係数が得られるまで記憶する。記憶する必要がある係数の個数を図60に示す。(各ロケーションは各成分の1つの係数を格納する)
順序ユニット504は、適切な入力をフィルタユニット505にマルチプレクスする。入力バッファ501と出力バッファ506は、この変換部に要求される転送順序とバンドバッファ又はコンテクストモデルに要求される順序との間の整合をとるために必要であろう。
【0131】
逆変換の場合、データフローが逆にされ、レベル4逆変換が行われたのちにレベル3、レベル2、レベル1の変換が順に行われる。レベル2変換の出力は第1レベル変換ハードウェアであるレベルレベル1変換部502へ入力される。また、垂直フィルタ処理が水平フィルタ処理の前に行われる。水平フィルタ処理と垂直フィルタ処理は一方がシーム用の付加的メモリに対するアクセスを必要とする以外は同じであるから、少量のマルチプレキシングによってデータフローを逆にすることが可能である。逆変換の前に、2バイト係数を、2つの信号用ビットを持つ埋め込み形式から普通の2の補数の数値へ変換する必要がある。
図14及び図15に示した要素は、TT変換の場合にも同様に使用できる。
【0132】
<変換タイミング>
図15の順変換部の変換タイミングは、個々のフィルタユニットのタイミングがベースになる。第1のフィルタユニットすなわちフィルタユニット401は水平方向レベル1変換を計算し、第2のフィルタユニットすなわちフィルタユニット402は垂直方向レベル1変換を計算する。第3のフィルタユニットすなわちフィルタユニット505はレベル2〜4の変換を計算し、又は遊休状態である。
【0133】
一実施例では、第3のフィルタユニット(505)は、遊休状態でなければ、偶数クロックサイクル期間中に水平変換を計算し、奇数クロックサイクル期間中に垂直変換を計算する。逆変換のためのタイミングも同様である(ただし逆になる)。
【0134】
以下に述べる例では、ウェーブレット木内の2×2ブロックは、ラスタ順の転置順に処理される。なお、ウェーブレット木内の2×2ブロックがラスタ順に処理されるならば、高速ページモードDRAM/EDO(extended data out)DRAMをサポートするために必要とされる入/出力(I/O)バッファリングがもっと少なくなるかもしれない。
【0135】
図16は、係数が出力される時のタイミング図である。以下のタイミングは画素毎のタイミングである。1画素あたり4つの成分がある。
【0136】
時刻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 */
【0137】
<TT変換>
図17から図24はTT変換の各1次元フィルタ処理の結果(出力)を示す。太線の長方形は、現在処理されている入力画素に対応する1つのウェーブレット木内の係数を示し、網掛けしたものは記憶されている前ウェーブレット木からの係数を示す。“B”と記された値は記憶される中間結果である(また、隣接標本間の差分である)。TT変換はTS変換と似ているが、もっと多くのメモリを必要とする。
【0138】
図25は、10タップの順/逆フィルタユニットのブロック図である。なお、ハードワイアド・シフト(hardwired shfts)と丸めオフセット(rounding offsets)は煩雑さを避けるため示されていない。図25中のmux806を変換境界でのミラー処理のためにも使用できることに注意されたい。ミラー処理を1回行うために、重複ユニットの“d”入力のゼロイング(zeroing)とs(n+2)入力のマルチプレキシングも行う必要がある。
【0139】
図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)である。
【0140】
mux803,804の出力はメモリ805の入力に接続される。メモリ805の入力には、mux806の出力806A,806D〜806Fも接続されるる。メモリ805は、その入力を空間配置に基づいて遅延させて出力に出す。一実施例では、メモリ805はレジスタファイル、又は、2つのバンクを有しかつ1バンクあたり1つのポートを持ちピンポン式に動作させられるSRAMから構成される。メモリ805の入力には、mux806へ送出される出力を制御するためにアドレスが入力される。一実施例では、このアドレスは1成分あたり16又は28ロケーションを格納する。
【0141】
メモリ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回遅延させたものである。
【0142】
重複ユニット807は、mux803の出力並びにmux806の出力806A,806D,806Eを受け取るように接続される。重複ユニット807は、その入力に応答してt(n)を発生する。重複ユニットの一実施例を図26に示す。
【0143】
重複ユニット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から減算し、逆フィルタとして動作時のフィルタユニットの他方の出力を生成する。
【0144】
図26は、図25の順/逆フィルタのための重複ユニットの一実施例のブロック図である。図26において、この重複ユニットは加算器901〜906、乗算器907〜909、除算器901からなる。乗算器及び除算器はハードワイアド・シフトであってもよい。
【0145】
図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の他方の入力に接続される。
【0146】
乗算器908は、加算器902の出力を16倍する。一実施例では、この乗算は、加算器902から出力されるビットを4ビット左シフトすることによりなされる。乗算器908の出力は、加算器905の一方の入力に接続される。加算器903の出力は、加算器904の一方の入力と乗算器909の入力に接続される。
【0147】
乗算器909は加算器903の出力を2倍する。一実施例では、この乗算は、加算器903より出力されるビットを1ビット左シフトすることによりなされる。乗算器909の出力は加算器904の他方の入力に接続される。加算器904の出力は加算器906の入力に接続され、ハードワイヤド入力である32と加算される。加算器906の出力は除算器910の入力に接続される。除算器910は、入力を64で除算する。一実施例では、この除算は、入力のビットを6ビット右シフトすることによりなされる。除算器910の出力はt(n)出力となる。なお、図26は、各出力にカレント値を示している。
【0148】
可逆TS変換、可逆T変換の両方において、S変換と同様に、ローパスフィルタを、入力信号x(n)のレンジが出力信号s(n)のレンジと同じになるように作ることができる。すなわち、スムーズ(smooth)出力は増大しない。入力信号が8ビット深さのときは、スムーズ出力もbビットである。例えば、信号が8ビット画像のときには、ローパスフィルタの出力も8ビットである。このことは、スムーズ出力が例えば連続的にローパスフィルタをかけることにより更に圧縮されるピラミッドシステムにとって重要な特性である。従来のシステムにおいては、出力信号のレンジが入力信号のレンジより大きいため、連続的にフィルタをかけることが困難である。また、変換の整数演算に系統誤差がないので、ロッシーシステムの全ての誤差を量子化によって制御可能である。さらに、ローパスフィルタは、2つのタップしか持たないため、非重複フィルタになる。この特性は、ハードウェア化のために重要である。
【0149】
<埋め込み順序づけ>
本発明では、ウェーブレット分割の結果生成された係数はエントロピー符号化される。本発明では、係数は最初に埋め込み順序付けを施されるが、この埋め込み順序付けにおいては、視覚的に重要な順に係数が順序付けられ、より一般的には、何等かの誤差距離(例えば、歪み距離)に関連して係数が順序付けられる。誤差距離または歪み距離には、ピーク誤差と平均2乗誤差(MSE)が含まれる。また、順序付けは、ビット・シグニフィカンス(bit-significance)空間配置より、データベース照会のための妥当性を優先させるように、また方向別に(垂直、水平、斜め等)、行ってもよい。
【0150】
データの順序付けは、コードストリームの埋め込み量子化を生じさせるために行われる。本発明においては、2つの順序付け方法が用いられる。すなわち、その一つは係数を順序付けするためのものであり、もう一つは係数中の2進値を順序付けするためのものである。本発明の順序付けはビットストリームを生成し、このビットストリームはその後にバイナリ・エントロピーコーダにより符号化される。
【0151】
<ビット・シグニフィカンス表現>
原成分が符号無しの時でも、大抵の変換係数は符号付き数値である(少なくとも1つのディテール(detail)フィルタから出力される係数はどれも符号付きである)。一実施例では、係数内の2進値に用いられる埋め込み順序はビットプレーン順である。係数は、符号化される前に、ビット・シグニフィカンス表現で表される。ビット・シグニフィカンス表現は、最上位ビット(MSB)ではなくて、符号ビットが最初の非ゼロの絶対値ビットと一緒にエンコードされる符号・絶対値表現である。すなわち、符号ビットは、絶対値ビット全体の前に来るのではなく、最初の非ゼロの絶対値ビットの次に来る。また、符号ビットは、最上位の非ゼロ絶対値ビットと同じビットプレーン内にあるとみなされる。
【0152】
ビット・シグニフィカンス形式は数値を3組のビット、すなわちヘッドビット、テール(tail)ビット及び符号ビットによって表現する。ヘッドビットとは、MSBから最初の非ゼロ絶対値ビットまでの全てのゼロビット(最初の非ゼロ絶対値ビットを含む)である。最初の非ゼロ絶対値ビットが現れるビットプレーンで、係数の重要度が定まる。テールビットは、最初の非ゼロ絶対値ビットの後からLSBまでの絶対値ビットからなる。符号ビットはただ単に符号(sign)を表わすもので、例えば0は正符号を、1は負符号を表す。MSBが非ゼロビットの、±2のn乗のような数値は、ヘッドビットを1ビットしか持たない。ゼロの係数は、テールビットも符号ビットも持たない。図61は−7から8までの4ビット係数の取り得る全ての値を示す。
【0153】
図61において、各段に表されるビット・シグニフィカンス表現は1ビット又は2ビットを含む。2ビットの場合、その最初のビットは最初の1のビットであり、その後に符号ビットが来る。
【0154】
画素の輝度に関して起こるような、値が非負整数の場合、採用し得る順序はビットプレーン順(例えば、最上位ビットプレーンから最下位ビットプレーンへの順序)である。2の補数による負整数も許容される実施例では、符号ビットの埋め込み順序は、整数の絶対値の最初の非ゼロビットと同じである。したがって、1つの非ゼロビットが符号化されるまで、符号ビットは考慮されない。例えば、符号・絶対値表記法によれば、16ビット数−7は
1000000000000111
である。ビットプレーン・ベースでは、初めの12デシジョン(decision)は“非有意”すなわちゼロとなる。最初の1のビットは13番目のデシジョンに見つかる。次に符号ビット(“負”)が符号化される。符号ビットが符号化された後、テールビットが処理される。14番目と15番目のデシジョンは共に“1”である。
【0155】
係数は最上位のビットプレーンから最下位のビットプレーンへと符号化されるので、データのビットプレーン数が正確にわからなければならない。本発明においては、データから計算される、又は画像の深さ及びフィルタ係数から導き出される係数値の絶対値の上境界を見つけることによって、ビットプレーン数が決定される。例えば、その上境界が149のときには、有意な8ビットつまり8つのビットプレーンがある。ソフトウエアの速度では、ビットプレーン符号化を利用できないかもしれない。別の実施例では、ビットプレーンが符号化されるのは、係数が2進数として意味をなす時だけである。
【0156】
<係数桁揃え(alignment)>
本発明は、ビットプレーン符号化の前に、係数を相互に桁揃えする。こうするのは、FFTやDCTと同様、異なった周波数部分帯域内の係数は異なった周波数を表すからである。本発明は、係数を桁揃えすることにより量子化を制御する。軽く量子化される係数ほど早いビットプレーン側へ桁揃えされる(例えば左へシフトされる)。よって、ストリームが打ち切られる場合、これらの係数は、それを定義するビットが、より重く量子化された係数に比べ多くなる。
【0157】
一実施例では、係数はSNR又はMSEからみて最高のレート・歪み性能が得られるように桁揃えされる。MSEのような統計誤差距離から見てほぼ最適の桁揃えを含め、可能な多くの桁揃えがある。あるいは、桁揃えは係数データの物理視覚的(physchovisual)量子化を可能にするかもしれない。桁揃えは画像品質に(換言すればレート・歪み曲線に)相当な影響を及ぼすが、ロスレスシステムの最終的な圧縮率には殆ど影響を与えない。特殊な量子化である注目領域忠実度符号化には、他の桁揃え、すなわち解像度プログレッシブ桁揃えが合うかもしれない。
【0158】
桁揃えは、圧縮データのヘッダ中で指示されてもよいし、個別のアプリケーション用に固定されてもよい(すなわちシステムが1つの桁揃えしか持たない)。様々なサイズの係数に関する桁揃えは、符号化器及び復号化器の両方に分かっているので、エントロピーコーダの効率に全く影響を与えない。
【0159】
bビット/画素の画像の2レベルのTS変換及びTT変換分割における各種係数のビット深さが図28に示されている。図29は、本発明において係数桁揃えに用いられる周波数帯域に対する乗数の一例である。係数の桁揃えのために、1-DD係数のサイズが基準として用いられ、このサイズに対するシフトが与えられる。nシフトは2のn乗倍することである。
【0160】
一実施例では、最大の係数の絶対値に対して係数をシフトすることにより、画像中の全ての係数の桁揃えを生成する。そして、桁揃え後の係数は、重要度レベルと呼ばれるビットプレーン単位で、最上位の重要度レベルより最下位の重要度レベルへと処理される。符号は、各係数の最後のヘッドビットと一緒に符号化される。符号ビットは最後のヘッドビットの重要度レベルにある。重要なことは、桁揃えがエントロピーコーダへビットが送られる順序を制御するに過ぎないことである。割増0ビットのパッディング、シフト、格納、符号化が実際に行われるわけではない。
【0161】
図62に係数桁揃えのための桁揃え数の一例を示す。
様々なサイズの係数に関する桁揃えは、符号化器と復号化器の両方に分かっているのでエントロピーコーダの効率にはまったく影響を与えない。
同じデータセットの符号化単位が異なった桁揃えを持つ場合があることに注意されたい。
【0162】
<コードストリームの順序付け及びコンテクストモデル>
図27は、コードストリームの順序付けと、符号化単位内部の順序付けを示す。図27において、ヘッダ1001の後に、符号化単位1002が上の帯域より下の帯域へと順に続く。(単一の画像タイプ用にデザインされたアプリケーションでは、ヘッダ1001はオプションである。)
各符号化単位は、最高重要度のデータ1003、低重要度データ1004、最低重要度のデータ1005からなる。
【0163】
コンテクストモデルは、データが符号化される順序とデータの特定ビット用の条件付けの両方を決定する。順序付けについてまず考える。データの最高レベルの順序付けは前述した。データは、変換順にロスレス符号化される「最高重要度のデータ」(MICと呼ぶこともある)と、埋め込み統合型ロスレス/ロッシー方式で符号化される「低重要度のデータ」(LICと呼ぶこともある)とに分けられる。
【0164】
各ビットプレーン内で係数が処理される順序は、低い解像度より高い解像度へ向かう順(低い周波数より高い周波数へ向かう順)である。各ビットプレーン内の係数部分帯域の順序は、高いレベル(低解像度、低周波数)より低いレベル(高解像度、高周波数)への順である。各周波数部分帯域の内部において、符号化はある決まった順序でなされる。一実施例では、その順序はラスター順、2×2ブロック順、S字状(serpentine)順、Peanoスキャン順、等々である。
【0165】
図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
【0166】
本発明に利用される水平コンテクストモデルの一実施例を以下に説明する。このモデルは、空間的、スペクトル的な係数の従属性に基づいて符号化単位内のビットを利用する。近傍係数及び親係数に関して得られる2進値を、コンテクストを生成するために利用できる。しかし、コンテクストはデコーダビリティと因果関係があり、また、多少は効率的適応と因果関係がある。
【0167】
本発明は、バイナリ・エントロピーコーダのために、係数により生成された埋め込みビット・シグニフィカンス順のビットストリームをモデル化するためのコンテクストモデルを提供する。
【0168】
図56は、符号化単位の各係数の近傍係数を示す。図56において、近傍係数は分かりやすい地理的表記法で表されている(例えば、N=北、NE=北東、等々)。図56のPのような、ある係数とカレント・ビットプレーンが与えられると、コンテクストモデルは、そのビットプレーンより前の符号化単位全ての任意の情報を利用できる。このコンテクストモデルの場合、注目係数の親係数も利用される。
【0169】
ヘッドビットは、最も圧縮できるデータである。したがって、圧縮率を上げるため、大量のコンテクストもしくは条件付けが使われる。近傍係数又は親係数の値を注目係数の注目ビットのコンテクストを決定するために利用するのではなく、その情報は図30に関連して説明する2つの指示ビットにまとめられる。この情報は、メモリに格納されてもよいし、近傍係数又は親係数から動的に計算されてもよい。
【0170】
<メモリからディスクへの埋め込み>
本発明のための埋め込みスキームの一実施例は、データの符号化の開始時にはバンドバッファメモリ全体がデータで塞がっているので、作業域メモリとして利用できる余分なスペースがバンドバッファメモリ内にないという事実をベースにしている。本発明においては、埋め込まれるデータはメモリに格納され、また重要度が低いデータである。それより重要度の高いデータは直接符号化される。重要度が最低のデータはいくつかの最下位ビットからなる。
【0171】
一実施例において、各係数の一部が後に符号化するためメモリに再書き込みされるときには、的確な符号化を保証するために、符号ビットが分かっていることは勿論、ヘッドビットとテールビットも分からなければならない。一実施例では、ヘッド、テール及び符号ビットの情報を指示するために2ビット又はそれ以上(例えば、3ビット、4ビット、5ビット等々)の指示ビットが用いられる。
【0172】
一実施例では、8ビットのメモリロケーションが使用される場合、2ビットの指示ビットでヘッド、テール及び符号ビットの情報を指示する。2ビットの指示ビットを使用すれば、最低重要度の6重要度レベルを2指示ビットと一緒にメモリに再書き込みすることができる。1つの指示ビットで、6重要度レベルの最上位ビットがヘッドビットであるかテールビットであるかを指示する。第1の指示ビットがヘッドビットであることを指示するときには、第2の指示ビットはその係数の符号である。他方、第1の指示ビットがメモリに再書き込みされたデータの最上位ビットがテールビットであることを指示するときには、第2の指示ビットは自由な指示ビットであり追加的なテール情報、例えば最高重要度のテールビットが最初のテールビットであるか、もっと後のテールビットであるかを指示することができる。
【0173】
図30は、最高重要度のデータ1301(MICと呼ばれる)と低重要度のデータ1302(LICと呼ばれる)に分割された係数を示す。一実施例では、MICは各係数の上位6ビットからなり、LICは下位6ビットからなる。最高重要度データ1301はコンテクストモデルへ送られ、直ちに係数順に符号化される。このデータについては、外部メモリにバッファリングする必要はない。低重要度データ1302はメモリ(例えばRAM)に書き込まれ、その後、重要度順に符号化され埋め込まれる。また、データ中の2ビットの指示ビットがメモリに書き込まれる。指示ビット1303は、メモリに書き込まれたデータの最上位ビットがヘッドビットであるか否かを示す。指示ビット1304は、係数の符号を与えるか、そのデータに最初のテールビットが含まれているか否かを示す。なお、指示ビットは、低重要度データ1302と連結した形で記憶してもよいし、データ1302を記憶しているメモリと関連した別のメモリ又はメモリロケーションに、係数の各部分に関連した指示ビットを識別できように格納してもよい。
【0174】
図63中の例で2ビットの指示ビットの使い方を示す。図63の欄は図30のデータ形式と一致するように配列されている。符号ビットは“S”で示され、テールビットは“T”で表され、何でも構わないビットは“X”で表され、テールオン(tail-on)ビットの値は“h”又は“t”で表されている。図63において、指示ビットは、h=0,t=1である。この取り決めを、他の実施例において、そのまま用いてよい。一実施例では、図63の0の符号ビットは正符号を示し、1の符号ビットは負符号を示す。その逆の割り当てを用いてもよい。なお、符号ビットは常に最初の“on”ビットと一緒に保存されるので、同時に符号化して埋め込むことができる。
図63において、“T”は係数の対応ビットを指し、0又は1である。
【0175】
一実施例では、復号化期間中に、最高重要度のデータは、それが復号化される時にメモリに書き込まれ、同時に、低重要度データを記憶するためにメモリを初期化するため、適当な2つの指示ビットがメモリに書き込まれる。(係数の桁揃えによっては最高重要度データの一部が次のバイトにも格納されることがある)この初期化によって、低重要度データを1度に1ビットプレーンずつ復号化するのに、1係数あたり1バイト(実施例によっては、1バイト未満)を読み出して書き込むだけでよい。係数が読み出されて逆変換に入力される時に、その係数は普通の数値形式(例えば2の補数形式)に変換される。
【0176】
“最高重要度データ”と“低重要度データ”のほかに、符号化時に捨てられる又は量子化されるデータもあるかもしれない。係数は、量子化スケールファクタ(2のQ-1乗)で割られる。(係数の量子化はJPEG規格に述べられている)本発明においては、除算はビットプレーンの切り捨てによって行われるので、量子化は2のベキ乗である。例えば、Q=1は1による除算を意味するから、係数は変化しないが、Q=2は2による除算を意味するから、1つのビットプレーンが切り捨てられるということである。これらの除算は、シフト例えば、Q=2のときは1ビット位置分のシフト)によって行ってもよい。図31と図32は、様々な部分帯域について、量子化と係数桁揃えの両方を考慮した最高重要度データと低重要度データの形式を示す。
【0177】
図31は、データが切り捨てられないロスレスのケースを示す。JPEGの規約にならい、これを量子化A=1と呼ぶ。というのは、現実の係数が1で除算される(損失なし)であるからである。最高重要度データは網が掛けられていない。低重要度データは網掛けされている。
【0178】
図32は、1ビットプレーン分のデータが切り捨てられたケースを示す。1つのビットプレーンを切り捨てることは2で割ることと等価であるので、Q=2である。捨てられたビットプレーンは黒で表されている。
【0179】
図31と図32に示されているもののほかに、最高重要度データにはSS係数も含まれることに注意されたい。係数ビットは8ビットデータとして示されているが、可逆色空間を使用するときには8ビットのデータが必要となり、色差係数のサイズが1ビットだけ増加する。
【0180】
本発明において、符号ビットのコンテクストモデルは、最後のヘッドビットの次の符号の符号化を含む。N係数が正であるか負であるか、符号がまだ符号化されていないか否かによって、符号に関するコンテクストは3つ存在する。あるいは、符号について1つのコンテクストだけを用いてもよい、すなわち符号を常に50%として符号化してもよい。
【0181】
<ウェーブレット係数の符号化順序>
ウェーブレット係数の符号化順序の一例を次の擬似コードにまとめる:
最高重要度データを符号化
最初のデータのある低重要度ビットプレーンの位置を符号化
for 各低重要度データビットプレーン do
1つの低重要度データビットプレーンを符号化
【0182】
最高重要度データが符号化される時に、0のヘッドビットだけでない低重要度データの最初のビットプレーンを、各係数について求める。こうすることで、符号化器及び復号化器が低重要度データのビットプレーン全体についてルックアヘッド(look-ahead)をすることが可能になる。このことは、全情報がK係数にありCMY係数が全て0の白黒データ単位の符号化の場合に有用である。ビットプレーンを個別的に符号化しないことは、特にR2(7)が使用可能な最長のランレングスコードである場合に、圧縮率を向上させる。(“R2”コードについては、米国特許第5,381,145号及び同5,583,500号を参照されたい)
しかし、4つの並列符号化コア(core)が同時に成分を処理するときには、処理速度は符号化すべき最多のビットプレーンを持つ成分によって決まる。他の成分に割り当てられたコアは、符号化されないビットプレーンの期間中、遊休状態である。
【0183】
前記擬似コードの処理の一実施例を説明するフローチャートが図33に示されている。図33において、コンテクストモデルはまず最高重要度部分(MIC)を符号化する(処理ブロック1401)。MICの符号化後、処理ロジックは低重要度部分(LIC)の最初のデータを持つビットプレーンの位置を符号化する(処理ブロック1402)。これは符号化単位全体に対するものである。LICに6個のビットプレーンがあるときには、そのビットプレーンのどれもデータを含まないか、1個、又は2個、3個、4個、5個あるいは6個のビットプレーンがデータを含む。次に処理ロジックは、カレントLICビットプレーン変数に、この最初のデータを持つLICビットプレーンを設定する(処理ブロック1403)。
【0184】
データのあるLICビットプレーンが全て符号化されたか判定する(処理ブロック1404)。その全部が符号化済みならば処理は終了するが、そうでなければ1つのLICビットプレーンを符号化し(処理ブロック1405)、カレントLICビットプレーン変数に、次のLICビットプレーンを設定する(処理ブロック1406)。そして、処理は処理ブロック1404にループバックする。
【0185】
<最高重要度データの符号化順序>
最高重要度データの符号化順序の一実施例は次の通りである:
for 各木 do
SS係数を符号化
MICルックアヘッドを実行(又は木ルックアヘッドを実行)
for 各非SS係数
for データのある各ビット(プレーン)do
ヘッドビット又はテールビットを符号化
if 係数は0でない
符号ビットを符号化
【0186】
最高重要度データは、1ウェーブレット木が一度に処理される。繰り返しになるが、最高重要度データは埋め込まれない。MICルックアヘッドにより、ウェーブレット木内のSSでない全係数についてヘッドビットがオールゼロでないビットプレーンを決定する。一実施例では、個別に符号化すべき最初のビットプレーンを識別するのに4ビット数値で十分である。図34に示す他の実施例においては、1つのビットが、第2分割のSS以外の全ての係数1501(網掛け領域)が0であることを示すために用いられ、もう1つのビットが、第1分割のSS以外の全ての係数1503が0であることを示すために用いられる。これら2ビットが、最初のビットプレーンの識別のために用いられる4ビットに加えて用いられる。
【0187】
他の実施例においては、SS係数が符号化され、次に木全体について非ゼロのヘッドビットを持つ最初のビットプレーンが符号化される、木ルックアヘッドが用いられるかもしれない。
【0188】
SS係数と最初のビットプレーンの符号化のために条件付けが利用されるときにコンテクスト再来遅延を補償するため、SS係数のビット(可逆色空間を使用するなら9ビット)の実際の符号化/復号化とルックアヘッド値を交替させてよい。条件付けが利用されないときには、交替は必要とされない。
【0189】
前述のように、本発明のコンテクストモデルはルックアヘッドを利用する。このルックアヘッドの一例が、最高重要度データすなわち最高重要度部分(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
木に対し決定された最大ビット数で値を記述
符号ビットを記述
【0190】
なお、1ビット又は複数ビットの“記述”は、適応符号化でも、50%確率での符号化でも、単なる符号化データストリームへのコピーでもよい。
【0191】
全部又は大部分のビットプレーンを個別に符号化すべきときには、変換のいくつかのレベルに桁揃えのため利用されないビットプレーンがあり、この利用されないビットプレーンは符号化されない。ヘッドビット及びテールビットについてのビット−コンテクスト遅延(bit to context delay)の処理については多くの選択肢がある。一つの方法は、3つの係数、DD,SD及び,DSを交互に処理する方法である。非0係数の符号ビットは係数の最後に符号化できる。これは、最高重要度データは全部が常にロスレスであり、最初の“オン”ビットのすぐ後に続く必要はないからである。
【0192】
最高重要度部分(MIC)を符号化するための擬似コードを説明するフローチャートの一例が図35に示されている。図35において、処理ロジックが最初の木をカレント木とすることから処理が始まる(処理ブロック1601)。次に、処理ロジックはSS係数を符号化する(処理ブロック1602)。SS係数の符号化後、処理ロジックは当該木のMIC中のデータを持つ最初のビットプレーンの位置を符号化する(処理ブロック1603)、すなわちMICルックアヘッドを行う。
【0193】
次に、処理ロジックは、木全部のMICがゼロであるか判定する(処理ブロック1604)。木全部のMICがゼロならば処理ロジックは処理ブロック1614に進むが、そうでなければ、処理ブロック1605に移行し、処理ロジックは当該木の最初の非SS係数をカレント係数にする。
【0194】
カレント係数を木の最初の非SS係数に設定した後、処理ロジックは、データを持つ最初のビットプレーンをカレントビットプレーンにする(処理ブロック1606)。次に処理ロジックは、カレントビットプレーンのカレント係数の1つのビットを符号化する(処理ブロック1607)。その後、処理ロジックは、その全てのビットプレーンが符号化されたか判定する(処理ブロック1608)。ビットプレーン全部の符号化が済んでいないときには、処理ブロックは次のビットプレーンをカレントビットプレーンとし(処理ブロック1609)、処理ブロック1607へ進む。全部のビットプレーンが符号化されてしまったときには、処理ロジックはカレント係数がゼロであるか判定する(処理ブロック1610)。カレント係数がゼロでなければ、処理ロジックは符号ビットを符号化し(処理ブロック1611)、処理ブロック1613へ進む。カレント係数がゼロならば、処理ロジックは処理ブロック1613へ進む。
【0195】
処理ブロック1613で、処理ロジックは木内の全係数の符号化が済んだか判定する。木の全係数の符号化が済んでいなければ、処理ロジックは木内の次の係数をカレント係数とし(処理ブロック1612)、処理ブロック1606へ進む。木内の全係数が符号化されてしまったときには、処理ロジックは全ての木の符号化が済んだか判定する(処理ブロック1614)。全ての木が符号化されたときには処理が終了するが、そうでなければ処理ブロック1615に進み、処理ロジックは次の木をカレント木とし、処理ブロック1602に移行する。
【0196】
図36は、最高重要度データの符号化パス期間に利用されるフォーマッティング・ユニット及びコンテクストモデルの一実施例のブロック図である。図36において、バレルシフタ1701は、最高重要度データが最小ディスク帯域を超えないようにしてロスレス圧縮を保証するため、係数の絶対値と符号化時に用いられた量子化レベルを受け取るように接続される。このように、量子化レベルでバレルシフタ1701を制御する。一実施例では、バレルシフタ1701は、絶対値ビットを0,1,2又は3ビットだけシフトして1,2,4又は8の量子化をサポートする。他の実施例では、これより低い又は高い量子化数がサポートされる、例えば2量子化をサポートするだけである。
【0197】
バレルシフタ1701の出力は、下位の6ビットプレーンすなわち低重要度データと、残りの高位ビットプレーンすなわち最高重要度データとからなる。他の実施例では、これら2出力を生じさせるために単純な分離メカニズムが用いられる。
【0198】
バレルシフタ1701の両出力は先頭ビットプレーンユニット1702に入力され、データを含んでいるビットプレーンが判別される。先頭ビットプレーンユニット1702は、低重要度データ処理時に用いられる全ての符号化単位について、最初の“オン”ビットを持つビットプレーンを見つけるために利用される。(図27参照)。もう一つの先頭ビットプレーンユニット1706も、バレルシフタ1701から出力される最高重要度データを受け取るよう接続されている。先頭ビットプレーンユニット1706は、高重要度データ処理時に各木に対し利用される。先頭ビットプレーンユニットの一実施例を、図37を参照して後述する。
【0199】
バレルシフタ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は符号を出力するように制御される。
【0200】
一実施例では、比較ユニット1703,1704は単純なビット比較器により構成される。
【0201】
メモリ1707が、符号ビット、バレルシフタ1701より出力される最高重要度データ、及び先頭ビットプレーンユニット1706の出力を受け取るように接続される。メモリ1707は、親と近傍の情報を条件付けに利用できるよう係数を遅延させるために利用される。メモリ1707の構成は後述する。
【0202】
コンテクストモデル(CM)1710〜1712は符号、ヘッド、テール、その他のビットのための条件付けを与える。これら各コンテクストモデルについては後述する。
【0203】
図37は、先頭ビットプレーンユニットの一実施例を示す。図37において、先頭ビットプレーンユニット1800は、係数とレジスタ1802の出力からのフィードバックを受け取るように接続されたORゲート1801を有する。ORゲート1801の出力はレジスタ1802の入力に接続される。レジスタ1802は、木スタート/符号化単位リセット指示によって制御される。レジスタ1802の出力はプライオリティエンコーダ1803に接続される。プライオリティエンコーダ1803の出力は、先頭ビットプレーンユニット1800の出力である。
【0204】
初めに、レジスタ1802がクリアされる。レジスタ1802の各ビットは、ORゲート1801によって入力係数の各ビットと論理和がとられる。係数の0の各ビットについては、レジスタ1802の値は現在の値のままであり、それがプライオリティエンコーダ1803へ出力される。係数の1の各ビット(例えば先頭の1)については、ORゲート1801のレジスタ1802への出力は1であり、これがプライオリティエンコーダ1803へ入力される。そして、プライオリティエンコーダ1803は先頭の1を見つけるが、これが係数の1を持つ最初のビットプレーンである。
【0205】
<低重要度データの処理順序>
最低重要度データの各ビットプレーンは以下のように処理される:
for 各木 do
for 各係数 do
if ルックアヘッド区間の始まり
ルックアヘッドを実行
if ルックアヘッドはアクティブでない
ヘッドビット又はテールビットを符号化
if 先頭の“オン”ビット
符号ビットを符号化
【0206】
LICビットプレーンの符号化プロセスの一実施例を図38のフローチャートに示す。LICビットプレーン符号化プロセスは、処理ロジックが最初の木をカレント木にすることから始まる(処理ブロック1901)。次に、処理ロジックは、カレント木の最初の非SS係数をカレント係数とする(処理ブロック1902)。カレント木の最初の非SS係数をカレント係数とした後、処理ブロックは符号化がルックアヘッド区間の開始点に対するものか判定する(処理ブロック1903)。符号化プロセスがルックアヘッド区間の開始点にあるきには、処理ロジックはルックアヘッドを行う(処理ブロック1904)、そして処理ブロック1905に進む。符号化プロセスがルックアヘッド区間の開始点にないときには、処理ロジックは直ちに処理ブロック1905に移行し、ルックアヘッドがアクティブであるか判定する。
【0207】
ルックアヘッドがアクティブならば、処理ロジックは処理ブロック1909へ進み、カレント木の全係数が符号化されたか判定する。カレント木の全係数が符号化されたときには処理ブロック1913から処理が継続するが、そうでないときには、処理ロジックはルックアヘッド区間の後のカレント木の次の係数をカレント係数とし(処理ブロック1910)、処理ブロック1903へ進む。
【0208】
ルックアヘッドがアクティブでないときには、処理ロジックはヘッドビット又はテールビットを符号化し(処理ブロック1906)、次に最初の非ゼロビットが受け取られたか判定する(処理ブロック1907)。最初の非ゼロビットが受け取られていないならば、処理ロジックは処理ブロック1911へ進む。最初の非ゼロビットが受け取られているならば、処理ブロック1908に進み、処理ロジックは符号ビットを符号化し、そして処理は処理ブロック1911へ進む。
【0209】
処理ブロック1911で、処理ロジックはカレント木の全係数が符号化されたか判定する。カレント木の全係数が符号化済みでなければ、処理ロジックはカレント木の次の係数をカレント係数とし(処理ブロック1912)、処理ブロック1903へ移行する。カレント木の全係数が符号化されたならば処理ブロック1913に進み、処理ロジックは全ての木が符号化されたか判定する。全ての木が符号化済みでなければ、処理ロジックは次の木をカレント木とし(処理ブロック1914)、処理ブロック1902から処理を継続する。全木が符号化済みならば、処理は終了する。
【0210】
1つのウェーブレット木を一度に処理することは重要ではないが、変換はデータをその順に読み書きさせるため、それが都合がよいであろう。ウェーブレット木毎にデータが処理されるときには、ビット−コンテクスト遅延を、DD,SD,DS係数間の交替(部分木間の交替)によって調整できる。別の方法として、一度に1つの部分帯域を符号化してもよい。どのような順序を選んだとしても、異なった部分帯域の桁揃えに用いられないヘッド/テールビットは、符号化されることがないから、無駄なサイクルを必要としない。
【0211】
図39は、低重要度データのためのルックアヘッド及びコンテクストモデルの一実施例のブロック図である。一実施例では、最高重要度データ及び低重要度データは、符号、ヘッド及びテールビットのための条件付けを与える同じコンテクストモデル(CM)を利用する。
【0212】
図39において、コンテクストモデル2001〜2003は入力データを受け取るように接続される。符号コンテクストモデル2001はテールオンビット、符号/先頭テールビット指示及びデータを受け取るように接続される。ヘッドビットコンテクストモデル2002は、テールオンビット及びデータを受け取るように接続される。テールビットコンテクストモデル2003は、テールオンビット、符号/先頭テールビット指示及びデータを受け取るように接続される。各コンテクストモデル2001〜2003は、そのに入力に応じて1つのコンテクストを生成する。
【0213】
コンテクストモデル2001〜2003によって生成されるコンテクストは、mux2004の入力に接続される。mux2004は、前ビット及びビットシグニフィカンス表現そのものによって制御される。ヘッドビットコンテクストモデル2002は、データ入力に1のビットが来るまで利用される。符号コンテクストモデル2001は、最後のビットがヘッドの最初の1のビットであった時に利用される。その後、テールビットコンテクストモデル2003が利用される。
【0214】
mux2004の出力は、“=ヘッド?”ユニット2005及び先入れ/先出し(FIFO)バッファ2006に接続される。“=ヘッド?”ユニット2005は、現在のコンテクストが近傍及び親の0のヘッドビットがあるヘッドビットコンテクストであるか調べる。コンテクストが全てヘッドにあるときには、“=ヘッド?”ユニット2005から出る信号でFIFOバッファ2006をクリアする。
【0215】
コンテクストと結果は、ルックアヘッド区間中、FIFO2006又は他のメモリにバッファされる。ルックアヘッド区間の終わりで、必要ならば、ルックアヘッド・デシジョン及び/又は個々のデシジョンが符号化される。一度に1ウェーブレット木ずつ係数が処理される場合には、ルックアヘッド用のFIFOは、単一のFIFOを全ての部分帯域のために用いてもよいし、部分帯域毎に1つずつ、複数のFIFOを用いてもよい。
【0216】
なお、マルチプレキシングを減らしたいのであれば、最高重要度データもルックアヘッドを利用してもよい。しかし、各木毎にルックアヘッドと先頭ビットプレーンの両方を利用するのは、やや冗長である。
【0217】
ある成分に割り当てられたコアが符号ビットを符号化するときには、同じビットプレーンの符号ビットを符号化しない、他成分に割り当てられたコアは遊休状態となる。したがって、各コアが別のビットプレーンの符号ビットを符号化するときには、最高4クロックサイクルを符号ビットに対して使用してよい。一実施例では、1係数につき、最高6ビットのヘッド又はテールビットがある。
【0218】
タイミングに関し考えられる1つの問題点は、最高重要度部分が十分に圧縮されることにより、そのデータの一部分の復号化期間にディスクが遊休状態になることである。バンドバッフアに十分なメモリ帯域があるならば、最高重要度データの処理を高速化するためルックアヘッドを利用してもよい。その場合、低重要度データがヘッドの始まりとなることがある。また、ディスクが、最高持続レートより高いバースト転送レートを有しても大丈夫であろう。ハードディスクは、かなりのバッファを持っているのが普通で、このバッファに先読みすることで遊休時間が排除されるであろう。
【0219】
<コンテクストモデルの一部の条件付け>
コンテクストモデルで利用される条件付けは、ハードウェアコストと圧縮率との兼ね合いで決まる。したがって、以下の部分では、条件付けのための多くの選択肢を提示し設計者の検討に供する。
【0220】
<SS係数のためのコンテクストモデル>
コンテクストモデルの一実施例においては、SS係数は符号化されない。SS係数は原データの高々256分の1であるので、それらを符号化する利益は殆どない。もしSS係数を符号化したいなら、Grayエンコーディング、同一係数中の前ビットによる条件付け、及び/又は前係数中の対応ビットによる条件付けによって処理してよかろう。
【0221】
<先頭ビットプレーンのためのコンテクストモデル>
各ウェーブレット木の最高重要度データについての先頭ビットプレーン情報の4ビットは、SS係数と同様な方法で処理できる。これは原データのサイズを521分の1しか増加させない。一実施例では、それらは、原データに比べサイズが小さいため符号化されなくともよく、また、Grayエンコーディングと何らかの条件付けをしてもよい。
同様に、図34に従って6ビットが用いられるときには、それら6ビットをSS係数と同様に処理してよい。
【0222】
<ヘッドビットのためのコンテクストモデル>
図40は、ヘッドビットのための条件付けを提供するコンテクストモデルの一実施例のブロック図である。図40において、コンテクストモデル2100は、ビットプレーンコンテクストモデルに見られるものと同様のシフトレジスタを含む。重要な相違点は、カレントビットプレーンの先行係数を利用せず、条件付けがテールオン情報をベースにしており、全ての先行ビットプレーンとカレントビットプレーン中の既に符号化された情報を利用することである。また、符号化されたビットプレーン又はビットプレーン群と、重要度レベル及び部分帯域バケッティングにより生成された符号化部分帯域又は部分帯域群のレートを識別するため数ビットを利用することである。
【0223】
図40において、コンテクストモデル2100は2つの入力、すなわちカレント重要度レベル2110とメモリからの係数2111を有する。カレント重要度レベル2110はテールオン情報/ビットジェネレータブロック2101と重要度レベル・部分帯域バケッティング(bucketing)ブロック2102の入力に接続される。メモリからの係数2111はブロック2101とレジスタ2103〜2106に接続される。
【0224】
ブロック2101は、係数を受け取って1のビットの有無を判定する。一実施例では、ブロック2101は1のビットの場所も特定する。ブロック2101の出力は、テールオン情報に基づいた1ビット又は2ビットである。一実施例では、テール情報は、最初の非0絶対値ビットが観測されているか否か(先頭の“オンビット”が観測されたか否か)を表し、また、観測されているならば、何ビットプレーン前かを表す。図64はテール情報ビットの説明である。
【0225】
この2ビットのテール情報から、そのテール情報がゼロか否かを示す1ビットの“テール・オン”値が合成される。一実施例では、テール情報とテール・オンビットは係数が符号化された直後に更新される。別の実施例では、その更新は、並列的コンテクスト生成を可能にするため、もっと後に行われる。
【0226】
さらに、この2ビットは、符号化される重要度レベルを示すために利用される。最初の2ビットプレーンは値0を、第2の2ビットプレーンは値1を、第3の2ビットプレーンは値2を、残りのビットプレーンは値3を使用する。さらに、すべてゼロの、ヘッドビットのランレングス・エンコーディングがある。
【0227】
ヘッドビットのためのコンテクストの10ビットは、親とW(西)係数それぞれからの2ビット情報、N(北),E(東),SW(南西),S(南)の各係数からの1ビット情報、2ビットの重要性レベル情報からなる。
【0228】
一実施例では、一部又は全ての周波数帯域についてテール情報が用いられない。こうすることにより、周波数帯域を、その親を前もって復号化することなく復号化できるようになる。
【0229】
別の実施例では、各周波数帯域のビットプレーンの重要度レベルへの割り当てに、一つの桁揃えを用いる。親のテール・オン情報の決定に、もう一つの桁揃えを利用するが、これは実際に符号化されたものより少ない親ビットプレーンを利用する。これは、ある周波数帯域のいくつかのビットプレーンを、同じ重要度レベルの親の対応ビットプレーンを復号化せずに復号化できるようにする(図57参照)。例えば、MSE桁揃えに基づいた親のテール・オン情報によらず、ピラミッド桁揃えにより画像を符号化できる(図58参照)。これにより、復号化器は、ピラミッド桁揃えで復号化して、MSE桁揃えを模擬し又はピラミッド桁揃えとMSE桁揃えの間の任意の桁揃えを模擬することができる。
【0230】
図40において、ブロック2101の出力はレジスタ2103〜2106の入力に接続される。レジスタ2103〜2106は近傍データを蓄積する。例えば、上/左シフトレジスタ2103は、カレント係数の直上のビットを、そのラインの間中保持する。カレント・シフトレジスタ2104はカレントラインの係数のビットを保持し、下/右シフトレジスタ2105はシフトレジスタの直下ラインからのラインを保持する。最後に、親レジスタ2106は親データを保持する。こられシフトレジスタの出力がコンテクストを構成する。
【0231】
重要度レベル・部分帯域バケッティング(bucketing)ブロック2102の出力もコンテクストとして利用される。複数の部分帯域及び異なったレベルを同じコンテクストで符号化しようとする時にコンテクストの一部となるような場合である。そのような場合、ブロック2102の出力は、レジスタ2103〜2106の出力と組み合わされてコンテクストを構成する。そのような場合でなければ、コンテクストはレジスタ2103〜2106の出力だけから構成される。
また、コンテクストモデル2100から1つのビットが出力される。
【0232】
カレントビットプレーンのデータを使用するためのビット−コンテクスト遅延を考慮して、DD,SD,DS係数間の交替により符号化を行ってもよい(部分木間の交替)。
【0233】
なお、条件付けに必要となる係数を格納するためにメモリが必要となる(図36参照)。全ての近傍係数及び親により条件付けするコンテクストモデルの一実施例のためのメモリ使用方法を図41に示す。短シーム変換順を想定している。(外部メモリを使用して長シーム変換順をサポートすることもできる。それには、メモリ量と帯域幅の両方の追加が必要となろう。)
高レベルの親による条件付けは非常にコストがかかる。ある木のレベル4のDD係数は、当該木のレベル1のDD係数の殆どより16木だけ後になるまで計算されない。また、後で符号化される係数全体(図41の影が付けられていない係数)を記憶することは、後に条件付けで利用するためのテールオン情報(図41の影が付けられたもの)だけを記憶する場合にくらべて非常にコストがかかる。同じ木にある“西”情報と当該“西”木のからのデータなしに生成される親のみに基づいて条件付けをすれば、必要となるメモリ量が大幅に減少するであろう。親又は西の情報が得られない場合には、北又は東から得られる情報をコピーするのが有効である。
【0234】
<符号ビットのコンテクストモデル>
符号ビットのための条件付けを与えるコンテクストモデルは単純である。上の画素の符号が分かっているときには、それが条件付けのために利用される。上の画素の符号が分かっていないときには、そのビットは符号化されない。((R2(0))が利用される。あるいは、全符号ビットについて不符号化(R2(0))を使用できる)。
【0235】
図42は、符号ビットのためのコンテクストモデルの一実施例のブロック図である。図42において、mux2301は、北の符号ビット2303と0のビット2304を受け取り、北のテールオンビット2302により制御されることにより、北のテールオンビット2302が1のときに北の符号ビット2303を出力し、そうでないときに0を出力する。このように、北の画素は、その南の画素に対するコンテクストを提供するための北テールオンビット2302と北符号ビット2303を供給する。
【0236】
<テールビットのコンテクストモデル>
テールビットに対しては条件付けは利用されない。一実施例では、固定した確率状態が用いられ、確率更新は用いられない。図65は、テールビットに用いられるコードの3つの選択肢を表す。R2(1)とR2(0)を用いる2番目の選択肢が良い選択である。
【0237】
一実施例では、M≒60%,L≒40%なる確率に好適な黄金比コードは次のとおりである:
入力 符号語
MMM 00
MML 110
ML 01
LM 10
SS 111
【0238】
<コンテクストビン(bin)の要約>
システムで利用可能なコンテクストビンの最小個数は次のとおりである。SS,各木の先頭ビットプレーン、符号及びテールビットはすべて符号化されない(R2(0)コードが使われる)。PEM状態や最高確率シンボル(MPS)ビットを記憶する必要はないが、R2(0)コードを選択するためのロジックがなければならない。したがって、これをどのように考えるかによるが、ハードウェアコストは0又は1コンテクストビンである。ヘッドビットに対しては適応符号化が用いられるべきである。低重要度データは、1ビットプレーンが一度に符号化されるから、ビットプレーンによる条件付けは重要でない。最高重要度データについては、各ウェーブレット木の先頭ビットプレーンは、ビットプレーン数を十分に減少させるであろうから、それらビットプレーンによる条件付けは重要でない。部分帯域による条件付けの有効性は、どのようなものかあまり明確でないが、これもこの最小のコンテクスト例では無視できる。3つの近傍係数と1つの親係数のテールビットを合計4ビット(16コンテクストビン)のために使用してよい。1つの追加のコンテクストビンをルックアヘッドのために使用してよい。(メモリサイズが依然として2のベキ乗となるように、2つのコンテクストビンを一緒にマッピングしてルックアヘッド用の空きを作るのが、より好都合であるかもしれない。)。
【0239】
4つのコアを用い(コンテクストを4回複写する必要がある)、また1コアあたり2つのコンテクストメモリバンクを用いる場合、“符号化されない”コンテクストをどのように考えるか、また2つのヘッドコンテクストビンが一緒にマッピングされるか否かによって、使用すべきコンテクストの最小個数は128と144の間となろう。
【0240】
十分な条件付けのあるシステムは以下のとおりである:
・SS(9ビット)と先頭ビットプレーン(4ビット)のために、1ビットあたり4コンテクストビン、合計52コンテクストビンを使用する。(これらコンテクストビンはバンクに分割されてもよい、複写される必要はない。)
・テールビットは符号化されず、R2(0)とR2(1)の両方が使用される。これをどう考えるかによるが、そのコストは0,1又は2コンテクストビンである。
・2つの適応的コンテクストと1つの“無コード”コンテクストが符号ビットのために用いられる。
・ヘッドビットは近傍係数/親係数のために8ビット、部分帯域/ビットプレーン情報のために2ビット(1024コンテクストビン)を使用し得る。
・1つのコンテクストがルックアヘッドのために使用される。
【0241】
コンテクストモデルの他の例が、入力係数を符号/絶対値形式に変換する符号/絶対値ユニットの一例とともに、米国特許出願第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”)、に記載されている。
【0242】
このコンテクストモデルはデータのエントロピー符号化のためのコンテクストを提供する。一実施例では、本発明によって行われる全てのエントロピー符号化は、バイナリ・エントロピーコーダによって実行される。単一のコーダを使用して単一の出力コードストリームを生成してもよい。あるいは、多数の(現実の又は仮想の)コーダを使用して多数の(現実の又は仮想の)データストリームを生成してもよい。
【0243】
<LICのためのM項符号化>
図43は、LICに対するM項符号化の利用を表している。M項符号化を圧縮符号化のために利用すると、ルックアヘッドとして作用する(図示の如く)。初めに、次の8係数の状態が調べられる。ヘッドに何かあると、ヘッドビットに対しエントロピー符号化が行われ、8係数の全ヘッドビットが符号化されるまで、全ヘッドビットが毎サイクル1ビットずつエントロピー符号化される。図43において、1のヘッドビットは第1サイクル及び第3サイクルで符号化されるが、0のヘッドビットは第2サイクル及び第4サイクルで符号化される。全ヘッドビットがエントロピー符号化されると、符号ビットとテールビットが同一サイクルで符号化される。例えば、図43において、1のヘッドビットの次にくる符号ビット及びテールビットは全て第5サイクルで符号化される。このようにして、全体のサイクル数が減少する。
【0244】
<本発明の印刷システムへの応用>
図44は、プリンタのフロントエンドの一実施例のブロック図である。図44において、レンダラー(renderer)2501はページ記述言語又はディスプレイリストの形式のデータを受け取る。レンダラー2501は、ラスター画像処理によって構成されてもよい。各ロケーション(例えばスポット)毎に、レンダラー2501は、その色(アプリケーションによるが、例えば、白黒、8ビットRGB値、8ビットCMYK値)を決定する。レンダラー2501の出力は、バンドにフォーマットされた画素の集合であり、バンドバッファ(メモリ)2503に格納される。
【0245】
他の実施例では、Adobe Postscript(登録商標)やMicrosoft Windows(登録商標)GDIのようなページ記述言語(PDL)によるデータはディスプレイリストへ変換される。このディスプレイリストは画素のバンドを生成するために用いられる。この実施例では、画素は連続階調値を表すと仮定され、プリントエンジンに必要とされる何らかの中間調処理もしくはディザ処理が、伸長後に行われることになろう。
【0246】
本発明においては、バンドバッファ2503として使用されるメモリは、圧縮用作業域としても使用される(必要メモリを増加させない)。この二重利用については詳しく後述する。
【0247】
圧縮器2504は各画素バンドを圧縮する。圧縮器2504に対する入力が中間調処理もしくはディザ処理された画素であるときにも圧縮器2504は動作するが、ウェーブレット処理による場合、圧縮率は良くないであろう。中間調処理もしくはディザ処理された画素に対してはバイナリコンテクストモデルを利用できる。圧縮器2504は圧縮データをディスク2505に書き込む。ディスク2505はハードディスクかもしれない。別の実施例では、ディスク2505はランダムアクセスメモリ(RAM)、フラッシュメモリ、光ディスク、磁気テープ、任意の種類の記憶手段、任意種類の通信チャネルかもしれない。
【0248】
図45は、プリンタのバックエンドの一実施例のブロック図である。図45において、プリンタのバックエンド2500はディスク2505に接続された伸長器2602、バンドバッファ(メモリ)2603、プリントエンジン2604からなる。伸長器2602は、ハードディスク2505から圧縮データを読み込んで伸長する。伸長されたデータは画素形式でバンドバッファ(メモリ)2603に格納される。バンドバッファ2603は、圧縮器2504のための作業域として働くバンドバッファ2503と同じメモリでもよい。プリントエンジン2604に対し画素をリアルタイムに送ることができるようにするため、伸長器2602はバンドバッファ2603をデータが十分に満たされた状態に保つ。
【0249】
図46は、オプショナルな画質改善を含む別の実施例である。図46において、伸長器2602より出力される画素は画質改善ブロック2705を介してバンドバッファ2603に入力するが、他の情報すなわち未だ画素になっていない情報(部分的な係数)はバンドバッファ2603へ直接送られる。画質改善ブロック2705は、補間処理、平滑化処理、誤差拡散処理、中間調処理及び/又はディザ処理などの機能を果たす。
【0250】
伸長器2602とバンドバッファ2603の間に必要となる帯域幅のため、伸長器2602はまず、変換係数をバンドバッファ2603に書き込み、バンドバッファ2603をアクセスして特定の係数を取り込み、逆変換を行ってからバンドバッファ2603に再び書き込む。なお、バンドバッファ2603は、作業域としては小さいかもしれない。例えば、1ページの画像が64Mバイトでバンドバッファ2603が16Mバイトでも、小さな作業域メモリだと考えられるであろう。
【0251】
例えば、32ビット/画素(8ビットの4成分CMYK)、400dpiのA4画像で、8ページ/分の場合に必要とされる、バンドバッファ2603からプリントエンジン2604へのデータレートは、約8Mバイト/秒である。代表的なハードディスクの転送速度はおおよそ2Mバイト/秒(例えば1.7〜3.5Mバイト/秒)である。したがって、ディスク2505の帯域幅をプリンタの帯域幅に整合させるためには、約4:1の圧縮率が要求される。一実施例によれば、図44の圧縮器2504及び図45又は図46の伸長器2602が、単一の集積回路チップに収容される。
【0252】
図47は、プリンタの圧縮/伸長機能を内蔵した集積回路(IC)チップの一実施例のブロック図である。図47において、画素データインターフェース2801はバンドバッファ(不図示)と接続される。画素データインターフェース2801は、バンドバッファに対する読み書きのためのアドレスを生成する。可逆色空間変換を行うため、オプショナルの可逆色空間変換器2802が含まれるかもしれない。係数データインターフェース2804は、読み書きのためのアドレスを生成し、また2バイト係数を正しくアセンブルする。係数データインターフェース2804は、画素データインターフェース2801と一緒に、外部メモリにある必要のあるラインバッファリング又は係数バッファリングを制御する。係数データインターフェース2804と、可逆色空間変換の利用については後により詳しく説明する。
【0253】
なお、双方向の矢印は、データがいずれの向きにも流れ得ることを意味している。例えば、データを圧縮する時には、ICチップの様々なコンポーネントを通じてデータは左から右へ流れる。他方、データ伸長時には、データはおおむね右から左へ向かって流れる。
【0254】
データの符号化時には、画素データインターフェース2801から、又は可逆色空間変換器2802から(それが含まれているとき)、画素をウェーブレット変換ブロック2803が受け取ってウェーブレット変換を施す。一実施例において、ウェーブレット変換ブロック2803により実行される変換は重複ウェーブレット変換である。これはロスレス及びロッシーの画像圧縮のためのエネルギー集中をする。ロッシー圧縮の場合、JPEGの悩みであるブロック境界歪みが回避される。フィルタ係数は、適切に桁揃えされた時には、スカラー量子化で良好なロッシー圧縮結果が得られるように正規化される。一実施例では、ウェーブレット変換ブロック2803は、2・6変換を行う。他の実施例では、ウェーブレット変換ブロック2803は2・10変換を行う。ウェーブレット変換ブロック2803は他の公知の変換を行ってもよい。ウェーブレット変換ブロック2803の様々な具体例について後に詳述する。
【0255】
ウェーブレット変換ブロック2803から出力された係数は、後で符号化するため、係数データインターフェース2804を介してメモリ(例えばバンドバッファ)へ再び書き込まれることがある。一実施例では、メモリに再書き込みされるデータは低重要度データであり、その詳細は後述する。このようなデータは、その後にICチップに読み込まれ符号化される。
【0256】
ウェーブレット変換ブロック2803より出力された係数、又は係数データインターフェース2804を介して受け取られた係数は、コンテクストモデル2805に供給される。コンテクストモデル2805は、符号化器/復号化器2806によるデータの符号化(又は復号化)のためのコンテクストを提供する。一実施例では、コンテクストモデル2805はデータを直接的に符号化へ渡すことができる。このように、コンテクストモデル2805は最高重要度コンテクストモデルとして動作する。各種のコンテクストモデルの実現構成は前述した。
【0257】
一実施例では、符号化器/復号化器2806は高速並列コーダからなる。高速並列コーダは、数ビットを並列に処理する。一実施例では、高速並列コーダはVLSIハードウェアで実現され、あるいは圧縮性能を犠牲にすることなくマルチプロセッサ・コンピュータで実現される。本発明において利用し得る高速並列コーダの一例が、1995年1月10日発行の米国特許第5,381,145号“Method and Apparatus for Parallel Decoding and Encoding of Data”に述べられている。
【0258】
他の実施例では、バイナリ・エントロピーコーダはQコーダ、QMコーダ、有限状態マシンコーダ等からなる。QMコーダは周知の効率バイナリエントロピーコーダである。有限状態マシン(FSM)コーダは確率及び事象(outcome)から圧縮ビットストリームへの単純な変換を提供する。一実施例では、有限状態マシンコーダは、テーブルルックアップにより、符号化器及び復号化器の両方として実現される。多様な確率予測法を、このような有限状態マシンコーダで利用できる。一実施例では、本発明の有限状態マシンコーダは、1993年12月21日発行の米国特許第5,272,478号“Method and Apparatus for Entropy Coding”に記載されているBコーダからなる。
【0259】
符号化器/復号化器2806の出力は、ディスク又は他の記憶媒体あるいは他の通信路とのインターフェースを提供する符号化データインターフェース2807に接続される。
【0260】
符号化データインターフェース2807は、ディスクとの間で符号化データを送受する。一実施例では、SCSIインターフェースコントローラがチップに含まれているならば、それはこの点に実装されるであろう。他の実施例では、符号化データインターフェース2807は外部のSCSIコントローラと通信する。SCSI以外の記憶又は通信が利用されてもよい。
【0261】
伸長期間に、符号化データインターフェース2807を介し、ディスク(又は他のメモリ装置もしくは通信路)より符号化データが符号化器/復号化器2806に受信され、そこでコンテクストモデル2805より与えられるコンテクストを使って伸長される。伸長により得られた係数はウェーブレット変換ブロック2803によって逆変換される。(なお、一実施例ではウェーブレット変換ブロック2803が順変換と逆変換の両方を遂行するが、他の実施例では順変換と逆変換は別々のブロックにより行われる。)
ウェーブレット変換ブロック2803の出力は画素からなり、これはオプショナルな色空間変換を施され、画素データインターフェース2801を介してバンドバッファへ出力される。
【0262】
印刷期間におけるシステムの基本タイミングが図48に示されている。図48において、各符号化単位の符号化データがディスクから読み出される。可能な限り多くのデータが読み出され、短時間遅れて、係数が復号化される。復号化が終わると、逆ウェーブレット変換が計算される。この変換の終了後、画素をプリントエンジンへ送ることができる。なお、図48中の影付けは、特定の符号化単位に対し様々なアクションが何時生じるかを明らかにする。
【0263】
<メモリからディスクへの係数埋め込み>
図27は、本発明における符号化データの構成を示す。図27において、最高重要度データ1003は変換された直後に係数順に符号化される(埋め込まれない)。したがって、このデータはバッファされる必要がない。一実施例では、最高重要度データ1003は、常にディスクから読み出すことができるように、その量が制限される。
【0264】
ある量の低重要度データ1004がバッファされ、埋め込まれ、そしてディスクに重要度の順に書き込まれる。バッファし、埋め込みし、書き込むことができるデータ量は、転送時間によって決まる。すなわち、システムは、ディスクからの転送時間が終了するまでデータを読み込む。ディスクの転送レートによって、どれだけのデータが保存されるかが決まる。これらのレートは分かっており、また個々の転送の物理特性に依存している。
【0265】
圧縮しにくい画像の場合、符号化期間に捨てられるデータもある。このデータは最低重要度データ1005として示されている。最良のディスク転送レートの場合でも最低重要度データを読み出させる可能性が全くないのであれば、そのデータをディスクに格納する理由がない。多くの、おそらく殆どの画像では、データが捨てられることはないであろう。
【0266】
符号化データの順序付けと、それを達成する方法については、既に詳しく説明した。
【0267】
以下、圧縮時及び伸長時のバンドバッファの管理について述べ、続いて符号化データの埋め込みスキームについて説明する。変換、コンテクストモデル及び符号化器/復号化器の並列化のハードウェアによる実現例についても説明する。
【0268】
<画素及び係数のインターフェース>
図49は、画素データの編成方法の一例を示す。図49において、ページ3000はバンド3001〜3004に分割される。一実施例では、ページ3000はページ記述言語又はディスプレイリストによる1ページの記述からなり、各バンドの画素を生成するために使用される。一実施例では、バンド3001〜3004のそれぞれは、ディスプレイリスト技法によって、別々にラスタライズされる。各バンド3001〜3004はさらに符号化単位(例えば3001A〜3001D)に分割される。
【0269】
1バンドにつき多数の符号化単位を用いる利点は、伸長期間にバンドバッファの部分部分を循環的に(ピンポンバッファと同様に)作業域として使用できることである。換言すれば、ある部分の画素を伸長しバンドバッファに格納し、プリンタへ送ると同時に、バンドバッファの別の部分を係数を復号化している間格納するための作業域として使用しつつ、その係数に対応した画素を記憶するためにバンドバッフアのもう1つの部分を使用することができる。
【0270】
図50は、ページ3100のバンドバッファ3101を示す。バンドバッファ3101は符号化単位3101A〜3101Dからなる。符号化単位3101A,3101Bは、伸長器が係数を格納するための作業域として働く。符号化単位3101Cはプリンタへ送る画素を記憶し、一方、符号化単位3101Dは伸長器が次の画素を格納するための作業域として働く。
【0271】
ページ3100全体が印刷される時に、バンドバッファ3101の部分部分を循環的に使用できる。例えば、次の符号化単位として、符号化単位3101Dの画素がプリンタへ出力される画素である。そうなった時に、符号化単位3101B,3101Cは伸長器が係数を記憶するための作業域として使用される。またその時に、符号化単位3101Aは伸長器が次にプリンタへ出力する画素を記憶するための作業域として使用される。
【0272】
本発明においては、係数は画素より大きい。したがって、2倍のメモリが作業域メモリに割り当てられる。別の実施例では、バンドは多くの又はより少ない符号化単位に分割される。例えば、一実施例では、バンドはそれぞれ8個の符号化単位に分割される。
【0273】
<メモリ帯域幅>
画素データインターフェースと係数データインターフェースは協力してバンドバッファメモリを効率的に管理する。高速ページモードDRAM、EDO(extended data out)DRAM、その他の連続アクセスに適したメモリが使用されるときには、これらインターフェースは連続したアドレスのデータを十分な長さのバーストとして転送し、メモリの可能帯域幅を有効に利用する。連続したアドレスに対するバーストアクセスをサポートするために、いくつかの小バッファが必要とされるかもしれない。
【0274】
図51は、並列メモリアクセス要求を説明する復号化タイミング図である。図51において、復号化に必要とされる帯域幅は以下のとおりである。一実施例において、2MHz画素クロック、8MHz成分クロック、32MHz復号化器クロックが用いられ、また、プリントエンジンが1バイト/成分クロックを要求し、変換器が1係数につき2バイトを読み込み、1成分につき1バイトを書き込むことを思い出されたい。変換が符号化単位時間の半分で実行されるとすれば、変換は6バイト/成分クロックを必要とする。変換速度は、計算時間ではなくメモリ帯域幅によって制限される。24バイト/成分クロックの帯域幅を利用できるならば、符号化単位時間の8分の1の時間内で変換を計算できるであろう。外部メモリがシームのために使用されるときには、変換は余分な帯域幅を必要とするかもしれない。一実施例では、符号化データの最高重要度部分については、係数を復号化するのに1成分クロックあたり2バイトの書き込みを必要とする。符号化データの低重要度部分の各ビットプレーンについては、復号化するのに1成分クロックにつき1バイトの読み出しと書き込みを必要とする。なお、これは実施例によってはもっと小さいかもしれない。両方の動作が符号化単位時間の半分を使うならば、4バイト/成分クロックの帯域幅と24バイト/成分クロックの帯域幅がそれぞれ必要となろう。コンテクストシーム情報のために外部メモリが使用されるならば、余分な帯域幅が必要となるかもしれない。
【0275】
一実施例では、最高のバーストモード転送速度は、4メモリアクセス/成分クロック(1アクセス/復号化器クロック)である。したがって、32ビットのデータバスを用いれば、最高転送速度は16バイト/成分クロックよりやや小さい。64ビットのデータバスを用いれば、最高転送速度は32バイト/成分クロックよりやや小さい。
【0276】
<LICメモリの必要帯域幅の削減>
LICの各係数の各ビットは、復号化中に外部メモリの1回の読み出しと1回の書き込みを必要とする。(符号化には1回の読み出ししか必要としない。)これらのメモリアクセスが必要とされるメモリ帯域幅の大半の原因である。一実施例では、各LIC係数を8ビット単位で記憶する代わりに、可能な時に8ビット未満を使って係数を記憶することにより必要な帯域幅を減らす。
【0277】
図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に達する前に完了する。
【0278】
図66において、復号化の開始時はビットプレーンの復号化は全く行われていないため、全ての係数の1ビット(1係数につき1ビット)だけ読み出されヘッド又はテールであるか調べられる。復号化が進むにしたがい1係数あたりのビット数が増加する。
【0279】
図52は、読み出されたデータより大きなデータの書き込みを処理するため循環アドレッシングを利用する方法を説明するものである。このようなことが起きるのは、処理の結果、初めに読み出されたビットより多い、書き込むべきビットが発生するからである。図52において、プロセスは1係数あたり1ビット(メモリスペースの8分の1である)を書き込むことから始まる。続いて、1係数あたり1ビットが読み出され、同時に1係数あたり2〜3ビットが書き込まれる。次に、1係数あたり2〜3ビットが読み出され、同時に1係数あたり3〜4ビットが書き込まれる。これがデータ全部が処理されるまで続く。
【0280】
ハードウェア構成を簡略化するためのいくつかの選択肢がある。常に最小数のビットを使用するのではなく、ことによれば1,2,3,4,6又は8ビットだけが使用されるかもしれない。これは、サイズによっては1ビットが無駄なるかもしれない。LICにおいて符号ビットが符号化されないか分かっていないときでも、符号ビットのためのスペースは常に使用できるだろう。
【0281】
メモリ帯域幅を一層減少させるであろう選択肢は、テールオンビットを必要でないときには記憶しないことかもしれない。例えば、ビットプレーン0を書き込む時には、ヘッドビットかテールビットの6ビットがある。これらビットのどれかが非0ならば、テールオンは真のはずであり、テールオン値を記憶する必要はなく、符号ビットを第7ビットとして記憶させることができる。
【0282】
最高重要度部分(MIC)のためのメモリ帯域幅も可変長記憶方法によって減らしてもよい。いつも1係数あたり8ビットを使用する代わりに、最小数のビットを使用するだけでも節減をもたらすだろう。0係数の代わりに6ビットのルックアヘッド値(図34に示すような)を記憶すれば、メモリが一層効率的に使用されることになろう。
【0283】
<可逆色空間>
本発明は、2つの色空間の間の変換を完全に可逆的でかつ整数演算で実行可能とする可逆色空間変換を随意に実行できるようにする。すなわち、変換された色空間データを逆変換することにより、順変換過程で丸めや打ち切りが行われようと既存のデータを全て得ることができる。可逆色空間変換は、本願出願人に譲渡された米国特許出願第08/436,662号(1995年5月8日受理、“Method and Apparatus for Reversible Color Conversion”)に記載されている。
【0284】
色空間変換は、ロスレスの結果を提供する能力を損なわずに反対(opponent)色空間の利点を活かす。ロスレスの場合、反対色空間は相関を弱め圧縮を向上させる。ロッシーの場合、反対色空間は輝度情報を色差情報より軽く量子化させ視覚的品質の向上をもたらす。本発明の変換に可逆色空間が使用されると、輝度及び色差係数の埋め込みはロッシー圧縮としてはサブサンプリングよりも優れており、しかもロスレス圧縮が可能である。
【0285】
可逆色空間が使用されるときには、8ビット輝度成分の最上位ビットと9ビット色差成分が同じ桁揃えとなるように係数を桁揃えするのが望ましい。ロッシー圧縮のためには、この桁揃えは色差データを輝度データの2倍に量子化せしめ、また輝度のロスレス圧縮と色差のロッシー(ただし非常に高品質の)圧縮を可能にする。これらの結果は共にHuffman視覚系の特性を利用する。
【0286】
<他の画素操作>
プリンタは、殆ど又は全体が非連続階調の文書をしばしば処理する。例えば、黒と白だけ(0と255の値だけ)からなるテキスト画像が普通であろう。一実施例では、バンドのヒストグラムが作られる。例えば、0,255黒/白だけの画像(K成分)を0,1画像に再写像することができる。同様のコンパクション(compaction)をスポットカラー画像に対して施すことができる。なお、コンパクションが使われるときには、圧縮はロスレスでなければならない。しかし、コンパクションが行われる時には、達成されるロスレス圧縮は実質的に改善される。
【0287】
また、本明細書に述べた重複ウェーブレット変換を使う代わりに、ロスレス、ビットプレーン・ベースの、JBIGのようなコンテクストモデルによって、2値画像とスポットカラー画像を処理することもできる。
【0288】
他の実施例では、システムがバイナリモードを持つように設計されるかもしれない。図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は相互に従来周知の方法で動作する。
【0289】
mux3504の出力は、シフトレジスタ3501,3502の出力及びビットジェネレータ3507からのフィードバックと共に、コンテクストメモリ3505のアドレッシングに使われるコンテクストビンアドレスを形成する。一実施例では、コンテクストメモリ3505は、一実施例では、コンテクストメモリ3505に、各確率状態を記述するための6ビットからなるコンテクストモデルが1,024個入っている。これは1,024×6ビットのコンテクストメモリを必要とする。
【0290】
ビットジェネレータ3507は、カレント・ラインから復号化されたビットを、コンテクストアドレスの一部として提供するので、コンテクストメモリに対するアクセス時間を含んだ大きな“ビット−コンテクスト”遅延がある。
【0291】
図55は、シフトレジスタ3501,3502の出力及びマルチプレクサ3504の出力を受け取る同一アドレス指示ブロック3601と協力し、確率予測マシンをアクセスするために、カレント・ラインからの復号化ビットを使用する他の実施例を示す。PEM3506は、前ビットを受け取り、それを利用して、使用されたコンテクスト対の中から適切な1つのコンテクストを選択する。選択されたコンテクストは更新され、両コンテクストはメモリに再書き込みされる。同一アドレス指示ブロック3601は、既に読み出されてデータが確率予測マシン内にあるアドレスを検出する。同一アドレス指示ブロック3801は、メモリ内の失効した情報に代えてPEM内に既にあるデータ(更新されたデータかもしれない)を使用するための信号も発生する。
【0292】
一実施例では、復号化器は各確率状態を記述する6ビットからなる1024個のコンテクストビンを含む。これは512×12ビットのコンテクストメモリを必要とする。シフトレジスタ3501,3502の出力は、マルチプレクサ3504の出力と共に、前ビットだけが利用されない部分コンテクストビンアドレスを与える。これにより、コンテクストメモリ3505から1対のコンテクストビンが選択される。コンテクストビンの2ビット以上を部分コンテクストから排除できる。各メモリロケーションに2のn乗個の確率状態が入る。ここでnは排除されたビットの個数である。
【0293】
“ビット−コンテクスト”遅延が減少することに注意されたい。前ビットが復号化される前にコンテクストメモリアクセスが生じてもよい。前ビットが復号化される前に、対をなす両状態に対するPEM状態の処理が並列的に開始してもよい。高速動作を達成できる。
【0294】
<符号化器レート制御>
符号化器のレート制御を行うには、データを量子化する能力があるだけでなく、量子化に関する決定ができるようにレートを測定することも必要である。レートが圧縮が良好でないこと(すなわち所望のレベルでないこと)を示すときには、量子化を増大させてよい。他方、レートが圧縮が高すぎることを示すときには、量子化を減少させてよい。レート制御決定は符号化器と復号化器とで全く同じように行われねばならない。
【0295】
符号化器と復号化器が同じ決定をするよう保証する一方法は、シグナリング(signaling)を使うことである。符号化器は所定のインターバルでレートを測定し、次インターバルで利用するため量子化Qをメモリに記憶する。復号化器は単純に各インターバルのための量子化をメモリから取り出す。これには余分なメモリが必要である。例えば、(Qの+2,+1,0,-1の変化の表示又は1,2,3,4のQの記憶のための)256ロケーション×2ビットのオンチップSRAMは、4096ライン画像に対し16ライン毎に量子化Qを変化させるのに足りるであろう。
【0296】
レート測定には様々な選択肢がある。図53は、符号化器と復号化器のペアを示す。図53に示す符号化器/復号化器ペアは、コンテクストモデル(CM)、確率予測モデル/マシン(PEM)、及びビットジェネレータ(BG)、並びにランカウント(run count)並べ換えユニット、インターリーブド(interleaved)ワード並べ換えユニット及びシフタからなる。説明については、本願出願人に譲渡された、また引用により本明細書に組み込まれる米国特許第5,381,145号及び同第5,583,500号を参照されたい。
【0297】
復号化器がレートを同じ場所で測定できないとしても、レート測定値は明確でなければならない。例えば、レート測定値は、圧縮コードストリームの一部として復号化器に与えられる。
【0298】
小さい方のサークル(図53中の位置2)として示した、もう一つのレート測定の選択肢は、符号化器においてインターリーブド・ワードの始まりをカウントすることである。これは、他の実施例では、ビット生成ステージ(図53中の位置4)の後で行われる。符号化器と復号化器は同時に符号語に取りかかるため、レートの暗黙的なシグナリングを用いてもよい。このカウントを、レジスタと符号語長を加算する加算器からなる平均符号語長を測定する計算ハードウェアによって行ってもよい。このカウントと平均ビット数測定を行うためのハードウェアは当該技術分野では周知であり、図53にブロック3401として示されている。このブロックを、システム中の別の場所(例えば、符号化器及び復号化器の両方の位置1,2,3,4)で同様の測定をするために用いてもよいことは明らかであろう。
【0299】
他の選択肢は、ビットジェネレータの後及びインターリーブド・ワード並べ換えユニットの前(図53の位置3)で完全な符号語のサイズをカウントする方法や、ディスクに実際に書き込まれたデータ量を測定する方法(図53の位置1)であろう。
【0300】
レート測定は暗黙的でもよい。すなわち、符号化器と復号化器の両方で同じレート測定計算を行う。例えば、符号化器と復号化器が、新しい符号語が始まる度に符号語の平均サイズを累積してもよい。これは図53の位置4に示されている。(実際のサイズを使うことはできない。符号化器は符号語の終わりまでサイズが分からないからである。)
コアに使用されるRコードのサイズがR2(0)からR2(7)まで変わるときには、平均符号語サイズは1ビットから4.5ビットまで変化する。確率予測がうまくいけば、平均を使うことは非常に正確であろう。そうでなくとも、最小符号語長と最大符号語長の差は平均に対し一般的にそれほど大きくないので、予測値は依然として有効である。Rz(k)符号語の平均サイズはk/2+1ビットである。
【0301】
目標とするところは、ほぼ全ての場合に、最高重要度データが十分に圧縮され、かつ無量子化(Q=1)が必要とならないことであろう。“病理学の”画像だけは量子化(Q>1)を必要とする。しかし、量子化機能を含むことにより、病理学の画像に対しシステムが動かなくならないよう保証することができる。
【0302】
符号化器レート制御のもう一つの利益は、最大帯域幅に達した時に低重要度データの符号化を止めることができることである。これは符号化スピードを増加させ、データ出力のためのトータル時間を減少させる(例えばトータル印刷時間を減らす)。
【0303】
量子化変化の結果(Qの値)を記憶することが重要である。例えば、量子化が変化する場合、一群の係数中の最大係数の決定は首尾一貫していなければならない。また、(ビットプレーンが捨てられる場合に)量子化係数を再構成するのに、最良の結果を得るためには捨てられたビットプレーン数を考慮する必要がある。
【0304】
<高速の並列符号化とコンテクストモデル>
本発明のエントロピー符号化部は2つの部分からなる。一つは並列動作する高速符号化コアで、確率予測とビット生成をする。もう一つはコンテクストモデルで、符号化に使うコンテクストを提供する。
【0305】
所要速度を達成するために必要なコアの個数はアプリケーション次第である。
【0306】
エントロピー符号化システムの他の部分は、本発明の係数のためのコンテクストモデルである。コンテクストモデルを構築するにあたって、とり得るトレードオフが数多くある。本発明は、一実施例において、本発明の高速並列コーダの使用をサポートするための並列化を可能にするコンテクストモデルを低いハードウェアコストで提供する。このコンテクストモデルの実施例は前述した。
【0307】
ウェーブレット係数のためのコンテクストモデルについてだけ説明したが、本発明はウェーブレット係数だけをサポートするコンテクストモデルに限定されるものではない。例えば、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”に述べられているような、補助のコンテクストモデルを利用してよい。
【0308】
<並列化>
一実施例では、係数のビット数が8ビットから12ビットまで(可逆色空間が使われるときには13ビットまで)の場合に、1係数あたり8ビットを符号化/復号化するために4つの高速符号化コアが使用される。一実施例では、1つのコアに4成分のそれぞれが割り当てられ、並列化とデータフローを単純化する。各係数は、(ルックアヘッドのためのデシジョン等を含む)ビットの符号化/復号化のために最大16サイクルまで使うことができる。
【0309】
本発明は、一部のコアがそのルックアヘッドの成功により遊休状態であったり別のコアが先頭の“オン”ビットの後の符号ビットを処理中であっても、各成分用コアを同期した状態に維持する。コンテクストモデルを動作させるためのトータル時間は、データによって変動し、特にルックアヘッドの有効性によって大きく変動し、また、それほどではないが先頭の”オン”ビットの位置によっても変動する。
【0310】
以上の説明を読めば当業者には本発明の多くの変形及び修正が明白となるであろうから、説明のために図示、説明された特定の実施例は限定することを意図したものでは決してないものと理解されるべきである。
【0311】
【発明の効果】
以上の説明から明らかなように、本発明によれば、高速なロッシー/ロスレス圧縮が可能になり、また、圧縮/伸長システムに安価なハードディスクを使用可能となり、また、速度をハードディスクにマッチングさせ、かつ、圧縮を利用してハードディスクをプリントエンジンなどのシステムの他の部分の帯域幅にマッチングさせることが可能になる等々の多くの効果を得られる。
【図面の簡単な説明】
【図1】 コンテクスト従属関係を示す図である。
【図2】 ラスタ順と同様の順序を示す図である。
【図3】 短シーム順の一例を示す図である。
【図4】 短シーム順の他の例を示す図である。
【図5】 TS変換のレベル1水平処理結果を示す図である。
【図6】 TS変換のレベル1垂直処理結果を示す図である。
【図7】 TS変換のレベル2水平処理結果を示す図である。
【図8】 TS変換のレベル2垂直処理結果を示す図である。
【図9】 TS変換のレベル3水平処理結果を示す図である。
【図10】 TS変換のレベル3垂直処理結果を示す図である。
【図11】 TS変換のレベル4水平処理結果を示す図である。
【図12】 TS変換のレベル4垂直処理結果を示す図である。
【図13】 順/逆フィルタの一例のブロック図である図である。
【図14】 本発明による第1レベル順変換の一例のブロック図である。
【図15】 本発明による完全な順変換の一例を示すブロック図である。
【図16】 係数出力時のタイミング図である。
【図17】 TT変換のレベル1水平処理結果を示す図である。
【図18】 TT変換のレベル1垂直処理結果を示す図である。
【図19】 TT変換のレベル2水平処理結果を示す図である。
【図20】 TT変換のレベル2垂直処理結果を示す図である。
【図21】 TT変換のレベル3水平処理結果を示す図である。
【図22】 TT変換のレベル3垂直処理結果を示す図である。
【図23】 TT変換のレベル4水平処理結果を示す図である。
【図24】 TT変換のレベル4垂直処理結果を示す図である。
【図25】 10タップの順/逆フィルタユニットのブロック図である。
【図26】 図25に示す順/逆フィルタにおける重複ユニットの一例のブロック図である。
【図27】 コードストリームの順序付け及び符号化単位内の順序付けを示す図である。
【図28】 bビット/画素の入力画像を2レベルTS変換及びTT変換で分解した場合の各種係数のビット深さを示す図である。
【図29】 本発明において係数桁揃えに用いられる周波数帯域に対する乗数の一例を示す図である。
【図30】 最高重要度データと低重要度データとに分割した係数を示す図である。
【図31】 データが捨てられることのないロスレスのケースを示す図である。
【図32】 データの1ビットプレーンが捨てられたケースを示す図である。
【図33】 圧縮/伸長システムの動作の一例を示すフローチャートである。
【図34】 一つの木に対し6ビットが用いられる例を示す図である。
【図35】 最高重要度部分の符号化を示すフローチャートである。
【図36】 最高重要度データの符号化パスに用いられるフォーマッティングユニット及びコンテクストモデルの一例のブロック図である。
【図37】 先頭ビットプレーンユニットの一例を示すブロック図である。
【図38】 LICビットプレーンの符号化プロセスの一例を示すフローチャートである。
【図39】 低重要度データのためのルックアヘッド・モデル及びコンテクストモデルの一例を示すブロック図である。
【図40】 ヘッドビットのためのコンテクストモデルの一例を示すブロック図である。
【図41】 全ての隣り合うもの及び親による条件付けがあるコンテクストモデルの一例のためのメモリ使用方法を示す図である。
【図42】 符号ビットのためのコンテクストモデルの一例を示すブロック図である。
【図43】 LICに対する並列符号化の一例を示す図である。
【図44】 プリンタのフロントエンドの一例を示すブロック図である。
【図45】 プリンタのバックエンドの一例を示すブロック図である。
【図46】 プリンタのバックエンドの他の例を示すブロック図である。
【図47】 プリンタの圧縮/伸長機能を含む集積回路チップの一例を示すブロック図である。
【図48】 印刷時の基本タイミングを示す図である。
【図49】 画素データの編成方法の一例を示す図である。
【図50】 バンドバッファを示す図である。
【図51】 同時メモリアクセス要求を明らかにする復号化タイミング図である。
【図52】 読み出されたデータより大きなデータの書き込みを処理するための循環アドレッシングの利用法を示す図である。
【図53】 符号化器と復号化器のペアを示すブロック図である。
【図54】 バイナリコンテクストモデルの一例を示すブロック図である。
【図55】 バイナリコンテクストモデルの他の例を示すフロック図である。
【図56】 符号化単位の各係数の近傍係数を示す図である。
【図57】 MSE桁揃えに基づいたピラミッド桁揃えを示す図である。
【図58】 ウェーブレット係数のMSE桁揃えを示す図である。
【図59】 様々なレベル数の場合のウェーブレット木のスパンを示す表図である。
【図60】 記憶する必要のある”ss”係数の個数を示す表図である。
【図61】 4ビット係数のビットシグニフィカンス表現を示す表図である。
【図62】 係数桁揃えのための桁揃え数を示す表図である。
【図63】 最高重要度データ及び低重要度データの指示ビットを説明する表図である。
【図64】 テール情報の定義を示す表図である。
【図65】 テールビットに用いられる確率状態を示す表図である。
【図66】 各ビットプレーンの復号化のためのLIC係数の記憶に要するメモリ量を示す表図である。
【符号の説明】
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)
Claims (9)
- 画素値及びウェーブレット変換係数を格納するバッファと、
前記バッファに格納されている画素値に対してウェーブレット変換を行ってウェーブレット変換係数を出力するウェーブレット変換ユニットと、
前記ウェーブレット変換ユニットから出力されるウェーブレット変換係数のうち下位ビットの低重要度データを前記バッファに送出して該バッファに再格納する第1の送出手段と、
前記バッファに格納されている前記ウェーブレット変換係数の低重要度データをコーダユニットに送出する第2の送出手段と、
前記ウェーブレット変換ユニットから出力されるウェーブレット変換係数の上位ビットの重要度データ、あるいは、前記第2の送出手段による前記バッファからの前記ウェーブレット変換係数の低重要度データが入力され、符号化処理を行うコーダユニットとを有し、
前記ウェーブレット変換係数の重要度データは、前記バッファに格納されずに直ちに前記コーダユニットに送出されて符号化処理され、
前記ウェーブレット変換係数の低重要度データは、前記第1の送出手段により前記バッファに格納された後、前記第2の送出手段により前記コーダユニットに送出されて符号化処理されることを特徴とする圧縮システム。 - 前記バッファが少なくとも1つの画像を複数に分割したバンドデータを格納するためのバンドバッファからなることを特徴とする請求項1記載の圧縮システム。
- 前記コーダユニットは、前記ウェーブレット変換係数の符号化される順序と条件を決定するコンテクストモデルと、前記ウェーブレット変換係数のエントロピー符号化処理を行うエントロピーコーダとを具備し、
前記ウェーブレット変換係数の重要度データは、前記バッファに格納されずに前記コンテクストモデルに送出され、該コンテクストモデルを用いて前記エントロピーコーダで直ちに係数順序に符号化され、
前記ウェーブレット変換係数の低重要度データは、前記第1の送出手段により前記バッファに格納された後、前記第2の送出手段により前記コンテクストモデルに送出され、該コンテクストモデルを用いて前記エントロピーコーダで重要度順に符号化される、
ことを特徴とする請求項1記載の圧縮システム。 - 前記エントロピーコーダが並列コーダからなることを特徴とする請求項3記載の圧縮システム。
- 前記エントロピーコーダがQMコーダからなることを特徴とする請求項3記載の圧縮システム。
- 前記エントロピーコーダが有限状態マシンコーダからなることを特徴とする請求項3記載の圧縮システム。
- 画素値及びウェーブレット変換係数をバッファに格納し、前記画素値にウェーブレット変換ユニットでウェーブレット変換を行い、前記ウェーブレット変換係数をコーダユニットで符号化する圧縮方法であって、
前記バッファに格納されている画素値に対して前記ウェーブレット変換ユニットでウェーブレット変換を行ってウェーブレット変換係数を出力するステップと、
前記ウェーブレット変換ユニットから出力されるウェーブレット変換係数のうち、上位ビットの重要度データは前記コーダユニットに送出し、下位ビットの低重要度データは前記バッファに送出して該バッファに再格納するステップと、
前記バッファに格納されている前記ウェーブレット変換係数の低重要度データを前記コーダユニットに送出するステップと、
前記ウェーブレット変換ユニットから出力されるウェーブレット変換係数の重要度データ、あるいは、前記バッファからの前記ウェーブレット変換係数の低重要度データに対して前記コーダユニットで符号化処理を行うステップとを有し、
前記ウェーブレット変換係数の重要度データは、前記バッファに格納されずに直ちに前記コーダユニットに送出されて符号化処理され、
前記ウェーブレット変換係数の低重要度データは、前記バッファに格納された後、前記コーダユニットに送出されて符号化処理されることを特徴とする圧縮方法。 - 前記コーダユニットは、前記ウェーブレット変換係数の符号化される順序と条件を決定するコンテクストモデルと、前記ウェーブレット変換係数のエントロピー符号化処理を行うエントロピーコーダとを具備し、
前記ウェーブレット変換係数の最高重要度データは、前記バッファに格納されずに前記コンテクストモデルに送出され、該コンテクストモデルを用いて前記エントロピーコーダで直ちに係数順序に符号化され、
前記ウェーブレット変換係数の低重要度データは、前記バッファに格納された後、前記コンテクストモデルに送出され、該コンテクストモデルを用いて前記エントロピーコーダで重要度順に符号化される、
ことを特徴とする請求項7記載の圧縮方法。 - 請求項1乃至6のいずれか1項に記載の圧縮システムに対する伸長システムであって、
逆変換処理を施されるウェーブレット変換係数のための複数の符号化単位、出力装置へ出力される画素値を格納するための少なくとも1つの符号化単位、及び、前記出力装置へ送出される既に逆変換されたウェーブレット変換係数に対応する画素値のための少なくとも1つの符号化単位に分割され、画素値及びウェーブレット変換係数を格納するバンドバッファと、
前記バンドバッファに接続された伸長器とを具備し、
前記伸長器が圧縮データをウェーブレット変換係数に伸長し、前記ウェーブレット変換係数を前記バンドバッファに書き込み、前記バンドバッファより前記ウェーブレット変換係数を再び読み出し、それに逆変換を施して画素値を生成し、前記バンドバッファに書き込むことを特徴とする伸長システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US84707497A | 1997-05-01 | 1997-05-01 | |
US08/847074 | 1997-05-01 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007080246A Division JP2007267384A (ja) | 1997-05-01 | 2007-03-26 | 圧縮装置及び圧縮方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10304368A JPH10304368A (ja) | 1998-11-13 |
JP4148429B2 true JP4148429B2 (ja) | 2008-09-10 |
Family
ID=25299688
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11804898A Expired - Fee Related JP4148429B2 (ja) | 1997-05-01 | 1998-04-28 | 圧縮システム、圧縮方法及び伸長システム |
JP2007080246A Pending JP2007267384A (ja) | 1997-05-01 | 2007-03-26 | 圧縮装置及び圧縮方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007080246A Pending JP2007267384A (ja) | 1997-05-01 | 2007-03-26 | 圧縮装置及び圧縮方法 |
Country Status (6)
Country | Link |
---|---|
JP (2) | JP4148429B2 (ja) |
KR (1) | KR100317792B1 (ja) |
DE (1) | DE19819405B4 (ja) |
FR (1) | FR2763766B1 (ja) |
GB (1) | GB2325584B (ja) |
HK (1) | HK1023470A1 (ja) |
Families Citing this family (14)
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 (de) * | 2000-02-22 | 2001-08-30 | Infineon Technologies Ag | Verfahren zur Kompression von Daten |
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 (ko) * | 2001-09-05 | 2003-03-12 | 김효준 | 블록 기반 제로트리와 사진나무구조를 이용한 영상 압축방법 |
KR100451584B1 (ko) * | 2001-12-20 | 2004-10-08 | 엘지전자 주식회사 | 웨이블릿 변환과 움직임 추정을 이용한 동영상 부호화 및복호화 장치 |
US7460722B2 (en) | 2002-01-11 | 2008-12-02 | Canon Kabushiki Kaisha | Encoding of digital data with determination of sample path |
FR2834832B1 (fr) * | 2002-01-11 | 2005-05-20 | Canon Kk | Codage de donnees numeriques avec calcul d'histogramme |
AU2003272833A1 (en) * | 2002-09-17 | 2004-04-08 | Vladimir Ceperkovic | Fast codec with high compression ratio and minimum required resources |
RU2486245C2 (ru) | 2007-10-15 | 2013-06-27 | Чугаи Сейяку Кабусики Кайся | Способ получения клетки, способной продуцировать гетеропротеины с высоким выходом |
CN101981592B (zh) * | 2007-11-30 | 2013-02-06 | 三菱电机株式会社 | 图像和视频的内容感知大小调整 |
KR101681059B1 (ko) * | 2009-09-22 | 2016-12-01 | 삼성전자주식회사 | 밝기 신호와 색차 신호간의 크로스토크를 최소화하는 비디오 신호 생성 장치 및 방법 |
JP5298381B2 (ja) * | 2011-12-20 | 2013-09-25 | 株式会社アクセル | 画像処理装置及び画像処理方法 |
US9813718B2 (en) * | 2013-10-03 | 2017-11-07 | Samsung Display Co., Ltd. | Apparatus and method for compact bit-plane data compression |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3639753A1 (de) * | 1986-11-21 | 1988-06-01 | Inst Rundfunktechnik Gmbh | Verfahren zum uebertragen digitalisierter tonsignale |
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 (de) * | 1994-02-23 | 2003-08-07 | Ricoh Kk | Entropie-Codierer |
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 |
GB2302245B (en) * | 1994-09-20 | 1997-10-22 | Ricoh Kk | Wavelet transform filter |
JP3302229B2 (ja) * | 1994-09-20 | 2002-07-15 | 株式会社リコー | 符号化方法、符号化/復号方法及び復号方法 |
US5966465A (en) * | 1994-09-21 | 1999-10-12 | Ricoh Corporation | Compression/decompression using reversible embedded wavelets |
US5867602A (en) * | 1994-09-21 | 1999-02-02 | Ricoh Corporation | Reversible wavelet transform and embedded codestream manipulation |
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 |
US5731988A (en) * | 1995-05-08 | 1998-03-24 | Richo Company, Ltd. | Method and apparatus for reversible color conversion |
-
1998
- 1998-04-21 GB GB9808412A patent/GB2325584B/en not_active Expired - Fee Related
- 1998-04-28 JP JP11804898A patent/JP4148429B2/ja not_active Expired - Fee Related
- 1998-04-30 DE DE19819405A patent/DE19819405B4/de not_active Expired - Fee Related
- 1998-04-30 FR FR9805485A patent/FR2763766B1/fr not_active Expired - Fee Related
- 1998-04-30 KR KR1019980015709A patent/KR100317792B1/ko not_active IP Right Cessation
-
2000
- 2000-04-28 HK HK00102587A patent/HK1023470A1/xx not_active IP Right Cessation
-
2007
- 2007-03-26 JP JP2007080246A patent/JP2007267384A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
FR2763766B1 (fr) | 2002-10-25 |
GB9808412D0 (en) | 1998-06-17 |
JPH10304368A (ja) | 1998-11-13 |
KR19980086694A (ko) | 1998-12-05 |
KR100317792B1 (ko) | 2002-02-19 |
GB2325584B (en) | 2000-03-29 |
GB2325584A (en) | 1998-11-25 |
DE19819405A1 (de) | 1998-11-26 |
HK1023470A1 (en) | 2000-09-08 |
JP2007267384A (ja) | 2007-10-11 |
DE19819405B4 (de) | 2006-06-29 |
FR2763766A1 (fr) | 1998-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7016545B1 (en) | Reversible embedded wavelet system implementation | |
US8565298B2 (en) | Encoder rate control | |
JP3792789B2 (ja) | 符号化装置 | |
JP3693988B2 (ja) | 通信管理システム及び通信管理方法 | |
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 | |
JP2007267384A (ja) | 圧縮装置及び圧縮方法 | |
US7215820B2 (en) | Method and apparatus for compression using reversible wavelet transforms and an embedded codestream | |
JP3653183B2 (ja) | ウェーブレット係数再構成処理方法及び装置、並びに記録媒体 | |
GB2341035A (en) | Video coding method | |
GB2313757A (en) | Method using an embedded codestream |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040712 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070124 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070326 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070516 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070717 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080130 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080331 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080618 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080620 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110704 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110704 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120704 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120704 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130704 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |