(57)【特許請求の範囲】
【請求項１】
有限アルファベットデータキャラクタを符号化する方法であって、
適応ランレングス符号化器に対するストリング長を初期化することと、
修正された符号化パラメータ（ｋ）に基づいて前記ストリング長を修正することとを備え、前記修正された符号化パラメータは、
スケールファクタ（Ｌ）を現在の符号化パラメータに適用し、
既に符号化されたキャラクタに基づいて、前記スケールファクタが適用された前記符号化パラメータの値（ｋｐ）を調整し、
逆スケールファクタを、前記調整された符号化パラメータに適用することによって生成されることを特徴とする方法。
【請求項２】
前記符号化パラメータは予想されたキャラクタに遭遇するたびに増加することを特徴とする請求項１に記載の方法。
【請求項３】
前記予想されたキャラクタはゼロであることを特徴とする請求項２に記載の方法。
【請求項４】
前記符号化パラメータは予想されたキャラクタに遭遇しないたびに減少することを特徴とする請求項１に記載の方法。
【請求項５】
前記予想されたキャラクタはゼロであることを特徴とする請求項４に記載の方法。
【請求項６】
前記キャラクタは、ビットプレーンに基づいて符号化されることを特徴とする請求項１に記載の方法。
【請求項７】
前記符号化パラメータは２の累乗であることを特徴とする請求項１に記載の方法。
【請求項８】
前記データはウェーブレット変換係数を含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記データは生物測定値を表すことを特徴とする請求項１に記載の方法。
【請求項１０】
前記データは、ファックスされるイメージの走査を表すことを特徴とする請求項１に記載の方法。
【請求項１１】
請求項１に記載の方法をコンピュータに実行させる命令が格納されていることを特徴とするコンピュータ読取り可能媒体。
【請求項１２】
バックワード適応ランレングス符号化を使用して符号化された有限アルファベットデータキャラクタを復号する方法であって、
適応ランレングス復号器に対するストリング長を初期化することと、
修正された復号パラメータ（ｋ）に基づいて前記ストリング長を修正することとを含み、前記修正された復号パラメータは、
スケールファクタ（Ｌ）を現在の復号パラメータに適用し、
前記スケールファクタが適用された復号パラメータの値（ｋｐ）の現在の値及び直前に受け取ったコードワードに基づいて、前記スケールファクタが適用された前記復号パラメータの値を調整し、
逆スケールファクタを前記調整された復号パラメータに適用することによって生成されることを特徴とする方法。
【請求項１３】
前記復号パラメータは、予想されたコードワードの値に遭遇するたびに増加されることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記予想されたコードワードの値はゼロであることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記復号パラメータは、予想されたコードワードの値に遭遇しないたびに減少されることを特徴とする請求項１２に記載の方法。
【請求項１６】
前記予想されたコードワードの値はゼロであることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記キャラクタはビットプレーンに基づいて復号されることを特徴とする請求項１２に記載の方法。
【請求項１８】
前記復号パラメータは２の累乗であることを特徴とする請求項１２に記載の方法。
【請求項１９】
請求項１２に記載の方法をコンピュータに実行させる命令が格納されていることを特徴とするコンピュータ読取り可能媒体。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、一般にイメージ圧縮の分野に関し、詳細には、デジタルビクチャの改善されたウェーブレット符号化および復号に関する。
【０００２】
（著作権の注記／許諾）
本特許明細書の開示の一部は、著作権保護を受けるマテリアルを含む。著作権所有者は、特許商標局の特許ファイルまたは記録において現れるような、特許明細書または特許開示の、いかなる者によるファクシミリ複製にも異議を有するものでないが、そうでない場合はいかなるすべての著作権も留保するものである。以下の注記は、以下で、かつ、本明細書の図面において記載されたようなソフトウェアおよびデータに適用される。すなわち、Ｃｏｐｙｒｉｇｈｔ（著作権）１９９９，Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ，Ａｌｌ  Ｒｉｇｈｔｓ  Ｒｅｓｅｒｖｅｄ。
【０００３】
（背景）
デジタルピクチャは、Ｗｅｂページ、ＣＤ−ＲＯＭ百科事典、デジタルカメラ、およびその他、多数の応用例において使用されている。たいていの場合、ピクチャを少量のストレージに適合させるため、あるいは短時間でダウンロードされるために、ピクチャを圧縮することが必要である。例えば、典型的なデジタルカメラでは、ピクチャが、１０２４×７６８画素（ピクセル）の解像度で、ピクセルにつき１２〜２４ビットの解像度で撮られる。したがって、各イメージにおける生データが、約１．２〜２．５メガバイトである。いくつかのピクチャをコンピュータディスケットに適合させるため、例えば、各ピクチャによって使用されたデータ量を減らすことが必要である。達成される圧縮率が大きいほど、より多くのピクチャがディスケットまたはメモリカードに適合し、より高速に、電話回線など、帯域幅が制限された伝送媒体を介して転送することができる。
【０００４】
イメージ圧縮は、過去２０年間に渡って広範に研究されてきた。ＪＰＥＧ規格は、ＩＳＯ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄｓ  Ｏｒｇａｎｉｚａｔｉｏｎ）のＪＰＥＧ（ｊｏｉｎｔ  ｐｈｏｔｏｇｒａｐｈｉｃ  ｅｘｐｅｒｔｓ  ｇｒｏｕｐ）委員会によって定義されたものであり、１９９２年に定義され、最も普及した、デジタルピクチャを圧縮する方法である。ＪＰＥＧでは、小型の正方形のブロックのピクセル（サイズ８×８）が周波数領域に、離散コサイン変換（ＤＣＴ）によってマップされる。ＤＣＴ係数が量子化され（スケールファクタによって除算され、最も近い整数に丸められる）、１次元のベクトルに、固定のジグザク走査パターンを介してマップされる。このベクトルが、ランレングスおよびハフマン符号化の組合せを介して符号化される。
【０００５】
ＪＰＥＧにおける小型の８×８ブロックの独立処理は、実施の視点から、特に低コストのハードウェアにおいて利点である。しかし、これは、ＪＰＥＧの主な問題、すなわち、ブロッキングアーチファクト（ｂｌｏｃｋｉｎｇ  ａｒｔｉｆａｃｔｓ）にも通じる。隣接ブロックからの量子化エラーはブロック間では相関しないが、ブロック内で相関するので、８×８ブロックの境界が、復元されたイメージにおいて、隣接ブロック間の符号化における潜在的な差により可視となる。このようなアーチファクトは、タイリングまたはブロッキングアーチファクトと呼ばれ、これらはオーバーラップ基底関数による変換を使用することによって低減させることができる（が、完全に解消することはできない）。
【０００６】
ブロッキングアーチファクトを除去するための効率的な方法は、ブロックＤＣＴをウェーブレット分解によって置き替えることであり、これは効率的な時間周波数表現を提供する。大変よい圧縮性能を、ウェーブレット係数を量子化および符号化することによって、得ることができる。
【０００７】
多数のウェーブレットベースのイメージ圧縮システムが、過去数年における技術論文において報告されている。ウェーブレットによれば、典型的にはＪＰＥＧより２０％〜５０％よい範囲の圧縮率を達成することが可能である。より重要には、ウェーブレット変換が、ＪＰＥＧの妨げとなるブロッキングアーチファクトを有していないピクチャに通じる。したがって、ウェーブレットベースの変換が、ますます普及しつつある。実際に、ＪＰＥＧの次の改訂はＪＰＥＧ２０００と称され、ここでは、考慮中のすべての提案がウェーブレットを使用する。
【０００８】
いくつかの従来のウェーブレット変換は、イメージを、１６サブバンドに対応する係数に分解する。これは、サブバンドの４×４の行列の結果となり、これが大きいブロックフォーマットと呼ばれ、スペクトル分解およびチャネルの順序付けを表す。文字ＬおよびＨが使用されて、各サブバンドのためのローパスフィルタリングおよびハイパスフィルタリングがそれぞれ識別される。最初のサブバンドがＬＬおよびＨＬ係数を含み、各集合（ｓｅｔ）における最初の文字（ｌｅｔｔｅｒ）が水平フィルタリングに対応し、第２のものが垂直フィルタリングに対応する。２つの段階が、各サブバンドフィルタリングの結合において使用される。順序付けが、左から右へ、かつ、下から上へ増大する周波数に対応する。この順序付けが固定されて、符号化および復号が、固定された方法において機能することができる。次いで、係数の量子化が実行され、その後にある形式の係数の圧縮符号化が続き、さらにイメージを圧縮するために適応ハフマン符号化または算術符号化が含まれる。これらの形式の符号化は、データタイプに依存するゼロツリー構造を含んで、大変複雑になる可能性がある。これらの符号化器はかなり複雑であり、多数が、圧縮される異なるイメージに合わせて修正される必要があり、これらをハードウェアにおいて実施することを困難にする。
【０００９】
ウェーブレット係数を順序付けするためのゼロツリーに基づく手法の複雑さに対する１つの解決策が、Ｏｒｄｅｎｔｌｉｃｈ  Ｅ．他の文献、「Ａ  ｌｏｗ  ｃｏｍｐｌｅｘｉｔｙ  ｍｏｄｅｌｉｎｇ  ａｐｐｒｏａｃｈ  ｆｏｒ  ｅｍｂｅｄｄｅｄ  ｃｏｄｉｎｇ  ｏｆ  ｗａｖｅｌｅｔ  ｃｏｍｐｒｅｓｓｉｏｎ  ｃｏｅｆｆｉｃｉｅｎｔｓ」  Ｐｒｏｃｅｅｄｉｎｇｓ  ＤＣＣ  ′９８Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ  Ｃｏｎｆｅｒｅｎｃｅ（ＣＡＴ．Ｎｏ．９８ＴＢ１００２２５），Ｐｒｏｃｅｅｄｉｎｇｓ  ＤＣＣ  ′９８Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ  Ｃｏｎｆｅｒｅｎｃｅ，Ｓｎｏｗｂｉｒｄ，ＵＴ，ＵＳＡ，３０Ｍａｒｃｈ−１  Ａｐｒｉｌ  １９９８，ｐａｇｅ４０８−４１７，ＸＰ０００９２５０９６  １９９８  ＬｏｓＡｌａｍｉｔｏｓ，ＣＡ，ＵＳＡ，ＩＥＥＥ  Ｃｏｍｐｕｔ．Ｓｏｃ，ＵＳＡ  ＩＳＢＮ  ０−８１８６−８４０６−２により開示されている。Ｏｒｄｅｎｔｌｉｃｈは２段階のプロセスを開示しており、そこでは係数の一集合（ａ  ｓｅｔ  ｏｆ  ｃｏｅｆｆｉｃｉｅｎｃｅｓ）が、その集合の外にある、前もって符号化された情報に応じて複数の係数の集合に分解される。第２の段階では、選択される順序付け（ｏｒｄｅｒｉｎｇ）によって制約される通常のコンテキストモデル化を使用して複数の係数の集合を分解する。この場合、結果として生じるキャラクタは、適応ランレングスＧｏｌｏｍｂ−Ｒｉｃｅ符号化器を使用して符号化される。
ウェーブレット圧縮係数および同様の有限アルファベットデータに作用し、ハードウェアやソフトウェアでも実施されるような、簡素な符号化技術への要求がある。
【００１０】
（発明の概要）
適応符号化が、より小さい絶対値の値がより大きい絶対値を有するものより発生する可能性が高い、符号付き整数データにおいて実行される。この符号化はビットプレーンにおいて実行され、これが、復元の精度における、ロスレス（エラーなし）から様々なレベルの近似復元までのスケーラビリティを可能にする。ハフマン符号化とは異なり、コードテーブルが必要ではなく、これは、簡素な規則がコードワードを入力ストリングから決定するためである。
【００１１】
１つの形式では、各ビットプレーンについて、最短のコードワード（単一の０）が割り当てられ、最も可能性の高い入力、ゼロの、長さ２ｋを有するランが表現され、ｋは、コードワードにおいて使用されたビットの数を最小化することを求め、量子化された係数のストリングを表現するために使用されたコードワードを制御するパラメータである。ｋは、より長いランに遭遇するときに増加し、そうでない場合、たとえば、そのランにおけるものとは異なったシンボルに遭遇するときに減少するように適合される。ビットプレーンの符号化は、適応算術符号化器など、いかなる効率的なエントロピー符号化器によっても行うことができるが、一実施態様においては、新しい適応ランレングスおよびＧｏｌｏｍｂ−Ｒｉｃｅ符号化器が使用される。
【００１２】
ゼロツリーなど、データ依存型データ構造、または、ツリーにおける集合区画（ｓｅｔ ｐａｒｔｉｔｉｏｎｓ）のための別々のリストの使用を必要としないことにより、ハードウェア実施をより構築しやすく、ソフトウェア実施はより高速で動作することができる。
【００１３】
（詳細な説明）
本発明の例示的実施形態の以下の詳細な説明では、添付の図面への参照が行われ、これは本明細書の一部を形成し、例示として、本発明を実施することができる特定の例示的実施形態が図示される。これらの実施形態が、当業者が本発明を実施できるようにするために十分な詳細において記載され、他の実施形態を利用できること、および、論理的、機械的、電気的、かつ他の変更を、本発明の精神または範囲から逸れることなく行うことができることを理解されたい。したがって、以下の詳細な説明は、限定の意味において取られるものではなく、本発明の範囲は、付属の特許請求の範囲によってのみ定義される。
【００１４】
詳細な説明は、多数のセクションに分割される。第１のセクションは、本発明を実施するコンピュータシステムの動作を記載する。この後に、量子化されたウェーブレット係数の固定並べ替え、および、それらの適応ランレングス符号化の高レベルの記載が続く。このような符号化されたデータのための復号器も記載される。次いで、高レベルの記載から選択されたブロックのさらなる詳細が、フローチャートの使用によって記載される。この後に、このような符号化器および復号器の、ソフトウェアアプリケーションのオフィス一式における使用の一般的な記載が続く。結論は、いくつかの潜在的な利点を記載し、さらなる代替実施形態を記載する。
【００１５】
ハードウェアおよび動作環境
図１は、本発明を実施することができる適切なコンピューティング環境の、簡単で一般的な説明を提供する。本発明が以下で、一般に、パーソナルコンピュータ（ＰＣ）によって実行される命令を含む、コンピュータ実行可能プログラムモジュールに関連して記載される。プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれ、これらが特定のタスクを実行し、あるいは特定の抽象データ型を実施する。本発明を他のコンピュータシステム構成により実施することができ、これらには、マルチメディア機能を有するハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサに基づくプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどが含まれることは、当業者には理解されよう。本発明はまた、分散コンピューティング環境において実施することもでき、タスクがリモート処理デバイスによって実行され、これらが通信ネットワークを介してリンクされる。分散コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートのメモリストレージ装置に位置付けることができる。
【００１６】
図１は、汎用コンピューティングデバイスを従来のパーソナルコンピュータ２０の形式において示し、これが、処理装置２１、システムメモリ２２、および、システムメモリおよび他のシステム構成要素を処理装置２１に結合するシステムバス２３を含む。システムバス２３を、いくつかのタイプのいずれにすることもでき、これには、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスが含まれ、これは様々なバス構造のいずれを使用することもできる。システムメモリ２２が読取り専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。基本入出力システム（ＢＩＯＳ）２６は、ＲＯＭ２４に格納され、情報をパーソナルコンピュータ２０の構成要素間で転送する基本ルーチンを含む。ＢＩＯＳ２６は、システムのための起動ルーチンも含む。パーソナルコンピュータ２０はさらに、ハードディスク（図示せず）から読み取りかつこれに書き込むためのハードディスクドライブ２７、リムーバブル磁気ディスク２９から読み取りかつこれに書き込むための磁気ディスクドライブ２８、および、ＣＤ−ＲＯＭまたは他の光媒体など、リムーバブル光ディスク３１から読み取りかつこれに書き込むための光ディスクドライブ３０を含む。ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０が、システムバス２３へ、それぞれハードディスクドライブインターフェース３２、磁気ディスクドライブインターフェース３３、および光ディスクドライブインターフェース３４によって接続される。ドライブおよびそれらの関連付けられたコンピュータ読取り可能媒体が、パーソナルコンピュータ２０用の、コンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供する。本明細書に記載された例示的環境は、ハードディスク、リムーバブル磁気ディスク２９およびリムーバブル光ディスク３１を使用するが、コンピュータによりアクセス可能なデータを格納することができる他のタイプのコンピュータ読取り可能媒体も例示的動作環境において使用できることは、当業者には理解されよう。このような媒体には、磁気カセット、フラッシュメモリカード、デジタル汎用ディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどが含まれる可能性がある。
【００１７】
プログラムモジュールを、ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４およびＲＡＭ２５において格納することができる。プログラムモジュールには、オペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、他のプログラムモジュール３７およびプログラムデータ３８が含まれる可能性がある。ユーザが、コマンドおよび情報をパーソナルコンピュータ２０へ、キーボード４０およびポインティングデバイス４２など、入力装置を介して入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどが含まれる可能性がある。これらおよび他の入力装置が、しばしば処理装置２１へ、システムバス２３に結合されたシリアルポートインターフェース４６を介して接続されるが、これらを、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）など、図１において図示されていない他のインターフェースを介して接続することもできる。モニタ４７または他の表示装置も、システムバス２３へ、ビデオアダプタ４８などのインターフェースを介して接続する。モニタに加えて、パーソナルコンピュータは典型的には、スピーカおよびプリンタなど、他の周辺出力装置（図示せず）を含む。
【００１８】
パーソナルコンピュータ２０は、ネットワーク環境において、リモートコンピュータ４９など、１つまたは複数のリモートコンピュータへの論理接続を使用して動作することができる。リモートコンピュータ４９は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードにすることができる。これは典型的には、パーソナルコンピュータ２０に関して上で記載された構成要素の多数またはすべてを含むが、ストレージ装置５０のみが図１に例示されている。図１に示された論理接続は、ローカルエリアネットワーク（ＬＡＮ）５１およびワイドエリアネットワーク（ＷＡＮ）５２を含む。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００１９】
ＬＡＮネットワーキング環境に配置されるとき、ＰＣ２０がローカルネットワーク５１へ、ネットワークインターフェースまたはアダプタ５３を介して接続する。インターネットなど、ＷＡＮネットワーキング環境において使用されるとき、ＰＣ２０が典型的には、モデム５４、または、ネットワーク５２を介して通信を確立するための他の手段を含む。モデム５４は、ＰＣ２０の内部あるいは外部にすることができ、システムバス２３へ、シリアルポートインターフェース４６を介して接続する。ネットワーク環境では、２０内に常駐するように示されるＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｏｒｄを含むものなどのプログラムモジュール、またはその一部を、リモートストレージ装置５０に格納することができる。もちろん、図示されたネットワーク接続は例示的であり、通信リンクをコンピュータ間で確立する他の手段で置換することができる。
【００２０】
ソフトウェアは、オブジェクト指向プログラミング方法を含む、多数の異なる方法を使用して設計することができる。Ｃ＋＋およびＪａｖａ（登録商標）は、共通のオブジェクト指向コンピュータプログラミング言語の２つの例であり、これらはオブジェクト指向プログラミングに関連付けられた機能性を提供する。オブジェクト指向プログラミング方法は、データメンバ（変数）、および、このデータにおいて動作するメンバ関数（メソッド）を、クラスと呼ばれる単一のエンティティにカプセル化するための手段を提供する。オブジェクト指向プログラミング方法は、既存のクラスに基づいて新しいクラスを作成するための手段も提供する。
【００２１】
オブジェクトは、クラスのインスタンスである。オブジェクトのデータメンバは、コンピュータメモリ内部に格納される属性であり、メソッドは、このデータ上で動作して潜在的に他のサービスを提供する実行可能コンピュータコードである。オブジェクトの概念が本発明において活用され、本発明のある態様が、一実施形態においてオブジェクトとして実施される。
【００２２】
インターフェースは、関係する関数のグループであり、名前付きユニットに編成される。各インターフェースを、ある識別子によって一意に識別することができる。インターフェースはインスタンス化を有しておらず、つまり、インターフェースは定義でしかなく、インターフェースによって指定されるメソッドを実施するために必要とされた実行可能コードを有していない。オブジェクトは、インターフェースによって指定されたメソッドのための実行可能コードを提供することによって、インターフェースをサポートすることができる。オブジェクトによって供給された実行可能コードは、インターフェースによって指定された定義に従わなければならない。オブジェクトは、追加のメソッドを提供することもできる。インターフェースが、オブジェクト指向プログラミング環境における、あるいはそれによる使用に限定されないことは、当業者には理解されよう。
【００２３】
高レベルの符号化器および復号器の説明
ウェーブレット変換に基づいたイメージピクセル符号化器の簡素化されたブロック図が、図２に示され、対応する復号器が図３に示される。符号化器および復号器が、イメージピクセルデータに関して各入力および出力として記載され、他のデータも望まれるように変換することができる。図示の実施形態では、イメージピクセルデータがウェーブレット変換ブロック２１０に提供され、これが周知の方法で動作して、ウェーブレット係数を量子化ブロック２２０へ提供する。ウェーブレット係数は、背景のセクションで記載されたような大きいブロックフォーマットである。量子化は、一様量子化器（ｕｎｉｆｏｒｍ  ｑｕａｎｔｉｚｅｒ）によって実行され、これが、しきい値Ｔを定義する量子化ステップによって制御される。これは、各係数の表現が、ステップの中間における値によって、ステップの間に入る結果となる。Ｔが小さいほど、量子化において受ける損失が少ない。したがって、ブロック２２０の出力は一連の整数の数値であり、これらが、量子化されたウェーブレット係数である。多数の他の応用例におけるように、量子化器を、標準の丸めに基づくように、あるいは、ゼロに向かう丸めにおける（「不感帯（ｄｅａｄ  ｚｏｎｅ）」を有する量子化器としても知られる）ようにすることができる。
【００２４】
並べ替えおよびブロッキング機能またはブロック２３０が、ウェーブレット係数を、同様の値のクラスタにグループ化する。これは、ゼロになる可能性が最も高い周波数係数のブロックの、クラスタ化または共にグループ化の結果となる。並べ替えは、データが単調に減衰する振幅の分布を有する傾向があるという意味において、類似データのグループ化の可能性を増大させる。最初のブロックが、より大振幅のデータを有する傾向があるが、後続のブロックでは、ウェーブレット係数の振幅が減衰する傾向がある。グループ化は、走査順序を固定することによって行われ、これはデータ独立である。このようなグループ化の１つの集合（ｓｅｔ）が、図４において、６４ブロックのウェーブレット係数を有する例について示される。図４では、低周波数の構成要素が、グループ化の左上隅に向かって配置され、各レベルの低高および高低サブバンドからの係数のブロックが交番させられる。並べ替えおよびブロッキングブロック２３０が、マクロブロックのシーケンスを、指示された走査順序で提供する。最初のブロック０は、ウェーブレットツリーのレベル０のすべての係数を含む。これは、最も粗い解像度に対応する。ブロック０〜３は、レベル１のすべての係数を含む。ブロック０〜１５は、レベル２のすべての係数を含み、レベル３は、ブロック０〜６３を含む。ブロックが、各レベルの低高および高低サブバンドから交互になり、低高がシーケンスの最上部であることに留意されたい。以下の数学的説明のセクションでは、この特定の順序付けの利点を論じる。他の順序付けは、当業者によって理解されるように可能であるが、上の順序付けが他のものよりよく動作すると思われる。次いで、ビットが、最上位のビットで開始して、順次に符号化される。
【００２５】
適応符号化ブロック２４０がマクロブロックを受信し、これらを無損失な方法（ｌｏｓｓｌｅｓｓ ｍａｎｎｅｒ）で符号化する。ブロックのクラスタ化が、圧縮するデータを提供し、これが大きなゼロのクラスタを有する。ビットプレーンに基づいて符号化することによってさらにデータを並べ替えることが、大きなゼロのストリング（ｓｔｒｉｎｇｓ  ｏｆ  ｚｅｒｏｓ）を発見する可能性を増大させる。最初のビットプレーンについて最上位のビットで開始することが、ゼロの長いストリングのより高い可能性に通じる。さらに、これは、最も関連のあるデータが最初に符号化されることも保証する。第３または第４のビットプレーンが符号化されるときまで、確率は、１とは対照的にゼロについてほぼ等しく、直線的二進符号化を効果的に使用することができる。
【００２６】
符号化器は、適応ランレングス修正を有するＧｏｌｏｍｂ−Ｒｉｃｅ符号化器の適合である。簡素な項では、２ｋ個のゼロのストリングが、ゼロに等しい単一のビットからなるコードワードによって表現される。ゼロコードワードによって表現されたゼロのストリングの長さは、パラメータｋによって制御され、これはデータに遭遇したときに、観察されたゼロの頻度に基づいて変わる。ゼロ値が符号化されたとき、ゼロがより可能性が高いと仮定され、そのためパラメータｋの値が増加される。ゼロでない値に遭遇したとき、ｋが減少される。このような増加および減少の量を適切に制御することによって、符号化器が、変化するゼロの確率を有するビットのストリングをよく追跡することができ、実際にこの確率を推定するオーバーヘッドの必要性がない。フィードバックループ２４５が使用されて、符号化器２４０のバックワード適応的な性質が表現される。この符号化は、効率的な圧縮、および、入力データの統計量における変化への高速な適合に備える。符号化器２４０がビットストリームを外部に提供し、これは、最も関連のある情報がビットストリームの最初で提供されることにおいて、効果的にプログレッシブである。最下位のビットが最後のビットプレーンで符号化されるので、より低解像度のビットストリームでは、解像度忠実性ブロック２５０で表現されたように、これらを効果的に廃棄するかあるいは符号化しないことができる。これは、データのより低い帯域幅伝送に有用である。
【００２７】
図３においてブロック形式で図示されたような復号は、本質的に符号化およびデータ変換の逆である。図２の符号化器によって生成されたものなど、符号化されたデータのビットストリームが、ロスレス適応復号ブロック３１０で受信される。ビットストリームを直接、復号器から、ローカルのストレージから、あるいはリモートの復号器またはストレージから、衛星伝送、ケーブル伝送または他のネットワークによってなど、多数の実行可能伝送媒体の１つを介して受信することができる。復号ブロック３１０が、符号化中に開発された規則を、フィードフォワード線３１５を介して受信する。ブロック３１０が本質的に、使用されるストリング長を受信し、データを規則に従って復元する。再度、これはブロックレベルで動作するが、これは本発明の要件ではない。これは単に、より大量のメモリを必要とするか、あるいは、このようなメモリが使用可能でなかった場合はページングを必要とする、イメージまたは他のデータの表現全体を同時に処理することよりも、好都合にする。忠実性低減の１つの形式を、ブロック３１０で、ビットプレーンにおける最後のビットを復号しないことのみによって実行することができる。これは効果的に、パラメータＴによって制御されたステップサイズを倍増する。これは、データの忠実性を低減するための簡素な方法である。
【００２８】
ブロック３１０から出たデータは、ブロック２３０から来る整数データに等しくなるべきである。しかし、３２０のイメージのより高解像度の層を、このポイントで、ブロック３２０で示されたように除去することができ、これは、より高い周波数ウェーブレット係数を効果的に使用しないことのみによる。これは、イメージまたはイメージの集合を表示するために使用されたウィンドウが小型であった場合、有用となる。次いで、ブロック３３０が使用されて、ブロックが元の位置へ戻るようにアンシャッフルあるいは並べ替えされる。並べ替えブロック３３０の出力は、受信されたビットストリームにおけるヘッダによって提供されるステップサイズを使用することによって、ブロック３４０で戻すように再乗算される必要がある整数の数値である。これが、復元されたウェーブレット係数を提供する。ヘッダは、イメージサイズがどれほど大きいかについての情報、および、他の標準イメージフォーマットのデータも提供する。次いで、逆ウェーブレット変換が、周知の方法で３５０で実行される。選択された所望の忠実性または解像度低減以外の損失のみが、量子化ステップにおいて受けられ、これがＴパラメータの修正によって制御可能であることに留意されたい。
【００２９】
解像度低減オプションブロック３２０は、少数の異なる方法において動作することができる。データを除去するための１つの方法は、含まれた整数をゼロにすることによる。解像度を低減するためのさらなる方法は、アンシャッフルブロック３３０の動作を修正することであり、これに、値を所望のポイントでゼロにするように命令することができる。アンシャッフルブロック３３０および逆ウェーブレット変換ブロック３５０に、どこでゼロが開始するかを伝えることによって、このようなポイントでの実際のデータの不必要な処理をなくすように、これらを容易に修正することができる。
【００３０】
本発明の適応符号化および復号は、変化する統計量と共に、クラスタ化されたゼロを有するデータにおいて、大変よく動作する。このタイプのデータを、ゼロのいずれの側においても確率の近い指数減衰を有するデータの高い確率を有するものとして特徴付けることもできる。静的イメージデータおよびビデオなど、マルチメディアデータがこの特性を有する。さらに、多数のタイプの物理データの変換も、このタイプの特性を有する。物理データを取り込むとき、情報は通常、少数の場所においてのみ起こり、これは、他のデータの大部分がゼロであることを意味する。データの対称性も、このタイプの符号化が最適に機能するために望まれる特性である。すなわち、負および正の値の指数的減少が、情報スパイクのいずれの側においても有益である。このような物理データの例には、ＥＣＧおよび他の生物測定（ｂｉｏｍｅｔｒｉｃ）タイプのデータが含まれる。
【００３１】
符号化の数学的説明
図２および図３を参照して上で論じられた変換および符号化および復号の数学的説明が、次に提供される。以下のステップが、符号化アルゴリズムを定義する。
【００３２】
１．イメージアレイｘ（ｍ，ｎ）、ｍ＝０，１，．．．，Ｍ−１、ｎ＝０，１，．．．，Ｎ−１が与えられると、そのウェーブレット変換係数Ｘ（ｒ，ｓ）、ｒ＝０，１，．．．，Ｍ−１、ｓ＝０，１，．．．，Ｎ−１を計算する。
【００３３】
２．各係数Ｘ（ｒ，ｓ）が、以下に従って量子化される。
【００３４】
【数１】
0004426118.tif 000002
【００３５】
ただし、ｓｇｎ（・）は通常のシグナム（ｓｉｇｎｕｍ）関数であり、Ｔは量子化しきい値である。このステップは、連続のウェーブレット係数Ｘ（ｒ，ｓ）を整数のシーケンスｑ（ｒ，ｓ）にマップする。これは、情報損失を導入する唯一のステップである。
【００３６】
３．量子化された係数が並べ替えられ、以下に従ってブロックにグループ化される。
【００３７】
【数２】
0004426118.tif 000003
【００３８】
ｌ＝０，１，．．．，Ｌ−１およびｋ＝０，１，．．．，Ｋ−１では、Ｌ＝ＭＢＮＢがブロックサイズであれば、Ｋ＝ＭＮ／Ｌがブロックの総数であり、ＭＢおよびＮＢがＭＢ＝Ｍ／２ＪおよびＮＢ＝Ｎ／２Ｊによって定義される。パラメータＪが、ｕｋ（ｌ）にグループ化される量子化された係数の方形ブロックのサイズ、よってブロックサイズを制御する。
【００３９】
各ｋでは、左上隅の指標（ｒｋ，ｓｋ）が、先に記載された走査順序に従って定義される。
【００４０】
４．ブロックが、固定サイズＬＫＢのマクロブロックＵｉに、Ｕｉ＝｛ｕｋ（ｌ）｝の形式でグループ化され、ｋ＝ｉＫＢ，ｉＫＢ＋１，．．．，ｉＫＢ＋ＫＢ−１である。各マクロブロックでは、そのビットプレーンが、適応ランレングス／Ｒｉｃｅ（ＲＬＲ）符号化器に従って、連続して量子化される。ＵｉのためのＲＬＲコードによって使用されたビット数の二進符号化と、その後に続く実際のＲＬＲ出力ビットが、出力ビットストリームに追加される。
【００４１】
次いで、以下のステップが使用されて、ＰＷＣビットストリームが復号される。
【００４２】
１．マクロブロックＵｉにおけるＲＬＲ符号化ビットを、ｉ＝０，１，．．．，Ｉｍａｘ−１について復号する。Ｉｍａｘ＜Ｋであった場合、ウェーブレット係数のより低解像度のバージョンが回復される。所望の復元精度が与えられると、各マクロブロック内で、最初の少数のビットプレーンのみが復号されることに留意されたい。復号しないように選択されるビットプレーンｑ（ｒ，ｓ）におけるすべてのビットが、ゼロに設定される。解像度のスケーラビリティが、Ｉｍａｘ＜Ｋを選択することによって達成されるが、忠実性のスケーラビリティは、各マクロブロックのためのビットプレーンの部分集合のみを復号することによって達成される。
【００４３】
２．ｑ（ｒ，ｓ）を回復した後、ウェーブレット係数が以下によって復元される。
【００４４】
【数３】
0004426118.tif 000004
【００４５】
（３）における復元規則と結合された（２）における量子化規則が、原点の周囲に不感帯を有する一様量子化器を含み、これが、ラプラシアン（ダブルサイドエクスポーネンシャル）確率分布を有するランダム変数の最小エントロピースカラ量子化について最適であることに近いことに留意されたい。
【００４６】
ＰＷＣ符号化器のステップ３において記載されたように、ウェーブレット係数を並べ替えるため、左上隅の指標（ｒｋ，ｓｋ）のシーケンスが定義される。図４で示された走査順序が使用され、ＭＢ＝Ｍ／２ＪおよびＮＢ＝Ｎ／２Ｊが各ブロックのサイズを制御する。パラメータＪは、ブロックゼロが正確に、最も粗い解像度ですべてのウェーブレット係数、例えば、すべてのスケーリング関数の係数を含むように、選択されるべきである。したがって、Ｊは、ウェーブレット変換で使用された解像度レベルの数（ツリー深度）に等しくするべきである。これは、図４の、すべての左上隅の指標（ｒｋ，ｓｋ）のシーケンスから推断することが容易である。
【００４７】
図４から、いかなる所望のレベルの解像度でも完全な係数の集合を復号するために、インデックス０からＫｍａｘ−１までのすべてのブロックを使用することが望ましいことが明らかであり、Ｋｍａｘは４の累乗である。したがって、ＰＷＣ復号器のステップ１では、Ｋｍａｘが４の累乗であるようにＩｍａｘ−１が選択される。
【００４８】
同一解像度レベル内の低高（ＬＨ）および高低（ＨＬ）ウェーブレット係数の代替走査の理由は、簡素である。元のイメージが特定の特徴（または特徴なし）をある空間位置で有すると仮定すると、その位置に対応するＬＨおよびＨＬサブバンドのクラスタが、大きい（あるいは小さい）値を有する可能性が高い。したがって、同一空間位置に対応するＬＨおよびＨＬサブバンドからのこのペアのブロックが、マクロブロックにおいて連続して、あるいは、少なくとも近似して、あるいは、互いに接近して見えるようにすることによって、大小の値のクラスタを作成する可能性がより高い。これが、量子化された係数のビットプレーンにおける長いゼロのランの確率を増大させる。
【００４９】
図７のフローチャートは、図４に示された順序において係数のブロックを書くために使用されたアルゴリズムを記載する。アルゴリズムは、コンピュータプログラム命令において、あるいは、ハードウェア、ファームウェア、または望まれるようなすべての組合せにおいて実施することができる。アルゴリズムが開始ブロック７１０で入力される。７１５で、Ｍ×Ｎの量子化されたウェーブレット係数を含む入力行列Ｑが読み取られる。係数は、量子化ブロック２２０によって提供されたものなどである。７２０で、ウェーブレットレベルの数が、周知の方法でＪＷとして定義される。ブロック７２５で、ブロックサイズがＮＨ×ＮＶとして定義され、ＮＨはＭ／（２ＪＷ）に等しく、ＮＶはＮ／（２ＪＷ）に等しい。次いで、７３０で、最初の出力ブロックが書き込まれ、ＩＨおよびＩＶがそれぞれＮＨおよびＮＶとして初期化され、これは、サイズがより大きいさらなるブロックの書込みのためのループを定義することにおける使用のためである。簡素化された例では、図４において、行列Ｑが１６×１６であり、４レベルであり、ブロックサイズが１であると仮定する。これが、初期の１のＩＨおよびＩＶを提供する。さらなる例では、ブロックサイズがより大きく、８×８または１６×１６など、またはさらに高いものなどである。
【００５０】
判断ブロック７４０が使用されて、係数の行列全体が書き込まれたかどうかが、ＩＨがＭ未満であるかどうかを調べるために検査することによって決定される。ＩＨがなおＭ未満であった場合、より多くの係数が書き込まれる必要がある。図４を見るとわかるように、最初の係数のブロックは１×１のサイズであり、次いで、これらが２×２および４×４などに増大する。次の集合のフローチャートのブロックが使用されて、続くブロックが書き込まれ、これは、１から、ブロック７４５でＩＨ／ＮＨとして設定されるブロックサイズパラメータＮＢＬＫへループすることによる。７５０でＩを使用して、７５５でＪを使用して定義された入れ子ループが使用されて、７６０で、出力ブロックＬＨおよびＨＬの書込みの順序が制御される。ＪがＮＥＸＴ文７６２でインクリメントされ、ＩがＮＥＸＴ文７６４でインクリメントされる。これは、このブロックの行が最初にこの特定の実施において書き込まれる結果となる。列も、望まれた場合は最初に書き込まれることが可能であり、あるいは、いかなる他の順序の書込みも使用することができる。初めてループを介して、１６×１６のサイズおよび４レベルの行列が与えられると、ＮＢＬＫも１であり、そのためブロック４３０および４４０のみが書き込まれる。
【００５１】
ＬＨおよびＨＬブロックの書込みの後に続いて、７７０および７７５で、第２の入れ子ループの集合（ｓｅｔ）が、再度ＩおよびＪを使用してセットアップされて、７８０で出力ブロックを書き込むための位置が定義される。この出力ブロックは同一レベルのＨＨブロックに対応し、これは最初に通過するブロック４５０である。ＮＥＸＴ  ＪおよびＮＥＸＴ  Ｉ文が入れ子ループを、それぞれ７８２および７８４で完了する。ＨＨブロックが、上のＬＨおよびＨＬブロックと同時に書き込まれている可能性もあり、これは、入れ子ループが等しいためであることに留意されたい。このレベルのすべてのブロックが書き込まれた後、７９０で、ＩＨおよびＩＶが２の指数としてインクリメントされ、次いで、７４０で比較されて、ＩＨがなおＭ未満であるかどうかが調べられる。ＩＨがＭ未満でなかった場合、７９５で、アルゴリズムが、本発明による完全な並べ替えられたウェーブレット係数の集合を提供した後、終了する。
【００５２】
２回目に入れ子ループを介して、ブロック４５５、４６０および４７０が書き込まれ、その後に、３回目に入れ子ループを介してブロック４８０、４７５および４９０が続く。より高いレベルを有する、より大きい行列のサイズも企図される。
【００５３】
復号のために元の順序を回復するため、単に、並べ替えアルゴリズムの出力を、それが書き込まれた方法と同一方法で読み取ることができる。必要とされるものは、元の行列のサイズ、および、書き込まれたレベルの数の知識だけである。次いで、書込み順序が単に逆にされて、係数が元の順序で提供される。直接マッピングも使用することができるが、著しい追加の帯域幅を設ける必要がある。
【００５４】
ビットプレーン符号化の詳細
符号化ブロック２４０によって実行された処理は、表１の図の助けによってより容易に理解することができる。ビットプレーンは単に、入力の量子化されたウェーブレット係数または他のデータの二進表現（絶対値＋符号）における、特定のインデックスのビットのシーケンスである。例えば、表１は、値のシーケンス｛９，−６，１，０，−２，３，−４，−１，２｝のためのビットプレーンを示す。この表では、ビットプレーン４がシーケンス｛１００００００００｝であり、ビットプレーン３がシーケンス｛０１００００１００｝であり、ビットプレーン２がシーケンス｛０１００１１００１｝であり、ビットプレーン１がシーケンス｛１０１００１０１０｝である。
【００５５】
【表１】
0004426118.tif 000005
【００５６】
表１における入力データでは、より小さい絶対値の値が発生する可能性がより高いようであり、これは、量子化されたウェーブレットデータおよび有限アルファベットデータの典型でもある。上のパターンから、より高いビットプレーンが、より高いゼロの頻度を示す傾向があることがわかり、これは、より高い絶対値の入力値がより可能性が少ないためである。ビットプレーン１（最下位のビット）および符号ビットプレーン（ｓｉｇｎ  ｂｉｔ  ｐｌａｎｅ）は典型的には、ほぼ等しい頻度のゼロおよび１を有する。
【００５７】
図５のフローチャートは、ビットプレーンを介して入力データを効率的に符号化するためのアルゴリズムを記載し、５０５で開始する。５１０で、ビットプレーンが最初に、Ｎ個の数値を含む入力バッファｘから読み取られる。５１５で、ビットプレーン数ｂｍａｘが計算され、５２０で、有効フラグベクトルｓｆｌｇがすべてゼロに設定される。
【００５８】
５２５で、ビットプレーンインデックス変数ビットがｂｍａｘに等しく設定され、そのため符号化が最上位のビットプレーンで開始する。５３０で、インデックス「ｂｉｔ」によってポイントされたビットの値が、ビットプレーンベクトルｂｐを形成する。ブロック５３５および５４０で示されたように、各プレーンｂｐについて、ビットが２つの部分集合に分割される。ｘ１は、「１」エントリがより高いプレーンにおいて見られていない位置に対応し、これらが有効ビットと呼ばれる。ｘ２は、「１」が既により高いプレーンにおいて見られている位置に対応し、これらがリファインビット（ｒｅｆｉｎｅｍｅｎｔ  ｂｉｔｓ）と呼ばれる。
【００５９】
ブロック５４５で、ｘ１が、適応ランレングスＧｏｌｏｍｂ−Ｒｉｃｅ（ＡＲＬＧＲ）符号化器により符号化され、これは、ｘ１におけるより高いゼロの頻度から利益を得る。ｘ１において１に等しいあらゆるビットについて、符号ビットも符号化され、出力コードの最後に追加される。
【００６０】
ブロック５５０で、ｘ２が直線二進符号化により符号化される。これは、ｘ２ビットを出力ストリームに追加することによって行われる。符号化効率における最小損失に遭遇し、これは、ゼロおよび１が、ｘ２では通常、等しく可能性があるためである。
【００６１】
符号ビットはビットプレーンとは呼ばれず、これは、これらがビットプレーンとして処理されないためであることに留意されたい。符号ビットは、各ビットプレーンのｘ１ベクトルを符号化する処理において送信される。したがって、ベクトルｘ１を、アルファベットから引き出されるもの｛０，＋１，−１｝、すなわちビットおよび符号であると見なすこともできる。
【００６２】
図５におけるフローチャートの重要な特性は、どれがｘ１に属するビットであるか、および、どれがｘ２に属するビットであるかについての情報が、明示的に符号化される必要がないことである。ベクトルｓｆｌｇがビットの割振りをｘ１に制御し、ｓｆｌｇが最初にすべてゼロに初期化され、次いで、各ビットプレーンが符号化された後に５５５で更新される。したがって、復号器が容易にｓｆｌｇへの変更を追跡することができる。次のビットプレーンに継続するため、５６０でｂｉｔがデクリメントされ、５６５で、最後のプレーンが復号されたかどうかを調べるために検査される。そうでなかった場合、制御が、次のビットプレーンの符号化のためにブロック５３０へ進む。ｂｉｔがゼロに等しかったか、あるいは、より低解像度の符号化が望まれた場合はより高い数であった場合、５７０で、すべてのｘ１およびｘ２符号化の出力を含む出力バッファが書き込まれ、５７５で処理が終了する。
【００６３】
適応ランレングス＋Ｇｏｌｏｍｂ−Ｒｉｃｅ（ＡＲＬＧＲ）符号化器は、符号化利得が存在するところにある。これは、多数のゼロを有する長いベクトルｘ１を、より少ないゼロを有するより小さいコードにおいてマップする。ＡＲＬＧＲ符号化器を、以下に示されたように、関連付けられた符号ビットを有するか、あるいは、有していない二進シーケンスを符号化することに使用することができる。ＡＲＧＬＲ符号化器を理解するために、最初に、ランレングス符号化およびＧｏｌｏｍｂ−Ｒｉｃｅ符号化の基礎を考察されたい。
【００６４】
その一般的な形式では、ランレングス（ＲＬ）符号化の背景にある基本的な考えは、入力データベクトルにおける同一値の長いストリングを、繰り返される値およびその値が何回繰り返されるべきであるかを指定するコードによって、置き替えることである。このような反復ストリングが十分長く、十分多かった場合、ＲＬ符号化が、データベクトルを表現するために必要とされるビット数における著しい低減に通じる。
【００６５】
ＲＬ符号化を、０または１のいずれかが現れる可能性が著しくより高い、二進データの符号化に適用することができる。一例は、グラフィックスファイルにおいて、例えば、白の背景においてデジタル化された黒の描画である。白い画素（ピクセル）が０に等しいビットによって表現され、黒の点が１に等しいビットによって表現された場合、ゼロの方が現れる可能性がはるかに高いことが明らかである。実際に、多数の標準のグラフィックスファイルフォーマットが、ＲＬ符号化を使用している。
【００６６】
１９６６年、Ｇｏｌｏｍｂが、正の数の表現のための簡素なコードを提案した。数が幾何学的確率分布を有するソースから引き出された場合、すなわち、Ｐｒｏｂ｛ｘ＝ｎ｝＝ａｂｎであり、ａおよびｂがパラメータであった場合、Ｇｏｌｏｍｂコードが本当に最適（予想された最小の長さ）であることが、後に示された。数年後、Ｒｉｃｅが無関係に、実際に実施することが大変容易であるＧｏｌｏｍｂコードの部分集合を導出した。これらのコードが、Ｇｏｌｏｍｂ−Ｒｉｃｅコードとして知られるようになった。
【００６７】
本発明では、二進数のソースのためのＧｏｌｏｍｂ−Ｒｉｃｅコードが、ＲＬコードと結合される。結果として生じたランレングス＝Ｇｏｌｏｍｂ−Ｒｉｃｅコードが、表２に示される。このコードは、パラメータｋによって特徴付けられ、これがコードワード０に関連付けられたランの長さを制御し、この最大ランレングスは２ｋに等しい。
【００６８】
【表２】
0004426118.tif 000006
【００６９】
以前に記載されたビットプレーン符号化器におけるｘ１ベクトルの符号化では、符号を、ゼロでない各ビットのコードワードに追加する必要がある。そのため、ＲＬＧＲコードの簡素な拡張が、表３に示されたように使用される。
【００７０】
【表３】
0004426118.tif 000007
【００７１】
入力ベクトルの所与のソースでは、｛０，１｝または｛０，＋１，−１｝アルファベットのいずれかを使用して、パラメータｋが、予想されたコード長を最小にするために選択されるべきである。ソースがメモリを有しておらず、経時的に一定の統計量を有し、Ｐ０＝Ｐｒｏｂ｛シンボル＝０｝によって特徴付けられた場合、ｋの最適値をＰ０の関数として計算することが容易である。
【００７２】
しかし、実際には、二進（または二進＋符号）ベクトルは定常ではない。典型的な例は、ピクチャまたは走査された文書の量子化されたウェーブレット係数など、物理的世界から得られたデータを含む。したがって、ＲＬＧＲパラメータｋを経時的に調整して、データのローカルな統計量に最適に合致させる必要がある。多数の戦略（ｓｔｒａｔｅｇｉｅｓ）が考察されており、たいていは入力データを適切な長さのブロックに分割することを含む。各ブロックについて、Ｐ０が推定され、次いで、ｋの最適値が計算される。次いで、追加のコードが各ブロックの始めで送信されてｋの値が示され、これが復号器によって使用されるべきである。
【００７３】
符号化器２４０は新しい手法を採る。バックワード適応戦略（ｂａｃｋｗａｒｄ  ａｄａｐｔｉｖｅ  ｓｔｒａｔｅｇｙ）が、ＲＬＧＲパラメータｋを変更するために使用される。バックワード適応によって、ｋにおける変化が、直接的に入力データではなく、符号化されたシンボルに基づいて計算されることを意味する。基本戦略は、次のシンボルを符号化することにおいて使用されるｋの値が、先に符号化されたデータにのみ依存するべきであるということである。したがって、復号器が、変化するｋの値を回復するために行う必要のあることは、符号化器と同一適合規則を適用することだけである。したがって、復号を簡素化するために、このような規則を、計算するために可能な限り簡素にすることが重要である。
【００７４】
新しい適応ランレングス＋Ｇｏｌｏｍｂ−Ｒｉｃｅ（ＡＲＬＧＲ）符号化器２４０は、パラメータｋを変更するための以下の規則を使用する。ブロック６０４で、いくつかのパラメータが最初に定義される。スケールファクタＬが最初に定義され、これが使用されて、ｋｐがＬ＊ｋとして定義される。ｋｐは補助パラメータであり、その値が、それぞれ量ＵｐまたはＤｎだけ上がるかあるいは下がり、ｋの小数の移動を、浮動小数点演算の使用なしに許可する。最後に、Ｕｑが定義され、これが使用されて、出力コードがゼロであり、かつｋがゼロに等しかった場合、ｋｐが上に移動される。６０６で、入力バッファｘが読み取られ、Ｍ個の数値を含む。６０８で、ｋがｋ０に設定され、ｋｐがＬ＊ｋに設定され、ｒｕｎが０に設定される。この処理は、入力データの長期の統計量のためによい選択であるｋの値、例えば、ｋ＝２で開始される。６１０で、最初のシンボルｘｉｎｄｅｘ＝１で開始して、シンボルがｘ（ｘｉｎｄｅｘ）に設定され、ｒｕｎｍａｘが２ｋに設定される。
【００７５】
符号化処理の概観として、ソースシンボルを符号化した後、ｋｐが、送られた出力コードに基づいて調整される。出力コードが０であり、ｋ≠０であった場合、ｋｐが所定のインクリメントステップＵｐでインクリメントされ、すなわち、ｋｐ＝ｋｐ＋Ｕｐに設定される。出力コードが０であり、ｋ＝０であった場合、ｋｐが所定のインクリメントステップＵｑでインクリメントされ、すなわち、ｋｐ＝ｋｐ＋Ｕｑに設定される。出力コードが１で開始した場合（ゼロでない入力に対応する）、ｋｐが所定のデクリメントステップＤｎでデクリメントされ、すなわち、ｋｐ＝ｋｐ−Ｄｎに設定される。次の入力シンボルを符号化するためのｋの値が、ｋ＝［ｋｐ／Ｌ］に設定される（すなわち、ｋｐ／Ｌを最も近い整数に切り捨てる）。
【００７６】
このアルゴリズムは簡素な戦略に基づいている。ゼロのランに遭遇した場合、ｋが増加されて、より長いシーケンスのゼロを、単一の出力ビット＝０によって取り込むことができるようにする。ゼロでないシンボルに遭遇した場合、ｋが減少されて、過度に長い出力コードが回避される。上の補助パラメータｋｐおよびスケールファクタＬの使用が、小数ステップにおけるｋの調整を、上に示されたように浮動小数点演算を使用する必要なく、可能にする。
【００７７】
ＡＲＬＧＲ符号化器において試験されたデータの大部分では、性能が、以下のパラメータの典型的な選択、すなわち、Ｌ＝４、Ｕｐ＝４、Ｄｎ＝５およびＵｑ＝２について、きわめてよかった（符号化率がソースエントロピーに大変接近する）。いくつかの場合、これらのパラメータにおける調整が、さらにわずかに高性能に通じる可能性がある。
【００７８】
図６におけるフローチャートの説明に戻ると、ブロック６０２、６０４、６０６、６０８、６１０および６１２を参照して、上に記載されたような、後に続くパラメータの初期化および定義が、６１４で最初に検査されて、それがゼロに等しいかどうかが調べられる。そうであった場合、かつ、ｓｙｍｂｏｌがゼロであった場合、６１８でＵｑがｋｐに加算される。６２０でゼロが出力バッファに追加され、６２２で、ｋｐが範囲外、すなわちｋｐｍａｘを超えた場合、これがクリップされる。６２４で、ｋが、スケールファクタｋｐ／Ｌ未満の最大整数に設定される。次いで、Ｘｉｎｄｅｘがインクリメントされ、６２８で決定されたときにＭ未満であった場合、６１２で次のｓｙｍｂｏｌが選択される。Ｍより大きかった場合、６３０で出力ビットバッファが書き込まれ、６４０で処理が終了する。
【００７９】
判断ブロック６１６に戻って参照すると、ｓｙｍｂｏｌがゼロに等しくなかった場合、６４２で、１が出力ビットバッファに追加され、６４４で、データが符号ビットを有した場合、ｓｙｍｂｏｌの符号ビットが出力ビットバッファに追加され、処理が６２２に進んで、ｋｐが範囲内であるかどうかを調べるために検査する。
【００８０】
ブロック６１４で、ｋが１に等しくなかった場合、６５０で、ｓｙｍｂｏｌのさらなる検査が実行される。ｓｙｍｂｏｌがゼロに等しくなかった場合、６５２で、１が出力ビットバッファに追加され、６５４で、ｒｕｎのｋビット値が出力ビットバッファに追加される。６５６で、Ｄｎがｋｐから減算され、処理が６４４へ進み、任意選択の符号ビットが追加される。
【００８１】
６５０で、ｓｙｍｂｏｌがゼロであると判明した場合、６２２でｒｕｎが検査されて、これがｒｕｎｍａｘに等しいかどうかが調べられる。そうでなかった場合、６２２で、ｋｐがｋｐｍａｘを超えないようにクリップされる。６６２で、ｒｕｎがｒｕｎｍａｘに等しかった場合、６６４で、０が出力ビットバッファに追加され、６６６で、ｒｕｎがゼロに設定される。最後に、Ｕｐがｋｐに加算され、処理が再度、ｋｐのクリップのためにブロック６２２へ戻り、６２４でｋの設定、６２６でｘｉｎｄｅｘをインクリメントし、６２８で、最後のシンボルが処理されたかどうかを調べるために検査する。そうであった場合、６３０で情報が出力ビットバッファに書き込まれ、６４０で処理が終了する。
【００８２】
表４において、量子化されたウェーブレット係数におけるビットプレーン符号化器を使用した結果が示される。簡素なビットプレーン符号化器が、計算的により簡素であるにもかかわらず、適応算術符号化器（これらが最新式であると見なされている）よりもよく実行することに留意されたい。
【００８３】
【表４】
0004426118.tif 000008
【００８４】
この符号化器の主な利点は、算術符号化器によって共有されていない、スケーラビリティである。記載されたビットプレーン符号化により、より低忠実性のバージョンの信号を、プレーン１より高いビットプレーンで復号処理を停止することによって、容易に得ることができる。これは、情報のプログレッシブ伝送および復元、および、インターネットなど、通信チャネルの重要な機能を可能にする。もう１つのスケーラビリティの応用例は、例えば、デジタルカメラにおけるものである。ユーザがより多数のピクチャを撮影することを望み、既に格納されたピクチャの品質を犠牲にすることをいとわなかった場合、既存のイメージのより低いビットプレーンを除去して、新しいピクチャのためにストレージを開放することができる。
【００８５】
ＡＲＬＧＲ符号化器を、ビットプレーン符号化器におけるその使用に関連して記載するが、これは、値０が値１よりもおそらくはるかに多い二進データのための汎用符号化器として、大変有用である可能性がある。これは特に、確率分布が絶えず変化している場合において真である。例えば、４８０×６４０ピクセルの解像度で走査された白黒の描画を符号化する問題を考察する。白＝０および黒＝１のマッピングを仮定すると、ＡＲＬＧＲ符号化器を直接データへ適用することができる。しかし、符号化器２４０は、１のランをあまりよく処理せず、そのため、差分演算子が最初にピクセルのすべての行に渡って適用される。２番目の行で開始して下へ移動し、各ピクセル値が、上の行における同じピクセルと同一色を有した場合は０で、異なる色を有した場合は１で置き替えられる。これが、列に渡って繰り返される。結果として生じたビットが、ＡＲＬＧＲ符号化器２４０により符号化される。
【００８６】
これが、白または黒のランの、ゼロのランへのマッピングを提供し、情報のいかなる損失もない。これにより、データがＡＲＬＧＲ符号化により適切となる。表５は、このような簡素な符号化器の性能の、他の手法との比較を示す。
【００８７】
【表５】
0004426118.tif 000009
【００８８】
ＡＲＬＧＲ符号化器２４０アルゴリズムは、標準のファックス符号化アルゴリズムより、性能がほぼ２倍すぐれている。これは、ファックスアルゴリズムによって使用されたバイトの５５％のみを使用する。実際に、新しいＡＲＬＧＲに基づいた符号化器は、最新式の適応算術符号化器にすら、この特定のイメージでは小さい差で優った。加えて、これは最低の計算上の複雑性を有した。これは単なる一例であり、この結果が、使用されたイメージおよびパラメータの調整に応じて変わる可能性があることに留意されたい。
【００８９】
図８において、一式のオフィスプログラムのブロック図が、８１０で概して図示される。１つの特定のオフィス（登録商標）一式は、８１２で示された複数の高レベルアプリケーションを含み、文書処理、Ｅメール、スプレッドシート、プレゼンテーションツール、写真操作プログラムおよびブラウザなどのアプリケーションを含む。これらのアプリケーションをサポートすることは、８２６および８１８の、少なくとも２レベル低いソフトウェア、ハードウェア、またはそれらの組合せの機能である。図示された機能は、ビデオイン／アウト機能８２６およびファックス／スキャナ機能８１８を含む。多数の他の機能もこのレベルで存在することができる。
【００９０】
詳細には、ビデオ機能が、ビデオを表示し、ビデオおよびイメージデータを外部ソースから受信するための能力を提供する。ビデオおよびファックス／スキャナ機能が、本明細書に記載され、ブロック８３２に示された符号化器および復号器を利用して、先に記載されたような符号化および復号機能を提供する。生のイメージまたは他の適切なデータが、ピクセルまたは他の形式において取り込まれ、符号化器８３２が使用されてこれを符号化する。さらに、符号化されたデータが、本明細書に記載されたタイプの符号化を使用するいずれかのソースから得られた場合、８３２の復号器が、それを受信するアプリケーションによって呼び出されて、それを表示可能あるいは使用可能なフォーマットに変換あるいは復号する。
【００９１】
Ｍｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ（登録商標）、または、より多数のアプリケーションも統合することができる後続の製品など、統合されたオフィス一式などを含むことができる多数のアプリケーションが、圧縮あるいは解凍（ｄｅｃｏｍｐｒｅｓｓ）される必要のあるデータを処理する可能性がますます高いことに留意されたい。本発明は、他の形式の符号化の代替物を提供し、これはＪＰＥＧに存在するブロッキングアーチファクトを除去し、ソフトウェア、ハードウェア、または、望まれたような混成形式において、実施することがより複雑でない。８３２の符号化器／復号器も、このようなオフィス一式に統合することが容易である。
【００９２】
結論
量子化されたウェーブレット係数の並べ替えが実行され、データ依存型データ構造を使用する必要なしに大小のウェーブレット係数が分離したグループにクラスタ化される。次いで、係数が適応的に、ランレングスコードに基づいて符号化され、これは、量子化された係数のストリングを表現するために使用されたコードワードを制御するパラメータを継続的に修正し、コードワードにおいて使用されたビット数を最小化することを求める。順序付けパターンが固定され、係数符号化が、各イメージについて修正されたテーブルを必要としないので、本発明は、より容易なハードウェアまたはソフトウェア実施に役立つ。さらなる利点には、ブロッキングアーチファクトの解消、および、イメージデータのためのいかなる所望の圧縮率のための単一パス符号化も含まれる。
【００９３】
上の符号化およびブロッキングを逆の順序で適用する復号器が記載される。符号化された係数の復号が最初に実行され、その後に係数のアンシャッフルが続く。次いで、アンシャッフルされた係数が、逆ウェーブレット変換を受けて、イメージピクセルなど、変換され圧縮されたデータが回復される。適応算術符号化を、並べ替えに関連して使用して、類似の圧縮の利点を得ることもできるが、わずかに高い複雑さを伴う。
【００９４】
ゼロツリーなど、データ依存型データ構造、または、ツリーにおける集合区画のための別々のリストの使用を必要としないことによって、ハードウェア実施がより構築しやすい。この応用例は、本発明のいかなる適合または変形形態をも包含することを意図されるものである。本発明が特許請求の範囲およびその均等物によってのみ限定されることが、明白に意図されるものである。
【図面の簡単な説明】
【図１】  本発明を実施することができるコンピュータシステムのブロック図である。
【図２】  ウェーブレット係数を並べ替え、次いで、ロスレス適応方法において符号化する符号化器のブロック図である。
【図３】  図２の符号化器によって生成された、符号化された係数を復号かつアンシャッフルする復号器のブロック図である。
【図４】  図２の符号化器によって生成された、並べ替えられたウェーブレット係数のブロック図である。
【図５】  係数をビットプレーンに分離する、図２の係数符号化器の高レベルの動作を示すフローチャートである。
【図６】  図２のランレングス適応符号化器の動作のさらなる詳細を示すフローチャートである。
【図７】  図４に示されたものに適合する、並べ替えられた方法における、係数の行列の書込みを示すフローチャートである。
【図８】  図２の符号化器および図３の復号器の、イメージデータを処理するソフトウェアアプリケーション一式における使用を示すブロック図である。
【図１】
0004426118.tif 000010
【図２】
0004426118.tif 000011
【図３】
0004426118.tif 000012
【図４】
0004426118.tif 000013
【図５】
0004426118.tif 000014
【図６】
0004426118.tif 000015
【図７】
0004426118.tif 000016
【図８】
0004426118.tif 000017