(57)【要約】  【課題】符号ストリームを伸長することなく、出力装置の特性に応じて適切な量子化を実現する。  【解決手段】圧縮ビットストリームをパーサに入力する。パーサは、要求に従って、圧縮ビットストリームの全部あるいは一部を選択して出力する。例えば、低解像度の圧縮係数を選択することにより、モニタに画像を表示するための符号化データを出力する。あるいは、注目領域の非損失性伸長を可能にするように圧縮データを選択する。一実施例では、パーサは、要求に従って、プレビュー画像からプリンタ解像度画像又はフルサイズの医用モニタ画像までの変化に必要なビットを出力する。パーサから送出された圧縮データは通信路や記憶装置を介して伸長手段で伸長され、伸長画像として出力される。【選択図】図２７
2005218124.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのマーカーを持つヘッダを有する符号ストリームを格納するメモリ、
少なくとも１つの出力装置、
該メモリに接続され、かつ、該少なくとも１つの出力装置より装置特性を受け取るように接続されたパーサからなり、該パーサは装置依存の量子化を実行するように動作可能であるデータ圧縮システム。
【請求項２】
請求項１記載のデータ圧縮システムにおいて、符号ストリームは非損失性圧縮データからなることを特徴とするデータ圧縮システム。
【請求項３】
請求項１記載のデータ圧縮システムにおいて、少なくとも１つのマーカーは符号ストリーム中の各タイルのために用いられた成分の数、サブサンプリング及びアラインメントを示すことを特徴とするデータ圧縮システム。
【請求項４】
請求項１記載のデータ圧縮システムにおいて、符号ストリームは主ヘッダを含み、符号ストリーム中の各タイルの前にローカルヘッダが置かれることを特徴とするデータ圧縮システム。
【請求項５】
請求項４記載のデータ圧縮システムにおいて、主ヘッダは符号ストリーム中の全てのタイルに適用され、各ローカルヘッダは関連したタイルにのみ適用されることを特徴とするデータ圧縮システム。
【請求項６】
請求項５記載のデータ圧縮システムにおいて、ローカルヘッダ中の少なくとも１つは主ヘッダに優先することを特徴とするデータ圧縮システム。
【請求項７】
請求項１記載のデータ圧縮システムにおいて、パーサは符号ストリーム中のマーカーを符号ストリームを量子化するために利用することを特徴とするデータ圧縮システム。
【請求項８】
請求項７記載のデータ圧縮システムにおいて、マーカー中の少なくとも１つは周波数情報を示すことを特徴とするデータ圧縮システム。
【請求項９】
符号ストリームを生成するための圧縮装置をさらに含むことを特徴とする請求項１記載のデータ圧縮システム。
【請求項１０】
請求項１記載のデータ圧縮システムにおいて、パーサは量子化選択装置からなることを特徴とするデータ圧縮システム。
【請求項１１】
請求項１０記載のデータ圧縮システムにおいて、量子化選択装置は画像の集合の変換及び量子化を、様々な係数のビットプレーンを捨てることによって行うことを特徴とするデータ圧縮システム。
【請求項１２】
請求項１記載のデータ圧縮システムにおいて、タグの１つは各タイル中のデータ内の重要性レベルを示すことを特徴とするデータ圧縮システム。
【請求項１３】
請求項１記載のデータ圧縮システムにおいて、タグは重要性レベルロケータ信号を示し、該信号に従って該パーサは打ち切りをすることを特徴とするデータ圧縮システム。
【請求項１４】
請求項１記載のデータ圧縮システムにおいて、タグは保存すべき重要性レベルの数を示すことを特徴とするデータ圧縮システム。
【請求項１５】
請求項１記載のデータ圧縮システムにおいて、タグは保存すべきバイトの数を示すことを特徴とするデータ圧縮システム。
【請求項１６】
請求項１記載のデータ圧縮システムにおいて、タグは重要性レベルとバイト数を関連付ける指示を各タイルに含むことを特徴とするデータ圧縮システム。
【請求項１７】
請求項７記載のデータ圧縮システムにおいて、少なくとも１つのマーカーは各タイル中の重要性レベルのバイト数を示すことを特徴とするデータ圧縮システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ圧縮及び伸長システムの分野に係り、特に、パーサを含むデータ圧縮システムに関する。
【背景技術】
【０００２】
データ圧縮は、大量のデータの蓄積及び伝送のために非常に有用なツールである。例えば、文書のファクシミリ伝送のような画像伝送に要する時間は、圧縮を利用して画像再生に必要とされるビット数を減らすと飛躍的に短縮される。
【０００３】
従来より、多くの様々なデータ圧縮手法が存在している。圧縮手法は、おおまかに分類すると２つのカテゴリー、つまり損失性符号化と非損失性符号化とに分けることができる。損失性符号化とは、情報の損失を生じ、したがって元のデータの完全な再現が保証されない符号化のことである。損失性符号化の目標とするところは、元のデータから変わったとしても、その変化が不快であったり目だったりしないようにすることである。非損失性圧縮では、情報がすべて保存され、データは完全な復元が可能な方法で圧縮される。
【０００４】
非損失性圧縮では、入力シンボルもしくは輝度データが出力符号語に変換される。入力としては、画像データ、音声データ、１次元データ（例えば空間的または時間的に変化するデータ）、２次元データ（例えば２つの空間軸方向に変化する（または１つの空間次元と１つの時間次元で変化する）データ）、あるいは多次元／マルチスペクトルのデータがあろう。圧縮がうまくいけば、その符号語は、符号化前の入力シンボル（または輝度データ）のために必要とされたビット数より少ないビット数で表現される。非損失性符号化法には、辞書符号化方式（例えば、Lempel‐Ziv方式）、ランレングス符号化方式、計数符号化方式、エントロピー符号化方式がある。非損失性の画像圧縮では、圧縮は予測またはコンテキストと符号化に基づいている。ファクシミリ圧縮用ＪＢＩＧ規格と、連続階調画像用のＤＰＣＭ（差分パルス符号変調−ＪＰＥＧ規格のオプション）は画像用の非損失性圧縮の例である。損失性圧縮では、入力シンボルまたは輝度データは、量子化されてから出力符号語へ変換される。量子化は、データの重要な特徴量を保存する一方、重要でない特徴量を除去することを目的としている。損失性圧縮システムは、量子化に先立ち、エネルギー集中をするための変換を利用することが多い。ＪＰＥＧは画像データ用の損失性符号化法の一例である。
【０００５】
画像信号処理における近年の開発は、効率的かつ高精度のデータ圧縮符号化方式を追求することに関心を集中してきた。変換またはピラミッド信号処理の様々な方式が提案されており、その中に多重解像度ピラミッド処理方式とウェーブレット（wavelet）ピラミッド処理方式とがある。これら２方式はサブバンド処理方式及び階層処理方式とも呼ばれる。画像データのウェーブレット・ピラミッド処理方式は、直交ミラーフィルタ（ＱＭＦ）を用いてオリジナル画像のサブバンド分解をする特殊な多重解像度ピラミッド処理方式である。他の非ＱＭＦウェーブレット方式もある。ウェーブレット処理方式に関し、これ以上の情報を得るにはＡntonini，Ｍ．，et  l．，“Ｉmage  Ｃoding  Ｕsing  Ｗavelet  Ｔransform”，IEEE  Ｔransactions  on  Ｉmage  Ｐrocessing，Ｖol．１，Ｎo．２，Ａpril  1992、及びＳhapiro，Ｊ．，“Ａn  Ｅmbedded  Ｈierarchical  Ｉmage  Ｃoder  Ｕsing  Ｚerotrees  of  Ｗavelet  Ｃoefficients”，Ｐroc．IEEE  Ｄata  Ｃompression  Ｃonference，pgs．214-223，1993を参照されたい。また、可逆変換に関する情報を得るには、Ｓaid，Ａ．and  Ｐearlman，Ｗ．“Ｒeversible  Ｉmage  Ｃompression  via  Ｍultiresolution  Ｒepresentation  and  ＰredictiveＣoding”，Ｄept．of  Ｅlectrical，Ｃomputer  and  Ｓystem  Ｅngineering，Ｒenssealaer  Ｐolytechnic  Ｉnstitute，Ｔroy，ＮＹ  1993を参照されたい。
【０００６】
圧縮は、しばしば非常に時間がかかり、また膨大なメモリを必要とする。より高速に、かつ／又は、可能なかぎり少ないメモリで、圧縮を行うのが望ましい。品質を保証できない、圧縮率が不十分である、あるいはデータレートが制御可能でないという理由で、圧縮を利用しなかった応用分野もある。しかし、伝送及び／又は記憶すべき情報量を減らすため圧縮を利用するのが望ましい。
【０００７】
従来技術に、自然連続階調画像を扱うための圧縮システムがある。その一例が、国際標準Ｄis．10918‐1，“Ｄigital  Ｃompression  and  Ｃoding  of  Ｃontinuous-Ｔone  Ｓtill  Ｉmages”，CCITT勧告Ｔ．８１であり、これは通常、ＪＰＥＧと呼ばれる。従来技術に、２値／ノイズフリー／浅画素深度画像を扱うための圧縮システムもある。そのようなシステムの一例が、国際標準ＩＳＯ／ＩＥＣ  11544，“Ｉnformation  Ｔechnology-Ｃoded  Ｒepersentation  of  Ｐicture  and  Ａudio  Ｉnformation-Ｐrogressive  Ｂi-level  Ｉmage  Ｃompression”，CCITT勧告Ｔ．８２であり、これは通常、ＪＢＩＧと呼ばれる。しかしながら、従来技術には両方を適切に処理するシステムがない。そのようなシステムがあると望ましい。
【０００８】
パーサ（parser）はコンピュータ科学において周知である。パーサは、構造が初めは分かっていないオブジェクトの種々の部分に意義付けする役割がある。例えば、コンパイラの一部として動作するあるパーサは、プログラム・ファイル中のある文字列が“識別子”であり、別の文字列が予約語を構成し、また別の文字列がコメントの部分であると決定するだろう。このパーサは、文字列がどういう“意味”であるかを判定するのではなく、対象のどういう種類の部分であるかを判断するだけである。
【０００９】
ほとんどの画像記憶フォーマットは単一用途のものである。すなわち、単一の解像度または単一の品質レベルしか利用できない。他の画像フォーマットは多用途が可能である。従来技術の多用途画像フォーマットの中には、２つ又は３つの解像度／品質の選択肢をサポートするものもあるが、解像度又は品質の一方しか指定できず、両方は指定できないものもある。利用できる解像度及び品質の選択肢を増加させることが望ましい。
【００１０】
例えば、インターネットのワールド・ワイド・ウェブサーバーは、現在、大量のデータの中から必要とされる情報を提供する。普通、ユーザは画面上で多数の画像を閲覧し、いくつかを印刷することに決めることができる。しかし残念ながら、閲覧ツールの現状では、画像が主にモニタ用のものであると印刷出力の品質がかなり悪くなってしまい、画像が主に印刷用のものであると閲覧時間が極端に長くなってしまう。”非損失の”画像の取得は、不可能であるか、あるいは、全く独自のダウンロードとしてなされねばならない。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の一般的な目的は、良好なエネルギー集中をもたらす変換を利用する損失性及び非損失性のデータ圧縮システムを提供することにある。より具体的に述べれば、画像出力装置より与えられる装置特性に応じて装置依存の量子化を遂行するパーサを含むデータ圧縮システムを提供することにある。
【課題を解決するための手段】
【００１２】
請求項１記載の発明によるデータ圧縮システムは、少なくとも１つのマーカーを持つヘッダを有する符号ストリームを格納するメモリ、少なくとも１つの出力装置、該メモリに接続され、かつ、該少なくとも１つの出力装置より装置特性を受け取るように接続されたパーサからなり、該パーサは装置依存の量子化を実行するように動作可能である。請求項２記載の発明によれば、符号ストリームは非損失性圧縮データからなり、請求項３記載の発明によれば、少なくとも１つのマーカーは符号ストリーム中の各タイルのために用いられた成分の数、サブサンプリング及びアラインメントを示し、請求項４記載の発明によれば、符号ストリームは主ヘッダを含み、符号ストリーム中の各タイルの前にローカルヘッダが置かれる。請求項５記載の発明によれば、主ヘッダは符号ストリーム中の全てのタイルに適用され、各ローカルヘッダは関連したタイルにのみ適用される、請求項６記載の発明によれば、ローカルヘッダ中の少なくとも１つは主ヘッダに優先する。請求項７記載の発明によれば、パーサは符号ストリーム中のマーカーを符号ストリームを量子化するために利用し、請求項８記載の発明によれば、マーカー中の少なくとも１つは周波数情報を示す。請求項９記載の発明によれば、データ圧縮システムは符号ストリームを生成するための圧縮装置をさらに含む。請求項１０記載の発明によれば、パーサは量子化選択装置からなり、請求項１１記載の発明によれば、量子化選択装置は画像の集合の変換及び量子化を、様々な係数のビットプレーンを捨てることによって行う。請求項１２記載の発明によれば、タグの１つは各タイル中のデータ内の重要性レベルを示し、請求項１３記載の発明によれば、タグは重要性レベルロケータ信号を示し、該信号に従って該パーサは打ち切りをする。請求項１４記載の発明によれば、タグは保存すべき重要性レベルの数を示し、請求項１５記載の発明によれば、タグは保存すべきバイトの数を示す。請求項１６記載の発明によれば、タグは重要性レベルとバイト数を関連付ける指示を各タイルに含み、請求項１７記載の発明によれば、少なくとも１つのマーカーは各タイル中の重要性レベルのバイト数を示す。
【発明の効果】
【００１３】
以上の説明から明らかな如く、本発明のパーサを含むデータ圧縮システムによれば、符号データを伸長することなく、画像出力装置の特性に応じて符号データストリームの適切な量子化を行うことができる等の効果を有する。
【発明を実施するための最良の形態】
【００１４】
圧縮及び伸長のための方法及び装置について述べる。以下の本発明に関する詳細な説明において、本発明を完全に理解してもらうために、コーダの種類、ビット数、信号名等々、様々な具体例が示される。しかし、当業者には、そのような具体例によらずに本発明を実施し得ることは明白になろう。他方、本発明をいたずらに難解にしないため、周知の構造及びデバイスはブロック図の形式で表し、詳しくは示さない。
【００１５】
以下の詳細説明のかなりの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号表現によって与えられる。このようなアルゴリズム記述及び表現は、データ処理技術分野の当業者によって、その研究の内容を他の当業者に対し最も効率的に伝えるために用いられる手段である。あるアルゴリズムがあり、それが概して、希望する結果に至る自己矛盾のないステップ系列だと考えられるとしよう。これらのステップは、物理量の物理的処理を必要とするものである。必ずという訳ではないが、これらの物理量は記憶、転送、結合、比較、その他処理が可能な電気的または磁気的信号の形をとるのが普通である。これらの信号をビット、値、要素、記号、文字、用語、数字等で表わすのが、主に慣用上の理由から、時に都合がよいことが分かっている。
【００１６】
しかしながら、このような用語は、適切な物理量と関係付けられるべきであり、また、これら物理量につけた便宜上のラベルに過ぎないということに留意すべきである。以下の説明から明らかなように、特に断わらない限り、“処理”“演算”“計算”“判定”“表示”等々の用語を用いて論じることは、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）な量として表現されたデータを処理して、コンピュータシステムのメモリまたはレジスタ、同様の情報記憶装置、情報伝送装置あるいは表示装置の内部の同様に物理量として表現された他のデータへ変換する、コンピュータシステムあるいは同様の電子演算装置の作用及びプロセスを指すものである。
【００１７】
本発明はまた、本明細書に述べる操作を実行するための装置にも関係する。この装置は、要求目的のために専用に作られてもよいし、あるいは、汎用コンピュータを内蔵プログラムにより選択的に駆動または再構成したものでもよい。本明細書に提示されるアルゴリズム及び表示は、本質的に、いかなる特定のコンピュータやその他装置とも関係がない。様々な汎用マシンを本明細書に述べたところに従うプログラムで利用してもよいし、あるいは、必要な方法ステップの実行のためにより特化した装置を作るほうが好都合であるかもしれない。これら多様なマシンに要求される構造は以下の説明より明らかになろう。さらに、本発明を説明するにあたり、いかなる特定のプログラミング言語とも関連付けない。本明細書において述べるように、本発明の教えるところを実現するために多様なプログラミング言語を使用してよいことが分かるであろう。
【００１８】
下記用語が以下の説明に用いられる。それら各種用語にはすでに語義がある。しかし、規定された語義は、それら用語が当該分野において知られている範囲に限定して考えられるべきでない。これら語義は、本発明の理解を手助けするために規定されたものである。
【００１９】
アラインメント（alignment）：
ある周波数帯域内の変換係数の、他の周波数帯域に対するシフト度合。
【００２０】
バイナリ符号化方式：
２値、有限画素深度の、又はノイズフリーのデータのための符号化の一方式。一実施例にあっては、バイナリ符号化方式は画素のグレイ(Gray)符号化と特有のコンテキスト・モデルからなる。
【００２１】
ビット・シグニフィカンス（bit-significance）：
符号（sign）絶対値表現に似た数表現で、ヘッド(head)ビットの後に符号(sign)ビットが続き、さらに、テール(tail)ビットがあれば、その後に続く。埋め込み(embedding)は、この数表現に対しビットプレーン順に符号化する。
【００２２】
コンテキスト・モデル：
符号化しようとするカレント・ビットに関する原因として利用可能な情報で、カレント・ビットに関する過去に学習した情報を提供し、エントロピー符号化のための条件付確率予測を可能にする。
【００２３】
埋め込み量子化：
符号ストリームに包含される量子化。例えば、重要性レベルが、最高のレベルから最低のレベルへと順に並べられているときには、符号ストリームの単なる打ち切りによって量子化が行われる。タグ、マーカー、ポインタ、その他の信号によって同じ作用を得ることができる。
【００２４】
エントロピー・コーダ：
カレント・ビットを、確率予測に基づいて符号化又は復号化する装置。
エントロピー・コーダは、本明細書では多重コンテキスト・バイナリ・コーダとも呼ばれるであろう。カレント・ビットのコンテキストは“近傍”ビットに関するいくつかの選ばれた配置であり、カレント・ビット（１ビットまたは複数ビット）の最適表現のための確率予測を可能にする。一実施例では、エントロピー・コーダはバイナリ・コーダ又はハフマン・コーダを含む。
【００２５】
固定長：
データの特定ブロックを圧縮データの特定ブロックへ変換する方式。例えばＢＴＣ（ブロック打ち切り符号化）、ＶＱ（ベクトル量子化）のいくつかの方式。固定長符号は固定レート・固定サイズのアプリケーションに適するが、レート・歪み性能は可変レート方式に比べ劣ることが多い。
【００２６】
固定レート：
ある一定の画素レートを維持しなければならず、帯域幅の限定された通信路を持つアプリケーション又は方式。この目的を成し遂げるには、全体的に平均して圧縮するというよりも、局所的に平均して圧縮することが必要である。例えば、ＭＰＥＧは固定レートを要求する。
【００２７】
固定サイズ：
限られたサイズのバッファを持つアプリケーション又は方式。この目的を成し遂げるため、全体的に平均した圧縮が達成される、例えば、印刷バッファ。（アプリケーションは、固定レートでかつ固定サイズのことも、そのどちらかのこともある。）
【００２８】
周波数帯域：
各周波数帯域は、同じフィルタ処理系列によりもたらされる一群の係数を表す。
【００２９】
ヘッド・ビット：
ビット・シグニフィカンス表現において、ヘッドビットとは、最上位ビッから最初の非ゼロのビットまでの、該最初の非ゼロビットを含めた絶対値ビットである。
【００３０】
水平コンテキストモデル：
（一実施例では）埋め込みウェーブレット係数及びバイナリ・エントロピー・コーダのためのコンテキスト・モデル。
【００３１】
ベキ等：
画像を損失性形式で伸長してから同じ損失性符号語へ再圧縮することを可能にする符号化。
【００３２】
画像タイル：
それぞれが同一のパラメータを持つ、オーバーラップのない連続した部分画像の格子の定義を可能にするため選ばれた矩形領域。画像タイルは、ウェーブレット方式符号化において変換の計算のため必要になるバッファ・サイズに影響を及ぼす。画像タイルはランダムにアドレスできる。符号化操作は１画像タイル中の画素及び係数データを処理用する。このため、画像タイルを乱順に構文解析又は復号化することができる。すなわち、画像タイルを、ランダムにアドレスし、又は注目領域の伸長の様々な歪みレベルに応じて復号化することができる。一実施例では、画像タイルは最上部及び最下部のもの以外は全て同一サイズである。画像タイルは、画像全体のサイズ以下の任意サイズにしてよい。
【００３３】
重要性レベル：
特定の体系を定義することにより、入力データ（画素データ、係数、誤差信号等）は視覚的効果が同じ複数のグループに論理的に分類される。例えば、最上位の一つまたは複数のビットプレーンは、多分、それより下位のビットプレーンより視覚的に重要であろう。また、低い周波数の情報は一般に高い周波数の情報より重要である。“視覚的重要性”の実用定義の殆どは、後述のように本発明も含め、何らかの誤差基準に関係している。しかし、それよりも良好な視覚的尺度が、視覚的重要性の体系定義に組み入れられるかもしれない。データの種類が異なれば視覚的重要性レベルも異なる。例えば、音声データは音声の重要性レベルを持つ。
【００３４】
オーバーラップ変換：
単一のソース標本点が同一周波数の複数の係数に寄与する変換。その例に、多くのウェーブレットとオーバーラップ直交変換（Lapped  Orthogonal  Tansform）がある。
【００３５】
プログレッシブ：
符号化データの一部から矛盾のない伸長結果を得られ、かつデータを増やすことで精度を上げることができるように順序付けられた符号ストリーム。データのビットプレーンが浅いほうから深いほうへ順序付けられた符号ストリーム；この場合は、普通、ウェーブレット係数データをさす。
【００３６】
プログレッシブ画素深度：
データのビットプレーンが浅いほうから深いほうへ順序付けられた符号ストリーム。
【００３７】
プログレッシブ・ピラミッド：
解像度が下がる毎に大きさが２分の１（面積では４分の１）になる解像度成分の連続。
【００３８】
可逆変換：
一実施例では、圧縮結果を元に復元できる、整数演算により実施される効率的変換。
【００３９】
Ｓ変換：
１つの２タップ・ローパスフィルタと１つの２タップ・ハイパスフィルタからなる特殊な可逆ウェーブレットフィルタ対。
【００４０】
テール：
ビット・シグニフィカンス表現で、テール(tail)ビットとは最上位の非ゼロのビットより下位の低い絶対値ビットである。
【００４１】
テール情報：
一実施例では、ビット・シグニフィカンス表現で表された係数のためにとり得る４つの状態。係数及びカレント・ビットプレーンの関数であり、水平コンテキスト・モデルのために利用される。
【００４２】
テール・オン(tail-on)：
一実施例では、テール情報の状態がゼロか非ゼロであるかに依存した２つの状態。水平コンテキスト・モデルのために利用される。
【００４３】
タイルデータ（tile  data）セグメント：
一つの画像タイルを完全に記述する符号ストリームの部分。一実施例においては、画像タイルの始まり（ＳＯＴ）を定義するタグから、次のＳＯＴまで、又は画像の終わり（ＥＯＩ）のタグまでの全データ。
【００４４】
変換係数：
ウェーブレット変換を適用した結果。ウェーブレット変換においては、係数は対数分割された周波数スケールを表す。
【００４５】
ＴＳ変換：
２・６（Two‐Six）変換。１つの２タップ・ローパス分析フィルタと１つの６タップ・ハイパス分析フィルタからなる特殊な可逆ウェーブレットフィルタ対。合成フィルタは、分析フィルタの直交ミラー・フィルタである。
【００４６】
ＴＴ変換：
２・１０（Two‐Ten）変換。１つの２タップ・ローパス分析フィルタと１つの１０タップ・ハイパス分析フィルタからなる特殊な可逆ウェーブレットフィルタ対。合成フィルタは分析フィルタの直交ミラー・フィルタである。
【００４７】
統合型（unified）非損失性／損失性：
同じ圧縮システムが、非損失性又は損失性の復元が可能な符号データストリームを提供する。
【００４８】
ウェーブレット・フィルタ：
ウェーブレット変換に使われるハイパスとローパスの合成フィルタ及び分析フィルタ。
【００４９】
ウェーブレット変換：
“周波数”及び“時間（空間）”領域の両方の拘束条件を用いる変換。説明する一実施例では、１つのハイパスフィルタと１つのローパスフィルタからなる変換である。結果として得られる係数は２：１の間引きを施され（臨界フィルタ処理）、次にそれらフィルタがローパス係数にかけられる。
【００５０】
ウェーブレット・ツリー：
最高レベルのウェーブレット分解のＬＬ部内の単一の係数と関係付けられた係数群。係数の個数はレベル数の関数である。ウェーブレット・ツリーのスパンは、分解レベル数に依存する。例えば、１レベル分解の場合には、ウェーブレット・ツリーのスパンは４画素、２レベル分解では１６画素、等々である。
【００５１】
本発明の概要
本発明は、符号化部及び復号化部を持つ圧縮／伸長システムを提供する。符号化部は入力データを符号化して圧縮データを生成する働きをし、他方、復号化部は既に符号化されたデータを復号化して元の入力データの再構成データを生成する働きをする。入力データには、画像（静止画像あるいは動画像）、音声等々の様々な種類のデータが含まれる。一実施例では、データはデジタル信号データであるが、デジタル化したアナログデータ、テキストデータ形式、その他の形式も可能である。そのデータのソースは、例えば符号化部及び／または復号化部のためのメモリまたは通信路である。
【００５２】
本発明において、符号化部及び／または復号化部の構成要素は、ハードウエア又はコンピュータシステム上で利用されるソフトウエアによって実現し得る。本発明は、非損失性の圧縮／伸長システムを提供する。本発明はまた、損失性の圧縮／伸長を実行するようにも構成し得る。本発明は、圧縮データの構文解析を、伸長をすることなく実行するように構成し得る。
【００５３】
本発明のシステムの概要
本発明は、自然画像に見られる滑らかなエッジと平坦な領域を非常に良好に表現する。本発明は、可逆埋め込みウェーブレットを利用して、画素深度の深い画像を圧縮する。しかしながら、可逆埋め込みウェーブレット、他のウェーブレット変換方式及びシヌソイド変換方式は、テキストや図形画像に見られるシャープなエッジを表現するのは得意ではない。この種の画像は、グレイ（Gray）符号化を行ってからＪＢＩＧのようなコンテキスト・ベースのビットプレーン符号化を行うことにより良好に圧縮できる。さらに、ノイズフリーのコンピュータ生成画像は、バイナリ方式により良好にモデル化される。
【００５４】
本発明は、２値画像及び図形画像の圧縮のためのバイナリ方式を提供する。このバイナリ方式は、ダイナミックレンジ全体を使わないある種の画像に対する圧縮も改善する。このバイナリ方式においては、本発明は変換を使わないで画像のビットプレーンを符号化する。
【００５５】
図１は、バイナリ方式を採用した本発明の圧縮システムの一実施例のブロック図である。なお、システムの復号化部は逆の順序で動作し、データフローも同様である。図１において、入力画像１０１は多成分処理機構１１１に入力される。この多成分処理機構１１１は、オプションの色空間変換、及び、サブサンプリングを施された画像成分に関するオプションの処理を提供する。方式選択機構１１０は、画像が連続階調画像か２値画像か、あるいは、画像のどの部分がそのような特性を持っているかを判定する。画像データは方式選択機構１１０へ送られ、方式選択機構１１０は、その画像データ又はその部分をウェーブレット方式処理（ブロック１０２，１０３，１０５）又はバイナリ方式処理（ブロック１０４）へ送る。本発明においては、どのモードを利用するかの決定は、データに依存して決まる。一実施例では、方式選択機構１１０はマルチプレクサからなる。方式選択機構１１０は、復号化動作中は利用されない。
【００５６】
ウェーブレット方式では、可逆ウェーブレット変換ブロック１０２が可逆ウェーブレット変換を実行する。同ブロック１０２の出力は係数の系列である。埋め込み順序付け量子化ブロック１０３は、（可逆ウェーブレット変換ブロック１０２により生成された）入力画像１０１中の係数全部のアラインメントを生成するため、係数をビット・シグニフィカンス表現にしてからラベル付けする。
【００５７】
画像データ１０１が受け取られ、そして（適切な多成分処理の後）可逆ウェーブレット変換ブロック１０２において後に説明されるように可逆ウェーブレットを利用して変換されることにより、画像の多重解像度分解を表す係数の系列が生成される。本発明の可逆ウェーブレット変換は、計算が複雑でない。この変換は、ソフトウエア又はハードウエアにより、全く系統誤差を生じさせないで実行できる。さらに、本発明のウェーブレットはエネルギー集中及び圧縮性能に優れている。これらの係数は埋め込み順序付け量子化ブロック１０３に受け取られる。
【００５８】
埋め込み順序付け量子化ブロック１０３は、後述のように埋め込み順序付け量子化をする。その結果は埋め込み（embedded）データストリームである。この埋め込みデータストリームは、符号化時、伝送時又は復号化時に、結果の符号ストリームの量子化を許す。一実施例においては、埋め込み順序付け量子化ブロック１０３は、係数を順序付けして符号・絶対値形式に変換する。
【００５９】
埋め込みデータストリームは水平コンテキストモデル・ブロック１０５に受け取られる。水平コンテキストモデル・ブロック１０５は、埋め込みデータストリーム中のデータをその重要性に基づきモデル化する（後述）。変換モードでは、“ビットプレーン”は変換係数の重要性レベル・プレーンであり、水平コンテキストモデル・ブロック１０５はウェーブレット係数をビット・シグニフィカンス表現に整える。
【００６０】
順序付け及びモデリングの結果は、エントロピー・コーダ１０６により符号化すべきデシジョン(decisions)（又はシンボル）である。一実施例では、全てのデシジョンが一つのコーダへ送られる。他の実施例では、デシジョンは重要性によってラベル付けされ、各重要性レベルのデシジョンは別々の複数の（物理または仮想）コーダによって処理される。ビットストリームは、エントロピー・コーダ１０６により重要性の順に符号化される。一実施例では、エントロピー・コーダ１０６は１つ又は複数のバイナリ・エントロピー・コーダからなる。別の実施例では、ハフマン符号化が利用される。
【００６１】
バイナリ方式では、グレイ(Gray)符号化ブロック１０４が入力画像１０１の画素に対しグレイ符号化を行う。グレイ符号化は画素のビットプレーン間の相関の一部を利用するビット操作である。それは、任意の値ｘとｘ＋１に対し、gray(x)とgray(x+1)は＜その基数２の表現で異なるのは１ビットだけであるからである。一実施例では、グレー符号化ブロック１０４は８ビット画素に対し点毎の変換、すなわち
gray(x)＝ｘXORｘ/2
を実行する。本発明は、この形式のグレー符号化を利用することに限定されるわけでも、８ビットのサイズの画素を利用しなければならないわけでもない。しかし、上記式を利用すると、ビットプレーン単位のプログレッシブ伝送の場合のように、利用可能な最上位ビットの一部だけで画素を再構成できるという利点がある。言い換えると、この形式のグレー符号化はビット・シグニフィカンスの順序付けを保存する。
【００６２】
バイナリ方式では、グレイ符号化ブロック１０４及びエントロピー・コーダ１０６を利用し、データはビットプレーン毎に符号化される。一実施例では、グレイ符号化ブロック１０４内のコンテキストモデルは、カレント・ビットを、空間及び重要性レベル情報を利用して条件付けする。
【００６３】
バイナリ方式の場合、グレイ符号化画素に対しＪＢＩＧのようなコンテキストモデルが利用される。一実施例においては、画像タイルの各ビットプレーンは別々に符号化され、それぞれのビットは、周辺の１０画素の値を利用し、ラスター順に条件付けされて符号化される。図２はバイナリ方式における各ビットプレーンの各ビットのためのコンテキストモデルの幾何学的関係を示す。このビットの条件付けは、固有パターン毎の適応的確率予測をもたらす。なお、バイナリ・エントロピー・コーダがグレイ符号化値のビットプレーン・エントロピー符号化に利用されるときには、いくつかのテンプレートがバイナリ・エントロピー・コーダのコンテキストモデルのために用いられてもよい。図３は２9個のコンテキスト・ビン(bin）のための７画素と２ビットのビットプレーン情報を示す。
【００６４】
このコンテキストとカレント・ビットの値を利用して、エントロピー・コーダ１０６はビットストリームを生成する。この同じバイナリ・エントロピー・コーダ１０６が、変換モードとバイナリ方式の両方のデータの符号化に利用される。一実施例では、エントロピー・コーダ１０６はルックアップ・テーブルで実現される有限状態マシンからなる。なお、本発明は、Ｑコーダ、ＱＭコーダ、高速並列コーダのような任意のバイナリ・エントロピー・コーダと一緒に利用し得る。
【００６５】
エントロピー・コーダ１０６はいずれの方式についても同じものであり、かつ、バイナリ・コンテキストモデルは単純であるため、同一システムでバイナリ方式と変換方式を実現するのに、ごく僅かな追加資源しか必要とされない。さらに、コンテキストモデルの構成は異なるが、両モードのための必要資源は同じである。すなわち、両方のモードで、コンテキスト格納のために同じメモリを利用し、また、同じバイナリ・エントロピー・コーダを利用する。
【００６６】
本発明は、画像全体に対して実行されてもよいし、あるいは、より一般的であるが、画像のタイリングされたセグメントに対して実行されてもよい。タイルの中には、変換方式による方が圧縮が良好なものと、バイナリ方式による方が良好なものとがある。使用すべきモードの選択アルゴリズムは様々なものが可能である。タイルが利用されるときには、タイル単位のランダムアクセスが可能である。また、注目領域は各別に高精度に復号化することができる。最後に、変換方式とバイナリ方式のいずれを選択するかは、１つ１つのタイル毎に決定することができる。
【００６７】
また、画像は、本発明のデュアルモード・システムを利用してもビットプレーンに関しプログレッシブであり、ＪＢＩＧに教えられるように階層形式に符号化し得ることに注意されたい。
【００６８】
復号化に関しては、タイルのヘッダ中の１ビットを、データの符号化に利用された方式を指定するために利用してよい。方式選択機構１１０は用いられない。元のダイナミックレンジから低いダイナミックレンジへの非損失性マッピング、例えばヒストグラム圧縮（後述）によるようなものが可能であれば、さらに役に立つことがある。ＪＢＩＧにおけるようなルック・アヘッド（look  ahead）を利用してもよい。このルック・アヘッドは、ＪＢＩＧにおけるような普通の予測又は決定論的予測を使用してよい。
【００６９】
バイナリ方式又は変換方式の選択
方式選択機構１１０は、バイナリ方式と変換方式の選択をする。一実施例では、入力画像は両方の方式で符号化され、方式選択機構１１０は得られたビットレートが低い方の方式を選択する（非損失性圧縮を仮定）。つまり、よく圧縮する方のモードが選ばれる。この方法は、コストが高いと思われるかもしれないが、それほどではない。というのは、バイナリ方式と変換方式は共に、ソフトウエアが比較的高速であり、かつ、ハードウエアも小規模であるからである。この方法から派生する方法は、コーダをバイパスし、エントロピー値を利用して低い方のビットレートを判定する方法である。
【００７０】
別の実施例においては、本発明は画像の画素値の完全な（又は部分的な）ヒストグラム、又は、隣接画素値のペア間の差分のヒストグラムを生成する。画素値のヒストグラムの場合、そのヒストグラムのピークが、画素深度のダイナミックレンジより遥かに小さな値で生じたならば、バイナリ方式を選ぶ、というようなデータの統計的解析を使う。
【００７１】
一実施例では、本発明は隣接画素のペア間の第１次差分の完全な（又は部分的な）ヒストグラムが生成される。標準的な画像では、そのようなヒストグラムは正にラプラシアン分布であり、ウェーブレット方式が利用されよう。しかし、ヒストグラムがラプラシアン分布のピークを持たないときには、バイナリ方式が利用される。
【００７２】
両方の種類のヒストグラムを生成し、方式の選択のために一緒に利用してもよい。
【００７３】
いずれも後述するが、ＴＳ変換又はＴＴ変換のｄnフィルタ出力は第１次統計量に近い。これは、変換が実行されヒストグラムが生成される方法を示唆する。そのヒストグラムに基づいて、方式が選択される。その方式が変換方式のときには、システムは既に生成された変換係数を続けて処理する。バイナリ方式が選択されると、変換係数は捨てられ（又は、画素がセーブされたか否かによっては逆変換され）、システムはバイナリ方式を開始する。
【００７４】
別の実施例では、領域分割及び／又は文書種類に関する以前の知識が、どちらの方式を選択すべきの決定を支援するかもしれない。
【００７５】
もっとより長い符号化時間を利用できるならば、２方式の利点を最大にするようにタイリングのサイズを選ぶことができる。
【００７６】
なお、一実施例においては、本発明のシステムはバイナリ方式符号化を含まず、したがって、可逆埋め込みウェーブレット圧縮（ＣＲＥＷ）及び伸長だけを利用することに注意されたい。
【００７７】
ウェーブレット分解
本発明は、最初に、可逆ウェーブレットを利用して、（画像データとしての）画像または他のデータ信号の分解を実行する。本発明において、可逆ウェーブレット変換は、整数係数を持つ信号の非損失性復元が可能な完全再構成システムを整数演算で実現する。効率的な可逆変換は、行列式が１（又はほぼ１）の変換行列によるものである。
【００７８】
本発明は、可逆ウェーブレットを利用することにより、有限精度の演算で非損失性圧縮を提供することができる。画像データに可逆ウェーブレット変換を適用することにより生成される結果は、係数の系列である。
【００７９】
本発明の可逆ウェーブレット変換は、フィルタの集合を用いて実現し得る。一実施例では、そのフィルタは１つの２タップ・ローパスフィルタと１つの６タップ・ハイパスフィルタである。一実施例では、これらフィルタは加減算（とハードワイヤのビットシフト）だけで実現される。
【００８０】
Ｈadamard変換を利用する本発明の一実施例は、完全再構成システムである。
【００８１】
Ｈadamard変換に関する情報を得るには、Ａnil  Ｋ．Ｊain，“Ｆundamentals  of  Ｉmage  Ｐrocessing”，Ｐ．155を読まれたい。Ｈadamard変換の逆変換は、本明細書においてＳ変換と呼ばれる。
【００８２】
Ｓ変換は、一般添数ｎを用いて出力を次のように定義することができる。
【００８３】
【数１】
2005218124.tif 000003
【００８４】
なお、変換係数アドレッシングにおける因数２は、暗黙の１／２サブサンプリングの結果である。この変換は可逆であり、その逆変換は次の通りである。
【００８５】
【数２】
2005218124.tif 000004
【００８６】
記号
【００８７】
【数３】
2005218124.tif 000005
は、切り捨てて丸めること、つまり打ち切りを意味し、床関数と呼ばれることがある。同様に、天井関数
【００８８】
【数４】
2005218124.tif 000006
は最も近い整数へ切り上げて丸めることを意味する。
【００８９】
完全再構成システムのもう一つの例は２・６（ＴＳ）変換である。可逆ＴＳ変換は、ローパスとハイパスのフィルタの２つの出力に関する次の式により定義される。
【００９０】
【数５】
2005218124.tif 000007
【００９１】
ＴＳ変換は可逆であり、その逆変換は次の通りである。
【００９２】
【数６】
2005218124.tif 000008
ここで、次式によりｐ（ｎ）がまず計算されなければならない。
【００９３】
【数７】
2005218124.tif 000009
【００９４】
ローパスフィルタからの結果を、ハイパスフィルタにおいて２度（第１項と第２項で）利用できる。したがって、ほかに２つの加算を行うだけで、ハイパスフィルタの結果を得られる。
【００９５】
完全再構成システムのもう一つの例は２・１０（ＴＴ）変換である。可逆ＴＴ変換は、ローパスとハイパスのフィルタの２つの出力に関する次式により定義される。
【００９６】
【数８】
2005218124.tif 000010
【００９７】
このｄ（ｎ）の式はｓ（ｎ）を使って単純化することができる（さらに、６４による整数除算は、分子に３２を足すことにより丸めることができる）。これにより次式が得られる。
【００９８】
【数９】
2005218124.tif 000011
このＴＴ変換は可逆であり、その逆変換は次式である。
【００９９】
【数１０】
2005218124.tif 000012
ここで、ｐ（ｎ）は次式によりまず計算されなければならない。
【０１００】
【数１１】
2005218124.tif 000013
【０１０１】
ＴＳ変換とＴＴ変換のいずれにおいても、Ｓ変換と同様、ローパスフィルタは、入力信号ｘ(n)のレンジが出力信号ｓ(n)のレンジと同じになるように作られる。すなわち、平滑出力の増大はまったくない。入力信号がｂビットの深さのときには、出力信号もｂビットの深さである。例えば、信号が８ビット画像の場合、ローパスフィルタの出力も８ビットである。このことは、例えばローパスフィルタを連続して適用することにより平滑出力がさらに分解されるピラミッド・システムのために重要な特性である。従来技術のシステムにおいては、出力信号のレンジが入力信号のレンジより大きく、このことがフィルタの連続的適用を困難にしている。また、変換を整数演算で行う際の丸めによる系統誤差がないので、損失性システムの全ての誤差を量子化により制御可能である。さらに、ローパスフィルタは、２つのタップしか持たないため、非オーバーラップ・フィルタになる。この特性は、ハードウエア化のために重要である。
【０１０２】
一実施例では、３と２２による乗算は、図２２に示すようなシフトと加算により実現される。図２２において、ｓ(n)入力は乗算器１５０１に接続され、乗算器１５０１はｓ(n)入力に２を乗じる。一実施例では、この乗算は、ｓ(n)信号のビットの１桁左シフトとして実現される。乗算器１５０１の出力は加算器１５０２によりｓ(n)信号と加算される。加算器１５０２の出力は、３ｓ(n)信号である。加算器１５０２の出力はまた、乗算器１５０３により２を乗じられる。乗算器１５０３は、１桁左シフトとして実現される。乗算器１５０３の出力は加算器１５０５により乗算器１５０４の出力と加算され、乗算器１５０４はｓ(n)信号を４桁左シフトにより１６倍する。加算器１５０５の出力は２２ｓ(n)信号である。
【０１０３】
フィルタに対する厳格な可逆性要件は、次のことに着目することによって緩和することができる。ハイパス係数は、ある順序で符号化されて復号化される。前に復号化されたハイパス係数に対応する画素値は、正確に分かっているので、カレント・ハイパスフィルタ処理に用いることができる。
【０１０４】
ＴＳ変換及びＴＴ変換は非オーバーラップのローパス合成フィルタとハイパス分析フィルタを有する。ハイパス合成フィルタとローパス分析フィルタだけがオーバーラップ・フィルタである。
【０１０５】
ＴＳフィルタは、タイル境界に関し良好な特性を有する。タイルのサイズがツリーのサイズの倍数である場合を考える。そして、画像がタイルに分割される場合に生じるような、ある信号の一部に対する変換の適用を考察する。ローパス分析フィルタはオーバーラップ・フィルタではないので、ローパス係数はタイリングによる影響を受けない。すなわち、信号のその部分が均一個数の信号を持つ場合、そのローパス係数は信号全体を変換したときのそれと同じである。
【０１０６】
復号化中に、量子化のためハイパス係数が存在せず、画像がＳＳ係数だけを使って最高圧縮率で再構成される場合には、タイル境界にまたがってローパス合成フィルタが使われてよく、逆変換はローパス係数を用いて信号全体について実行される。ＳＳ係数のタイリングによって変化しないので、解はタイリングが利用されないときと全く同じである。これにより、信号の一部分に対しフォワード変換を実行することにより生じるアーティファクト（artifacts）が除去される。
【０１０７】
復号化中に、ハイパス係数が存在する（しかし、ハイパス係数はそれらの値が幾分の不確定性を持つように量子化されている）場合には、オーバーラップ１Ｄローパス分析フィルタ演算がある境界を横切って別の部分へ入る場所の標本に対し次のことを行うことができる。タイル境界を横切らない標本について、実際に利用されたフィルタに基づき、可能な最小及び最大の再構成値が決定される。その標本に関し、ローパス係数（とローパスフィルタ）だけを用い、そしてタイル境界を横切ることによって、そうであったであろう再構成値（すなわちオーバーラップ予測値）が決定される。そのオーバーラップ予測値が可能な最小と最大の再構成値の間（それらの値も含む）であれば、そのオーバーラップ予測値が用いられる。そうでなければ、その可能な最大と最小の再構成値のうちの、オーバーラップ予測値に近い方の値が用いられる。こうすることによって、信号の断片に対しフォワード変換を実行することにより生じるアーティファクトを減らす。
【０１０８】
１Ｄフィルタ演算が実行される度に再構成値が選ばれる。これが正しく行われると、各ハイパス係数はちょうど一つの有効な再構成値が与えられ、選択により誤差を変換の複数レベルに伝搬し得なくなる。
【０１０９】
非線形画像モデル
本発明の一実施例は、ＴＳ変換又はＴＴ変換のような線形フィルタの可逆近似であるウェーブレット・フィルタを利用する。一実施例では、可逆非線形フィルタが用いられるかもしれない。ＴＳ変換及びＴＴ変換に類似した非線形フィルタの一種は次のとおりである。
【０１１０】
【数１２】
2005218124.tif 000014
【０１１１】
その逆変換はＴＳ変換及びＴＴ変換の場合と同じであるが、ただしｐ(n)は次の通りである。
【０１１２】
【数１３】
2005218124.tif 000015
【０１１３】
この実施例において、ｑ(n)は平滑(smooth)係数（及び必要なら前の詳細(detail)係数）からのｘ(2n)-ｘ(2n+1)に関する予測である。この予測は非線形画像モデルを利用する。一実施例では、非線形画像モデルはＨuber-Ｍarkov確率場である。この非線形画像モデルは、フォーワード変換と逆変換ｓにおいて全く同一である。反復画像モデルの場合、反復の回数と次数は同一である。
【０１１４】
非線形画像モデルの一例は次の通りである。ある一定の反復回数の場合に、それぞれの値（画素又はローパス係数）ｘ(k)は新たな値ｘ'(k)に調整される（ただし、ｋは２ｎ又は２ｎ＋１である）。任意の反復回数を用いてよいが、一実施例では３回の繰り返しが用いられる。最終の反復からｑ(n)の値が求まる。
【０１１５】
【数１４】
2005218124.tif 000016
【０１１６】
反復の度に、各ｘ(k)に対する変化ｙ(k)が計算される。
【０１１７】
【数１５】
2005218124.tif 000017
ここでＡは変化率であり、これは任意の正値でよい。一実施例ではＡ＝１である。Ｂiは差分検出子である。例えば、１次元の場合、Ｂiは次の通りである。
【０１１８】
【数１６】
2005218124.tif 000018
２次元の場合、水平、垂直、及び２つの対角線方向の差分を検出するための４つのＢi値があろう。Ｂiとして他の差分演算子を用いてもよい。
【０１１９】
【数１７】
2005218124.tif 000019
ここで、Ｔは閾値であり、これは任意の正値でよい。Ｔは画像のエッジを構成する差分を表す。一実施例では、Ｔ＝８である。
【０１２０】
ｘ'(2n）＋ｘ'(2n+1）＝ｘ(2n）＋ｘ(2n+1）の拘束条件のもとに、値ｘ'(2n），ｘ'(2n+1）のペアは変化ｙ(2n），ｙ(2n+1）のペアによって調整される。これは、変化ｙ(2n），ｙ(2n+1）を結合して単一の変化ｙ'(2n）、つまり、両変化にサポートされる最大の変化にすることによって達成される。
【０１２１】
ｙ(n)とｙ(2n+1)が両方とも正か負のときには、
ｙ'(sn)＝０
である。そうでない場合、｜ｙ(2n)｜＜｜ｙ(2n+1)｜ならば、
ｙ'(2n)＝ｙ(2n)
であり、そうでなければ
ｙ'(sn)＝−ｙ(2n+1)
である。そして
ｘ'(2n)＝ｘ(2n)＋ｙ'(2n)
ｘ'(2n+1)＝ｘ(2n+1)−ｙ'(2n)
である。Ｈuber-Ｍarkov確率場に関するこれ以上の情報を得るには、Ｒ．Ｒ．Ｓchultz  and  Ｒ．Ｌ．Ｓtevenson，“Ｉmproved  definition  image  expansion”，Ｐroceedings  of  IEEE  Ｉnternational  Ｃonference  on  Ａcoust.，Ｓpeech  and  Ｓignal  Ｐrocessing，vol．III，pp.173-176，Ｓan  Ｆransisco，Ｍarch  1992を見られたい。
【０１２２】
いくつかの実施例では、変換は１次元から２次元へ拡張されるが、その拡張のためにまずｑ(n)＝０として各次元に対し別々に変換を行う。次に、画像モデルの同様の適用によってＬＨ，ＨＬ，ＨＨ値のための３つのｑ(n)値を計算する。
【０１２３】
２次元ウェーブレット分解
本発明のローパスフィルタ及びハイパスフィルタを用いて、多重解像度分解が行なわれる。分解レベル数は可変であり任意数でよいが、現在のところ分解レベル数は２レベル乃至５レベルである。最大レベル数は、ｌｏｇ2（長さ又は幅の最大値）である。
【０１２４】
画像のような２次元データに対し変換を実行する最も普通のやり方は、１次元フィルタを別々に適用する方法、つまり、行に沿って適用したのち列に沿って適用するという方法である。第１レベルの分解により４つの異なった係数バンドが得られ、これら係数バンドは本明細書ではＬＬ，ＨＬ，ＬＨ，ＨＨと呼ぶ。これら文字は、前に定義した平滑(smooth)フィルタと詳細(detail)フィルタの適用を意味するロー（Ｌ）とハイ（Ｈ）を表す。したがって、ＬＬバンドは行方向及び列方向の平滑フィルタより得られた係数からなっている。ウェーブレット係数を図４乃至図７のような形に配置するのが一般的なやりかたである。
【０１２５】
ウェーブレット分解の各周波数サブバンドはさらに分解することができる。最も普通のやりかたはＬＬサブブロックだけをさらに分解する方法であり、これは各分解レベルのＬＬ周波数サブバンドが生成された時にそれをさらに分解することを含むであろう。このような多重分解はピラミッド分解と呼ばれる（図４乃至図７）。記号ＬＬ，ＬＨ，ＨＬ，ＨＨと分解レベル番号によって各分解を示す。なお、本発明のＴＳフィルタ、ＴＴフィルタのいずれによっても、ピラミッド分解は係数サイズを増加させない。
【０１２６】
例えば、可逆ウェーブレット変換が再帰的に１つの画像に適用されると、第１レベルの分解は最も細かいディテールもしくは解像度に対し作用する。第１分解レベルで、画像は４つのサブ画像（すなわちサブバンド）に分解される。各サブバンドは、１つの空間周波数帯域を表わしている。第１レベルのサブバンドはＬＬ0，ＬＨ0，ＨＬ0，ＨＨ0と表される。元の画像を分解するプロセスは、水平，垂直の両次元における１／２サブサンプリングを含むので、図４に示されるように、第１レベルのサブバンドＬＬ0，ＬＨ0，ＨＬ0，ＨＨ0はそれぞれ、入力が持っていた画像の画素（または係数）の個数の４分の１の個数の係数を持つ。
【０１２７】
サブバンドＬＬ0は、水平方向の低い周波数情報と垂直方向の低い周波数情報を同時に含んでいる。一般に、画像エネルギーの大部分は当該サブバンドに集中している。サブバンドＬＨ0は、水平方向の低い周波数情報と垂直方向の高い周波数情報（例えば水平方向エッジの情報）を含んでいる。サブバンドＨＬ0は、水平方向の高い周波数情報と垂直方向の低い周波数情報（例えば垂直方向エッジの情報）を含んでいる。サブバンドＨＨ0は、水平方向の高い周波数情報と垂直方向の高い周波数情報（例えばテクスチャ又は斜めエッジの情報）を含んでいる。
【０１２８】
この後に続く第２、第３、第４の下位分解レベルはそれぞれ、前レベルの低周波数ＬＬサブバンドを分解することによって作られる。第１レベルの当該サブバンドＬＬ0が分解されることによって、図５に示すように、やや精細な第２レベルのサブバンドＬＬ1，ＬＨ1，ＨＬ1，ＨＨ1が作られる。同様に、サブバンドＬＬ1が分割されることによって、図６に示すように、精細度の粗い第３レベルのサブバンドＬＬ2，ＬＨ2，ＨＬ2，ＨＨ2が生成される。また、図７に示すように、サブバンドＬＬ2が分割されることにより、精細度がより粗い第４レベルのサブバンドＬＬ3，ＬＨ3，ＨＬ3，ＨＨ3が作られる。２：１のサブサンプリングにより、第２レベルの各サブバンドは、原画像の１６分の１の大きさである。このレベルの各標本（つまり画素）は、原画像中の同一位置のやや細いディテールを表す。同様に、第３レベルの各サブバンドは、原画像の６４分の１の大きさである。第３レベルでの各画素は、原画像中の同一位置のかなり粗いディテールを表す。また、第４レベルの各サブバンドは原画像の２５６分の１の大きさである。
【０１２９】
分解画像はサブサンプリングのため原画像より物理的に小さいので、原画像の格納のために使用されたメモリを利用して、分解サブバンド全部を格納できる。つまり、３レベル分割の場合、原画像と分解サブバンドＬＬ0，ＬＬ1は捨てられ、保存されない。
【０１３０】
４つのサブバンド分解レベルだけを示したが、個々のシステムの要件に応じて、それ以上のレベルを生成することも可能である。また、ＤＣＴのような他の変換又は一次元配置のサブバンドによって、様々な親子関係を定義してもよい。
【０１３１】
ピラミッド分解
ウェーブレット分解の各周波数サブバンドはさらに分解することができる。一実施例においては、ＬＬ周波数サブバンドだけが分解される。本明細書では、このような分解はピラミッド分解と呼ばれる。記号ＬＬ，ＬＨ，ＨＬ，ＨＨと分解レベル番号で各分解を表示する。なお、本発明のウェーブレット・フィルタによれば、ピラミッド分解は係数サイズを増大させない。
【０１３２】
別の実施例では、ＬＬに加えて他のサブバンドも分解されるかもしれない。以下の説明において、”ＬＬ”なる用語は”ＳＳ”（”Ｌ”＝”Ｓ”）と入れ替えて用いてよい。同様に、”Ｈ”なる用語も”Ｄ”と入れ替えて用いてもよい。
【０１３３】
ウェーブレットのツリー構造
ピラミッド分解のウェーブレット係数には自然で有用なツリー構造がある。なお、ＬＬ周波数サブブロックは最終の分解レベルに対応したただ一つしかない。これに対し、ＬＨ，ＨＬ，ＨＨのバンドはレベル数と同数存在する。このツリー構造により、ある周波数帯域内の係数の親は、それより低い解像度の同じ周波数帯域内の係数であり、かつ同じ空間位置関係にあることが明らかになる。
【０１３４】
各ツリーのルートは、純粋に平滑な係数である。画像のような２次元の信号の場合、ツリーのルートは３つの”子”を持ち、ほかのノードはそれぞれ４つの子を持つ。この階層的ツリーは２次元信号に限定されない。例えば、１次元信号の場合、ルートは１つの子を持ち、ルート以外のノードはそれぞれ２つの子を持つ。これ以上高い次元は、１次元の場合及び２次元の場合より導かれる。
【０１３５】
図８は連続した２レベル間の親子関係を表している。図８において、Ａの係数は、Ｂ，Ｃ，Ｄに対する直接の親であるが、Ｂ，Ｃ，Ｄを親とする係数（ＥとＨ，ＦとＩ，ＧとＪ）に対する親でもある。例えば、Ｂは、Ｅ付近の４係数、Ｈ付近の１６係数、等々に対する親である。
【０１３６】
多重解像度分解のプロセスは、フィルタ系列を使って遂行し得る。
【０１３７】
１次元の模範的フィルタを使って実現される１次元２レベル変換の例については、米国特許出願第０８／４９８，６９５号（１９９５年６月３０日受理、“Ｍethod  and  Ａpparatus  Ｆor  Ｃompression  Ｕsing  Ｒeversible  Ｗavelet  Ｔransforms  and  an  Ｅmbedded  Ｃodestream”）及び米国特許出願第０８／４９８，０３６号（１９９５年６月３０日受理”Ｒeversible  Ｗavelet  Ｔransform  and  Ｅmbedded  Ｃode-stream  Ｍanipulation”）を見られたい。
【０１３８】
フォワード・ウェーブレット変換の実行
本発明では、水平方向の１−Ｄ（次元）パス、次で垂直方向の１−Ｄパスによってウェーブレット変換が実行される。レベル数で反復回数が決まる。図９は前に定義したようなフォワードＴＴ変換フィルタを使う４レベル分解を表す。
【０１３９】
別の実施例では、任意のレベルの水平又は垂直のウェーブレット変換の任意の時点のＴＴ変換の代わりに、Ｓ変換のような別の可逆ウェーブレット変換フィルタを用いることができる。一実施例では、水平方向と垂直方向の両方にＴＴ変換を利用して４レベル分解が実行される。一実施例では、４レベル分解において、４つのＴＴ変換の中の２つがＳ変換で置き換えられる。これは圧縮の損失は少ないが、メモリ使用量に対する効果は大きい。水平方向の変換と垂直方向の変換は交互に適用されるであろう。
【０１４０】
なお、Ｓ変換とＴＴ変換の組合せが水平方向及び垂直方向の変換を実施するために用いられてもよい。変換の順序は雑多でよいが、完全に可逆的であるためには、復号化器はその順序を知って逆の順序で逆操作を実行しなければならない。後述のように、復号化器は変換順序をヘッダで知らされるかもしれない。
【０１４１】
埋め込み順序付け
本発明では、ウェーブレット分解の結果として生成された係数はエントロピー符号化される。本発明においては、係数は最初に埋め込み符号化（embedded  coding）を施されるが、この符号化では、視覚的に重要な順に係数が順序付けられ、または、より一般的に、何等かの誤差規準（例えば、歪み規準）を考慮して係数が順序付けられる。誤差または歪みの規準には、ピーク誤差と平均２乗誤差（ＭＳＥ）が含まれる。また、ビット・シグニフィカンス空間配置（bit-significance  spatial  location）より、データベース照会のための妥当性を優先させるように、また方向別に（垂直、水平、斜め等）順序付けてもよい。
【０１４２】
データの順序付けは、符号ストリームの埋め込み量子化したものを生成するために行われる。本発明においては、２つの順序付け方法が用いられる。その一つは係数を順序付けするためのものであり、もう一つは係数中の２進値を順序付けするためのものである。本発明の順序付けは、ビットストリームを生成し、このビットストリームはその後にバイナリ・エントロピー・コーダにより符号化される。
【０１４３】
タイル
本発明においては、変換と符号化の前に、画像はタイルに分割される。タイルは、完全独立に符号化される全体画像の部分画像であり、図１１のように番号がつけられた画像上に配置された規則的な矩形格子により定義される。右端と下端のタイルは、原画像及びタイル・サイズに応じて色々なサイズになる。
【０１４４】
タイルは画像サイズ以下の任意の高さ、幅にしてよいが、タイル・サイズの選び方は性能に影響する。小さなタイル、特にラスタ順画像の垂直方向の寸法が小さいタイルは、作業域用メモりを減らすことができる。しかし、タイルが小さすぎると、合図のための（signaling）オーバーヘッド、タイル境界での変換効率の損失、エントロピー・コーダの立ち上がり適応という３つの要因により圧縮効率が下がる。タイルの寸法を、最も低い周波数成分の大きさの倍数（ＣＲＥＷツリー）、つまりレベル数の関数（２のレベル数乗）にするのが有利である。原画像のサイズによるが、１２８×１２８又は２５６×２５６のタイルが多くのアプリケーションに適当と思われる。
【０１４５】
タイルは一連の画像の圧縮のために利用されるかもしれない。したがって、タイルされた画像は、時間的に異なる画像（映画のような）又は空間的に異なる画像（ＭＲＩの如き３Ｄ断面のような）かもしれない。これを知らせる格別の方法はないが、ＣＭＴが利用されるかもしれない。
【０１４６】
変換、コンテキスト・モデル、エントロピー符号化は１つの画像タイルの画素及び係数だけに作用する。それゆえに、画像タイルは順序によらずに解析又は復号化することができ、すなわちランダムにアドレスすることができ、あるいは、注目領域の伸長のため様々な歪みレベルに復号化することができる。
【０１４７】
１つの画像タイルの画素データは全部、符号化器で一度に利用できる、例えばメモリにバッファされる。ひとたび画素データが変換されれば、全ての係数データを水平コンテキスト・モデルに利用できる。全ての係数をランダムにアクセスできるので、画像タイル内部の埋め込みの順序は、符号化器及び復号化器が知っている限り任意でよい。エントロピー・コーダは、この順序付けに関し無頓着であるから、その順序は圧縮率に大きな影響を及ぼすので注意して選ばねばならない。
【０１４８】
画像タイルは矩形配置されたツリー（ＬＬ係数及びその全ての子孫）の番号により定義される。各ツリー内の画素の数はウェーブレット分解のレベル数の関数である。
【０１４９】
画像基準格子は、各成分の大きさが格子点の整数倍である最小の格子面である。このことは、殆どの画像で、画像基準格子が最頻成分と同一であることを暗に意味する。
【０１５０】
１成分の画像又は全成分が同一サイズの画像の場合、画像基準格子は画像と同一サイズである（例えば格子点は画像の画素である）。複数の成分の全部が同一サイズというわけではない画像の場合、そのサイズは画像基準格子点の整数倍と定義される。例えば、ＣＣＩＲ601 ＹＣrＣb色成分系は、各Ｃr及びＣb成分に対し２つのＹ成分を持つように定義される。したがって、Ｙ成分は画像基準格子を定義し、Ｃr成分とＣb成分はそれぞれ水平方向に２単位を、垂直方向に１単位をカバーする。
【０１５１】
ビット・シグニフィカンス表現
一実施例では、係数内の２進値に対し用いられる埋め込み順序はビットプレーン順である。係数はビット・シグニフィカンス表現で表される。ビット・シグニフィカンス表現は、最上位ビット（ＭＳＢ）ではなくて符号（sign）ビットが、最初の非ゼロの絶対値ビットと共に符号化される符号・絶対値表現である。
【０１５２】
ビット・シグニフィカンス形式で表現される数には３種類のビット、すなわちヘッド(head)ビット、テール(tail)ビット及び符号(sign)ビットがある。ヘッドビットとは、ＭＳＢから最初の非ゼロ絶対値ビットまでの全てのゼロビットと、その最初の非ゼロ絶対値ビットである。その最初の非ゼロ絶対値ビットが存在するビットプレーンで、係数の重要性が定まる。最初の非ゼロ絶対値ビットの後からＬＳＢまでのビットがテールビットである。符号ビットは符号(sign)を表わすにすぎない。ＭＳＢが非ゼロビットの数、例えば±２nは、ヘッドビットを１ビットしか持たない。ゼロの係数は、テールビットも符号ビットも持たない。図１２にビット・シグニフィカンス表現の例を示す。
【０１５３】
画素の輝度に関連して起こるような、値が非負整数の場合、採用し得る順序はビットプレーン順（例えば、最上位ビットプレーンから最下位ビットプレーンへの順）である。２の補数による負整数も許容される実施例では、符号ビットの埋め込み順序は、整数の絶対値の最初の非ゼロビットと同じである。したがって、１つの非ゼロビットが符号化されるまで、符号ビットは考慮されない。例えば、符号・絶対値表記法によれば、−７の１６ビット数は
１００００００００００００１１１
である。ビットプレーン・ベースで、初めの１２デシジョン（decision）は“無意味”すなわちゼロとなる。最初の１のビットは１３番目のデシジョンに見つかる。次に符号ビット（“負”）が符号化される。符号ビットが符号化された後、テールビットが処理される。１４番目と１５番目のデシジョンは共に“１”である。
【０１５４】
係数は最上位のビットプレーンから最下位のビットプレーンへと符号化されるので、データのビットプレーン数が正確にわからなければならない。本発明においては、データから計算される、又は画像の深度及びフィルタ係数から導き出される係数値の絶対値の上限を見つけることによって、ビットプレーン数が決定される。例えば、その上限が１４９のときには、有意な８ビットつまり８つのビットプレーンがある。ソフトウエアの速度のため、ビットプレーン符号化は用いられないかもしれない。別の実施例では、ビットプレーンが符号化されるのは、係数が２進数として意味をなす時だけである。
【０１５５】
係数アラインメント（alignment）
本発明は、ビットプレーン符号化の前に係数相互のアラインメントを行う。これは、ＦＦＴやＤＣＴと同様、異なった周波数サブバンド内の係数は異なった周波数を表すからである。本発明は、係数のアラインメントを行うことにより量子化を可能にする。量子化の重さが小さい係数ほど早いビットプレーン側へアラインメントされる（例えば左へシフトされる）。よって、ストリームが打ち切りされる場合、これらの係数は、それを定義するビットが、より重く量子化された係数に比べ多くなる。
【０１５６】
一実施例では、係数はＳＮＲ又はＭＳＥの見地から最高のレート・歪み性能が得られるようにアラインメントがなされる。ＭＳＥのような統計的誤差基準から見てほぼ最適のアラインメントを含め、多くのアラインメントが可能である。あるいは、アラインメントは係数データの物理視覚的（physchovisual)量子化を許すかもしれない。アラインメントは画像品質に（換言すればレート・歪み曲線に）相当な影響を及ぼすが、非損失性システムの最終的な圧縮率には殆ど影響しない。他のアラインメントは、特殊な量子化である注目領域忠実度符号化や解像度プログレッシブアラインメントに対応するかもしれない。
【０１５７】
アラインメントは、圧縮データのヘッダで通知されるかもしれない。係数はビット・シグニフィカンス順に符号化されるが、最上位の重要性レベルは符号化単位中の係数から導き出される。各係数の符号ビットは、その係数が非ゼロの絶対値ビットを持つ最も上位の重要性レベルまで符号化されない。これは、絶対値がゼロの係数の符号ビットを符号化しないという利点がある。また、符号ビットは、埋め込み符号ストリーム中のそれが関連する点まで符号化されない。様々なサイズの係数に関するアラインメントは、符号化器及び復号化器のいずれも分かっているので、エントロピー・コーダの効率に全く影響を与えない。
【０１５８】
ｂビット／画素の画像の２レベルのＴＳ変換及びＴＴ変換分解における係数のビット深度を図１３に示す。図１４は、本発明における係数アラインメントに用いられる周波数帯域用乗数の例である。係数のアラインメントのために、1-HH係数のサイズが基準として用いられ、このサイズに対し相対的にシフトが与えられる。
【０１５９】
一実施例では、画像中の全ての係数のアラインメントを生成するため、係数は最大の係数の絶対値を考えてシフトされる。アラインメント後の係数は、次に、重要性レベルと呼ばれるビットプレーン単位で、最上位の重要性レベル（ＭＳＩＬ）より最下位の重要性レベル（ＬＳＩＬ）へと処理される。符号(sign)ビットは、ＭＳＩＬの一部ではないので、各係数の最後のヘッドビットまで符号化されない。重要なことは、アラインメントはエントロピー・コーダへビットが送られる順序を制御するに過ぎないことである。割増の０のビットのパッディング、シフト、格納、符号化が実際に行われるわけではない。
【０１６０】
表１はアラインメントの例を示す。
【０１６１】
【表１】
2005218124.tif 000020
【０１６２】
様々なサイズの係数に関するアラインメントは、符号化器と復号化器の両方に分かっているので、エントロピー・コーダの効率にはまったく影響を与えない。
【０１６３】
同じデータセットの符号化単位が異なったアラインメントを持っても構わないことに注意されたい。
【０１６４】
符号ストリームの順序付け
図１５は、符号化ストリームの順序付けと符号化単位内における順序付けを示している。図１５において、ヘッダ１００１の後に、符号化単位１００２が最も上の帯域より最も下の帯域へと順に続く。符号化単位の内部では、ＬＬ係数１００３は符号化されずにラスター（ライン）順に格納される。ＬＬ係数の後に、重要性レベルが、１ビットプレーンずつ、最上位のビットプレーンから最下位のビットプレーンへと順にエントロピー符号化される。この時、すべての係数の第１ビットプレーンが符号化され、次に第２ビットプレーンが符号化され、以下同様に符号化される。一実施例では、アラインメントはヘッダ１００１中に指定される。
【０１６５】
一実施例では、ＬＬ係数は、それが８ビット値のときは、符号化されずにラスター順に格納されるにすぎない。ＬＬ係数のサイズが８ビット未満のときには、ＬＬ係数はパッディングにより８ビットにされる。ＬＬ係数が８ビットより長いときには、ＬＬ係数は次のように格納される。まず、各係数の最上位の８ビットが符号化されずラスター順に格納される。次に、係数の残りの下位ビットはパックされてラスター順に格納される。例えば、１０ビットのＬＬ係数の場合、４個のＬＬ係数の最下位ビットは１バイトにパックされる。このようにして、実際の画像の深度にかかわらず、係数毎に８ビットのＬＬデータを得られるので、簡略画像もしくはプレビュー画像の素早い生成が可能になる。
【０１６６】
各ビットプレーン期間内に係数が処理される順序は、低い解像度より高い解像度へ、かつ低い周波数より高い周波数への順である。各ビットプレーン内の係数サブバンドの順序は、高いレベル（低解像度、低周波数）より低いレベル（高分解能、高周波数）への順である。各周波数サブバンドの内部において、符号化はある決まった順序でなされる。一実施例では、その順序はラスター順、２×２ブロック順、ジグザグ順、Ｐeanoスキャン順、等々である。
【０１６７】
図１５の符号ストリームを用いる４レベル分解の場合、その順序は次のとおりである。
4-LL,4-HL,4-LH,4-HH,3-HL,3-LH,3-HH,2-HL,2-LH,2-HH,1-HL,1-LH,1-HH
【０１６８】
符号ストリーム・データを重要性によって分けると、データを媒体に格納したり、ノイズのある通信路により伝送するのに有利である。データの異なった部分に、異なった冗長度を持つ誤り訂正／検出符号を用いることができる。最も高い冗長度の符号をＬＬ係数のヘッダに用いることができる。（重要度を基準にして）重要性の低いエントロピー符号化データは、冗長度の低い誤り訂正／検出符号を用いることができる。訂正不可能な誤りが生じたときには、データのパケットを廃棄（量子化）すべきか、または、通信路より再送信すべきか、もしくは記憶装置から再読みだしすべきかを決定するために、そのデータの重要性レベルも利用できる。例えば、高冗長度の誤り訂正ＢＣＨ符号（Ｒeed-Ｓolomon符号など）が、ヘッダデータ、ＬＬデータ、エントロピー符号化データの最も重要な４分の１のために用いられるかもしれない。エントロピー符号化データの残りの４分の３は、低冗長度の誤り検出チェックサム又はＣＲＣ（巡回冗長検査）によって保護されるであろう。一実施例では、ＢＣＨ符号を用いるパケットは常に再送信されて廃棄されず、一方、チェックサム又はＣＲＣ符号を持つパケットは再送信されず、データの送信を試みて失敗した後に廃棄されるであろう。
【０１６９】
一実施例においては、ヘッダデータがデータの各部分に使用される誤り訂正／検出符号を指定する。言い換えれば、ヘッダ中の情報が、誤り訂正符号を切り替えるべき時点を指示する。一実施例では、誤り訂正／検出符号は、通信路に利用されるパケット間で、又は記憶媒体に利用されるブロック間で変更されるだけである。
【０１７０】
図２６は、ヘッダ１９０１の後に符号化されないＬＬ係数（１９０２）とエントロピー符号化データ１９０３が埋め込み順に続く符号ストリームを示す。図示のように、ヘッダ１９０１とＬＬ係数１９０２は最高冗長度の符号を使用するが、エントロピー符号化データ１９０３は最低冗長度の符号を使用する。本発明は、最高の冗長度から最低の冗長度までの多くの異なった符号が使用されるスライディングスケールを採用することもできる。
【０１７１】
水平コンテキストモデル
本発明に利用される水平コンテキストモデルの一実施例を以下に説明する。このモデルは、係数の空間及びスペクトル従属性に基づいて符号化単位内のビットを利用する。隣接した係数及び親係数の利用可能な２進値を、コンテキストを生成するために使用してもよい。しかし、コンテキストはデコーダビリティを左右し、また、多少は効率的適応に影響を及ぼす。
【０１７２】
水平コンテキストモデルによる係数のモデリング
本発明は、バイナリ・エントロピー・コーダのための埋め込みビット・シグニフィカンス順の係数により生成された符号ストリームをモデル化するためのコンテキスト・モデルを提供する。一実施例では、コンテキスト・モデルはランレングス・カウント（count）、空間モデル、符号（sign）ビット・モデル、テールビット・モデルからなる。ランレングス・カウントは、同じ状態のビットのランを測定する。空間モデルは、ヘッドビットに関する近傍係数及び親係数の情報を含んでいる。
【０１７３】
図１６は、符号化単位の全ての係数の隣接係数を表す。図１６において、隣接係数は分かりやすい地理的表記法で表されている（例えば、Ｎ＝北、ＮＥ＝北東、等々）。ある係数、例えば図１６のＰと、カレント・ビットプレーンが与えられたとすると、コンテキストモデルは、そのビットプレーンより前の符号化単位全てから得られるどの情報も利用することができる。本コンテキストモデルの場合、注目係数の親係数も利用される。
【０１７４】
水平ヘッドビット・コンテキストモデル
ヘッドビットは、最も圧縮できるデータである。したがって、圧縮率を上げるため、大量のコンテキストもしくは条件付けが使われる。隣接係数又は親係数の値を注目係数の注目ビットに対するコンテキストを決定するために利用するというよりもむしろ、その情報は本明細書においてテール情報と呼ぶ２ビットにまとめられる。この情報は、メモリに格納されてもよいし、隣接係数又は親係数から動的に計算されてもよい。テール情報は、最初の非ゼロの絶対値ビットがすでに見つかったか否か（例えば最初の“オン”ビットがすでに見つかったか否か）を示し、そして、すでに見つかっているならば、幾つ前のビットプレーンであったかを示す。表２はテール情報ビットの説明である。
【０１７５】
【表２】
2005218124.tif 000021
【０１７６】
この２ビットのテール情報から、そのテール情報がゼロか否かを示す１ビットの“テール・オン”ビットが合成される。一実施例では、テール情報とテール・オンビットは係数が符号化された直後に更新される。別の実施例では、その更新は、並列的コンテキスト生成を可能にするため、もっと後に行われる。
【０１７７】
さらに、この２ビットは、符号化される重要性レベルを示すために利用される。最初の２ビットプレーンは値０、第２の２ビットプレーンは値１、第３の２ビットプレーンは値２、残りのビットプレーンは値３を使用する。さらに、すべてゼロのヘッドビットのランレングス符号化がある。
【０１７８】
ヘッドビットのための１０ビットのコンテキストは、親係数及びＷ係数それぞれの２ビット情報、Ｎ，Ｅ，ＳＷ，Ｓ各係数の１ビット情報、２ビットの重要性レベル情報からなる。
【０１７９】
一実施例では、一部又は全ての周波数帯域についてテール情報は用いられない。こうすることにより、周波数帯域を、その親を前もって復号化すねことなく復号化できるようになる。
【０１８０】
別の実施例では、各周波数帯域のビットプレーンの重要性レベルへの割り当てに、一つのアラインメントを用いる。親のテール・オン情報の決定に、もう一つのアラインメントを利用するが、これが利用する親のビットプレーンは実際に符号化されているビットプレーンより少ない。これにより、ある周波数帯域のいくつかのビットプレーンが、同じ重要性レベルの対応した親ビットプレーンを復号化せずに復号化できるようになる（図５１参照）。例えば、ＭＳＥアラインメントに基づいた親のテール・オン情報によらず、ピラミッド・アラインメントにより画像を符号化できる（図５０参照）。これにより、復号化器は、ＭＳＥ  アラインメントを模擬し、又はピラミッド・アラインメントとＭＳＥアラインメントの間の任意のアラインメントを模擬し、ピラミッド・アラインメントで復号化することができる。
【０１８１】
図２９はコンテキスト従属関係を示す。子はその親に条件付けられる。したがって、親は、その子を復号化する前に復号化されなければならない、特に符号化時に用いたアラインメントと異なるアラインメントを用いて復号化する時にはそうである。
【０１８２】
水平符号(sign)ビット・コンテキストモデル
最後のヘッドビットの後で、符号ビットが符号化される。符号のコンテキストは、Ｎ係数が正であるか負であるか、符号がまだ符号化されていないかによって、３つ存在する。
【０１８３】
水平テールビット・コンテキストモデル
テールビットのためのコンテキストは、注目係数のテール情報の値によって３つ存在する。（テールビットを符号化しようとしているときには、テール情報値は１，２又は３に限られることに注意されたい）
【０１８４】
水平コンテキストモデルのためのステップ
システムのコンテキストモデルは、コンテキストを記述するために最高１１ビットを使う。この数がまるまる指定されなくともよい。各ビット位置の意味は、前の２進値に依存する。まず第１に、ヘッドビットのある“ラン符号化”を提供するために、ただ１つのコンテキストが用いられる。ヘッドビットのランがないとにきは、各ビットは、あるコンテキストに寄与する隣接係数及び親係数により符号化される。ステップの具体例は以下のとおりである。
【０１８５】
１）ルックアヘッド（look-ahead）をすべきか判定する。
次のＮ個の係数とそれらの北側に隣接する係数のテール情報がすべてゼロならば、システムはステップ２に進む。そうでなければ、次のＮ個の係数のためステップ３に進む。一実施例では、Ｎ＝１６である。
【０１８６】
２）ルックアヘッド手順を行う。
次のＮ個の係数の符号化すべきカレント・ビットプレーンのビットがゼロならば、１つの０が符号化され、システムはステップ１から次のＮ係数に移行する。そうでなければ、１つの１が符号化され、システムは次のＮ係数のためステップ３に進む。
【０１８７】
３）注目係数の状態を判定し符号化する。
注目係数のテール情報が０ならば、注目係数のカレント・ビットプレーンのビットは、西の係数と親係数（オプション）のテール情報の２ビット、北西、東、南西、南の係数のテールオンビット、及び重要性レベル情報の２ビットにより作られる１０２４個の可能なコンテキストにより符号化され、システムはステップ４に進む。なお、一実施例では、親係数は利用されないため、コンテキストは隣接係数と重要性レベル情報だけから作られる。注目係数のテール情報が０でなければ、注目係数のカレント・ビットプレーンのビットはテールビットであり、注目係数のテール情報の２ビットから作られる３つのコンテキストにより符号化される。
【０１８８】
４）カレント・ヘッドビットの状態を判定し、必要なら符号（sign）ビットを符号化する。
注目係数のカレント・ビットプレーンのビットが１ならば、注目係数の符号（sign）は、北係数のテールオンビット及び符号ビットにより作られる３つの可能なコンテキストにより符号化される。
【０１８９】
図１７は前述のプロセスのフローチャートである。図１７において、白いブロックは符号化と関係がなく、黒いブロックは符号化に関係がある。図に示さないが、各エントロピー符号化デシジョン(decision）に対し１つのコンテキストが定義される。前述の作用及びフローは、当業者には理解できるであろう。
【０１９０】
水平コンテキストモデルの一例が、入力係数を符号／絶対値形式に変換する符号／絶対値ユニットの一例とともに、米国特許出願第０８／４９８，６９５号（１９９５年６月３０日受理、”Ｍethod  and  Ａpparatus  Ｆor  Ｃompression  Ｕsing  Ｒeversible  Ｗavelet  Ｔransforms  and  an  Ｅmbedded  Ｃodestream”）、及び、米国特許出願第０８／４９８，０３６号（１９９５年６月３０日受理、”Ｒeversible  Ｗavelet  Ｔransform  and  Ｅmbedded  Ｃodestream  Ｍanipulation”）に記述されている。
【０１９１】
エントロピー符号化
一実施例では、本発明により実施されるエントロピー符号化は、バイナリ・エントロピー・コーダによって実行される。一実施例では、エントロピー・コーダ１０６はＱコーダ、ＱＭコーダ、有限状態マシン、又は高速並列コーダ等からなる。単一のコーダを用いて単一の出力符号ストリームを生成してもよい。あるいは、複数の（物理又は仮想）コーダを用い、複数の（物理又は仮想）データストリームを生成してもよい。
【０１９２】
一実施例では、本発明のバイナリ・エントロピー・コーダはＱコーダからなる。Ｑコーダに関する情報を得るには、Ｐennebaker，Ｗ．Ｂ.，et  al．，“Ａn  Ｏverview  of  the  Ｂasic  Ｐrinciples  of  the  Ｑ-coder  Ａdaptive  Ｂinary  Ａrithmetic，”IBM  Ｊournal  of  Ｒesearch  and  Ｄevelopment，Vol．32，pg．717-26，1988を読まれたい。別の実施例では、バイナリ・エントロピー・コーダは、周知の効率的なバイナリ・エントロピー・コーダであるＱＭコーダを用いる。ＱＭコーダは、確率スキューが非常に高いビットに対し特に効率的である。ＱＭコーダはＪＰＥＧ規格とＪＢＩＧ規格の両方で利用される。
【０１９３】
バイナリ・エントロピー・コーダは、有限状態マシン（ＦＳＭ）コーダでもよい。このようなコーダは、確率及び事象(outcome)から圧縮ビットストリームへの単純な変換を提供する。一実施例では、有限状態マシン・コーダは、符号化器、復号化器の両方として、テーブルルックアップにより実現される。多様な確率予測法を、このような有限状態マシンコーダに利用できる。０．５に近い確率に対する圧縮率が非常によい。大きくスキューした確率に対する圧縮率は、用いられるルックアップテーブルのサイズに依存する。ＱＭコーダと同様、有限状態マシン・コーダは、デシジョンが発生順に符号化されるので、埋め込みビットストリームに有効である。出力はルックアップテーブルにより決められるので、“キャリーオーバー”(carry  over)問題が起こる心配は全くない。実際には、ＱコーダやＱＭコーダと違って、符号化と圧縮出力ビットの生成との間に最大の遅延がある。一実施例では、本発明の有限状態マシン・コーダは、１９９３年１２月２１日発行の米国特許第５，２７２，４７８号“Ｍethod  and  Ａpparatus  for  Ｅntropy  Ｃoding”に述べられているＢコーダからなる。
【０１９４】
一実施例では、本発明のバイナリ・エントロピー・コーダは高速並列コーダからなる。ＱＭコーダもＦＳＭコーダも、１ビットずつ符号化又は復号化される必要がある。高速並列コーダは、数ビットを並列に処理する。一実施例では、高速並列コーダは、圧縮性能を犠牲にすることなく、ＶＬＳＩハードウエア又はマルチプロセッサ・コンピュータで実現される。本発明において利用し得る高速並列コーダの一例が、１９９５年１月１０日発行の米国特許第５，３８１，１４５号“Ｍethod  and  Ａpparatus  for  Ｐarallel  Ｄecoding  and  Ｅncoding  of  Ｄata”に述べられている。
【０１９５】
殆どの効率的なバイナリ・エントロピー・コーダは、基本フィードバックループによって速度が制限される。考えられる一解決法は、入力データストリームを複数のストリームに分割して並列の複数の符号化器に与えることである。それら符号化器の出力は、複数の可変長符号化データ・ストリームである。この種の方法の一つの課題は、データを単一のチャンネルでどのようにして伝送するかである。米国特許第５，３８１，１４５号に述べられている高速並列コーダは、この課題を、それら符号化データストリームをインターリーブする方法によって解決する。
【０１９６】
本発明において利用されるコンテキストの多くは定確率であり、このことがＢコーダのような有限状態マシン・コーダを特に有効なものにする。なお、システムが０．５に近い確率を利用する場合、上記特許に開示された高速並列コーダ及び有限状態マシン・コーダは共にＱコーダより効率よく動作する。よって、それら両方のコーダは、本発明のコンテキストモデルに対し本質的な圧縮上の強みを持っている。
【０１９７】
別の実施例では、バイナリ・エントロピー・コーダ及び高速ｍ元コーダの両方が利用される。高速ｍ元コーダはハフマン・コーダでよい。
【０１９８】
本発明の符号化及び復号化のプロセス
図１８乃至図２０のフローチャートは、本発明の符号化プロセス及び復号化プロセスの例を表している。処理ロジックは、ソフトウエア及び／又はハードウエアによって実現してよい。
【０１９９】
図１８は本発明の符号化プロセスの一例を示す。図１８において、符号化プロセスの最初で、処理ロジックが１タイル分の入力データを取得する（処理ブロック１２０１）。
【０２００】
処理ロジックは次に、バイナリ符号化を実行しなければならないか判定する（処理ブロック１２０２）。バイナリ符号化を実行すべきときには、プロセスは処理ブロック１２１１に進み、処理ロジックは入力データに対しＧｒａｙ符号化を実行し、そして各係数の各ビットをバイナリ方式コンテキストモデルによりモデル化する（処理ブロック１２１２）。処理は処理ブロック１２０８へ進む。
【０２０１】
バイナリ符号化を実行する必要がなければ、プロセスは処理ブロック１２０３へ進み、処理ロジックはデータに可逆フィルタをかける。可逆フィルタをかけた後、処理ロジックは別の分解レベルが必要か判定する（処理ブロック１２０４）。別の分解レベルが必要ならば、処理ロジックはＬＬ係数に可逆フィルタをかけ（処理ブロック１２０５）、そして処理は処理ブロック１２０４へ戻り再び判定を行う。別の分解レベルが必要でないならば、プロセスは処理ブロック１２０６へ進み、処理ロジックは係数を符号・絶対値形式へ変換する。それから、処理ロジックは各係数の各ビットを水平コンテキストモデルによりモデル化し（処理ブロック１２０７）、プロセスは処理ブロック１２０８へ進む。
【０２０２】
処理ブロック１２０８で、処理ロジックは各係数の各ビットを符号化する。そして、処理ブロックは各符号化データを送信又は格納する（処理ブロック１２０９）。
【０２０３】
処理ブロックは、次に、画像中に他にもタイルが使われているか判定する（処理ブロック１２１０）。画像中に他のタイルがあるならば、処理ロジックは処理ブロック１２０１へループバックし処理が繰り返されるが、他のタイルがなければプロセスは終了する。
【０２０４】
図１９は、本発明の復号化プロセスの一例を示す。図１９において、プロセスはまず１タイル分の符号化データを取得する（処理ブロック１３０１）。次に、処理ロジックはその符号化データをエントロピー復号化する（処理ブロック１３０２）。そして、処理ロジックは、そのデータがバイナリ復号化されなければならないか判定する（処理ブロック１２０３）。そのデータがビット毎にバイナリ復号化されなければならないときには、プロセスは処理ブロック１３１１へ進み、処理ロジックは各係数の各ビットをバイナリ方式コンテキストモデルによりモデル化し、そして、そのデータに対し逆Ｇｒａｙ符号化を施す（処理ブロック１３１２）。この逆グレイ符号化の後、プロセスは処理ブロック１３０９へ進む。
【０２０５】
バイナリ復号化が実行される必要がないときには、プロセスは処理ブロック１３０４へ進み、処理ロジックは各係数の各ビットを水平コンテキストモデルによりモデル化する。そして、処理ロジックは各係数をフィルタ処理に適した形式へ変換し（処理ブロック１３０５）、係数に可逆フィルタをかける（処理ブロック１３０６）。
【０２０６】
可逆フィルタをかけた後、処理ロジックは別のレベルの分解があるか判定する（処理ブロック１３０７）。別レベルの分解があるならば、プロセスは処理ブロック１３０８へ進み、処理ロジックは係数に可逆フィルタをかけ、そしてプロセスは処理ブロック１３０７へループバックする。別の分解レベルが必要でなければ、プロセスは処理ブロック１３０９へ進み、再構成されたデータは送信されるか格納される。
【０２０７】
次に、処理ロジックは画像中に他にタイルがあるか判定する（処理ブロック１３１０）。画像中にほかにタイルがあるときには、処理は処理ブロック１３０１へループバックして処理が繰り返されが、他にタイルがなければ、プロセスは終了する。
【０２０８】
図２０は本発明によるビット・モデル化のためのプロセスの一例を示す。図２０において、ビット・モデル化プロセスは初めに係数変数Ｃを最初の係数に設定する（処理ブロック１４０１）。つぎに、｜ｃ｜＞２Sの判定を行う（処理ブロック１４０２）。判定結果がｙｅｓのときには、処理は処理ブロック１４０３に進み、処理ロジックはテールビット用モデルを用いて係数ＣのビットＳを符号化し、そして処理ブロック１４０８に処理が進む。このテールビット用モデルは静的（非適応型）モデルでかまわない。｜ｃ｜が２Sより大きくないときには、処理は処理ブロック１４０４に進み、処理ロジックはテンプレートをヘッドビット（頭の０と最初の“１”ビット）に適用する。テンプレートを適用した後、処理ロジックは係数ＣのビットＳを符号化する（処理ブロック１４０５）。可能なテンプレートを図２１に示す。
【０２０９】
次に、係数ＣのビットＳがオンであるか判定する（処理ブロック１４０６）。係数ＣのビットＳがオンでなければ、処理ブロック１４０８へ進む。一方、係数ＣのビットＳがオンならば、処理は処理ブロック１４０７に進み、処理ロジックは符号(sign)ビットを符号化する。そして処理は処理ブロック１４０８へ進む。
【０２１０】
処理ブロック１４０８で、係数Ｃが最後の係数であるか判定する。係数Ｃが最後の係数でなければ、処理は処理ブロック１４０９に進み、係数変数Ｃは次の係数に設定され、そして処理ブロック１４０２から処理を続ける。一方、係数Ｃが最後の係数ならば、処理ブロック１４１０に進み、Ｓが最後のビットプレーンであるか判定する。Ｓが最後のビットプレーンでなければ、ビットプレーン変数Ｓが１だけデクリメントされ（処理ブロック１４１１）、処理ブロック１４０１から処理を続ける。Ｓが最後のビットプレーンならば、処理は終了する。
【０２１１】
ＴＳ変換設計
本発明は、一実施例において、バッファメモリ内の適所においてＴＳ変換を計算する。これを行う際、計算値を再配置するためのメモリの余分なライン及び余分な時間は必要とされない。ＴＳ変換については既に述べたが、本発明は、臨界サンプリングしたものに対しオーバーラップ変換を適用する。別の実施例では、ＴＴ変換が用いられる。
【０２１２】
図２４（Ａ）乃至図２４（Ｃ）は、本発明の変換の計算中に本発明により採用されるメモリ操作方法を示す。図２４（Ａ）はメモリの初期状態を示す。図２４（Ａ）において、メモリの最初の行には、前の値(n-1)の平滑（"S")係数及び詳細（"D")係数（計算済み）、カレント値（ｎ）の平滑（"S")係数及び部分的に完成した詳細係数（"B"）が、４つの入力標本（"X"）の値（Ｘ2n+2，Ｘ2n+2，Ｘ2n+4，Ｘ2n+5）とともに入っている。変換計算の中間結果は、図２４（Ｂ）の同じメモリ行に示されている。この行の変更点は、第５記憶エレメント及び第６記憶エレメントにおいて、Ｘ2n+2とＸ2n+3の値がＳn+1とＢn+1の値に置き換わったことだけであることに注意されたい。このように、もはや必要でない格納値を変換計算中に生成された結果によって置き換えることにより、本発明はメモリスペースを節約する。図２４（Ｃ）は変換が完了し詳細出力Ｄnを生成後における同じメモリ行を示す。図２４（Ｂ）から唯一変わった点は部分的に完成した詳細係数Ｂnが詳細出力Ｄnで置き換わったことである。
【０２１３】
ｎに関し詳細出力が計算された後、変換計算プロセスは、詳細出力Ｄn+1を計算するために行を下げて計算を続ける。
【０２１４】
次に示すコード例を、変換を行うため用いてよい。フォワード変換とリバース変換のための水平コードが含まれていることに注意されたい。
【０２１５】
以下において、変数ｓｏｏはＳn-1値を指し、変数ｏｓｏはＳn値を指し、変数ｏｏｓはＳn+1を指す。
【０２１６】
フォワードＴＳ変換の一例のためのコード（Ｃ言語）の具体例は以下の通りである。
/*
TSFoword_1()
*/
void  TSForward_1(long  *x,int  width)
{
long  *start=x;
long  *ox=x+2;
long  soo;
long  oso;
long  oos;
oso=(*x+*(x+1))>>1;
oos=(*ox+*(ox+1))>>1;
soo=oos;
*(x+1)=*x-*(x+1);
*x=oso;
while((ox+2)-start<width){
x=ox;
os+=2;
soo=oso;
oso=oos;
oos=(*ox+*(ox+1))>>1;
*(x+1)=*x-*(x+1)+((oos-soo+2)>>2);
*x=oso;
｝
x=ox;
soo=oso;
oso=oos;
oos-soo;
*(x+1)=*x-*(x+1);
*x=oso;
}
【０２１７】
インバースＴＳ変換の一例のためのコード（Ｃ言語）の具体例は以下のとおりである。
/*
TSReverse_1()
*/
void  TSReverse_1(long  *x,int  width)
{
long  *start=x;
long  *d=x+1;
long  ns=*(x+1);
long  P;
while(x+2-start<width){
p=*d-((*(x+2)-ns+2)>>2);
ns=*x;
*d=*x-(P>>1);
*x+=((p+1)>>1);
x+=2;
d=x+1;
}
p=*d;
*d=*x-(p>>1);
*x=((p+1)>>1);
【０２１８】
１次元の例のみ示したが、本発明は多次元及び多レベルにも利用し得る。なお、この手法は、他の計算のためにもはや必要でなくなった値を部分的又は最終的結果により１対１に置き換える任意のオーバーラップ変換に利用できる。
【０２１９】
図２５は、３レベル用のメモリバッフアの２次元表現を示す。図２５において、各ブロック１８０１〜１８０４のメモリロケーションには係数値が入っている。すなわち、ブロック１８０１〜１８０４のそれぞれは、係数値の８×８ブロックである。
【０２２０】
係数は、２の自然数乗の間隔で配置される。レベルと、Ｓ又はＤのオフセットが与えられれば、どの係数もアクセスできる。それゆえに、特定のレベルと水平及び垂直周波数を選択することによって、アクセスをすることができる。バッファはラスター順にアクセスされてもよい。
【０２２１】
ユニット・バッファ構成
本発明の一実施例においては、単一のバッファで圧縮システムの変換ブロック、コンテキストモデル・ブロック、符号化ブロックをサポートする。このバッファは、係数を効率的にアクセスでき他にメモリを必要としない２次元のスクローリング・メモリバッファである。バッファの各ラインはライン・アクセス・バッファに格納されたポインタを介してアクセスされる。図２３（Ａ）及び図２３（Ｂ）は、このスクローリング・バッファの構成を示し、ライン・アクセス・バッファ１６０１にバッファ１６０２の各ラインを指すポインタが入っている。
【０２２２】
スクロールは、ライン・アクセス・バッファに格納されるポインタを並べ直すことによりなされる。その例が図２３（Ａ）及び図２３（Ｂ）に示されている。図２３（Ａ）はバッファの初期状態を示す。図２３（Ｂ）を見るに、ラインＡ，Ｂ，Ｃがバッフアから取り除かれ、ラインＧ，Ｈ，Ｉによってそれぞれで置き換えられた後に、バッファにスクローリング・バッファの作用を付与するため、ライン・アクセス・バッファのポインタは、第１のポインタがバッファ内のラインＤを指し、第２のポインタがラインＥを指し、第３のポインタがラインＦを指すように変更される。次に、ラインＧ，Ｈ，Ｉを指すポインタがライン・アクセス・バッファの最後の３つの位置を占める。なお、６ラインのバッファを持つことに本発明が限定されるわけではなく、これはあくまで一例として用いられるにすぎない。もっとライン数の多いバッファが一般的に使用されるが、これは当業者には周知であろう。しかして、ライン・アクセス・バッファ経由のアクセスは、記憶を物理的に移動させることなく、ユニット・バッファがスクロールするような外観を呈する。これにより、スピードを犠牲にせずに、最小限のメモリを使用できるようになる。
【０２２３】
本発明においては、そのようなユニット・バッファを用いることにより、常に画像の１つの帯域のみメモリに記憶しつつ、画像全体に対するオーバーラップ変換の適用をサポートする。これを達成するため、少なくとも１バンドのウェーブレット・ユニットを構成するウェーブレット係数のセットを完全に計算するために必要な数分の画像のラインに対してだけウェーブレット変換を適用する。このような場合には、計算の完了したウェーブレット係数のセットを、モデル化し、エントロピー符号化し、そしてウェーブレット・ユニット・バッファの該当部分より取り除くことができる。計算が未完のウェーブレット係数は、次の反復で計算を完了させるために、そのまま残る。そして、ライン・ポインタを並べ替えることによりウェーブレット・ユニット・バッファをスクロールし、ウェーブレット・ユニット・バッファの空き部分にほかのデータを入れることができる。これで、計算途中のウェーブレット係数を完全に計算することができる。
【０２２４】
一例として、ハイパスフィルタがカレント係数及び次のローパスフィルタ係数に依存するオーバーラップ変換を適用することを考える。この例の場合、たった２レベルの分解が画像データに適用されるであろうが、これは１つのウェーブレット・ユニットが４エレメント長であることを暗に示す。
【０２２５】
少なくとも１つの帯域のウェーブレット・ユニットを構成するウェーブレット係数のセットを完全に計算するために、ウェーブレット・ユニット・バッファの高さは少なくとも８ラインつまり２ウェーブレット・ユニットである。
【０２２６】
２次元のウェーブレット・ユニット・バッファに対しウェーブレット変換を適用する際には、まず１次元のウェーブレット変換がバッファの各行（ライン）に対し適用される。それから、１次元のウェーブレット変換がバッファの各列に対し適用される。
【０２２７】
ウェーブレット・ユニット・バッファの各列に対し１次元ウェーブレット変換を適用する時に、ユニット・バッファに格納されていない画像のエレメントに依存する各列の最後のエレメントについては、ハイパスフィルタの計算を部分的にしか終わらせることができない。これが図５５に示されている。
【０２２８】
第２レベルのウェーブレット分解を実行する時に、再び、各列の最後のエレメントについては、ハイパスフィルタの計算を部分的にしか終わらせることができない。これが図５６に示されている。
【０２２９】
なお、一実施例においては、多くの分解レベルを利用する時に、ＳＳ係数（第２分解レベルの場合は図５５の１ＳＳ、第３レベルの場合は図５６の２ＳＳ）にのみウェーブレット変換が適用されるだろう。このような場合、ユニット・バッファの行及び列のロケーションは、バッファの適切なエントリーの読み書きを保証するようスキップされるだろう。
【０２３０】
この例では、バッファの上半分には計算が完了したウェーブレット係数のセットが入っており、このウェーブレット係数セットは１帯域のウェーブレット・ユニットを構成しており、モデル化し、エントロピー符号化し、そしてバッファから取り除くことができる。
【０２３１】
バッファの上半分が空くと、バッファを高さの半分だけスクロースすることができる。ここで、画像の次の４ラインをバッファに読み込むことができる。バッファに格納された新たなラインそれぞれに対し、１次元ウェーブレット変換を適用することができる。バッファの列方向に、部分的に計算された係数を完全に計算することができるが、再び、各列の最後のエレメントは部分的にしか計算することができない。
【０２３２】
第２レベルのウェーブレット分解のためにも同様のことが行われる。再び、バッファの上半分は計算の完了したウェーブレット係数が入り、その段階でプロセスはほかに処理すべき画像のラインがなくなるまで反復する。
【０２３３】
ライン・アクセス・バッファ内のライン・ポインタの並べ替えは、様々なやり方で行うことができる。一つのやり方は、新しいライン・アクセス・バッファを作り、それに旧ライン・アクセス・バッファからポインタをコピーする方法である。ウェーブレット・ユニット・バッファの高さを法としてスクロールするためには、旧ライン・アクセス・バッファのエレメントｉに格納されているポインタが、インデックス（ｉ＋ライン数）にコピーされることになろう。
【０２３４】
なお、圧縮システムの３つのステージは、バッファ内のデータに対し、そのデータがバッファより出される前に遂行されるので、係数は一般的に様々に順序つけられること留意すべきである。ラスター順データ操作が行われる場合には、本発明のスクロール・バッファは最小限のメモリで間に合う。
【０２３５】
ソフトウエア（及び／又はハードウエア）によりライン・アクセス・バッファを管理してポインタを操作する。このソフトウエアも、バッファ内のどのデータが処理を完了しバッファから出してよいか知っている。
【０２３６】
アラインメント法
本発明は、係数値を左へ任意量だけシフトする。一実施例では、このアラインメントは、仮想的アラインメント法によって行われる。この仮想的アラインメント法は、係数を実際にシフトしない。その代わりとして、係数を１ビットプレーンずつ処理する間に、特定の係数についてアラインメントが必要とされる実際のビットプレーンが計算される。重要性レベルと特定の係数に対し適用されるべきシフト量とが与えられれば、本発明は、その係数の所望の絶対ビットプレーンを、それが可能なビットプレーンの範囲内にあればアクセスする。すなわち、特定の係数の所望の絶対ビットプレーンは、カレント重要性レベルから該係数に適用されるべきシフト量を差し引いたものにより与えられる。この所望ビットプレーンは、それが最小の有効な絶対ビットプレーンより大きいか又は等しく、かつ最大の有効な絶対ビットプレーンより小さいか又は等しいときに有効とみなされる。
【０２３７】
２つのアラインメント法が普通である。その中の第１の方法は、平均２乗誤差（ＭＳＥ）法と呼ばれるもので、フルフレーム（full-frame）の再構成画像を原画像と比較した時にＭＳＥが縮小もしくは最小化されるように、係数をアラインメントする方法である。図５０は、このアラインメントの一例である。図５１も参照のこと。
【０２３８】
第２の方法は、ピラミッド型のアラインメント法であり、画像がピラミッド・レベルのサイズに再構成される場合に良好なレート・歪み性能を提供する。ここでは、隣接レベルの係数は共通の重要レベルを持たない、つまりオーバーラップがない。図５１の左側にあるアラインメントは、３レベルＴＳ変換のための厳密にピラミッド型のアラインメントを表す。図５１の右側は、レベル２のピラミッド型アラインメントを表す。（図５１の厳密にピラミッド型の部分は、レベル３と２のピラミッド型アラインメントと呼んでよかろう。）各場合において、レベル内部の係数はＭＳＥに関連してアラインメントされる。
【０２３９】
図５２は、メモリ記憶係数と一つのアラインメントとの間の典型的な関係を示す。
【０２４０】
本発明によれば、実際のシフト操作を行う必要がないため、メモリサイズの制約がなくなる。さらに、本発明は、余分なメモリを必要とせず、任意のアラインメント法を簡単に実施できる。
【０２４１】
ヒストグラム圧縮
本発明はヒストグラム圧縮を利用してもよい。一実施例では、変換又はバイナリ方式の処理を施される前にヒストグラム圧縮が利用される。ヒストグラム圧縮は、一部の画像に対する圧縮率を向上させる。そのような画像は通常、ダイナミックレンジの一部の値がどの画素にも使われない画像である。言い換えれば、画像のダイナミックレンジにギャップが存在する。例えば、ある画像が合計２５６の値の中の０と２５５の値しかとらないときには、その原画像と一対一対応を持つが、ダイナミックレンジのずっと小さな新たな画像を生成できる。この画像生成は、整数を画像のとる値に写像する増加関数を定義することにより達成される。例えば、画像が０と２５５の値しか使わないときには、マッピングで０を０に、１を２５５に写像する。別の実施例では、画像が偶数（又は奇数）画素しか持たないときには、画素値を０〜１２８の値に再写像する。
【０２４２】
ヒストグラム圧縮を行った後に、画像データに本発明の可逆埋め込みウェーブレットによる圧縮を施してよい。このように、ヒストグラム圧縮は前処理モードで用いられる。一実施例では、ヒストグラムは、ブーリアン（Boolean）ヒストグラムを基礎としており、値が生じるか否かのリストを保持するようなものである。まず、全ての生起数が昇順に記録される。次に、それぞれの値は０から順に写像される。
【０２４３】
一実施例では、誤差の影響を減らすためガード（guard）画素値が用いられる。隣接した再写像画素値が大きなギャップで隔てられた実画素値に対応するかもしれないので、再写像値の小さな誤差が実値の大きな誤差をもたらすことがある。再写像値の近くに割増値を追加することにより、そのような誤差の影響は減少するであろう。
【０２４４】
原画像を再構成するために、マッピングが利用されたことが復号化器へ通知される。このマッピングをヘッダ中に指示してもよい。これにより、復号化器において後処理のために同様のテーブルを作成できるようになる。一実施例では、復号化器はレンジをタイル毎に通知される。一実施例では、本発明は、まず当該マッピングが行われることを知らせ、次に欠落した値（例えば上例の２５４）の数を知らせる。ヒストグラム圧縮の利用の有無を知らせるためのコストは、たったの１ビットである。このビットの後に、全ての再写像値のテーブルが続くことになろう。
【０２４５】
一実施例では、１タイルずつヒストグラム圧縮を実行する時の通知量を減らすため、１つのビットで、新しいブーリアン・ヒストグラムが直前に使用したブーリアン・ヒストグラムと同じか違うかを知らせる。このような場合、新たなブーリアン・ヒストグラムが復号化器に通知されるのは、それが直前のヒストグラムと異なるとき（のみ）である。新しいブーリアン・ヒストグラムが前のものと違う場合でも、その間に類似点があるのが普通である。より詳しくいえば、２つのヒストグラムの排他的論理和はエントロピー・コーダによる圧縮性がより高いので、それを生成して復号化器へ通知してもよい。
【０２４６】
ヒストグラムは、サイズのダイナミックレンジと同じくらいのビット数（例えば８ビット深度の場合は２５６ビット）を送信することにより通知できる。そのビットの並び順は画素値に対応する。この場合、あるビットが１であるのは、それに対応した値が画像中に用いられるときである。ヘッダのコストを削減もくしは最小化するため、このビット列を、第１次マルコフ（Markov）コンテキストモデルのもとでエントロピー符号化してもよい。
【０２４７】
別の実施例では、欠落した値が過半数のときには発生した値が順に記録されるであろうが、そうでないときには欠落した値が順に記録される。
【０２４８】
一実施例では、本発明のバイナリ方式が、パレット化された画像の圧縮のために利用されるであろう。パレットはヘッダに格納されるであろう。しかし、パレット化画像は埋め込まれないであろうから、損失性伸長のための量子化は妥当な結果をもたらさない。別の実施例では、パレット化画像は連続階調（カラー又はグレースケール）画像に変換され、各成分が変換方式又はバイナリ方式により圧縮されるかもしれない。これは妥当な損失性圧縮が可能である。
【０２４９】
ある種の画像は、１つの指定色（又は指定色の小サブセット）が特定の目的のために使用された連続階調画像である。その特定目的色は注記用かもしれない。例えば、グレースケールの医用画像には、その画像を識別するためのコンピュータ生成のカラー文字があるかもしれない。もう一つの特定目的色は、オーバーレイ画像において画素が透過であって、下側の画像の画素が代わりに表示されることを示すかもしれない。禁止された色は別の成分画像に分解されるであろう。そして、連続階調成分及び特殊色成分は、変換方式又はバイナリ方式で圧縮／伸長されるであろう。
【０２５０】
なお、変換方式及びバイナリ方式は輝度データのために利用されることが多いが、アルファ混合用のアルファ・チャネルのような他の形式の２次元データが用いられてもよい。
【０２５１】
パーサ（parser）
本発明によれば、符号ストリームを、伸長することなく、送信又は復号化の前に構文解析できるようになる。この構文解析は、ビットストリームを打ち切り、特定の量子化のために必要な量の情報だけを伝達することができるパーサによって実行される。このパーサを支援するため、マーカー（marker）及びポインタがビットストリーム内の符号化単位の各ビットプレーンの位置を決定する。
【０２５２】
本発明は、画像圧縮システムにおいて構文解析によって実施される装置依存の量子化を提供する。圧縮システムにおいてマーカーを用いることにより、符号化後に装置に応じ選択される量子化が可能になる。出力装置はその特性をパーサに報告し、パーサはその特定装置向けに符号化済みファイルを量子化する。この量子化は、ファイルの一部を省くことによる。可逆ウェーブレット変換の利用は、画像の非損失復元、あるいは、装置に応じた視覚的に非損失の色々な歪みでの画像の復元を可能にする。
【０２５３】
本発明によれば、量子化を符号化後に実行することが可能になる。図２７及び図２８は、パーサを備えた圧縮システムのブロック図である。図２７及び図２８において、元の圧縮されていない画像２１０１が本発明の圧縮装置２１０２に入力される。圧縮装置２１０２は、画像２１０１を圧縮ビットストリーム２１０３へ非損失圧縮するとともとに、圧縮ビットストリーム２１０３にマーカーを付加する。
【０２５４】
圧縮ビットストリーム２１０３はパーサ２１０４に入力し、パーサ２１０４は圧縮ビットストリーム２１０３のある部分を出力として提供する。そのある部分は、圧縮ビットストリーム２１０３の全部であるかもしれないし、その一部分だけかもしれない。要求側のエージェントもしくは装置は、伸長画像が必要とされる時に、その装置特性をパーサ２１０４に与える。それに応じて、パーサ２１０４は圧縮ビットストリーム２１０４の適切な部分を選択して送出する。パーサ２１０４は画素もしくは係数レベルの演算もエントロピー符号化／復号化も行わない。別の実施例では、パーサ２１０４はそのような働きを多少は果たすかもしれない。
【０２５５】
パーサ２１０４は、低解像度用の圧縮係数を選択することにより、モニタに画像を表示するための符号化データを提供することができる。それと異なる要求に対しては、パーサ２１０４は注目領域（ＲＯＩ）の非損失性伸長を可能にするように圧縮データを選択する。一実施例では、パーサ２１０４は、要求に従って、プレビュー画像からプリンタ解像度画像又はフルサイズの医用モニタ画像（恐らく１６ビットの画素深度を持つ）までの変化に必要なビットを送出する。
【０２５６】
パーサ２１０４により提供されたデータは通信路及び／又は記憶装置２１０６へ出力される。伸長装置２１０７は、そのデータにアクセスし、圧縮データを伸長する。伸長された、すなわち再構成されたデータは、伸長画像２１０８として出力される。
【０２５７】
図２９において、２ＨＨ周波数帯域内のビットプレーンは３ＨＨ周波数帯域からの情報を利用して符号化される。ビットプレーンをより明瞭に示すため、図５０及び図５１に図２９が書き直されている。図５０のように係数が格納される場合（ＭＳＥ）には、圧縮ビットストリームの打ち切りはＭＳＥレート・歪み最適量子化とほとんど同一である。この打ち切りが、図５０に陰をつけたマーカーで示されている。図３０を調べると、この配列はプリンタには適切かもしれないが、モニタには十分でないであろう。図５１に示すように、係数が”ピラミッド状に”格納される場合、つまり、ある周波数帯域の全ビットが最初に格納される場合には、ビットストリームの打ち切りは様々な解像度の画像を提供する。
【０２５８】
マーカーを巧みに使えば、両タイプの打ち切りが可能になり、解像度の低い、忠実度の低い画像を発生するであろう。図５０及び図５１中の濃淡の変化は、最高解像度で低忠実度のビットストリームを発生するであろうビットストリームの打ち切りを表す。ＬＨ，ＨＬ，ＨＨ係数の全部をさらに打ち切れば、画像の解像度を下げることになろう。
【０２５９】
多くの画像圧縮の応用では、画像は、一度だけ圧縮されるが、何度も伸長されるかもしれない。あいにく、たいていの圧縮システムは、許容される損失量と適当な量子化とが符号化の時点で決定されなければならない。プログレッシブ・システムは段々に精細になる一揃いの画像を与えるが、非損失性再構成は一般にできない、すなわちプログレッシブ・ビルドアップと関係のない非損失な方法で符号化された“差分画像”を送り出すことにより、非損失性再構成が提供される。
【０２６０】
本発明においては、符号化器は、種々の係数を周波数及びビットプレーン要素に分解するに足るだけの情報を保存する。一実施例では、次のエントロピー符号化データ単位に何が入っているか知らせるためのマーカーがビットストリームに挿入される。例えば、マーカーは、次のエントロピー符号化データ単位に、最上位より３番目のビットプレーンのためのＨＨ周波数情報が入っていることを示すかもしれない。
【０２６１】
誰かがモニタ上で画像を調べたいとすると、低解像度のグレースケール画像を生成するために必要な情報を要求するであろう。そのユーザがその画像を印刷したいときには、高解像度の２値画像を生成するために必要な情報が要求されるであろう。最後に、そのユーザが圧縮試験を実施したいとき、あるいはセンサ雑音の統計分析や医療診断を行いたいときには、その画像の非損失版が要求されるであろう。
【０２６２】
図３１は、パーサ、復号化器、出力装置とのやりとりに関するブロック図である。図３１において、パーサ２４０２は、マーカー付の非損失性圧縮データ、並びに１つ以上の出力装置、例えば図示のディスプレイ・モジュール２４０５の装置特性を受け取るように接続される。この装置特性に基づき、パーサ２４０２は圧縮データの適当な部分を選択し、それを通信路２４０３へ送り、通信路２４０３はそのデータを伸長装置２４０４へ転送する。伸長装置２４０４はそのデータを復号化し、復号化データをディスプレイ・モジュール２４０５に与える。
【０２６３】
本発明は、ワールド・ワイド・ウェブ、その他の画像サーバーに対する改良したサポートをデータストリームに与える。データストリームのある部分はモニタ用の低空間解像度・高画素深度の画像をサポートすることができる。別の部分は、高空間解像度・低画素深度のプリンタをサポートすることができる。データストリーム全体は非損失性伝送を提供する。これら３つの使い方が同じ圧縮データによりサポートされるので、ブラウザがモニタ画像、印刷画像及び非損失性画像を順番に要求するならば、余分なデータを全く送る必要がない。伝送されたモニタ画像用情報で印刷画像のために必要とされるものは、印刷画像のために再利用できる。伝送されたモニタ画像と印刷画像のための情報は、非損失画像のために再利用できる。本発明は、閲覧のための伝送時間（伝送費用）を減らし、また、サーバーに格納しなければならないデータ量を最小にする。
【０２６４】
本発明のシステムにおいては、画像は１度だけ圧縮されるが、データが何であるかを示すために様々なマーカーが格納される。その後、ワールド・ワイド・ウェブ（ＷＥＢ）サーバーは、表示の要求を受信し、必要な係数を提供するであろう。ＷＥＢサーバーは、圧縮とか伸長とか何もする必要がなく、送るべきビットストリームの適当な部分を選択するだけである。
【０２６５】
このような構文解析システムによる量子化は、可逆ウェーブレット及びコンテキストモデルによる高度の非損失性圧縮がないとしても、帯域幅の実質的な増加をもたらす。この構文解析システムは高品質の注目領域の選択にも利用できる。
【０２６６】
図３２は量子化選択装置を示す。一実施例では、この選択装置はソフトウエアによって、各種装置のための適切な量子化プロファイルを決定するよう構成される。画像は変換され、様々な周波数帯域のビットプレーンを捨てることによって量子化される。次に逆ウェーブレット変換が実行される。再構成画像は表示に矛盾しない何らかの方法で処理される。モニタに表示される高解像度画像については、その処理はある種のスケーリングであろう。プリンタの場合には、ある種の閾値処理又はディザ処理かもしれない。同じ処理が原画像に適用され、圧縮画像と比較される。平均２乗誤差が例として用いられたが、どのような視覚的差異基準を用いてもよい。様々なビットプレーンの量子化による誤差を利用し、ビットレートの節減による歪みが最低となるようにビットプレーンを選択し量子化する。このプロセスは所望のビットレート又は歪みに達するまで続けられるであろう。各種画像処理操作のための代表的な量子化がいったん決まったならば、量子化をシミュレートする必要はなく、代表値が用いられるであろう。
【０２６７】
勿論、スケーリングのような単純な画像処理操作に関しては、様々な周波数帯域の量子化の効果を解析的に決定できる。その他のディザ処理やコントラスト・マスキングのような操作に関しては、シミュレーションによりほぼ最適な量子化を見つけるのはずっと簡単である。
【０２６８】
図３２において、符号ストリーム２５００は、量子化を含む伸長２５０１及び非損失性伸長２５０３を施される。その伸長結果に対し、画像処理又は歪みモデル２５０２，２５０４が適用される。その出力は画像であり、ＭＳＥ又はＨＶ５差モデル２５０５のような差モデルを適用される。その差判定の結果に基づき、アラインメントが調節され（２５０４）、したがって量子化も調節される。
【０２６９】
構文解析を容易にするため、本発明は一連のヘッダによる合図を利用する。一実施例では、本発明の符号ストリーム構造は、１つ以上のタグ値を持つ主ヘッダを含む。主ヘッダ中のタグは、符号ストリーム中のすべてのタイルのために用いられた成分の数、サブサンプリング及びアラインメント等の情報を知らせる。一実施例では、符号ストリーム中の各タイルの前に、そのヘッダがある。タイル・ヘッダの情報は、当該タイルに対してのみ適用され、また主ヘッダの情報をくつがえすかもしれない。
【０２７０】
ヘッダはそれぞれ１つ以上のタグを含む。一実施例では、インライン・マーカーはない。ヘッダ・タグは、ある既知の点からユーザがコーダをリセットする所までの圧縮データの量を示す。一実施例では、どのタグもみな１６の倍数のビット数である。したがって、主ヘッダ及びタイル・ヘッダはどれもみな１６の倍数のビット数である。なお、どのタグも、１６以外の数の倍数のビット数でも構わないことに注意されたい。どのタイルデータ・セグメントも、１６の倍数のビット数になるよう適当数の０が挿入される。
【０２７１】
一実施例では、各タイル・ヘッダはそのタイル・サイズを指示するかもしれない。別の実施例では、各タイルは、どこで次のタイルが始まるか指示するかもしれない。なお、符号ストリームのバックトラックが可能なときには、そのような情報をすべて主ヘッダに挿入することにより、符号化が簡単になるかもしれない。パーサは、符号ストリームに関する情報をその量子化を実行するために利用することができる。
【０２７２】
一実施例では、タイル・ヘッダはタイルがウェーブレット方式とバイナリ方式のいずれで符号化されたか指示するかもしれない。重要性レベル・インディケータは、タイルのデータと重要性レベルとを関係付ける。重要性レベル・ロケータ（locator）は、可能な打ち切り位置を知らせる。例えば、各タイルに対し同じ歪みが望まれるときには、どの重要性レベルがその所望の歪みレベルと等しいか分かれば、パーサは符号ストリームを適切な位置で打ち切ることができる。一実施例では、各タイルは、同じビット数を持つのではなく、ほぼ同じ歪みを持つ。
【０２７３】
本発明は、重要性レベル・ロケータ・タグを持つことにより、複数のタイルと、各タイルのどこで終わるべきかの指示を持ち得るようにしている。
【０２７４】
タグとポインタ
復号化又は構文解析に用いられる構文解析用マーカー及びその他の情報が、タグに入れられてもよい。一実施例では、ヘッダは以下のルールに従うタグによって制御情報を与える。
【０２７５】
タグは固定サイズでも可変サイズでもよい。成分数、タイル数、レベル数、又はリセットもしくは所望情報の数により、タグは長さが変わってもよい。
【０２７６】
画像が構文解析され量子化されるならば、それらのタグは新しい画像特性を表すように変更される。
【０２７７】
データストリーム中のリセット点は、８の倍数のビット数になるように０を挿入される。エントロピー・コーダを符号ストリームのある点でリセットできるが、その点は符号化時に決定される（しかし、それを行うことができるのは、一つの重要性レベルの符号化の終わりでだけである）。このリセットは、エントロピー・コーダにおける全ての状態情報（コンテキスト及び確率）が既知の初期状態に戻されることを意味する。次に、符号ストリームは次の８の倍数のビット数まで０を挿入される。
【０２７８】
パーサは、画像を量子化する際に符号ストリーム・タグだけを手がかりとして用いる。一実施例では、この量子化処理のために、タイル長、成分長、リセット、ビット対重要性レベル、及び、重要性レベル・ロケータの各タグが用いられる。
【０２７９】
パーサによって画像が量子化された後、そのタグはすべて新しい符号ストリームを反映するよう変更される。これは画像と、タイルサイズ、成分数、成分のスパン、全ての長さとポインタ等々に影響を及ぼすのが普通である。さらに、画像がどのように量子化されたかを記述する情報タグも含まれる。
【０２８０】
表３は、本発明の一実施例における全てのタグの一覧表である。説明と用語はしばしばＪＰＥＧとは異なるが、可能な場合には同じマーカーと識別子が用いられる。どの画像も少なくとも２つのヘッダ、すなわち、画像の始まりにある主ヘッダと、各タイルの始まりにあるタイルヘッダとを有する。（どの符号ストリームもみな少なくとも１つのタイルを含む）
３種類のタグ、すなわち区切りタグ、機能タグ及び情報タグも用いられる。区切りタグは、ヘッダ及びデータのフレーミングのために用いられる。機能タグは、利用される符号化機能を記述するために使われる。情報タグはデータに関するオプションの情報を提供する。
【０２８１】
【表３】
2005218124.tif 000022
【０２８２】
なお、”ｘ”は当該タグが当該ヘッダ中で用いられないことを意味する。ヘッダ中のＴＬＭタグ又は各タイル中のＴＬＴタグのどちかが必要とされるが、その両方は必要でない。成分ポインタが必要であるのは、２つ以上の成分があるときだけである。
【０２８３】
図３３は本発明の符号ストリームにおける区切りタグの配置を表す。各符号ストリームは、１つのＳＯＩタグ、１つのＳＯＣタグ、１つのＥＯＩタグだけ（及び少なくとも１つのタイル）を持つ。各タイルは１つのＳＯＴタグと１つのＳＯＳタグを持つ。各区切りタグは１６ビットで、長さ情報を含まない。
【０２８４】
ＳＯＩタグは、ＪＰＥＧファイルの始まりを示し、１６ビットのＪＰＥＧマジックナンバー（magic  number）である。
【０２８５】
ＳＯＣタグはファイルの始まりを示し、ＳＯＩタグの直後にくる。ＳＯＩタグとＳＯＣタグは全体として、ユニーク数を形成する１６ビットとなる。
【０２８６】
ＳＯＴタグはタイルの始まりを示す。符号ストリームには少なくとも１つのタイルがある。ＳＯＴはストリームがまだ同期していることを保証するためのチェックとして働く。
【０２８７】
ＳＯＳタグは”スキャン”の始まりを示し、その後にタイルの実画像データが続く。ＳＯＳはタイル・ヘッダの終わりを示し、また、ＣＲＥＷ符号ストリームには少なくとも１つのＳＯＳがなければならない。ＳＯＳとその次のＳＯＴ又はＥＯＩ（画像の終わり）との間のデータは１６の倍数のビット数であり、この符号ストリームは必要であれば０が挿入される。
【０２８８】
ＥＯＩタグは画像の終わりを示す。ＥＯＩはストリームがまだ同期していることを保証するためのチェックとして働く。符号ストリーム中に少なくとも１つのＥＯＩがある。
【０２８９】
機能タグは、タイル又は画像の全体を符号化するために利用される機能を記述する。これらタグの中には、主ヘッダに用いられるが、個々のタイルの符号化中に別の値を持つ同じタグを使って覆すことができるものもある。ＳＩＺタグは画像格子の幅と高さ、タイルの幅と高さ、成分数、色空間変換（必要なとき）、各成分のサイズ（画素深度）、及び成分が基準格子をどのように埋めるかを定義する。このタグは主ヘッダにのみ出現し、タイル・ヘッダ中には出現しない。各タイルは、その成分のすべてに同じ特性を提供させる。ここで定義されたパラメータの多くは他のタグのためにも用いられるため、ＳＩＺタグはＳＯＣタグのすぐ後に続かねばならない。このタグの長さは、ＳＩＺの後の最初のフィールドであるＬsizに保存されるが、成分数に依存する。図３４はＳＩＺタグに関する画像とタイルのサイズのシンタックスを示す。
【０２９０】
以下は各要素のサイズと値の説明リストである。
【０２９１】
ＳＩＺ：マーカー
【０２９２】
Ｌｓｉｚ：マーカを含めない、バイト数で表したタグの長さ（偶数でなければならない）。
【０２９３】
Ｘｓｉｚ：画像基準格子の幅（１成分の画像又は共通のサブサンプリングによる色成分を持つ画像では画像幅と同じ）。
【０２９４】
Ｙｓｉｚ：画像基準格子の高さ（１成分の画像又は共通のサブサンプリングによる色成分を持つ画像では画像の高さと同じ）。
【０２９５】
ＸＴｓｉｚ：１タイル画像基準格子の幅。タイルは、あらゆる成分の１標本を持てるだけの幅でなければならない。画像幅内のタイルの数は
【０２９６】
【数１８】
2005218124.tif 000023
に等しい。
【０２９７】
ＹＴｓｉｚ：１タイル画像基準格子の高さ。タイルは、あらゆる成分の１標本を持てるだけの高さでなければならない。画像高さ内のタイルの数は
【０２９８】
【数１９】
2005218124.tif 000024
に等しい。
【０２９９】
Ｃｓｉｚ：画像中の成分の数。
【０３００】
ＣＳｓｉｚ：色空間変換の種類（必要なとき）。このタグは包括的ではない。（多くの多成分空間変換はここでは指定できない。それらは本発明のファイルフォーマット内でない、ほかの場所で指示される必要がある）。表４に色空間変換のための値を示す。
【０３０１】
【表４】
2005218124.tif 000025
【０３０２】
このタグにおいて記述されるサブサンプリングは、各成分に最高解像度を利用できない画像に適用される。本発明のシステムは、最高解像度を利用できる時に重要性の低い成分のサイズを縮小する別の方法がある。
【０３０３】
Ｓｓｉｚｉ：第ｉ成分の精度（画素深度）。このパラメータ、ＸＲｓｉｚ及びＹＲｓｉｚは全ての成分ために繰り返される。
【０３０４】
ＸＲｓｉｚｉ：第ｉ成分のＸ次元の大きさ。例えば、数字２は当該成分が２つの水平基準格子点に寄与することを意味する。このパラメータと、Ｓｓｉｚ、ＹＲｓｉｚは全ての成分のために繰り返される。
【０３０５】
ＹＲｓｉｚｉ：第ｉ成分のＹ次元の大きさ。例えば、数字２は当該成分が２つの垂直基準格子点に寄与することを意味する。このパラメータと、Ｘｓｉｚ、ＸＲｓｉｚは全ての成分のために繰り返される。
【０３０６】
ｒｅｓ：必要なときに最後に置かれる０の埋め草バイト。
【０３０７】
【表５】
2005218124.tif 000026
【０３０８】
ＣＯＤタグは、画像又はタイルに用いられたバイナリ方式やウェーブレット方式といった符号化方式、変換フィルタ及びエントロピー・コーダを記述する。このタグは主ヘッダに含まれ、またタイルヘッダにも使用できる。このタグの長さは成分数に依存する。図３５は、符号化方式シンタックスを示す。表６は符号化方式のためのサイズと値を示す。
【０３０９】
【表６】
2005218124.tif 000027
【０３１０】
ＣＯＤ：マーカー。
【０３１１】
Ｌｃｏｄ：マーカーを含めない、バイト数で表したタグの長さ（偶数でなければならない）。
【０３１２】
Ｃｃｏｄｉ：各成分の符号化方式。
【０３１３】
ｒｅｓ：必要なときに最後に置かれる０の埋め草バイト。
【０３１４】
【表７】
2005218124.tif 000028
【０３１５】
各成分毎に、ＡＬＧタグはピラミッドレベル数と係数のアラインメントを記述する。ＡＬＧは主ヘッダに用いられ、またタイルヘッダにも用いることができる。このタグの長さは、成分数に依存し、場合によってはレベル数にも依存する。図３６は、本発明の成分アラインメント・シンタックスの一例を示す。図３６において、以下の成分が含まれる。
【０３１６】
ＡＬＧ：このマーカーは、成分アラインメント・パラメータのサイズと値を示す。
【０３１７】
【表８】
2005218124.tif 000029
【０３１８】
Ｌａｌｇ：マーカーを含めない、バイト数で表したタグの長さ（偶数である）。
【０３１９】
Ｐａｌｇi：第ｉ成分のピラミッド分解レベル数。このパラメータとＡａｌｇ、場合によってはＳａｌｇも、各成分毎に１レコードとして繰り返される。
【０３２０】
Ａｓｌｇi：第ｉ成分のアラインメント。このテーブル・エントリーは、係数のアラインメントを記述し、あらゆる成分のために繰り返される。表９にＡａｌｇパラメータの値を表す。
【０３２１】
【表９】
2005218124.tif 000030
【０３２２】
Ｐａｌｇ、場合によってはＳａｌｇも、各成分毎に１レコードとして繰り返される。
【０３２３】
Ｔａｌｇi：表１０にテール情報選択方法を示す。
【０３２４】
【表１０】
2005218124.tif 000031
【０３２５】
Ｓａｌｇij：第ｉ成分の第ｊサブブロックのアラインメント値であり、当該成分のためのＡａｌｇiの値が”カスタム・アラインメント"であるときにのみ用いられる。この数は、どのカスタム・アラインメントが選ばれるかにより８ビット又は１６ビットであり、また、当該成分に関し、画像のあらゆる周波数帯域のために順番に繰り返される。（バイナリ方式に関しては、Ｓａｌｇijは第ｉピラミッドレベルのアラインメント値である）
Ｓａｌｇijが用いられる時には、Ｓａｌｇijと、Ａａｌｇ及びＰａｌｇは各成分毎に１レコードとして繰り返される。
【０３２６】
ｒｅｓ：必要なときに最後に置かれる０の埋め草バイト。
【０３２７】
ＴＬＭタグは、画像中のあらゆるタイルの長さを記述する。各タイルの長さは、ＳＯＴタグの第１バイトから（次のタイルの）次のＳＯＴタグの第１バイト、又はＥＯＩ（画像の終わり）までを測った長さである。言い換えれば、この長さはタイルへのポインタのリスト又はデイジーチェーンである。
【０３２８】
符号ストリームは、単一のＴＬＭタグ又は各タイル毎のＴＴＬタグのいずれかを含むが、その両方は含まない。主ヘッダ中にＴＬＭタグが使用される時には、ＴＬＴタグは用いられない。逆に、各タイルがＴＬＴタグで終わるときには、ＴＬＭタグは用いられない。ＴＬＭヘッダ中の個々のタイル長の値は、ＴＬＭが使われないとしたならば対応ＴＬＴタグのために用いられるであろう値と同じである。ＴＬＭタグの長さは、画像中のタイル数に依存する。図３７はタイル長・主ヘッダのシンタックスの一例を示す。
【０３２９】
ＴＬＭ：表１１に、タイル長・主ヘッダパラメータのサイズと値を示す。
【０３３０】
【表１１】
2005218124.tif 000032
【０３３１】
Ｌｔｌｍ：マーカーを含めない、バイト数で表したタグの長さ（偶数である）。
【０３３２】
Ｐｔｌｍｉ：第ｉタイルのＳＯＴマーカーから次のＳＯＴ（又はＥＯＩ）マーカーまでのバイト数で表した長さ。これは、画像中のあらゆるタイルのために繰り返される。
【０３３３】
ＴＬＴタグはカレント・タイルの長さを記述するが、この長さは、ＳＯＴタグの第１バイトから次のタイルのＳＯＴタグの第１バイトまで（又はＥＯＩまで）を測った長さである。言い換えれば、ＴＬＴは次のタイルへのポインタである。ＴＬＴシンタックスの一例を図３８に示す。
【０３３４】
ＴＬＭタグかＴＬＴタグのいずれかが必要とされ、両方は必要とされない。ＴＬＴタグは、使用される時には、全てのタイルヘッダに必要とされ、そしてＴＬＭタグは使われない。これらのタイル長の値は両マーカーとも同一である。
【０３３５】
ＴＬＴ：表１２に、タイル長・タイルヘッダパラメータのサイズと値を示す。
【０３３６】
【表１２】
2005218124.tif 000033
【０３３７】
Ｌｔｌｔ：マーカーを含めない、バイト数で表したタグの長さ（偶数である）。
【０３３８】
Ｐｔｌｔ：タイルのＳＯＴマーカーから次のＳＯＴマーカー（又はＥＯＩマーカー）までの長さ（バイト数）。
【０３３９】
ＣＰＴタグは、ＳＯＴの第１バイトより、タイル中の第１成分以外のすべての成分の第１バイトを指し示す。成分符号化データは各タイル内にノンインターリーブ形式で配置され、８ビット境界から始まる。この点でエントロピー・コーダはリセットされる。
【０３４０】
画像が２つ以上の成分を含むときに、このタグはあらゆるタイルのタイルヘッダに使用される。この可変長タグのサイズは、画像中の成分数に依存する。成分ポインタのシンタックスの一例を図３９に示す。
【０３４１】
ＣＰＴ：表１３に、成分ポインタのパラメータのサイズと値を示す。
【０３４２】
【表１３】
2005218124.tif 000034
【０３４３】
Ｌｃｐｔ：マーカーを含めない、バイト数で表したタグの長さ（偶数である）。
【０３４４】
Ｐｃｐｔi：カレント・タイルのＳＯＴタグから次の成分の始まりまでのバイト数。第１成分のデータはＳＯＳタグの直後に始まるため、Ｐｃｐｔ値の数は成分数より小さい。新たな成分データは８ビット境界上で始まる。
【０３４５】
ＩＲＳタグは、カレント・タイルのＳＯＴタグの第１バイトよりデータ中のリセットを指し示す。これらのリセットは、符号化が完了した重要レベルの終わりの後の８ビット境界に見出される。リセットが生じる点の成分は、ＣＰＴタグ値とリセット・ポインタとの間の関係によって決定できる。このタグの長さは、復号化器に利用されたリセットの数に依存する。重要性レベル・リセット・シンタックスの一例を図４０に示す。
【０３４６】
ＩＲＳ：表１４に重要性レベル・リセットのパラメータのサイズと値を表す。
【０３４７】
【表１４】
2005218124.tif 000035
【０３４８】
Ｌｉｒｓ：マーカーを含めない、バイト数で表したタグの長さ（偶数である）。
【０３４９】
Ｉｉｒｓi：第ｉリセットでのカレント重要性レベルの番号。このＩｉｒｓタグと、対応したＰｉｒｓタグとが一種のレコードを形成し、これは各リセット毎に繰り返される。これらのレコードは、リセットを持つ最も高い重要性レベルからリセットを持つ最低の重要性レベルへと続き、その次の成分の重要性レベルのものが続き、同様にして最後の成分まで続く順序である。
【０３５０】
Ｐｉｒｓi：カレント・タイルのＳＯＴタグから第ｉリセットのバイトまでのバイト数。このＰｉｒｓタグとＩｉｒｓタグとが一種のレコードを形成し、これは各リセットに対し繰り返される。これらのレコードは、最小のポインタから最大のポインタへの順序でなければならない。すなわち、これらのレコードは、各リセットバイトを符号ストリーム中で出現した順に指し示す（数が小さくなるほど、物理的には先に出現するバイトを指す）。
【０３５１】
特定の情報タグがもっぱら情報目的のために含まれる。これらの情報タグは、復号化器のためには必要ではないが、パーサの助けとなろう。
【０３５２】
例えば、ＶＥＲタグはメジャー・バージョン番号及びマイナー・バージョン番号を記述する。このタグは、主ヘッダに使われる。このタグは、規定されてはいるが、画像の復号化に必要とされる機能レベルを意味しない。実は、その目的は、あらゆる復号化器及びパーサを、本発明のどのバージョンの符号ストリームも復号化及び構文解析できるようにすることである。本発明のバージョン番号のシンタックスの一例を図４１に示す。
【０３５３】
ＶＥＲ：表１５にバージョン番号パラメータのサイズと値を示す。
【０３５４】
【表１５】
2005218124.tif 000036
【０３５５】
Ｌｖｅｒ：マーカーを含めない、バイト数で表した卓の長さ（偶数である）。
【０３５６】
Ｖｖｅｒ：メジャー・バージョン番号。
【０３５７】
Ｒｖｅｒ：マイナー・バージョン番号。
【０３５８】
ＢＶＩタグは、画像幅を基準にして、ビットの数を重要性レベルに関連付ける。このオプションのタグは、主ヘッダに用いられる。この可変長タグのサイズは、符号化器によって数え上げられた重要性レベルの数に依存する。ビット対重要性レベル・シンタックスの一例を図４２に示す。
【０３５９】
ＢＶＩ：表１６に、タイル長主ヘッダ・パラメータのサイズと値を示す。
【０３６０】
【表１６】
2005218124.tif 000037
【０３６１】
Ｌｂｖｉ：マーカーを含めない、ビット数で表したタグの長さ（偶数である）。
【０３６２】
Ｃｂｖｉi：これは、どの成分データが記述されるのか知らせる。このＣｂｖｉパラメータはＩｂｖｉ及びＰｂｖｉと共に、１レコードを形成し、これは記述されたすべての成分及び重要性レベルについて繰り返される。最初の成分の全ての重要性レベル記述、次の成分の全ての重要性レベル記述、等々と続くような順序でなければならない。
【０３６３】
Ｉｂｖｉi：カレント成分において、Ｐｂｖｉi内のバイト数につき符号化された重要性レベルの番号。この番号（１つ又は複数）は、レート・歪み曲線の関心点を伝えるために符号化時に選択される。このＩｂｖｉパラメータはＣｂｖｉ及びＰｂｖｉとともに１レコードを形成し、これは記述されたすべての成分及び重要性レベルについて繰り返される。
【０３６４】
Ｐｂｖｉi：主ヘッダとタイルヘッダ、及び、Ｉｂｖｉi内の重要性レベルの数に関連した全てのデータを含む符号化ファイル中のバイト数。このＰｂｖｉパラメータはＣｂｖｉ及びＩｂｖｉとともに１レコードを形成し、これは記述されたすべての成分及び重要性レベルについて繰り返される。
【０３６５】
ｒｅｓ：必要なときに最後に置かれる０の埋め草バイト。
【０３６６】
ＩＬＬタグは、符号化データの重要性レベルの終わりに対応した符号ストリームへのポインタを記述する。ＩＬＬタグは、ＩＲＳタグと似ているけれども、リセットも８ビット境界へのビット挿入もないデータを指し示す。このタグにより、パーサは、画像幅基準でほぼ同じひずみのタイルを見つけて打ち切ることが可能になる。このタグは、オプションであり、タイルヘッダ中でだけ使われる。このタグの長さは、数え上げられた重要性レベルの数に依存する。重要性レベル・ロケータのシンタックスの一例を図４３に示す。
【０３６７】
ＩＬＬ：マーカー。表１７に、重要性レベル・ロケータのパラメータのサイズと値を示す。
【０３６８】
【表１７】
2005218124.tif 000038
【０３６９】
Ｌｉｌｌ：マーカーを含めない、バイト数で表したタグの長さ（偶数である）。
【０３７０】
Ｉｉｌｌi：Ｐｉｌｌi内のバイト数に関し符号化される重要性レベルの番号。それら番号はそれぞれ、レート・歪み曲線の関心点を伝達するため符号化時に選択される。このＩｉｌｌ番号はＰｉｌｌパラメータと共に１レコードを形成するが、これは最も速い成分において最高重要度レベルから最低重要性レベルへの順に繰り返され、以下、後の成分における重要な最高重要性レベルから最低重要性レベルまでを特定する同様レコードが続く。
【０３７１】
Ｐｉｌｌi：カレント・タイルのＳＯＴの第１バイトより、当該タイルの符号化データ中のＩｉｌｌiの重要性レベルが完了するバイトを指し示す。このＰｉｌｌ数はＩｉｌｌパラメータと共に１レコードを形成し、これは最も速い成分において最高の重要性レベルから最低の重要性レベルへの順に繰り返され、以下、後の成分における重要な最高重要性レベルから最低重要レベルまでを特定する同様レコードが続く。
【０３７２】
ＲＸＹタグは、実寸法に関する画像基準格子のＸ解像度及びＹ解像度を定義する。このタグは主ヘッダにのみ用いられる。解像度（画素／単位）のシンタックスの一例を図４４に示す。
【０３７３】
ＲＸＹ：表１８に、解像度（画素／単位）を指定するためのパラメータのサイズと値を示す。
【０３７４】
【表１８】
2005218124.tif 000039
【０３７５】
Ｌｒｘｙ：マーカーを含めない、バイト数で表したタグの長さ（偶数である）。
【０３７６】
Ｘｒｘｙ：単位あたりの基準格子画素数。
【０３７７】
Ｙｒｘｙ：単位あたりの基準格子ライン数。
【０３７８】
ＲＸｒｘｙ：Ｘ次元の単位。したがって、水平方向の解像度は、Ｘｒｘｙ格子画素／１０（ＲＸｒｘｙ−１２８）メートルである。
【０３７９】
ＲＹｒｘｙ：Ｙ次元の単位。したがって、垂直方向の解像度はＹｒｘｙ格子ライン／１０（ＲＹｒｘｙ−１２８）メートルである。
【０３８０】
ＣＭＴタグはヘッダ内の非構造化データを許す。このタグは、主ヘッダとタイルヘッダのいずれにも使用できる。このタグの長さは、コメントの長さに依存する。コメントのシンタックスの一例を図４５に示す。
【０３８１】
ＣＭＴ：表１９にコメント・パラメータの大きさと値を示す。
【０３８２】
【表１９】
2005218124.tif 000040
【０３８３】
Ｌｃｍｔ：マーカーを含めない、バイト数で表したタグの長さ（偶数である）。
【０３８４】
Ｒｃｍｔ：タグのレジストレーション（registration）値。表２０に、レジストレーション・パラメータの値を示す。
【０３８５】
【表２０】
2005218124.tif 000041
【０３８６】
Ｃｃｍｔｉ：非構造化データのバイト。任意に繰り返される。
【０３８７】
ｒｅｓ：必要なときに、最後に置かれる０の埋め草バイト。
【０３８８】
ＱＣＳタグは、量子化符号データがどこまで量子化済みかを記述する。パーサ又は符号化器により量子化が実行される時に、このタグは、符号化器が、重要性レベルに関しどこまで符号化すべきかを大まかに判断するのを助ける。このタグは、オプションであり、タイルヘッダにのみ使用される。量子化符号ストリームのシンタックスの一例を図４６に示す。
【０３８９】
ＱＣＳ：表２１に、量子化符号ストリームのパラメータのサイズと値を示す。
【０３９０】
【表２１】
2005218124.tif 000042
【０３９１】
Ｌｑｃｓ：マーカーを含めない、バイト数で表したタグの長さ（偶数である）。
【０３９２】
Ｃｉｌｌi：カレント成分の番号。このＣｉｌｌ番号はＩｑｃｓとともに１レコードを形成し、これは最も速い成分における最高重要性レベルから最低重要性レベルへの順に繰り返され、以下、後の成分における重要な最高重要性レベルから最低重要レベルまでを特定する同様レコードが続く。
【０３９３】
Ｉｑｃｓi：これは、符号化データの少なくとも一部分が残っている重要性レベルである。当該点から次のリセットまでに残っているデータは全て、打ち切り済み（量子化済み）である。
【０３９４】
ｒｅｓ：必要に応じて最後に置かれる０の埋め草バイト。
【０３９５】
損失性係数再構成
本発明は、一実施例において、値を所定の整数値の集合に丸めることで損失性再構成を行う。例えば、０と３１の間の全ての係数は０に量子化され、３２〜６３の間の全ての係数は３２に量子化される等々である。図４７は、量子化しないときの係数の代表的分布を示す。各係数の最も下のビットが分かっていない場合に、そのような量子化が行われるかもしれない。別の実施例では、各値域の中央の値が、その係数群を表すより正確な値を提供するかもしれない。例えば、６４と１２７の間の全ての係数が９５に量子化される。値がある点へ量子化されるとき、その点は再構成点と呼ばれる。
【０３９６】
画像間の差異により、得られる分布は形がゆがむ。例えば、図４７中の曲線２７０１と曲線２７０２を比較されたい。
【０３９７】
本発明においては、再構成点は、その分布に基づいて選ばれる。一実施例では、分布が推定され、その推定分布に基づき再構成点が選ばれる。推定分布は、既に分かったデータに基づき生成される。データを収集する以前は、デフォルトの再構成点が用いられるであろう。このように、本発明は、適応的な損失性再構成方法を提供する。さらに、本発明は、係数再構成を改善する非反復の方法である。分布の差異によって値域の使用が不均一になることを補償するため、本発明は次のように規定する。
【０３９８】
【数２０】
2005218124.tif 000043
ただし、２Sは利用できるデータを基に復号化器により測定された標本分散であり、Ｑは復号化器に知らされた量子化である。次に、非ゼロ係数を０から遠ざけることによって、それを修正する。
【０３９９】
【数２１】
2005218124.tif 000044
ただし、ｉは任意の整数である。
【０４００】
一実施例では、全部の復号化が完了した後に、非ゼロ係数はすべて、ある再構成レベルに調整される。この調整をするためには、各係数を読み込み、恐らく修正し、そして書き込むことが必要である。
【０４０１】
別の実施例では、各係数の各ビットプレーンが処理される時に、その係数が非ゼロならば、その係数の適当な再構成値が記憶される。復号化が止まった時に、全係数がそれらの適当な再構成値に設定される。こうすることにより、再構成レベルの設定のため別にメモリを経由する必要がなくなる。
【０４０２】
カラー
本発明は、カラー画像（及びデータ）に適用できる。図１の多成分処理機構１０１は、カラーデータのために必要とされる処理を実行する。例えば、ＹＵＶ色空間には、３つの成分、つまりＹ成分、Ｕ成分、Ｖ成分があり、各成分は別々に符号化される。
【０４０３】
一実施例では、各成分のエントロピー符号化データは、他の成分のエントロピー符号化データから分離される。この実施例においては、成分のインターリービングはない。成分別にデータを分けることは、ピラミッド・アラインメントと組み合わされると、復号化器又はパーサが異なった成分を容易に別々に量子化できるようにするのに役立つ。
【０４０４】
他の実施例では、異なった成分のエントロピー符号化データが周波数帯域単位又は重要性レベル単位でインターリーブされる。これは、ＭＳＥアラインメントと組み合わされると、共通の打ち切りを全成分のデータの量子化に利用できるので有益である。このインターリービング方式のためには、符号化器が異なった成分の周波数帯域間又は重要性レベル間の関係を提供する必要がある。周波数帯域又は重要性レベルはかなり大量の符号化データであろうから、パーサ又は復号化器はマーカーを利用し成分を独立に量子化できるであろう。
【０４０５】
さらに別の実施例では、異なった成分のエントロピー符号化データは、画素毎又は係数毎にインターリーブされる。これは、ＭＳＥアラインメントと組み合わされると、全成分に共通の打ち切りが作用するので有益である。画素単位のインターリービングの場合、復号化器及びパーサは符号化器で定義されのと同じ成分間関係を利用しなければならない。
【０４０６】
本発明によれば、同じシステムでサブサンプリングを実行できる。
【０４０７】
一実施例では、各成分は別々に記憶される。伸長装置及びパーサを使うことにより、損失性出力画像を生成する時には、別々の成分メモリのそれぞれから分解レベル及び成分の選択されたものだけが取得されるであろう。例えば、ＹＵＶ色空間において、Ｙ色成分については分解レベルの全部が取得されるであろうが、Ｕ成分とＹ成分については第１分解レベル以外の分解レベルがすべて取得されるであろう。結果として得られる画像の組合せは、４：１：１画像である。なお、メモリに格納されているデータの異なった部分を用いることにより、別の型式の画像を得ることもできる。
【０４０８】
多くの型式の多成分画像を処理可能である。画像データは、ＹＵＶのほかに、ＲＧＢ（赤、緑、青）、ＣＭＹ（シアン、マゼンタ、黄）、ＣＭＹＫ（シアン、マゼンタ、黄、黒）又はＣＣＩＲ601 ＹＣｒＣｂでもよい。多重スペクトル画像データ（例えば、リモートセンシング・データ）も用い得る。ＲＧＢやＣＭＹのような視覚的データに対しては、米国特許出願第０８／４３６，６６２号（１９９５年５月８日受理、“Ｍethod  and  Ａpparatus  for  Ｒeversible  Ｃolor  Ｃompression”に述べられているような非損失性色空間変換を利用できる。
【０４０９】
ビット抽出
本発明は、ビット抽出を高めるようにコンテキストモデルを計算しビットを符号化することができる。具体的には、ヘッドビットのためのコンテキストモデルは、隣接画素より与えられる情報を基礎にしている。しばしば、特に損失性圧縮を行う時に、このコンテキストは０である。ヘッドビット・コンテキストの近似統計量のため、本発明はヘッドビットのためのコンテキストを保持する機構を提供する。
【０４１０】
一実施例では、符号化に先だってメモリがクリアされる。コンテキストは、その親、隣接画素の一つ、又は注目画素が変わるまで、そのままである。変化した時に、影響を受ける全てのコンテキストに関しコンテクスト・メモリが更新される。テール情報を利用するときには、隣接画素と子だけが更新される。ヘッドビットがオンの時に１係数につき１度だけメモリが更新される。
【０４１１】
一実施例では、各係数は、符号(sign)の１ビット、テールオン情報の４ビット、コンテキストの８ビット、その後に続く係数の１９ビットからなる３２ビット整数として記憶される。係数の一例を図４８に示す。
【０４１２】
一実施例では、テールオン情報の４ビットを利用して５つの異なったケースを生成する。
【０４１３】
テールオン情報の４ビットの値が０のケースにおいては、カレント係数の絶対値ビットのカレント・ビットプレーンのビットは、コンテキストビットを利用して符号化される。該ビットが０ならば、プロセスは終了する。該ビットが１ならば、係数の符号が符号化される。それから、テールオン情報の第１ビットが反転され、北、北東、西、南、東及び４つの子のコンテキストが更新され、プロセスは終了する。
【０４１４】
テールオン情報の４ビットの値が１のケースにおいては、カレント係数の絶対値ビットのカレント・ビットプレーンのビットは当該ケースのための一定のコンテキストを使って符号化される。テールオン情報の第２ビットが反転される。カレント係数の東と子のコンテキストが更新される。プロセスは終了する。
【０４１５】
テールオン情報の４ビットの値が７のケースにおいては、カレント係数の絶対値ビットのカレント・ビットプレーンのビットは当該ケースのための一定のコンテキストを使って符号化される。テールオン情報の第３ビットが反転される。どのコンテキストも更新不要である。プロセスは終了する。
【０４１６】
テールオン情報の４ビットの値が３のケースにおいては、カレント係数の絶対値ビットのカレント・ビットプレーンのビットは、当該ケース用の一定のコンテキストを用いて符号化される。テールオン情報の第４ビットが反転される。カレント係数の東と子のコンテキストが更新される。プロセスは終了する。
【０４１７】
テールオン情報の４ビットの値が１５のケースにおいては、カレント係数の絶対値ビットのカレント・ビットプレーンのビットは、当該ケースのための一定のコンテキストを使って符号化される。テールオン情報のどのビットも反転不要である。プロセスは終了する。
【０４１８】
図４８は本発明の係数の例を示す。図４８において、係数２８０１は、符号ビット２８０２と、それに続くテールネオン情報ビット２８０３、それに続くコンテキストビット２８０４、それに続く係数絶対値ビット２８０５とからなる。前述のプロセスが図４９のフローチャートに示されている。
【０４１９】
変化が生じた時に全コンテキストを更新する当該手法を使うことにより、ヘッドビットが圧倒的に０である限り、コンテキスト・モデリングが高速に働く。特に損失性符号化の場合にそうである。
【０４２０】
可逆ウェーブレット係数のハフマン符号化
本発明は、一実施例において、ハフマン符号化を使ってウェーブレット係数を符号化する。ハフマン符号化のためのアルファベットは２つの部分からなる。第１の部分は０係数のランの長さに等しく、第２の部分は０でないターミネータ（terminator）係数のハッシュ値である。図５３にアルファベット・フォーマットを示すが、これは０係数の数、換言すれば、そのランの長さを示す４ビットと、それに続く０から１５までのハッシュ値を表す４ビットとからなる。
【０４２１】
このハッシュ値は値Ｎであり、このＮは０でないターミネータ係数の絶対値の、２を底とする対数の整数部分である。一実施例では、このハッシュ値は値Ｎを表すのに必要なビット数である。例えば、Ｎ＝−１，１の場合、ハッシュ値は１である。他方、Ｎ＝−３，−２，２，３の場合、値Ｎを表すのに必要なビット数は２である。同様の対応はＪＰＥＧに用いられている。
【０４２２】
このようなシチュエーションでは、許容される０係数のランの最大長は１５である。ランが１５を超えるときには、０が１６個のランの後に新たなランが続くことを表すため特殊なトークンが使われるであろう。このような例外トークンの一つは、最初の４ビットと最後の４ビットの両方とも全部０である。一実施例では、２番目の４ビットが０の１６個のトークンが全部、例外ケースのために用いられる。したがって、２５６個の８ビットのハフマン・トークンがある。
【０４２３】
一実施例では、ハフマン・トークンに関するテーブルが作られる。一実施例では、そのテーブルが全ての画像に対して用いられる。別の実施例では、多くのテーブルが作成され、量子化に応じて１つの特定のテーブルが選ばれる。各テーブルは、量子化しようとするビット数に基づいて選択される。すなわち、量子化するビット数が１ビット、２ビット、３ビット等々であるかによって、テーブルがそれぞれ選択されるわけである。別の実施例では、ハフマン符号は特定画像向けのものであり、画像と一緒に記憶／伝送される。
【０４２４】
テーブルを利用するために、一つのハフマン・トークンが生成される。そして、このトークンが、それが符号化されるテーブルに送られる。
【０４２５】
ハフマン・トークンは０のランの長さ及び非０のターミネータ・シンボルのハッシュ値を特定するが、ターミネータ・シンボルを一意的に特定するために割増のビットが必要になる。本発明の一実施例は、これら割増ビットを用意する。ハフマン・トークンが（例えばテーブル等から得られる）ハフマン符号語で置き換えられた後、ターミネータ・シンボルのハッシュ値に等しい割増ビットが書かれる。例えば、−１，１のケースでは割増の１ビットが書かれるが、−３，−２，２，３のケースにおいては割増の２ビットが書かれる。このように、本発明は、ターミネータ・シンボルを一意的に特定する、割増ビットによってサイズが可変のハフマン符号化を提供する。
【０４２６】
なお、他のｍ元コーダを用いてもよい。例えば、あるアルファベットとｍ元符号を０係数のために用い、別のアルファベットとｍ元符号をハッシュ値のために用いてもよい。
【０４２７】
一実施例では、量子化レベル毎のハフマン・テーブルのセットが予め計算され、殆どの画像に対して利用される。様々なテーブル間で選択するために、あるテーブルを使用中に圧縮がモニタされるであろう。そのテーブルを使用した結果に基づいて、スキューがもっと大きい又は小さいテーブルへの切り替えが行われるであろう。
【０４２８】
本発明の係数はすべて、あるバッファに入れられる。各バッファ毎に、どのテーブルを使用すべきかの決定がなされるであろう。８つのハフマン・テーブルのどれを利用すべきか指示するため、３ビットと１つのヘッダが用いられるかもしれない。しかして、そのヘッダを知らせることによって、テーブル選択がなされるであろう。
【０４２９】
係数が符号化される順序は重要である。従来技術の係数符号化では、例えばＪＰＥＧでは、係数はジグザグ順に圧縮されることに注意されたい。本発明においては、係数全部があるバッファ内にあるので、ジグザグ順にすることはできない。ジグザグ順は、低い周波数から高い周波数への順序と理解されるなら、埋め込みウェーブレットによる圧縮（ツリー順）に拡張することができる。
【０４３０】
一実施例では、バッファ全体について直線的な順序で係数が符号化される。そのような例を図５４に示す。なお、この実施例において、平滑係数の最初のブロックは除外されることに注意されたい。
【０４３１】
別の実施例では、すべてのブロックは、低い周波数のブロックより高い周波数のブロックへと、ラスター順に符号化される。そのような例を図５４（Ｂ）に示す。メモリの制約のため、１つの周波数パスの全部は、別の周波数パスが始まる前に完了しないかもしれない。メモリによって制限される場合、もう一つの方法は１つのツリーを一度に符号化する方法である。ルートから初めて、すべてのツリーが横方向に符号化される。ただし、平滑係数であるところのルートは含めない。この方法が図５４（Ｃ）に示されている。図５４（Ｃ）には最初のツリーが示されており、最初のサブブロックのセットより１ラインが取られ、その次のサブブロックのセットより２ラインが取られ、その次のサブブロックのセットより４ラインが取られる。これらラインは他のラインが利用可能になる以前に利用可能であるため、このような実施例が可能である。
【０４３２】
残りのツリーが０係数からなることを示すため、例外トークンを保存してもよい。これは、１６個の０を示す同じトークンが何度も何度も使用されないようにする。
【０４３３】
一実施例では、全ての重要性レベルがハフマン符号化によって符号化される。別の実施例では、複数の重要性レベルからなる１又は複数のグループがハフマン符号化によって符号化される。別々のグループ毎に全ての重要性レベルをハフマン符号化により符号化してもよいし、あるいは、一部の重要性レベルをハフマン符号化で符号化し、残りの重要性レベルを水平コンテキストモデルとバイナリ・エントロピー・コーダにより符号化してもよい。
【０４３４】
重要性レベルの１グループのハフマン符号化による符号化は、以下のように行われる。そのグループ内の重要性レベルの係数のビットが全てヘッドビットのときには、その係数は０係数として（多分、ラン・カウントの一部として）ハフマン符号化される。その係数のビットが全てテールビットならば、それらビットは（多分、ランを終結させる）割増ビットとして符号化される。ハフマン符号語は使われない。その係数のビットが（ヘッドビット又はテールビットのほかに）に符号(sign)ビットを含んでいるときには、（多分、ランを終結させる）ハフマン符号語と割増ビットの両方が符号化される。
【０４３５】
複数の重要性レベルをハフマン符号化すれば、実行コストは減少する。しかし、ハフマン符号化データの中途での打ち切りは、レート・歪みの悪化を招く。重要性レベルのグループをハフマン符号化すれば、レート・歪みが良好になるようグループの始まり／終わりでの打ち切りが可能になる。用途によっては、限定数の必要とされる量子化点が符号化時に分かっている。量子化点のない重要性レベルは、それに続くレベルと一緒にしてハフマン符号化することができる。
【０４３６】
用途
本発明は多くの用途に利用できる。そのような用途のいくつかを例として以下に述べる。具体的には、解像度が高く画素深度が大きいハンエンドの用途及びアーティファクト(artifact)を許容しない用途に、本発明を利用できる。本発明によれば、ハイエンドの用途は高品質環境で最高品質を維持でき、同時に、帯域幅、データ記憶又は表示機能がさらに制限される用途でも同じ圧縮データを利用可能である。これはまさに、ウェブ・ブラウザのような近頃の画像応用分野に一般に要求される装置独立な表現である。
【０４３７】
画素深度の深い画像（１０ビット〜１６ビット／画素）に対する本発明の優れた非損失圧縮性能は、医用画像のために理想的である。非損失性圧縮のみならず、本発明は、ブロックベース圧縮装置に知られている多くのアーティファクトのない真の損失性圧縮装置である。本発明を利用することに由来する損失性アーティファクトは、急峻なエッジに沿う傾向があるので、人間の視覚系の視覚マスキング現象によって見えないことが多い。
【０４３８】
本発明は、画像が非常に高解像度で高い画素深度を持つことの多いプリプレス(pre-press)業に関連した用途に利用できる。本発明のピラミッド分解によれば、プリプレス・オペレータが（モニタ上の）画像の低解像度損失性バージョンに対し画像処理操作を行うのが容易である。操作が終わったならば、同じ操作を非損失性バージョンに対して実行できる。
【０４３９】
本発明は、圧縮しないと送信に要する時間があまりに長くなりやすいファクシミリ文書の用途にも適用可能である。本発明によれば、様々な空間解像度及び画素解像度のファクス装置より、非常に高品位の画像出力が可能になる。
【０４４０】
本発明は、圧縮を必要とする画像アーカイブシステムに、特に記憶容量を増加させるために、利用することもできる。本発明の装置独立な出力は、帯域幅が異なる資源、メモリ及びディスプレイを持つシステムにより画像アーカイブシステムをアクセスでき、有益である。本発明のプログレッシブ伝送機能は、ブラウジングのためにも有益である。最後に、画像アーカイブシステムの出力装置用に望ましい非損失性圧縮が本発明により提供される。
【０４４１】
本発明の非損失性又は高品質損失性データストリームの階層プログレッシブ性により、本発明はワールド・ワイド・ウェブ用に、特に装置独立性、プログレッシブ伝送及び高品質が必須な場合に理想的である。
【０４４２】
本発明は、衛星画像、特に高画素深度及び高解像度になる傾向のある衛星画像にも適用できる。さらに、衛星画像の用途は通信路の帯域幅が制限される。本発明はフレキシビリティがあり、またプログレッシブ伝送特性があるので、本発明を利用すれば人間による画像のブラウジング又はプレビューが可能になろう。
【０４４３】
ＡＴＭネットワークのような“固定レート”で帯域幅が制限される用途は、データが利用可能な帯域幅をオーバーフローしたときにデータを減少させる手段を必要とする。しかしながら、十分な帯域幅があるときには（あるいはデータが高度に圧縮可能なときには）、品質上の不利益があってはならない。同様に、コンピュータや他の画像装置におけるメモリが制限されたフレーム記憶装置のような“固定サイズ”の用途も、メモリが満杯になったときにデータを減少させる手段を必要とする。繰り返すが、適当なメモリ量に非損失圧縮することが可能な画像に対して不利益があってはならない。
【０４４４】
本発明の埋め込み符号ストリームは、これら両方の用途にかなう。埋め込み操作は、損失性画像の伝送又は記憶のために符号ストリームが切り捨てもしくは打ち切りされることを無条件に許す。切りつめもしくは打ち切りが必要でなければ、画像は非損失で届く。
【０４４５】
要するに、本発明は、単一連続階調画像圧縮システムを提供する。本発明のシステムは、同じ符号ストリームに対して非損失性かつ損失性であり、埋め込みの量子化（符号ストリームに含まれる）を利用する。本発明のシステムはまた、ピラミッド型であり、プログレッシブであり、補間手段を提供し、かつ、実施が容易である。したがって、本発明はフレキシブルな“装置独立の”圧縮システムを提供する。
【０４４６】
統合型の損失性及び非損失性圧縮システムは非常に有用である。同じシステムで最新の損失性及び非損失性圧縮を実行でき、その上、同じ符号ストリームである。このシステムは、画像の非損失性符号を保存するか打ち切って損失性バージョンにするかを、符号化中、符号ストリームの格納又は伝送中あるいは復号化中に決定することができる。
【０４４７】
本発明により提供される損失性圧縮は、埋め込み量子化によって達成される。すなわち、符号ストリームは量子化を含んでいる。実際の量子化（又は視覚的重要性）レベルは、復号化器又は通信路との相関点要素であることもあり、必ずしも符号化器との相関的要素ではない。バンド幅、記憶及びディスプレイ資源が許すなら、画像は非損失で復元される。そうでないならば、画像は最も制約された資源に要求されるだけ量子化される。
【０４４８】
本発明に用いられるウェーブレットはピラミッド型であり、差分画像のない、画像の１／２分解が実行される。これは非常に特殊な階層分解である。画像のブラウジングのため又は低解像度装置による表示のために縮小画像(thumbnails)を必要とする用途に、本発明のピラミッド性は理想的である。
【０４４９】
本発明における埋め込みの使い方はプログレッシブであり、より具体的にはビットプレーン順である、すなわちＭＳＢの後に下位ビットが続く順である。具体的には本発明はウェーブレット領域においてプログレッシブであるが、空間領域及びウェーブレット領域の両方ともプログレッシブに分解してもよい。プリンタのような、空間解像度はあるが画素解像度は低い用途にとって、本発明におけるビットのプログレッシブな順序づけは理想的である。これらの特徴を同一符号ストリームで得られる。
【０４５０】
本発明は、ソフトウエアでもハードウエアでも比較的容易に実施できる。ウェーブレット変換は、ハイパス、ローパスの各係数ペアにつき４つの加算／減算操作と、いくつかのシフトだけで計算することができる。埋め込み及び符号化は、単純な”コンテキストモデル”とバイナリ又はｍ元”エントロピー・コーダ”によって実行される。このエントロピー・コーダは、有限状態マシン、並列コーダ又はハフマン・コーダによって実現できる。
【図面の簡単な説明】
【０４５１】
【図１】本発明の圧縮システムの一実施例のブロック図である。
【図２】バイナリ方式における各ビットプレーンの各ビットに対するコンテキストモデルの可能な幾何学的関係の一例を示す図である。
【図３】バイナリ方式における各ビットプレーンの各ビットに対するコンテキストモデルの可能な幾何学的関係の一例を示す図である。
【図４】第１レベルの分解を示す図である。
【図５】第２レベルの分解を示す図である。
【図６】第３レベルの分解を示す図である。
【図７】第４レベルの分解を示す図である。
【図８】前後２レベル間の親子関係を示す。
【図９】ＴＴ変換だけを利用するウェーブレット分解過程の一例を示す図である。
【図１０】ＴＴ変換とＳ変換を利用するウェーブレット分解過程の一例を示す図である。
【図１１】画像のタイリングの説明図である。
【図１２】ビット・シグニフィカンス表現の例を示す図である。
【図１３】本発明における係数サイズを示す図である。
【図１４】本発明における係数アラインメントのために使われる周波数帯域用乗数の例を示す図である。
【図１５】符号ストリームの構成の一例を示す図である。
【図１６】係数（又は画素）間の隣接関係を示す図である。
【図１７】テール・ビット処理プロセスのフローチャートである。
【図１８】本発明の符号化プロセスの一例のフローチャートである。
【図１９】本発明の復号化プロセスの一例のフローチャートである。
【図２０】本発明のモデリング・プロセスのフローチャートである。
【図２１】モデリング・プロセスに利用可能なテンプレートを示す図である。
【図２２】ＴＴ変換フィルタの一部分の一例を示すブロック図である。
【図２３】本発明のスクロール・バッファの説明図である。
【図２４】本発明に採用されるメモリ操作の説明図である。
【図２５】３レベル用メモリ・バッファの２次元表現を示す図である。
【図２６】本発明の符号ストリームの一例を示す図である。
【図２７】パーサを備えた圧縮システムのブロック図である
【図２８】図２７の圧縮システムに対応する伸長システムのブロック図である。
【図２９】コンテキスト従属関係を示す図である。
【図３０】画素深度及び空間解像度の面から定義された用途を示す図である。
【図３１】パーサ、復号化器及びそれらの出力装置との相互作用の一例を示すブロック図である。
【図３２】量子化選択装置の一例を示すブロック図である。
【図３３】符号ストリーム中の区切りタグの配置を示す図である。
【図３４】ＳＩＺタグの説明図である。
【図３５】ＣＯＤタグの説明図である。
【図３６】ＡＬＧタグの説明図である。
【図３７】ＴＬＭタグの説明図である。
【図３８】ＴＬＴタグの説明図である。
【図３９】ＣＰＴタグの説明図である。
【図４０】ＩＲＳタグの説明図である。
【図４１】ＶＥＲタグの説明図である。
【図４２】ＢＶＩタグの説明図である。
【図４３】ＩＬＬタグの説明図である。
【図４４】ＲＸＹタグの説明図である。
【図４５】ＣＭＴタグの説明図である。
【図４６】ＱＣＳタグの説明図である。
【図４７】損失性再構成のための典型的分布を示すグラフである。
【図４８】典型的な係数を示す図である。
【図４９】テール情報解析プロセスのフローチャートである。
【図５０】ＭＳＥアラインメント法を説明するための図である。
【図５１】ピラミッド・アラインメント法を説明するための図である。
【図５２】メモリ記憶係数とアラインメントの間の典型的な関係を示す図である。
【図５３】符号語の一例を示す図である。
【図５４】ハフマン符号化法による係数の構文解析の方法を説明するための図である。
【図５５】ユニットバッファを用い第２レベルのウェーブレット分解を実行する場合の２Ｄメモリの中間形式を示す図である。
【図５６】ユニットバッファを用い第３レベルのウェーブレット分解を実行する場合の２Ｄメモリの中間型式を示す図である。
【符号の説明】
【０４５２】
１０１  入力画像データ
１０２  可逆ウェーブレット変換ブロック
１０３  埋め込み順序付け量子化ブロック
１０４  グレイ（Ｇｒａｙ）符号化ブロック
１０５  水平コンテキストモデル・ブロック
１０６  エントロピー・コーダ
１１０  方式選択機構
１１１  多成分処理機構
１００１  ヘッダ
１００２  符号化単位
１００３  ＬＬ係数
１００４  第１ビットプレーン
１００５  第２ビットプレーン
１００６  最終ビットプレーン
１５０１  乗算器
１５０２  加算器
１５０３  乗算器
１５０４  乗算器
１５０５  加算器
１６０１  ラインアクセスバッファ
１６０２  バッファ
１９０１  ヘッダ
１９０２  ＬＬ係数
１９０３  エントロピー符号化データ
２１０１  圧縮されていない原画像
２１０２  圧縮装置
２１０３  マーカ付き非損失性圧縮ビットストリーム
２１０４  パーサ
２１０６  通信路又は記憶装置
２１０７  伸長装置
２１０８  伸長画像
２４０１  マーカ付きの非損失性圧縮データ
２４０２  パーサ
２４０３  通信路
２４０４  伸長装置
２４０５  ディスプレイ・モジュール
２５００  符号ストリーム
２５０１  量子化を含む伸長
２５０２  画像処理又は歪みモデル
２５０３  非損失性伸長
２５０４  画像処理又は歪みモデル
２５０５  ＭＳＥ又はＨＶＳ差モデル
２５０６  アラインメント調整
２８０１  係数
２８０２  符号ビット
２８０３  テールオン情報
２８０４  コンテキストビット
２８０５  係数ビット
【図１】
2005218124.tif 000045
【図２】
2005218124.tif 000046
【図３】
2005218124.tif 000047
【図４】
2005218124.tif 000048
【図５】
2005218124.tif 000049
【図６】
2005218124.tif 000050
【図７】
2005218124.tif 000051
【図８】
2005218124.tif 000052
【図９】
2005218124.tif 000053
【図１０】
2005218124.tif 000054
【図１１】
2005218124.tif 000055
【図１２】
2005218124.tif 000056
【図１３】
2005218124.tif 000057
【図１４】
2005218124.tif 000058
【図１５】
2005218124.tif 000059
【図１６】
2005218124.tif 000060
【図１７】
2005218124.tif 000061
【図１８】
2005218124.tif 000062
【図１９】
2005218124.tif 000063
【図２０】
2005218124.tif 000064
【図２１】
2005218124.tif 000065
【図２２】
2005218124.tif 000066
【図２３】
2005218124.tif 000067
【図２４】
2005218124.tif 000068
【図２５】
2005218124.tif 000069
【図２６】
2005218124.tif 000070
【図２７】
2005218124.tif 000071
【図２８】
2005218124.tif 000072
【図２９】
2005218124.tif 000073
【図３０】
2005218124.tif 000074
【図３１】
2005218124.tif 000075
【図３２】
2005218124.tif 000076
【図３３】
2005218124.tif 000077
【図３４】
2005218124.tif 000078
【図３５】
2005218124.tif 000079
【図３６】
2005218124.tif 000080
【図３７】
2005218124.tif 000081
【図３８】
2005218124.tif 000082
【図３９】
2005218124.tif 000083
【図４０】
2005218124.tif 000084
【図４１】
2005218124.tif 000085
【図４２】
2005218124.tif 000086
【図４３】
2005218124.tif 000087
【図４４】
2005218124.tif 000088
【図４５】
2005218124.tif 000089
【図４６】
2005218124.tif 000090
【図４７】
2005218124.tif 000091
【図４８】
2005218124.tif 000092
【図４９】
2005218124.tif 000093
【図５０】
2005218124.tif 000094
【図５１】
2005218124.tif 000095
【図５２】
2005218124.tif 000096
【図５３】
2005218124.tif 000097
【図５４】
2005218124.tif 000098
【図５５】
2005218124.tif 000099
【図５６】
2005218124.tif 000100