(57)【特許請求の範囲】
【請求項１】
画像データの幅及び画像データを構成する１のタイルの高さを記憶するラインと追加の複数のラインとを含むサイズに制限されたメモリと、
前記メモリ内のデータにウェーブレット変換を適用し、ウェーブレット係数を生成するウェーブレット変換手段と、
前記メモリ内のデータを、前記ウェーブレット変換手段へデータを供給するラインバッファに読み出し、且つ、前記ウェーブレット変換手段でウェーブレット変換を適用することで生成されたデータを前記メモリに記憶させるアクセス論理と、
を備え、前記アクセス論理は、
前記メモリから該メモリの第１の対のラインに記憶された第１データを前記ラインバッファに読み出し、
該読み出された第１データに前記ウェーブレット変換手段によりウェーブレット変換を適用することで第２データを生成し、
該第２データのウェーブレット分解レベルが３レベル以下のウェーブレット係数であった場合、前記第１データとは異なる第２の第１データであって、第２データが生成済みである第２の第１データを記憶する第２の対のラインを再使用して前記第２データを記憶し、
該第２データのウェーブレット分解レベルが４レベル以上のウェーブレット係数であった場合、前記画像データの幅及び画像データを構成する１のタイルの高さを記憶するラインの後に設けられた前記追加の複数のラインに前記第２データを記憶することを特徴とするウェーブレット処理論理を有するシステム。
【請求項２】
前記ウェーブレット変換は、前向きウェーブレット変換である
ことを特徴とする請求項１に記載のシステム。
【請求項３】
画像データの幅及び画像データを構成する１のタイルの高さを記憶するラインと追加の複数のラインとを含むサイズに制限されたメモリと、
前記メモリ内のデータにウェーブレット変換を適用し、ウェーブレット係数を生成するウェーブレット変換手段と、
前記メモリ内のデータを、前記ウェーブレット変換手段へデータを供給するラインバッファに読み出し、且つ、前記ウェーブレット変換手段でウェーブレット変換を適用することで生成されたデータを前記メモリに記憶させるアクセス論理と、
を備えたウェーブレット処理システムにおいて、
前記メモリから該メモリの第１の対のラインに記憶された第１データを前記ラインバッファに読み出し、
該読み出された第１データに前記ウェーブレット変換手段によりウェーブレット変換を適用することで第２データを生成し、
該第２データのウェーブレット分解レベルが３レベル以下のウェーブレット係数であった場合、前記第１データとは異なる第２の第１データであって、第２データが生成済みである第２の第１データを記憶する第２の対のラインを再使用して前記第２データを記憶し、
該第２データのウェーブレット分解レベルが４レベル以上のウェーブレット係数であった場合、前記画像データの幅及び画像データを構成する１のタイルの高さを記憶するラインの後に設けられた前記追加の複数のラインに前記第２データを記憶するようにしたことを特徴とするウェーブレット処理システムにおける方法。
【請求項４】
前記ウェーブレット変換は、前向きウェーブレット変換である
ことを特徴とする請求項３に記載の方法。
【請求項５】
画像データの幅及び画像データを構成する１のタイルの高さを記憶するラインと追加の複数のラインとを含むサイズに制限されたメモリと、
前記メモリ内のデータにウェーブレット変換を適用し、ウェーブレット係数を生成するウェーブレット変換手段と、
前記メモリ内のデータを、前記ウェーブレット変換手段へデータを供給するラインバッファに読み出し、且つ、前記ウェーブレット変換手段でウェーブレット変換を適用することで生成されたデータを前記メモリに記憶させるアクセス論理手段と、
を備えたウェーブレット処理システムにおいて、
前記メモリから該メモリの第１の対のラインに記憶された第１データを前記ラインバッファに読み出し、
該読み出された第１データに前記ウェーブレット変換手段によりウェーブレット変換を適用することで第２データを生成し、
該第２データのウェーブレット分解レベルが３レベル以下のウェーブレット係数であった場合、前記第１データとは異なる第２の第１データであって、第２データが生成済みである第２の第１データを記憶する第２の対のラインを再使用して前記第２データを記憶し、
該第２データのウェーブレット分解レベルが４レベル以上のウェーブレット係数であった場合、前記画像データの幅及び画像データを構成する１のタイルの高さを記憶するラインの後に設けられた前記追加の複数のラインに前記第２データを記憶するようにした方法を、前記アクセス論理手段に実行させるコンピュータプログラム。
【請求項６】
前記ウェーブレット変換は、前向きウェーブレット変換である
ことを特徴とする請求項５に記載のコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、圧縮と逆圧縮の分野に関連し、特に本発明は、ウェーブレット処理を実行するためのメモリの使用に関連する。
【０００２】
【従来の技術】
新しいＪＰＥＧ２０００復号規格（ＩＴＵ−Ｔ  Ｒｅｃ．Ｔ．８００／ＩＳＯ／ＩＥＣ１５４４４１：２０００  ＪＰＥＧ２０００画像符号化システム）は、画像に対する新たな符号化機構と符号ストリームの定義を提供する。ＪＰＥＧ２０００規格は、復号規格であるが、ＪＰＥＧ２０００は復号器が行わねばならないことを定義することにより符号化と復号を規定する。ＪＰＥＧ２０００規格の下では、各画像は１つ又はそれ以上の矩形のタイル（領域）に分割される。１つ以上のタイルがある場合には、画像のタイル化は、互いに独立して抽出され又は復号されるタイル成分を生成する。タイル成分は、タイル内の所定の成分の全てのサンプルを有する。画像は複数の成分を有する。そのような成分の各々は、２次元配列のサンプルを有する。例えば、カラー画像は赤、緑及び、青色成分を有する。
【０００３】
画像のタイル化後に、タイル成分は、ウェーブレット変換を使用して異なる分解レベルに分解される。これらの分解レベルは、元のタイル成分の水平及び垂直空間周波数を記述する係数で占められた幾つかのサブバンドを含む。この係数は、画像全体をわたってではなく、局部領域についての周波数情報を提供する。即ち少数の係数は完全に単一のサンプルを記述する。分解レベルは、サブバンドの各々の連続する分解レベルが、前の分解レベルの約半分の水平解像度と半分の垂直解像度を有するように、２の空間係数により次の分解レベルと関連する。
【０００４】
サンプルと同数の係数があるけれども、情報内容は幾つかの係数のみに集中する傾向にある。量子化を通して、多くの数の係数は更に減少される。エントロピー符号化器による追加の処理は、これらの量子化された係数を表すのに必要なビット数を、しばしば元の画像と比較して大きく、減少する。
【０００５】
タイル成分の個々のサブバンドは、更に、コードブロックに分割される。これらのコードブロックは、パーティションにグループ化される。係数のこれらの矩形配列は、独立に抽出される。コードブロック内の係数の個々のビット面は、３つの符号化パスでエントロピー符号化される。これらの符号化パスの各々は、圧縮された画像データのビット面に関する前後関係上の情報を集める。
【０００６】
これらの符号化パスから形成された、圧縮された画像データのビットストリームは、階層にグループ化される。階層は、コードブロックからの連続する符号化パスの任意のグループ化である。階層化には大きな柔軟性があるが、前提は、各々の連続する階層がより高い品質の画像に貢献することである。各解像度レベルにおけるサブバンド係数は、区画と呼ばれる矩形領域に分割される。
【０００７】
パケットは、圧縮されたコードストリームの基本的な単位である。パケットは、１つのタイル成分の１つの解像度レベルの１つの区画の１つの階層からの圧縮された画像データを含む。これらのパケットは、コードストリーム内で定義された順序で配置される。
【０００８】
パケットに組織化されたタイルに関連するコードストリームは、１つ又はそれ以上のタイル部分に配置される。一連のマーカー及びマーカーセグメント又はタグより構成されるタイル部分ヘッダーは、各タイル毎に位置を決め、抽出し、復号しそして再構成するために必要な、種々の機構と符号化形式に関する情報を含む。全コードストリームの先頭には、マーカとマーカセグメントよりなり、オリジナル画像に関する情報と同様な情報も提供するメインヘッダーがある。
【０００９】
コードストリームは、アプリケーションが画像の意味とそれに関する他の情報を翻訳することを可能とする、ファイルフォーマット内にの含まれることができる。ファイルフォーマットは、コードストリームの他のデータを含んでも良い。
【００１０】
【発明が解決しようとする課題】
ＪＰＥＧ２０００コードストリームは、符号化ステップでの順序を逆にすることにより実行される。図１は、圧縮された画像データコードストリームに関して作用する、ＪＰＥＧ２０００規格符号化機構のブロック図を示す。図１を参照すると、ビットストリームは最初に、階層とサブバンド係数を再グループ化するデータ整列ブロック１０１により受信される。算術符号化器１０２は、圧縮されたビットストリームを復号するために、ビット面圧縮された画像データに関する符号化中に集められた関係情報とその内部状態を使用する。
【００１１】
算術復号の後に、係数は、係数ビットモデル化ブロック１０３で、ビットモデル化をうける。次にコードストリームは、ＲＯＩブロック１０５で示されている対象の領域（ＲＯＩ）に基づいて量子化される、量子化ブロック１０４で量子化される。量子化の後に、変換ブロック１０６を介して、残りの係数に逆変換が行われ、続いて、ＤＣ及びオプションの成分変換ブロック１０７が続く。これで、再構成された画像が発生される。
【００１２】
ＪＰＥＧ２０００規格は実行のために多くの選択が残っている。
【００１３】
【課題を解決するための手段】
メモリとウェーブレット処理論理を含むシステムが開示される。メモリは、画像の帯（バンド）と追加のラインを蓄積するために複数のラインを含むサイズを有する。ウェーブレット処理論理は、ウェーブレット変換とアクセス論理を含む。ウェーブレット変換は、メモリ内のデータに行われたときに係数を発生する。アクセス論理は、メモリに記憶されたデータをウェーブレット変換に供給しそして、メモリからアクセス論理のバッファへ第１の対のラインに記憶されたデータが読み出された後にメモリ内に係数を蓄積するために、メモリからラインバッファ内にデータを読出す。アクセス論理は、第１の対のラインと異なる第２の対みのラインに関連しているウェーブレット変換により発生された係数を記憶するために、第１の対のラインを再使用する。
【００１４】
【発明の実施の形態】
本発明の添付の図面と以下の詳細な説明から完全に理解されよう。しかしながら本発明を、特定の実施例は、説明と理解のためのみであり本発明のを制限するものと解してはならない。
【００１５】
圧縮と逆圧縮機構の改善が開示される。高速、低コスト、小メモリ及び／又は、特徴の豊富な実行を行うために、ＪＰＥＧ２０００内の選択項目を使用することが、ここに開示される技術と実行の目的である。
【００１６】
以下の説明では、本発明の完全な説明を行うために、多くの詳細が述べられる。しかし、当業者には、本発明が、これらの特定の詳細無しに実行できることは明らかである。例えば、既知の構造と装置は、本発明を曖昧にすることを避けるために、細部の代わりに、ブロック図の形式で示される。
【００１７】
以下の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに関する動作のアルゴリズム及び記号表現で提示される。これらのアルゴリズム的な記載と表現は、他の当業者に研究の実体を最も効率的に伝えるための、データ処理技術の分野の当業者により使用される手段である。アルゴリズムは、ここでは、所望の結果を導く自己一貫性のあるステップのシーケンスであると考えられる。これらのステップは、物理的な量の物理的な操作を必要とする。通常は、不用であるが、これらの量は、蓄積され、伝送され、結合され、比較されそして他の操作が行われることが可能な、電気的又は磁気的な信号の形式を取る。主に共通の使用の理由から、これらの信号を、ビット、値、要素、シンボル、キャラクター、項、数又は、同様なものとして参照するのが、しばしば便利であることが分かる。
【００１８】
しかし、すべてのこれらの同様な用語は、適切な物理量に関連しており、そして、これらの量に付される単なる便利なラベルであるということは記憶すべきである。以下の説明から明らかなように特に述べない限り、”処理する”又は”計算する”又は、”算出する”又は、”決定する”又は、”表示する”又は、同様なもののような説明を通しての用語の使用は、コンピュータシステムレジスタ及びメモリ内の物理的な（電気的な）量として示されるデータを、コンピュータシステム及びメモリ又はレジスタ又は他の情報記憶、伝送又は、表示装置内の物理的な量として同様に示される他のデータに操作し且つ変換する、コンピュータシステム又は同様な電子計算器の動作及び処理に参照されることは理解される。
【００１９】
本発明は、ここで説明する動作を実行する装置にも関連する。この装置は、必要な目的のために特別に構成され又は、コンピュータ内に蓄積されたコンピュータプログラムにより選択的に活性化され又は再構成される汎用コンピュータを含んでも良い。そのようなコンピュータプログラムは、そして各々はコンピュータシステムバスに接続された、制限はされないが、フレキシブルディスク、光ディスク、ＣＤ−ＲＯＭ及び、磁気ディスク、読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カード又は、電子的命令を記憶するのに適する他の形式の媒体のような、コンピュータ読出し可能な蓄積媒体に記憶される。
【００２０】
ここで示すアルゴリズムと表示は、特定のコンピュータ又は、他の装置に固有に関連してはいない。種々の汎用システムが、ここで説明する技術に従ってプログラムと共に使用でき、又は、要求される方法ステップを実行する更に特化された装置を便利に実現し得る。これらの種々のシステムに対する必要な構造は、以下の説明から明らかとなろう。更に加えて、本発明は、特定のプログラム言語を参照して記載されていない。種々のプログラム言語は、ここで開示する本発明の技術を実行するのに使用できることは理解されよう。
【００２１】
機械で読出し可能な媒体は、機械（例えば、コンピュータ）により読出し可能な形式の、情報を記憶し且つ伝送する任意の機構をふくむ。例えば、機械で読出し可能な媒体は、読出し専用メモリ（”ＲＯＭ”）、ランダムアクセスメモリ（”ＲＡＭ”）、磁気ディスク蓄積媒体、光蓄積媒体、フラッシュメモリ装置、電気的、光学的、音響的又は、他の形式の伝播信号（例えば、搬送波、赤外信号、ディジタル信号等）等を含む。
【００２２】
概観
以下の説明は、ＪＰＥＧ２０００又は、同様な特徴の他の符号化機構の柔軟性を利用する実行又は新しい方法に関連する。
【００２３】
低メモリ及び高速バーストアクセスに関するメモリ使用
図２は、メモリ２０１内の画像の構成の一実施例を示す。図２を参照すると、”タイル高さ”ラスタラインのみ又は、画像の帯（バンド）がメモリ２０１内にあり、全体画像はない。このように、メモリ２０１内の画像の量は、画像幅掛ける画像高さに等しい。画像のバンドの内側には、タイル２１０のような少なくとも１つのタイルがある。
【００２４】
ウェーブレット変換処理論理２０２は、データがウェーブレット変換２０２Ｂに与えられるように、メモリ２０１からデータを読みそしてメモリ２０１にデータを記憶するメモリアクセス論理２０２Ａを有する。ウェーブレット変換処理論理２０２は、ハードウェア、ソフトウェア又は、その両者の組み合わせを有する。
【００２５】
一実施例では、メモリアクセス論理２０２Ａは、タイルに、メモリ内のタイルの先頭へのポインタ又はインデックス、タイルの幅、タイルの高さ及び、１つのラインの先頭から他のラインの先頭を得るためのラインオフセット（画像幅）の、４つのパラメータでアクセスする。代わりに、メモリアクセス論理２０２Ａは、タイルの幅の変わりにタイルの最後へのポインタ又はインデックスを使用してメモリ２０１にアクセスできる。
【００２６】
一実施例では、ある関数Ｆを実行するために、タイルの各ライン又は、画像のラインの一部にアクセスするために、以下の処理が使用される。
【００２７】
【数１】
0004177583.tif 000002
関数の１つＦは、ラインの組みにウェーブレット変換を与えることを含む。他の関数Ｆは、ＤＣレベルシフト、多重成分変換でも良い。
【００２８】
そのような処理は、ハードウェア（例えば、専用の論理、回路等）、（汎用コンピュータ又は、専用機械で実行される）ソフトウェア、又は、その両者の組合せを含む処理論理により行われる。
【００２９】
一実施例では、サブバンドからの係数は、開始点、幅、高さ及び、ラインオフセットを有する同様な機構を使用してアクセスされる。係数の行はともにメモリ内に蓄積されるので、キャッシュ、バーストアクセス可能メモリ又は、１係数よりも広いメモリ内に記憶されたときに行は効率的にアクセスされる。
【００３０】
図３（Ａ）−（Ｃ）は、係数がどのように記憶されるかを概念的に示す、種々のレベルに対する変換メモリの構成を示す。（ＩＴＵ−Ｔ勧告８００／ＩＳＯ／ＩＥＣ１５４４４１：２０００ＪＰＥＧ２０００画像符号化システムの命名法を使用する）全てのＬＨ，ＨＬ及び、ＨＨ係数は、符号化される。これらの係数は、図３（Ｂ）と３（Ｃ）内では破線で示される。符号化されている最終の変換レベルのＬＬ係数を除いて、変換を計算しているときには、入力タイル３０１の入力ラインと（連続するレベルの図３（Ｂ）と３（Ｃ）内で実線で示された）ＬＬ係数のみが、一時的に記憶される必要がある。水平と垂直を１つのパスで行い且つラインバッファを使用する変換が使用されているときには、一旦、入力行の組みが完全に読み込まれ（入力行又は、ＬＬ係数）、ラインにより使用される空間は再使用される。
【００３１】
図３（Ａ）−（Ｃ）は、一実施例内でどのように際しようが達成されるかを示すために、入力タイル３０１、オフセットで整列されたレベル１（Ｌ１）（３０２）及びレベル２（Ｌ２）（３０３）メモリ領域を示す。入力タイル３０１を保持するのに使用されるメモリ空間への行３１２と３１３の２つの行の付加は、Ｌ１係数に対する入力タイル３０１に対するメモリを再使用するときに、Ｌ１係数を発生するのに必要とされる。Ｌ１係数を保持するのに使用されるメモリ空間への、行３４１−３４２の４つの行の付加は、Ｌ２係数に対するＬ１係数を記憶するメモリメモリを再使用するときに、Ｌ２係数を発生するのに必要とされる。（行３４１と３４２の間に、無駄な空間の２つの行があることに注意する。）追加のラインは、ウェーブレット変換がメモリ内の情報に与えられている方向の後ろにあるのが好ましい。
【００３２】
特に、入力タイル３０１の入力行の組みは、２つの異なるラインへの変換を与えた結果のそして、メモリのラインに書きこまれているウェーブレット変換を与えた結果の、レベル１のＬＬ，ＬＨ，ＨＬ及びＨＨ係数の各々の１つの行に対応する。例えば、入力行３１０と３１１へウェーブレット変換を与えた結果は、Ｌ１係数（３０２）の行３１２と３１３の部分内の係数である。例えば、行３１２のＬＬ係数３２１はレベル１のＬＬ係数（実線）に対応し、行３１２のＨＬ係数３２２はレベル１のＨＬ係数に対応し、行３１３のＬＨ係数３２３はレベル１のＬＨ係数に対応し、そしてＨＨ部分３２４はレベル１のＨＨ係数に対応しする。最初の２つの入力ラインからのレベル１係数はメモリの一番上の２つの余分な行内に記憶され、残りのレベル１係数はメモリを再使用するために入力タイル３０１のデータを記憶する位置に書きこまれる。レベル１係数の各サブバンドに対する係数の各形式（例えば、ＬＨ，ＨＬ，ＨＨ）に対する幅と高さは、入力タイル３０１の半分である。レベル１に関するＬＬ行から次のＬＬ行のラインオフセット（例えば、図３（Ｂ）内の行３１２から行３１４の距離）は、（各係数行は２つのラインに対応する領域からであるので）タイル幅の２倍である。
【００３３】
同様に、レベル１でのＬＬ係数の２つの行にウェーブレット変換を与えた結果（実線）は、２つの行内の係数である、即ち、レベル２での、ＬＬ係数（３３１）、ＬＨ係数（３３２）、ＨＬ係数（３３３）及び、ＨＨ係数（３３４）である。レベル２係数の幅と高さは、入力タイル３０１の４分の１である。レベル２に対するラインオフセットは、（各係数行が、２つのレベル１ＬＬ行又は、４つの入力ラインに対応する領域からであるので）タイル幅の４倍である。このように、メモリの４つの余分なラインが、Ｌ２係数を記憶するために入力タイルを記憶する同じメモリを使用するのに必要とされる。第３の分解レベルが実行された場合には、追加の８ラインが必要なことに注意する。従って、この例では、入力時間を記憶し且つそこに与えられる分解の２つのレベルを有するメモリを再使用することを可能とするために、合計で１４の余分なラインが必要とされる。余分なラインを決定するのに子よされる一般的な公式は次の、
２（ｍａｘｌｅｖｅｌ＋１）−２
で与えられる。
【００３４】
ＬＬ，ＬＨ，ＨＬ及び、ＨＨサブバンドのような、サブバンドにアクセスするために、先頭ポインタと行／ライン間のオフセットが必要である。高さと幅も、タイルをアクセスするときに停止するときを知るために必要である。
【００３５】
分解レベルが増加すると、メモリ内の幾つかの行が未使用となる。即ち、第１の分解レベル後のＬ１係数の下のメモリのラインが未使用となり、第２の分解レベル後のＬ２係数の下のメモリのラインが未使用となる等である。一実施例では、余分な空間が再使用される。
【００３６】
図３（Ｄ）−３（Ｆ）は、追加のラインが逆変換を与えた結果を記憶する、そして、これらの追加のラインはメモリ内で逆変換が行われている方向の後ろにある、対応する逆変換メモリ使用を示す。
【００３７】
図４（Ａ）は、入力と種々の分解レベルをそれぞれ前向き変換に記憶できる単一メモリの実施例を示す図である。図４（Ａ）を参照すると、入力タイル、レベル１係数、レベル２係数及び、レベル３係数に対する位置が、それぞれ、追加の２，４及び、８ラインに示されている。図４（Ｂ）は、変換の種々のレベルの入力係数が逆変換中に出力と共に記憶できる、同様な単一メモリの実施例を示す図である。
【００３８】
表１は、別々のメモリと再使用されたメモリに対する、２５６ｘ２５６タイルの種々の変換レベルに対して要求されるメモリの量を示す。
【００３９】
【表１】
0004177583.tif 000003
再使用されたメモリに対して、リストされた量はそのレベルに対して使用される追加の新たなメモリである。この例に対して、レベル１，２及び、３に対するメモリの再使用はメモリを節約する。レベル４は別のメモリを使用する。
【００４０】
レベル４，５及び、６に対するメモリは、レベル３が発生された後の単一メモリ内に又は、完全に異なる且つ別のメモリ内に配置することができる。必要なメモリの量は、３８ｘ３２であり、それは、５ｘ２５６よりも小さい。レベル１係数の発生後に２つの未使用ライン（即ち、入力データの最後の２つのラインを記憶したメモリ）があるので、小メモリの節約は、これらの２つのラインをレベル４，５及び、６で再使用させることにより達成できる。レベル４，５及び、６に対する追加のライン数は、１６，３２及び６４であり、且つライン間の余分な空間は、前のレベルより２倍離れており且つ半分の幅であるので、これは、特に重要である。
【００４１】
一実施例では、レベル４，５及び、６からの係数は、図４の記憶領域４５０のような小メモリ構造に詰められる。図４を参照すると、レベル４係数は、８（３レベルでは２３）で割ったタイル高さに等しい高さを有し、８（２３で、３は前に記憶されたレベルの数に対応する）で割った幅ｗと等しい幅を有する領域内に記憶される。追加の２つのライン４５１は、同じ必要な記憶領域内にレベル５の係数を記憶するのに、全て必要である。同様に、追加の４ラインは、レベル６の係数に対してこのメモリ記憶領域を使用して収容するのに、全て必要である。係数を記憶するときに、ラインをスキップしないことに注意する。２５６ｘ２５６タイルが処理されている、一実施例では、蓄積領域４３０の低部に余分な５ライン、２ライン４２１と約４．７５ライン４２２は、記憶領域４５０を収容するのに使用される。示されたように、３ライン４２２による近似は、割当てられたメモリ又は、それに加えて、入力タイルを記憶するのに必要なメモリを示す。この方法で、入力タイルを記憶する領域はほぼ完全に再使用される。
【００４２】
一実施例では、非常に少しの又は潜在的に最小のメモリを使用するために、レベル６は、レベル４と５から別に記憶される。しかし、これは６４バイトのメモリを節約するだけである。
【００４３】
２７３ｘ２５６よりも少し小さなメモリは、２５６ｘ２５６タイルの全ての変換係数を保持できる。これは、真に適切なメモリ構成よりも７％小さい。適切なメモリ構成と違って、余分なコピーが避けられ一方、同時に、高速アクセスのために共に詰められた行を保持する。
【００４４】
表２は、１２８ｘ１２８タイルに対する、別のメモリと再使用されたメモリの他の例を示す。このサイズに対しては、最初の３つの変換レベルは、１４２ｘ１２８バッファ内のメモリを再使用できる。
【００４５】
【表２】
0004177583.tif 000004
一実施例では、適切なメモリ又は新たなメモリを使用する判断は、タイルの高さと変換レベルの関数である。そのような判断は、以下に基づいている。
タイル高さ＞２（３＊ｌｅｖｅｌ−２）の場合には、適切な方法を使用する。
タイル高さ＝２（３＊ｌｅｖｅｌ−２）の場合には、いずれかを使用する。
タイル高さ＜２（３＊ｌｅｖｅｌ−２）の場合には、新たなメモリを使用する。
【００４６】
判断の応用を示すために、表３は以下の様である。
【００４７】
【表３】
0004177583.tif 000005
幾つかの応用では、メモリ構成をタイル高さに適応させることは不便である。単一の固定のメモリ構成が使用できる。１２８ｘ１２８より小さいタイルサイズは、典型的には、好ましくない圧縮性能となり、従って、典型的には、使用されない。しかし、１Ｋｘ１Ｋよりも大きなタイルサイズが非常に大きな画像に対して使用される場合には、これは、圧縮を大きくは改善せず、そして、必要とされる大量のメモリは、典型的には、負担が重い。従って、１２８から１０２４の間のタイル高さを仮定し、そして変換の３レベルに対して適切なメモリを使用することが、実際には良い。
【００４８】
復号は同様であり、復号論理が読む前に、逆変換を与えた結果が書きこまれ、顕著な差は開始が最高レベルから最低レベルへ、上述の例ではレベル６からレベル１に開始されることのみである。そのような場合には、入力タイルは、メモリ構造の一番上で終わる。メモリの再使用を収容する余分なラインは、降順である。例えば、図４（Ｂ）の構造を使用して、Ｌ３係数からＬ２係数を形成するのに８ラインが必要であり、Ｌ２係数からＬ１係数を形成するのに４つの余分なラインが必要であり、そして、Ｌ１係数から入力タイルを形成するのに２つの余分なラインが必要である。
【００４９】
一実施例では、入力タイルデータを扱うために、符号化に先だって色変換が行われ得る。図５は入力データを扱う処理の一実施例を示す。図５を参照すると、カラー入力画素が、ラスタ順序で受信される。これらのカラー画素は、ＲＧＢ，ＹＣｒＣｂ，ＣＭＹ，ＣＭＹＫ，グレースケール等である。カラー入力画素は、バンド（又は、他の形式）により、メモリ５０１のような、メモリ内にタイルとして記憶されても良い。
【００５０】
段階５０１からの又は入力から直接受信された画素は、色変換及び／又はレベルシフトを受け、結果の出力は１つの係数バッファ５０２１−５０２Ｎに記憶される。即ち、各タイルに対して一旦色変換が完了すると、１つの係数バッファ５０２１−５０２Ｎに記憶され、そして、次のタイルが処理される。一実施例では、各成分に対して１つの係数バッファがある。
【００５１】
係数バッファ５０２１−５０２Ｎは、メモリを再使用しながらウェーブレット変換を行うために上述したように、変換で使用される。従って、係数バッファ５０２１−５０２Ｎは、入力と出力ともにウェーブレット変換である。
【００５２】
変換が、係数バッファ５０２１−５０２Ｎに与えられた後に、関係モデル５０３とエントロピー符号化器５０４は、既に変換されたデータについて、更なる圧縮処理を実行する。符号化されたデータは、符号化データメモリ５０５内にバッファされる。
【００５３】
１つのタイルに更なる圧縮処理を行いながら、変換は他のんタイルに適用されてもよい。同様に、どの又は全ての動作は、同時に複数のタイルに行われても良い。
【００５４】
進行順序変換
ＪＰＥＧ２０００規格では、圧縮されたコードストリーム内のデータは、５つの進行順序の１つに記憶されうる。進行順序は、コードストリーム内の異なる点で変わり得る。順序は、階層、区画、解像度及び、成分に関する、埋め込まれた”ｆｏｒ  ｌａｙｅｒｓ（階層）”により、定義される。
【００５５】
５つの進行順序がＪＰＥＧ２０００規格のテーブルＡ−１６内の規格内に記載されている。それらは、階層−解像度−成分−位置進行（ＬＲＣＰ）、解像度−階層−成分−位置進行（ＲＬＣＰ）、解像度−位置−成分−階層進行（ＲＰＣＬ），位置−成分−解像度−階層進行（ＰＣＲＬ），成分−位置−解像度−階層進行（ＣＰＲＬ）である。
【００５６】
順序は、ＪＰＥＧ２０００規格内のＣＯＤ又はＰＯＤマーカー内で定義される。符号化形式デフォルト（ＣＯＤ）マーカーはＪＰＥＧ２０００規格で定義されそして、符号化形式、分解レベル、及び、（メインヘッダ内であれば）画像又は（タイル部分ヘッダ内であれば）タイルの全成分を圧縮するのに使用されるデフォルトである階層化を記述する。進行順序変更（ＰＯＤ）マーカーは、コードストリーム内のＣＯＤマーカーセグメント内に規定されている以外のどの進行順序に対しても境界と進行順序を記述する。パケット長メインヘッダ（ＰＬＭ）は、順に各タイル部分に対してタイル部分内のパケット長のリストとパケット長を示し、タイルパートヘッダ（ＰＬＴ）は、タイル部分内及び、タイルパケット長を示し、且つコードストリーム内にデータがある場所を示す。
【００５７】
Ｂ．１２章内のＪＰＥＧ２０００規格は、所定の進行順序に対して、圧縮データのパケットがどのようの構成されるかのみを規定する。１つの進行順序から他の進行順序へデータがどのように変換されるかは記述しない。
【００５８】
一実施例では、進行順序変換パーサーは、データ復号しそれを再度符号化すること無しに、ユーザの入力に基づいて、コードストリームを所望の進行順序に変換する。図６（Ａ）は、そのようなパーサーを有するシステムを示す。図６（Ａ）を参照すると、パーサー６０１は、特定の進行順序に関するクライアントからの要求を受信する。このクライアントはウェブページを見ながら、特定のリンクを選択する。この要求に応答して、パーサー６０１は、サーバ６０２にアクセスし、メモリ６０４から全画像６０３に関連するコードストリーム得て、そして、要求に基づき、コードストリームを異なる進行順序に変更する。この要求は、オプションコマンドを使用して（例えば、ＲＬ２Ｌ（解像度−階層進行から階層進行へ）進行順序を示す。記述されている進行順序は、階層、解像度、成分、区画又は、タイルに基づいている。
【００５９】
図６（Ｂ）は、階層進行コードストリーム（ＬＲＣＰ）から解像度進行（ＲＬＣＰ）コードストリームへ変換する進行変換器を示す。進行順序は、互いに直接的にマップする。
【００６０】
図７（Ａ）は、１つの進行順序から他の進行順序へコードストリームを変換する複数の経路を示す。図７（Ａ）を参照すると、５つの進行順序（ＬＲＣＰ，ＲＬＣＰ，ＲＰＣＬ，ＣＰＲＬ及び、ＰＣＲＬ）の各々は、互いへの経路と共に示されており、これにより全ての進行が示されている。一実施例では、パーサーは、全ての変換に、階層進行を最初に通し、そして、選択された変換を行う。図７（Ｂ）は、そのような単純化された変換経路の一実施例を示し、要求されるマッピングの数は、（図７（Ａ）に示されているように）１０から４へ減少される。しかしながら、５つの進行順序の内のどの１つも、選択された順序に到達する前に全てが変換される１つとして使用されることが可能である。ここで説明した変換技術は、ソースコードのラインの数が多数の経路の変換よりも非常に少なくなるように、ソースコードを単純化する。これは、デバック時間を減少させ、且つ少ないメモリと実行時変数という結果となる。
【００６１】
変換を実行するために、コードストリーム内のパケットの順序がリオーダーされなばならない。パケットは、コードストリーム内でその連続順序によりラベルが付される。マーカーは、データの開始点、データの長さ（又は、代わりに、データの終了点）及び、どのようにデータが扱われるべきかを示す。例えば、どのようにデータが扱われるべきかの指示は、データが削除されるべきか否か、データが切り捨てられるべきか否か、又は、データに他の動作が行われるべきかを示す。そのような取扱情報は、ＪＰＥＧ２０００規格のＰＬＴ／ＰＬＭ及び／又はＰＰＴ／ＰＰＭマーカセット内に設けられているような、レート歪情報からも来る。この方法で、コードストリームはパケットヘッダを変更することなく切り捨てることが可能である。
【００６２】
一実施例では、リスト、配列又は、（６０１Ａのリオーダリング構造のような）他の構造は、各パケット内のデータの部分を示すことにより構築される。この構造を使用して、パケットはリオーダーされる。
【００６３】
図８は、進行順序変換を実行する処理の一実施例を示す。この処理は、ハードウェア（例えば、専用の論理、回路等）、（汎用コンピュータ又は、専用機械で実行される）ソフトウェア、又は、その両者の組合せを含む処理論理により行われる。
【００６４】
図８を参照すると、処理は、パケット内のヘッダからのリストを構築する処理論理により開始し（処理ブロック８０１）、そして、随意に、マーキングリスト項目を、量子化のために”消去”する（処理ブロック８０２）。次に、処理論理は、元の進行を、（入力と出力をＰＯＣマーカ（進行順序に関する境界）で規定された進行で扱うことを含む）所望の進行にマップするためにリストのリオーダーを行う（処理ブロック８０３）。その後に、処理論理は、リオーダーリストに基づいて符号化されたデータを出力する（処理ブロック８０４）。
【００６５】
従って、リオーダーと解析の組合せは、所望のリオーダリング及び、解像度、品質等の仕様を可能とする。
【００６６】
進行順序変換の例
以下は、コードストリーム内で、どのようにパケットが配置されるかを示す例である。コードストリームは、２成分、２階層、３分解レベル及び、階層進行に基づいて、形成されている。
【００６７】
表４は、パケット順序、長さ及び、この例内のパケットの関連インデックスを示す。パケット順序列は、コードストリーム内に配置されたパケットの連続順序を示す。長さは、パケットの長さを示す。関連インデックスは、解像度、階層、成分及び、パケットの区画を示す。
【００６８】
例えば、パケット[０]は、第１のタイルヘッダ後のコードストリーム内の最初のパケットである。それは、５８９バイトを有する。関連インデックスＲｗＬｘＣｙＰｚは、解像度ｗ、階層ｘ、成分ｙ及び、区画ｚに即するパケットを示す。
【００６９】
【表４】
0004177583.tif 000006
このコードストリーム内では、パケットは、それらがある階層に基づいてグループ化されている。最初の８パケットは階層０に属する。続く８パケットは階層１に属する。
【００７０】
ここで説明した変換処理を使用して、上述のコードストリームは解像度階層進行に変換される。以下はどのように上述のパケットがリオーダーされるかを示す。
【００７１】
階層進行コードストリームが解像度進行に変換された後に、新たなコードストリーム内で、パケットは解像度に基づいてグループ化される。そのようなグループ化を表５に示す。最初の４パケットは解像度０に属し、次の４パケットは解像度１に属する等である。
【００７２】
【表５】
0004177583.tif 000007
変換アルゴリズムの一実施例
解像度から階層進行へ
【００７３】
【数２】
0004177583.tif 000008
ここで、ｌａｙｅｒ＝コードストリーム内の階層の番号、
ｒｅｓｏｌｕｔｉｏｎ＝コードストリーム内の分解レベルの番号、そして、
ｃｏｍｐｏｎｅｎｔ＝コードストリーム内の成分の番号である。
【００７４】
ＪＰＥＧ２０００符号化のにデータ隠蔽（サイドバンド情報）
ビット隠蔽は、ファイルサイズを増加させずにサイドバンド情報を伝送することを可能とする。（ＪＰＥＧ２０００で定義されているＣＯＭマーカーが代わりに使用され得るが）ファイルサイズを増加するがしかし、単純な復号器を遮断しないサイドバンド情報も重要である。
【００７５】
幾つかのマーカーセグメント、パケットヘッダ及び、パケットは、元も近いバイトにパディングされる。ＪＰＥＧ２０００マーカーセグメントの例は、ＰＰＭ、ＰＰＴ、ＰＬＭ及び、ＰＬＴである。更に加えて、幾つかのマーカーセグメントは、ＱＣＤ、ＱＣＣ及び、ＰＯＣを含むのに必要なよりも長くてもよい。全てのこれらの場合において、パディングデータ値は定義されていない。
【００７６】
幾つかの専用の符号化機構は、この半ランダムに配置された未定義のデータを、制限はされないが、復号及びフィルタリング指示、所有権、セグメント化指示等を含む、幾つかの重要な形式の情報を提供するために使用できる。指示は、特定の改善機構に対するインデックスを含んでも良い。例えば、画像がほとんどテキストであると知られている場合には、第１の前処理フィルタが使用されるべきであるということを示す値が送られる。一方では、領域が大部分グラフィック画像である場合には、第２の前処理フィルタが使用されるべきであるということを示す値が送られる。
【００７７】
以下は、コードストリーム内にビットが隠される又はサイドバンド情報が蓄積され得る場所である。
−（予測可能な終点無しの）算術符号化器（ＡＣ）終点、
−バイトに丸められるパケットヘッダの最後、
−最後のパケットの後で、次のタイルの前、
−常に最小を使用しないことによるタグツリー構造、
−パケットヘッダＬブロック信号、
−コードブロックに対するＬＳＢパリティ（改良パスのみ、クリーンアップパスのみ）、
−ＱＣＤ、ＱＣＣ余分サブバンド、ＰＯＣである。
【００７８】
例えば、ＡＣ終点を使用するデータの隠蔽関して、少なくとも、符号化器が終端される度に、０から７ビットが設けられる。しかしながら、これは、幾つかのバイトに拡張される。これらの特別なビットとバイトは特別な情報を送るのに使用される。
【００７９】
各パケットヘッダに関して、パケットヘッダの最後はバイト境界に丸められる。従って、丸めが必要な度に特別な情報を送るために１から７ビットが使用される。同様に、各パケットは、バイト境界に丸められ、それにより、１から７ビットを設ける（丸めは必要であると仮定する）。また、タイル部分内の最後のパケットは、数バイト拡張されることが可能である。これらの特別なバイトは、追加及び、情報を送るのに使用され得る。
【００８０】
コードブロックに対する圧縮されたデータの長さは、最小でない表現のパケットヘッダ内に与えられることが可能である。表現の選択（例えば、非最小表現）は、他の情報を指示するために使用できる。
【００８１】
タグツリーデータの隠蔽に関して、ＪＰＥＧ２０００規格のパケットヘッダは、第１の包含とゼロビット面情報の符号化のためにタグツリーを使用する。複数のコードブロックがある場合には、タグツリーは最小値の４つのツリーのようである。例えば、パケット内の４ｘ４配置内の１６コードブロックの場合には、配置は以下の様である。
【００８２】
【数３】
0004177583.tif 000009
上述の４ｘ４配置に対して最小のである、タグツリーの例は、次のようである。
【００８３】
【数４】
0004177583.tif 000010
ここで、”３”は各コードブロックの値に加算されそして、”０”，”２”，”５”及び、”２”は、各々が４つの対応するコードブロックに加算される。最後に、コードブロック毎に１つの値がある。即ち、最小のタグツリーは、上述の４ｘ４配置内の最初の２ｘ２グループを取ることにより形成されそして、最小値を見つけることは、４つの値の中からである。この場合には、２ｘ２ブロックに対して、
【００８４】
【数５】
0004177583.tif 000011
であり、最小値は３である。これは、他の２ｘ２ブロックに対しても行われる。そして、これらの識別された最小値は、この例では”３”である、それらの最小値を決定するために再び評価される。そして、最小値は４つの最小値から減算され、以下の
【００８５】
【数６】
0004177583.tif 000012
を形成する。そして、４ｘ４内の残りの数に対して、数３が、４ｘ４配置内の特定の値に対応する、２ｘ２内の値と共に各値から減算され、それにより、上述のタグツリーとなる。最初の行は以下のように加算される。
１０＝３＋０＋７
７＝３＋０＋４
１２＝３＋２＋７
１５＝３＋２＋１０
可変長コードが、小さな数を表現するのに効率的に使用され得る。
【００８６】
最小でないタグツリーの例は、次のようである。
【００８７】
【数７】
0004177583.tif 000013
（”３”，”０”，”２”，”５”及び、”２”を表すことは、”２”，”１”，”３”，”６”及び、”３”よりも少ないビットストリームデータを使用し得ることに注意する。）
一旦、タグツリー表現が作られると、２ｘ２ブロック内にゼロがあるか否かに基づいて、表現が最小か否かに関する決定を行うことができる。従って、この情報は隠される。例えば、１ビットブロックは、２ｘ２ブロック内の１を示し、上述は、最小タグツリーの一部ではないことを示すが、しかし幾つかの特定の情報を復号器に送るために使用できる。同様に、２が２ｘ２ブロック内で最小であれば、そのような事実は復号器に異なる情報を送りうる。
【００８８】
ＪＰＥＧ２０００ＰＯＣ、ＱＣＤ及び、ＱＣＣマーカーは、冗長なエントリーを有することが可能である。あたかも、コードストリームは量子化されそして、マーカーは再書き込みされていないようである。例えば、ＱＣＤとＱＣＣマーカーは、マーカーの構文により規定される幾つかのサブバンドに対する値を有する。ビットストリーム内により少ないサブバンドが実際に符号化されている場合には、データは、サブバンドを見失わさせるために使用される値内に隠され得る。冗長なエントリーは、置換されそして、隠された又はサイドバンド情報のために使用されうる。
【００８９】
隠された又はサイドバンド情報は、（例えば、特定のフィルタでそのタイルをシャープ化する又は、強調又は、平滑化又は、この領域に光学的文字認識（ＯＣＲ）を実行する等の）後処理指示、復号指示、（例えば、残りの画像又は他の画像を復号するための暗号鍵等の）セキュリティ、（例えば、ファイルのオリジネータとしてのＰＯＴＵＳラベル付け等の）コードストリーム識別及び／又は他の情報を含んでも良い。
【００９０】
符号化時の階層の使用
階層は、ＪＰＥＧ規格の一部である。一実施例では、おそらくＣＯＭマーカーのサイドバンド情報は、復号中に階層の選択を可能とするために、復号器により使用される。このサイドバンド情報は、異なる視聴距離、異なる解像度、異なる興味の領域、（例えば、テキストのエッジを見つけるような）分析のための異なる周波数内容に対する、レート／歪目標に合致させるために、圧縮後量子化のための階層を選択するのに使用される。
【００９１】
一実施例では、階層はレートに基づいて予め定義される。例えば、第１の階層は、画素画像当り１−ビットを表し、一方、第２の階層は、画素画像当り２−ビットを表すというようである。従って、階層は、最も低い品質から最も高い品質へと変わる。同様に、目標レートも、低解像度に合わせることができる。
【００９２】
サイドバンド情報は、コードストリーム内のマーカセグメントに蓄積される。一実施例では、ＪＰＥＧ２０００コメント（ＣＯＭ）マーカーは、階層に関する情報を提供するように使用される。特にＣＯＭマーカーは、各解像度及び/又は全体画像にわたるレートに関するバイト数又は、各追加の階層に対する相対的なバイト数を示すのに使用される。表６は、画像内のタイルをわたり、バイト数で、各層とその解像度を示す。そのようなテーブルは代わりに歪値を有する。
【００９３】
【表６】
0004177583.tif 000014
他の実施例では、整列は、階層毎である。このように、上述の情報は、次の
階層＝０、バイト＝７９５９、ビットレート＝０．９７１５５８、ＰＳＮＲ＝３０．７７８５による整列、
階層＝１、バイト＝１０８７７、ビットレート＝１．３２７７５９、ＰＳＮＲ＝３２．０７７９による整列、
階層＝２、バイト＝１６５６０、ビットレート＝２．０２１４８４、ＰＳＮＲ＝３５．７３２１による整列、
に示すように、各レベル（レベル又は成分により分離されていない）に対して統合される。
【００９４】
階層による歪は、ＰＳＮＲに基づいている。例えば、
階層＝０、ＰＳＮＲ＝３０．７７８５
階層＝１、ＰＳＮＲ＝３２．０７７９
階層＝２、ＰＳＮＲ＝３５．７３２１
である。
【００９５】
代わりの実施例では、そのような情報は、上述のようにコードストリーム内に隠されている。この情報は、レート歪を制御するのに使用され得る。
【００９６】
他の実施例では、階層は、特定の視聴距離で予め定義される。そのような場合には、データは、最も高い周波数、最も低い解像度から、最も低い周波数、最も高い解像度へ、階層に分割される。
【００９７】
一実施例では、階層情報は、その階層と全ての前の階層に対する全体画像をわたるビットの合計を示す。（例えば、階層１の次にリストされている１６，０１１ビットは、階層０と階層１に対する全ビット数を示す。）表７は、この種の絶対レート情報を示す。
【００９８】
表８は、相対的なレート情報を示す。階層０は４０９６ビット、階層１は１１，９１５ビット等を示す。
【００９９】
【表７】
0004177583.tif 000015
【０１００】
【表８】
0004177583.tif 000016
例えば、７５０，０００バイトのみが画像を復号するのに許されている場合には、復号されうる全ては、（階層６に示されている１，０００，０００バイトは、階層０−５の５００，０００バイトを含むので）、階層５までと、重要な階層６の半分である。幾つかの実施例では、階層６からのパケットは含まれない。他の実施例では、階層６データの合計が約２５０，００００バイトとなるように、階層６からの幾つかのパケットが含まれそして、その他のパケットは、ゼロパケットに置きかえられる。
【０１０１】
図２２は、３レベル、ＭＳＥ又は、同様な５．３不可逆変換に対する階層化の例を示す。図２２を参照すると、４５階層が示されている。各追加の階層はＭＳＥに対して、良好なレート−歪を与える順序でＭＳＥを改善する。
【０１０２】
図２３は、変換が５レベルを有し且つデータ階層０−３にまで分割されている他の例を示す。階層０はサムネール版に対応し、階層０−１はモニタ（又は、スクリーン）解像度に対応し、階層０−２は印刷解像度に対応しそして、階層０−３は無損失に対応する。
【０１０３】
代わりの実施例では、階層は幾つかの他の歪基準（例えば、ＭＳＥ、重み付けされたＭＳＥ、テキストの鮮明さ等）で予め定義されても良い。
【０１０４】
復号器は、画像を発生するために階層を選択するために、コードストリームから階層に関する情報を使用する。アプリケーション又は実行から望ましい視聴環境（表９参照）を知っており、且つ、階層を規定すコードストリームからの情報を使用する復号器は、但し視聴距離で画像を表示するために、コードストリームを量子化できる。図９はそのような復号器を示す。図９を参照すると、復号器９０１はコードストリームを受信し且つ、ＣＯＭマーカーを検査する量子化論理９０２を含み、且つ、例えば、適切な階層を選択することを介して、量子化されたコードストリーム９０４を発生するために、メモリ９０３内に記憶された視聴距離に関する情報を使用する。量子化されたコードストリーム９０４は、画像データ９０６を発生するために階層を選択した後に、復号論理９０５（例えば、ＪＰＥＧ２０００復号器）により復号される。単純な復号器は、コメントマーカー内のデータを単に無視する。
【０１０５】
図１０は、復号時に階層を使用するための処理のフローを示す。この処理は、ハードウェア（例えば、専用の論理、回路等）、（汎用コンピュータ又は、専用機械で実行される）ソフトウェア、又は、その両者の組合せを含む処理論理により行われる。
【０１０６】
図１０を参照すると、この処理は、圧縮された論理データのコードストリームを受信する処理論理により開始する（処理ブロック１００１）。この画像データは、複数の階層に組織化され、その各々は、画像に（例えば、シャープに見える、より明瞭である、よりコントラストがよい等の）、視覚値を画像に加える符号化されたデータを含む。次の処理論理は、サイドバンド情報に基づいて量子化のために１つ又はそれ以上の階層を選択する（処理ブロック１００２）。選択後に、処理論理は、コードストリームの量子化されていない階層を逆圧縮する（処理ブロック１００３）。
【０１０７】
タイル、タイルの一部分及び、パケットの編集
一旦、コードストリームが形成されると、画像の一部を編集することが望ましい。即ち、例えば、コードストリームを形成するために、符号化を行った後に、タイルの組が復号される。タイルの組を復号した後に、編集が行われ、それに続いて、復号される前に符号化されていたタイルと同じサイズへ、編集されたものと共にタイルの組みが符号化される。典型的な編集の例は、テキストのシャープ化と”赤目”の除去を含む。ＪＰＥＧ２０００コードストリームは、全体のコードストリームを書き直すこと無しに、メモリ内で又は、ディスクファイルシステム内で編集されることが可能である。
【０１０８】
図１１は、編集処理の一実施例のフローを示す。この処理は、ハードウェア（例えば、専用の論理、回路等）、（汎用コンピュータ又は、専用機械で実行される）ソフトウェア、又は、その両者の組合せを含む処理論理により行われる。
【０１０９】
図１１を参照すると、処理論理は最初に、編集されるべき領域、解像度、成分及び／又は区画を包含する、タイル、タイル部分又は、パケットを決定しそして、それらを復号する（処理ブロック１１０１）。この決定は、領域及び／又は動作解像度を選択するユーザに応答して行われる。この決定は、どの部分又はタイルが編集される部分を包含するかを決定するために、より高い解像度によりする編集情報を使用しても良い。一旦復号が完了すると、処理論理は、所望の編集を実行する（処理ブロック１１０２）。
【０１１０】
所望の編集を実行した後に、処理論理はデータを、符号化されたデータに再圧縮し（処理ブロック１１０３）、そして、置換タイル、タイル部分又は、コードストリームに対するパケットを形成する（処理ブロック１１０４）。一実施例では、置換タイル、タイル部分又は、パケットを形成する際に、処理論理は、新たなデータが、データの未編集版よりも小さい場合には、未編集版と同じサイズの置換タイル、タイル部分又は、パケットを形成するために、コードストリームの最後にバイトのデータをパディングする。
【０１１１】
代わりの実施例では、処理論理は、パディングの代わりに、適切な長さのＣＯＭマーカーセグメントのような、マーカー又はタグを使用しても良い。ＣＯＭマーカーは、スペースを埋めるために使用でき又は、符号化器が含めたい情報を含むことができる。例えば、ここで説明したサイドバンド情報又は、画像に関する著作権ライセンス又は、テキスト又は、他のフィルフォーマット情報のような情報を含むべきである。
【０１１２】
一実施例では、置換タイル、タイル部分又は、パケットの形成に際し、新たなデータがデータの未編集版よりも大きい場合には、処理論理は、データがコードストリーム内に合うまで、どの又は全ての成分を切り捨てる。
【０１１３】
画像の編集は、タイル、タイル部分又は、コードブロックに対する符号化されたデータを変更することにより行われる。一実施例では、編集は、拡張する代わりに量子化することによりファイルを変更せずに行われる。他の実施例では、所定の量の拡張を可能とするために、所定の量の更なる空間が、タイル又は、コードブロック当りに割当てられる。更に他の実施例では、符号化されたデータは、タイルヘッダを操作することによりファイルの最後に置かれそして、ＣＯＭマーカー内に無効なタイルデータを配置する。
【０１１４】
編集されているコードストリームの部分内のデータに依存する後続のタイル部分がある場合には、これらのタイル部分はコードストリーム内で使用できなくなることに、注意する。この使用できないデータの指示は、幾つかの方法の内の１つにより復号器に知らせられる。これらの方法は、使用できないデータの存在及び/又は位置を示すために、情報を挿入し又は変更することを含む。１つの実施例では、アプリケーションは、編集されたタイル部分に後続するタイル部分内のデータが使用できない可能性があることを示すために、状態バッファを使用する。状態バッファは、ワークメモリ内にあっても良くそして、パケットの間の依存関係を記述する。以前のパケットが変更された場合には、後続のパケットはそのまま復号されることはできない。これらの後続のパケットは、それに応じて編集されるか又は、削除されねばならない。他の実施例では、そのような指示はそれらのタイル部分のデータ部分をゼロにするか及び/又は、データがないことを示すＰＰＴマーカーを生成することによりなされてもよい。
【０１１５】
最適な符号化器量子化
符号化中に、幾つかの又は全てのサブバンドからの量子化のされていない係数は、量子化された係数値を生成するために、Ｑ値により除算される。このＱ値は広範囲な値を有する。典型的な符号化器は、１つの単一の係数値に等しくされる、単一の範囲の値内の幾つかの値を量子化する。本質的には、特定の範囲内の全ての係数は、同じ値に量子化される。これは、図１２により例示されており、値の範囲は、釣鐘状の形状の曲線を有しそして、範囲Ｒ１のような特定の範囲内の全ての値は、Ｒ１’のような１つの量子化された値として復号器に送られ、そして、復号器は、これらの値を特定の値に再構成する。復号器はこれらの値を（ここで、Ｑが量子化ステップサイズであるとすると、例えば、ｆｌｏｏｒ（１／２・ｍｉｎ＋１／２・ｍａｘ）又は、ｍｉｎ＋１／２・Ｑのように、）所定の値に再構成すると仮定する。例えば、値の範囲が１６と３１の間にある場合には、復号器は値が２４であるとみなしうる。１つの実施例では、値として１／２を使用する代わりに、ｆｌｏｏｒ（３／８・ｍｉｎ＋５／８・ｍａｘ）又は、ｍｉｎ＋３／８・Ｑのような、他の値が選択される。ここで、Ｑが量子化ステップサイズである。従って、範囲が１６と３１の間である場合には、復号器は、その値を、２４の代わりに２２に再構成する。
【０１１６】
幾つかの場合には、２つの空間的に隣接する係数は、互いに数値的に近いが、図１２において、範囲Ｒ２の係数値１２０１と範囲Ｒ１の係数値１２０２のような、別の量子化ビン（量子化範囲）内にある場合がある。この量子化の結果では、歪が起こり得る。一実施例では、２つの量子化ビン（量子化範囲）の境界付近にある係数に対しては、符号化器は、係数１２０１のような係数が量子化される範囲Ｒ１のようなビン（範囲）を選択し、これにより、係数１２０２のような隣接する係数との間の一貫性が保たれる。これは、歪を避けるのに役立つ。即ち、この技術は、特に係数が小さいビン（範囲）から高いビン（範囲）に移動したときに、歪を減少し、そして、レートを増加させうる。
【０１１７】
モーションＪＰＥＧに対するフリッカの低減
動画シーケンスにウェーブレット圧縮を適用する場合には、時々、フリッカが発生する。そのようなフリッカの例は、動画シーケンスが再生されるにつれて、連続するフレーム内の、領域内が明るくなる又は暗くなる画像やエッジ変化の出現（エッジ付近のモスキートノイズ）を含みうる。そのフリッカは、動画シーケンスの連続するフレームに対する又は、一時的に視聴される量子化により悪化される雑音に対する、異なった局部的な量子化の適用に依っている場合がある。
【０１１８】
フリッカを減少させるために、連続するフレーム内で、同じ位置内にある及び、同じ値に近い係数は、同じ値になされる。即ち、連続するフレーム内の係数値は、所定の値に設定される。これは、本質的に、符号化中に適用される量子化の形式である。図１３は、フリッカを減少させる処理の一実施例のフロー図である。
【０１１９】
後続するフレーム内の係数値にそのような量子化を適用するか否かの試験は、前のフレーム内の係数に行われた量子化に基づいている。従って、復号器がフレームごとに独立にデータを復号しながら、符号化器は、フリッカを除去するためにフレームの依存性を利用する。
【０１２０】
一実施例では、モーションＪＰＥＧ内のフリッカを減少させるために、係数値は、しきい値に関する互いの関係に基づいて、変更され（量子化され）る。例えば、ＤｎとＤｎ＋１が、量子化前の２つのフレーム内の対応する係数（同じ空間位置と同じサブバンド）である場合には、Ｄ’ｎとＤ’ｎ＋１が、量子化後のこれらの係数を表す場合には、Ｑ（・）がスカラー量子化の場合には、そして、値Ｔがしきい値である場合には、以下の、
ｉｆ（｜Ｑ（Ｄｎ＋１）−（Ｄ’ｎ）｜＜Ｔ）
Ｄ’ｎ＋１＝Ｄ’ｎ
ｅｌｓｅ
Ｄ’ｎ＋１＝Ｑ（Ｄｎ＋１）
が適用される。例えば、値Ｔは、量子化ステップサイズの２倍でもよい。Ｔの他の値は、制限はされないが、
【０１２１】
【外１】
0004177583.tif 000017
である。
【０１２２】
係数値の１つは、他の係数値へのいずれかの所定の近似となるように変更されてもよい。この近似はあるしきい値により決定される。しきい値は、ある基準に基づいて、ユーザが設定するか又は適応的である。このしきい値は、サブバンドと、おそらく、特定の値の一貫性（この係数が近いフレームの数）に基づいて異なっても良い。一実施例では、係数値は他の係数値と等しく設定される。代わりの実施例では、係数は、他の係数値の量子化ビン（量子化範囲）サイズ内に又は、量子化ビン（量子化範囲）サイズの２倍に設定される。
【０１２３】
図１４は、上述の量子化を実行する符号化器（又は、その部分）の一実施例を示す。図１４を参照すると、量子化器１４００は、（図示していない）ウェーブレット変換からの動画シーケンスのフレームに対する係数１４１０を受信する。その係数は、量子化論理１４０１により受信される。係数１４１０に対してメモリ１４０３内に記憶された前のフレームに関する係数値に対してメモリ１４０３内に記憶されたしきい値と、メモリ１４０４から与えられるスカラー量子化値Ｑとを比較する。
【０１２４】
量子化論理１４０１は、（例えば、ゲートを有する論理、回路等のような）比較ハードウェア又は、比較を実行するソフトウェアを含み得る。この比較ハードウェアとソフトウェアは、減算器又は減算動作を実行する。この結果は、コードストリームに量子化される（いくつかの値が変更されたとする）。
【０１２５】
これは、２つ又はそれ以上のフレームにわたって適用される。また、その比較は２つの連続するフレームに制限されない。比較は、例えば、変化が存在するかどうかを決定するために、３，４，５等のフレームをわたっても良い。図２４は、第１と第３のフレーム内の値が、第２のフレーム内の値を設定するのに使用される例を示す。
【０１２６】
量子化は、コードブロックに基づく規則を用いるコードストリーム量子化でもよいことに注意する。
【０１２７】
レート制御、量子化及び、階層化
一実施例では、更に可能性の高いシンボル（ＭＰＳ）であるべき、改良ビットのサブセットを設定することにより、係数の選択的量子化が、符号化中に行われる。これは、ユーザ選択されたビット面で行われてもよい。例えば、背景画像にテキストがある場合には、背景画像に対して要求される符号化されたデータを最小化しながら、シャープなテキスト画像を有することを目的として、ＭＰＳに設定された改良ビットは、テキストに影響を与えるビットに対する実際の値を使用しながら、最後のビット面に対するテキストに影響を与えないものである。
【０１２８】
そのような量子化機構は、不均一な量子化サイズを実行するのに使用される。例えば、少ないビットでの背景を有することを望む場合には、ＭＰＳへの改良ビットの設定は、量子化の形式として動作できる。この量子化機構は、あるレベルの歪を発生するが、コードストリームを伝送するのに必要なビットレートを下げる。
【０１２９】
この技術は、改良パスの間に発生されたビットに与えられうるが、この技術は他の圧縮機構（例えば、下位のパスの間に発生されるリスト、カリフォルニアのメンロパーク（Ｍｅｎｌｏ  Ｐａｒｋ）のリコーシリコンバレーのＣＲＥＷのテールビット、ＭＰＥＧ  ＩＶ  テクスチャーモード等）への応用を有することに、注意する。
【０１３０】
一実施例では、同じ技術が、フレーム間の他の変化に適用されても良い。即ち、一実施例では、１フレーム内のレート歪による変化は、歪効果を防ぐために、後続のフレーム内で行われる。
【０１３１】
レート制御と量子化
一実施例では、ユーザの規定する量子化が提供される。１つの成分の３レベル変換に対しては、レベル１ＨＨ，レベル１ＨＬ及びＬＨ，レベル２ＨＨ，レベル２ＨＬ及ＬＨ，レベル３ＨＨ，レベル３ＨＬ及びＬＨ，及び、レベル３ＬＨの、７の量子化値で十分である。
【０１３２】
量子化値が、（２のべき乗によるスカラー量子化に等しい）切り捨てるビット面である場合には、大部分の応用では、３−ビット値（０．．．７）で十分である。（１２ビット又はそれ以上のビット深さと５又はそれ以上の変換レベルを持つ画像成分に対しては、おそらくより高い量子化が有益である。）値０．．．６は、切り捨てるビット面の数を規定するのに使用され、そして、７は全てのビット面を捨てることを意味するのに使用される。３ビット値は、量子化を実行するために、圧縮（又は、逆圧縮）ハードウェア（例えば、ＪＰＥＧ２０００互換ハードウェア）を制御する、コントローラに書きこまれる。
【０１３３】
３成分カラー量子化に対しては、
−２１値を、各成分に対する別々の値ともに使用でき、
−輝度に対して７且つ、色差に対して７の、１４値を、使用でき、
−輝度に対して７且つ、各色差成分に対して５の、１７値を、４：１：１サブサンプルされたデータに対して使用でき、
−輝度に対して７且つ、色差成分に対して５の、１２値を、４：１：１サブサンプルされたデータに対して使用でき、
−輝度に対して７且つ、各色差成分に対して６の、１９値を、４：２：２サブサンプルされたデータに対して使用でき、そして、
−輝度に対して７且つ、色差成分に対して６の、１３値を、４：２：２サブサンプルされたデータに対して使用できる。
【０１３４】
２１＊３＝６３ビットは８バイトより小さいので、量子化を転送し又は蓄積するのは少ない資源を使用する。中央処理ユニット（ＣＰＵ）は、テーブルから１つの所定の量子化器を選択して、そして、それを、モーションＪＰＥＧ２０００ビデオシーケンスの各フレームに関して特別目的のＪＰＥＧ２０００ハードウェア（チップ）を制御する、ＣＰＵ又は他のコントローラに書き込む。代わりに、ＪＰＥＧ２０００の１つの実行は、各フレームに対して選択されうる８又は１６の異なる量子化器を保持する小さなメモリを有しても良い。
【０１３５】
量子化器を、ビット面を階層に割当てるためにも使用できる。例えば、Ｑ０、Ｑ１及び、Ｑ２は、量子化する符号化パスのビット面を規定する量子化器でもよい。量子化器Ｑ０は、最も多くの損失を発生するが、一方量子化器Ｑ２は、最も少ない損失を発生する。階層１は、Ｑ１により量子化されたのではなく、全てＱ０により量子化されたデータである。階層２は、Ｑ２により量子化されたのではなく、全てＱ１により量子化されたデータである。階層３は、全てＱ２により量子化されたデータである。
【０１３６】
単純な量子化
図１７と１８は、いくつかの係数ＬＳＢを切り捨てるか又は符号化しない、３−レベル５／３変換に対する、例示の量子化器（ラベルＡ．．．Ｑ）を示す。Ｎビット面の切捨ては、２Ｎのスカラー量子化と等価である。前の量子化器に関して、量子化が変化するサブバンドは、破線の四角でハイライトされる。量子化器Ｄ，Ｋ及び、Ｑの全ては、サブバンド間の同じ関係を有する。ＭＳＥに関して又は他の歪基準に関してより良い、他の量子化器が使用され得る。
【０１３７】
例示の以下のＶｅｒｉｌｏｇ（ベリログ）は、単一の量子化値”ｑ”を、７つの量子化器（切り捨てるＬＳＢの数）に変換する。変数ｑ＿１＿ＨＨは、レベル１ＨＨ係数に対して使用され、変数ｑ＿１＿Ｈは、レベル１ＨＬ係数及びＬＨ係数に対して使用される等である。幾つかのｑの連続する値は、
【０１３８】
【外２】
0004177583.tif 000018
である全ての整数ｉに対して、同じ量子化器：０及び１、２及び３、４及び５、８ｉ＋６及び８ｉ＋７となる。
【０１３９】
【数８】
0004177583.tif 000019
色と周波数に対する人間の視覚システムの重み付け
表９は、（ＪＰＥＧ２０００規格のテーブルＪ−２からの）人間の視覚システムの周波数応答を利用する輝度に対して、量子化（例えば、切り捨て）する追加のビット面を示す。１０００画素の視聴距離は、コンピュータモニタ上の画像を視聴するのに適切であろう。より長い視聴距離が、印刷画像又はテレビジョンに対して適切であろう。
【０１４０】
【表９】
0004177583.tif 000020
更に、色差は、輝度よりも更に重く量子化され得る。
【０１４１】
図１９は、図１７（Ｄ）で開始し、且つ（輝度と色差の両方に対して）１０００画素子長距離に対して周波数重みを加え、３ＬＬ色差が変更されないように保持し、４：２：２に関する１ＨＬと１ＨＨ色差を捨て、そして、残りの色差に対して追加の２ビット面が捨てられる、量子化を示す。
【０１４２】
リンギングひずみの無いシャープなテキストは、テキスト／背景に対する正確な階調値よりも望ましい。即ち階調レベルが５０％であり（例えば）、且つ６０％で挿入されているとすると、画像がテキストの場合には、視覚的にしばしば好ましくないということはない。一実施例では、ＬＬ（ＤＣ）係数は、低ビットレートで、非テキスト画像よりも、テキストに対して更に重く量子化される。例えば、８ビットの画像成分に対しては、８，１６又は、３２の量子化ステップサイズがテキストのみの領域に対して使用され、そして、１，２又は、４の量子化ステップサイズがテキストを含まない領域に対して使用されてもよい。これは、高周波数係数に対する更に高い忠実度を可能とし、それにより、シャープなエッジを有するテキストとなる。
【０１４３】
階層に分割するための量子化器の使用
表１０は、１６の例示の量子化器を示す。量子化器１５は無損失である。量子化器８は図１９に示すものと同じである。これらを、サブバンドビット面を階層に分割するのに使用できる。
【０１４４】
【表１０】
0004177583.tif 000021
階層０は、量子化器０により離れて量子化されない全てのデータを含む。これは、３ＬＬの全て、２ＨＬ、２ＬＨ、３ＨＬ、３ＬＨの４ビット面と３ＨＨを除き、２ＨＨの５ビット面を除き、そして、１ＨＬと１ＬＨの６つのビット面を除く、輝度データのみである。階層１は、階層０内でなく、量子化器１により離れた量子化されていないい全てのデータを含む。これは、色差３ＨＬと３ＬＨに対する５ビット面を除き；そして、色差２ＨＬ、２ＬＨ及び３ＨＨに対する６ビット面を除く、１ＨＬと１ＬＨに対するの輝度ビット面５、２ＨＨに対するビット面４、３ＨＬと３ＬＨに対するビット面３；全ての３ＬＬ色差であろう。最後に、階層１５は、１ＬＨ色差のＬＳＢを含む。
【０１４５】
複数の階層とタイル部分を伴なうレート制御
圧縮システムのレート制御に関する幾つかの既知の技術がある。単純な方法は、圧縮された”ユニット”毎に歪を選ぶことである（ユニットはＪＰＥＧの８ｘ８ブロック、動画シーケンス内のフレーム、単一画像のタイル、ウェーブレット符号化された画像内のタイルのサブバンド等である）。選択された歪が、望ましい平均ビットレートよりも高いビットレートを導く場合には、許される歪は、圧縮されている新たなユニットに対して増加される。選択された歪が、望ましい平均ビットレートよりも低いビットレートを導く場合には、許される歪は、圧縮されている新たなユニットに対して減少される。
【０１４６】
更に複雑な方法は、幾つかの”ユニット”からの圧縮されたデータをバッファする。各歪レベルでの各ユニットに対する、ビットレート及び／又は歪は、記憶される。そして、バッファ内の全てのユニットをわたって許される歪は、バッファが全て充填されているときに決定される。バッファが、全体の画像を含むのに十分である場合には、非常に高い品質を得ることができる。ＪＰＥＧ２０００では、階層は品質への増加量を含めるように設計される。従って、歪を選択することは、各コードブロック又はタイルに対して使用する階層の数を選択することを意味する。この種のレート制御の完全な説明は、Ｄａｖｉｄ  Ｔａｕｂｍａｎの画像処理に関するＩＥＥＥ論文”ＥＢＣＯＴを伴なう高性能スケーラブル画像圧縮”内に記載されている。
【０１４７】
この処理には、幾つかの欠点がある。１つの欠点は、全体のコードストリームに対するバッファメモリが必要なことである。第２の欠点は、レーテンシー（待ち時、コードストリームが出力されるまでの時間）が高いことである。第３の欠点は、第２のパスが、大量の時間を使うことである。
【０１４８】
これらの問題を緩和するために、ＪＰＥＧ２０００コードストリームの各タイルは、少なくとも２階層で上述のように符号化される。各タイルの符号化の完了で、パケットの数（例えば、階層、分解能、区画、タイル成分）は、完全なタイル部分として、コードストリームへ出力される。残りの階層は、バッファ内に記憶される。バッファ内の残りの符号化されたデータを通した第２のパスは、オプションである。この第２のパスの間に、各タイルからの余分なパケットは、空間又は次間が許すなら完全なタイル部分としてコードストリームに追加される。固定レートの応用の場合には、所定のレート内のパケットのみが追加される。固定時間の応用では、唯一の数のサイクルが許される。この処理の一実施例は、図１５（Ａ）に示されている。従って、これらは、各タイルに対して２つの完全なタイル部分出力である。
【０１４９】
図１５（Ｂ）は、幾つかの階層、階層１−ｎを示す。階層１は、第１のパスの出力であり、そして、残りの階層は、固定時間又は固定レート時間制限以下の可能性が高い。階層２は、全ての成分にわたって同様な歪を達成しながら、固定時間又は固定レート要求内の、第２のパスでの出力でもよい。
【０１５０】
上述の処理は、バッファが符号化されたデータの一部を記憶することを可能とし、第１のデータはすぐに出力され（伝送され又は記憶され）そして、データを通した第２のパスは処理するデータが少ないので高速であるという、優位点がある。また、バッファは、少ないメモリですむ。
【０１５１】
どのパケットがタイル部分の第１の組みへ行くかを選択する基準は、他のレート制御アルゴリズムと同様である。一実施例では、パケットのレートは、全体の画像の望ましい平均レートよりも小さい。例えば、２．０ｂｐｐでの最終的な圧縮ビットレートが望ましい場合には、第１のパスはコードストリーム内の各タイルに対して１．５ｂｐｐを配置し、そして、各タイルに対してバッファを１ｂｐｐを配置する。
【０１５２】
第２のパスは、残りのデータから各タイルの第２のタイル部分内に配置するパケットを選択する。従って、２．０ｂｐｐ平均符号化を得るために、第１のパスの後の高歪を有する幾つかのタイルは、そのタイルに対して蓄積された残りのデータの全てを受信し、一方、第１のパスの後の低歪を有する他のタイル部分は、伝送される追加のデータを有しない。
【０１５３】
圧縮されたコードストリームデータに対するレート制御
ここで説明する幾つかのレート制御技術は、コードストリーム内で保持する幾つかの数の階層を選択することにより実行される要求に基づいて、圧縮されたコードストリームに行われるレート制御を含む。パーサーは、階層に基づいてビットレートを示す新たなコードストリームを発生するのに使用され得る。このビットレートは、要求により規定されたビットレートと等しいか又はそれより小さい。
【０１５４】
パーサーはここで、”パケット構造”と呼ぶデータ構造を使用し得る。このデータ構造は、例えば、以下に示す多用途パケットデータ構造のような他の目的に使用され得る注意する。一実施例では、このパケット構造は、パケット開始ポインタとパケット長を含む。また、タイル番号、解像度、成分、階層及びパケットが属する区画も含む。最後に、選択フラグも有する。このフラグは、所定の値（例えば、１）に設定されたときに、新たなコードストリームへ書き出す配列内で選択されたかどうかを示す。
【０１５５】
一実施例では、パケットはＣＯＤマーカーにより示された進行順序情報に基づいて、コードストリームから連続する順序で読み出される。
【０１５６】
このバイト数は、要求により望まれるビットレートに基づいて計算される。階層０に属するバイトの数は、合計に加算される。そして、この合計のバイト数は、望ましいバイトの数と比較される。合計が望ましいバイトの数よりも小さい場合には、１つの追加の階層が全体に追加される。この処理は、合計が望ましいバイトの数と等しいか又はそれより大きくなるか又は、全てのパケットは追加されるまで継続する。
【０１５７】
この処理の間に、合計に追加されたそれらのパケットは、構造内で選択フラグにより、選択されたとしてマークされる。
【０１５８】
合計が、望ましいバイトの数と等しい場合には、追加の処理が停止される。合計が、望ましいバイトの数を超える場合には、追加された最後の階層内のパケットは、合計から削除される。これは、ビットレートが、望ましいビットレートよりも低いことを保証するために、行われる。従って、減算ステップ中に、合計から引かれたパケットは、未選択としてマークされる。
【０１５９】
一実施例では、ＳＯＴ、ＣＯＤ、ＰＬＴのような関連するマーカーは、要求に従って、更新される。パケットは新たなコードストリームに書き込まれる。パケット構造は、以下を使用して形成されても良い。
【０１６０】
【数９】
0004177583.tif 000022
多目的パケットデータ構造
一旦パケットが構造内に読み込まれると、上述したのと同じデータ構造を、他の解析オプションを容易にするのに使用することが可能である。
【０１６１】
解像度解析では、除外されるべきパケットが、未選択としてマークされる。例えば、４解像度コードストリームが与えられ、そして、要求が３−解像度コードストリームを生成することであるならば、パーサーは、解像度４に属する全てのパケットを、未選択としてマークする。そして、新たに発生されたコードストリームは、解像度１から解像度３までのパケットのみを含む。
【０１６２】
同様に、成分解析、進行変換解析に対しては、品質解析を、その構造内でパケットを処理するステップごとに実行することが可能である。
【０１６３】
パケットデータ構造は、複雑な要求を扱うことが可能である。例えば、要求は、パーサーに、３−解像度、２−階層そして、１−成分コードストリームを有するコードストリームを発生することを要求する。
【０１６４】
各々の逆変換後のクリッピング
ウェーブレット係数に対して行われる量子化の結果、しばしば、最終的に符号化された画素は、規定のビット深さから、許された画素のもとの範囲の外側にある。典型的には、これらの画素は、元の範囲にクリップされ、それにより、更なる画像処理又は表示装置は、元のビット深さを使用できる。
【０１６５】
例えば、８ビット画像は、それを含めて０と２５５の間の画素値を有する。損失のある圧縮が使用された後に、復号された画像は、−５と２５６のような値を含み得る。８ビット出力を供給するために、これらの値は、それぞれ０と２５５にクリップされる。オリジナル画像が、クリッピング境界の外側の画素を含んでいなかったので、このクリップ手順は、通常は、画素に関する歪を減少する。この手順は、既知であり、ＪＰＥＧ２０００規格により推奨されている。
【０１６６】
最終出力サンプルに関する境界に加えて、ウェーブレット変換の種々の段階で係数を仮定できる、値の境界がある。元の境界の外側にあるようにするために、量子化が、最終的に復号されたサンプルを変更することができるように、量子化は、元の球界の外側にあるように、変換されたウェーブレット係数を部分的に変換できる。それらの係数が、それらの元の境界にクリップされる場合には、歪は減少する。
【０１６７】
例えば、８ビット入力サンプルでを用いる、ＪＰＥＧ２０００により規定されている水平（１次元）５−３可逆変換後に、ローパス係数の最大値は、＋１９１であり、そして、最小な可能な値は、−１９１である。ハイパス係数は、−２５５と２５５を含むその間でなければならない。垂直１次元変換後に、ロー−ロー（Ｌｏｗ−Ｌｏｗ）係数は、−２８６から２８７である。従って、８ビット画像を復号するときに、第１レベルロー−ローパス係数が（より高いレベルからの逆ウェーブレット変換により）発生され、係数は−２８６と＋２８７にクリップされ、歪が減少される。同様に、第１レベル垂直逆変換が行われた後に、ローパス係数は、−１９１，＋１９１にクリップされ、そして、ハイパス係数は、−２５５，２５５にクリップされる。
【０１６８】
各サブバンド、各フィルタ、各変換レベル及び、各画像深さに対して、係数に対する最大値と最小値は異なっている。これらの最大値と最小値は、最大と最小を導く信号を見つけ、そして、前向き圧縮システムを実行し且つ最大値を記録することにより計算できる。極値を導くこの信号は、各画素が最大又は最小のいずれかである入力から来る。どの画素が最大であるべきで、且つどの画素が最小であるべきかは、ウェーブレット係数が負のときには、−１であるシーケンスを畳み込むことによりそして、ウェーブレット係数が負のときには、＋１であるシーケンスを畳み込むことにより決定できる。ＪＰＥＧ２０００パートＩで使用される５−３フィルタに対しては、対象のローパス信号は、[−１＋１＋１＋１−１]であり、ハイパス信号は、[−１＋１−１]である。
【０１６９】
最も大きいＬＬ値を発生する信号（画像）は、
【０１７０】
【数１０】
0004177583.tif 000023
であり、ここで、＋１は、入力最大値（例えば、２５５）により置換されねばならず、そして、−１は、入力最大値（例えば、０）により置換されねばならない。
【０１７１】
不可逆フィルタに対しては、最大値を決定するためにシステムを実際に実行する必要は無く、単にウェーブレット係数を畳み込むことで十分である。可逆５−３フィルタに対しては、しかしながら、係数の計算でｆｌｏｏｒ関数が使用され、そして、正しい最大値を決定するのにも使用される。
【０１７２】
これは、他のフィルタ（例えば、９−７フィルタ）に対して使用され得ることに注意する。
【０１７３】
図２８は、部分的に変換された係数に、クリッピングを伴なう逆変換を適用するための、処理の一実施例のフロー図である。この処理は、ハードウェア（例えば、回路、専用の論理、等）、（汎用コンピュータ又は、専用機械で実行される）ソフトウェア、又は、その両者の組合せを含む処理論理により行われる。
【０１７４】
図２８に戻ると、処理論理は、第１レベルの逆変換を、係数に行う（処理ブロック２８０１）。その後に、処理論理は、部分的に変換された係数を所定の範囲にクリップする（処理ブロック２８０２）。次に、処理論理は、第１レベルの逆変換を、クリップされた係数に行い（処理ブロック２８０３）そして、部分的に変換された係数を、処理ブロック２８０２内の範囲と異なる所定の範囲にクリップする（処理ブロック２８０４）。再び、処理論理は、第１レベルの逆変換を、クリップされた係数に行い（処理ブロック２８０５）そして、部分的に変換された係数を、更に他の所定の範囲にクリップする（処理ブロック２８０６）。
【０１７５】
単純化された色空間の取扱い
色管理を含む典型的な復号処理を図２５に示す。図２５を参照すると、制限されたＩＣＣプロファイルを含むファイルフォーマット（例えば、ＪＰＥＧ２０００規格内に記述されているファイルフォーマット）を有するファイルが、復号処理に供給される。逆圧縮ブロック２５０１は、ファイルのコードストリーム部分を取り、関係モデル化、エントロピー復号を実行し、そして、逆ウェーブレット変換を行うことにより、ファイルを逆圧縮するが、しかし、色変換動作を行わない。コードストリームがＲＣＴ又はＩＣＴ成分を示す場合には、変換は、コードストリームを復号するのに使用されるべきであり、これらは、ブロック２５０２で実行される。即ち、逆ＲＣＴ／ＩＣＴブロック２５０２は、成分と”ＲＣＴ  Ｙ／Ｎ”指示（ｙｅｓならＲＣＴ、ｎｏならＩＣＴ）を得て、そして、規定された逆変換を実行し、そして、（非表示の）ＲＧＢ画素を供給する（構文で規定されている場合には、逆レベルシフトも実行される）。
【０１７６】
最後に、表示装置に関する情報と共に、ファイルフォーマットからのＩＣＣカラープロファイルが、出力画素を発生するために使用される。
【０１７７】
逆ＩＣＣブロック２５０３は、（非表示の）ＲＧＢ画素とＩＣＣプロファイルを受信しそして、表示ＲＧＢ画素に逆色変換を行う。
【０１７８】
図２６は、好適でないカメラ符号化器の一実施例を示す。図２６を参照すると、カメラは、ＹＣｒＣｂ画素を発生する。変換器２６０２は、ＹＣｒＣｂ画素をＲＧＢ画素に変換し、そして、それらを、典型的なＪＰＥＧ２０００符号化器に供給する。符号化器は、ＲＣＴ／ＩＣＴ変換器２６０３を有し、圧縮器２６０４がそれに続く。圧縮器は、コードストリームに対するＩＣＣＡを発生する。
【０１７９】
図２７は、単純なカメラ符号化器の一実施例を示す。即ち、ＲＣＴ／ＩＣＴ変換器２６０３と圧縮器２６０４を含む代わりに、単純なカメラ符号化器は、圧縮器ブロック２７０２のみを含む。図２７を参照すると、カメラ２７０１は、ＹＣｒＣｂ画素を発生し、そして、それらを圧縮器２７０２へ供給する。圧縮器は、ＲＣＴ変換無しのＪＰＥＧ２０００符号化器を含み、そして、（逆ＲＣＴが復号に際して使用されるべきであることを示す構文を伴なう）１と等しいＲＣＴを伴なうＩＣＣＢコードストリームを発生する。ＩＣＣＢとＩＣＣＡの間の関係は、以下の式、
【０１８０】
【数１１】
0004177583.tif 000024
により与えられる。ここで、
【０１８１】
【外３】
0004177583.tif 000025
は、関数合成を示す。
【０１８２】
制限されたＩＣＣプロファイルは、画素の関数に対する”構文”である。カメラは、典型的には、全ての画素に対して同じプロファイルを書き込み、それにより、ＩＣＣＢはオフラインで計算され、そして、各出力プロファイルにコピーされる。従来技術では、各画素に関して動作する、ＹＣｒＣｂ−１とＲＣＴ／ＩＣＴに関するＨＷがなければならない。
【０１８３】
４：２：２：と４：１：１データを、量子化を伴なう４：４：４データとして符号化
ＪＰＥＧ２０００規格は、典型的には、４：４：４フォーマットのデータを扱うのに使用される。４：１：１又は、４：２：２フォーマットのデータを出力のために４：４：４フォーマットでどのように再構成するかを記述することは出来ない。一実施例では、４：１：１データを符号化するときには、符号化器は、１ＨＬ，１ＬＨ及び、１ＨＨ係数をゼロとして扱う。４：２：２データを符号化するときには、符号化器は、１ＨＬ，と１ＨＨ係数をゼロとして扱う。従って、余分なサブバンド内の全データは、ゼロに量子化され、復号器はその予想するようにコードストリームを受信できる。言いかえると、符号化されたデータは、重く量子化された４：４：４データに似ている。
【０１８４】
サムネール、モニタ、プリンタ及び、全解像度及び、品質に対するファイル順序
複数の解像度での複数の画像は、多くの画像処理の状況において重要である。応用に依存し、ユーザは、異なる解像度の異なる画像選択することを望む場合がある。例えば、サムネール画像は、多数の画像のインデックスとして使用されうる。また、スクリーン解像度画像は、それを表示するモニタに送るのに使用され得る。プリント解像度画像はプリンタ応用に対する低解像度でもよい。
【０１８５】
一実施例では、画像のコードストリームは、セクションに組織化され、それにより、例えば、サムネール版、スクリーン版、プリント版及び、無損失版のような画像の異なるバージョンは、品質により連続的である。
【０１８６】
一実施例では、パケットは、あるパケットがサムネールのような特定の解像度に対応するように構成される。他のパケットとこれらのパケットの組合せは、モニタ解像度画像を表し、そして、他のパケットと組み合わされたときにはプリンター版等を表す。ＰＯＣとタイル部分を使用して、コードストリームの部分は、共にグループ化される。例えば、サムネールサイズの全てのタイルは、共にグループ化され、他の解像度のタイルが次に続き、そして他の解像度のタイルが次に続く等である。図２１は、単一変換器対する、例示の進行を示す。各タイルのサムネールは、ファイルの先頭でタイル部分内にグループ化される。図２１Ａは、タイル部分２１０１のみが、サムネール画像に対して使用される部分であることを示す。図２１Ｂは、モニタ解像度に対しては、タイル部分２１０２−２１０４が、タイル部分２１０１と共に含まれることを示す。図２１Ｃは、プリンタ解像度に対しては、タイル部分２１０５と２１０６が、タイル部分２１０１−２１０４と共に含まれることを示す。最後に、図２１Ｄは、データの無損失版には、残りの３つのタイル部分２１０７−２１０８が、他のタイル部分と共に含まれることを示す。タイル部分のこれらの組みは、この進行順序でサーバ上に配置される。
【０１８７】
タイル部分のグループ化されたものへアクセスする処理の一実施例を、図１６に示す。その処理は、ハードウェア（例えば、専用の論理、回路等）、（汎用コンピュータシステム又は、専用機械で実行される）ソフトウェア、又は、その両者の組合せを含む処理論理により行われる。以下のステップでは、画像は十分な解像度レベルと４つのサイズに画像を分割する階層で変換される。
【０１８８】
図１６を参照すると、処理論理は最初に、サムネールに対して正しい解像度と階層化を決定する（処理ブロック１６０１）。一実施例では、サムネールに対して正しい解像度と階層化を決定するために、処理論理は、各タイルに対してその解像度と階層に制約されるＰＯＣを形成し、そして、タイル部分の組みを形成し、そして、コードストリーム内の各タイルに対してこのＰＯＣを配置する。
【０１８９】
次に、処理論理は、サムネールパケットが既にコードストリーム内にあるとして、モニタ解像度に対して処理ブロック１６０１を繰り返す（処理ブロック１６０２）。そして、処理論理は、モニタパケットが既にコードストリーム内にあるとして、プリンタ解像度に対して処理ブロック１６０１を繰り返す（処理ブロック１６０３）。
【０１９０】
最後に、各タイルに対して、解像度と階層の端にＰＯＣマーカーを形成する（処理論理１６０４）。一実施例では、解像度と階層の端にＰＯＣマーカーを形成するのは、タイル部分の４つの組みと無損失変換のための残りのタイル部分を形成することにより実行される。
【０１９１】
ＰＯＣ内に定義されるパケットの特定の順序は、重要では無く単なる制限であることに注意する。
【０１９２】
例示のコンピュータシステム
図２０は例示のコンピュータシステムのブロック図である。図２０を参照すると、コンピュータシステム２０００は、例示のクライアント１５０又はサーバ１００コンピュータシステムを有してもよい。コンピュータシステム２０００は、情報を通信するための、通信機構又はバス２０１１と、情報を処理するためにバス２０１１に接続された、プロセッサ２０１２を有する。プロセッサ２０１２は、マイクロプロセッサに制限はされないが、例えば、ＰｅｎｔｉｕｍＴＭ、ＰｏｗｅｒＰＣＴＭ、ＡｌｐｈａＴＭ等のような、マイクロプロセッサを有する。
【０１９３】
システム２０００は、更に、プロセッサ２０１２をにより実行される情報と命令を記憶するバス２０１１に接続された、ランダムアクセスメモリ（ＲＡＭ）又は、他のダイナミックメモリ装置２００４（主メモリと呼ぶ）を有する。主メモリ２００４は、プロセッサ２０１２をにより命令を実行する間に、一時的な変数又は他の中間情報を記憶するのに使用されてもよい。
【０１９４】
コンピュータシステム２０００は、プロセッサ２０１２をに対するスタティック情報と命令を記憶するためにバス２０１１に接続された読出し専用メモリ（ＲＯＭ）及び／又は他のスタティックメモリ装置２００６、磁気ディスク又は、光システム及び、その対応するディスクドライブのような、データ記憶装置２００７も有する。データ記憶装置２００７は、情報と命令を記憶するバス２０１１に接続されている。
【０１９５】
コンピュータシステム２０００は、更に、コンピュータユーザに情報を表示するために、バス２０１１に接続された、陰極線管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）のような表示装置２０２１を有する。英数字及び他のキーを含む英数字入力装置２０２２も、プロセッサ２０１２をへの情報とコマンド選択を通信するために、バス２０１１に接続されている。更なるユーザ入力装置は、方向情報とコマンド選択をプロセッサ２０１２へ通信しそして、ディスプレイ２０２１上でカーソルの移動を制御する、マウス、トラックボール、トラックパッド、スタイラス又は、カーソル方向キーのような、カーソル制御２０２３である。
【０１９６】
バス２０１１に接続された他の装置は、ハードコピー装置２０２４であり、これは、命令、データ又は、他の情報を、紙、フィルム又は、同様な形式の媒体に印刷するのに使用される。更に、スーピーカー及び／又はマイクロフォンのようなサウンド記録及び再生装置も、オプションでコンピュータシステム２０００とオーディオインターフェースするバス２０１１に接続されてもよい。バス２０１１接続されている他の装置は、電話又は携帯装置と通信する、有線／無線通信機能２０２５である。
【０１９７】
システム２０００にどの又は全ての構成要素と関連するハードウェアは、本発明の内で使用され得ることに注意する。しかしながら、コンピュータシステムの他の構成は、幾つかの又は全ての装置を含み得ることは理解されよう。
【０１９８】
本発明は多くの変形と改良があることは、前述の説明を読めば当業者には明らかとなるが、説明した特定の実施例は、本発明を制限するものと解してはならない。従って、詳細な種々の実施例の参照は、本発明に必須であると考えられる構成のみを列挙している本発明の請求の範囲を制限するものではない。
【０１９９】
【発明の効果】
本発明は、ＪＰＥＧ２０００内の選択項目を使用することによる、高速、低コスト、小メモリ及び／又は、特徴の豊富な実行を可能とする、圧縮と逆圧縮機構の改善をおこなうことができる。
【図面の簡単な説明】
【図１】ＪＰＥＧ２０００規格復号機構のブロック図である。
【図２】メモリ内の画像の構成の一実施例を示す図である。
【図３】前向き変換に対して係数がどのように記憶されるかを概念的に示す種々のレベルに対する変換メモリの構成を示す図である。
【図４】入力画像データと画像データの種々の分解レベルを前向き変換と逆変換中に記憶できる単一メモリの実施例を示す図である。
【図５】入力データを扱う処理の一実施例を示す図である。
【図６】（Ａ）は進行順序変換パーサーを有するシステムを示す図であり、（Ｂ）は解像度進行コードストリームから品質進行コードストリームへ変換する進行変換器を示す図である。
【図７】（Ａ）は１つの進行順序から他の進行順序へコードストリームを変換する複数の経路を示す図であり、（Ｂ）は１つの進行順序から他の進行順序へコードストリームを変換する単純化された変換経路の一実施例を示す図である。
【図８】進行順序変換を実行する処理の一実施例を示す図である。
【図９】サイドバンド情報に基づいてコードストリームの部分を選択する復号器を示す図である。
【図１０】復号時に階層を使用する処理のフローを示す図である。
【図１１】編集処理の一実施例フローを示す図である。
【図１２】特定の値に量子化される値の範囲のベル型カーブを示す図である。
【図１３】フリッカを減少させる処理の一実施例を示す図である。
【図１４】フリッカを減少させる量子化を実行する符号化器（又は、その部分の一実施例を示す図である。
【図１５】（Ａ）はレート制御を実行する処理を示す図であり、（Ｂ）は第１と第２のパスを受けうる例示の幾つかの階層を示す図である。
【図１６】タイル部分のグループにアクセスする処理の一実施例を示す図である。
【図１７】３レベル５，３変換に対する１つの成分に対する量子化器を示す図である。
【図１８】３レベル５，３変換に対する１つの成分に対する量子化器を示す図である。
【図１９】ＨＶＳ重み付けされた量子化の例を示す図である。
【図２０】コンピュータシステムの一実施例のブロックを示す図である。
【図２１】単一サーバに対する、部分を伴なう例示の進行を示す図である。
【図２２】５，３不可逆変換に対する階層化の例を示す図である。
【図２３】変換が５レベルを有し且つデータは階層０−３に分割されている例を示す図である。
【図２４】第１と第３フレームの値が第２のフレームの値を設定するのに使用される、フリッカが避けられ得る状況の一例を示す図である。
【図２５】色の取扱いを含む従来技術の復号処理のブロック図である。
【図２６】好ましくないカメラ符号化器の一実施例を示す図である。
【図２７】より単純なカメラ符号化器の一実施例を示す図である。
【図２８】部分的に変換された係数にクリップを行う逆変換を行うための処理の一実施例のフローを示す図である。
【符号の説明】
１０１  データ整列ブロック
１０２  算術符号化器
１０３  係数ビットモデル化ブロック
１０４  量子化ブロック
１０５  ＲＯＩブロック
１０６  変換ブロック
１０７  成分変換
２０１  メモリ
２０２  ウェーブレット変換処理論理
２０２Ａ  メモリアクセス論理
２０２Ｂ  ウェーブレット変換
２１０  タイル
３０１  入力タイル
３１０、３１１  入力行
５０１  メモリ
５０２１−５０２Ｎ  係数バッファ
５０３  関係モデル
５０４  エントロピー符号化器
５０５  符号化データメモリ
６０１  パーサー
６０２  サーバ
６０３  全画像
６０４  メモリ
９０１  復号器
９０２  量子化論理
９０３  メモリ
９０４  コードストリーム
９０５  復号論理
１４００  量子化器
１４０１  量子化論理
１４０３  メモリ
１４０４  メモリ
１４１０  係数
２０００  コンピュータシステム
２００７  データ記憶装置
２０１１  通信機構又はバス
２０１２  プロセッサ
２０２１  ディスプレイ
２０２２  英数字入力装置
２０２３  カーソル制御
２０２４  ハードコピー装置
２０２５  有線／無線通信能力
２５０１  逆圧縮ブロック
２５０２  逆ＲＣＴ／ＩＣＴブロック
２５０３  逆ＩＣＣブロック
２６０２  変換器
２６０３  ＲＣＴ／ＩＣＴ変換器
２６０４  圧縮器
２７０２  圧縮器ブロック
【図１】
0004177583.tif 000026
【図２】
0004177583.tif 000027
【図３】
0004177583.tif 000028
【図４】
0004177583.tif 000029
【図５】
0004177583.tif 000030
【図６】
0004177583.tif 000031
【図７】
0004177583.tif 000032
【図８】
0004177583.tif 000033
【図９】
0004177583.tif 000034
【図１０】
0004177583.tif 000035
【図１１】
0004177583.tif 000036
【図１２】
0004177583.tif 000037
【図１３】
0004177583.tif 000038
【図１４】
0004177583.tif 000039
【図１５】
0004177583.tif 000040
【図１６】
0004177583.tif 000041
【図１７】
0004177583.tif 000042
【図１８】
0004177583.tif 000043
【図１９】
0004177583.tif 000044
【図２０】
0004177583.tif 000045
【図２１】
0004177583.tif 000046
【図２２】
0004177583.tif 000047
【図２３】
0004177583.tif 000048
【図２４】
0004177583.tif 000049
【図２５】
0004177583.tif 000050
【図２６】
0004177583.tif 000051
【図２７】
0004177583.tif 000052
【図２８】
0004177583.tif 000053