(57)【要約】【課題】係数の位置をコード化する優れた技術を提供する。【解決手段】係数のようなデータの位置をコード化する方法及び装置が開示される。一実施形態では、方法は、ツリーデータ構造を使用して特定された、データがゼロであるか又は非ゼロであるかの指標に基づいて、データのベクトル中のデータをコード化するデータコード化ステップと、コード化されたデータに基づいてビットストリームを生成するビットストリーム生成ステップとを備える。【選択図】図１
2011004406.tif 000002
【特許請求の範囲】
【請求項１】
データのベクトル中のデータを、ツリーデータ構造を使用して特定された前記データがゼロであるか又は非ゼロであるかの指標に基づいてコード化するデータコード化ステップと、
コード化されたデータに基づいてビットストリームを作成するビットストリーム作成ステップと、
を備える方法。
【請求項２】
前記ツリーが二分木を含む、請求項１に記載の方法。
【請求項３】
前記データが係数を含み、
前記データコード化ステップが係数のブロック内の非ゼロ係数の位置をコード化する非ゼロ係数位置コード化工程を備える、請求項１に記載の方法。
【請求項４】
前記ビットストリーム作成ステップが、前記係数のブロック内のコード化された非ゼロ係数を作成する非ゼロ係数作成工程を備える、請求項３に記載の方法。
【請求項５】
前記非ゼロ係数位置コード化工程が、ツリーを表現する前記構造をトラバースすることを備える、請求項３に記載の方法。
【請求項６】
前記非ゼロ係数が量子化された係数を含み、
ツリー構造データを取り出すツリー構造データ取出ステップと、
前記量子化された係数に対応する前記ツリー構造データによって記述されたツリーの各リーフノードに値を割り当てるリーフノード値割当ステップと、
前記リーフノードの前記値に基づいてリーフノード以外の前記ツリーのノードに値を割り当てるリーフ外ノード値割当ステップと、
前記ツリーをトラバースし、非ゼロ係数の前記値をビットストリームに符号化することを含めて、前記ツリーの前記ノードの前記値を前記ビットストリームに符号化するトラバースビットストリーム符号化ステップと、
をさらに備える、請求項３に記載の方法。
【請求項７】
前記ツリーが二分木である、請求項６に記載の方法。
【請求項８】
前記ツリー構造を前記ビットストリームに符号化するツリー構造ビットストリーム符号化ステップをさらに備える、請求項６に記載の方法。
【請求項９】
データのベクトルを受信する入力と、
前記入力に接続され、前記データのベクトル中のデータを、ツリーデータ構造を使用して特定された前記データがゼロであるか又は非ゼロであるかの指標に基づいてコード化するエントロピーエンコーダと、
を備える、係数を符号化する装置。
【請求項１０】
前記ツリーが二分木を含む、請求項９に記載の装置。
【請求項１１】
前記データが係数を含み、
前記エントロピーエンコーダが係数のブロック内の非ゼロ係数の位置をコード化する、請求項９に記載の装置。
【請求項１２】
前記エントロピーエンコーダが前記係数のブロックのコード化された非ゼロ係数を作成する、請求項１１に記載の装置。
【請求項１３】
前記エントロピーエンコーダが、ツリーを表現する前記構造をトラバースすることにより係数のグループ内の非ゼロ係数の位置を符号化する、請求項１１に記載の装置。
【請求項１４】
前記非ゼロ係数が量子化された係数を含み、
ツリー構造データを格納するメモリと、
前記量子化された係数に基づいてツリーのリーフノードに値を割り当て、前記リーフノードに割り当てられた前記値に基づいて前記ツリー中の全ての他のノードに値を再帰的に割り当てるツリー生成器と、
をさらに備え、
前記エントロピーエンコーダが、非ゼロの量子化された係数の値を含めて、前記ツリー生成器によって生成された前記ツリーの前記ノードの値を再帰的に符号化するよう動作する、請求項１１に記載の装置。
【請求項１５】
前記エントロピーエンコーダが、
前記メモリからツリー構造データを取り出し、
前記量子化された係数に対応する前記ツリー構造データによって記述されたツリーの各リーフノードに値を割り当て、
前記リーフノードの前記値に基づいてリーフノード以外の前記ツリーのノードに値を割り当て、
前記ツリーをトラバースし、非ゼロ係数の前記値をビットストリームに符号化することを含めて、前記ツリーの前記ノードの前記値を前記ビットストリームに符号化する、請求項１４に記載の装置。
【請求項１６】
前記ツリーが二分木である、請求項１５に記載の装置。
【請求項１７】
前記エントロピーエンコーダが前記ツリー構造を前記ビットストリームに符号化する、請求項１５に記載の装置。
【請求項１８】
システムによって実行されたとき、前記システムに、
データのベクトル中のデータを、ツリーデータ構造を使用して特定された前記データがゼロであるか又は非ゼロであるかの指標に基づいてコード化するデータコード化ステップと、
コード化されたデータに基づいてビットストリームを作成するビットストリーム作成ステップと、
を備える方法を実行させる命令を記憶する１つ以上の記録可能な媒体を有する製品。
【請求項１９】
ビットストリームを受信するビットストリーム受信ステップと、
復号化されたデータのベクトルを、ツリーデータ構造によって特定されるような前記データがゼロであるか又は非ゼロであるかの指標に基づいて作成するため、前記ビットストリームを復号化するビットストリーム復号化ステップと、
を備える方法。
【請求項２０】
前記ツリーが二分木を含む、請求項１９に記載の方法。
【請求項２１】
前記データが係数を含む、請求項１９に記載の方法。
【請求項２２】
前記ビットストリーム復号化ステップが、係数のブロックの非ゼロ係数の位置を復号化する非ゼロ係数位置復号化工程を備える、請求項２１に記載の方法。
【請求項２３】
前記非ゼロ係数位置復号化工程が、ツリーを表現する前記データ構造をトラバースすることを備える、請求項２２に記載の方法。
【請求項２４】
前記ツリー構造データを取り出すツリー構造データ取出ステップと、
前記ツリー構造をトラバースするツリー構造トラバースステップと、
前記ビットストリームから前記ツリーのノードの値を復号化するノード値復号化ステップと、
第１の値を保有するリーフノード毎に前記ビットストリームから量子化された係数の値を復号化する係数値復号化ステップと、
第２の値を保有するリーフノード毎に量子化された係数に値ゼロを割り当てる係数ゼロ割当ステップと、
をさらに備える、請求項１９に記載の方法。
【請求項２５】
前記ツリーが二分木である、請求項２４に記載の方法。
【請求項２６】
前記ビットストリームから前記ツリー構造を復号化するツリー構造復号化ステップをさらに備える、請求項２４に記載の方法。
【請求項２７】
前記ビットストリームから、前記ツリー構造データに基づいてツリーのノードの値を再帰的に復号化するノード値再帰的復号化ステップと、
第１の値を保有するリーフノード毎に量子化された係数を復号化する係数復号化ステップと、
第２の値を保有するリーフノード毎に量子化された係数に０という値を割り当てる係数ゼロ割当ステップと、
をさらに備える、請求項１９に記載の方法。
【請求項２８】
ビットストリームを受信する入力と、
前記入力に接続され、復号化されたデータのベクトルを、ツリーデータ構造によって特定されるような前記データがゼロであるか又は非ゼロであるかの指標に基づいて作成する、エントロピーデコーダと、
を備える、量子化された係数を復号化する装置。
【請求項２９】
ツリー構造データを格納するメモリをさらに備え、
前記エントロピーデコーダが、ビットストリームから、前記ツリー構造データに基づいてツリーのノードの値を再帰的に復号化し、第１の値を保有するリーフノード毎に量子化された係数を復号化し、第２の値を保有するリーフノード毎に量子化された係数に０という値を割り当てる、請求項２８に記載の装置。
【請求項３０】
前記データが係数を含む、請求項２８に記載の装置。
【請求項３１】
前記ツリーが二分木を含む、請求項３０に記載の装置。
【請求項３２】
前記復号化されたデータのベクトルが係数のブロックを含む、請求項２８に記載の装置。
【請求項３３】
前記ビットストリームを復号化する前記エントロピーデコーダが、ツリーを表現する前記データ構造をトラバースするツリー構造トラバースステップを備える、請求項２８に記載の装置。
【請求項３４】
前に生成されたデータ構造がツリー構造データを含み、
前記エントロピーデコーダが、前記ツリー構造データを取り出し、前記ツリー構造をトラバースし、前記ビットストリームから前記ツリーのノードの値を復号化し、第１の値を保有するリーフノード毎に前記ビットストリームから量子化された係数の値を復号化し、第２の値を保有するリーフノード毎に量子化された係数に値ゼロを割り当てる、請求項２８に記載の装置。
【請求項３５】
前記ツリーが二分木である、請求項３４に記載の装置。
【請求項３６】
前記エントロピーデコーダが、前記ビットストリームから前記ツリー構造を復号化する、請求項３４に記載の装置。
【請求項３７】
システムによって実行されたとき、前記システムに、
復号化されたデータのベクトルを、ツリーデータ構造によって特定されるような前記データがゼロであるか又は非ゼロであるかの指標に基づいて作成するため、ビットストリームを復号化するビットストリーム復号化ステップを備える方法を実行させる命令を記憶する１つ以上の記録可能な媒体を有する製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード化の分野に関し、より詳しくは、本発明は、グループ（たとえば、係数のブロック）内のある種の係数（たとえば、非ゼロ係数）のコード化に関係する。
【０００２】
本特許文献の開示の一部は著作権保護の対象となる素材を含んでいる。著作権所有者は、特許商標局における特許ファイル又は記録物において明白であるので、何人による特許文献又は特許情報開示の複製にも異議を唱えないが、それ以外は、いかなるものであれ全ての著作権を留保する。
【０００３】
本特許出願は、発明の名称が“Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｃｏｄｉｎｇ  Ｐｏｓｉｔｉｏｎｓ  ｏｆ  Ｎｏｎ−ｚｅｒｏ  Ｃｏｅｆｆｉｃｉｅｎｔｓ  ｉｎ  ａ  Ｂｌｏｃｋ”である、２００４年１２月２２日に出願された、対応する仮特許出願第６０／６３９，４３０号に基づく優先権を主張する。
【背景技術】
【０００４】
データ圧縮は、大量のデータを蓄積及び伝送するための非常に有用なツールである。たとえば、文書のネットワーク伝送のような画像を伝送するために要する時間は、画像を再現するために必要とされるビット数を減少させるため圧縮が使用されたとき、大幅に短縮される。
【０００５】
多種多様なデータ圧縮技術が従来技術に存在している。圧縮技術は、損失のあるコード化と損失のないコード化の２つに大別される。損失のあるコード化は、元データの完全な再構成の保証がないほどに、情報の損失を生じるコード化を含む。損失のある圧縮の目標は、元データへの変更が、異議の余地なしに、又は、検出できないように行われる。損失のない圧縮では、全ての情報が保持され、完全な再構成を可能にするようにデータは圧縮される。
【０００６】
画像符号化器及びビデオ符号化器において、画像は典型的にブロックの組に区分化される。各ブロックは係数の集合に変換され量子化される。係数は、変換（たとえば、離散コサイン変換（ＤＣＴ）、ウェーブレット変換）をデータに適用することにより作成できる。たとえば、ＪＰＥＧでは、ＤＣＴ変換は、係数を作成するため画像データに適用される。その後、これらの係数は量子化されてもよい。ブロック毎に、どの係数が非ゼロ値を有するかを記述する情報が伝送されなければならない。
【０００７】
量子化された係数は、典型的に値の１次元配列に配置される。配列中の係数の順序は、走査順序によって、たとえば、ジグザグ走査順序によって決定される。非ゼロ係数の位置は、その後に、ランレングス符号化法を使用してコード化される。
【０００８】
走査方法は、多くの場合に効率が制限されている。たとえば、ジグザグ走査方法に関して、ブロックが水平周波数だけ又は垂直周波数だけを収容するとき、多数のゼロ係数がジグザグパターンに沿って訪問され、効率が悪いという結果になる。
【発明の概要】
【０００９】
係数のようなデータの位置をコード化する方法及び装置が記載されている。一実施形態では、方法は、ツリーデータ構造を使用して特定された、データがゼロであるか又は非ゼロであるかの指標に基づいて、データのベクトル中のデータをコード化するデータコード化ステップと、コード化されたデータに基づいてビットストリームを作成するビットストリーム作成ステップとを備える。
【００１０】
本発明は、後述される詳細な説明と、本発明を特定の実施形態に制限するように解釈されるべきでなく、説明と理解のためだけに用いられる本発明の種々の実施形態の添付図面とから、より十分に理解される。
【図面の簡単な説明】
【００１１】
【図１】データを符号化するプロセスの一実施形態のフローチャートである。
【図２】エンコーダ及びデコーダのシステムの一実施形態のブロック図である。
【図３】変換エンコーダの一実施形態のブロック図である。
【図４】ツリー構造データの例である。
【図５】係数エンコーダの一実施形態のブロック図である。
【図６】係数エンコーダによって実行される符号化プロセスの一実施形態のフローチャートである。
【図７】値をツリーのノードに割り当てるプロセスの一実施形態のフローチャートである。
【図８】ツリー中のノードを符号化するプロセスの一実施形態のフローチャートである。
【図９】子ノードの値を符号化するプロセスの一実施形態のフローチャートである。
【図１０】子ノードの値を符号化するプロセスの別の実施形態のフローチャートである。
【図１１】変換デコーダの一実施形態のブロック図である。
【図１２】係数デコーダの一実施形態のブロック図である。
【図１３】量子化された係数を復号化するプロセスの一実施形態のフローチャートである。
【図１４】ノードを復号化するプロセスの一実施形態のフローチャートである。
【図１５】子ノードの値を復号化するプロセスの一実施形態のフローチャートである。
【図１６】子ノードの値を復号化するプロセスの代替的な実施形態のフローチャートである。
【図１７】図４のツリー構造の表現の例を説明する図である。
【図１８】量子化された係数を復号化するプロセスの一実施形態のフローチャートである。
【図１９】係数デコーダの一実施形態のブロック図である。
【図２０】コンピュータシステムの一実施形態のブロック図である。
【図２１】データを復号化するプロセスの一実施形態のフローチャートである。
【発明を実施するための形態】
【００１２】
データのグループ（たとえば、データのブロック）内の係数（たとえば、非ゼロ係数）の位置をコード化する方法及び装置について記載されている。一実施形態では、係数は二分木に配置される。ツリーは節（ノード）を系統的に一つ残らず一回ずつなぞられ（以下、トラバースされ）、非ゼロ係数の位置をコード化する。本発明の実施形態は、伝統的なジグザグ走査を使用する係数のコード化への代替案を提供し、ツリー内での係数の体系化に依存し、それによって、単一の走査より高い柔軟性及び良い効率を提供する。
【００１３】
後に続く実施形態は係数を用いて動作するものとして記載されているが、本明細書に記載された技術が任意のデータのベクトルに適用されることは当業者に明白であろう。
【００１４】
以下の記載では、本発明のより徹底的な説明を行うために様々な詳細が示されている。しかし、本発明が、これらの特定の詳細を用いることなく実施されてもよいことは当業者にとって明白であろう。他の例では、よく知られている構成及び機器は、本発明を不明瞭化することを避けるために、詳細にではなく、ブロック図形式で示されている。
【００１５】
後述する詳細な説明の一部は、コンピュータメモリ内のデータビットに関する演算のアルゴリズム及び記号的表現という点で提示されている。これらのアルゴリズム的な記述及び表現は、データ処理技術の当業者によって、自分の業績の内容をその技術における他の当業者へ最も効率的に伝達するために使用される手段である。アルゴリズムは、ここでは、一般的に、望ましい結果をもたらすステップの首尾一貫したシーケンスであると考えられる。ステップは物理量の物理的操作を必要とするステップである。通常、不可欠ではないが、これらの量は、記憶、転送、合成、比較及びそれ以外の操作がなされ得る、電気的又は磁気的信号の形式をとる。主として慣用上の理由で、これらの信号を、ビット、値、要素、記号、文字、項、数などと呼ぶことが、時として好都合であることがわかった。
【００１６】
しかし、上記の用語及び類似した用語の全ては、適切な物理量と関連付けられるべきであり、これらの量に当てはめられた便宜的なラベルに過ぎないことに留意されたい。以下の説明から明白であるように、特に断らない限り、説明の全体を通じて、「処理」又は「コンピューティング」又は「計算」又は「決定」又は「表示」などのような用語を利用する説明は、コンピュータシステムのレジスタ及びメモリ内で物理（電子）量として表現されたデータを、コンピュータシステムメモリ若しくはレジスタ内、又は、その他のこのような情報記憶装置、伝送機器若しくは表示機器内で同じように物理量として表現されたその他のデータへ操作、変換する、コンピュータシステム又は類似した電子コンピューティング機器の作用及びプロセスを指すことが認められる。
【００１７】
本発明は、本明細書に記載された演算を実行する装置にも関係する。この装置は、要求された目的のため特に構成されるか、又は、コンピュータに格納されたコンピュータプログラムによって選択的に作動若しくは再構成される汎用コンピュータを備えてもよい。このようなコンピュータプログラムは、限定されることはないが、たとえば、フレキシブルディスク、光ディスク、ＣＤ−ＲＯＭ、及び、磁気光ディスクを含む任意のタイプのディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気若しくは光カード、又は、電子命令を格納するのに適当であり、それぞれコンピュータシステムバスに接続されている任意のタイプの媒体のような、コンピュータ読み取り可能な記憶媒体に格納されてもよい。
【００１８】
本明細書に提示されているアルゴリズム及びディスプレイは、本質的に特定のコンピュータ又はその他の装置に関連していない。種々の汎用システムが本明細書における教示に従うプログラムと共に使用されてもよく、又は、要求された方法ステップを実行するためにより特化された装置を構築すると好都合であることがわかる。多種多様のこれらのシステムに要求される構成は以下の記載から明らかであろう。さらに、本発明は特定のプログラミング言語に関して記載されていない。多種多様のプログラミング言語が、本明細書に記載されているような発明の教示を実施するために使用されてもよいことが認められるであろう。
【００１９】
機械読み取り可能な媒体は、機械（たとえば、コンピュータ）によって読み取り可能な形式で情報を格納又は伝送する任意の仕組みを含む。たとえば、機械読み取り可能な媒体は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、電気的、光学的、音響的又はその他の形式の伝搬信号（たとえば、搬送波、赤外線信号、デジタル信号など）などを含む。
【００２０】
（概要）
図１はデータを符号化するプロセスの一実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、プロセッシングロジックによって実行される。プロセッシングはファームウェアによって実行されてもよい。
【００２１】
図１を参照すると、プロセスは、プロセッシングロジックが、前に生成されたデータ構造を使用して特定された非ゼロ係数の位置の指標に基づいて、係数のグループ内の非ゼロ係数の位置をコード化することによって開始する（処理ブロック１０１）。一実施形態では、データ構造はツリーを表現する。ツリーは二分木でもよい。一実施形態では、係数のグループは係数のブロックを含む。
【００２２】
次に、プロセッシングロジックはコード化された非ゼロ係数に基づいてビットストリームを生成する（処理ブロック１０２）。
【００２３】
図２１はデータを復号化するプロセスの一実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、プロセッシングロジックによって実行される。プロセッシングはファームウェアによって実行されてもよい。
【００２４】
図２１を参照すると、プロセスは、プロセッシングロジックがビットストリームを受信することによって開始する（処理ブロック１１１）。次に、プロセッシングロジックは、前に生成されたデータ構造によって特定された量子化された係数の位置の指標に基づいて、係数のグループ内の量子化された係数の位置を得るために前に生成されたデータ構造を使用することを含めて、量子化された係数の集合を生成するためにビットストリームを復号化する（処理ブロック１１２）。
【００２５】
一実施形態では、データ構造表現はツリーである。ツリーは二分木でもよい。一実施形態では、係数のグループは係数のブロックを含む。
【００２６】
図２はエンコーダ及びデコーダシステムの一実施形態のブロック図である。一部のシステムはエンコーダ又はデコーダだけを含んでもよい。
【００２７】
図２を参照すると、エンコーダ２０２はソース画像２０１を、ソース画像２０１の圧縮表現であるビットストリーム２０３に変換する。デコーダ２０４は、ビットストリーム２０３を、再構成画像２０５に変換する。再構成画像２０５は、ソース画像２０１の近似（損失のある圧縮コンフィギュレーションにおける）又は（損失のない圧縮コンフィギュレーションにおける）正確な複製である。ビットストリーム２０３は、通信チャネル（たとえば、インターネットなど）を介して、又は、物理的な媒体（たとえば、ＣＤ−ＲＯＭ）を介して、エンコーダ２０２からデコーダ２０３へ送信されてもよい。
【００２８】
図３は、変換エンコーダの一実施形態のブロック図である。図３の変換エンコーダは、図２のエンコーダ２０２のコンポーネントでもよい。エンコーダは、ソース画像を１個以上の画像データのブロック、たとえば、４×４又は８×８のサイズのブロックに区分化できる。その他の画像データのグループ分けが使用されてもよい。
【００２９】
図３を参照すると、変換ユニット３０２は、画像データのブロック３０１を係数３０３の集合に変換する。一実施形態では、変換ユニット３０２は、離散コサイン変換（ＤＣＴ）を実施できる。量子化器３０４は、係数３０３を量子化された係数３０５の集合に変換する。一実施形態では、係数は実数値をとり、量子化された係数３０５のうちの１個の値は整数に制限される。一実施形態では、量子化器３０４は、所定の数によって各係数を除算し、結果を最も近い整数に丸め、量子化された係数を生成する。係数エンコーダ３０６は、量子化された係数３０５をビットストリーム３０７に変換する。一実施形態では、ビットストリーム３０７は、量子化された係数３０５の表現を含むビットの順序付き集合である。一実施形態では、係数エンコーダ３０６はハフマン符号化を使用する。代替的に、係数エンコーダ３０６は、算術符号化を、単独で又はハフマン符号化と併せて使用する。その他のコード化スキームもまた同様に使用できる。
【００３０】
本明細書における目的のため、ツリーを記述する用語は以下の通り使用される。図４は二分木の例である。図４を参照すると、ツリーは、５個のノードＡ、Ｂ、Ｃ、Ｄ及びＥを収容している。ノードＡはルートノードである。ノードＤ及びＥは、本明細書では、Ｃの子ノードと呼ばれる。ノードＤはリーフノードの例である。リーフノードは子ノードを所有しない。ノードＢ及びＥもまたリーフノードである。
【００３１】
以降の記載は二分木を考慮するが、二分木以外のツリー（たとえば、三分木）も同様に使用される。
【００３２】
図１７は、ツリー構造データの例である。図１７を参照すると、ツリー構造データは、ノードタイプデータ１７０１及びリーフインデックスデータ１７０２を収容してもよい。ノードタイプデータ１７０１は、図４の二分木のようなツリー中の各ノードのノードタイプを収容する。たとえば、値０はリーフノードではないノードに対し使用されてもよく、値１はリーフノードであるノードに対し使用される。一実施形態では、ノードタイプの順序付けは、ツリーの深さ優先トラバースによって決定される。代替的に、幅優先トラバースが使用される。リーフインデックスデータ１７０２はツリー中のリーフ毎に係数インデックスを収容する。ツリーのリーフにおけるインデックスは、量子化された係数の配列へのインデックスを表現する。一実施形態では、リーフインデックスの順序付けは、ツリーの深さ優先トラバースによって決定できる。代替的に、幅優先トラバースが考慮される。図１７の例では、図４に描かれたツリーが記述され、ノードＢはインデックス０を、ノードＤはインデックス２を、ノードＥはインデックス１を有することを仮定している。
【００３３】
図５は、係数エンコーダの一実施形態のブロック図である。図５を参照すると、ツリー生成器５０２は、量子化された係数５０１を受信し、メモリ５１０からツリー構造データ５０６を取り出す。ツリー構造データ５０６は、二分木を記述する。一実施形態では、ツリー構造データ５０６は、ツリーのトポロジーに関係する情報と、ならびに、ツリー中の各リーフのインデックスとを含む。ツリー生成器５０２は、値をツリーの各ノードに割り当てる。最初に、ツリー生成器５０２は、ツリーの各リーフに、対応する量子化された係数がゼロと一致するならば、ゼロ値を割り当てる。そうでなければ、ツリー生成器５０２は非ゼロ値をリーフに割り当てる。次に、値が、ツリー中のリーフではない各ノードに再帰的に割り当てられる。このようなノードはそれぞれが２個の子を保有する。両方の子が値ゼロを有するならば、ゼロ値がノードに割り当てられる。そうでなければ、ツリー生成器５０２は非ゼロ値をノードに割り当てる。ノードに値が割り当てられているツリー５０３は、エントロピーエンコーダ５０４へ送信される。
【００３４】
エントロピーエンコーダ５０４は、ツリー生成器５０２からのツリー５０３と量子化された係数５０１とを受信する。エントロピーエンコーダ５０４は、メモリ５１０からツリー構造データ５０６をさらに受信する。エントロピーエンコーダ５０４は、さらに後述されるように、ツリー５０３のノードに割り当てられた値を符号化する。その後、非ゼロである量子化された係数毎に、エントロピーエンコーダ５０４は量子化された係数の値を符号化する。一実施形態では、ツリー及び係数の符号化は、ハフマン符号化を使用して実行される。別の実施形態では、算術符号化が使用されるが、どのようなコード化スキームが使用されてもよい。エントロピーエンコーダ５０４の出力は、コード化された情報を収容するビットストリーム５０５である。
【００３５】
選択的に、エントロピーエンコーダ５０４は、メモリ５１０から取り出されたビットストリーム５０５にツリー構造データを挿入してもよい。一実施形態では、ツリー構造データは、符号化された形式のビットストリームと共に挿入される。ノードタイプ情報は、１ノード当たり１ビットずつで符号化されてもよく、ノードがリーフであるか否かを示す。リーフインデックスに関する情報は、ツリーのサイズに依存する多数のビットにより符号化されてもよい。たとえば、３個のリーフインデックスを伴うツリーは、これらのインデックスを２ビットで符号化可能であり、１６個のリーフインデックスを備えるツリーはこれらのインデックスを４ビットで符号化可能である。一般に、必要なビット数は、ｌｏｇ２（リーフインデックスの個数）におおよそ等しい。ツリー構造データは様々な時点で送信されてもよい。たとえば、代替的な実施形態では、ツリー構造データは、１ピクチャー毎に１回ずつ、ピクチャーのグループ毎に１回ずつ、又は、ビデオシーケンス全体について１回ずつ送信されてもよい。
【００３６】
図６は、係数エンコーダによって実行される符号化プロセスの一実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、係数エンコーダのプロセッシングロジックによって実行される。プロセッシングロジックはファームウェアを備えてもよい。
【００３７】
図６を参照すると、プロセスは、プロセッシングロジックが、たとえば、量子化器から量子化された係数を受信することによって開始する（処理ブロック６０１）。プロセッシングロジックは、その後、係数の全部がゼロであるか否かをテストする（処理ブロック６０２）。全係数がゼロであるならば、フラグは全係数がゼロであることを示し、プロセスは終了する。そうでなければ、プロセッシングロジックは、ブロック中の少なくとも１個の係数がゼロに等しくないということを特定するフラグを符号化し（処理ブロック６０４）、メモリからツリー構造データを取り出し（処理ブロック６０５）、さらに後述されるように、量子化された係数に基づいてツリー内の各ノードに値を割り当てる（処理６０６）。換言すると、プロセッシングロジックはツリーノード値を生成する。
【００３８】
ツリーノード値を生成した後、プロセッシングロジックは、さらに後述されるように、ツリー内の各ノードに割り当てられた値を符号化する（処理ブロック６０７）。ツリーを符号化した後、プロセッシングロジックは、非ゼロの量子化された係数の値を符号化する（処理ブロック６０８）。一実施形態では、ハフマン符号化が使用される。代替的に、算術符号化又は別のコード化スキームが使用されてもよい。
【００３９】
図７は、ツリーのノードの値を割り当てるプロセスの一実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、プロセッシングロジックによって実行される。
【００４０】
プロセスはルートノードに設定された現ノード（以下、カレントノード）で始まる。図７を参照すると、プロセッシングロジックは、カレントノードがリーフノードであるかどうかを判定する（処理ブロック７０１）。カレントノードがリーフノードであるならば、プロセッシングロジックは、カレントノードに関連付けられた量子化された係数がゼロ係数であるかどうかを判定する（処理ブロック７０２）。係数がゼロであるならば、プロセッシングロジックは０という値をカレントノードに割り当て（処理ブロック７０３）、プロセスは終了し、そうでなければ、プロセッシングロジックは１という値をカレントノードに割り当て（処理ブロック７０４）、プロセスは終了する。
【００４１】
カレントノードがリーフノードでないならば、プロセスは処理ブロック７１０へ移り、プロセッシングロジックが、カレントノードの第１の子をカレントノードとして用いて図７のプロセスを再帰的に実行し（処理ブロック７１０）、その後、カレントノードの第２の子をカレントノードとして用いて再び図７のプロセスを再帰的に実行する（処理ブロック７１１）。
【００４２】
その後、プロセッシングロジックは、両方の子ノードが０という値を割り当てられているかどうかを判定する（処理ブロック７１２）。両方の子ノードが０という値を保有するならば、プロセッシングロジックは０という値をカレントノードに割り当て（処理ブロック７０３）、プロセスは終了し、そうでなければ、プロセッシングロジックは１という値をカレントノードに割り当て（処理ブロック７０４）、プロセスは終了する。
【００４３】
カレントノードがルートノードに設定されるプロセスが終了した後、ツリー中の全ノードは０又は１という値が割り当てられている。ルートノードは、１個以上の係数がゼロに等しくないならば、値１を保有する。
【００４４】
図８は、ツリー中のノードを符号化するプロセスの一実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、プロセッシングロジックによって実行される。プロセッシングロジックはファームウェアを備えてもよい。
【００４５】
図８を参照すると、プロセスは最初にルートノードを引数として用いて呼び出される。プロセスは、プロセッシングロジックがノードはリーフであるかどうかを判定することによって開始する（処理ブロック８０１）。ノードがリーフであるならば、プロセッシングロジックは、そのノードの対応する係数の値を符号化し（処理ブロック８０２）、プロセスは終了する。種々の符号化スキーム（たとえば、ハフマン符号化、算術符号化など）が使用されてもよい。
【００４６】
ノードがリーフでないならば、プロセッシングロジックはノードの２個の子の値を符号化する（処理ブロック８０３）。符号化はさらに後述されている。その後、プロセッシングロジックは第１の子が１という値を保有するかどうかをテストする（処理ブロック８０４）。第１の子が値１を保有するならば、処理ブロックは、第１の子を引数として用いてノード符号化プロセスを再帰的に実行する（処理ブロック８０６）。プロセッシングロジックは、その後、第２の子の値が１であるかどうかをテストする（処理ブロック８０７）。第１の子が値０を保有するか、又は、第２の子が値１を有するならば、プロセッシングロジックは、第２の子を引数として用いてノード符号化プロセスを再帰的に実行する（処理ブロック８０５）。その後、プロセスは終了する。
【００４７】
図９は、子ノードの値を符号化するプロセスの一実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、プロセッシングロジックによって実行される。プロセッシングロジックはファームウェアを備えてもよい。
【００４８】
図９を参照すると、プロセスは、プロセッシングロジックが第１の子の値を符号化することによって開始する（処理ブロック９０１）。一実施形態では、値はビットストリームに付加される単一ビットとして符号化される。代替的に、値は算術符号化器を使用してさらに圧縮される。
【００４９】
プロセッシングロジックは、その後、第１の子の値が１であるかどうかを決定する（処理ブロック９０２）。第１の子の値が０に等しいならば、プロセスは終了する。そうでなければ、プロセッシングロジックは第２の子の値を符号化する（処理ブロック９０３）。一実施形態では、値はビットストリームに付加される単一ビットとして符号化される。代替的に、値は算術符号化器を使用してさらに圧縮される。第２の子の値を符号化した後、プロセスは終了する。
【００５０】
図１０は、子ノードの値を符号化するプロセスの別の実施形態のフローチャートである。これは図９に記載されたプロセスへの代替的な実施形態であることに留意されたい。代替的に、方法の選択はノードに基づいて行われてもよい。選択情報は、メモリに格納され、ビットストリームに符号化されてもよい。このような符号化は選択された方法を示すためにビットを使用して行われてもよい。代替的に、エンコーダ及びデコーダの両方が、ノード毎にどの方法を使用すべきであるかに関する所定の引数を保有してもよい。
【００５１】
図１０のプロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよいプロセッシングロジックによって実行される。プロセッシングロジックはファームウェアを備えてもよい。
【００５２】
図１０を参照すると、プロセスは、プロセッシングロジックが２個の子ノードの結合された値を符号化することにより開始する（処理ブロック１００１）。一実施形態では、結合された値は、両方の子の値の間の論理ＡＮＤ演算の結果によって決定される。プロセッシングロジックは、次に、両方の子が１という値を保有するかどうかを判定する（処理ブロック１００３）。コード化された値が１であるならば、プロセスは終了する。そうでなければ、プロセッシングロジックは第１の子の値を符号化し（処理ブロック１００４）、プロセスは終了する。一実施形態では、値を符号化するとき、値はビットストリームにそのままで付加される。代替的に、値は算術符号化器を使用してさらに圧縮されてもよい。
【００５３】
代替的に、三つ組のアルファベットが子ノードの値を表現するために使用されてもよい。このような場合、単一記号がビットストリームに付加される。
【００５４】
図１１は、変換デコーダの一実施形態のブロック図である。図１１を参照すると、ビットストリーム１１２０が係数デコーダ１１１０に入力されている。係数デコーダ１１１０は、ビットストリーム１１２０からのビットを量子化された係数１１１１の集合に変換する。変換プロセスはさらに後述されている。逆量子化器１１０１は、量子化された係数１１１１を係数１１０２の集合にスケール変換する。逆変換１１０３は、係数１１０２を再構成画像データ１１０４に変換する。
【００５５】
図１２は、係数デコーダの一実施形態のブロック図である。図１２を参照すると、エントロピーデコーダ１２０２は、さらに後述されているように、ビットストリーム１２０１からのビットを量子化された係数１２０３の集合に変換する。このため、エントロピーデコーダ１２０２は、メモリ１２１０に格納されているツリー構造データに依存する。エントロピーデコーダ１２０２は、ビットストリーム１２０１からツリー構造データを読み、メモリ１２１０に格納してもよい。
【００５６】
図１３は、量子化された係数を復号化するプロセスの一実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、プロセッシングロジックによって実行される。プロセッシングロジックはファームウェアを備えてもよい。
【００５７】
図１３を参照すると、プロセスは、プロセッシングロジックが集合中の全係数をゼロに設定することによって開始する（処理ブロック１３０１）。係数をゼロに設定した後、プロセッシングロジックはフラグを復号化する（処理ブロック１３０２）。プロセッシングロジックは、その後、全係数がゼロであるかどうかを判定する（処理ブロック１３０３）。全係数がゼロであることを示す第１の値をフラグがとるならば、プロセスは終了する。そうでなければ、プロセッシングロジックは、さらに後述されるように、ツリー中のノード値を復号化し（処理ブロック１３０４）、同様に係数値を復号化する（処理ブロック１３０５）。その後、プロセスは終了する。
【００５８】
図１４は、ノードを復号化するプロセスの一実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、プロセッシングロジックによって実行される。プロセッシングロジックはファームウェアを備えてもよい。
【００５９】
図１４を参照すると、プロセスはルートノードを引数として用いて開始する。プロセッシングロジックはノードがリーフであるかどうかを判定する（処理ブロック１４０１）。ノードがリーフノードであるならば、プロセッシングロジックは係数の値をさらに復号化し（処理ブロック１４０２）、その後にプロセスが終了する。復号化は種々の復号化技術（たとえば、ハフマン符号化、算術符号化など）を使用して実行されてもよい。
【００６０】
ノードがリーフでないならば、プロセッシングロジックはそのノードの２個の子の値を復号化する（処理ブロック１４０３）。復号化はさらに後述されている。その後、プロセッシングロジックは、第１の子が１という値を保有するかどうかをテストする（処理ブロック１４０４）。第１の子が値１を保有するならば、処理ブロックは、第１の子を引数として用いてノード復号化プロセスを再帰的に実行する（処理ブロック１４０６）。プロセッシングロジックは、その後、第２の子が値１を保有するかどうかをテストする（処理ブロック１４０７）。第１の子が値０を保有するか、又は、第２の子が値１を保有するならば、プロセッシングロジックは、第２の子を引数として用いてノード復号化プロセスを再帰的に実行する（処理ブロック１４０５）。その後、プロセスは終了する。
【００６１】
図１５は、子ノードの値を復号化するプロセスの一実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、プロセッシングロジックによって実行される。プロセッシングロジックはファームウェアを備えてもよい。
【００６２】
図１５を参照すると、プロセスは第１の子の値を復号化することによって開始する（処理ブロック１５０１）。復号化プロセスは、ビットストリームから単一ビットを取り出すこと、又は、算術デコーダを用いてビットストリームからバイナリ記号を復号化することを伴ってもよい。プロセッシングロジックは、第１の子の値が１であるかどうかを判定する（処理ブロック１５０２）。復号化された値が０であるならば、プロセスは終了し、そうではなく、値が１であるならば、プロセッシングロジックは、第１の値と同様に、第２の子の値を復号化し（処理ブロック１５０３）、その後、プロセスは終了する。
【００６３】
図１６は、子ノードの値を復号化するプロセスの代替的な実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、プロセッシングロジックによって実行される。プロセッシングロジックはファームウェアを備えてもよい。
【００６４】
図１６を参照すると、プロセスは両方の子の結合された値を復号化して開始する（処理ブロック１６０１）。結合された値は、両方の子が値１を保有するかどうかを示すことができる。プロセッシングロジックは、両方の子が１という値を保有するかどうかを判定する（処理ブロック１６０２）。両方の子が１という値を保有するならば、プロセスは終了し、そうではなく、値が１であるならば、プロセッシングロジックは第１の子の値を復号化し、第２の子の値を反対の値に設定し（処理ブロック１６０３）、その後、プロセスは終了する。
【００６５】
代替的に、両方の子の値は三つ組のアルファベットを用いて表現される。このような場合、単一記号が子ノードの値を取得するために復号化されてもよい。
【００６６】
図１８は量子化された係数を復号化するプロセスの一実施形態のフローチャートである。プロセスは、ハードウェア（たとえば、回路、専用ロジックなど）、（汎用コンピュータシステム又は専用機械上で動かされるような）ソフトウェア、又は、両方の組み合わせを備えてもよい、プロセッシングロジックによって実行される。プロセッシングロジックはファームウェアを備えてもよい。
【００６７】
図１８を参照すると、プロセスは、プロセッシングロジックが状態を１に設定し、スタックを空状態に初期化することにより開始する（処理ブロック１８０１）。その後、プロセッシングロジックはメモリからノードタイプを取り出す（処理ブロック１８０２）。プロセッシングロジックは、その後、ノードがリーフノードであるかどうかを判定する（処理ブロック１８０３）。ノードタイプがリーフノードであることを示すならば、処理は処理ブロック１８２０へ移り、そうでなければ、処理は処理ブロック１８１０へ移る。
【００６８】
処理ブロック１８２０において、プロセッシングロジックはメモリからリーフインデックスＩを取り出し、状態が値０を有するかどうかをテストする（処理ブロック１８２１）。状態が値０を有するならば、処理は処理ブロック１８２３へ移り、プロセッシングロジックはインデックスＩをもつ係数に値０を割り当て、その後、処理は処理ブロック１８２４へ移る。状態が値１を有するならば、処理は処理ブロック１８２２へ移り、プロセッシングロジックはビットストリームから係数値を復号化し、インデックスＩをもつ係数に復号化された係数値を割り当て、その後、処理は処理ブロック１８２４へ移る。
【００６９】
処理ブロック１８２４において、プロセッシングロジックは、スタックが空であるかどうかを判定する。スタックが空であるならば、プロセスは終了する。スタックが空でなければ、処理は処理ブロック１８２５へ移り、プロセッシングロジックはスタックから値をポップし、状態をその値に設定する。その後、処理は処理ブロック１８０２へ移る。
【００７０】
ノードがリーフノードでないならば（処理ブロック１８０３）、プロセッシングロジックは状態が１に等しいかどうかを判定する（処理ブロック１８１０）。そうでなければ（すなわち、値が０であるならば）、プロセッシングロジックは２個のノードの値をゼロに設定し、処理ブロック１８１４へ移る。状態が１に等しければ、プロセッシングロジックはビットストリームから２個のノード値を復号化する（処理ブロック１８１２）。ノード値を復号化する方法の例は、図１５及び１６に記載されている。２個のノード値を復号化した後、プロセッシングロジックは状態を第１のノード値に設定し（処理ブロック１８１３）、処理ブロック１８１４へ移る。処理ブロック１８１４において、プロセッシングロジックは第２のノード値をスタックへプッシュする。その後、処理は処理ブロック１８０２へ移る。
【００７１】
図１９は、係数デコーダの一実施形態のブロック図である。図１９を参照すると、係数デコーダは状態レジスタ１９２０を含む。一実施形態では、状態レジスタ１９２０は最初に値１に設定される。エントロピーデコーダ１９０２は、ノードタイプメモリ１９２３からノードタイプを取り出す。ノードタイプメモリ１９２３は、図４に記載されているように、ツリーの構造に関するデータを収容する。ノードタイプがリーフノードを示し、状態レジスタの値が１であるならば、エントロピーデコーダ１９０２はビットストリームから量子化された係数を復号化し、それを選択器１９０３へ送信する。選択器１９０３は、量子化された係数を選択し、それを係数メモリ１９０４へ送信する。係数メモリ１９０４へのインデックスは、リーフインデックスメモリ１９２１から取り出されたリーフインデックスによって決定される。そうではなく、状態レジスタ１９２０が０であるならば、選択器１９０３は値０を選択し、それを係数メモリ１９０４へ送信する。量子化された係数が量子化された係数メモリ１９０４に格納された後、値がスタック１９２２からポップされ、状態レジスタ１９２０に割り当てられる。そうでなく、ノードタイプがリーフノードを示さないならば、係数デコーダは以下の通り動作する。状態レジスタ１９２０が１であるならば、エントロピーデコーダ１９０２は、たとえば、図１５及び１６に記載されているように、ビットストリーム１９０１から２個のノード値を復号化する。第１のノード値はエントロピーデコーダ１９０２によって状態レジスタ１９２０に割り当てられ、第２のノード値はエントロピーデコーダ１９０２によってスタック１９２２へプッシュされる。そうではなく、状態レジスタ１９２０が０であるならば、状態レジスタ１９２０の内容がスタックへプッシュされる。
【００７２】
一実施形態では、デコーダは、量子化された係数メモリ内の全ての量子化された係数に値が割り当てられるまで、この方式で動作する。量子化された係数メモリの内容は、その後、量子化された係数の順序付き集合として出力される。
【００７３】
上述のように、本明細書に記載された技術は任意のデータのベクトルに適用されてもよい。たとえば、これらの技術は、前方向動きベクトルに対応する水平移動及び垂直移動と後方向動きベクトルに対応する水平移動及び垂直移動とを有するデータのブロックを含む次元４のベクトルをコード化するためにｂフレームをビデオコード化するときに使用されてもよい。この場合、本明細書に記載された技術は、ゼロでない方を示すために使用されてもよい。
【００７４】
（コードの例）
以下のサンプルＣコードは、本発明に記載されているような係数を復号化するために使用できる。ツリーの深さ優先トラバース及び幅優先トラバースの例が提供されている。
【数１】
2011004406.tif 000003
【数２】
2011004406.tif 000004
【００７５】
適切なツリー構造データは、係数ブロックの集合から導出できる。以下のサンプルＣコードは、係数の各組み合わせが非ゼロであることを頻度を用いて示す統計量の集合からツリー構造データを構築する。
【数３】
2011004406.tif 000005
【数４】
2011004406.tif 000006
【数５】
2011004406.tif 000007
【数６】
2011004406.tif 000008
【数７】
2011004406.tif 000009
【数８】
2011004406.tif 000010
【００７６】
（典型的なコンピュータシステム）
図２０は、本明細書に記載された１個以上の演算を実行できる典型的なコンピュータシステムのブロック図である。コンピュータシステム２０００は、典型的なクライアント又はサーバーコンピュータシステムを備えてもよい。コンピュータシステムに関して記述されたコンポーネントは、ハンドヘルド機器又はモバイル機器（たとえば、携帯電話機）の一部であってもよい。
【００７７】
図２０を参照すると、コンピュータシステム２０００は、情報を通信する通信メカニズム又はバス２０１１と、バス２０１１と接続され情報を処理するプロセッサ２０１２とを備える。プロセッサ２０１２は、マイクロプロセッサを含むが、たとえば、Ｐｅｎｔｉｕｍ（登録商標）プロセッサなどのようなマイクロプロセッサに限定されない。
【００７８】
システム２０００は、バス２０１１に接続され、情報とプロセッサ２０１２によって実行されるべき命令とを格納する、ランダムアクセスメモリ（ＲＡＭ）又はその他のダイナミック記憶装置２００４（メインメモリとして参照される）を、さらに備える。メインメモリ２００４はまた、プロセッサ２０１２による命令の実行中に、一時変数又はその他の中間情報を格納するためにも使用できる。
【００７９】
コンピュータシステム２０００は、バス２０１１に接続され、スタティック情報及びプロセッサ２０１２のための命令を格納するリードオンリーメモリ（ＲＯＭ）及び／又はその他のスタティック記憶装置２００６と、磁気ディスク又は光ディスク、及び、それに対応するディスクドライブのようなデータ記憶装置２００７とを、さらに備える。データ記憶装置２００７は、バス２０１１に接続され、情報及び命令を格納する。
【００８０】
コンピュータシステム２０００は、バス２０１１に接続され、情報をコンピュータユーザへ表示する陰極線管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）のようなディスプレイ機器２０２１に、さらに接続されてもよい。英数字キー及びその他のキーを含む英数字入力機器２０２２は、同様にバス２０１１に接続され、情報及びコマンド選択をプロセッサ２０１２へ通信できる。付加的なユーザ入力機器は、カーソル制御機器２０２３である。このカーソル制御機器２０２３は、例えばマウス、トラックボール、トラックパッド、スタイラス、又は、カーソル方向キーである。カーソル制御機器２０２３は、方向情報及びコマンド選択をプロセッサ２０１２へ通信し、ディスプレイ２０２１上のカーソル移動を制御するために、バス２０１１に接続されている。
【００８１】
バス２０１１に接続できる別の機器は、ハードコピー機器２０２４である。ハードコピー機器２０２４は、紙、フィルム、又は、類似したタイプの媒体のような媒体上に情報を残すために使用できる。バス２０１１に接続できる別の機器は、電話機又はハンドヘルドパーム機器へ通信するための有線／無線通信機能部２０２５である。
【００８２】
システム２０００のコンポーネント、及び、関連したハードウェアの何れか又は全部が本発明において使用できることに留意されたい。しかし、コンピュータシステムのその他の構成は、機器の一部又は全部を含んでもよいことが認められるであろう。
【００８３】
以上の説明を読んだ後に、本発明の多数の代替及び変形が当業者に明白になることは確実であるが、説明のために図示され記載された特定の実施形態が制限的であるとみなされることは決して意図されていないことが理解されるべきである。したがって、種々の実施形態の詳細への言及は、本発明に不可欠であると考えられる構成要件だけをそれ自体に列挙する請求項の範囲を制限することを意図していない。
【図１】
2011004406.tif 000011
【図２】
2011004406.tif 000012
【図３】
2011004406.tif 000013
【図４】
2011004406.tif 000014
【図５】
2011004406.tif 000015
【図６】
2011004406.tif 000016
【図７】
2011004406.tif 000017
【図８】
2011004406.tif 000018
【図９】
2011004406.tif 000019
【図１０】
2011004406.tif 000020
【図１１】
2011004406.tif 000021
【図１２】
2011004406.tif 000022
【図１３】
2011004406.tif 000023
【図１４】
2011004406.tif 000024
【図１５】
2011004406.tif 000025
【図１６】
2011004406.tif 000026
【図１７】
2011004406.tif 000027
【図１８】
2011004406.tif 000028
【図１９】
2011004406.tif 000029
【図２０】
2011004406.tif 000030
【図２１】
2011004406.tif 000031