(57)【特許請求の範囲】
【請求項１】
Ｋ行を有する画像を処理するための装置であって、該Ｋは正の整数であり、
前記画像の垂直方向に重なるように該画像から切り出されるＮ行からなる複数のＮ行ウィンドウを、順次画像バッファに供給する手段であって、該Ｎは正の整数であり、１＜Ｎ＜＜Ｋであり、かつＮはＫから独立している、手段と、
前記画像バッファに供給される前記Ｎ行ウィンドウの単位で、サブバンド分解フィルタリングを実行する第１の処理手段であって、
前記画像バッファから読み出した前記Ｎ行ウィンドウに対して、垂直方向の高域フィルタリングおよび垂直方向の低域フィルタリングを実行する垂直高域フィルタおよび垂直低域フィルタと、
該垂直高域フィルタに接続され、前記読み出したＮ行ウィンドウに対して前記垂直方向の高域フィルタリングを実行することによって得られた該垂直高域フィルタからの出力に対して、水平方向の高域フィルタリングおよび低域フィルタリングを実施する、第１の水平高域フィルタおよび水平低域フィルタと、
該垂直低域フィルタに接続され、前記読み出したＮ行ウィンドウに対して前記垂直方向の低域フィルタリングを実行することによって得られた該垂直低域フィルタからの出力に対して、水平方向の高域フィルタリングおよび低域フィルタリングを実施する、第２の水平高域フィルタおよび水平低域フィルタと、を有する、第１の処理手段と、
を備える装置。
【請求項２】
前記Ｎ行ウィンドウのそれぞれは、前に前記画像バッファに供給されたＮ行ウィンドウからの１行を少なくとも保持する、請求項１に記載の装置。
【請求項３】
前記Ｎは、フィルタ長の２倍である、請求項１に記載の装置。
【請求項４】
さらに、さらなるサブバンド分解フィルタリングを実行するＭ個の付加縦続処理手段を備え、
該付加縦続処理手段のそれぞれは、複数のサブバンドを生成するよう垂直高域フィルタおよび垂直低域フィルタを有しており、
該付加縦続処理手段のそれぞれは、さらに、前の付加縦続処理手段によって生成された最低サブバンドのＮ行ウィンドウに対して、垂直高域フィルタリングおよび垂直低域フィルタリングを実行する、
請求項１に記載の装置。
【請求項５】
さらに、前記付加縦続処理手段によって生成される変換係数からビットストリームを生成する符号器を備え、該符号器は、
該変換係数のビットプレーンを生成し、
前記ビットプレーンを異なるサブシーケンスに分解し、
記述されるビットあたりの歪み減少量が減っていくように、前記サブシーケンスを順序付け、
前記順序付けられたサブシーケンスを符号化し、
前記サブシーケンスを順序通りビットストリームに配置する、よう構成される、
請求項４に記載の装置。
【請求項６】
さらに、前記付加縦続処理手段によって生成される変換係数からビットストリームを生成する符号器を備え、該符号器は、４分木分解およびビットプレーン符号化の組み合わせを用いる、
請求項４に記載の装置。
【請求項７】
前記ビットストリームは、
前記変換係数のブロックに対して４分木分解を実行して、該ブロックのそれぞれを複数のサブブロックに分解し、有効な係数を含むサブブロックを識別し、該有効な係数を含むサブブロックのすべてをビットプレーン符号化し、有効でない係数を持つブロックに対して、追加の４分木分解を実行する、
ことにより生成される、
請求項６に記載の装置。
【請求項８】
前記第１の処理手段は、複数のサブバンドを生成し、
前記複数のサブバンドのそれぞれは、一度にＳ行生成され、該Ｓは正の整数であり、かつＳ＜Ｎであり、
前記複数のサブバンドのうちの１つのサブバンドは、さらに分解され、該複数のサブバンドのうちの他のサブバンドは、一度にＰ行符号化され、該Ｐは正の整数であり、かつＰ＞Ｓである、
請求項１に記載の装置。
【請求項９】
さらに、複数のエントロピー符号器を備え、
該複数のエントロピー符号器のそれぞれは、前記他のサブバンドのそれぞれに対応しており、
前記複数のエントロピー符号器のそれぞれは、該対応するサブバンドの前記Ｐ行が利用可能となると直ちに、該対応するサブバンドを符号化する、
請求項８に記載の装置。
【請求項１０】
それぞれの符号器は、複数のブロックとして、前記サブバンドのＰ行を符号化し、該複数のブロックは、互いに独立に符号化される、
請求項８に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データ圧縮に関し、より具体的には、画像のサブバンド分解に関する。
【０００２】
【従来の技術】
データ圧縮は、コンピュータ上に大型のデータファイルを格納するコストを削減するため、およびコンピュータ間で大型のデータファイルを伝送する時間を短縮するためにしばしば使用される。いわゆる「変換方法」により、データは、周波数領域でデータを表す係数に変換される。係数を、データの質に重大な影響を与えずに量子化することができ（損失圧縮）、最終的には量子化された係数からこのデータが再構成される。その後、係数の冗長部分を、再構成されたデータの質に影響を与えることなく低減または除去（無損失圧縮）することができる。
【０００３】
周知の変換の１つにウェーブレット(Wavelet)変換がある。ウェーブレット変換を使用して、サブバンド分解を実行し、データを階層的な多段階表現で記述する係数を生成することができる。ウェーブレット変換は、画像の圧縮および信号の分析に有効であることが立証されている。ウェーブレット変換は、新しい「ＪＰＥＧ−２０００」標準の変換として提案されている。
【０００４】
サブバンド分解は、典型的には、画像全体をメモリに格納し、画像全体の高域および低域フィルタリングを一方の方向（たとえば、垂直方向）について実行し、次にフィルタリングされた画像全体の高域および低域フィルタリングを他方の方向（たとえば、水平方向）について実行する。
【０００５】
ウェーブレット変換の利点の中でも特に有利なのが、変換係数を階層構造で順序付け、「埋め込みビットストリーム（embedded bitstream）」で伝送できることである。埋め込みビットストリームは、ビットストリームのプレフィックスが、画質の最高可能レベルにおいて、より低いレートのデータ記述の連続体を生み出すという特性を持つ。たとえば、埋め込みビットストリームが画像データの伝送中に切り捨てられた場合、すでに伝送された情報によって画像全体を再構成することができる。再構成された画像の画質は、伝送された情報の量によって決まる。埋め込みビットストリームが切り捨てられた場合、画質は低下するが、伝送されたビットから完全な画像が再構成される。対照的に、非埋め込み伝送の切り捨ては、画像の一部の行を再構成できるにすぎない。
【０００６】
追加情報が伝送されると、再構成画像の画質は向上する。ビットストリーム全体が切り捨てられずに伝送された場合は、無損失またはほとんど無損失の画像を再構成することができる。
【０００７】
上記の伝送は、「画質によるプログレッシブ（progressive-by-quality）」の画像伝送と呼ばれることが多い。係数はビットプレーンにより記述され、最も有効な係数ビット（すなわち、最も重要な情報を運ぶ係数ビット）が最初に伝送される。
【０００８】
他の種類の伝送は、「解像度によるプログレッシブ（progressive-by-resolution）」伝送とよく呼ばれる。解像度によるプログレッシブ伝送は、画像解像度のレベルの違いに従った係数の順序付けを含む。レベルの違いは、埋め込みビットストリーム内のマーカーによって識別される。コンピュータは、このマーカーを使用してビットストリームを解析し、受信コンピュータによって指定された解像度に対応する係数のデータを伝送する。受信コンピュータは、指定された解像度に従って画像を再構成することができる。
【０００９】
画像の圧縮用のフィルタおよび符号器を、１つの特定用途向け集積回路（「ＡＳＩＣ」）すなわち「チップ」上に作製することができる。また、メモリの小さなキャッシュをそのチップ上に作製することもできる。
【００１０】
フィルタリングに先だって、画像全体は、ＤＲＡＭのようなオフチップ・メモリに格納されるのが一般的である。画像全体を、ＳＲＡＭのようなより高速なオンチップ・メモリに格納することができるが、オンチップ・メモリは、一般にオフチップ・メモリよりずっと高価である。さらに、画像が完全にオンチップ・メモリに格納されると、チップの使用は、あるサイズの画像に制限されることになる。
【００１１】
しかし、画像全体をオフチップ・メモリに格納することにもまだ問題はある。この場合も、メモリは、画像全体を格納できるだけの十分な大きさを持たなければならない。さらに、オフチップ・メモリは、ＡＳＩＣのコストと比較して高価である。メモリのサイズが増加すると、サブバンド分解を実行するコストも増加する。このことは、画像圧縮および画像再構成についても当てはまる。
【００１２】
たとえば、１２００ｄｐｉ（１インチあたりのドット数）で、かつ１画素あたり２４ビットの印刷アプリケーションでは、約３８０ＭＢを使用してページ全体を格納する（圧縮しないで）。近い将来、解像度は、１画素あたり２４ビットで２４００ｄｐｉまで増加するであろう。これには、ページ全体を格納するために、さらに多くのメモリが必要になる。メモリを増加するコストは些細に見えるかもしれないが、プリンタのように容積が大きく、かつ利益幅の低いアイテムにとって、コストの増加はきわめて重大である。
【００１３】
オフチップ・メモリに関わる他の問題は、入出力帯域幅である。画像のサイズおよび解像度が増加すると、コンピューターの複雑さおよびメモリ入出力帯域幅に対する制約が強まる。増加する入出力トランザクション数に対処するために入出力帯域幅を増やすことにはコストがかかるが、入出力帯域幅を維持することは（画像サイズおよび解像度が増加したとする）、画像印刷やビデオ・モニタ上の画像表示のような様々なアプリケーションで、許容できない待ち時間が生じることがある。
【００１４】
【発明が解決しようとする課題】
オフチップ・メモリのサイズを削減したいニーズがある。また、チップおよびオフチップ・メモリ間の入出力操作数を削減したいニーズがある。画像解像度および画像サイズが大きくなるにつれて、これらのニーズは大きくなっていくであろう。
【００１５】
さらに、画像のサイズによって制限されることなく、異なるアプリケーションに使用することができるチップを備えることが好ましい。また、チップが、埋め込みビットストリームを生成する、または埋め込みビットストリームから画像を再構成することが望ましい。
【００１６】
【課題を解決するための手段】
これらのニーズおよび要望は、この発明の様々な側面により達成される。この発明の１つの側面に従うと、画像は、複数のサブバンドに分解される。画像のＮ行ウィンドウが連続的に与えられる。ここで、Ｎは正の整数であり、１＜Ｎ＜＜Ｋであり、ＮはＫから独立している。第１のフィルタ・ステージで、垂直方向の高域および低域フィルタリングが、与えられたそれぞれのＮ行ウィンドウに対して実行される。したがって、画像全体が複数のサブバンドに分解されるまで、一度に画像のＮ行がフィルタリングされる。
【００１７】
この発明の他の側面に従うと、サブバンドの変換係数が、埋め込みビットストリームに符号化される。埋め込みビットストリームは、圧縮された形態で画像を表す。
【００１８】
この発明のまた別の側面に従うと、埋め込みビットストリームを複数の行に復号化するステップと、所与の分解レベルのサブバンドのそれぞれについてＮ行のチャンクを形成するステップと、Ｎ行のそれぞれのチャンクに対して逆水平フィルタリングを実行するステップと、水平にフィルタリングされたチャンクに対して逆垂直フィルタリングを実行するステップとにより、埋め込みビットストリームから画像を再構成することができる。
【００１９】
この発明の他の側面および利点は、この発明の原理の例を説明する図と共に、以下に示す詳細な説明から明らかになるであろう。
【００２０】
【発明の実施の形態】
説明のための図に示すように、この発明は、大型画像を圧縮および再構成する方法および装置によって実現される。装置は、チップおよびオフチップ・メモリを備え、画像の圧縮または再構成を実行する。オフチップ・メモリのサイズを最小にして、クライアント−サーバーのアプリケーションおよびホスト−プリンタのアプリケーションのようなアプリケーションにおける、圧縮および再構成のコストを削減する。また、チップおよびオフチップ・メモリ間の入出力トランザクション数も削減され、画像の圧縮および再構成を実行する速度が増加する。
【００２１】
図１および図２は、画像１０から埋め込みビットストリーム（たとえば、画像のビットマップ）を生成する方法を示す。画像１０はＫ本の行（ライン）を含み、ここでＫは正の整数である。それぞれのレベルにおいて、サブバンド分解が一度にＮ行に対して実行される。ここでＮは正の整数であり、１＜Ｎ＜＜Ｋ、かつＮはＫから独立している。図１は、Ｎ行の第１のウィンドウ１２（実線で示す）およびＮ行の第２のウィンドウ１４（点線で示す）を示す。これらのウィンドウおよび他のウィンドウは、画像１０を上から下に、画像のＫ本すべての行に及ぶまで「タイルのように並べて」表示される。
【００２２】
また、図１は、第１のウィンドウ１２および第２のウィンドウ１４の重なりを示す。第１のウィンドウ１２の少なくとも１つの行が、第２のウィンドウ１４に保持される。これは、他のすべてのウィンドウについても同様である。処理されるそれぞれのウィンドウは、直前のウィンドウの少なくとも１行を含む。
【００２３】
ウィンドウは、連続して処理される（ブロック１００）。こうして、第１のウィンドウ１２が処理され、次に第２のウィンドウ１４が処理され、次に第３のウィンドウ（図示せず）が処理される。このように、画像のＫ本の行すべてが分解されるまで、第１レベルにおける処理が続行する。画像の最上部から始まるウィンドウが、第１のウィンドウ１２の前に与えられて処理されることは、理解されるであろう。
【００２４】
それぞれのウィンドウを、利用可能になると直ちに処理することができる。すべてのウィンドウが利用可能になるのを待ってから処理を開始する必要はない。
【００２５】
Ｎ行のそれぞれのウィンドウは、サブバンド分解を実行することにより処理される（ブロック１０２）。ウェーブレット変換を使用することができる。垂直高域および低域フィルタリングがウィンドウに対して実行され、次に水平高域および低域フィルタリングが実行される。結果として、高域水平、高域垂直サブバンドＨＨ、高域水平、低域垂直サブバンドＨＬ、低域水平、高域垂直サブバンドＬＨ、および低域水平、低域垂直サブバンドＬＬについて、変換係数の１または複数の行１６が得られる（図３を参照）。
【００２６】
十分な数の変換係数の行が利用可能になるまで、連続するウィンドウが分解される（ブロック１０４）。十分な数の変換係数の行が利用可能になると、３つのサブバンド（ＨＨ、ＨＬおよびＬＨ）の変換係数が量子化され（ブロック１０６）、順序付けられて（ブロック１０８）、エントロピー符号化される（ブロック１１０）。エントロピー符号化されたビットは、直ちにまたは後で、ビットストリームに配置される。
【００２７】
十分な数の変換係数の行が利用可能になると、最低サブバンド（ＬＬ）がさらに分解される（ブロック１１２）。この第２レベルの分解に続いて、最低サブバンドがさらに分解され、これより高い（すなわち高域）サブバンドが量子化され、順序付けられ、エントロピー符号化される。エントロピー符号化されたビットは、ビットストリームに配置される。
【００２８】
この方法を、チップおよびオフチップ・メモリを備えるハードウェアによって実現することができる。このように具現化されると、この方法により、オフチップ・メモリのサイズを低減することができる。画像全体を格納して処理するのとは異なり、一度に１つのウィンドウを格納して処理することができる。また、この方法は、チップおよびオフチップ・メモリ間の入出力トランザクション数を低減することもできる。
【００２９】
図４は、チップ２２およびオフチップ・メモリ２４を備え、画像１０から埋め込みビットストリームを生成するシステム２０を示す。チップ２２およびオフチップ・メモリ２４は、コンピュータのような第１のマシン２６の一部であってもよい。
【００３０】
さらに、システム２０は、スキャナのような撮像装置２８を備える。撮像装置２８は、一度に複数行の画像データ（たとえば、画像の輝度またはクロミナンスデータ）を供給する。撮像装置２８は、一度にＮ行を供給することができる。Ｎ行は、オフチップ・メモリ２４にバッファされる。サーキュラーバッファリング技法を使用して、それぞれのウィンドウが、直前のＮ行ウィンドウからの少なくとも１行を保持するようにすることができる。それぞれのＮ行ウィンドウは、オフチップ・メモリ２４において利用可能になると、処理される。
【００３１】
チップ２２は、サブバンド分解フィルタの第１ステージ３０を備える。チップ２２は、オフチップ・メモリ２４からＮ行ウィンドウを読み取り、第１ステージ３０は、複数のサブバンドＨＨ、ＨＬ、ＬＨおよびＬＬを生成し、こうして、それぞれのサブバンドが、一度にＳ行生成される。ここで、Ｓは正の整数であり、Ｓ＜Ｎである。たとえば、Ｎ＝１０かつＳ＝１の場合、１０行ウィンドウの分解により、それぞれのサブバンドＨＨ、ＨＬ、ＬＨおよびＬＬについて１行の変換係数が生成される。
【００３２】
さらに、チップ２２は、高い方のサブバンドＨＨ、ＨＬおよびＬＨに対応する、第１、第２および第３の符号器３２、３４および３６を備える。それぞれの符号器３２、３４および３６は、対応するサブバンドのＰ行が利用可能になると直ちに、そのＰ行に対してエントロピー符号化を実行する（Ｐは正の整数であり、Ｐ＞Ｓである）。このように、第１の符号器３２は、サブバンドＨＨのＰ行が利用可能になったときにサブバンドＨＨを符号化し、第２の符号器３４は、サブバンドＨＬのＰ行が利用可能になったときにサブバンドＨＬを符号化し、また第３の符号器３６は、サブバンドＬＨのＰ行が利用可能になったときにサブバンドＬＨを符号化する。
【００３３】
さらに、チップ２２は、サブバンド分解フィルタの、Ｍ個のさらなる縦続ステージを備える。それぞれの付加ステージ３０は、直前のステージで生成された最低サブバンドのＮ行ウィンドウに対して分解を実行する。第１、第２および第３の符号器３２、３４および３６が、それぞれの付加ステージ３０について設けられる。Ｍ番目のステージ３０の最低サブバンドは、第４の符号器３８によって符号化される。
【００３４】
それぞれの符号器３２、３４、３６および３８は、エントロピー符号化を実行する。また、それぞれの符号器３２、３４、３６および３８は、符号化の前に、量子化およびビットの順序付けを実行する。
【００３５】
さらに、チップ２２は、ＳＲＡＭのようなオンチップ・メモリ４０を備える。オンチップ・メモリ４０を、それぞれのステージ３０によって実行されるフィルタリング操作に使用することができる。
【００３６】
また、チップ２２は、コントローラ４２を備え、オフチップ・メモリ２４における画像の行のバッファリングを制御し、Ｎ行のウィンドウがバッファされたときを判断し、オフチップ・メモリ２４からＮ行ウィンドウをアクセスする。代わりに、そのような制御を、撮像装置２８によって、または第１のマシン２６のホスト・プロセッサによって実行することもできる。
【００３７】
さらに、システム２０は、復号器を有する第２のマシン４４を備え、埋め込みビットストリームから画像を再構成する。埋め込みビットストリームの再構成については、図１４および図１５を参照して後で説明する。第２のマシン４４がプリンタである場合、再構成された画像を印刷することができる。第２のマシン４４がコンピュータである場合、再構成された画像をビデオモニタ上に表示することができる。
【００３８】
例として説明する操作では、大型画像が撮像装置２８により走査され、１行ずつオフチップ・メモリ２４に格納される。チップ２２は、画像を埋め込みビットストリームに圧縮する。埋め込みビットストリームを、第１のマシン２６に格納することができ、または直接第２のマシン４４に送信して表示または印刷することもできる。復号器４６は、埋め込みビットストリームから画像を再構成し、再構成された画像は、一度に複数行が表示または印刷される。
【００３９】
印刷操作中に埋め込みビットストリームが切り捨てられた場合、第２のマシン４４によって少なくともいくつかのサブバンドが受信されているならば、第２のマシン４４は、なお画像全体を表示または印刷することができる。しかし、切り捨てにより損失したサブバンドに含まれる詳細は、表示されない。
【００４０】
図５は、フィルタ・ステージ３０の第１の実施形態をさらに詳しく示す。第１のステージ３０は、垂直高域フィルタ５０および垂直低域フィルタ５２を備え、オフチップ・メモリ２４にバッファされるそれぞれのＮ行ウィンドウに対して、垂直高域および低域フィルタリングを実行する。垂直フィルタリングの結果は、全体の行が水平フィルタリングに利用可能になるまで、一対の遅延素子５４および５６によって一時的に遅延される。さらに、フィルタ・ステージ３０は、第１の対の水平高域および低域フィルタ５８および６０を備え、垂直高域フィルタ５０の出力に対して水平高域および低域フィルタリングを実行する。さらにフィルタ・ステージ３０は、第２の対の水平高域および低域フィルタ６２および６４を備え、垂直低域フィルタ５２の出力に対して水平高域および低域フィルタリングを実行する。
【００４１】
水平高域および低域フィルタ５８、６０、６２および６４は、従来のものである。これらは、全体の行を水平方向にフィルタリングすることができる。垂直フィルタ５０および５２は、畳み込みまたはリフティング(lifting)を実行することができる。Ｄａｕｂｅｃｈｉｅｓの９／７および５／７の双直交フィルタのようなフィルタを、垂直フィルタリングに使用することができる。たとえば、Ｄａｕｂｅｃｈｉｅｓの９／７双直交フィルタでは、９個の係数すべてが一方の垂直フィルタによって畳み込みに使用され、７個の係数すべてが他方の垂直フィルタによって畳み込みに使用される。係数ビットは、オフチップ・メモリ２４に格納され、そこからアクセスされる。また、符号(sign)、有効性および現ビットプレーンに関する情報が、オンチップ・メモリ４０に格納される。
【００４２】
ウィンドウ・サイズ（すなわちＮ）は、フィルタ長の約２倍である。たとえば、５／３双直交フィルタでは、ウィンドウ・サイズはＮ＝１０行であることができる。
【００４３】
水平フィルタリングを実行する前に、垂直フィルタリングを実行することが好ましい。こうすることにより、垂直フィルタ５０および５２が、水平フィルタ５８、６０、６２および６４によってフィルタリングされる行より低いビット深さを持つ行に対してフィルタリングすることが可能になる。たとえば、垂直フィルタ５０および５２は、８ビットの第１のビット深さを有する行をフィルタリングし、水平フィルタ５８、６０、６２および６４は、１６ビットの第２のビット深さを有する行をフィルタリングすることができる。
【００４４】
また、図５は、オフチップ・メモリ２４およびフィルタ・ステージ３０に対応する符号器３２、３４および３６をも示す。チップは、行ｎから行（ｎ＋Ｎ−１）までをオフチップ・メモリ２４から読み取り、Ｎ行ウィンドウは、フィルタ・ステージ３０によって分解される。フィルタ・ステージ３０により生成されたサブバンド行は、オフチップ・メモリ２４に書き込まれる。サブバンドの符号化のために十分な数の行が利用可能になると、そのサブバンドに対応する行がオフチップ・メモリ２４から読み取られ、符号化される。
【００４５】
図６は、フィルタ・ステージ３０ａの代替の実施形態を示す。フィルタ・ステージ３０ａは、長さが５である５／３双直交フィルタを使用し、３行（ｎ、ｎ＋１、ｎ＋２）のサイズを持つウィンドウをフィルタリングする。フィルタ・ステージ３０ａは、垂直高域フィルタ５０ａを備え、３行ウィンドウに対して垂直リフティング・ステップを実行する。垂直高域フィルタ５０ａの出力は、第１の遅延素子５４ａにより遅延され、遅延された出力は、一対の水平高域および低域フィルタ５８ａおよび６０ａによってフィルタリングされる。３行ウィンドウの第１の行（ｎ）が第２の遅延素子５６ａにより遅延され、第２の対の水平高域および低域フィルタ６２ａおよび６４ａによってフィルタリングされる。
【００４６】
さらに、フィルタ・ステージ３０ａは、垂直低域フィルタ５２ａを備え、第１および第２の対の水平高域および低域フィルタ５８ａ、６０ａ、６２ａおよび６４ａの出力に対して水平リフティングを実行する。最低サブバンドが、次のフィルタ・ステージに送られ、これより高いサブバンドは、符号器３２、３４および３６に送られる。
【００４７】
このように、垂直高域および低域サンプルが、以下に示すように、連続したリフティング・ステップで形成される。
【００４８】
Ｈｎ(ｉ)＝０．５[ｘ２ｎ＋１(ｉ)−０．５(ｘ２ｎ(ｉ)＋ｘ２ｎ＋２(ｉ))]  および、
Ｌｎ(ｉ)＝ｘ２ｎ(ｉ)＋０．５[Ｈｎ−１(ｉ)＋Ｈｎ(ｉ)]
ここで、ｘｎ(ｉ)は、画像のｎ番目の行のｉ番目のサンプルを表し、また、Ｈｎ(ｉ)およびＬｎ(ｉ)は、垂直高域および垂直低域サブバンドのそれぞれのｉ番目のサンプルを表す。これらの垂直サブバンドの行のそれぞれに対して、水平変換が通常の方法で適用される。フィルタ・ステージ３０ａは、垂直方向にこれらのリフティング・ステップを実施する。水平変換は、垂直変換の第１および第２のリフティング・ステップの間で適用されるが、水平および垂直のフィルタリング操作は相互に交換することができるので、結果に影響することはない。水平変換を任意の方法で適用することができるが、リフティング・ステップにより、１バイト精度を保持することが可能となる。
【００４９】
サイズが３のウィンドウを処理することにより、および長さが５のフィルタを持つことにより、フィルタ・ステージ３０ａは、何らかのメモリ節約を得るために、メモリのニーズを、あるプレーンから他のプレーンに押し進める。このステージ３０ａは、本質的に、垂直フィルタリングを２つのステージで実行する。
【００５０】
垂直５／３双直交ウェーブレット変換の実施における第１のリフティング・ステップ（すなわちリフティング・ステップＨｎ）は、画像の奇数行のサンプルを、これらのサンプルと、画像の隣接する偶数行上の真上および真下のサンプルの平均を取って得られた予測との差で置換することと解釈することができる。これらの予測残差が、実際には垂直高域サンプルである。圧縮性能は、高域帯域の信号エネルギーを低減できる程度に強く関連するので、さらに精密な予測を使用することにより、よい結果を得ることができる。特に、第１のリフティング・ステップを、次の数式で置き換えることができる。
【００５１】
Ｈｎ(ｉ)＝０．５[ｘ２ｎ＋１(ｉ)−Ｐ(ｘ２ｎ，ｘ２ｎ＋２(ｉ))］
ここで、演算子Ｐは、画像のローカル方向特性を利用して、隣接する２つの行ｘ２ｎ(ｉ)およびｘ２ｎ＋２(ｉ)の近傍サンプルから、奇数行サンプルｘ２ｎ＋１(ｉ)を予測する。
【００５２】
垂直フィルタにはいくつかの異なる方向がある。それぞれの方向について、より小さい目標値を持つ方向が、基礎となるシーン(scene)を反映しやすくなるように、予測子(predictor)Ｐｉおよび目標値Ｏｉを計算する。追加のオンチップ論理回路を使用して、方向を選択することができる。以下のように、５つの方向がある。
【００５３】
垂直方向:
Ｐ０(ｉ)＝０．５[ｘ２ｎ(ｉ)＋ｘ２ｎ＋２(ｉ)]
Ｏ０(ｉ)＝Σ‖ｘ２ｎ(ｉ＋ｋ)−ｘ２ｎ＋２(ｉ＋ｋ)‖，ｋ＝−２〜ｋ
左上から右下に−４５°:
Ｐ−４５(ｉ)＝０．５[ｘ２ｎ(ｉ−１)＋ｘ２ｎ＋２(ｉ＋１)]
Ｏ−４５(ｉ)＝Σ‖ｘ２ｎ(ｉ＋ｋ−１)−ｘ２ｎ＋２(ｉ＋ｋ＋１)‖，ｋ＝−２〜ｋ
左上から右下に＋４５°:
Ｐ＋４５(ｉ)＝０．５[ｘ２ｎ(ｉ＋１)＋ｘ２ｎ＋２(ｉ−１)]
Ｏ＋４５(ｉ)＝Σ‖ｘ２ｎ(ｉ＋ｋ＋１)−ｘ２ｎ＋２(ｉ＋ｋ−１)‖，ｋ＝−２〜ｋ
左上から右下に−２３°:
Ｐ−２３(ｉ)＝０．５[ｘ２ｎ(ｉ−０．５)＋ｘ２ｎ＋２(ｉ＋０．５)]
Ｏ−２３(ｉ)＝Σ‖ｘ２ｎ(ｉ＋ｋ−０．５)−ｘ２ｎ＋２(ｉ＋ｋ＋０．５)‖，ｋ＝−２〜ｋ
左上から右下に＋２３°:
Ｐ＋２３(ｉ)＝０．５[ｘ２ｎ(ｉ＋０．５)＋ｘ２ｎ＋２(ｉ−０．５)]
Ｏ＋２３(ｉ)＝Σ‖ｘ２ｎ(ｉ＋ｋ＋０．５）−ｘ２ｎ＋２(ｉ＋ｋ−０．５）‖，ｋ＝−２〜ｋ
Ｏｍｉｎ（ｉ）がこれらの５つの目標値の最小値を表し、Ｐｍｉｎ（ｉ）がそれぞれのサンプル位置における対応する予測子を表すとする。単純でロバストな方向適応予測子を、次の式に従って通常の垂直補間をＰｍｉｎの値と組み合わせることにより形成することができる。
【００５４】
Ｐ(ｉ)＝α(ｉ)Ｐ０(ｉ)＋(１−α)Ｐｍｉｎ(ｉ)
ここで、混合パラメータα（ｉ）は、次の式により与えられる。
【００５５】
α(ｉ)＝[Ｏｍｉｎ(ｉ)＋１]／[Ｏ０(ｉ)＋１]
混合パラメータα（ｉ）を、次のように変更することができる。
【００５６】
α(ｉ)＝ｍａｘ｛１，[Ｏｍｉｎ(ｉ)＋２ｍｉｎ｛０，Ｏ０(ｉ)−Ｏ’(ｉ)｝＋２ｍｉｎ｛０，Ｏ０(ｉ)−Ｏ”(ｉ)｝＋１]／[Ｏ０(ｉ)＋１]｝
【００５７】
ここで、Ｏ’(ｉ)およびＯ”(ｉ)は、最適角度が正の場合は負の角度目標値Ｏ−４５およびＯ−２３により特定され、最適角度が負の場合は正の角度目標値Ｏ＋４５およびＯ＋２３により特定され、その他の場合は垂直目標値ＯＯにより特定される。変更された混合パラメータは、基礎となるサンプル値の連続的な適度に滑らかな関数であり、これにより、復号器における量子化の影響に対する感受性が小さくなる。このことは、ローカル方向が不明瞭なときに、垂直方向以外のものの影響を抑制する効果を有する。
【００５８】
次に、図７および図８を参照する。これらの図は、それぞれの符号器３２、３４、３６および３８によって使用されるブロック符号化技法を説明する。所与のサブバンド（たとえば、ＨＨサブバンド）のブロック符号化において、チップ２２は、変換係数の行をオフチップ・メモリ２４に書き込む（ブロック２０２）。所与のサブバンドのＰ個の行が利用可能になると（ブロック２０４）、符号器３２が、オフチップ・メモリ２４からＰ行をアクセスし（ブロック２０６）、ＨＨサブバンドのＰ行を複数のブロックとして符号化する（ブロック２０８）。それぞれのＰ行から生成されたブロックは、相互に独立して符号化される。一般的なブロック・サイズは、６４×６４サンプル、３２×３２サンプル、６４×１６サンプルまたは１２８×８サンプルである。
【００５９】
埋め込みビットストリームは、１９９８年１２月１７日出願の米国特許出願第09/213,743号の「DECODING OF EMBEDDED BITSTREAMS PRODUCED BY CONTEXT-BASED ORDERING AND CODING OF TRANSFORM COEFFICIENT BIT-PLANES」（「Ordentlich他による特許出願」）に従い、サブバンド分解ブロックを別個に符号化することにより生成される。Ordentilich他による特許出願を、ここで参照により取り入れる。それぞれのブロックの符号化は、変換係数を量子化するステップと、量子化された係数のビットプレーンを生成するステップと、ビットプレーンを異なるサブシーケンス（たとえば、非ゼロの近傍(Non-Zero Neighbors)、非ゼロの親(Non-zero Parents)、ラン(RUN)およびリファインメント(Refinement)）に分解するステップと、記述の期待されるビットあたりの期待される歪み減少量が減っていくように、サブシーケンスを順序付けるステップと、順序付けられたサブシーケンスを符号化するステップと、サブシーケンスを順序どおりにビットストリームに配置するステップとを含むステップにより実行される。また、ブロックの所与のビットプレーンを順序付けるコンテキストを、該ブロックの、前に符号化されたビットプレーン内に完全に含めることができる。また、ブロックの所与のビットプレーンを順序付けるコンテキストを、「親ブロック」の、前に符号化されたビットプレーン内に含めることもできる。用語「親ブロック」とは、より低い解像度のサブバンドの対応する空間的方向にあるブロックを意味する。
【００６０】
図９は、変換係数のそれぞれのブロックについて埋め込みビットストリームを生成する、より詳細な方式を示す。それぞれのブロックは、４分木（quad tree）分解およびビットプレーン符号化の組み合わせにより符号化される。所与のブロックに対して４分木分解を実行し、所与のブロックが複数のサブブロックに分解されるようにするステップ（ブロック３０２）と、有効係数を含むサブブロックを識別するステップ（ブロック３０４）と、有効係数を含むすべてのサブブロックをビットプレーン符号化するステップ（ブロック３０６）と、有効でない係数を持つブロックに対して追加の４分木分解を実行するステップ（ブロック３０８）とを含むステップによって、所与のブロックは符号化される。
【００６１】
次に、他のレベルの４分木分解およびビットプレーン符号化が、有効係数を持たないそれぞれのサブブロックに対して実行される。このように、有効係数を持たないサブブロックは、より小さなサブブロックにさらに分解される（ブロック３１０）。
【００６２】
有効係数を持つこれらのより小さなサブブロックは、ビットプレーン符号化され（ブロック３０６）、有効係数を持たないより小さなサブブロックは、さらにもっと小さなブロックに分解される（ブロック３０８）。
【００６３】
典型的なサブブロックが、４分木分解によって生成される最小サブブロックであるサイズＧ×Ｇまで分解されると（ブロック３１２）、Ｇ×Ｇサブブロックおよび任意のこれより小さなサブブロックが、ビットプレーン符号化される（ブロック３１４）。画像の境界上に存在するサブブロックの中には、Ｇ×Ｇより小さいものがある。たとえば、境界上のサブブロックには、Ｇ×２、Ｇ×１、１×Ｇなどのサブブロックが存在することがある。
【００６４】
サブブロックを、Ordentlich等の特許出願に記載されているブロック符号化技法を使用して、ビットプレーン符号化することができる。
【００６５】
このハイブリッドな符号化方式の例を、図１０に示す。図１０には、ブロック４００に対する４分木分解の２つのレベルが示されている。最初に、ブロック４００は、６４×６４サンプルを含む。４分木分解の第１のレベルが、３２×３２のサンプル・サブブロックを４つ、すなわちＡ、Ｂ、ＣおよびＤを形成する。サブブロックＢおよびＣは、有効係数を持つことが判明したので、ビットプレーン符号化される。次に、サブブロックＡが、より小さな１６×１６のサンプル・サブブロックＡ１１、Ａ１２、Ａ２１およびＡ２２に分解され、サブブロックＤが、より小さな１６×１６のサンプル・サブブロックＤ１１、Ｄ１２、Ｄ２１およびＤ２２に分解される。第２のレベルの４分木分解の後、サブブロックＡ１１、Ａ２１およびＤ１１が重要な係数を持つことが判明したので、ビットプレーン符号化される。残りのサブブロックＡ１２、Ａ２２、Ｄ１２、Ｄ２１およびＤ２２は、さらにより小さな８×８に分解される。
【００６６】
ブロック符号化を実行し、埋め込みビットストリームを生成するさらに詳しい方式については、参照としてここで取り入れられる、この発明と同時出願された米国特許出願第09/267、248号の「EMBEDDED BLOCK CODING WITH OPTIMIZED TRUNCATION」（代理人整理番号10990121-1）で開示される。
【００６７】
ブロック符号化は、画像を小さなタイルに分割してそれぞれのタイルを独立的に圧縮する操作と同じものではない。符号化は、ブロックに対して独立的に実行されるが、変換は、ブロックごとには実行されない。この理由は、ブロックのアーティファクトの発生を防ぐためである。ブロック符号化および独立したタイル圧縮の間の他の相違点は、異なるサブバンドで符号化されたブロックは、通常、元の画像の同じ領域を表さないということである。すべての帯域でブロック・サイズが同一の場合には、低い解像度帯域にあるブロックが、元の画像の大きな領域を連続的に表す。
【００６８】
符号化において、３つのサブバンドＬＨ、ＨＬおよびＨＨのそれぞれにおけるブロックの位置を、任意の所与の解像度レベルで互い違い（交互配置）にすることができる。サブバンドＨＬ、ＬＨおよびＨＨの垂直境界を相互にＰ／３行だけオフセットすることにより、ブロックの交互配置を実行することができる。たとえば、サブバンドＨＬをＰ／３行だけオフセットし、サブバンドＬＨを２Ｐ／３行だけオフセットする。サブバンドＨＨのＰ行がオフチップ・メモリ２４に格納されているとき（したがって符号化に利用可能である）、サブバンドＨＬの２Ｐ／３行、およびサブバンドＬＨのＰ／３行だけがオフチップ・メモリ２４に格納される。サブバンドＨＬのＰ行が符号化に利用可能になったときは、サブバンドＬＨの２Ｐ／３行、およびサブバンドＨＨのＰ／３行だけがオフチップ・メモリ２４に格納されている。サブバンドＬＨのＰ行が符号化に利用可能になったときは、サブバンドＨＨの２Ｐ／３行、およびサブバンドＨＬのＰ／３行だけがオフチップ・メモリ２４に格納されている。
【００６９】
図１１は、サブバンドＨＬ、ＬＨおよびＨＨが相互にＰ／３行ずつ交互配置される方法を示す。カウンタ４５０、４５２および４５４を、所与のフィルタ・ステージの３つのサブバンドＨＨ、ＨＬおよびＬＨについて設けることができる。カウンタ４５０、４５２および４５４は、異なる値０、Ｐ／３、２Ｐ／３で初期化される。所与のサブバンドについて行が出力されるたびに、所与のサブバンドに対応するカウンタが増分される。カウンタがブロック・サイズＰより大きくなると、そのカウンタはゼロに設定され、所与のサブバンドからのブロックが符号化される。たとえば、３つのサブバンドのうち２つについて第１のストライプ(stripe)符号化を実行中、対応するカウンタがＰに等しい場合でも、符号化に使用可能な行数はＰより少ない。このように、第１のストライプ符号化中に、１つのサブバンドのＰ行が符号化され、もう１つのサブバンドの２Ｐ／３行が符号化され、また第３のサブバンドのＰ／３行が符号化される。
【００７０】
ブロックの交互配置により、符号化に使用されるオフチップ・メモリ２４の合計量がＰ行だけ削減される。また、ブロック符号化は、ブロック符号化の負荷が時間にわたって均一に分散されるので、符号化の「ジッター」を減少させる。この結果、一定のレートで画像の行を生成または使用するアプリケーションの「ジッター」を吸収するのに割り当てられる追加のメモリ量が削減される。
【００７１】
ブロック符号化には潜在的な利点が多数含まれる。たとえば、ブロックを選択的に伝送して、関心のある領域(regions-of-interest)を再構成することができる。
【００７２】
次に、関心のある領域の再構成を実行するシステムおよび方法を示す図１２および図１３を参照する。図１２は、ネットワーク５０６上で通信するサーバー５０２およびクライアント５０４を備えるシステム５００を示す。ネットワーク５０６は、ローカル・エリア・ネットワークからインターネットまで任意のものでよい。
【００７３】
サーバー５０２は、プロセッサ５０８およびメモリ５１０を備える。サーバーのメモリ５１０は、画像のサブバンド分解５１２で符号化される。サブバンド分解５１２は、最低解像度サブバンドと、これより高い解像度の複数のサブバンドを含む。それぞれのサブバンドは、複数のブロックとして符号化され、それぞれのブロックは、画像領域を表す。領域の異なる解像度は、異なるサブバンド・ブロックに表される。
【００７４】
サーバーのメモリ５１０は、プログラム５１４でさらに符号化される。このプログラム５１４は、画像に対するネットワーク要求に応答して、最低解像度サブバンドをネットワーク５０６上に出すよう、サーバー・プロセッサ５０８に命令する。さらに、サーバー・プログラム５１４は、画像領域に対するネットワーク要求に応答して、少なくとも１つの追加のブロックをネットワーク５０６上に出すよう、サーバー・プロセッサ５０８に命令する。追加の１または複数のブロックは、要求された領域についてさらに高い解像度を提供する。
【００７５】
クライアント５０４は、第２のプロセッサ５１６、およびプログラム５２０を格納するためのメモリ５１８を備える。クライアント・プログラム５２０は、画像および画像領域に対するネットワーク要求を送信するよう、クライアント・プロセッサ５１６に命令する。ネットワーク要求を、ユーザーによって対話的に生成することができる。
【００７６】
さらに、クライアント・プログラム５２０は、ネットワーク要求に応答してサーバー５０２が送信したブロックを受信し、ネットワーク５０６上で受信したブロックから画像および関心のある領域を再構成するよう、クライアント・プロセッサ５１６に命令する。
【００７７】
図１２は、ソフトウェアを介して画像を完全に再構成するクライアント５０４を示す。代替方法として、クライアント５０４は、チップおよびオフチップ・メモリを備えて、画像および関心のある領域を再構成することができる。
【００７８】
図１３は、サーバー５０２およびクライアント５０４の間のトランザクション例を示し、この例では、クライアント５０４が、国のある地域に関する情報を要求する。クライアント５０４上で走るのは、ウェブ・ブラウザのようなプログラムである。ユーザーは、国の地図のＵＲＬを入力し、クライアント５０４は、地図の要求をネットワーク５０６上に出す（ブロック６０２）。
【００７９】
地図のサブバンド分解を格納するサーバー５０２は、ネットワーク要求を受信し、分解の低サブバンドにおけるブロックをアクセスし、すべての低サブバンド・ブロックをクライアント５０４に送信する（ブロック６０４）。
【００８０】
クライアント５０４はブロックを受信し、地図全体の低解像度画像を再構成する（ブロック６０６）。低解像度の地図がユーザーに表示される。マウスのような入力装置を使用して、ユーザーは地図のある領域をクリックし、クライアントは、関心のある領域に対する要求を生成する。要求はサーバー５０２に送信される（ブロック６０８）。
【００８１】
サーバー５０２は要求を受信し、関心のある領域に対応するブロックをアクセスする。ブロックは、異なるサブバンドから取り出される。サーバー５０２は、より高いこれらのサブバンド・ブロックをクライアント５０４に送信する（ブロック６１０）。
【００８２】
クライアント５０４はブロックを受信し、関心のある領域を再構成する（ブロック６１２）。関心のある領域がユーザーに表示される。再構成される領域の解像度（すなわち、関心のある領域の詳細）は、サーバー５０２によってアクセスされるサブバンドに依存する。
【００８３】
このクライアント−サーバーのアプリケーションは、リモートに位置するサーバー上に常駐して、画像のより小さな領域に関心を持つ個々のクライアントによって対話的にアクセスされ再構成される大型圧縮画像を含む。サーバー５０２は、関心のある領域に関連するより高い解像度のコードブロックを送信するだけでよい。クライアントに送信されるブロックによってカバーされるサブバンド・サンプルのセットを判断する際には、サブバンド合成フィルタがサポートする領域を考慮に入れるべきである。
【００８４】
低解像度レベルにおけるブロックは、画像の本質的な部分に広がり、クライアントが実際に要求したもの以上の情報が伝送されるようにする。これは、関心のある領域が正しく再構成されることを確実にするよう実行される。しかし、ほとんどの関心のある領域の復号化のアプリケーションでは、対話ユーザーは、画像のより大きな領域を横切って移動することができるので、前に受信されたコード・ブロックが適切にキャッシュされて再利用されるならば、このような操作中に伝送される新しい情報量は、最終的にカバーされるその領域のサイズとほぼ同じ大きさになる。
【００８５】
それぞれのサブバンドのそれぞれのブロックを連続して伝送することができ、利用可能なネットワーク帯域幅を、関心のある領域の画質が徐々に改善されるよう使用することができる。このことは、対話型ユーザーが、新しい関心領域に移動する前にその領域に費やす時間の長さに依存する。これは、大部分の消費者がきわめて低い帯域幅のリンクしか持っておらず、またあまり辛抱強くない場合に、インターネット上で大型画像を対話的に走査検索するには、特に有効な特徴である。
【００８６】
ブロック符号化の他のクライアント−サーバーのアプリケーションは、大型画像の領域を、クライアント要求の累積履歴に基づき選択的に改善（リファイン；refine）する操作を含む。画像全体または画像の大きな部分が要求される場合には、対話型ユーザーがそれらの領域に主に関心を示すであろうという期待により、過去に最も頻繁に要求されたそれらの画像領域に対応するブロックに、より多くの割合を割り当てることができる。こうして、関心のある領域は、クライアントの好みの予測を見越して、より高い画質レベルで伝送される。さらに、サーバーの記憶スペースが密になって、さらにデータを収容しなければならない場合、あまり頻繁に要求されなかった画像のブロックに対応するビットストリームを切り捨てて、スペースを開放することができる。
【００８７】
次に、埋め込みビットストリームから画像１０を再構成する方法を示す図１４を参照する。埋め込みビットストリームを生成するのに使用される方法を逆に実行することにより、画像を再構成することができる。たとえば、ビットストリームが、図１のフィルタリング方法および図７のブロック符号化方法（ここでは、Ordentlich等の特許出願に記載された方法に従い、ブロックは量子化され、順序付けられ、符号化される）を介して生成された場合、画像は以下の手順によって再構成される。すなわち、ビットストリームを復号化するステップ（ブロック７０２）と、復号化されたビットストリームにおけるサブシーケンスのビットを判断するステップと（ブロック７０４）、判断されたサブシーケンスからビットプレーンを満たすステップ（ステップ７０６）とによって再構成される。ステップ７０６において、ブロックの所与のビットプレーンを満たすコンテキストを、該ブロックの、前に復号化されたビットプレーン内に完全に含めることができ、また親ブロックの、前に復号化されたビットプレーン内に含めることもできる。
【００８８】
次に、量子化変換係数がビットプレーンから再構成される（ブロック７０８）。再構成された変換係数の値は、利用可能な不確定間隔の中間値であってもよい。
【００８９】
ブロック７０２からブロック７０８によって示されるステップが実行されるとき、再構成された変換係数は、逆変換フィルタリングに利用可能になる。画像全体が再構成される場合、再構成された変換係数は、行単位で利用可能になっていく。こうして、所与の分解レベルのそれぞれのサブバンドについての変換係数の第１の行が、図３に示すように現れることができる。関心のある領域が再構成される場合は、関心のある領域に対応する変換係数ブロックだけが利用可能になる。
【００９０】
十分な数の、部分的または完全な行が利用可能になると（すなわち、Ｎ行のチャンク（かたまり）が形成されると）、逆水平フィルタリングが、それぞれのＮ行チャンクに対して実行され（ブロック７１０）、また逆垂直フィルタリングが、水平方向にフィルタリングされたチャンクに対して実行される（ブロック７１２）。
【００９１】
画像全体または関心のある領域は、いくつかのパス（工程）で再構成される。それぞれのパスの中で、新しい情報が一度に複数行表示される。このように、低解像度の画像または関心のある領域が、第１のパスにおいて一度に複数行再構成される。第２およびその後のパスにおいて、詳細が一度に複数行追加される。埋め込みビットストリームが切り捨てられた場合、すでに受信されているすべての完全ブロックが表示される（これは、ブロックが、相互に独立して符号化されるからである）。こうして、ビットストリームが切り捨てられた場合、画像または関心のある領域の上半分は比較的鮮明な特徴を含み、下半分は不鮮明な特徴を含むことがある。
【００９２】
次に図１５を参照すると、画像再構成を装置８００によって実行することができ、装置８００は、オフチップ・メモリ８０２およびチップ８０４を備え、チップ８０４は、複数の逆フィルタリング・ステージ８０６と、それぞれのフィルタリング・ステージについての復号器８０８、８１０および８１２を備える。第１のフィルタリング・ステージは、最低サブバンドＬＬについて追加の復号器８１４を備える。オンチップ・メモリ８１６は、逆フィルタリング操作に使用される。オンチップ・コントローラ８１８は、変換係数のチャンクが逆フィルタリングに利用可能になる時を判断することができる。チップ８０４を、クライアントのビデオ・カードに搭載することができる。代替の実施形態では、画像再構成を、ホスト・プロセッサ（たとえばクライアント・プロセッサ５１６）により、すべてソフトウェアで実行することができる。再構成された画像を、表示または印刷の前に、外部メモリ（たとえば、オフチップＤＲＡＭ、ハード・ドライブ、ビデオ・メモリ）にバッファすることができる。
【００９３】
ブロック交互配置が画像圧縮に使用された場合、画像の再構成中に、ブロック交互配置を逆に実行する必要はない。しかし、画像再構成中にブロック交互配置を実行すると、オフチップ・メモリの節約になる。変換係数サブバンドのオフチップ・メモリ８０２への書き込みを、相互にＰ／３行だけオフセットすることができる。オフチップ・メモリ８０２においてサブバンドのチャンクが利用可能になると直ちに、対応する復号器が、当該チャンクを量子化された変換係数に復号する。
【００９４】
４分木分解およびビットプレーン符号化の組み合わせが画像圧縮において使用された場合は、それぞれの受信されたサブブロックのビットプレーン符号化が逆に実行され、４分木復号化は、サブブロックをブロックに再度組み立てるよう逆に実行される。
【００９５】
画像圧縮中に垂直フィルタを回転した場合、画像の再構成中に垂直フィルタを回転する必要はない。しかし、垂直フィルタを回転させると、再構成された画像の画質が改良される。しかし、変更されたリフティング・ステップが逆に実行されるとき、関連する方向適応予測子が、偶数行サンプルの幾分歪んだコピーから導き出される点に注意すべきである。これは、画像圧縮が、量子化エラーを取り入れると予測されるからである。要するに、演算子Ｐを、その入力における小さなエラーを極力感知しないようにするべきである。
【００９６】
以上のように、画像全体を格納することなくサブバンド分解を実行する発明が開示される。結果として、この発明は、画像圧縮およびその後の再構成に使用されるオンチップ・メモリおよびオフチップ・メモリの両方のサイズを削減する。またこの発明は、チップおよびオフチップ・メモリ間の入出力トランザクション数をも削減する。オフチップ・メモリは、１０行から数百行の間の行を格納することができ、任意のサイズの画像を処理する。入出力メモリ帯域幅は、画像あたり約３および５バイトのトランザクションに削減することができる。さらに、チップおよびオフチップ・メモリは、画像のサイズによる制限を受けずに、異なるアプリケーションに使用することができる。
【００９７】
また、チップは、埋め込みビットストリームを生成する。埋め込みビットストリームは、たとえば圧縮率が適切ではなく、そのために画像の微細な詳細のみを切り捨てる場合に有利である。
【００９８】
リフティング・ステップおよび１行ずつの階層化されたエントロピー符号化の組み合せは、メモリの使用をさらに削減する。きわめて小さな垂直領域をサポートするウェーブレット変換を使用することにより、メモリ要件はさらに削減される。
【００９９】
異なるサブバンドについてのブロック・パーティションの交互配置は、ブロック符号化のアプリケーションにおいてメモリの使用を削減する。画像におけるウェーブレットの因子分解(factorization)およびローカル方向特性の利用は、メモリ要件を増やすことなく、優れた圧縮パフォーマンスの達成を可能にする。
【０１００】
また、ブロック符号化の使用は、オフチップ・メモリのサイズを増加することなく、かつチップおよびオフチップ・メモリ間の入出力トランザクション数を増加することなく、圧縮パフォーマンスを向上させる。さらに、ブロック符号化は、関心のある領域の分解のような特別機能も提供する。
【０１０１】
この発明は、上記に説明したホスト−プリンタおよびクライアント−サーバーのアプリケーションに限定されるものではない。たとえば、この発明を、衛星画像に適用することができる。さらに、この発明を、新しいＪＰＥＧ−２０００標準と互換性のあるアプリケーションに適用することができる。
【０１０２】
この発明は、上記に説明し図示された特定の実施形態に制限されるものではない。代わりに、この発明は、特許請求の範囲に従って解釈されるものである。
【０１０３】
この発明は、以下の実施態様を含む。
【０１０４】
（１）Ｋ行（Ｋは正の整数）を含む画像を圧縮する装置であって、
前記画像のＮ行（Ｎは正の整数、１＜Ｎ＜＜Ｋ、ＮはＫから独立している）ウィンドウを順次提供する手段と、
垂直高域フィルタおよび垂直低域フィルタを有するサブバンド分解フィルタの第１のステージであって、前記提供されたそれぞれのＮ行ウィンドウに対して垂直高域および垂直低域フィルタリングを実行する第１のステージを有するチップとを備え、前記画像全体が複数のサブバンドに分解されるまで、前記チップが、前記画像のＮ行を一度にフィルタリングするようにした画像圧縮装置。
【０１０５】
（２）前記提供する手段が、前記ウィンドウをバッファする画像バッファを備え、それぞれのウィンドウが、前のウィンドウからの少なくとも１行を保持するようにした上記（１）に記載の画像圧縮装置。
【０１０６】
（３）前記Ｎが、フィルタ長の約２倍である上記（１）に記載の画像圧縮装置。
【０１０７】
（４）前記チップは、サブバンド分解フィルタのＭ個の付加縦続ステージを備え、それぞれの付加ステージは、垂直高域フィルタおよび垂直低域フィルタを備えて、複数のサブバンドを生成し、前のステージによって生成された最低サブバンドのＮ行ウィンドウに対して垂直高域および垂直低域フィルタリングを実行するようにした上記（１）に記載の画像圧縮装置。
【０１０８】
（５）前記垂直フィルタは、第１のビット深さを持つ画像行を受信して、該第１のビット深さより大きい第２のビット深さを持つ行を出力し、前記第１のステージは、前記垂直高域フィルタの出力に応答する水平高域および水平低域フィルタの第１の対、および前記垂直低域フィルタの出力に応答する水平高域および水平低域フィルタの第２の対を備えるようにした上記（１）に記載の画像圧縮装置。
【０１０９】
（６）前記第１のステージは複数のサブバンドを生成し、それぞれのサブバンドは一度にＳ行（Ｓは正の整数）生成され、該サブバンドのうちの１つがさらに分解され、該サブバンドのうちの他のサブバンドは一度にＰ行（Ｐは正の整数）符号化され、Ｓ＜Ｎであり、Ｐ＞Ｓである上記（１）に記載の画像圧縮装置。
【０１１０】
（７）前記チップは複数のエントロピー符号器を備え、それぞれのエントロピー符号器は、前記他のサブバンドのうちの１つに対応し、対応するサブバンドのＰ行が利用可能になると直ちに該対応するサブバンドを符号化するようにした上記（６）に記載の画像圧縮装置。
【０１１１】
（８）前記それぞれの符号器が、サブバンドのＰ行を複数のブロックとして符号化し、ブロックは、相互に独立して符号化されるようにした上記（６）に記載の画像圧縮装置。
【０１１２】
（９）それぞれのブロックは、４分木分解およびビットプレーン符号化の組み合わせによって符号化されるようにした上記（８）に記載の画像圧縮装置。
【０１１３】
（１０）所与のブロックに対して４分木分解を実行して、該所与のブロックが複数のサブブロックに分解されるようにするステップと、
有効係数を含むサブブロックをビットプレーン符号化するステップと、
有効でない係数を含むサブブロックに対して追加の４分木分解を実行するステップとを含むステップにより、前記所与のブロックが符号化されるようにした上記（９）に記載の画像圧縮装置。
【０１１４】
（１１）所与のブロックの変換係数を量子化するステップと、
前記量子化された係数のビットプレーンを生成するステップと、
前記ビットプレーンを異なるサブシーケンスに分解するステップと、
記述の期待されるビットあたりの期待される歪み減少量が減っていくように、前記サブシーケンスを順序付けるステップと、
前記順序付けられたサブシーケンスを符号化するステップと、
前記サブシーケンスを順序通りビットストリームに配置するステップとを含むステップにより、前記所与のブロックが符号化されるようにした上記（８）に記載の画像圧縮装置。
【０１１５】
（１２）オフチップ・メモリを備え、
前記第１のステージは、直ちに符号化するためのＴ個（Ｔは正の整数およびＴ＞１）のサブバンドを出力し、前記画像圧縮装置は、前記サブバンドの垂直境界を相互にＰ／Ｔ行だけオフセットする手段を備え、サブバンドのブロックが相互に交互配置されるようにした上記（８）に記載の画像圧縮装置。
【０１１６】
（１３）画像のサブバンド分解を実行するチップであって、該画像はＫ行（Ｋは正の整数）を含んでおり、該チップは、前記画像のＮ行ウィンドウ（Ｎは正の整数、１＜Ｎ＜＜Ｋであり、ＮはＫから独立している）を順次受け取り、前記チップは、Ｌ個（Ｌは整数でＬ＞１）のステージ・フィルタを備えており、
前記Ｌ個のステージ・フィルタのそれぞれのステージが、
前記チップによって受け取られたそれぞれのＮ行ウィンドウに対して垂直高域フィルタリングを実行する第１の手段と、
前記チップによって受け取られたそれぞれのＮ行ウィンドウに対して垂直低域フィルタリングを実行する第２の手段と、
前記第１の手段の出力に対して水平高域フィルタリングを実行する第３の手段と、
前記第２の手段の出力に対して水平低域フィルタリングを実行する第４の手段とを備え、
前記画像全体が異なるレベルの複数のサブバンドに分解されるまで、前記チップが、前記画像のＮ行を一度にフィルタリングするようにしたチップ。
【０１１７】
（１４）画像のサブバンド分解を実行するフィルタ・ステージであって、該画像はＫ行（Ｋは正の整数）を含んでおり、
前記画像のＮ行（Ｎは正の整数であり、Ｎ＜Ｋ）に対して垂直リフティング・ステップを実行する第１のフィルタと、
Ｎ行の第１の行に応答する水平高域および水平低域フィルタの第１の対と、
垂直高域フィルタの出力に応答する水平高域および水平低域フィルタの第２の対と、
前記水平高域および水平低域フィルタの第１の対の出力に対して水平リフティングを実行する第２のフィルタと、
低域サブバンドを提供する前記第１のステージの第１の出力と、
高域サブバンドを提供する前記第１のステージの複数のさらなる出力とを備えるフィルタ・ステージ。
【０１１８】
（１５）前記第１および第２のフィルタが、複数の特定方向に回転可能であるようにした上記（１４）に記載のフィルタ・ステージ。
【０１１９】
（１６）画像のサブバンド分解を実行する方法であって、該画像はＫ行（Ｋは正の整数）を含んでおり、
前記画像のＮ行ウィンドウ（Ｎは正の整数であり、１＜Ｎ＜＜Ｋであり、ＮはＫから独立している）を順次提供するステップと、
提供されたそれぞれのＮ行ウィンドウに対して垂直高域フィルタリングを実行するステップと、
提供されたそれぞれのＮ行ウィンドウに対して垂直低域フィルタリングを実行するステップと、
前記画像全体が複数のサブバンドに分解されるまで、前記Ｎ行ウィンドウの提供および垂直フィルタリングを繰り返すステップとを含む、サブバンド分解を実行する方法。
【０１２０】
（１７）サブバンド分解から画像を再構成するチップであって、該画像はＫ行（Ｋは正の整数）を含み、前記サブバンド分解はＱレベル（Ｑは１より大きい正の整数）を含み、それぞれのレベルは複数のサブバンドを含んでおり、前記チップが、
所与の分解レベルのそれぞれのサブバンドについて複数のＮ行チャンクを受信する入力と、
Ｑ個の逆フィルタ・ステージとを備え、
それぞれの逆フィルタ・ステージは、Ｎ行のそれぞれのチャンクに対して操作可能な逆水平高域および逆水平低域フィルタと、逆垂直高域および逆垂直低域フィルタの第１および第２の対とを備え、該第１の対は、前記水平高域フィルタの出力に応答し、該第２の対は、前記水平低域フィルタの出力に応答し、該垂直フィルタの第１および第２の対は、一度に複数行再構成された画像を出力するようにしたチップ。
【０１２１】
（１８）埋め込みビットストリームから画像を再構成する方法であって、該埋め込みビットストリームは、該画像の符号化されたサブバンド分解を表しており、該画像はＫ行（Ｋは正の整数）を含み、該サブバンド分解は複数の分解レベルを含み、それぞれのレベルは複数のサブバンドを含んでおり、
前記埋め込みビットストリームを複数行に復号化するステップと、
所与の分解レベルの前記サブバンドのそれぞれについて、Ｎ行のチャンクを形成するステップと、
前記Ｎ行のそれぞれのチャンクに対して逆水平フィルタリングを実行するステップと、
前記水平フィルタリングされたチャンクに対して逆垂直フィルタリングを実行するステップとを含む、所与の分解レベルに対するステップを備える画像を再構成する方法。
【０１２２】
（１９）前記埋め込みビットストリームが複数のブロックに復号化され、ブロックが相互に独立して復号化されるようにした上記（１８）に記載の方法。
【０１２３】
（２０）前記復号化が、逆４分木分解およびビットプレーン復号化を含むようにした上記（１８）に記載の方法。
【０１２４】
【発明の効果】
オフチップ・メモリのサイズを削減することができる。また、チップおよびオフチップ・メモリ間の入出力操作数を削減することができる。
【図面の簡単な説明】
【図１】一度にＮ行のウィンドウが変換される画像を示す図。
【図２】この発明に従う、画像を記述する埋め込みビットストリームを生成する方法のフローチャート。
【図３】画像のサブバンド分解を示す図。
【図４】チップおよびオフチップ・メモリを備え、埋め込みビットストリームを生成する装置のブロック図。
【図５】装置の符号器およびオフチップ・メモリに対応する、フィルタ・ステージのブロック図。
【図６】装置の符号器およびオフチップ・メモリに対応する、代替のフィルタ・ステージのブロック図。
【図７】複数のサブバンド行を複数の独立したブロックとして符号化する方法のフローチャート。
【図８】複数の独立したブロックとして符号化された複数のサブバンド行を示す図。
【図９】複数のサブバンド行を複数の独立したブロックとして符号化する、４分木符号化およびビットプレーン符号化の組み合わせを含む代替方法のフローチャート。
【図１０】ブロックの４分木分解を示す図。
【図１１】符号化に先立つブロックの交互配置を示す図。
【図１２】埋め込みビットストリームから画像を再構成するシステムのブロック図。
【図１３】図１２のシステムが実行するトランザクション例のフローチャート。
【図１４】この発明に従って埋め込みビットストリームから画像を再構成する方法のフローチャート。
【図１５】チップおよびオフチップ・メモリを備え、埋め込みビットストリームから画像を再構成する装置のブロック図。
【符号の説明】
１０  画像
２０、５００  システム
２２、８０４  チップ
２４、８０２  オフチップ・メモリ
３０  フィルタ・ステージ
３２  第１の符号器
３４  第２の符号器
３６  第３の符号器
３８  第４の符号器
【図１】
0004204165.tif 000002
【図２】
0004204165.tif 000003
【図３】
0004204165.tif 000004
【図４】
0004204165.tif 000005
【図５】
0004204165.tif 000006
【図６】
0004204165.tif 000007
【図７】
0004204165.tif 000008
【図８】
0004204165.tif 000009
【図９】
0004204165.tif 000010
【図１０】
0004204165.tif 000011
【図１１】
0004204165.tif 000012
【図１２】
0004204165.tif 000013
【図１３】
0004204165.tif 000014
【図１４】
0004204165.tif 000015
【図１５】
0004204165.tif 000016