【誤訳訂正書】
【提出日】平成23年6月24日(2011.6.24)
【誤訳訂正１】
【訂正対象書類名】明細書
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【発明の詳細な説明】
【発明の名称】メモリ効率の良い（MEMORY EFFICIENT）適応形ブロックコーディング
【技術分野】
【０００１】
本出願は、それぞれの全内容が参照により本明細書に組み込まれる、２００６年１１月１４日出願の米国仮出願第６０／８６５，８２７号明細書、および２００６年１１月２２日出願の米国仮出願第６０／８６７，０８１号明細書の利益を主張する。
【０００２】
本開示は、データ圧縮に関し、より詳細には、可変長コード（ＶＬＣ）を使用したデータ圧縮に関する。
【背景技術】
【０００３】
データ圧縮は、データ記憶空間、伝送帯域幅、またはその両方の消費を低減するために、様々な用途において広範に使用されている。データ圧縮の適用例には、ディジタル映像（video）、画像、言語（speech）および音声のコーディングなどがある。例えば、ディジタル映像コーディングは、ディジタルテレビ、ディジタル直接放送システム（digital direct broadcast system）、無線通信装置、ＰＤＡ（携帯情報端末）、ラップトップまたはデスクトップコンピュータ、ディジタルカメラ、ディジタル記録装置、ビデオゲーム装置、セルラー式または衛星無線電話などを含む、幅広い装置に使用されている。ディジタル映像装置は、より効率的にディジタル映像を送受信するために、ＭＰＥＧ−２、ＭＰＥＧ−４、またはＨ．２６４／ＭＰＥＧ−４  Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）などの映像圧縮技術を実装する。
【０００４】
一般に、映像圧縮技術は、映像データに固有の冗長度を低減し、または削除するために、空間的予測、動き推定、および動き補償を実行する。特に、イントラコーディングは、空間的予測に依存して、所与の映像フレーム内の映像における空間的冗長度を低減し、または削除する。インターコーディングは、時間的予測に依存して、隣接するフレーム内の映像の時間的冗長度を低減し、または削除する。インターコーディングでは、映像符号器は、２つ以上の隣接するフレーム間の整合する映像ブロックの動きを追跡するために、動き推定を行う。動き推定は、１つまたは複数の基準フレームにおける対応する映像ブロックに対する映像ブロックの変位を示す動きベクトルを生成する。動き補償は、動きベクトルを使用して、基準フレームから予測映像ブロックを生成する。動き補償後、元の映像ブロックから予測映像ブロックを取り去ることによって、残余映像ブロック（residual video block）が形成される。
【０００５】
映像符号器は、映像コーディング処理によって生成される残余ブロックのビットレートをさらに低減するために、変換、量子化、エントロピコーディングの処理を適用する。エントロピ符号化技術は、符号化されたデータの格納または伝送の前に、映像符号器／復号器（ＣＯＤＥＣ）の最終段階、および他の様々なコーディングの適用において使用される。エントロピ符号化は、変換および量子化の操作によって生成される残余係数をさらに圧縮するために、一般に、算術演算コードまたは可変長コード（ＶＬＣ）の適用を伴う。エントロピコーディング技術の例には、コンテキスト適応形２値算術演算コーディング（context-adaptive binary arithmetic coding：ＣＡＢＡＣ）、およびコンテキスト適応形可変長コーディング（context-adaptive variable length coding：ＣＡＶＬＣ）などがあり、これらは、いくつかの符号器で、代替のエントロピコーディングモードとして使用され得る。映像復号器は、エントロピ復号を行って、各ブロックの残余情報を復元し、動き情報および残余情報を使用して、符号化された映像を再構成する。
【発明の概要】
【０００６】
一般に、本開示は、ディジタル映像、画像、音声、または言語データのコーディングなど、様々な用途向けの、メモリ効率の良い低複雑性のデータの適応形可変長コーディング（ＶＬＣ）の技術を対象とする。第１の一般的な態様では、技術は、非常にコンパクトなデータ構造をサポートするために、特定の組のコードワード（codeword）の特性を利用することができる。第２の一般的な態様では、技術は、無記憶情報源（memoryless source）によって生成される２値系列の低複雑性の適応形符号化および復号をサポートすることができる。
【０００７】
本開示は、第１の態様において、可変長のコードワードを指定するコーディングツリーのレベルについての基本コードワード（base codeword）の部分値を生成することと、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータを生成することと、メモリ内のデータ構造に、部分値およびスキップインジケータを格納することとを備える方法を提供する。
【０００８】
別の態様において、本開示は、可変長のコードワードを指定するコーディングツリーのレベルについての基本コードワードの部分値と、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを格納するデータ構造を備える有形のコンピュータ可読媒体を提供する。
【０００９】
別の態様において、本開示は、可変長のコードワードを指定するコーディングツリーのレベルについての基本コードワードの部分値を生成し、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータを生成するよう構成されているプロセッサと、データ構造に部分値およびスキップインジケータを格納するメモリとを備える装置を提供する。
【００１０】
別の態様において、本開示は、可変長のコードワードを指定するコーディングツリーのレベルについての基本コードワードの部分値と、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを備えるデータ構造を格納するメモリと、格納されたデータ構造における部分値およびスキップインジケータに基づいて、ビットストリームからのコードワードのうちの１つを復号するためにメモリにアクセスする復号器とを備える復号装置を提供する。
【００１１】
別の態様において、本開示は、可変長のコードワードを指定するコーディングツリーのレベルについての基本コードワードの部分値と、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを備える、メモリに格納されたデータ構造にアクセスすることと、格納されたデータ構造における部分値およびスキップインジケータに基づいて、ビットストリームからのコードワードのうちの１つを復号することとを備える復号方法を提供する。
【００１２】
別の態様において、本開示は、プロセッサに、可変長のコードワードを指定するコーディングツリーのレベルについての基本コードワードの部分値と、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを備える、メモリに格納されたデータ構造にアクセスさせ、格納されたデータ構造における部分値およびスキップインジケータに基づいて、ビットストリームからのコードワードのうちの１つを復号させるための命令を備える有形のコンピュータ可読媒体を提供する。
【００１３】
追加の態様において、本開示は、コーディングツリーにおけるコードワードのグループであって、グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、グループのそれぞれにおけるコードワードが、コードワードによって表される値に対して辞書式に順序付けられるコードワードのグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義するコード構造に従って可変長のコーディングを実行することと、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、可変長のコーディングの結果を生成することとを備える方法を提供する。
【００１４】
追加の態様において、本開示は、プロセッサに、コーディングツリーにおけるコードワードのグループであって、グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、グループのそれぞれにおけるコードワードが、コードワードによって表される値に対して辞書式に順序付けられるコードワードのグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義するコード構造に従って可変長のコーディングを実行させ、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、可変長のコーディングの結果を生成させるための命令を備える有形のコンピュータ可読媒体を提供する。
【００１５】
追加の態様において、本開示は、コーディングツリーにおけるコードワードのグループであって、グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、グループのそれぞれにおけるコードワードが、コードワードによって表される値に対して辞書式に順序付けられるコードワードのグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義するコード構造に従って可変長のコーディングを実行し、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、可変長のコーディングの結果を生成するよう構成されているプロセッサを備える装置を提供する。
【００１６】
追加の態様において、本開示は、可変長のコードワードを指定するコーディングツリーにおけるコードワードのグループであって、グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、グループのそれぞれにおけるコードワードが、コードワードによって表される値に対して辞書式に順序付けられるコードワードのグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義するコード構造について、サブグループのそれぞれの基本コードワード、グループのそれぞれの中のコードワードの位置、第１のサブグループのそれぞれの中のコードワードの数、およびサブグループのそれぞれの中のコードワードの長さを使用して可変長のコーディングを実行することと、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、可変長のコーディングの結果を生成することとを備える方法を提供する。
【００１７】
追加の態様において、本開示は、コード構造について、可変長のコードワードを指定するコーディングツリーにおけるコードワードのグループであって、グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、グループのそれぞれにおけるコードワードが、コードワードによって表される値に対して辞書式に順序付けられるコードワードのグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義するための手段と、サブグループのそれぞれの基本コードワード、グループのそれぞれの中のコードワードの位置、第１のサブグループのそれぞれの中のコードワードの数、およびサブグループのそれぞれの中のコードワードの長さを使用して可変長のコーディングを実行するための手段と、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、可変長のコーディングの結果を生成するための手段とを備える装置を提供する。
【００１８】
追加の態様において、本開示は、可変長のコードワードを指定するコーディングツリーにおけるコードワードのグループであって、グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、グループのそれぞれにおけるコードワードが、コードワードによって表される値に対して辞書式に順序付けられるコードワードのグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義するコード構造について、プロセッサに、サブグループのそれぞれの基本コードワード、グループのそれぞれの中のコードワードの位置、第１のサブグループのそれぞれの中のコードワードの数、およびサブグループのそれぞれの中のコードワードの長さを使用して可変長のコーディングを実行させ、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、可変長のコーディングの結果を生成させるための命令を備える有形のコンピュータ可読媒体を提供する。
【００１９】
追加の態様において、本開示は、可変長のコードワードを指定するコーディングツリーにおけるコードワードのグループであって、グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、グループのそれぞれにおけるコードワードが、コードワードによって表される値に対して辞書式に順序付けられるコードワードのグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義するコード構造について、サブグループのそれぞれの基本コードワード、グループのそれぞれの中のコードワードの位置、第１のサブグループのそれぞれの中のコードワードの数、およびサブグループのそれぞれの中のコードワードの長さを使用して可変長のコーディングを実行し、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、可変長のコーディングの結果を生成するよう構成されているプロセッサを備える装置を提供する。
【００２０】
別の態様において、本開示は、コーディングツリーにおけるコードワードのグループであって、グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、グループのそれぞれにおけるコードワードが、コードワードによって表される値に対して辞書式に順序付けられるコードワードのグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義する可変長のコード構造を使用した可変長のコーディングのためのデータ構造を備える有形のコンピュータ可読媒体を提供する。
【００２１】
別の態様において、本開示は、コーディングツリーにおけるコードワードのグループであって、グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、グループのそれぞれにおけるコードワードが、コードワードによって表される値に対して辞書式に順序付けられるコードワードのグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義するコード構造に従って可変長のコーディングを実行するよう構成されているプロセッサであって、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、可変長のコーディングの結果を生成するよう構成されているプロセッサを備える集積回路装置を提供する。
【００２２】
別の態様において、本開示は、コーディングツリーにおけるコードワードのグループであって、グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、グループのそれぞれにおけるコードワードが、コードワードによって表される値に対して辞書式に順序付けられるコードワードのグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義するコード構造に従って可変長のコーディングを実行するよう構成されているプロセッサであって、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、可変長のコーディングの結果を生成するよう構成されているプロセッサを備える無線通信装置ハンドセット（handset）を提供する。
【００２３】
別の態様において、本開示は、可変長のコードワードを指定するコーディングツリーのレベルについての基本コードワードの部分値と、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを備えるデータ構造を格納するメモリと、格納されたデータ構造における部分値およびスキップインジケータに基づいて、ビットストリームからのコードワードのうちの１つを復号するためにメモリにアクセスする復号器とを備える集積回路装置を提供する。
【００２４】
別の態様において、本開示は、可変長のコードワードを指定するコーディングツリーのレベルについての基本コードワードの部分値と、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを備えるデータ構造を格納するメモリと、格納されたデータ構造における部分値およびスキップインジケータに基づいて、ビットストリームからのコードワードのうちの１つを復号するためにメモリにアクセスする復号器と、無線通信によって符号器からコードワードを受信するための受信機と、復号されたコードワードに少なくとも一部分基づいてユーザに出力を提示する出力装置とを備える無線通信装置ハンドセットを提供する。
【００２５】
本開示に記載した技術は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組み合わせにおいて実装され得る。ソフトウェアに実装された場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはディジタル信号プロセッサ（ＤＳＰ）、または他の等価の一体型または別個の論理回路など、１つまたは複数のプロセッサにおいて実行され得る。これらの技術を実行するソフトウェアは、最初にコンピュータ可読媒体に格納され、プロセッサによってロードされ、実行され得る。したがって、本開示は、本開示に記載した様々な技術のうちの任意のものをプロセッサに実行させるための命令を備えるコンピュータ可読媒体を備えるコンピュータプログラム製品も企図する。
【００２６】
本開示の１つまたは複数の態様の詳細は、添付の図面および以下の説明に記載されている。本開示に記載されている技術の他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになる。
【図面の簡単な説明】
【００２７】
【図１】映像符号化および復号システムを示すブロック図。
【図２】映像符号器の一例を示すブロック図。
【図３】映像復号器の一例を示すブロック図。
【図４】２値コーディングツリーの一例を示す図。
【図５】漸近的挙動（asymptotic behavior）を有する適応形ブロックコードの冗長レートを示すグラフ。
【図６】ブロックグループ、サブグループ、基本コードワードを示す２値ツリーの図。
【図７Ａ】異なる値ｐでの適応形ブロックコードの冗長レートの比較を示すグラフ。
【図７Ｂ】異なる値ｐでの適応形ブロックコードの冗長レートの比較を示すグラフ。
【図８】源データの非対称に対する冗長の感度を示すグラフ。
【図９】本開示の一態様による、単調分布についてのメモリ効率の良い可変長のコーディングを構成するための方法を示すフロー図。
【図１０】図９の方法に従って構成された可変長のコードを使用してシンボルを符号化するための方法を示すフロー図。
【図１１】図９の方法に従って構成された可変長のコードを復号するための方法を示すフロー図。
【図１２】本開示の別の態様による適応形ブロックコードを構成するための方法を示すフロー図。
【図１３】図１２の方法に従って構成された可変長のコードを使用してブロックを符号化するための方法を示すフロー図。
【図１４】図１２の方法に従って構成された可変長のコードを復号するための方法を示すブロック図。
【発明を実施するための形態】
【００２８】
一般に、本開示は、ディジタル映像、画像、音声、または言語データのコーディングなど、様々な用途向けの、メモリ効率の良い低複雑性のデータの適応形可変長コーディング（ＶＬＣ）の技術を対象とする。一部の態様では、技術は、非常にコンパクトなデータ構造をサポートするために、特定の組のコードワードの特性を利用することができる。他の態様では、技術は、無記憶情報源によって生成される２値系列の低複雑性の適応形符号化および復号をサポートすることができる。本開示に記載されている技術は、一般のデータ圧縮およびコーディングを含めて、広範囲の実用的な応用に適用可能であるが、本開示は、例および例証の目的で、ディジタル映像コーディングおよび復号について言及する。
【００２９】
本開示の第１の一般的な態様によれば、コンパクトなデータ構造をサポートするために、開示された技術は、任意の特定のコード構成方式（code construction scheme）に依存する必要はない。例えば、ハフマン、シャノン、シャノン−ファノ、ギルバート−ムーア、または他のコード構成方式を使用することができる。しかし、この第１の一般的な態様については、こうしたコードは、シンボルの確率が単調に増加する源について、シンボルの入力アルファベットから構成されることを前提とする。より詳細には、コードワードは、単調に減少する長さ、または少なくとも非増加の長さを有すること、および同じ長さのコードワードは、それらが表す入力アルファベットにおけるシンボルと同じ辞書式順序を有することを前提とする。
【００３０】
所望の辞書式順序は、入力アルファベットの並べ替えによって達成することができる。こうしたコードワードの場合、基本コードワード値は、コーディングツリーのレベルごとに計算することができる。基本コードワード値は、コーディングツリーの各レベルにおける、辞書式に最小の正準コードワード（canonical codeword）を表す。そのそれぞれのシンボルの基本コードワード値およびインデックスは、並べ替えられた配列に格納され得る。インデックスは、ツリーにおける埋められたレベルごとに、オフセット値として格納され得る。復号プロセスは、ビットストリームバッファと、左寄せの基本コードワード値との比較、次いで復号されたシンボルのインデックスの簡単な直接計算を伴う。
【００３１】
可変長のコードの漸進的復号を容易にする非常にコンパクトなデータ構造を生成するためにさらに圧縮することができるデータ構造により、こうしたコードを一意に記述するために、上記の特性を使用することができる。例えば、左寄せの基本コードワード値は、通常、右から左への大量の先行ゼロ（leading zero）を有する。先行ゼロの数は、プロセスが、該当するコーディングツリーにおけるより深い層に移動するにつれて、単調に低下する。したがって、一番最初の層で開始し、下方に移動しながら、ビットが順次復号されるとき、復号プロセスの精度に影響を与えることなく、先行ゼロビットの一部をスキップすることができる。
【００３２】
先行ゼロは、一定単位、例えば８ビット単位で削除することができ、これは、従来の８ビット／バイトコンピュータにおけるビットストリームバッファ管理に便利である。このプロセスを管理するために、１つまたは複数のスキップインジケータの追加の表を提供することができる。一例として、スキップインジケータは、先行ゼロがドロップされると、異なる基本コードワード値を区別することができるように、復号器に、ビットストリームバッファにおいて一定単位だけ前方にスクロールするよう指示する。先行ゼロの削除によって、変更された基本コードワード値の結果として得られた配列の幅を実質的に低減することができ、したがって、メモリ使用率を節約することができる。
【００３３】
したがって、第１の一般的な態様において、本開示は、可変長のコードワードを指定するコーディングツリーのレベルについての基本コードワードの部分値を生成することと、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータを生成することと、メモリ内のデータ構造に、部分値およびスキップインジケータを格納することとを備える方法を企図する。データ構造は、テーブル、リンクリスト、２値ツリー、ラディックスツリー、フラットファイルなど、広範なデータ構造のうちの任意のものでよく、多くの形式のランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、またはその両方など、様々な異なるメモリ装置のうちの任意のものに格納することができる。データ構造は、符号器または復号器内のこうしたメモリに格納することができる。例えば、復号器は、メモリ効率の良い方法でコードワードの可変長の復号を行うために、復号器に関連付けられているメモリから、データ構造、またはデータ構造のコンテンツの部分にアクセスすることができる。
【００３４】
この第１の一般的な態様によれば、本開示は、可変長のコードワードを指定するコーディングツリーのレベルについての基本コードワードの部分値を生成し、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータを生成するよう構成されているプロセッサと、データ構造に部分値およびスキップインジケータを格納するメモリとをさらに企図する。こうした情報は、単一のデータ構造または複数のデータ構造に格納することができる。したがって、データ構造への言及は、本開示において企図された情報を格納する１つまたは複数のデータ構造を含み得る。可変長のコーディングを実行するために、データ構造にアクセスするよう構成されているプロセッサは、源装置または受信装置内、または可変長のコーディングを実行する際に、符号器および／または復号器によって使用するコード構造を定義するデータ構造を生成する別個の装置内に実装することができる。
【００３５】
本開示の第１の一般的な態様に従う、コンパクトなデータ構造を達成するためのこの技術によれば、それぞれの有効なコードワードの長さは、コードツリーにおける外部ノードを含むレベルに対応し得る。上述したように、データ構造は、基本コードワードの部分値、および１つまたは複数のスキップインジケータを含み得る。より詳細には、一部の実施形態では、データ構造は、有効なコードワード長ごとに、以下の情報、（ａ）コードツリーの現在のレベルにおける辞書式に最小（または最大）のコードワードの部分値、（ｂ）部分値におけるビット数、（ｃ）辞書式に最小（または最大）のコードワードに対応するシンボルの値、および（ｄ）コードツリーの次のレベルに進む前に、いくつかの数のビットをスキップするよう復号器に指示するインジケータを含み得る。したがって、データ構造は、基本コードワードによって表されるシンボルの値、および基本コードワードの部分値の長さ、すなわち、基本コードワードの各部分値におけるビット数をさらに含み得る。符号化および復号の技術は、このデータ構造を使用して、生成または復号すべきコードワードに対応するレベルを識別し、次いで、コードワードまたは復号されたシンボルの値を直接計算することができる。したがって、データ構造は、そのうちの一部が結合されたＣＯＤＥＣとして構成され得る映像符号器または復号器、画像符号器または復号器、音声符号器または復号器、または言語符号器または復号器のメモリに格納することができる。
【００３６】
可変長のコードの符号化または復号のための既存の技術の例は、A. Moffat and A. Turpin, On the Implementation of Minimum-Redundancy Prefix Codes, IEEE Trans. Communications, 45 (10) (1997) 1200-1207, J. B. Connell, A Huffman-Shannon-Fano Code, Proc. IEEE, July 1973, 1046-1047、およびA. Brodnik and S. Carlsson, Sublinear Decoding of Huffman Codes Almost in Place, DIMACS Workshop on Codes and Trees: Algorithmic and information Theoretic Approaches, October 1998, Rutgers University, DIMACS Center, NJに記載されている。これらの既存の技術に比べて、コンパクトなデータ構造を達成するための開示された技術は、いくつかの利点を提供し得る。
【００３７】
第１の例として、開示された技術によって生成されるデータ構造は、辞書式に最小のコードワードの部分値が、例えば映像復号器によって格納され、使用されるという事実により、かなり少量のメモリを使用し得る。別の例として、開示された技術は、ビットストリームデータへの増分的アクセスを使用することができ、これによって、ビットストリームバッファを、適度に短いレジスタによって提示し、例えばスキップ指示を介して、任意の便利な間隔で更新することができ、実装の複雑性をさらに低減することができる。
【００３８】
例えば、一部の実装では、非常に長いコードの場合でさえ、３２ビットレジスタで十分であり得る。さらに、更新を８ビット間隔で行うことができる。全体的に、開示された技術は、可変長コードの表現および符号化／復号の複雑性をかなり低減することができ、これによって、圧縮アルゴリズムの設計者は、かなり大きい、したがって、より効率の良いコードブックを使用することができるようになる。
【００３９】
本開示の第２の一般的な態様によれば、無記憶情報源によって生成された２値系列の低複雑性の適応形符号化および復号をサポートするために、開示された技術は、ある系列における前のビットの非ゼロビットの数によって識別される１組のコンテキストのために構成されたユニバーサルブロックコード（universal block code）を実装し得る。この第２の一般的な態様は、非常にコンパクトなデータ構造の生成に関して上述した第１の一般的な態様とは別に、またはそれと共に提供され、または実施され得る。低複雑性の適応形符号化および復号のための技術は、この第２の一般的な態様によれば、R. E. Krichevsky and V. K. Trofimov, The Performance of Universal Encoding, IEEE Trans Information Theory, 27 (1981) 199-207に記載されている推定を改良する、こうしたコードの漸近的冗長について開示された決まったやり方に依存し得る。
【００４０】
この第２の一般的な態様による技術は、いくつかの推定された密度のために設計され、ある系列における前のブロック（コンテキスト）内の非ゼロのビットの数によってインデックスが付けられたハフマンコードの配列を使用することができる。ｎ＝８・・・１６の小さめなサイズのビットのブロックを使用する（および対応する１．５・・・５ｋバイトのメモリを使用する）ことによって、こうした技術は、W. B. Pennebaker, J. L. Mitchell, G. G. Langdon, Jr., R. B. Arps, An overview of the basic principles of the Q-Coder adaptive binary arithmetic coder, IBM J. Res. Dev., 32 (6) (1988) 717に記載されており、ＪＢＩＧ画像コーディング標準に使用されるＱコーダアルゴリズム、およびD. Marpe, H. Schwartz, and T. Wiegand, Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC video compression standard, IEEE Trans. on CSVT, 13(7):620 636, July 2003に記載されており、映像圧縮のためのＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ  ＡＶＣ標準で使用されるＣＡＢＡＣアルゴリズムなど、他の既存のアルゴリズムに匹敵する、またはそれより優れた圧縮性能を達成し得る。
【００４１】
低複雑性の適応形符号化および復号は、本開示のこの第２の一般的な態様によれば、無記憶情報のモデルにおいて、ビットのブロックの確率、またはその推定が、そのビットの実際のパターンではなく、その重さ（非ゼロのビットの数）のみに依存するという認識に基づき得る。したがって、ある固定長のすべての可能なブロックの組を、同じ重さ（およびしたがって、同じ確率）のブロックを含む異なるグループに分けることができる。各グループが、ブロックを、自然にまたは並べ替えによって、辞書式順序で格納することが想定され得る。
【００４２】
蓋然性が等しいブロックの各グループは、多くとも２つのサブグループを含むことができ、こうした各サブグループ内のブロックが同じ長さのコードワードによって符号化されることは、最小冗長コード（ハフマンコードやシャノンコードなど）の既知の特性である。一般性を損ねることなく、第１のサブグループにおけるコードワードの長さは、第２のサブグループにおけるコードワードの長さより短いことがさらに想定され得る。グループ内のブロック（または単語）は、辞書式順序に従うため、これは、より大きいコードワード長を有するサブグループと、より短いコードワード長を有するサブグループとで簡単に分けることができる。インデックス値は、グループ内のブロックの位置を示す。各サブグループ内の辞書式に最小のブロック（または単語）に、基本コードワードが割り当てられる。基本コードワードが与えられると、各サブグループ内の残りのコードワードは、容易に計算することができる。
【００４３】
したがって、本開示のこの第２の一般的な態様によれば、例えば、コーディングツリーにおける入力ブロックまたは単語およびそれぞれの出力コードワードのグループであって、同じ重さを有するブロック（または単語）を表すコードワードをぞれぞれ含むグループと、グループのそれぞれの中のコードワードの第１および第２のサブグループであって、第１のサブグループが第１の長さを有するコードワードを含み、第２のサブグループが第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義するコード構造を使用する符号器または復号器によって可変長コーディングを実行することができる。グループのそれぞれの中のブロックは、辞書式に順序付けられ、次いで、辞書式の順序が各サブグループにおいて維持されるように、サブグループに分けられる。さらに、サブグループ内の各ブロックに対応するコードワードが割り当てられるので、それらも同じ辞書式順序に従い、直接計算による符号化および復号を容易にする。
【００４４】
ブロック、そのグループおよびサブグループのこの配列に基づいて、簡略化されたプロセスを使用して、コードワードを直接計算することができる。例えば、ブロックの重さおよびインデックス値を取得すると、インデックス値が第１のサブグループにおける最大数のブロック未満である場合、コードワードを見つけ出すために、第１のサブグループが選択される。そうでない場合、コードワードを見つけ出すために、第２のサブグループが選択される。次いで、選択されたサブグループについての基本コードワードを取り出すと、基本コードワード値を、選択されたサブグループ内のブロックのインデックス値に基づいて決定された値と合計することによって、コードワードは、容易に計算される。本開示のこの第２の一般的な態様のために、ブロックまたは単語という用語は、コーディング方式に従ってコーディングされ得る入力量を一般的に指すのに区別なく使用され得る。ブロックまたは単語は、２値アルファベット｛０，１｝など、入力アルファベットから形成され得る一連のシンボルを含み得る。コードワードは、一般に、コーディング方式の結果としてブロック（または単語）に割り当てられた出力量を指す。
【００４５】
本開示に記載されている技術のこれらおよび他の態様について、以下でより詳しく説明する。技術は、一緒にまたは別々に使用することができ、ディジタル映像、画像、音声、または言語データの符号化または復号のために構成されるシステムおよび装置を含めて、様々な符号化および復号システムおよび装置のうちの任意のものにおいて実装することができる。例および例証の目的で、本開示は、データ圧縮およびコーディングの一般の実用的な応用、または異なるタイプのデータへの他の特定の適用に関する制限なく、こうした技術をディジタル映像コーディングおよび復号に適用することを説明する。
【００４６】
図１は、映像符号化および復号システム１０を示すブロック図である。図１に示されているように、システム１０は、通信チャネル１６を介して受信装置１４に符号化された映像を送信する源装置１２を含む。源装置１２は、映像源１８、映像符号器２０、および送信機２２を含み得る。受信装置１４は、受信機２４、映像復号器２６、および映像表示装置２８を含み得る。システム１０は、ディジタル映像データの、メモリ効率の良い低複雑性の適応形可変長コーディング（ＶＬＣ）の技術を適用するよう構成され得る。特に、メモリ効率の良い低複雑性の適応形ＶＬＣ技術は、予測映像コーディング（predictive video coding）プロセスによって生成される残余ブロック係数（residual block coefficient）のエントロピコーディングに使用することができる。これらの技術は、一連のゼロを使用して、非ゼロ変換係数の位置をコーディングする映像コーディング方式、または他の映像コーディング方式に適用することができる。
【００４７】
図１の例において、通信チャネル１６は、無線周波数（ＲＦ）スペクトルまたは１つまたは複数の物理的な伝送路など、任意の無線または有線の通信媒体、または無線および有線の媒体の任意の組み合わせを備え得る。チャネル１６は、例えばローカルエリアネットワーク、広域ネットワーク、またはグローバルネットワーク（global network）、例えばインターネットなど、パケットベースのネットワークの一部を形成し得る。通信チャネル１６は、一般に、映像データを源装置１２から受信装置１４に送信するための任意の適した通信媒体、または異なる通信媒体の集まりを表す。
【００４８】
源装置１２は、宛先装置１４に送信するための映像を生成する。しかし、一部の場合、装置１２、１４は、実質的に対称の方法で動作し得る。例えば、装置１２、１４のそれぞれは、映像符号化および復号の成分を含み得る。したがって、システム１０は、例えば、映像ストリーミング、映像ブロードキャスティング（video broadcasting）、またはテレビ電話のためなど、映像装置１２、１４の間の一方向または双方向の映像伝送をサポートし得る。他のデータ圧縮およびコーディングの用途では、装置１２、１４は、画像、言語、または音声データなど、または映像、画像、言語、および音声データのうちの２つ以上の組み合わせなど、他のタイプのデータを送信し、受信し、または交換するよう構成することができる。したがって、映像の用途の説明は、例証の目的で提供され、本明細書で広範に記載されるように、本開示の様々な態様の制限と見なされないものとする。
【００４９】
映像源１８は、１つまたは複数のビデオカメラ、前に捕捉した映像を含む映像アーカイブ、または映像コンテンツプロバイダから提供されたライブ映像など、映像捕捉装置を含み得る。別の代替として、映像源１８は、源映像としてのコンピュータグラフィックスベースのデータ、またはライブ映像とコンピュータが生成した映像との組み合わせを生成し得る。一部の場合、映像源１８がカメラであれば、源装置１２および受信装置１４は、いわゆるカメラ付き電話、またはテレビ電話を形成し得る。したがって、一部の態様において、源装置１２、受信装置１４、またはその両方は、移動電話など、無線通信装置ハンドセットを形成し得る。いずれの場合でも、捕捉された、前に捕捉された、またはコンピュータで生成された映像は、送信機２２、チャネル１６、および受信機２４を介して映像源装置１２から映像受信装置１４の映像復号器２６に送信するために、映像符号器２０によって符号化され得る。表示装置２８は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイなど、様々なディスプレイ装置のうちの任意のものを含み得る。
【００５０】
映像符号器２０および映像復号器２６は、空間的、時間的、および／またはＳＮ比（ＳＮＲ）スケーラビリティのために、拡張可能な映像コーディングをサポートするよう構成され得る。一部の態様において、映像符号器２０および映像復号器２２は、ＳＶＣのための細粒度ＳＮＲスケーラビリティ（ＦＧＳ）コーディング（fine granularity SNR scalability (FGS) coding）をサポートするよう構成され得る。符号器２０および復号器２６は、基本層（base layer）および１つまたは複数の拡張可能な高機能層（enhancement layer）の符号化、伝送、および復号をサポートすることによって、様々な度合いのスケーラビリティをサポートし得る。拡張可能な映像コーディングでは、基本層は、最低レベルの品質で映像データを運ぶ。１つまたは複数の高機能層は、より高い空間的、時間的、および／またはＳＮＲレベルをサポートするために、追加のビットストリームを運ぶ。
【００５１】
映像符号器２０および映像復号器２６は、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、またはＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４  Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）などの映像圧縮標準に従って動作し得る。図１には示されてないが、一部の態様において、映像符号器２０および映像復号器２６は、それぞれ音声符号器および復号器と統合され、共通のデータストリームまたは別々のデータストリームにおける音声および映像の両方の符号化を処理するために、適切なＭＵＸ−ＤＥＭＵＸユニット、または他のハードウェアおよびソフトウェアを含むことができる。該当する場合、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ  Ｈ．２２３多重化装置プロトコル、またはユーザデータグラムプロトコル（ＵＤＰ）など他のプロトコルに準拠し得る。
【００５２】
Ｈ．２６４／ＭＰＥＧ−４（ＡＶＣ）標準は、Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）として知られる共同パートナーシップの成果として、ＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）、およびＩＳＯ／ＩＥＣ  Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）によって策定された。Ｈ．２６４標準は、本明細書では、Ｈ．２６４標準またはＨ．２６４仕様、またはＨ．２６４／ＡＶＣ標準または仕様と呼ばれ得るＩＴＵ−Ｔ  Ｓｔｕｄｙ  Ｇｒｏｕｐによる２００５年３月付けのITU-T Recommendation H.264, Advanced video coding for generic audiovisual servicesに記載されている。
【００５３】
Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｔｅａｍ（ＪＶＴ）は、引き続き、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣへの拡張可能な映像コーディング（ＳＶＣ）の拡張に取り組んでいる。発展するＳＶＣの拡張の仕様は、Ｊｏｉｎｔ  Ｄｒａｆｔ（ＪＤ）の形をしている。ＪＶＴによって作成されたＪｏｉｎｔ  Ｓｃａｌａｂｌｅ  Ｖｉｄｅｏ  Ｍｏｄｅｌ（ＪＳＶＭ）は、本開示に記載されている様々なコーディングタスクのために、システム１０内で使用され得る、拡張可能な映像で使用するためのツールを実装する。細粒度ＳＮＲスケーラビリティ（ＦＧＳ）コーディングに関する詳細な情報は、例えばＪｏｉｎｔ  Ｄｒａｆｔ６（ＳＶＣ  ＪＤ６）におけるThomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz, and Mathias Wien, "Joint Draft 6: Scalable Video Coding," JVT-S 201, April 2006, Geneva、およびＪｏｉｎｔ  Ｄｒａｆｔ９（ＳＶＣ  ＪＤ９）におけるThomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz, and Mathias Wien, "Joint Draft 9 of SVC Amendment," JVT-V 201, January 2007, Marrakech, MoroccoなどのＪｏｉｎｔ  Ｄｒａｆｔ文書で見つけることができる。
【００５４】
一部の態様において、映像ブロードキャスティングの場合、本開示に記載されている技術は、例えば、無線映像ブロードキャストサーバまたは無線通信装置ハンドセットを介して、技術標準ＴＩＡ−１０９９（「ＦＬＯ仕様」）として発行されるForward Link Only (FLO) Air Interface Specification, "Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast"を使用して、ｔｅｒｒｅｓｔｒｉａｌ  ｍｏｂｉｌｅ  ｍｕｌｔｉｍｅｄｉａ  ｍｕｌｔｉｃａｓｔ（ＴＭ３）システムにおいて、リアルタイム映像サービスを配信するためのＥｎｈａｎｃｅｄ  Ｈ．２６４映像コーディングに適用され得る。ＦＬＯ仕様は、ビットストリーム構文記述およびセマンティクス、およびＦＬＯ  Ａｉｒ  Ｉｎｔｅｒｆａｃｅに適した復号プロセスを定義する例を含む。あるいは、映像は、ＤＶＢ−Ｈ（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｂｒｏａｄｃａｓｔ−ｈａｎｄｈｅｌｄ）、ＩＳＤＢ−Ｔ（ｉｎｔｅｇｒａｔｅｄ  ｓｅｒｖｉｃｅｓ  ｄｉｇｉｔａｌ  ｂｒｏａｄｃａｓｔ−ｔｅｒｒｅｓｔｒｉａｌ）、またはＤＭＢ（ｄｉｇｉｔａｌ  ｍｅｄｉａ  ｂｒｏａｄｃａｓｔ）など、他の標準に従ってブロードキャストされ得る。したがって、源装置１２は、移動無線端末、映像ストリーミングサーバ、または映像ブロードキャストサーバとすることができる。しかし、本開示に記載されている技術は、ブロードキャスト、マルチキャスト、またはポイントツーポイントシステムの任意の特定のタイプに限定されない。ブロードキャストの場合、源装置１２は、映像データのいくつかのチャネルを、図１の受信装置１４にそれぞれ類似し得る複数の受信装置にブロードキャストすることができる。
【００５５】
映像符号器２０および映像復号器２６はそれぞれ、１つまたは複数のマイクロプロセッサ、ディジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、別個のロジック、ソフトウェア、ハードウェア、ファームウェア、またはその任意の組み合わせとして実装され得る。映像符号器２０および映像復号器２６のそれぞれは、いずれもそれぞれの移動装置、加入者装置、ブロードキャスト装置、サーバなどに、結合された符号器／復号器（ＣＯＤＥＣ）の一部として統合され得る１つまたは複数の符号器または復号器に含まれ得る。さらに、源装置１２および受信装置１４はそれぞれ、該当する場合、無線通信をサポートするのに十分な無線周波数（ＲＦ）無線構成要素およびアンテナを含めて、符号化された映像の送受信に適した変調、復調、周波数変換、フィルタリング、および増幅器の構成要素を含み得る。しかし、説明を簡単にするために、こうした構成要素は、図１に示していない。
【００５６】
映像系列は、一連の映像フレームを含む。映像符号器２０は、映像データを符号化するために、個々の映像フレーム内の画素のブロックに対して働く。映像ブロックは、固定または可変のサイズを有していてよく、指定されたコーディング標準に従ってサイズが異なり得る。各映像フレームは、一連のスライスを含む。各スライスは、サブブロックに配列され得る一連のマクロブロックを含み得る。一例として、ＩＴＵ−Ｔ  Ｈ．２６４標準は、輝度成分（luma component）については１６×１６、８×８、４×４、色度成分（chroma component）については８×８など、様々なブロックサイズのイントラ予測、および輝度成分については１６×１６、１６×８、８×１６、８×８、８×４、４×８、４×４、色度成分については対応する変倍サイズなど、様々なブロックサイズのインター予測をサポートする。
【００５７】
より小さい映像ブロックは、より良い解像度を提供することができ、より高いレベルの詳細を含む映像フレームの位置の特定に使用され得る。一般に、マクロブロック（ＭＢ）および様々なサブブロックは、映像ブロックであると考えることができる。さらに、スライスは、ＭＢおよび／またはサブブロックなど、一連の映像ブロックであると考えることができる。各スライスは、別々に復号可能な単位とすることができる。予測後、８×８の残余ブロック、または４×４の残余ブロックに変換が行われ、イントラ１６×１６予測モードが使用される場合、色度成分または輝度成分についての４×４ブロックのＤＣ係数に、追加の変換が適用され得る。
【００５８】
図１のシステム１０の映像符号器２０および／または映像復号器２６は、本開示に記載したように、メモリ効率の良い低複雑性の適応形可変長コーディング（ＶＬＣ）のための技術を使用するよう構成され得る。特に、映像符号器２０および／または映像復号器２６は、メモリ使用率、処理オーバーヘッド、処理複雑性、帯域幅消費、データ格納スペース、および／または消費電力を低減するために、こうした技術の少なくとも一部を適用する、エントロピ符号器およびエントロピ復号器をそれぞれ含み得る。
【００５９】
図２は、図１に示すような映像符号器２０の一例を示すブロック図である。映像符号器２０は、少なくとも一部分、まとめて集積回路装置と呼ばれ得る１つまたは複数の集積回路装置として形成され得る。一部の態様では、映像符号器２０は、無線通信装置ハンドセットまたはブロードキャストサーバの一部を形成し得る。映像符号器２０は、映像フレーム内のブロックのイントラおよびインターコーディングを実行し得る。イントラコーディングは、空間的予測に依存して、所与の映像フレーム内の映像における空間的冗長度を低減し、または削除する。インターコーディングは、時間的予測に依存して、映像系列の隣接するフレーム内の映像の時間的冗長度を低減し、または削除する。インターコーディングでは、映像符号器２０は、隣接するフレーム間の整合する映像ブロックの動きを追跡するために、動き推定を行う。
【００６０】
図２に示すように、映像符号器２０は、符号化すべき映像フレーム内の現在の映像ブロック３０を受信する。図２の例において、映像符号器２０は、動き推定ユニット３２、基準フレームストア３４、動き補償ユニット３６、ブロック変換ユニット３８、量子化ユニット４０、逆量子化ユニット４２、逆変換ユニット４４およびエントロピコーディングユニット４６を含む。エントロピコーディングユニット４６は、コーディングに有用なデータを取得するために、メモリ４５に格納されている１つまたは複数のデータ構造にアクセスし得る。ループ内デブロッキングフィルタ（in-loop deblocking filter）（図示せず）は、ブロッキングアーティファクト（blocking artifact）を削除するために、ブロックをフィルタ処理するために適用され得る。映像符号器２０は、加算器４８および加算器５０も含む。図２は、映像ブロックのインターコーディングのための映像符号器２０の時間的予測構成要素を示す。説明を簡単にするために、図２には示されていないが、映像符号器２０は、いくつかの映像ブロックのイントラコーディングのための、空間的予測構成要素も含み得る。
【００６１】
動き推定ユニット３２は、１つまたは複数の動きベクトルを生成するために、映像ブロック３０を、１つまたは複数の隣接する映像フレーム内のブロックと比較する。１つまたは複数の隣接するフレームは、前に符号化されたブロックから再構成された映像ブロックを格納するための任意のタイプのメモリまたはデータ格納装置を備え得る基準フレームストア３４から取り出すことができる。動き推定は、例えば、１６×１６、１６×８、８×１６、８×８、またはより小さいブロックサイズなど、可変サイズのブロックについて実行され得る。動き推定ユニット３２は、例えば、レート歪みモデル（rate distortion model）に基づいて、現在の映像ブロック３０に最も近い、隣接するフレーム内の１つまたは複数のブロックを識別し、隣接するフレーム内のブロックと現在の映像ブロックとの間の変位を決定する。これに基づいて、動き推定ユニット３２は、現在の映像ブロック３０と現在の映像ブロック３０をコーディングするために使用される基準フレームからの１つまたは複数の一致するブロックとの間の変位の大きさおよび軌道を示す１つまたは複数の動きベクトル（ＭＶ）を生成する。
【００６２】
動きベクトルは、半分または１／４の画素精度、またはさらに細かい精度を有している場合があり、これによって映像符号器２０は、整数画素位置より高い精度で動きを追跡し、より良い予測ブロックを取得することができる。小数画素値を含む動きベクトルが使用されると、動き補償ユニット３６において、補間演算が行われる。動き推定ユニット３２は、レート歪みモデルなど、何らかの基準を使用して、映像ブロックについての最高のブロック分割、および１つまたは複数の動きベクトルを識別する。例えば、双方向予測の場合、１つより多くの動きベクトルが存在する場合がある。結果として得られたブロック分割および動きベクトルを使用して、動き補償ユニット３６は、予測映像ブロックを形成する。
【００６３】
映像符号器２０は、加算器４８において、元の、現在の映像ブロック３０から、動き補償ユニット３６によって生成された予測映像ブロックを取り去ることによって、残余映像ブロックを形成する。ブロック変換ユニット３８は、Ｈ．２６４／ＡＶＣで使用される４×４または８×８の整数変換などの変換を残余ブロックに適用して、残余変換ブロック係数を生成する。量子化ユニット４０は、ビットレートをさらに減らすために、残余変換ブロック係数を量子化する。エントロピコーディングユニット４６は、ビットレートをまたさらに減らすために、量子化された係数をエントロピコーディングする。
【００６４】
エントロピコーディングユニット４６は、ＶＬＣコーディングを量子化されたブロック係数に適用するために、可変長コーディング（ＶＬＣ）ユニットとして動作する。特に、エントロピコーディングユニット４６は、本開示に記載したようなメモリ効率の良い低複雑性の適応形ＶＬＣ技術を使用して、ディジタル映像ブロック係数のＶＬＣコーディングを実行するよう構成することができる。したがって、本開示に記載されている様々な符号化プロセスは、映像データのコーディングを実行するために、エントロピコーディングユニット４６内に実装され得る。あるいは、こうしたエントロピコーディングユニット４６は、それだけには限定されないが、映像、画像、言語、および音声データを含めて、様々なデータのうちの任意のものをコーディングするために、本開示に記載されているプロセスを実行し得る。一般に、映像復号器２６は、例えば図３を参照して説明するように、符号化された映像を復号し、再構成するために、ＶＬＣ復号を含めて、逆の操作を実行する。
【００６５】
逆量子化ユニット４２および逆変換ユニット４４は、残余ブロックを再構成するために、逆量子化および逆変換をそれぞれ適用する。加算器５０は、再構成された残余ブロックを、動き補償ユニット３６によって生成された動き補償済みの予測ブロックに追加して、再構成された映像ブロックを生成して基準フレームストア３４に格納する。再構成された映像ブロックは、次の映像フレームにおけるブロックを符号化するために、動き推定ユニット３２、および動き補償ユニット３６によって使用される。
【００６６】
図３は、映像復号器２６の一例を示すブロック図である。映像復号器２６は、少なくとも一部分、まとめて集積回路装置と呼ばれ得る１つまたは複数の集積回路装置として形成され得る。一部の態様では、映像復号器２６は、無線通信装置ハンドセットの一部を形成し得る。映像復号器２６は、映像フレーム内のブロックのイントラおよびインター復号を実行し得る。図３に示されるように、映像復号器２６は、映像符号器２０によって符号化された符号化済みの映像ビットストリームを受信する。図３の例において、映像復号器２６は、エントロピ復号ユニット５２、動き補償ユニット５４、逆量子化ユニット５６、逆変換ユニット５８、および基準フレームストア６２を含む。映像復号器２６は、加算器６４の出力をフィルタ処理するループ内デブロッキングフィルタ（図示せず）も含み得る。映像復号器２６は、加算器６４も含む。図３は、映像ブロックのインター復号のための映像復号器２６の時間的予測構成要素を示す。図３には示されていないが、映像復号器２６は、いくつかの映像ブロックのイントラ復号のための、空間的予測構成要素も含み得る。
【００６７】
エントロピ復号ユニット５２は、符号化された映像ビットストリームを受信し、ビットストリームからの、量子化された残余係数、マイクロブロックコーディングモード、および動きベクトルおよびブロック分割を含み得る動き情報を復号する。したがって、エントロピ復号ユニット５２は、ＶＬＣ復号ユニットとしての役目を果たす。例えば、符号化されたビットストリームからの量子化された残余係数を復号するために、図２のエントロピ符号化ユニット４６のように、図３のエントロピ復号ユニット５２は、本開示に記載されているような、ディジタル映像ブロック係数のメモリ効率の高い低複雑性の適応形ＶＬＣ復号を実行することができる。しかし、エントロピ復号ユニット５２は、符号化されたビットストリームから量子化されたブロック係数を取り出すために、図２のエントロピ符号化ユニット４６に対して逆の方法でＶＬＣ復号を実行することができる。したがって、本開示に記載されている様々な復号プロセスは、映像データの復号を実行するために、エントロピ復号ユニット５２内に実装される。あるいは、こうしたエントロピ復号ユニット５２は、それだけには限定されないが、映像、画像、言語、および音声データを含めて、様々なデータのうちの任意のものを復号するために、本開示に記載されているプロセスを実行し得る。いずれの場合でも、エントロピ復号ユニット５２によって実行された可変長のコーディングの結果は、ユーザに出力され、メモリに格納され、かつ／または別の装置または処理ユニットに送信され得る。
【００６８】
動き補償ユニット５４は、予測映像ブロックを生成するために、動きベクトルおよびブロック分割、および１つまたは複数の再構成された基準フレームを基準フレームストア６２から受信する。逆量子化ユニット５６は、量子化されたブロック係数を逆量子化、すなわち逆量子化する。逆変換ユニット５８は、残余ブロックを生成するために、逆ＤＣＴ、逆４×４または８×８整数変換など、逆変換を係数に適用する。予測映像ブロックは、次いで、復号されたブロックを形成するために、加算器６４によって、残余ブロックと合計される。デブロッキングフィルタ（図示せず）は、ブロッキングアーティファクトを削除するために、復号されたブロックをフィルタ処理するために適用され得る。フィルタ処理されたブロックは、次いで、その後の映像フレームの復号のために基準フレームを提供し、表示装置２８（図１）を駆動するために、復号された映像を生成する基準フレームストア６２に入れられる。
【００６９】
可変長コードのメモリ効率の良いコーディング
次に、本開示の第１の一般的な態様による、コンパクトなデータ構造をサポートするための可変長コーディングのためのメモリ効率の良い技術の一例について、より詳細に説明する。この技術は、ハフマン、シャノン、シャノン−ファノ、ギルバートムーア、または他のコードなど、任意の特定のコード構成方式に依存する必要はない。しかし、この技術は、シンボルの確率が単調に増加する源について、コードが構成されることを前提とする。より詳細には、コードワードは、単調に減少する（または少なくとも非増加の）長さを有すること、および同じ長さのコードワードは、それらが表す入力アルファベットにおけるシンボルと同じ辞書式順序を有することを前提とする。
【００７０】
この技術は、映像コーディングまたは他の用途に適用されるとき、非常にコンパクトなデータ構造により、こうしたコードを一意に記述するために、上記の特性を使用する。上述したように、データ構造は、有効なコードワードの長さ、すなわちコードツリーにおける外部ノードを含むレベルごとに、以下の情報、
ａ．コードツリー中の現在のレベルにおける辞書式に最小（または最大）のコードワードの部分値
ｂ．部分値におけるビット数
ｃ．辞書式に最小（または最大）のコードワードに対応するシンボルの値
ｄ．コードツリーの次のレベルに進む前に、いくつかの数のビットをスキップするよう復号器に指示するインジケータ
を含み得る。
【００７１】
符号化および復号のプロセスは、この構造を使用して、生成（または復号）すべきコードワードに対応するコードツリーのレベルを識別し、次いで、コードワード（または復号されたシンボル）の値を直接計算することができる。
【００７２】
この技術によって、辞書式に最小のコードワードの部分値のみが格納されるという事実により、コーディングおよび復号に、かなり少量のメモリを使用できるようになる。データ構造は、テーブル、リンクリスト、２値ツリー、ラディックスツリー、フラットファイルなど、広範なデータ構造のうちの任意のものでよく、多くの形式のランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、またはその両方など、様々な異なるメモリ装置のうちの任意のものに格納することができる。データ構造は、図２および図３にそれぞれ示されているメモリ４５またはメモリ５１内など、符号器または復号器内のこうしたメモリに格納することができる。この場合も、コーディングツリーのレベルの少なくともいくつかは、コードワードによって表されるシンボル値の順序に対して辞書式順序で配列されるコードワードを含む。したがって、基本コードワードのそれぞれは、コーディングツリー中の対応するレベルにおける、辞書式に最小のコードワードである。さらに、この技術は、ビットストリームデータへの増分的アクセスを使用することができ、これによって、ビットストリームバッファを、適度に短いレジスタによって提示することができる。例えば、３２ビットレジスタは、非常に長いコードでさえ、十分であり得る。レジスタは、便利な間隔（例えば８ビットなど）で更新することができ、実装の複雑性をさらに低減することができる。全体的に、様々な態様において、この技術は、可変長コードの表現および符号化／復号の複雑性をかなり低減することができ、これによって、圧縮アルゴリズムの設計者は、より大きく、より効率の良いコードブックを使用することができるようになる。
【００７３】
次に、本開示に記載されている技術の例証を助けるために、可変長コードの一般論について説明する。可変長コードは、データ圧縮における基本的なツールを表す。一般に、可変長コードは、何らかの既知の、一般にかなり不均衡な分布のシンボルの系列を表すために使用される。こうした系列は、全長がかなり短い２値系列またはコードによって表すことができる。長さの短縮は、より頻繁に出現するシンボルをより短いコードに置き換え、あまり頻繁に出現しないシンボルをより長いコードに置き換えることによって達成される。
【００７４】
データ圧縮で使用される可変長コードの例には、例えばD. A. Huffman. A method for the construction of minimum-redundancy codes. Proc. IRE, vol. 40, pp. 1098-1101. Sept. 1952に記載されているハフマンコード、例えばC. E. Shannon, A mathematical theory of communication, Bell Syst. Tech J. Vol. 27. pp. 379-423, July 1948に記載されているシャノンコード、例えばR M. Fano, The transmission of information, Res. Lab. Electronics, Massachusetts Inst. of Technology, Cambridge, Mass. Tech. Rep. No. 65, 1949に記載されているシャノン−ファノコード、および例えばE. N. Gilbert and E. F. Moore, Variable-Length Binary Encodings, Bell Syst. Tech. J., Vol.7, pp. 932-967, 1959に記載されているギルバートムーアコード（シャノン−ファノ−エリアスコードと呼ばれることもある）がある。
【００７５】
上述したコードは、例えば、T. Cover and J. Thomas, Elements of Information Theory, Wiley, 1991に記載されているような、あるクラスの接頭コード（prefix free code）に属する。図４は、２値コーディングツリーの一例を示す図である。上述したコードは、図４に示されているものなど、２値ツリーによって便利に表すことができる。したがって、符号器は、コーディングツリーに一致するシンボル値を符号化し得る。ツリーによる値は、映像データ、画像データ、言語データ、または音声データなど、様々なデータのうちの任意のものを表すことができる。こうしたツリーにおける各内部ノードは、その０値が右への移動を強制し、１値がツリーにおける左の子ノードへの移動を強制する２進数に対応する。一番上のノードは、符号化／復号がそこから開始するノードであるルートノードと呼ばれる。
【００７６】
ツリーにおける各外部ノードでは、符号化／復号プロセスが再開され、すなわちルートから現在のノードまでのビットの系列としてのコードワード、または現在のコードワードに関連付けられているシンボルの復号された値のいずれかが生成される。図４のコーディングツリー例では、０から１５までインデックスが付けられたシンボルに対応する１６のコードワードがある。この例では、最短のコードワードは、１ビットの長さを有し、最長のコードワードは、それぞれ１０ビットの長さを有する。このツリーにおいて外部ノード（コードワード）を含むレベルの数は、７、すなわち、第１、第３、第４、第６、第７、第９、および第１０のレベルである。
【００７７】
さらに図４を参照して、ｎは、コーディングツリーにおける外部ノードの数（およびしたがってコードにおけるコードワードの数）を示し、Ｌは、最長のコードワードの長さ、Ｋは、コーディングツリーにおける外部ノードで埋められるレベルの数を示すとする。以下の説明では、ポールバッハマンのО記法を使用する。例えば、式ｙ（ｎ）＝О（ｘ（ｎ））は、十分に大きいすべてのｎについて、｜ｙ（）｜≦Ｍ｜ｘ（ｎ）｜となるようなある定数Ｍ＞０の存在を示す。
【００７８】
コーディングプロセスをサポートするために、エントロピ符号化ユニット４６またはエントロピ復号ユニット５２などの符号器または復号器は、一般に、メモリ４５またはメモリ５１など、コンピュータメモリに２値ツリーを格納する必要がある。さらに、符号化および復号プロセスは、メモリに格納されているコーディングツリーのビットごと（すなわちノードごと）のトラバースを伴うはずである。したがって、こうした実装は、О（ｎ）ストレージコストを要し、最高О（Ｌ）ステップまでかかるはずである。それにもかかわらず、一部の特別な場合では、コーディングツリーが何らかの特定の構造を有するとき、こうしたコード構造を格納し、符号化または復号の操作を実行する、より効果的な方法があり得る。
【００７９】
例えば、図４のコーディングツリーの例に提示されているコードを考えると、コードワードは、非低減の長さであること、およびコーディングツリーの同じレベルにおけるすべてのコードワードは、隣接する値を有することを観察することができる。例えば、図４のツリーの第４レベルのコードワードは、ツリーの第３レベルのコードワードより長く、すなわち、０００１対０１１、０１０、００１、および０００である。さらに、第３レベルのコードワードは、０１１、０１０、０１１、０００の隣接する値を有する。したがって、すべてのコードを格納する代わりに、コーディングツリーのレベルごとに、最小または最大のコードワードのみを、すなわち隣接するコードワードをそこから計算することができる基本コードワードとして格納することで十分であり得る。
【００８０】
上記の観察は、例えばA. Moffat and A. Turpin, On the Implementation of Minimum-Redundancy Prefix Codes, IEEE Trans. Communications, 45 (10) (1997) 1200-1207に記載されているように、いわゆる正準形へのコードの変換に基づいて可変長のコードを復号する技術を理解する鍵である。簡単に言えば、正準のコードは、長さの非低減分布を有し、そのノードに割り当てられているインデックスに対して辞書式順序を維持する。結果として得られたコードが上記の特性を有するように、任意の所与の源を並べ替えることができることを示すのは、かなり簡単である。
【００８１】
例えば、図４のコーディングツリーに示されているコードは、以下の表１に示すように、非単調分布の源についての並べ替えられたコードを表す。具体的には、表１は、並べ替えられた正準の可変長コードの一例である。
【表１】
2010509895.tif 000001
【００８２】
上記の表１において、シンボル０は、最も高い確率を有し、１、２が続く。しかし、シンボル３は、４より低い確率を有し、４および８は、１および２と同じ確率を有する。並べ替え後、すべてのシンボルの確率は、単調に増加（非低減）しており、その結果、図４のコーディングツリーにおいて表現して示される正準のコードが得られる。A. Moffat and A. Turpin, On the Implementation of Minimum-Redundancy Prefix Codes, IEEE Trans. Communications, 45 (10) (1997) 1200-1207に記載されている、いわゆるＭｏｆｆａｔ−Ｔｕｒｐｉｎアルゴリズムは、正準のコードを復号するための技術を提供する。本開示に記載されている技術は、Ｍｏｆｆａｔ−Ｔｕｒｐｉｎアルゴリズムと比べて、改善をもたらし得る。J. B. Connell, A Huffman-Shannon-Fano Code, Proc. IEEE, July 1973, 1046-1047、およびA. Brodnik and S. Carlsson, Sublinear Decoding of Huffman Codes Almost in Place, DIMACS Workshop on Codes and Trees: Algorithmic and information Theoretic Approaches, October 1998, Rutgers University, DIMACS Center, NJに記載されているものなど、他のアルゴリズムは、Ｍｏｆｆａｔ−Ｔｕｒｐｉｎアルゴリズムに似ており、開示された技術を似たように使用することによって、改良することもできる。
【００８３】
可変長コードの復号のためのＭｏｆｆａｔ−Ｔｕｒｐｉｎアルゴリズムについて、以下で説明する。入力アルファベットＡは、ｎ個の文字を含む：Ａ＝｛α０，・・・αｎ−１｝と仮定すると、並べ替えｉ：Ａ→｛０，・・・，ｎ−１｝は、結果として得られた確率がｐ０≦ｐ１≦・・・≦ｐｎ−１を満たすように適用される。次いで、Ｌが最長のコードワードの長さである場合、インデックス１≦ｉＬごとに、コードワードｌｉの長さを割り当てる、ハフマンまたは他の最小冗長構成アルゴリズムを適用することができる。その結果、「集団数（population number）」は、ｍｌ、すなわち、長さｌのコードワードの数として生成される。
【００８４】
これらのパラメータを使用して、以下のように、ツリーにおけるレベルごとにいわゆる「基本」値が計算される。
【数１】
2010509895.tif 000002
【００８５】
これらの基本コードワード値は、コーディングツリーの各レベルにおける、辞書式に最小の正準コードワードを表す。ｂａｓｅ［ｌ］の基本コードワード値が与えられると、次に、長さｌのｍｌ個のコードワードの中のｊ＋１番目のコードワードの値を計算することができる。
【数２】
2010509895.tif 000003
【００８６】
復号器の動作では、次のように左寄せバージョンの基本コードワード値を格納することがより便利である。
【数３】
2010509895.tif 000004
【００８７】
この場合、Ｗは、ビットストリームから最後にロードされたビットを保持するために使用されるビットバッファまたはレジスタの長さである。Ｗ≧Ｌであると仮定する。
【００８８】
最後に、基本コードワード値に加えて、Ｍｏｆｆａｔ−Ｔｕｒｐｉｎ復号器は、並べ替えられた配列に、それぞれのシンボルのインデックスも格納する。これらのインデックスは、ツリーにおける埋められたレベルごとに、ｏｆｆｓｅｔ［ｌ］値として格納される。図４のツリーによって表されるコードについてのＭｏｆｆａｔ−Ｔｕｒｐｉｎアルゴリズムによって維持される完全な構造例が、以下の表２に示される。
【表２】
2010509895.tif 000005
【００８９】
表２の構造を使用したＭｏｆｆａｔ−Ｔｕｒｐｉｎ復号アルゴリズムの実装のための擬似コード例が、以下の表３に示される。
【表３】
2010509895.tif 000006
【００９０】
上記の表３から、復号プロセス全体は、現在のビットストリームバッファと左寄せの基本コードワード値とのＫ回までの（Ｗビット）比較を伴い、次いで、復号されたシンボルのインデックスの簡単な直接計算を伴うことがわかる。また、こうした構造によって使用されるｌｊ＿ｂａｓｅ［］配列は、メモリのО（Ｋ＊Ｗ）ビットを必要とすることもわかり、このことは、ＷがＷ≧ｌとなるように使用されなければならないため、コードワードが長い場合、問題となり得る。
【００９１】
表３の例において、復号器は、ビットストリームからＶとしてＷビットを受信し、コーディングツリーの連続するレベルｉについて、Ｖと基本コードワード（ｌｊ＿ｂａｓｅ［ｉ］）と比較する。Ｖ以下である基本コードワードが見つかると、コードワードのレベルの検索を終了する。次いで、復号器は、レベルｉに関連付けられている長さを決定し、ｌビットずつビットストリームをスクロールし、シンボルを復号する。特に、復号されたシンボルは、レベルｉについてのオフセット値、およびビットストリームからのコードワードＶとＷ−Ｉビットだけ右にシフトされた、レベルｉの基本コードワードとの間の差との合計によって決定される。
【００９２】
一般の設定では、Ｍｏｆｆａｔ−Ｔｕｒｐｉｎ復号に準ずるとき、逆マッピングルックアップ（inverse mapping lookup）ｉ−１：｛０，・・・，ｎ−１｝→Ａである。この場合、最後の演算は、О（ｎ）スペースを必要とするため、最もメモリを使うものとなる。しかし、多くの実際的な場合では、変換または予測子のランレングスまたは出力を伴う状況など、符号化する必要のある源は、すでに順序付けられている。したがって、Ｍｏｆｆａｔ−Ｔｕｒｐｉｎ構造におけるｌｊ＿ｂａｓｅ［］配列によって使用されるメモリは、ストレージコスト全体における主要因となる。
【００９３】
第１の一般的な態様によれば、本開示に記載されている技術は、Ｍｏｆｆａｔ−Ｔｕｒｐｉｎアルゴリズムまたは他のアルゴリズムで使用されるデータ構造のこれ以上の圧縮を可能にする改良点を提供し、可変長コードの増分的復号をサポートする。次に、改良点について、より詳しく説明する。表２を参照すると、ｌｊ＿ｂａｓｅ［ｌ］値が右から左への先行ビットを大量に有することは明らかである。したがって、基本コードワードの部分値は、基本コードワードからの固定数の先行ビットの削除を表す。ほとんどの場合、削除される先行ビットは、ゼロである。コーディングツリーがより深い層に達するにつれて、こうしたゼロの数は、単調に増加している。したがって、コーディングツリーの一番最初の層で開始し、下方に移動しながら、ビットが順序復号される場合、復号の正確さに影響を与えることなく、先行ゼロビットの一部をスキップすることができる。先行ゼロの少なくとも一部をスキップすることによって、本開示に記載されている技術は、非常に圧縮されたデータ構造、および可変長のコードの増分的復号を可能にする。
【００９４】
しかし、先行ビットが削除されると、コーディングツリーのより低いレベルにおけるいくつかの正当なコードが、削除される先行ビットの範囲まで及ぶ可能性がある。したがって、こうしたコードを失うのを避けるために、スキップインジケータの表が提供される。スキップインジケータは、コーディングツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示する。特に、スキップインジケータは、コーディングツリーの選択されたレベルに進む前に、コードワードビットストリームにおいて、固定数のビット、例えば８ビットなどをスキップするよう復号器に指示することができる。このようにして、ツリーの選択されたレベルにおける基本コードワードの部分値は、固定数のビットだけ、基本コードワードをシフトすることに基づく。シフトなしでは、ツリーの選択されたレベルにおける基本コードワードは、少なくとも部分的に削除された数の先行ビットまで及ぶことになる。
【００９５】
以下の表４は、コードワードを表し、処理するために使用されるデータ構造をさらに圧縮するために、本開示の一態様に従って先行ゼロが削除されるコーディングプロセスの実装例を示す。表４の例において、先行ゼロは、８単位で削除され、これは、従来の８ビット／バイトコンピュータにおけるビットストリームバッファ管理に便利である。先行ゼロの削除を管理するために、上述したように、インジケータ（ｓｋｉｐ＿８［ｉ］）の追加の表が提供される。したがって、表４は、一般に、表２に合致するが、先行ゼロを各コードワードから削除し、スキップインジケータ列を追加する。
【表４】
2010509895.tif 000007
【００９６】
表４の例において、値ｒ＿ｌｊ＿ｂａｓｅ（ｉ）は、各インデックス位置における基本コードワード値を表し、値ｒ＿ｌｅｖｅｌ［ｉ］は、そのインデックス位置についてのコーディングツリー内のレベル、およびそのレベルにおけるコードワードの長さを示し、値ｏｆｆｓｅｔ［ｉ］は、基本コードワード値についての、右から左への先行ゼロの数を示し、値ｓｋｉｐ＿８［ｉ］は、次の基本コードワード値について、復号器が８ビットをスキップすべきかどうかを示し、１はスキップを指定し、０はスキップなしを指定する。このスキップ操作は、そうでなければ、先行ゼロが削除されると失われることになるコードワードを復号器が識別できるようにするために、選択された間隔で、ビットバッファを定期的にリフレッシュする。例えば、左寄せのコードワードの一番右の８つの先行ゼロが削除される場合、一番右の８ビットに及ぶコードワードは、部分的に、または完全に失われることになる。したがって、スキップ指示に応答して一番左の８ビットをスキップすることは、コードワードを削除されないビットの範囲に移動させることになり、それによって、復号に使用するコードワードを保持する。
【００９７】
したがって、スキップインジケータは、表４の例において、例えば８など、コードの次のレベルについて、指定されたスキップ増分だけ復号器が前方にスキップすべきとき、信号で伝える。一例として、表２において、インデックス位置５および６（ツリーレベル９および１０）にある基本コードワード値は、それぞれ００００００００１０００００００および００００００００００００００００である。一番右の８つの先行ゼロ（左寄せ）がこれらの基本コードワード値から削除されるとき、８つの先行ゼロを削除するときに実際の基本コードワード値（００００００００１０００００００）が失われないように、復号器が前方に８ビットスキップすることが必要である。代わりに、実際の基本コードワード値（００００００００１０００００００）は、最初の８ビット（００００００００）をスキップし、次いで、一番右の８つの先行ゼロを削除することによって、異なる基本コードワード値（１０００００００）に変換される。
【００９８】
先行ゼロの削除により、変更されたｌｊ＿ｂａｓｅ［ｉ］配列の幅は、かなり小さくなる。表４のコードにおいて、一例として、変更されたｌｊ＿ｂａｓｅ［ｉ］配列の幅Ｗは、表２の場合のＷ＝１６の代わりに、Ｗ＝８である。こうした余分のスキップ表を使用して、定期的にビットバッファをリフレッシュするアルゴリズムの実装の一例が、以下の表５に示されている。表５に示されるように構成されたアルゴリズムは、非常に長いコードワードまたは非常にコンパクトな基本コードワード値（ｌｊ＿ｂａｓｅ）表をサポートするよう構成され得る。
【表５】
2010509895.tif 000008
【００９９】
表５に示されるように、復号器は、ビットストリームから最後のＷビットを取得し、これは、値Ｖ＝ｂｉｔｓｔｒｅａｍ＿ｂｕｆｆｅｒによって表されている。次いで、復号器は、ビットストリームバッファからのコードワードＶ以下である基本コードワード値ｌｊ＿ｂａｓｅ［ｉ］について、コーディングツリーのレベルｉを検索する。ツリーの現在のレベルｉが、例えば表５に示されるように、スキップレベル（ｓｋｉｐ＿Ｂ［ｉ］）に対応する場合、復号器は、復号器によって検索される次のレベルのコードワードを、Ｂ個の一番右の先行ゼロの削除によって失うのではなく、保持することができるように、例えば、いくつかの実装における８ビットなど、Ｂビットだけ右にビットストリームをスクロールする。
【０１００】
例えば、表５に示されるように、ツリーの現在のレベルにおけるコードワードについての残余長さｌ＝ｌｅｖｅｌ［ｉ］を決定すると、復号器は、長さｌだけビットストリームをスクロールする。次いで、復号器は、現在のレベルｉについてのオフセット、およびビットストリームバッファコンテンツＶと、Ｗ−ｌビットだけ右にシフトされた、現在のレベルｉの基本コードワードとの間の差の合計に基づいて、シンボルインデックスを直接計算する。
【０１０１】
復号器は、基本コードワードの部分値、スキップインジケータ、基本コードワードによって表される値、および基本コードワードの部分値の長さ（すなわち、ビット数）を指定する格納されているデータ構造を使用して、コードワードビットストリームからのコードワードを復号する。一般に、エントロピ復号ユニット５２などの復号器に関連付けられているプロセッサは、コードワードのビットストリームからのコードワード以下である基本コードワードの部分値のうちの選択された１つについて、コーディングツリーのレベルを検索する。プロセッサは、スキップインジケータに応答して、選択されたレベルのコーディングツリーに進む前に、コードワードビットストリームにおいて、いくつかのビットをスキップし、コードワード以下の基本コードワードの部分値のうちの選択された１つとコードワードとの間の差、およびコードワード以下の基本コードワードの部分値のうちの選択された１つのインデックスに基づいて、コードワードに対応する複数の値のうちの１つを計算する。プロセッサは、メモリ内に格納する、異なる装置または処理ユニットに送信する、またはユーザに提示するために、復号の結果を生成する。例えば、復号された結果を、表示装置２８を駆動して、映像または画像を提示し、かつ／または音声出力装置を駆動して、音声または言語出力を提示するために使用することができる。
【０１０２】
表５の例において、復号器は、そうでなければ、先行ゼロが削除されると失われるコードワードを保持するために、スキップ操作を介してビットストリームバッファの増分的更新を実行する。さらに、復号器がコードの各レベルで比較する基本コードワード値を、かなり短くすることができる。次に、基本コードワード値の長さの短縮の可能な量について説明する。本開示に記載されている変更されたアルゴリズムにおけるこうした量のダイナミックレンジを分析するために、２つの隣接するレベルの間の差は、以下のように考えられる。
【数４】
2010509895.tif 000009
【０１０３】
ｉが次の非空のレベルのインデックスである場合、次のようになる。
【数５】
2010509895.tif 000010
【０１０４】
ここで、注目すべき主な量は、ｍｌ＋ｉ２−ｉであり、これは、この差に影響を与える。最も簡単な場合、ｉ＝１であるとき、この差は、単に、外部ノード数に依存することが明らかであり、したがって、Ｗは、以下になるように選択することができる。
【数６】
2010509895.tif 000011
【０１０５】
これは、最も実際的な場合では、Ｌよりかなり小さい量である。この差は、かなり不均衡な分布の場合、特に大きいはずである。
【０１０６】
例えば、入力シンボルがベルヌーイ確率ｐｍ（１−ｐ）ｍ−ｋでｍビットのブロックである場合、最も埋められたレベルは、おおよそ
【数７】
2010509895.tif 000012
【０１０７】
のコードワードを含むはずであり、これは、コードワード間を区別するために、おおよそＨ（ｐ）ｍビットを使用すべきであることを意味し、ここでは、Ｈ（ｐ）は、例えばT. Cover and J. Thomas, Elements of Information Theory, Wiley, 1991に記載されているエントロピ関数である。
【０１０８】
一方、この場合の最長のコードワードは、おおよそ
【数８】
2010509895.tif 000013
【０１０９】
ビットを有し、この場合、非対称分布では、
【数９】
2010509895.tif 000014
【０１１０】
であることがよく知られており、式中、Ｈ−∞（ｐ）は、例えばW.Szpankowski, Average Case Analysis of Algorithms on Sequences (New York, John Wiley & Sons, 2001)に記載されているような、レニーエントロピの特別な場合である。ｐ≧０またはｐ≧１で、この差を任意に大きくすることができる。
【０１１１】
上記の説明に基づいて、提案された技術は、大きい、非対称のコード構造の処理に効果的であるはずであるということになる。こうした構造は、従来の／既存の技術を使用して処理することが従来難しく、多くの場合、技術者は、それらをより実用的にするために、コードの圧縮性能に影響を与える様々な簡略化を使用するという方法を採る。
【０１１２】
例えば、S. Golomb, "Run-length coding," IEEE Trans. Inform. Theory, vol. IT-12, pp. 399-401, July 1966およびR. Gallager and D. van Voorhis, "Optimal source codes for geometrically distributed integer alphabets," IEEE Trans. Inform. Theory, vol. IT-21, pp. 228-230, Mar. 1975に記載されているものなど、非常に人気のあるゴロムコードは、特に簡単な構造で可変長コードを表すが、これらは、幾何分布のクラス、およびこうした分布の加算無限のパラメータの値にのみ最適である。技術者は、主に複雑性の問題が動機となる、著しく分散する分布にさえ、それらを使用する傾向にある。こうした解決策は、こうしたコードの暗黙の性能の制約のために、準最適であり、また拡張または変更が非常に難しくなり得る。
【０１１３】
T. J. Lynch, Sequence time coding for data compression, Proc. IEEE (Lett.), 54 (1966) 1490-1491およびL. D. Davisson, Comments on Sequence time coding for data compression, Proc. IEEE (Lett.), 54 (1966) 2010-2011に記載されているようなＬｙｎｃｈ−Ｄａｖｉｓｓｏｎコードの設計に関連付けられている別の解決策は、コードを、最初の１つのみが可変長符号化を受け、残りの１つが固定数のビットを使用して拡張として送信される、２つの部分に分割することである。残念ながら、こうした分割における効率の損失があり、それは、時として、シンボルごとに１．５〜２ビットの大きさとなる。
【０１１４】
より手の込んだバージョンのコードブック分割技術が、例えばBoris Ryabko, Jaakko Astola, Karen Egiazarian, Fast Codes for Large Alphabets, Communications in Information and Systems, v.3, n. 2, pp.139-152、およびBoris Ryabko, Jorma Rissanen, Fast Adaptive Arithmetic Code for Large Alphabet Sources with Asymmetrical Distributions, IEEE Communications Letters, v. 7, no. 1, 2003,pp.33-35に記載されているように、アルファベットグループ分け（alphabet grouping）の名で開発されている。しかし、この手法も、圧縮効率において、いくらかの損失を犠牲にする。
【０１１５】
上述した技術とは異なり、本開示に記載されている技術は、コードの構造および最適性を十分保持するよう構成することができ、したがって、ディジタル映像、画像、音声、または言語データの符号化および復号においてなど、データ圧縮および符号化における広範な実用的な応用に役立つツールとなり得る。
【０１１６】
２値適応形ブロックコーディング
次に、本開示の第２の一般的な態様による、無記憶情報源によって生成される２値系列の適応形可変長コーディングの低複雑性技術の一例について、より詳しく説明する。この開示された技術は、ある系列における前のビットの非ゼロビットの数によって識別される１組のコンテキストのために構築されたユニバーサルブロックコードを実装し得る。本開示のこの第２の一般的な態様は、非常にコンパクトなデータ構造の生成に関して上述した第１の一般的な態様とは別に、またはそれと共に実施され、または提供され得る。データ構造は、テーブル、リンクリスト、２値ツリー、ラディックスツリー、フラットファイルなど、広範なデータ構造のうちの任意のものでよく、多くの形式のランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、またはその両方など、様々な異なるメモリ装置のうちの任意のものに格納することができる。データ構造は、符号器または復号器内のこうしたメモリに格納することができる。この第２の一般的な態様によれば、低複雑性の適応形符号化および復号のための技術は、R. E. Krichevsky and V. K. Trofimov, The Performance of Universal Encoding, IEEE Trans. Information Theory, 27 (1981) 199-207に記載されている推定を改良する、こうしたコードの漸近的冗長の決まったやり方に少なくとも一部分依存し得る。
【０１１７】
データ圧縮アルゴリズムは、何らかの未知の分布のビットの入力系列を復号可能なビットストリームに変換する。例えば、画像または映像コーデック、音声コーデックにおけるスペクトルの拡張可能（ビットスライスベースの）符号化、および他の用途の設計において、データ圧縮が使用される。こうした場合のほとんどは、符号化されるビットは、変換フィルタ、予測フィルタなど、様々な信号処理ツールによって生成される値から取得され、このことは、それらはすでに十分相関が取り除かれており、こうした源の無記憶情報性の前提が正当とされることを意味する。
【０１１８】
こうした２値適応形アルゴリズムのほとんどの一般的に使用されている実装は、一般的に、その複雑性を低減するために何らかの近似および簡単な方法が適用された状態の算術演算コードに基づく。こうしたアルゴリズムの２つのよく知られている例には、W. B. Pennebaker, J. L. Mitchell, G. G. Langdon, Jr., R. B. Arps, An overview of the basic principles of the Q-Coder adaptive binary arithmetic coder, IBM J. Res. Dev., 32 (6) (1988) 717に記載されており、ＪＢＩＧ画像コーディング標準に使用されるＱコーダアルゴリズム、またはD. Marpe, H. Schwartz, and T. Wiegand, Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC video compression standard, IEEE Trans. on CSVT, 13(7):620 636, July 2003に記載されており、映像圧縮のためのＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ  ＡＶＣ標準で使用されるＣＡＢＡＣアルゴリズムがある。
【０１１９】
本開示のこの第２の一般的な態様によれば、代替の実装は、いくつかの推定された密度のために設計され、ある系列における前のブロック（コンテキスト）内の非ゼロのビットの数によってインデックスが付けられたハフマンコードの配列を使用する。効率および実装の両方の観点から、こうした技術は、例えばｎ＝８・・・１６の小さめなサイズのビットのブロックを使用し、および例えば１．５ｋバイト・・・５ｋバイトの対応するメモリ量を使用することによって、所望の圧縮性能を達成することができる。
【０１２０】
この技術は、確率ｐおよびｑ＝１−ｐが対応する２値アルファベット｛０，１｝からシンボルを生成する無記憶情報源の文脈で考えることができる。ｗがこの源によって生成された長さｎの単語である場合、その確率は、
【数１０】
2010509895.tif 000015
【０１２１】
であり、式中、ｋは、この単語における１の数を示す。値ｋは、ｗの重さと呼ぶこともできる。
【０１２２】
ブロックコードΦは、長さ｜ｗ｜＝ｎの単語ｗと、２値系列（またはコードワード）Φ（ｗ）との間の単射であり、
【数１１】
2010509895.tif 000016
【０１２３】
式中、コードワードΦ（ｗ）は、例えばT. M. Cover and J. M. Thomas, Elements of Information Theory, (John Wiley & Sons, New York, 1991)に記載されているような、一意に復号可能な組を表す。
【０１２４】
一般に、源（すなわち、その確率ｐ）が既知であるとき、こうしたコードは、その平均長さ、または相対語では、その平均冗長度を最低限に抑えるようになっている。
【数１２】
2010509895.tif 000017
【０１２５】
上記の式では、Ｈ（ｐ）＝−ｐ  ｌｏｇ  ｐ−ｑ  ｌｏｇ  ｑは、源のエントロピを示す。
【０１２６】
この問題を解決するために提案されたコードおよびアルゴリズムの従来の例には、ハフマン、シャノン、シャノン−ファノ、およびギルバートムーアコード、およびその変形などがある。こうしたコードの性能は、よく研究されており、こうしたコードについての多くの有用な実用的実装技術も報告されている。
【０１２７】
源が未知であるとき、使用可能な最適なオプションは、源のクラスについて、最悪の場合の冗長を最低限に抑えるユニバーサルコードΦ＊を設計することであり、例えばB. M. Fitingof, Optimal Coding in the Case of Unknown and Changing Message Statistics, Probl. Inform. Transm., 2, (2) (1965) 3 {11 (in Russian) 1-7 (English Transl.), L. D. Davisson, Universal Noiseless Coding, IEEE Trans. Inform. Theory, 19 (6) (1973), 783-795およびR. E. Krichevsky and V. K. Trofimov, The Performance of Universal Encoding, IEEE Trans. Information Theory, 27 (1981) 199-207に記載されており、以下に示される通りである。
【数１３】
2010509895.tif 000018
【０１２８】
こうしたコードの一例は、単語の確率の以下の推定を使用して、構成することができる。
【数１４】
2010509895.tif 000019
【０１２９】
式中、Γ（ｘ）は、Γ関数、ｋは、単語ｗの重さ、およびｎは、その長さである。上記の公式は、R. E. Krichevsky and V. K. Trofimov, The Performance of Universal Encoding, IEEE Trans. Information Theory, 27 (1981) 199-207に記載されており、ｎが無限大（ｎ->∞）に近づくにつれて、真の確率への一様（ｐ）収束を確実にする。
【０１３０】
源のパラメータの正確な値がわからない状況で、過去にこの源によって生成されたシンボルの系列ｕにアクセスすることができる。こうした系列は、サンプルと呼ぶことができ、｜ｕ｜＝ｔビット長と見なすことができる。ここでのタスクは、このサンプルの異なる値によってインデックスが付けられた１組のコード
【数１５】
2010509895.tif 000020
【０１３１】
を設計することであり、以下に示されるように、その結果として得られる最悪の場合の平均冗長度を最小に抑えるようにする。
【数１６】
2010509895.tif 000021
【０１３２】
こうしたコードは、サンプルベースまたは適応形ユニバーサルブロックコードと呼ばれる。この開示では、サンプルｕが与えられると、以下の単語ｗの確率の推定を使用して、適応形ブロックコードの特定の実装を記載する。
【数１７】
2010509895.tif 000022
【０１３３】
式中、ｓは、サンプルの重さ、ｔは、その長さである。
【０１３４】
すぐ上の推定量関数（estimator function）（１）を使用したサンプルベースのコードの概念および分析は、R. E. Krichevsky in R. E. Krichevsky, Universal Data Compression and Retrieval (Kluwer, Norwell, MA, 1993)によって記載されている。適応形ブロックコードの平均冗長レートは、漸近的に
【数１８】
2010509895.tif 000023
【０１３５】
であり、式中、ｎはブロックサイズ、ｔは、サンプルのサイズである。
【０１３６】
上記の式（２）から、長さｔ＝О（ｎ）のサンプルを使用することによって、既知の源について、ブロックコードの冗長レートの順序に一致する、こうしたコードの冗長レートをО（１／ｎ）に低下させることが可能であることが明らかである。しかし、こうしたコードの十分な可能性を理解することができるように、ハフマン、シャノンなど、実際のコード構成アルゴリズムの選択によって影響を受ける項を含めて、その冗長についてのより正確な式を知る必要がある。
【０１３７】
この第２の一般的な態様によれば、本開示は、Ｋｒｉｃｈｅｖｓｋｙの定理２の以下の改良を提供する。特に、以下の定理１は、以下のように、適応形ブロックコード
【数１９】
2010509895.tif 000024
【０１３８】
についての平均冗長レートの定理を改良する。
【０１３９】
定理１：適応形ブロックコード
【数２０】
2010509895.tif 000025
【０１４０】
の平均冗長レートは、以下の漸近的挙動（ｎ，ｔ->∞）を有する。
【数２１】
2010509895.tif 000026
【０１４１】
式中、ｎはブロックサイズ、ｔはサンプルサイズ、ｐ、ｑ＝１−ｐは、入力源のシンボルの確率であり、
【数２２】
2010509895.tif 000027
【０１４２】
は、上記の式（１）で推定された分布に対するコード
【数２３】
2010509895.tif 000028
【０１４３】
の平均冗長度である。
【数２４】
2010509895.tif 000029
【０１４４】
の正確な挙動は、アルゴリズム固有である。しかし、従来のハフマンおよびシャノンのコードを含む大きいクラスの最小冗長技術では、この項は、大きさにおいて以下のような制限があり、
【数２５】
2010509895.tif 000030
【０１４５】
振動挙動を示し、これは、パラメータｐの値によって、何らかの定数に収束してもしなくてもよい。また、ｔおよびｎの短い値の場合、こうしたコードの冗長は、次の以下の項によって影響を受ける可能性がある。
【数２６】
2010509895.tif 000031
【０１４６】
これは、源ｐのパラメータの関数である。図５は、漸近的挙動を有する適応形ブロックコードの冗長レートを示すグラフであり、この量を描く。短いブロック／サンプルの場合、こうしたコードの性能は、源の非対称性に影響を受けやすい。この定理の証明は、例えば、Asymptotic average redundancy of adaptive block codes, Y.A. Reznik, W. Szpankowski, Proceedings of IEEE International Symposium on Information Theory (ISIT), 2003で見つけることができる。
【０１４７】
次に、上述したコードを実装するための効率的なアルゴリズムの例について説明する。無記憶情報モデルにおいて、単語ｗの確率（またはその推定）は、そのビットの実際のパターンではなく、その重さｋのみに依存する。したがって、すべての可能なｎビットの単語の組を考えると、その組を同じ重さ（ｋ＝０，・・・ｎ）および同じ確率の単語を含むｎ＋１のグループに分けることができる。
【数２７】
2010509895.tif 000032
【０１４８】
こうしたグループのサイズは、以下の通りである。
【数２８】
2010509895.tif 000033
【０１４９】
さらに便宜上、各グループＷｎ，ｋは、辞書式順序に単語を格納すると仮定する。値Ｉｎ，ｋ（ｗ）は、グループＷｎ，ｋにおける単語ｗのインデックス（位置）を示す。以下の表６は、ベルヌーイ確率ｐｋｑｎ−ｋ，ｐ＝０．９で４ビットのブロックのために構成されたコードの一例である。
【表６】
2010509895.tif 000034
【０１５０】
表６におけるコード例は、本開示のいくつかの態様による、グループＷｎ，ｋにおける単語とそのコードワードとの間の提案されたマッピングの構造を記述するために使用される。このコードは、同じレベルにあるコードワードが、それらが表す入力ブロックと同じ辞書式順序を有することを確実にするために、追加のステップがとられた、ハフマンのアルゴリズムの変更を使用して構成されている。圧縮効率のどんなロスもなく、こうした並べ替えが可能であることは、よく知られている。この並べ替えの概念を使用した以前のアルゴリズムの例には、ハフマン−シャノン−ファノコード、およびＭｏｆｆａｔおよびＴｕｒｐｉｎによって述べられた正準のコードなどがある。
【０１５１】
図６は、表６のブロックコード例の構造を示すコーディングツリーを示す図である。予想されるように、各グループＷｎ，ｋは、同じ長さのコードワードを含む多くとも２つのサブグループから成る。一般に、図６のコーディングツリー、および表６のブロックコードによって表されるコード構造は、コードワードのグループ、およびそのグループのそれぞれの中のコードワードの第１および第２のサブグループを定義する。各グループは、同じ重さを有する値を表すコードワードを含む。第１のサブグループは、第１の長さを有するコードワードを含み、第２のサブグループは、第１の長さとは異なる第２の長さを有するコードワードを含む。各グループにおけるコードワードは、直接計算による符号化および復号を容易にするために、コードワードによって表される値に対して、辞書式に順序付けられる。
【０１５２】
グループの一例は、図６の参照番号６６によって示される。第１および第２のサブグループの例は、それぞれ図６の参照番号６８Ａ、６８Ｂによって示される。類似のグループおよびサブグループは、コーディングツリー内に重さごとに提供される。グループは、同じ重さｋを有するブロックを含む。サブグループは、コーディングツリーにおける同じ重さおよび同じレベルを有するブロックを含む。これは、グループＷｎ，ｋにおけるすべての単語が、同じ確率、およびいわゆるハフマンコードの兄弟の性質を有するという事実から得られる。また、この観察は、シャノンコード、汎用型シャノンコード、および場合によっては他のアルゴリズムにも当てはまる。上述したように、グループＷｎ，ｋは、同じ長さのコードワードを含む多くとも２つのサブグループを含み、次のように表すことができる。
【数２９】
2010509895.tif 000035
【０１５３】
式中、ｌは、グループＷｎ，ｋからのブロックに割り当てることができる最も短いコード長である。さらに、グループＷｎ，ｋ内の単語は、辞書式順序に従うため、Ｗｎ，ｋ，ｌとＷｎ，ｋ，ｌ＋１との間の分割は、単に次のようになる。
【数３０】
2010509895.tif 000036
【０１５４】
式中、ｎｋは、より短いコードワードを含むサブグループのサイズを示す。したがって、第１のサブグループが、長さ３の３つのコードワードを有し、同じグループ内の第２のサブグループが、長さ４の１つのコードワードを有する場合、ｎｋ（より短いコードワードを含むサブグループ、すなわち第１のサブグループのサイズ）は、３に等しい。この例は、図６のコーディングツリーのレベル３および４に関連付けられているグループ内のサブグループに対応し、サブグループ６８Ａは、それぞれ長さ３のコードワード００１、０１０、および０１１を有し、サブグループ６８Ｂは、長さ４のコードワード０００１を有する。
【０１５５】
各サブグループ内の辞書式に最小のコードワードは、例えば、本開示の第１の態様に関して上述したように、基本コードワードと呼ぶことができ、以下のように表すことができる。
【数３１】
2010509895.tif 000037
【０１５６】
式中、ｗｉは、グループＷｎ，ｋにおけるｉ番目のブロックである。上述したように、両方のサブグループ内の残りのコードワードを、以下のように計算することができることに留意されたい。
【数３２】
2010509895.tif 000038
【０１５７】
一例として、例えば図６のコーディングツリーのレベル３および４の例と同様に、長さ３の３つのコードワードを含む第１のサブグループ６８Ａ、および長さ４の１つのコードワードを含む第２のサブグループ６８Ｂがあると仮定する。この場合、所与のブロックの位置がｉ＝２である場合、ｉ＜ｎｋ（ｎｋは３に等しい）であり、結果として得られたコードワードは、該当する基本コードワード＋ｉである。この例では、サブグループの基本コードワードは、００１であり、結果として得られたコードワードは、００１＋２＝０１１である。図６のコーディングツリーのレベル３および４について、該当するコードワードの位置がｉ≧ｎｋであった場合、コードワードは、第２のグループ内にあることになり、００００＋４−３＝０００１に等しい、００００＋ｉ−ｎｋの基本コードワードに等しいことになる。
【０１５８】
基本コードワードは、非空のサブグループによって定義されるだけであり、ｎビットブロックのために構成されたツリーにおけるこうしたサブグループＳの数は、
【数３３】
2010509895.tif 000039
【０１５９】
以内である。さらに、複数のサブグループは、同じレベルに存在する可能性があり、こうした一緒に配列されているサブグループの数は、ｎ＋１を超えることはできない。例えば、図６におけるツリーの第１０レベルにおいて、コードワード１１１０および１１１１に対応する２つのサブグループがある。しかし、これらのサブグループは、同じグループに属さない。これは、レベルごとに一意の基本コードワードを割り当てるが、次いでこうしたコードを処理するためにО（ｎ２ｎ）の大きい並べ替え表を必要とする他のアルゴリズムとのかなりの差である。この場合、構造全体は、О（ｎ２）ビットの大きさである。
【０１６０】
一般に、このコード構造は、グループＷおよびサブグループＳを定義する。各グループは、同じ重さを有する値を表すコードワードを含む。各グループにおけるコードワードは、コードワードによって表される値に対して辞書式に順序付けられる。さらに、各グループにおける第１のサブグループは、第１の長さを有するコードワードを含み、第２のサブグループは、第１の長さとは異なる第２の長さを有するコードワードを含む。コード構造は、可変長のコーディングを実行するために、符号器によってアクセスすることができるデータ構造によって表すことができる。本開示は、可変長の符号化または復号におけるこうしたコード構造の使用、およびこうしたコード構造を定義するデータ構造を備えるコンピュータ可読媒体を企図する。
【０１６１】
上記の説明を受けて、次に、ブロックコードの直接計算のための簡単なアルゴリズムについて説明する。パラメータ
【数３４】
2010509895.tif 000040
【０１６２】
が使用可能であり、レベルｌおよび基本コードワードＢｎ，ｋ，ｌを非空のサブグループごとに取得することができると仮定する。次いで、ブロックｗを符号化するプロセスは、実質的に以下のステップの組によって達成することができる。
【０１６３】
１．ブロックｗが与えられると、その重さｋおよびインデックスＩｎ，ｋ（ｗ）を取得する。
【０１６４】
２．Ｉｎ，ｋ（ｗ）＜ｎｋである場合、第１のサブグループＷｎ，ｋ，ｌを選択し、そうでない場合、第２のサブグループＷｎ，ｋ，ｌ＋１を選択する。
【０１６５】
３．次いで、選択されたサブグループ（Ｗｎ，ｋ，ｌまたはＷｎ，ｋ，ｌ＋１）についての基本コードワード（Ｂｎ，ｋ，ｌまたはＢｎ，ｋ，ｌ＋１）を取り出し、以下の式に従って、該当するコードを計算する。
【数３５】
2010509895.tif 000041
【０１６６】
上記の式によれば、選択されたサブグループ（Ｗｎ，ｋ，ｌまたはＷｎ，ｋ，ｌ＋１）内のブロックｗの位置ｉ＝Ｉｎ，ｋ（ｗ）が、サブグループ内のブロックの数ｎｋ未満である場合、コードワードは、Ｂｎ，ｋ，ｌ＋ｉである。あるいは、選択されたサブグループ（Ｗｎ，ｋ，ｌまたはＷｎ，ｋ，ｌ＋１）内のブロックｗの位置ｉがサブグループ内のブロックの数ｎｋ以上である場合、コードワードは、Ｂｎ，ｋ，ｌ＋１＋ｉ−ｎｋである。
【０１６７】
上述したように、一例として、図６のコーディングツリーのレベル３および４の場合、所与のブロックコードの位置がｉ＝２＜ｎｋであるとき、上記のプロセスは、０１１のコードワードをもたらし、所与のブロックコードの位置がｉ＝３≧ｎｋであるとき、０００１のコードワードをもたらす。この例では、ｎｋは３、すなわち、重さｋ＝１の第１のサブグループ６８Ａにおけるコードワードの数である。位置ｉの順序は、基本コードワードで開始して、例えば、図６の例における重さｋ＝１の場合、０から３など、辞書式に進む。特に、すべて第１のサブグループ６８Ａ（ｉ＜ｎｋ）内にある位置０は基本コードワード００１に対応し、位置１はコードワード０１０に対応し、位置２はコードワード０１１に対応し、位置３は、サブグループ６８Ｂ（ｉ≧ｎｋ）内のコードワード０００１に対応する。
【０１６８】
このプロセスは、同じレベルにあるコードワードが、それらが表す入力ブロックと同じ辞書式順序を有するように、並べ替えられることを確実にすることによって、容易に達成することができる。例えば、上述したコードワードは、入力ブロック０００１、００１０、０１００、および１０００の辞書式順序に従う。次いで、各サブグループにおける辞書式に最小のコードワード、例えば、サブグループ６８Ａにおける００１、またはサブグループ６８Ｂにおける０００１は、上述したコードワードの計算の目的で、基本コードワードとして使用することができる。上述したようなブロックコードの直接構成のプロセスの実装例を表すＣ言語プログラムコードを、以下の表７に示す。
【表７】
2010509895.tif 000042
【０１６９】
上記のＣ言語コードにおいて、値ｋは、ブロックｗの重さを示し、値ｉは、重さｋのグループ内のブロックの位置（Ｉｎ，ｋ（ｗ）を示し、ｎｋ［ｋ］は、重さｋのグループの第１のサブグループ内のコードワードの数を示す。ｉがｎｋ［ｋ］以上である場合、ｉは、インデックスを調整するために減分され、サブグループは、該当する重さｋの第２のサブグループ（１）に設定される。この第２のサブグループは、ｊ＝ｓｇ［ｋ］［ｌ］によって識別される。ｉがｎｋ［ｋ］）未満である場合、ｉは、減分されず、サブグループは、該当する重さｋの第１のサブグループ（０）に設定される。この第１のサブグループは、ｊ＝ｓｇ［ｋ］［０］によって識別される。
【０１７０】
次いで、コードワードは、該当するサブグループｊ（ｂａｓｅ［ｊ］）の基本コードワードと、ｉの値の合計として生成される。図６の例について、ｉの値が２である場合、コードは、サブグループ６８Ａの基本コードワード００１と、ｉの値（２）との合計となり、これは、００１＋０１０＝０１１に等しい。上記の式（１３）を参照すると、サブグループに応じて、基本コードワードは、Ｂｎ，ｋ，ｌまたはＢｎ，ｋ，ｌ＋１のいずれかであり、ｉの値は、ｉまたはｉ−ｎｋ［ｋ］のいずれかである。したがって、上記のコードは、一般に、式（１３）によって提供される結果に対応する。コードワード（ｃｏｄｅ）を計算すると、コードワードの長さ（ｌｅｎ）は、ｌｅｎ［ｊ］と指定され、これは、適当なサブグループのコード長であり、この場合、第２のサブグループは、第１のサブグループより１大きいコード長を有する。次いで、符号化プロセスは、ｃｏｄｅおよびｌｅｎの値をビットストリームｂｓに書き込む、演算ｐｕｔ＿ｂｉｔｓ（ｃｏｄｅ，ｌｅｎ，ｂｓ）を介してコードをビットストリームに書き込む。ビットストリームは、別の装置による復号のために送信される。このプロセスは、次のコードワードの計算のために、重さｋを戻す。
【０１７１】
上記で概説した符号化プロセスは、符号化すべき値の重さに基づいて、グループのうちの１つを選択することと、選択されたグループの第１のサブグループ内のコードワードの数に対する符号化すべき値の辞書式位置に基づいて、サブグループのうちの１つを選択することと、選択されたサブグループの基本コードワード、および符号化すべき値の辞書式位置に基づいて、選択されたサブグループ内のコードワードのうちの１つを選択することと、選択されたコードワードにより、符号化すべき値を符号化することとを伴い得る。サブグループのそれぞれの基本コードワード、グループのそれぞれの中のコードワードの位置、第１のサブグループのそれぞれの中のコードワードの数、およびサブグループのそれぞれの中のコードワードの長さは、可変長のコーディングをサポートするために、符号器によってアクセスすることができるデータ構造に格納され得る。
【０１７２】
メモリの見地から、表７に示されるプロセスは、Ｓ個の基本コードワード（長さО（ｎ）ビット）、ｎ＋１値のｎｋ（長さО（ｎ）ビット）、Ｓ個のコード長（長さО（ｌｏｇ  ｎ）ビット）、および２（ｎ＋１）サブグループインデックス（長さО（ｌｏｇ  ｎ）ビット）のみを必要とする。追加のメモリ低減は、本開示の他の場所に記載されているように、基本コードワードの増分的値を格納することによって可能である。Ｓ＝О（ｎ）と仮定すると、データ構造全体は、О（ｎ２）ビットのみを必要とする。表７に示されている特定の実装において、例えば、ｎ−２０およびＳ＝３２であると仮定すると、このデータ構造のサイズは、２４４バイトになる。これは、このコードをダイレクトテーブル（direct table）の形で提示するために必要となる２２０の単語よりはるかに少ない。例えば、ｎ≦１２・・・１６など、適度に短いブロックの場合、重さおよびインデックス（表７のプロセスにおける関数ｗｅｉｇｈｔ（．）およびｉｎｄｅｘ（．，．））の計算は、せいぜい単一回のルックアップとすることができる。この場合、符号化プロセス全体は、多くとも１回の比較、２回の加算、および４回のルックアップを必要とし得る。
【０１７３】
より大きいブロックの場合、以下のよく知られている組み合わせ公式を使用することができる。
【数３６】
2010509895.tif 000043
【０１７４】
式中、ｗｊは、単語ｗの個々のビットを表し、すべてのｋ＞ｎの場合、
【数３７】
2010509895.tif 000044
【０１７５】
であると仮定する。この公式を実装するために、すべての２項係数を、パスカルの三角形においてレベルｎまで事前計算するか、以下の簡単な恒等式を使用して、それらを動的に計算することができる。
【数３８】
2010509895.tif 000045
【０１７６】
事前に計算された係数に基づく実装は、
【数３９】
2010509895.tif 000046
【０１７７】
個の単語（О（ｎ３）ビット）のメモリおよびО（ｎ）回の加算を必要とする。係数の動的計算は、О（ｎ）回の加算、乗算、除算を必要とする。しかし、プロセス全体は、ほんの少しのレジスタしか必要なく、スタティックメモリは必要としない場合がある。インデックス計算の複雑性の追加の説明は、T. Tjalkens, Implementation cost of the Huffman-Shannon-Fano code, in Proc. Data Compression Conference (DCC'05) (Snowbird, Utah, March 29-31, 2005) 123-132で見つけることができる。
【０１７８】
次に、上記の技術を実装する復号器の設計の一例について説明する。上述した符号化プロセスのように、復号プロセスは、パラメータｎｋ、基本コードワード、および関連の長さを使用し得る。便宜上、以下の説明は、左寄せのバージョンの基本コードワード値に依存する。
【数４０】
2010509895.tif 000047
【０１７９】
式中、Ｔは、機械語の長さ（Ｔ＞ｍａｘ  ｌ）である。次いで、復号プロセス例は、以下のように説明することができる。
【０１８０】
１．ビットストリーム内で、
【数４１】
2010509895.tif 000048
【０１８１】
がＴビット未満である一番上のサブグループを見つける。
【０１８２】
２．ブロックのインデックスＩｎ，ｋ（ｗ）を、上記の式（１３）に基づいて復号する。
【０１８３】
３．その重さｋおよびインデックスを使用して再構成されたブロックを生成する。  
上述した復号プロセスの実装例を表すＣ言語コードを、以下の表８に示す。
【表８】
2010509895.tif 000049
【０１８４】
表８に示されている復号プロセス例は、左寄せの基本コードワードｌｊ＿ｂａｓｅ［Ｓ］を使用する。動作中、復号プロセスは、ビットストリームバッファのコンテンツｖａｌを受信し、ビットストリームバッファのコンテンツｖａｌに対応する基本コードワードを有するコーディングツリー内のサブグループを識別する。例えば、プロセスは、基本コードワードが受信したコードワードｖａｌより大きい限り、引き続き、コーディングツリーにおける異なるレベルのサブグループを通過して下方に移動する。しかし、ｖａｌ以下の基本コードワードを含むサブグループに到達すると、そのサブグループが選択される。適切なサブグループを見つけると、プロセスは、サブグループのコード長を決定し、ビットストリームをその長さだけスクロールして、復号されたビットをスキップし、コードワードを隔離する。復号プロセスは、基本コードワード値をビットストリームバッファコンテンツから取り去ることによって、サブグループ内のコードワードのインデックス位置ｉを決定する。
【０１８５】
例えば、コードワードが０１１であり、基本コードワードが０１０である場合、この差の結果は２であり、これは、コードワードが、サブグループ内の可能な位置０、１、および２の中の位置２にあることを示す。３２ビット幅のレジスタの例では、この差は、３２マイナスコード長ｌｅｎだけ、右にシフトされ得る。次いで、復号プロセスは、該当する重さｋ、およびサブグループインデックスｊを取り出し、インデックスｉを再構成する。次いで、プロセスは、選択されたグループ内のｉ番目の単語を、コードワードとして生成し、重さｋを戻す。式ｋｊ［ｊ］．ｋは、サブグループの重さを戻し、式ｋｊ［ｊ］．ｊは、サブグループのインデックスを、所与の重さについての第１のサブグループ（０）または第２のサブグループ（１）を示す０または１のいずれかとして戻す。ｊ＝１となるように第２のサブグループが選択されると、インデックスｉは、ｎｋ［ｋ］の値を追加することによって調整される。そうでなく、第１のサブグループが選択された場合、インデックスｉは、調整されない。関数ｗｏｒｄ（）は、例えば上記の式（１３）を使用して、復号された単語値として、ｎ，ｋグループにおけるｉ番目の単語を戻す。
【０１８６】
一般に、符号器は、コード構造がグループおよびサブグループを定義する、上述したコード構造に従って可変長コーディングを実行することができる。この場合もまた、各グループは、同じ重さを有する値を表すコードワードを含む。各グループにおけるコードワードは、コードワードによって表される値に対して辞書式に順序付けられる。さらに、各グループにおける第１のサブグループは、第１の長さを有するコードワードを含み、第２のサブグループは、第１の長さとは異なる第２の長さを有するコードワードを含む。
【０１８７】
コード構造は、可変長のコーディングを実行するために、符号器または復号器によってアクセスすることができるデータ構造によって表すことができる。上述したように、データ構造は、サブグループのそれぞれの基本コードワード、グループのそれぞれの中のコードワードの位置、第１のサブグループのそれぞれの中のコードワードの数、およびサブグループのそれぞれの中のコードワードの長さを指定することができる。このデータ構造は、映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの１つに関連付けられているメモリに格納することができ、コーディング操作をサポートするために必要に応じてアクセスされる。
【０１８８】
上述したように、エントロピ復号ユニット５２などの復号器は、コーディングツリーのトップダウン（上から下への）検索で、復号すべきコードワード以下の基本コードワードを含むサブグループのうちの第１のものを選択することを選択することができる。次いで、復号器は、復号すべきコードワードと、選択されたサブグループの基本コードワードとの間の差に基づいて、選択されたサブグループ内の復号すべきコードワードの位置、すなわちサブグループインデックスを決定することができる。復号器は、選択されたサブグループが存在するグループに基づいて、復号すべきコードワードによって表される値の重さを決定し、選択されたサブグループがそのグループの第１のサブグループであるか、第２のサブグループであるかに基づいて、選択されたサブグループが存在するグループ内のコードワードの位置、すなわちグループインデックスを決定する。次いで、復号器は、復号すべき符号器によって表される値の重さ、および選択されたサブグループが存在するグループ内のコードワードの位置に基づいて、値のうちの１つを選択し、選択された値により復号すべきコードワードを復号する。値は、例えば、表６のブロックコードのうちの１つに対応し得る。
【０１８９】
本開示のこの態様に従って企図されるコード構造およびデータ構造は、計算オーバーヘッド、メモリ使用率、および処理時間に関して、効率をサポートすることができる。表８の復号プロセス例は、例えば、サブグループを見つけるための比較およびルックアップを１回からＳ回、加算を１回または２回、シフト操作を１回、追加の比較を１回、および追加のルックアップを３回必要とする。サブグループを見つけるのに必要なステップの数は、基本コードワードを２値検索ツリーに入れることによって、または余分のルックアップテーブルを使用することによって、さらに低減することができるが、いずれの場合も、余分のメモリを犠牲にする。
【０１９０】
復号プロセスの最後に、上述したように、コードワードの重さｋとインデックスＩｎ，ｋ（ｗ）が、（例えば、表８の関数ｗｏｒｄ（）によって）実際の値に変換される。ブロックが適度に短い場合、これは、簡単なルックアップによって達成することができる。そうでない場合、単語は、例えば、D. A. Huffman, A method for the construction of minimum-redundancy codes. Proc. IRE, 40 (Sept. 1952) 1098-1101に記載されている計数公式（enumeration formula）を使用することによって合成することができる。複雑性の観点から、このプロセスは、符号器におけるインデックス計算に似ている。
【０１９１】
上述した符号化および復号プロセスを使用して、データのブロックの適応形符号化および復号のシステムを定義することができる。この例について、以下の条件で、入力ブロックを符号化することができると仮定する。
【０１９２】
１．コンテキストがない、すなわち、ユニバーサルコードが実装される
２．コンテキストは、以前観察された１つのブロックによって与えられる。すなわちｔ＝ｎ
３．コンテキストは、以前観察された２つのブロックによって与えられる。すなわちｔ＝２ｎ。
【０１９３】
実際のブロックをコンテキストとして使用する代わりに、その重さを使用することで十分である（源の無記憶情報の性質のため）。これは、ｔビットサンプルの場合、その重さｓによってインデックスを付けられたｔ＋１のコード構造の配列が提供されることを意味する。スペースをさらに節約するために、ｓおよびｋに対するＫＴ分布の対称性を使用することができる。特にプロセスは、ｓ＞ｔ／２であるときは毎回、ｓ＝ｔ−ｓを交換し、ビットを反転する（すなわち、強制的にｋ＝ｎ−ｋにする）ことができる。このように、ｔ／２＋１のテーブルを定義するだけでよい。この例では、適応形コードによって必要なメモリの全体量は、１＋ｎ／２＋１＋ｎ＋１＝１．５ｎ＋３のテーブルになる。ブロックサイズｎ＝８・・・２０の場合の特定のメモリ推定量を、以下の表９に示す。
【表９】
2010509895.tif 000050
【０１９４】
上記の表では、ＫＴ推定された密度を使用し、また本開示に従って変更されたハフマンコード構成アルゴリズムを使用して生成された。以下に示されるのは、本開示に記載されているような、適応形ブロックコーダを実装するプログラムのためのコンピュータコードの一例である。
【表１０−１】
2010509895.tif 000051
【表１０−２】
2010509895.tif 000052
【表１０−３】
2010509895.tif 000053
【表１０−４】
2010509895.tif 000054
【表１０−５】
2010509895.tif 000055
【表１０−６】
2010509895.tif 000056
【表１０−７】
2010509895.tif 000057
【表１０−８】
2010509895.tif 000058
【０１９５】
次に、ブロックサイズｎ＝１６での本明細書に記載された適応形コーディングプロセスの性能の評価の実験結果を説明すると共に、よく知られている他のアルゴリズムと比較する。特に、適用形コーディングプロセスは、W. B. Pennebaker, J. L. Mitchell, G. G. Langdon, Jr., R. B. Arps, An overview of the basic principles of the Q-Coder adaptive binary arithmetic coder, IBM J. Res. Dev., 32 (6) (1988) 717に記載されており、ＪＢＩＧ画像コーディング標準に使用されるＱコーダアルゴリズム、およびD. Marpe, H. Schwartz, and T. Wiegand, Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC video compression standard, IEEE Trans. on CSVT, 13(7):620-636, July 2003に記載されており、映像圧縮のＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ  ＡＶＣ標準で使用されるＣＡＢＡＣアルゴリズムと比較される。
【０１９６】
テストを行うために、コンピュータで生成されたビットの系列は、確率ｐで２値ベルヌーイ源からの出力をシミュレートするために使用された。１６から１０２４に及ぶこうした系列の長さ、および特定の長さごとに、こうした系列のＱ＝１００００００のサンプルが生成された。相対冗長レートが次のように計算された。
【数４２】
2010509895.tif 000059
【０１９７】
本開示に記載されている適応形コーディングプロセスでは、コンテキストの以下の構造が使用された。
【０１９８】
１．最初の１６ビットブロックは、コンテキストなしに符号化される（ユニバーサルコード）
２．第２のブロックは、そのコンテキストとして第１のものを使用して符号化される（ｔ＝１６のコード）
３．３番目およびそれ以降のすべてのブロックは、コンテキストとして系列内の前のブロック２つを使用して符号化される（ｔ＝３２のサンプルベースのコード）。
【０１９９】
図７Ａおよび７Ｂは、異なる値ｐでの適応形ブロックコードの冗長レートとＱコーダおよびＣＡＢＡＣ技術との比較を示すグラフである。図７Ａは、ｐ＝０．１の場合の結果を示し、図７Ｂは、ｐ＝０．５の場合の結果を示す。図８は、適応形ブロックコード、Ｑコーダ、およびＣＡＢＡＣ技術の場合の源データの非対称性に対する冗長の感度を示すグラフである。実験的研究の結果が、図７Ａ、図７Ｂ、および図８に示されている。図７Ａおよび図７Ｂは、ｘ軸上の符号化されたビットの数対ｙ軸上の（平均コード長−エントロピ）／エントロピを描く。
【０２００】
図８は、ｘ軸上の確率対ｙ軸上の（平均コード長−エントロピ）／エントロピを描く。図７Ａ、図７Ｂ、および図８の各グラフは、Ｑコーダ、ＣＡＢＡＣ、および適応形コーディングのグラフを対応するラベルによって示す。実験結果から、本開示に記載されている適応形コードは、ＱコーダおよびＣＡＢＡＣアルゴリズムの両方よりはるかに速い収束率を有し得ることがわかる。適応形コーディングプロセスは、より短い系列については、ＱコーダおよびＣＡＢＡＣアルゴリズムより優れており、符号化されたビットの合計長さが１０２４に近づくと、ＱコーダおよびＣＡＢＡＣアルゴリズムに匹敵するようになる。さらに図８に示されているように、１６０の符号化されたビット（または次いで１６ビットブロック）の後、適応形コーディングプロセスは、ＱコーダおよびＣＡＢＡＣアルゴリズムに比べて、より低い冗長を提供することができる。この挙動は、上述した定理１に一致する。
【０２０１】
図９は、本開示の第１の一般の一態様による、単調分布についてのメモリ効率の良い可変長のコーディングを構成するための方法を示すフロー図である。この方法は、図２および図３に示されるように、エントロピ符号化ユニット４６およびエントロピ復号ユニット５２によって使用するコードを構成するために、符号器、復号器、または他の装置に関連付けられているプロセッサによって実装することができ、それだけには限定されないが、映像、画像、言語、および音声データを含む、様々なデータのうちの任意のものの圧縮およびコーディングをサポートし得る。こうしたプロセッサは、例えば、可変長のコーディングに有用なコード構造属性を定義するデータ構造を準備するために、符号器または復号器内、または汎用コンピューティングシステム内に設けることができる。
【０２０２】
図９に示されるように、プロセッサは、コーディングされた入力シンボルのアルファベットを取得する（７０）。シンボルは、所与のデータセットまたは系列内のシンボルの存在または使用の確率または頻度を示すそれぞれの重さを有する。該当するシンボルの重さを決定すると（７２）、プロセスは、その重さに基づいて、インデックスをシンボルに割り当て（７４）、インデックスおよびシンボルの辞書式順序に基づいて、シンボルにコードを割り当てる（７６）。したがって、同じ重さを有するシンボルは、本開示に記載されているコーディング技術を容易にするために、辞書式に順序付けられ得る。
【０２０３】
コードは、２値コーディングツリーによって表されるコード構造に従ってまとめることができる。プロセッサは、コーディングツリー内のレベルごとに、基本コードワードを識別する（７８）。基本コードワードは、そのツリーの所与のレベルにおける最小のコードワードであり、そのツリーのそのレベルにおけるシンボルの中の辞書式に最も早いシンボルに対応する。コンパクトなデータ構造を提供するために、プロセッサは、部分的な基本コードワードを生成するために、基本コードワードから固定数Ｂの先行ビットを削除する（８０）。基本コードワードは、左寄せのコードワードとして構築することができ、先行ビットは、左寄せのコードワードにおける右から左に進むＭ個の先行ビットであり得る。一部の実装では、削除される先行ビットの数は、８とすることができる。他の実装では、削除される先行ビットの数は、８未満、または８を上回ってもよい。
【０２０４】
コーディングツリーの多くのレベルについて、Ｍ個の先行ビットは、ゼロである。しかし、いくつかのレベルでは、先行ビットは、そのツリーにおけるそれぞれのレベルについてのすべてまたは一部の基本コードを形成し得る。これらの選択されたレベルで、プロセッサは、スキップインジケータを生成する（８２）。スキップインジケータは、先行するＢビットの削除時に、基本コードが失われないように、復号器がビットストリームをＢビットだけスクロールする旨の命令を提供する。このプロセスは、データ構造において、結果として得られた部分的な基本コードワード、コーディングツリーのそれぞれのレベルにおけるコードワードに関連付けられている長さ、コーディングツリーにおけるコードワードに関連付けられているそれぞれのシンボルのインデックスを示すオフセット、および先行するＢビット内に少なくとも部分的に含まれる基本コードワードの損失を防ぐために、ビットストリームがＢビットだけスクロールされなければならないときを示す１つまたは複数のスキップインジケータを格納することができる（８４）。データ構造は、構成された可変コードでエントロピ符号化および復号を行うのを助けるために、エントロピ符号化ユニット４６およびエントロピ復号ユニット５２に提供され得る。データ構造は、１つまたは複数の１次元または多次元のルックアップテーブル、リンクリスト、２値ツリー、ラディックスツリー、フラットファイルなどを含めて、様々な形をとり得る。
【０２０５】
図１０は、本開示の第１の一般的な態様による、図９の方法に従って構成された可変長のコードを使用してシンボルを符号化するための方法を示すフロー図である。図１０に示すように、エントロピ符号化ユニット４６は、シンボルを受信し（８６）、シンボルインデックスを決定し（８７）、コーディングツリーにおける対応するレベルを識別するために、シンボルのインデックスとオフセットテーブルとを比較する。特に、エントロピ符号化ユニット４６は、シンボルのインデックスがツリーの所与のレベルのオフセット以上であるかどうかを決定する（８８）。シンボルインデックスは、重さの順序にランク付けされた、他のシンボルの中のシンボルの順序を表し、同じ重さのシンボルは、シンボルのアルファベットに従って辞書式に順序付けられている。オフセットは、ツリーの該当するレベルの１つまたは複数のコードの長さと、最大コード長との間の差である。図４のツリーでは、例えば最大コード長が１６であり、ツリーのレベル３のコード長が３である場合、基本コードワードの該当するオフセットは、１２である。
【０２０６】
シンボルインデックスがツリーの現在のレベルのオフセットを超えない場合、エントロピ符号化ユニット４６は、トップダウン検索で、コーディングツリーの次のレベルへと下方に進み（９０）、シンボルインデックスとその次のレベルのオフセットとの比較を繰り返す（８８）。シンボルインデックスがコーディングツリーの特定のレベルのオフセット以上であることをエントロピ符号化ユニット４６が決定すると（８８）、エントロピコーディングユニットは、シンボルの適切なコードワードを計算する。特に、エントロピコーディングユニット４６は、シンボルのコードワードを、ツリーの現在のレベルの基本コードワードと、シンボルインデックスとそのレベルのオフセットとの差との合計に設定する（９２）。
【０２０７】
図４のツリーの例を使用して、シンボルインデックスが１４である場合、１４はそのレベルの基本コードワードに割り当てられた１２のオフセットより大きいため、エントロピコーディングユニット４６は、シンボルのコードがツリーのレベル３に存在することを決定する。次いで、エントロピ符号化ユニット４６は、基本コードワード（００１）＋（シンボルインデックス（１４）−オフセット（１２））としてコードワードを計算し、すなわち００１＋２＝００１＋０１０＝０１１となる。受信されたシンボルのコードを設定する（９２）と、エントロピ符号化ユニット４６は、例えば、エントロピ復号ユニット５２を備える受信装置に送信するために、コードワードをビットストリームに出力する（９４）。エントロピコーディングユニット４６は、次いで、該当するデータ系列における次のシンボルについて、プロセスを繰り返す。
【０２０８】
図１１は、本開示の第１の一般的な態様による、図９の方法に従って構成された可変長のコードを復号するための方法を示すブロック図である。図１１に示される方法は、表５に示されるものと同じ、または似たアルゴリズムを使用して実行され得る。実装例では、図１０を参照して説明したように、コードは、エントロピ復号ユニット５２によって受信され、エントロピコーディングユニット４６によって符号化される。図１１に示した方法は、本開示に記載されるような、メモリ効率のより復号技術を使用することができ、こうしたコードを構成することができるコンパクトなデータ構造を利用することができる。図１１に示されるように、エントロピ復号ユニット５２は、入ってくるビットストリームからコードワードを受信する（９６）。コードワードは、ビットストリームバッファから取り出された固定幅Ｗのビットから取得され得る。コードワードは、左寄せでよく、または左寄せフォーマットに変換することができ、幅Ｗは、右から左に、コードワードからＢ個の先行ビットを削除することによって低減され得る。
【０２０９】
エントロピ復号ユニット５２は、一番上のレベルから開始し、適切な基本コードワードが見つかるまで、トップダウン検索で、ツリーの中へより深く進みながら、コードワードを、コーディングツリーの異なるレベルの基本コードワードと比較する。特に、エントロピ復号ユニット５２は、ツリーの現在のレベルの基本コードワードがコードワード以下であるかどうかを決定することができる（９８）。そうでない場合、エントロピ復号ユニットは、引き続きツリーの次のレベルへと下方に進み（１００）、次のレベルに関連付けられている基本コードワードについての比較を繰り返す（９８）。しかし、次のレベルに進むと（１００）、エントロピ復号ユニット５２は、スキップインジケータが現在のレベルに関連付けられているかどうかを決定する（１０２）。そうである場合、エントロピ復号ユニット５２は、次のレベルに進む（１００）前に、ビットストリームバッファを一定単位だけスクロールする（１０４）。特に、エントロピ復号ユニット５２は、先行するＭビットをドロップすることによってコードワードが失われないように、Ｍビットだけビットストリームバッファをスクロールすることができる。スキップ指示（１０２）がない場合、エントロピ復号ユニット５２は、単に、次のレベルに進む（１００）。
【０２１０】
いずれの場合でも、エントロピ復号ユニット５２は、再度、コードワードを、現在のレベルの基本コードワードと比較する（９８）。エントロピ復号ユニット５２は、基本コードワードがそのコードワード以下であるレベルを見つけ（９８）、エントロピ復号ユニット５２は、それぞれのレベルで基本コードワードの残余長さを決定し（１０６）、ビットストリームを残余長さだけスクロールする（１０８）。次いで、エントロピ復号ユニット５２は、そのレベルのオフセット、および基本コードワードと復号されるコードワードとの間の差に基づいて、コードワードに関連付けられているシンボルを計算する（１１０）。
【０２１１】
例えば、図４のツリーを参照すると、コードワードが０１１０００００００００００００である場合、８個の先行ビットがドロップされた、部分的な、切り捨てられたコードワードは、０１１０００００である。この場合、エントロピ復号ユニット５２は、レベル３の部分的な基本コードワード（００１０００００）を、コードワード以下であると識別し、３の残余長さを識別する。エントロピ復号ユニット５２は、次のコードワードを受信するために、ビットストリームを３ビット前方にスクロールする。さらに、エントロピ復号ユニット５２は、レベル３のオフセットを、ビットストリームバッファ内のコードワードとそのレベルの基本コードワードとの差に追加することによって、コードワードのシンボルを計算する。例えば、エントロピ復号ユニット５２は、コードを、オフセット［３］＝１２＋コードワード０１１０００００−００１０００００として計算し、これは、１２＋２＝１４に等しい。この場合、１４がコード０１１によって表されるシンボルのインデックスである。
【０２１２】
図１１に示される方法は、本開示の他の場所に記載されているように、非常にコンパクトなデータ構造、およびかなりのメモリ効率を利用することができる。その結果、こうした方法を実装することによって、エントロピ復号ユニット５２は、そのすべてが映像復号装置、またはデータの復元および復号のために構成されている他の装置には望ましい可能性のある、処理オーバーヘッドの低減、メモリ使用率の低減、および処理速度の増加を含めて、効率の増加を提供することができる。
【０２１３】
図１２は、本開示の第２の一般的な態様による適応形ブロックコードを構成するための方法を示すフロー図である。図１２の方法は、コーディング装置内のプロセッサまたは適応形ブロックコードの効率の良い直接構成をサポートする汎用プロセッサ内に実装することができる。図１２に示されるように、プロセッサは、コーディングすべき１組の単語（１１２）を取得する。結果として得られたコード構造を表すデータ構造は、符号化装置、復号装置、またはその両方の中のメモリに格納され得る。単語は、２値コードのブロックとすることができる。単語の重さを決定する（１１４）と、プロセッサは、重さに基づいて、コードワードグループを単語に割り当てる（１１６）。コードワードグループは、同じ重さｋの単語のコードワードを含み、例えば、図６に示されるように、コーディングツリーの隣接する２つのレベルにまたがり得る。
【０２１４】
図１２にさらに示されるように、プロセッサは、単語の長さに基づいて、サブグループを同じグループ内の単語に割り当てる（１１８）。特に、グループは、第１のサブグループおよび第２のサブグループを含み得る。第１のサブグループは、同じ長さおよび同じ重さを有する１つまたは複数のコードワードを含む。同様に、第２のサブグループは、同じ長さおよび同じ重さを有する１つまたは複数のコードワードを含む。しかし、第１のサブグループ内のコードワードの長さは、第２のサブグループ内のコードワードの長さ未満である。したがって、各サブグループは、同じ重さの、コーディングツリーにおける同じレベルにおけるコードワードを含む。
【０２１５】
プロセッサは、サブグループごとに基本コードワードを識別する（１２０）。基本コードワードは、サブグループ内の最小のコードワードである。図６の例では、サブグループ６８Ａの基本コードワードは、００１である。しかし、サブグループ６８Ａは、基本コードワード００１に加えて、コードワード０１０および０１１をさらに含む。この例では、相対的に少量の計算が与えられると、コードを、容易に、直接計算することができるように、サブグループ内のコードワードは、それらが表す単語の辞書式順序で順序付けられる。
【０２１６】
各グループの第１のサブグループ内の要素の数は、コードワードを計算するために使用することができる。そのために、プロセッサは、各グループの第１のサブグループ内の要素の数を格納し（１２２）、また、グループインデックスマッピング（１２４）、サブグループコード長マッピング（１２６）、およびサブグループ基本コードワードマッピング（１２８）も格納する。グループインデックスマッピングは、コードワードが存在するグループ内の単語のコードワードの位置を識別することができる。サブグループコード長マッピングは、特定のサブグループ内のコードの長さを識別することができる。サブグループ基本コードワードマッピングは、各サブグループに関連付けられている基本コードワードを識別することができる。一般に、グループ内の単語のインデックスが与えられると、コードは、特定のサブグループの基本コードワードから構成することができる。格納されている情報は、符号器、復号器、またはその両方によってアクセスすることができるデータ構造に格納することができる。
【０２１７】
図１３は、本開示の第２の一般的な態様による、図１２の方法に従って構成された可変長のコードを使用してブロックを符号化するための方法を示すフロー図である。図１３の方法は、例えば、図２のエントロピ符号化ユニット４６など、エントロピ符号化ユニット内に実装することができる。図１３に示される方法は、表７に示されるものと同じ、または似たアルゴリズムを使用して実行され得る。図１３に示されるように、所与の単語を符号化するために、エントロピ符号化４６は、その重さ（１３０）およびグループインデックス（１３２）を取得する。単語の重さを使用して、エントロピ符号化４６は、該当するコーディングツリー内の単語のグループインデックスを決定する（１３２）。グループインデックスＩｎ，ｋ（ｗ）は、辞書式順序で単語を格納するグループＷｎ，ｋ内の単語ｗのインデックス（位置）を指定する。
【０２１８】
エントロピ符号化ユニット４６は、グループインデックスを、入力単語のコードワードが存在するグループの第１のサブグループ内の要素の数ｎｋと比較する。特に、エントロピ符号化ユニット４６は、グループのインデックスが第１のサブグループ内の要素の数以上であるかどうかを決定する（１３４）。そうである場合、エントロピ符号化ユニット４６は、第２のサブグループ、すなわちグループ内のサブグループ１を選択し（１３８）、グループインデックス値を減分する（１４０）。特に、グループインデックス値は、第１のサブグループにおける要素の数ｎｋだけ減分される。グループインデックスが第１のサブグループ内の要素の数以上でない場合（１３４）、エントロピ符号化ユニット４６は、第１のサブグループ、すなわちサブグループ０を選択する（１３６）。各サブグループは、それ自体の基本コードワードを有する。エントロピ符号化ユニット４６は、選択されたサブグループの基本コードワードを取得し（１４２）、基本コードワードとグループインデックス値との合計に基づいて、コードワードを計算する（１４４）。
【０２１９】
図６のコーディングツリー例を参照すると、一例として、符号化すべき単語の重さが２であると仮定した場合、グループインデックス値は２、例えばコーディングツリーのレベル３および４のグループに対応する第１のサブグループ内の要素の数は３である。この場合、グループインデックス値（２）は、第１のサブグループ内の要素の数（３）未満であるから、エントロピ符号化ユニット４６は、第１のサブグループ（サブグループ０）を選択する。その結果、基本コードワードは００１である。単語を符号化するために、エントロピ符号化ユニット４６は、２のグループインデックス値を００１の基本コードワードに追加し、結果として０１１のコードワードが得られる。
【０２２０】
同じグループについて、グループインデックス値が３であった場合、エントロピコーディングユニット４６は、第２のサブグループ（サブグループ１）を選択することになる。しかし、エントロピコーディングユニット４６は、第１のサブグループ（サブグループ０）内の要素の数ｎｋだけグループインデックス値だけ減分することになる。この場合、３のグループインデックス値は、３だけ低減されゼロになり、コードワードは、第２のサブグループの基本コードワードである０００１＋グループインデックス値である０として計算されることになり、その結果、０００１のコードワードが得られる。
【０２２１】
入力単語のコードワードを計算することに加えて、エントロピコーディングユニット４６は、選択されたサブグループ内のコードの長さを取得することができる（１４６）。上記の例で、サブグループ０のレベル３について、コードの長さは、３となる。エントロピ符号化ユニットは、エントロピ復号ユニット５２などエントロピ復号ユニットを含む復号装置など別の装置に格納および／または送信するために、計算されたコードワードとサブグループのコード長を、ビットストリームに出力する。
【０２２２】
図１４は、本開示の第２の一般的な態様による、図１２および図１３の方法に従って構成された可変長のコードを復号するための方法を示すブロック図である。図１４に示される方法は、表８に示されるものと同じ、または似たアルゴリズムを使用して実行され得る。可変長のコードは、エントロピ符号化ユニット４６を含む符号化装置などの符号化装置から受信することができる。可変長コードは、エントロピ復号ユニット５２によって受信され、復号され得る。図１４に示されるように、エントロピ復号ユニット５２は、入ってくるビットストリームからコードワードを受信し（１５０）、コードワードをサブグループの基本コードワードと比較する。特にエントロピ復号ユニット５２は、該当するコーディングツリーを検索して、ビットストリームバッファから取得されたコードワードのコンテンツ以下の左寄せのサブグループの基本コードワードを識別することができる（１５２）。
【０２２３】
ツリーにおける所与のレベルのサブグループ内のサブグループの基本コードワードが、コードワード以下でない（１５２）場合、エントロピ復号ユニット５２は、ツリーの次のレベルの次のサブグループに進み（１５４）、比較を繰り返す。このプロセスは、基本コードワードがビットストリームから受信されたコードワードより大きいままである限り、すなわち、エントロピ復号ユニット５２が、サブグループの基本コードワードがコードワード以下であるレベルに到達するまで、反復ベースで続行する。コードワードと基本コードワードを比較する際、エントロピ復号ユニット５２は、本開示の第１の態様に従って、追加のメモリ低減のために、基本コードワードの部分的な増分値を使用することができる。特に、いくつかの先行ビットは、上述したように、メモリ効率を向上させるために、ドロップされ得る。
【０２２４】
サブグループの基本コードワードがコードワード以下であるコーディングツリーのレベルに到達すると、エントロピ復号ユニット５２は、サブグループのコード長を決定し（１５６）、その長さだけビットストリームをスクロールして、復号されたビットをスキップし、コードワードを隔離する。エントロピ復号ユニット５２は、基本コードワードを使用して、そのサブグループ内のコードワードの位置を決定することができる（１５８）。例えば、エントロピ復号ユニット５２は、コードワードと基本コードワードとの間の位置の差を生成するために、ビットストリームコードワードを基本コードワードから取り去ることができる。
【０２２５】
一例として、図６のコーディングツリーを参照して、入ってくるコードワードが０１１０００００００００００００である場合、エントロピ復号ユニット５２は、基本コードワード００１０００００００００００００を、コードワード以下の一番上のサブグループの基本コードワードと識別する。この基本コードワードは、レベル３および４のグループ内の第１のサブグループに関連付けられている。基本コードワードに関連付けられているサブグループのコード長（３）を決定すると、エントロピ復号ユニット５２は、ビットストリームをスクロールして、復号されたビットをスキップすることができる。エントロピ復号ユニット５２は、ビットストリームからのコードワードから基本コードワードを取り去ることによって、コードワードのグループインデックスを決定することができる。この例では、０１１−００１は、０１０をもたらし、これは、２のグループインデックス値を生成する。
【０２２６】
エントロピ復号ユニット５２は、例えばコーディングツリー内のサブグループのレベルに基づいて、コードワードの重さを決定することもできる（１６０）。さらに、エントロピ復号ユニット５２は、サブグループインデックス、すなわち、コーディングツリー内の選択されたサブグループのインデックスを決定することができる（１６２）。重さ、位置およびサブグループのインデックスを使用して、エントロピ復号ユニット５２は、単語インデックスを決定し（１６４）、それによって、コードワードによって表される単語を生成するために、ビットストリームからのコードワードを復号する。この場合も、一部の実装では、エントロピ復号ユニット５２によって実行される復号方法は、表８に示されるプロセスに対応し得る。
【０２２７】
情報および信号を、様々な異なる技術および技法のうちの任意のものを使用して表すことができることを、当業者であれば理解されよう。例えば、上記の説明にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場または磁性粒子、光電場または光学粒子、またはその任意の組み合わせによって表すことができる。
【０２２８】
本明細書に開示された実施形態との関連で記載されている様々な例示の論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはその両方の組み合わせとして実装され得ることを、当業者であれば、さらに理解されよう。ハードウェアおよびソフトウェアのこの互換性を明らかに示すために、様々な例示の構成要素、ブロック、モジュール、回路、およびステップについて、その機能に関して、上記で全般的に説明してきた。こうした機能は、ハードウェアとして実装されるか、ソフトウェアとして実装されるかは、システム全体に課せられる特定の用途および設計の制約によって決まる。当業者であれば、記載した機能を、特定の用途ごとに様々な方法で実装することができるが、こうした実装は、本開示の範囲からの逸脱をもたらすものと解釈されないものとする。
【０２２９】
本明細書に記載された技術は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組み合わせにおいて実装され得る。こうした技術は、汎用コンピュータ、無線通信装置ハンドセット、または無線通信装置ハンドセットおよび他の装置における適用を含めて、複数の使用を有する集積回路装置など、様々な装置の任意のものに実装することができる。モジュールまたは構成要素として記載されている任意の特徴は、一体型の論理装置に一緒に、または別個ではあるが、相互運用可能な論理装置として別々に実装されてもよい。ソフトウェアに実装される場合、技術は、実行されると、上述した方法のうちの１つまたは複数を実行する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって少なくとも一部分実現することができる。コンピュータ可読データ記憶媒体は、コンピュータプログラム製品の一部分を形成し得る。コンピュータ可読媒体は、ランダムアクセスメモリ（ＲＡＭ）、例えばシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気的に消去書き込み可能ＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気または光データ記憶媒体などを備え得る。さらに、または代わりに、技術は、命令またはデータ構造の形でプログラムコードを運び、または通信し、伝播信号または波など、コンピュータによるアクセス、読み取り、かつ／または実行が可能なコンピュータ可読通信媒体によって少なくとも一部分実現することができる。
【０２３０】
プログラムコードは、１つまたは複数のディジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の等価の一体型または別個の論理回路など、１つまたは複数のプロセッサによって実行することができる。汎用プロセッサは、マイクロプロセッサとすることができるが、代替では、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。また、プロセッサは、例えば、ＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、１つまたは複数のマイクロプロセッサおよびＤＳＰコア、または他の任意のこうした構成など、コンピューティング装置の組み合わせとして実装することもできる。したがって、「プロセッサ」という用語は、本明細書で使用される場合、上記の構成のうちの任意のもの、または本明細書に記載された技術の実装に適した他の任意の構成を指し得る。さらに、一部の態様において、本明細書に記載されている機能は、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアモジュール内に設けられ、または結合された映像符号器／復号器（ＣＯＤＥＣ）に組み込まれてもよい。
【０２３１】
本開示の様々な実施形態について説明してきた。これらおよび他の実施形態は、以下の特許請求の範囲内に含まれる。
【誤訳訂正２】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
コーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループと
を定義するコード構造に従って可変長のコーディングを実行することと、
メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、前記可変長のコーディングの結果を生成することと
を備える方法。
【請求項２】
可変長のコーディングを実行することが、
前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを指定するデータ構造にアクセスすることと、
前記データ構造を使用して前記可変長のコーディングを実行することと
を備える請求項１に記載の方法。
【請求項３】
前記データ構造が、映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの１つに関連付けられているメモリに格納される請求項２に記載の方法。
【請求項４】
前記基本コードワードのそれぞれが、前記それぞれのサブグループ内の辞書式に最小のコードワードである請求項２に記載の方法。
【請求項５】
前記可変長のコーディングを実行することが、前記データ構造を使用して、前記値のうちの１つを符号化することを備え、符号化することが、
前記符号化すべき値の重さに基づいて、前記グループのうちの１つを選択することと、
前記選択されたグループの前記第１のサブグループ内の前記コードワードの数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの１つを選択することと、
前記選択されたサブグループの前記基本コードワードおよび前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記コードワードのうちの１つを選択することと、
前記選択されたコードワードにより前記符号化すべき値を符号化することと
を備える請求項２に記載の方法。
【請求項６】
前記符号化された値を復号器に送信することをさらに備える請求項５に記載の方法。
【請求項７】
前記可変長のコーディングを実行することが、前記データ構造を使用して、前記コードワードのうちの１つを復号することを備え、復号することが、
コーディングツリーのトップダウン検索で、前記復号すべきコードワード以下の基本コードワードを含む前記サブグループのうちの第１のものを選択することと、
前記復号すべきコードワードと、前記選択されたサブグループの前記基本コードワードとの間の差に基づいて、前記選択されたサブグループ内の前記復号すべきコードワードの位置を決定することと、
前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべきコードワードによって表される前記値の重さを決定することと、
前記選択されたサブグループが前記グループの前記第１のサブグループであるか、前記第２のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を決定することと、
前記値のうちの１つ、前記復号すべきコードワードによって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を選択することと、
前記選択された値により前記復号すべきコードワードを復号することと
を備える請求項１に記載の方法。
【請求項８】
前記選択された値に少なくとも一部分基づいて、ユーザに出力を提示することをさらに備える請求項７に記載の方法。
【請求項９】
前記コードワードによって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも１つを表す請求項１に記載の方法。
【請求項１０】
コーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループと
を定義するコード構造に従って可変長のコードを実行するための手段と、
メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、前記可変長のコーディングの結果を生成するための手段と
を備える装置。
【請求項１１】
可変長のコーディングを実行するための前記手段が、
前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを指定するデータ構造にアクセスするための手段と、
前記データ構造を使用して前記可変長のコーディングを実行するための手段と
を備える請求項１０に記載の装置。
【請求項１２】
前記データ構造を、映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの１つに関連付けられているメモリに格納するための手段をさらに含む請求項１１に記載の装置。
【請求項１３】
前記基本コードワードのそれぞれが、前記それぞれのサブグループ内の辞書式に最小のコードワードである請求項１１に記載の装置。
【請求項１４】
可変長のコーディングを実行するための前記手段が、前記データ構造を使用して、前記値のうちの１つを符号化するための手段を備え、符号化するための前記手段が、
前記符号化すべき値の重さに基づいて、前記グループのうちの１つを選択するための手段と、
前記選択されたグループの前記第１のサブグループ内の前記コードワードの数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの１つを選択するための手段と、
前記選択されたサブグループの前記基本コードワードおよび前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記コードワードのうちの１つを選択するための手段と、
前記選択されたコードワードにより前記符号化すべき値を符号化するための手段と
を備える請求項１１に記載の装置。
【請求項１５】
前記符号化された値を復号器に送信するための手段をさらに備える請求項１４に記載の装置。
【請求項１６】
可変長のコーディングを実行するための前記手段が、前記データ構造を使用して、前記コードワードのうちの１つを復号するための手段を備え、復号するための前記手段が、
コーディングツリーのトップダウン検索で、前記復号すべきコードワード以下の基本コードワードを含む前記サブグループのうちの第１のものを選択するための手段と、
前記復号すべきコードワードと、前記選択されたサブグループの前記基本コードワードとの間の差に基づいて、前記選択されたサブグループ内の前記復号すべきコードワードの位置を決定するための手段と、
前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべきコードワードによって表される前記値の重さを決定するための手段と、
前記選択されたサブグループが前記グループの前記第１のサブグループであるか、前記第２のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を決定するための手段と、
前記値のうちの１つ、前記復号すべきコードワードによって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を選択するための手段と、
前記選択された値により前記復号すべきコードワードを復号するための手段と
を備える請求項１１に記載の装置。
【請求項１７】
前記選択された値に少なくとも一部分基づいて、ユーザに出力を提示するための手段をさらに備える請求項１６に記載の装置。
【請求項１８】
前記コードワードによって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも１つを表す請求項１０に記載の装置。
【請求項１９】
プロセッサに、
コーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループと
を定義するコード構造に従って可変長のコーディングを実行させ、
メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、前記可変長のコーディングの結果を生成させる
ための命令を備える有形のコンピュータ可読媒体。
【請求項２０】
前記プロセッサに、
前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを指定するデータ構造にアクセスさせ、
前記データ構造を使用して前記可変長のコーディングを実行させる
ための命令をさらに備える請求項１９に記載のコンピュータ可読媒体。
【請求項２１】
前記プロセッサに、前記データ構造を、映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの１つに関連付けられているメモリに格納させるための命令をさらに備える請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
前記基本コードワードのそれぞれが、前記それぞれのサブグループ内の辞書式に最小のコードワードである請求項２０に記載のコンピュータ可読媒体。
【請求項２３】
前記可変長のコーディングを実行するために、前記データ構造を使用して、前記プロセッサに、前記値のうちの１つを符号化させるための命令であって、前記プロセッサに、
前記符号化すべき値の重さに基づいて、前記グループのうちの１つを選択させ、
前記選択されたグループの前記第１のサブグループ内の前記コードワードの数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの１つを選択させ、
前記選択されたサブグループの前記基本コードワードおよび前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記コードワードのうちの１つを選択させ、
前記選択されたコードワードにより前記符号化すべき値を符号化させる
ための命令をさらに備える請求項２１に記載のコンピュータ可読媒体。
【請求項２４】
前記プロセッサに、前記符号化された値を復号器に送信するよう送信機を制御させるための命令をさらに備える請求項２３に記載のコンピュータ可読媒体。
【請求項２５】
前記可変長のコーディングを実行するために、前記データ構造を使用して、前記プロセッサに、前記コードワードのうちの１つを復号させるための命令であって、前記プロセッサに、
コーディングツリーのトップダウン検索で、前記復号すべきコードワード以下の基本コードワードを含む前記サブグループのうちの第１のものを選択させ、
前記復号すべきコードワードと、前記選択されたサブグループの前記基本コードワードとの間の差に基づいて、前記選択されたサブグループ内の前記復号すべきコードワードの位置を決定させ、
前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべきコードワードによって表される前記値の重さを決定させ、
前記選択されたサブグループが前記グループの前記第１のサブグループであるか、前記第２のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を決定させ、
前記値のうちの１つ、前記復号すべきコードワードによって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を選択させ、
前記選択された値により前記復号すべきコードワードを復号させる
ための命令をさらに備える請求項２１に記載のコンピュータ可読媒体。
【請求項２６】
前記プロセッサに、前記選択された値に少なくとも一部分基づいて、ユーザに出力を提示するよう出力装置を制御させるための命令をさらに備える請求項２５に記載のコンピュータ可読媒体。
【請求項２７】
前記コードワードによって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも１つを表す請求項１９に記載のコンピュータ可読媒体。
【請求項２８】
コーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループと
を定義するコード構造に従って可変長のコーディングを実行するよう構成されているプロセッサであって、
メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、前記可変長のコーディングの結果を生成するよう構成されている
プロセッサを備える装置。
【請求項２９】
前記プロセッサが、前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを指定するデータ構造にアクセスし、前記データ構造を使用して、前記可変長のコーディングを実行する請求項２８に記載の装置。
【請求項３０】
前記データ構造が、映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの１つに関連付けられているメモリに格納される請求項２９に記載の装置。
【請求項３１】
前記基本コードワードのそれぞれが、前記それぞれのサブグループ内の辞書式に最小のコードワードである請求項２９に記載の装置。
【請求項３２】
前記プロセッサが、前記可変長のコーディングを実行するために、前記データ構造を使用して、前記値のうちの１つを符号化し、前記プロセッサが、前記符号化すべき値の重さに基づいて、前記グループのうちの１つを選択し、前記選択されたグループの前記第１のサブグループ内の前記コードワードの数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの１つを選択し、前記選択されたサブグループの前記基本コードワードおよび前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記コードワードのうちの１つを選択し、前記選択されたコードワードにより前記符号化すべき値を符号化する請求項２９に記載の装置。
【請求項３３】
前記符号化された値を復号器に送信する送信機をさらに備える請求項３２に記載の装置。
【請求項３４】
前記プロセッサが、前記可変長のコーディングを実行するために、前記データ構造を使用して、前記コードワードのうちの１つを復号し、前記プロセッサが、コーディングツリーのトップダウン検索で、前記復号すべきコードワード以下の基本コードワードを含む前記サブグループのうちの第１のものを選択し、前記復号すべきコードワードと、前記選択されたサブグループの前記基本コードワードとの間の差に基づいて、前記選択されたサブグループ内の前記復号すべきコードワードの位置を決定し、前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべきコードワードによって表される前記値の重さを決定し、前記選択されたサブグループが前記グループの前記第１のサブグループであるか、前記第２のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を決定し、前記値のうちの１つ、前記復号すべきコードワードによって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を選択し、前記選択された値により前記復号すべきコードワードを復号する請求項２９に記載の装置。
【請求項３５】
前記選択された値に少なくとも一部分基づいて、ユーザに出力を提示する出力装置をさらに備える請求項３４に記載の装置。
【請求項３６】
前記コードワードによって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも１つを表す請求項２８に記載の装置。
【請求項３７】
可変長のコードワードを指定するコーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループと
を定義するコード構造について、
前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを使用して、可変長のコーディングを実行することと、
メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、前記可変長のコーディングの結果を生成することと
を備える方法。
【請求項３８】
可変長のコーディングを実行することが、前記値の少なくとも一部を符号化することを備え、前記可変長のコーディングの前記結果が１つまたは複数のコードワードである請求項３７に記載の方法。
【請求項３９】
符号化することが、
前記符号化すべき値の重さに基づいて、前記グループのうちの１つを選択することと、
前記選択されたグループの前記第１のサブグループ内の前記コードワードの数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの１つを選択することと、
前記選択されたサブグループの前記基本コードワードおよび前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記コードワードのうちの１つを選択することと、
前記選択されたコードワードにより前記符号化すべき値を符号化することと
を備える請求項３８に記載の方法。
【請求項４０】
可変長のコーディングを実行することが、前記コードワードの少なくとも一部を復号することを備え、前記可変長のコーディングの前記結果が１つまたは複数の値である請求項３７に記載の方法。
【請求項４１】
復号することが、
コーディングツリーのトップダウン検索で、前記復号すべきコードワード以下の基本コードワードを含む前記サブグループのうちの第１のものを選択することと、
前記復号すべきコードワードと、前記選択されたサブグループの前記基本コードワードとの間の差に基づいて、前記選択されたサブグループ内の前記復号すべきコードワードの位置を決定することと、
前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべきコードワードによって表される前記値の重さを決定することと、
前記選択されたサブグループが前記グループの前記第１のサブグループであるか、前記第２のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を決定することと、
前記値のうちの１つ、前記復号すべきコードワードによって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を選択することと、
前記選択された値により前記復号すべきコードワードを復号することと
を備える請求項４０に記載の方法。
【請求項４２】
前記基本コードワードのそれぞれが、前記それぞれのサブグループ内の辞書式に最小のコードワードである請求項３７に記載の方法。
【請求項４３】
前記コードワードによって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも１つを表す請求項３７に記載の方法。
【請求項４４】
コード構造について、
可変長のコードワードを指定するコーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループと
を定義するための手段と、
前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを使用して、可変長のコーディングを実行するための手段と、
メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、前記可変長のコーディングの結果を生成するための手段と
を備える装置。
【請求項４５】
可変長のコーディングを実行するための前記手段が、前記値の少なくとも一部をコーディングするための手段を備え、前記可変長のコーディングの前記結果が１つまたは複数のコードワードである請求項４４に記載の装置。
【請求項４６】
符号化するための前記手段が、
前記符号化すべき値の重さに基づいて、前記グループのうちの１つを選択するための手段と、
前記選択されたグループの前記第１のサブグループ内の前記コードワードの数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの１つを選択するための手段と、
前記選択されたサブグループの前記基本コードワードおよび前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記コードワードのうちの１つを選択するための手段と、
前記選択されたコードワードにより前記符号化すべき値を符号化するための手段と
を備える請求項４５に記載の装置。
【請求項４７】
可変長のコーディングを実行するための前記手段が、前記コードワードの少なくとも一部を復号するための手段を備え、前記可変長のコーディングの前記結果が１つまたは複数の値である請求項４４に記載の装置。
【請求項４８】
復号するための前記手段が、
コーディングツリーのトップダウン検索で、前記復号すべきコードワード以下の基本コードワードを含む前記サブグループのうちの第１のものを選択するための手段と、
前記復号すべきコードワードと、前記選択されたサブグループの前記基本コードワードとの間の差に基づいて、前記選択されたサブグループ内の前記復号すべきコードワードの位置を決定するための手段と、
前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべきコードワードによって表される前記値の重さを決定するための手段と、
前記選択されたサブグループが前記グループの前記第１のサブグループであるか、前記第２のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を決定するための手段と、
前記値のうちの１つ、前記復号すべきコードワードによって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を選択するための手段と、
前記選択された値により前記復号すべきコードワードを復号するための手段と
を備える請求項４７に記載の装置。
【請求項４９】
前記基本コードワードのそれぞれが、前記それぞれのサブグループ内の辞書式に最小のコードワードである請求項４４に記載の装置。
【請求項５０】
前記コードワードによって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも１つを表す請求項４４に記載の装置。
【請求項５１】
プロセッサに、
コード構造について、
可変長のコードワードを指定するコーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループとを定義させ、
前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを使用して、可変長のコーディングを実行させ、
メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、前記可変長のコーディングの結果を生成することの
ための命令を備える有形のコンピュータ可読媒体。
【請求項５２】
前記命令が前記プロセッサに前記値のうちの少なくとも一部を符号化させ、前記可変長のコーディングの前記結果が１つまたは複数のコードワードである請求項５１に記載のコンピュータ可読媒体。
【請求項５３】
前記命令が、前記プロセッサに、
前記符号化すべき値の重さに基づいて、前記グループのうちの１つを選択させ、
前記選択されたグループの前記第１のサブグループ内の前記コードワードの数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの１つを選択させ、
前記選択されたサブグループの前記基本コードワードおよび前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記コードワードのうちの１つを選択させ、
前記選択されたコードワードにより前記符号化すべき値を符号化させる
請求項５２に記載のコンピュータ可読媒体。
【請求項５４】
前記命令が前記プロセッサに前記コードワードのうちの少なくとも一部を復号させ、前記可変長のコーディングの前記結果が１つまたは複数の値である請求項５１に記載のコンピュータ可読媒体。
【請求項５５】
前記命令が、前記プロセッサに、
コーディングツリーのトップダウン検索で、前記復号すべきコードワード以下の基本コードワードを含む前記サブグループのうちの第１のものを選択させ、
前記復号すべきコードワードと、前記選択されたサブグループの前記基本コードワードとの間の差に基づいて、前記選択されたサブグループ内の前記復号すべきコードワードの位置を決定させ、
前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべきコードワードによって表される前記値の重さを決定させ、
前記選択されたサブグループが前記グループの前記第１のサブグループであるか、前記第２のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を決定させ、
前記値のうちの１つ、前記復号すべきコードワードによって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を選択させ、
前記選択された値により前記復号すべきコードワードを復号させる
請求項５４に記載のコンピュータ可読媒体。
【請求項５６】
前記基本コードワードのそれぞれが、前記それぞれのサブグループ内の辞書式に最小のコードワードである請求項５１に記載のコンピュータ可読媒体。
【請求項５７】
前記コードワードによって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも１つを表す請求項５１に記載のコンピュータ可読媒体。
【請求項５８】
可変長のコードワードを指定するコーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループと
を定義するコード構造について、
前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを使用して、可変長のコーディングを実行し、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、前記可変長のコーディングの結果を生成するよう構成されているプロセッサ
を備える装置。
【請求項５９】
前記プロセッサが前記値の少なくとも一部を符号化し、前記可変長のコーディングの前記結果が１つまたは複数のコードワードである請求項５８に記載の装置。
【請求項６０】
前記プロセッサが、前記符号化すべき値の重さに基づいて、前記グループのうちの１つを選択し、前記選択されたグループの前記第１のサブグループ内の前記コードワードの数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの１つを選択し、前記選択されたサブグループの前記基本コードワードおよび前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記コードワードのうちの１つを選択し、前記選択されたコードワードにより前記符号化すべき値を符号化する請求項５９に記載の装置。
【請求項６１】
前記プロセッサが前記コードワードの少なくとも一部を復号し、前記可変長のコーディングの前記結果が１つまたは複数の値である請求項５８に記載の装置。
【請求項６２】
前記プロセッサが、コーディングツリーのトップダウン検索で、前記復号すべきコードワード以下の基本コードワードを含む前記サブグループのうちの第１のものを選択し、前記復号すべきコードワードと、前記選択されたサブグループの前記基本コードワードとの間の差に基づいて、前記選択されたサブグループ内の前記復号すべきコードワードの位置を決定し、前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべきコードワードによって表される前記値の重さを決定し、前記選択されたサブグループが前記グループの前記第１のサブグループであるか、前記第２のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を決定し、前記値のうちの１つ、前記復号すべきコードワードによって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を選択し、前記選択された値により前記復号すべきコードワードを復号する請求項６１に記載の装置。
【請求項６３】
前記基本コードワードのそれぞれが、前記それぞれのサブグループ内の辞書式に最小のコードワードである請求項５８に記載の装置。
【請求項６４】
前記コードワードによって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも１つを表す請求項５８に記載の装置。
【請求項６５】
コーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループと
を定義する可変長のコード構造を使用した、可変長のコーディングのためのデータ構造を備える有形のコンピュータ可読媒体。
【請求項６６】
前記データ構造が、前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを指定する請求項６５に記載のコンピュータ可読媒体。
【請求項６７】
コーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループと
を定義するコード構造に従って可変長のコーディングを実行するよう構成されているプロセッサであって、
メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、前記可変長のコーディングの結果を生成するよう構成されているプロセッサ
を備える無線通信装置ハンドセット。
【請求項６８】
前記プロセッサが、前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを指定するデータ構造にアクセスし、前記データ構造を使用して、前記可変長のコーディングを実行する請求項６７に記載のハンドセット。
【請求項６９】
メモリをさらに備え、前記データ構造が前記メモリに格納され、前記メモリが、前記ハンドセットにおける映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの１つに関連付けられている請求項６８に記載のハンドセット。
【請求項７０】
前記基本コードワードのそれぞれが、前記それぞれのサブグループ内の辞書式に最小のコードワードである請求項６８に記載のハンドセット。
【請求項７１】
前記プロセッサが、前記可変長のコーディングを実行するために、前記データ構造を使用して、前記値のうちの１つを符号化し、前記プロセッサが、前記符号化すべき値の重さに基づいて、前記グループのうちの１つを選択し、前記選択されたグループの前記第１のサブグループ内の前記コードワードの数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの１つを選択し、前記選択されたサブグループの前記基本コードワードおよび前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記コードワードのうちの１つを選択し、前記選択されたコードワードにより前記符号化すべき値を符号化する請求項６８に記載のハンドセット。
【請求項７２】
前記符号化された値を復号器に送信する無線送信機をさらに備える請求項７１に記載のハンドセット。
【請求項７３】
前記プロセッサが、前記可変長のコーディングを実行するために、前記データ構造を使用して、前記コードワードのうちの１つを復号し、前記プロセッサが、コーディングツリーのトップダウン検索で、前記復号すべきコードワード以下の基本コードワードを含む前記サブグループのうちの第１のものを選択し、前記復号すべきコードワードと、前記選択されたサブグループの前記基本コードワードとの間の差に基づいて、前記選択されたサブグループ内の前記復号すべきコードワードの位置を決定し、前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべきコードワードによって表される前記値の重さを決定し、前記選択されたサブグループが前記グループの前記第１のサブグループであるか、前記第２のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を決定し、前記値のうちの１つ、前記復号すべきコードワードによって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を選択し、前記選択された値により前記復号すべきコードワードを復号する請求項６８に記載のハンドセット。
【請求項７４】
前記選択された値に少なくとも一部分基づいて、ユーザに出力を提示する出力装置をさらに備える請求項７３に記載のハンドセット。
【請求項７５】
前記コードワードによって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも１つを表す請求項６７に記載のハンドセット。
【請求項７６】
コーディングツリーにおけるコードワードのグループであって、前記グループのそれぞれが、同じ重さを有する値を表すコードワードを含み、前記グループのそれぞれにおける前記コードワードが、前記コードワードによって表される前記値に対して辞書式に順序付けられるコードワードのグループと、
前記グループのそれぞれの中のコードワードの第１および第２のサブグループであって、前記第１のサブグループが第１の長さを有するコードワードを含み、前記第２のサブグループが前記第１の長さとは異なる第２の長さを有するコードワードを含むコードワードの第１および第２のサブグループと
を定義するコード構造に従って可変長のコーディングを実行するよう構成されているプロセッサであって、
メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも１つのために、前記可変長のコーディングの結果を生成するよう構成されているプロセッサ
を備える集積回路装置。
【請求項７７】
前記プロセッサが、前記サブグループのそれぞれの基本コードワード、前記グループのそれぞれの中のコードワードの位置、前記第１のサブグループのそれぞれの中のコードワードの数、および前記サブグループのそれぞれの中の前記コードワードの長さを指定するデータ構造にアクセスし、前記データ構造を使用して、前記可変長のコーディングを実行する請求項７６に記載の装置。
【請求項７８】
メモリをさらに備え、前記データ構造が前記メモリに格納され、前記メモリが、前記ハンドセットにおける映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの１つに関連付けられている請求項７７に記載の装置。
【請求項７９】
前記基本コードワードのそれぞれが、前記それぞれのサブグループ内の辞書式に最小のコードワードである請求項７７に記載の装置。
【請求項８０】
前記プロセッサが、前記可変長のコーディングを実行するために、前記データ構造を使用して、前記値のうちの１つを符号化し、前記プロセッサが、前記符号化すべき値の重さに基づいて、前記グループのうちの１つを選択し、前記選択されたグループの前記第１のサブグループ内の前記コードワードの数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの１つを選択し、前記選択されたサブグループの前記基本コードワードおよび前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記コードワードのうちの１つを選択し、前記選択されたコードワードにより前記符号化すべき値を符号化する請求項７７に記載の装置。
【請求項８１】
前記プロセッサが、前記可変長のコーディングを実行するために、前記データ構造を使用して、前記コードワードのうちの１つを復号し、前記プロセッサが、コーディングツリーのトップダウン検索で、前記復号すべきコードワード以下の基本コードワードを含む前記サブグループのうちの第１のものを選択し、前記復号すべきコードワードと、前記選択されたサブグループの前記基本コードワードとの間の差に基づいて、前記選択されたサブグループ内の前記復号すべきコードワードの位置を決定し、前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべきコードワードによって表される前記値の重さを決定し、前記選択されたサブグループが前記グループの前記第１のサブグループであるか、前記第２のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を決定し、前記値のうちの１つ、前記復号すべきコードワードによって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記コードワードの位置を選択し、前記選択された値により前記復号すべきコードワードを復号する
請求項７７に記載の装置。
【請求項８２】
前記コードワードによって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも１つを表す請求項７６に記載の装置。
【誤訳訂正３】
【訂正対象書類名】図面
【訂正対象項目名】全図
【訂正方法】変更
【訂正の内容】
【図１】
2010509895.tif 000060
【図２】
2010509895.tif 000061
【図３】
2010509895.tif 000062
【図４】
2010509895.tif 000063
【図５】
2010509895.tif 000064
【図６】
2010509895.tif 000065
【図７Ａ】
2010509895.tif 000066
【図７Ｂ】
2010509895.tif 000067
【図８】
2010509895.tif 000068
【図９】
2010509895.tif 000069
【図１０】
2010509895.tif 000070
【図１１】
2010509895.tif 000071
【図１２】
2010509895.tif 000072
【図１３】
2010509895.tif 000073
【図１４】
2010509895.tif 000074