JP2010509895A - メモリ効率の良い(memoryefficient)適応形ブロック符号化 - Google Patents

メモリ効率の良い(memoryefficient)適応形ブロック符号化 Download PDF

Info

Publication number
JP2010509895A
JP2010509895A JP2009537330A JP2009537330A JP2010509895A JP 2010509895 A JP2010509895 A JP 2010509895A JP 2009537330 A JP2009537330 A JP 2009537330A JP 2009537330 A JP2009537330 A JP 2009537330A JP 2010509895 A JP2010509895 A JP 2010509895A
Authority
JP
Japan
Prior art keywords
codeword
subgroup
codewords
value
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009537330A
Other languages
English (en)
Other versions
JP4897888B2 (ja
JP2010509895A5 (ja
Inventor
レズニク、ユリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2010509895A publication Critical patent/JP2010509895A/ja
Publication of JP2010509895A5 publication Critical patent/JP2010509895A5/ja
Application granted granted Critical
Publication of JP4897888B2 publication Critical patent/JP4897888B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一般に、本開示は、ディジタル映像、画像、音声、または言語データの符号化など、様々な用途向けの、メモリ効率の良い低複雑性のデータの適応形可変長符号化(VLC)の技術を対象とする。一部の態様では、これらの技術は、非常にコンパクトなデータ構造をサポートするために、特定の組の符号語の特性を利用することができる。他の態様では、これらの技術は、無記憶情報源によって生成される2値系列の低複雑性の適応形符号化および復号をサポートすることができる。

Description

本出願は、それぞれの全内容が参照により本明細書に組み込まれる、2006年11月14日出願の米国仮出願第60/865,827号明細書、および2006年11月22日出願の米国仮出願第60/867,081号明細書の利益を主張する。
本開示は、データ圧縮に関し、より詳細には、可変長符号(VLC)を使用したデータ圧縮に関する。
データ圧縮は、データ記憶空間、伝送帯域幅、またはその両方の消費を低減するために、様々な用途において広範に使用されている。データ圧縮の適用例には、ディジタル映像(video)、画像、言語(speech)および音声の符号化などがある。例えば、ディジタル映像符号化は、ディジタルテレビ、ディジタル直接放送システム(digital direct broadcast system)、無線通信装置、PDA(携帯情報端末)、ラップトップまたはデスクトップコンピュータ、ディジタルカメラ、ディジタル記録装置、ビデオゲーム装置、セルラー式または衛星無線電話などを含む、幅広い装置に使用されている。ディジタル映像装置は、より効率的にディジタル映像を送受信するために、MPEG−2、MPEG−4、またはH.264/MPEG−4 Advanced Video Coding(AVC)などの映像圧縮技術を実装する。
一般に、映像圧縮技術は、映像データに固有の冗長度を低減し、または削除するために、空間的予測、動き推定、および動き補償を実行する。特に、イントラ符号化は、空間的予測に依存して、所与の映像フレーム内の映像における空間的冗長度を低減し、または削除する。インター符号化は、時間的予測に依存して、隣接するフレーム内の映像の時間的冗長度を低減し、または削除する。インター符号化では、映像符号器は、2つ以上の隣接するフレーム間の整合する映像ブロックの動きを追跡するために、動き推定を行う。動き推定は、1つまたは複数の基準フレームにおける対応する映像ブロックに対する映像ブロックの変位を示す動きベクトルを生成する。動き補償は、動きベクトルを使用して、基準フレームから予測映像ブロックを生成する。動き補償後、元の映像ブロックから予測映像ブロックを取り去ることによって、残余映像ブロック(residual video block)が形成される。
映像符号器は、映像符号化処理によって生成される残余ブロックのビットレートをさらに低減するために、変換、量子化、エントロピ符号化の処理を適用する。エントロピ符号化技術は、符号化されたデータの格納または伝送の前に、映像符号器/復号器(CODEC)の最終段階、および他の様々な符号化の適用において使用される。エントロピ符号化は、変換および量子化の操作によって生成される残余係数をさらに圧縮するために、一般に、算術演算符号または可変長符号(VLC)の適用を伴う。エントロピ符号化技術の例には、コンテキスト適応形2値算術演算符号化(context-adaptive binary arithmetic coding:CABAC)、およびコンテキスト適応形可変長符号化(context-adaptive variable length coding:CAVLC)などがあり、これらは、いくつかの符号器で、代替のエントロピ符号化モードとして使用され得る。映像復号器は、エントロピ復号を行って、各ブロックの残余情報を復元し、動き情報および残余情報を使用して、符号化された映像を再構成する。
一般に、本開示は、ディジタル映像、画像、音声、または言語データの符号化など、様々な用途向けの、メモリ効率の良い低複雑性のデータの適応形可変長符号化(VLC)の技術を対象とする。第1の一般的な態様では、技術は、非常にコンパクトなデータ構造をサポートするために、特定の組の符号語(codeword)の特性を利用することができる。第2の一般的な態様では、技術は、無記憶情報源(memoryless source)によって生成される2値系列の低複雑性の適応形符号化および復号をサポートすることができる。
本開示は、第1の態様において、可変長の符号語を指定する符号化ツリーのレベルについての基本符号語(base codeword)の部分値を生成することと、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータを生成することと、メモリ内のデータ構造に、部分値およびスキップインジケータを格納することとを備える方法を提供する。
別の態様において、本開示は、可変長の符号語を指定する符号化ツリーのレベルについての基本符号語の部分値と、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを格納するデータ構造を備える有形のコンピュータ可読媒体を提供する。
別の態様において、本開示は、可変長の符号語を指定する符号化ツリーのレベルについての基本符号語の部分値を生成し、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータを生成するよう構成されているプロセッサと、データ構造に部分値およびスキップインジケータを格納するメモリとを備える装置を提供する。
別の態様において、本開示は、可変長の符号語を指定する符号化ツリーのレベルについての基本符号語の部分値と、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを備えるデータ構造を格納するメモリと、格納されたデータ構造における部分値およびスキップインジケータに基づいて、ビットストリームからの符号語のうちの1つを復号するためにメモリにアクセスする復号器とを備える復号装置を提供する。
別の態様において、本開示は、可変長の符号語を指定する符号化ツリーのレベルについての基本符号語の部分値と、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを備える、メモリに格納されたデータ構造にアクセスすることと、格納されたデータ構造における部分値およびスキップインジケータに基づいて、ビットストリームからの符号語のうちの1つを復号することとを備える復号方法を提供する。
別の態様において、本開示は、プロセッサに、可変長の符号語を指定する符号化ツリーのレベルについての基本符号語の部分値と、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを備える、メモリに格納されたデータ構造にアクセスさせ、格納されたデータ構造における部分値およびスキップインジケータに基づいて、ビットストリームからの符号語のうちの1つを復号させるための命令を備える有形のコンピュータ可読媒体を提供する。
追加の態様において、本開示は、符号化ツリーにおける符号語のグループであって、グループのそれぞれが、同じ重さを有する値を表す符号語を含み、グループのそれぞれにおける符号語が、符号語によって表される値に対して辞書式に順序付けられる符号語のグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義する符号構造に従って可変長の符号化を実行することと、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、可変長の符号化の結果を生成することとを備える方法を提供する。
追加の態様において、本開示は、プロセッサに、符号化ツリーにおける符号語のグループであって、グループのそれぞれが、同じ重さを有する値を表す符号語を含み、グループのそれぞれにおける符号語が、符号語によって表される値に対して辞書式に順序付けられる符号語のグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義する符号構造に従って可変長の符号化を実行させ、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、可変長の符号化の結果を生成させるための命令を備える有形のコンピュータ可読媒体を提供する。
追加の態様において、本開示は、符号化ツリーにおける符号語のグループであって、グループのそれぞれが、同じ重さを有する値を表す符号語を含み、グループのそれぞれにおける符号語が、符号語によって表される値に対して辞書式に順序付けられる符号語のグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義する符号構造に従って可変長の符号化を実行し、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、可変長の符号化の結果を生成するよう構成されているプロセッサを備える装置を提供する。
追加の態様において、本開示は、可変長の符号語を指定する符号化ツリーにおける符号語のグループであって、グループのそれぞれが、同じ重さを有する値を表す符号語を含み、グループのそれぞれにおける符号語が、符号語によって表される値に対して辞書式に順序付けられる符号語のグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義する符号構造について、サブグループのそれぞれの基本符号語、グループのそれぞれの中の符号語の位置、第1のサブグループのそれぞれの中の符号語の数、およびサブグループのそれぞれの中の符号語の長さを使用して可変長の符号化を実行することと、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、可変長の符号化の結果を生成することとを備える方法を提供する。
追加の態様において、本開示は、符号構造について、可変長の符号語を指定する符号化ツリーにおける符号語のグループであって、グループのそれぞれが、同じ重さを有する値を表す符号語を含み、グループのそれぞれにおける符号語が、符号語によって表される値に対して辞書式に順序付けられる符号語のグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義するための手段と、サブグループのそれぞれの基本符号語、グループのそれぞれの中の符号語の位置、第1のサブグループのそれぞれの中の符号語の数、およびサブグループのそれぞれの中の符号語の長さを使用して可変長の符号化を実行するための手段と、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、可変長の符号化の結果を生成するための手段とを備える装置を提供する。
追加の態様において、本開示は、可変長の符号語を指定する符号化ツリーにおける符号語のグループであって、グループのそれぞれが、同じ重さを有する値を表す符号語を含み、グループのそれぞれにおける符号語が、符号語によって表される値に対して辞書式に順序付けられる符号語のグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義する符号構造について、プロセッサに、サブグループのそれぞれの基本符号語、グループのそれぞれの中の符号語の位置、第1のサブグループのそれぞれの中の符号語の数、およびサブグループのそれぞれの中の符号語の長さを使用して可変長の符号化を実行させ、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、可変長の符号化の結果を生成させるための命令を備える有形のコンピュータ可読媒体を提供する。
追加の態様において、本開示は、可変長の符号語を指定する符号化ツリーにおける符号語のグループであって、グループのそれぞれが、同じ重さを有する値を表す符号語を含み、グループのそれぞれにおける符号語が、符号語によって表される値に対して辞書式に順序付けられる符号語のグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義する符号構造について、サブグループのそれぞれの基本符号語、グループのそれぞれの中の符号語の位置、第1のサブグループのそれぞれの中の符号語の数、およびサブグループのそれぞれの中の符号語の長さを使用して可変長の符号化を実行し、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、可変長の符号化の結果を生成するよう構成されているプロセッサを備える装置を提供する。
別の態様において、本開示は、符号化ツリーにおける符号語のグループであって、グループのそれぞれが、同じ重さを有する値を表す符号語を含み、グループのそれぞれにおける符号語が、符号語によって表される値に対して辞書式に順序付けられる符号語のグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義する可変長の符号構造を使用した可変長の符号化のためのデータ構造を備える有形のコンピュータ可読媒体を提供する。
別の態様において、本開示は、符号化ツリーにおける符号語のグループであって、グループのそれぞれが、同じ重さを有する値を表す符号語を含み、グループのそれぞれにおける符号語が、符号語によって表される値に対して辞書式に順序付けられる符号語のグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義する符号構造に従って可変長の符号化を実行するよう構成されているプロセッサであって、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、可変長の符号化の結果を生成するよう構成されているプロセッサを備える集積回路装置を提供する。
別の態様において、本開示は、符号化ツリーにおける符号語のグループであって、グループのそれぞれが、同じ重さを有する値を表す符号語を含み、グループのそれぞれにおける符号語が、符号語によって表される値に対して辞書式に順序付けられる符号語のグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義する符号構造に従って可変長の符号化を実行するよう構成されているプロセッサであって、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、可変長の符号化の結果を生成するよう構成されているプロセッサを備える無線通信装置ハンドセット(handset)を提供する。
別の態様において、本開示は、可変長の符号語を指定する符号化ツリーのレベルについての基本符号語の部分値と、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを備えるデータ構造を格納するメモリと、格納されたデータ構造における部分値およびスキップインジケータに基づいて、ビットストリームからの符号語のうちの1つを復号するためにメモリにアクセスする復号器とを備える集積回路装置を提供する。
別の態様において、本開示は、可変長の符号語を指定する符号化ツリーのレベルについての基本符号語の部分値と、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータとを備えるデータ構造を格納するメモリと、格納されたデータ構造における部分値およびスキップインジケータに基づいて、ビットストリームからの符号語のうちの1つを復号するためにメモリにアクセスする復号器と、無線通信によって符号器から符号語を受信するための受信機と、復号された符号語に少なくとも一部分基づいてユーザに出力を提示する出力装置とを備える無線通信装置ハンドセットを提供する。
本開示に記載した技術は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組み合わせにおいて実装され得る。ソフトウェアに実装された場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはディジタル信号プロセッサ(DSP)、または他の等価の一体型または別個の論理回路など、1つまたは複数のプロセッサにおいて実行され得る。これらの技術を実行するソフトウェアは、最初にコンピュータ可読媒体に格納され、プロセッサによってロードされ、実行され得る。したがって、本開示は、本開示に記載した様々な技術のうちの任意のものをプロセッサに実行させるための命令を備えるコンピュータ可読媒体を備えるコンピュータプログラム製品も企図する。
本開示の1つまたは複数の態様の詳細は、添付の図面および以下の説明に記載されている。本開示に記載されている技術の他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになる。
映像符号化および復号システムを示すブロック図。 映像符号器の一例を示すブロック図。 映像復号器の一例を示すブロック図。 2値符号化ツリーの一例を示す図。 漸近的挙動(asymptotic behavior)を有する適応形ブロック符号の冗長レートを示すグラフ。 ブロックグループ、サブグループ、基本符号語を示す2値ツリーの図。 異なる値pでの適応形ブロック符号の冗長レートの比較を示すグラフ。 異なる値pでの適応形ブロック符号の冗長レートの比較を示すグラフ。 源データの非対称に対する冗長の感度を示すグラフ。 本開示の一態様による、単調分布についてのメモリ効率の良い可変長の符号化を構成するための方法を示すフロー図。 図9の方法に従って構成された可変長の符号を使用して記号を符号化するための方法を示すフロー図。 図9の方法に従って構成された可変長の符号を復号するための方法を示すフロー図。 本開示の別の態様による適応形ブロック符号を構成するための方法を示すフロー図。 図12の方法に従って構成された可変長の符号を使用してブロックを符号化するための方法を示すフロー図。 図12の方法に従って構成された可変長の符号を復号するための方法を示すブロック図。
一般に、本開示は、ディジタル映像、画像、音声、または言語データの符号化など、様々な用途向けの、メモリ効率の良い低複雑性のデータの適応形可変長符号化(VLC)の技術を対象とする。一部の態様では、技術は、非常にコンパクトなデータ構造をサポートするために、特定の組の符号語の特性を利用することができる。他の態様では、技術は、無記憶情報源によって生成される2値系列の低複雑性の適応形符号化および復号をサポートすることができる。本開示に記載されている技術は、一般のデータ圧縮および符号化を含めて、広範囲の実用的な応用に適用可能であるが、本開示は、例および例証の目的で、ディジタル映像符号化および復号について言及する。
本開示の第1の一般的な態様によれば、コンパクトなデータ構造をサポートするために、開示された技術は、任意の特定の符号構成方式(code construction scheme)に依存する必要はない。例えば、ハフマン、シャノン、シャノン−ファノ、ギルバート−ムーア、または他の符号構成方式を使用することができる。しかし、この第1の一般的な態様については、こうした符号は、記号の確率が単調に増加する源について、記号の入力アルファベットから構成されることを前提とする。より詳細には、符号語は、単調に減少する長さ、または少なくとも非増加の長さを有すること、および同じ長さの符号語は、それらが表す入力アルファベットにおける記号と同じ辞書式順序を有することを前提とする。
所望の辞書式順序は、入力アルファベットの並べ替えによって達成することができる。こうした符号語の場合、基本符号語値は、符号化ツリーのレベルごとに計算することができる。基本符号語値は、符号化ツリーの各レベルにおける、辞書式に最小の正準符号語(canonical codeword)を表す。そのそれぞれの記号の基本符号語値およびインデックスは、並べ替えられた配列に格納され得る。インデックスは、ツリーにおける埋められたレベルごとに、オフセット値として格納され得る。復号プロセスは、ビットストリームバッファと、左寄せの基本符号語値との比較、次いで復号された記号のインデックスの簡単な直接計算を伴う。
可変長の符号の漸進的復号を容易にする非常にコンパクトなデータ構造を生成するためにさらに圧縮することができるデータ構造により、こうした符号を一意に記述するために、上記の特性を使用することができる。例えば、左寄せの基本符号語値は、通常、右から左への大量の先行ゼロ(leading zero)を有する。先行ゼロの数は、プロセスが、該当する符号化ツリーにおけるより深い層に移動するにつれて、単調に低下する。したがって、一番最初の層で開始し、下方に移動しながら、ビットが順次復号されるとき、復号プロセスの精度に影響を与えることなく、先行ゼロビットの一部をスキップすることができる。
先行ゼロは、一定単位、例えば8ビット単位で削除することができ、これは、従来の8ビット/バイトコンピュータにおけるビットストリームバッファ管理に便利である。このプロセスを管理するために、1つまたは複数のスキップインジケータの追加の表を提供することができる。一例として、スキップインジケータは、先行ゼロがドロップされると、異なる基本符号語値を区別することができるように、復号器に、ビットストリームバッファにおいて一定単位だけ前方にスクロールするよう指示する。先行ゼロの削除によって、変更された基本符号語値の結果として得られた配列の幅を実質的に低減することができ、したがって、メモリ使用率を節約することができる。
したがって、第1の一般的な態様において、本開示は、可変長の符号語を指定する符号化ツリーのレベルについての基本符号語の部分値を生成することと、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータを生成することと、メモリ内のデータ構造に、部分値およびスキップインジケータを格納することとを備える方法を企図する。データ構造は、テーブル、リンクリスト、2値ツリー、ラディックスツリー、フラットファイルなど、広範なデータ構造のうちの任意のものでよく、多くの形式のランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、またはその両方など、様々な異なるメモリ装置のうちの任意のものに格納することができる。データ構造は、符号器または復号器内のこうしたメモリに格納することができる。例えば、復号器は、メモリ効率の良い方法で符号語の可変長の復号を行うために、復号器に関連付けられているメモリから、データ構造、またはデータ構造のコンテンツの部分にアクセスすることができる。
この第1の一般的な態様によれば、本開示は、可変長の符号語を指定する符号化ツリーのレベルについての基本符号語の部分値を生成し、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示するスキップインジケータを生成するよう構成されているプロセッサと、データ構造に部分値およびスキップインジケータを格納するメモリとをさらに企図する。こうした情報は、単一のデータ構造または複数のデータ構造に格納することができる。したがって、データ構造への言及は、本開示において企図された情報を格納する1つまたは複数のデータ構造を含み得る。可変長の符号化を実行するために、データ構造にアクセスするよう構成されているプロセッサは、源装置または受信装置内、または可変長の符号化を実行する際に、符号器および/または復号器によって使用する符号構造を定義するデータ構造を生成する別個の装置内に実装することができる。
本開示の第1の一般的な態様に従う、コンパクトなデータ構造を達成するためのこの技術によれば、それぞれの有効な符号語の長さは、符号ツリーにおける外部ノードを含むレベルに対応し得る。上述したように、データ構造は、基本符号語の部分値、および1つまたは複数のスキップインジケータを含み得る。より詳細には、一部の実施形態では、データ構造は、有効な符号語長ごとに、以下の情報、(a)符号ツリーの現在のレベルにおける辞書式に最小(または最大)の符号語の部分値、(b)部分値におけるビット数、(c)辞書式に最小(または最大)の符号語に対応する記号の値、および(d)符号ツリーの次のレベルに進む前に、いくつかの数のビットをスキップするよう復号器に指示するインジケータを含み得る。したがって、データ構造は、基本符号語によって表される記号の値、および基本符号語の部分値の長さ、すなわち、基本符号語の各部分値におけるビット数をさらに含み得る。符号化および復号の技術は、このデータ構造を使用して、生成または復号すべき符号語に対応するレベルを識別し、次いで、符号語または復号された記号の値を直接計算することができる。したがって、データ構造は、そのうちの一部が結合されたCODECとして構成され得る映像符号器または復号器、画像符号器または復号器、音声符号器または復号器、または言語符号器または復号器のメモリに格納することができる。
可変長の符号の符号化または復号のための既存の技術の例は、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に記載されている。これらの既存の技術に比べて、コンパクトなデータ構造を達成するための開示された技術は、いくつかの利点を提供し得る。
第1の例として、開示された技術によって生成されるデータ構造は、辞書式に最小の符号語の部分値が、例えば映像復号器によって格納され、使用されるという事実により、かなり少量のメモリを使用し得る。別の例として、開示された技術は、ビットストリームデータへの増分的アクセスを使用することができ、これによって、ビットストリームバッファを、適度に短いレジスタによって提示し、例えばスキップ指示を介して、任意の便利な間隔で更新することができ、実装の複雑性をさらに低減することができる。
例えば、一部の実装では、非常に長い符号の場合でさえ、32ビットレジスタで十分であり得る。さらに、更新を8ビット間隔で行うことができる。全体的に、開示された技術は、可変長符号の表現および符号化/復号の複雑性をかなり低減することができ、これによって、圧縮アルゴリズムの設計者は、かなり大きい、したがって、より効率の良いコードブックを使用することができるようになる。
本開示の第2の一般的な態様によれば、無記憶情報源によって生成された2値系列の低複雑性の適応形符号化および復号をサポートするために、開示された技術は、ある系列における前のビットの非ゼロビットの数によって識別される1組のコンテキストのために構成されたユニバーサルブロック符号(universal block code)を実装し得る。この第2の一般的な態様は、非常にコンパクトなデータ構造の生成に関して上述した第1の一般的な態様とは別に、またはそれと共に提供され、または実施され得る。低複雑性の適応形符号化および復号のための技術は、この第2の一般的な態様によれば、R. E. Krichevsky and V. K. Trofimov, The Performance of Universal Encoding, IEEE Trans Information Theory, 27 (1981) 199-207に記載されている推定を改良する、こうした符号の漸近的冗長について開示された決まったやり方に依存し得る。
この第2の一般的な態様による技術は、いくつかの推定された密度のために設計され、ある系列における前のブロック(コンテキスト)内の非ゼロのビットの数によってインデックスが付けられたハフマン符号の配列を使用することができる。n=8・・・16の小さめなサイズのビットのブロックを使用する(および対応する1.5・・・5kバイトのメモリを使用する)ことによって、こうした技術は、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に記載されており、JBIG画像符号化標準に使用されるQコーダアルゴリズム、および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に記載されており、映像圧縮のためのITU−T H.264/MPEG AVC標準で使用されるCABACアルゴリズムなど、他の既存のアルゴリズムに匹敵する、またはそれより優れた圧縮性能を達成し得る。
低複雑性の適応形符号化および復号は、本開示のこの第2の一般的な態様によれば、無記憶情報のモデルにおいて、ビットのブロックの確率、またはその推定が、そのビットの実際のパターンではなく、その重さ(非ゼロのビットの数)のみに依存するという認識に基づき得る。したがって、ある固定長のすべての可能なブロックの組を、同じ重さ(およびしたがって、同じ確率)のブロックを含む異なるグループに分けることができる。各グループが、ブロックを、自然にまたは並べ替えによって、辞書式順序で格納することが想定され得る。
蓋然性が等しいブロックの各グループは、多くとも2つのサブグループを含むことができ、こうした各サブグループ内のブロックが同じ長さの符号語によって符号化されることは、最小冗長符号(ハフマン符号やシャノン符号など)の既知の特性である。一般性を損ねることなく、第1のサブグループにおける符号語の長さは、第2のサブグループにおける符号語の長さより短いことがさらに想定され得る。グループ内のブロック(または単語)は、辞書式順序に従うため、これは、より大きい符号語長を有するサブグループと、より短い符号語長を有するサブグループとで簡単に分けることができる。インデックス値は、グループ内のブロックの位置を示す。各サブグループ内の辞書式に最小のブロック(または単語)に、基本符号語が割り当てられる。基本符号語が与えられると、各サブグループ内の残りの符号語は、容易に計算することができる。
したがって、本開示のこの第2の一般的な態様によれば、例えば、符号化ツリーにおける入力ブロックまたは単語およびそれぞれの出力符号語のグループであって、同じ重さを有するブロック(または単語)を表す符号語をぞれぞれ含むグループと、グループのそれぞれの中の符号語の第1および第2のサブグループであって、第1のサブグループが第1の長さを有する符号語を含み、第2のサブグループが第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義する符号構造を使用する符号器または復号器によって可変長符号化を実行することができる。グループのそれぞれの中のブロックは、辞書式に順序付けられ、次いで、辞書式の順序が各サブグループにおいて維持されるように、サブグループに分けられる。さらに、サブグループ内の各ブロックに対応する符号語が割り当てられるので、それらも同じ辞書式順序に従い、直接計算による符号化および復号を容易にする。
ブロック、そのグループおよびサブグループのこの配列に基づいて、簡略化されたプロセスを使用して、符号語を直接計算することができる。例えば、ブロックの重さおよびインデックス値を取得すると、インデックス値が第1のサブグループにおける最大数のブロック未満である場合、符号語を見つけ出すために、第1のサブグループが選択される。そうでない場合、符号語を見つけ出すために、第2のサブグループが選択される。次いで、選択されたサブグループについての基本符号語を取り出すと、基本符号語値を、選択されたサブグループ内のブロックのインデックス値に基づいて決定された値と合計することによって、符号語は、容易に計算される。本開示のこの第2の一般的な態様のために、ブロックまたは単語という用語は、符号化方式に従って符号化され得る入力量を一般的に指すのに区別なく使用され得る。ブロックまたは単語は、2値アルファベット{0,1}など、入力アルファベットから形成され得る一連の記号を含み得る。符号語は、一般に、符号化方式の結果としてブロック(または単語)に割り当てられた出力量を指す。
本開示に記載されている技術のこれらおよび他の態様について、以下でより詳しく説明する。技術は、一緒にまたは別々に使用することができ、ディジタル映像、画像、音声、または言語データの符号化または復号のために構成されるシステムおよび装置を含めて、様々な符号化および復号システムおよび装置のうちの任意のものにおいて実装することができる。例および例証の目的で、本開示は、データ圧縮および符号化の一般の実用的な応用、または異なるタイプのデータへの他の特定の適用に関する制限なく、こうした技術をディジタル映像符号化および復号に適用することを説明する。
図1は、映像符号化および復号システム10を示すブロック図である。図1に示されているように、システム10は、通信チャネル16を介して受信装置14に符号化された映像を送信する源装置12を含む。源装置12は、映像源18、映像符号器20、および送信機22を含み得る。受信装置14は、受信機24、映像復号器26、および映像表示装置28を含み得る。システム10は、ディジタル映像データの、メモリ効率の良い低複雑性の適応形可変長符号化(VLC)の技術を適用するよう構成され得る。特に、メモリ効率の良い低複雑性の適応形VLC技術は、予測映像符号化(predictive video coding)プロセスによって生成される残余ブロック係数(residual block coefficient)のエントロピ符号化に使用することができる。これらの技術は、一連のゼロを使用して、非ゼロ変換係数の位置を符号化する映像符号化方式、または他の映像符号化方式に適用することができる。
図1の例において、通信チャネル16は、無線周波数(RF)スペクトルまたは1つまたは複数の物理的な伝送路など、任意の無線または有線の通信媒体、または無線および有線の媒体の任意の組み合わせを備え得る。チャネル16は、例えばローカルエリアネットワーク、広域ネットワーク、またはグローバルネットワーク(global network)、例えばインターネットなど、パケットベースのネットワークの一部を形成し得る。通信チャネル16は、一般に、映像データを源装置12から受信装置14に送信するための任意の適した通信媒体、または異なる通信媒体の集まりを表す。
源装置12は、宛先装置14に送信するための映像を生成する。しかし、一部の場合、装置12、14は、実質的に対称の方法で動作し得る。例えば、装置12、14のそれぞれは、映像符号化および復号の成分を含み得る。したがって、システム10は、例えば、映像ストリーミング、映像ブロードキャスティング(video broadcasting)、またはテレビ電話のためなど、映像装置12、14の間の一方向または双方向の映像伝送をサポートし得る。他のデータ圧縮および符号化の用途では、装置12、14は、画像、言語、または音声データなど、または映像、画像、言語、および音声データのうちの2つ以上の組み合わせなど、他のタイプのデータを送信し、受信し、または交換するよう構成することができる。したがって、映像の用途の説明は、例証の目的で提供され、本明細書で広範に記載されるように、本開示の様々な態様の制限と見なされないものとする。
映像源18は、1つまたは複数のビデオカメラ、前に捕捉した映像を含む映像アーカイブ、または映像コンテンツプロバイダから提供されたライブ映像など、映像捕捉装置を含み得る。別の代替として、映像源18は、源映像としてのコンピュータグラフィックスベースのデータ、またはライブ映像とコンピュータが生成した映像との組み合わせを生成し得る。一部の場合、映像源18がカメラであれば、源装置12および受信装置14は、いわゆるカメラ付き電話、またはテレビ電話を形成し得る。したがって、一部の態様において、源装置12、受信装置14、またはその両方は、移動電話など、無線通信装置ハンドセットを形成し得る。いずれの場合でも、捕捉された、前に捕捉された、またはコンピュータで生成された映像は、送信機22、チャネル16、および受信機24を介して映像源装置12から映像受信装置14の映像復号器26に送信するために、映像符号器20によって符号化され得る。表示装置28は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイなど、様々なディスプレイ装置のうちの任意のものを含み得る。
映像符号器20および映像復号器26は、空間的、時間的、および/またはSN比(SNR)スケーラビリティのために、拡張可能な映像符号化をサポートするよう構成され得る。一部の態様において、映像符号器20および映像復号器22は、SVCのための細粒度SNRスケーラビリティ(FGS)符号化(fine granularity SNR scalability (FGS) coding)をサポートするよう構成され得る。符号器20および復号器26は、基本層(base layer)および1つまたは複数の拡張可能な高機能層(enhancement layer)の符号化、伝送、および復号をサポートすることによって、様々な度合いのスケーラビリティをサポートし得る。拡張可能な映像符号化では、基本層は、最低レベルの品質で映像データを運ぶ。1つまたは複数の高機能層は、より高い空間的、時間的、および/またはSNRレベルをサポートするために、追加のビットストリームを運ぶ。
映像符号器20および映像復号器26は、MPEG−2、MPEG−4、ITU−T H.263、またはITU−T H.264/MPEG−4 Advanced Video Coding(AVC)などの映像圧縮標準に従って動作し得る。図1には示されてないが、一部の態様において、映像符号器20および映像復号器26は、それぞれ音声符号器および復号器と統合され、共通のデータストリームまたは別々のデータストリームにおける音声および映像の両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含むことができる。該当する場合、MUX−DEMUXユニットは、ITU H.223多重化装置プロトコル、またはユーザデータグラムプロトコル(UDP)など他のプロトコルに準拠し得る。
H.264/MPEG−4(AVC)標準は、Joint Video Team(JVT)として知られる共同パートナーシップの成果として、ITU−T Video Coding Experts Group(VCEG)、およびISO/IEC Moving Picture Experts Group(MPEG)によって策定された。H.264標準は、本明細書では、H.264標準またはH.264仕様、またはH.264/AVC標準または仕様と呼ばれ得るITU−T Study Groupによる2005年3月付けのITU-T Recommendation H.264, Advanced video coding for generic audiovisual servicesに記載されている。
Joint Video Team(JVT)は、引き続き、H.264/MPEG−4 AVCへの拡張可能な映像符号化(SVC)の拡張に取り組んでいる。発展するSVCの拡張の仕様は、Joint Draft(JD)の形をしている。JVTによって作成されたJoint Scalable Video Model(JSVM)は、本開示に記載されている様々な符号化タスクのために、システム10内で使用され得る、拡張可能な映像で使用するためのツールを実装する。細粒度SNRスケーラビリティ(FGS)符号化に関する詳細な情報は、例えばJoint Draft6(SVC JD6)におけるThomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz, and Mathias Wien, "Joint Draft 6: Scalable Video Coding," JVT-S 201, April 2006, Geneva、およびJoint Draft9(SVC JD9)におけるThomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz, and Mathias Wien, "Joint Draft 9 of SVC Amendment," JVT-V 201, January 2007, Marrakech, MoroccoなどのJoint Draft文書で見つけることができる。
一部の態様において、映像ブロードキャスティングの場合、本開示に記載されている技術は、例えば、無線映像ブロードキャストサーバまたは無線通信装置ハンドセットを介して、技術標準TIA−1099(「FLO仕様」)として発行されるForward Link Only (FLO) Air Interface Specification, "Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast"を使用して、terrestrial mobile multimedia multicast(TM3)システムにおいて、リアルタイム映像サービスを配信するためのEnhanced H.264映像符号化に適用され得る。FLO仕様は、ビットストリーム構文記述およびセマンティクス、およびFLO Air Interfaceに適した復号プロセスを定義する例を含む。あるいは、映像は、DVB−H(digital video broadcast−handheld)、ISDB−T(integrated services digital broadcast−terrestrial)、またはDMB(digital media broadcast)など、他の標準に従ってブロードキャストされ得る。したがって、源装置12は、移動無線端末、映像ストリーミングサーバ、または映像ブロードキャストサーバとすることができる。しかし、本開示に記載されている技術は、ブロードキャスト、マルチキャスト、またはポイントツーポイントシステムの任意の特定のタイプに限定されない。ブロードキャストの場合、源装置12は、映像データのいくつかのチャネルを、図1の受信装置14にそれぞれ類似し得る複数の受信装置にブロードキャストすることができる。
映像符号器20および映像復号器26はそれぞれ、1つまたは複数のマイクロプロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、別個のロジック、ソフトウェア、ハードウェア、ファームウェア、またはその任意の組み合わせとして実装され得る。映像符号器20および映像復号器26のそれぞれは、いずれもそれぞれの移動装置、加入者装置、ブロードキャスト装置、サーバなどに、結合された符号器/復号器(CODEC)の一部として統合され得る1つまたは複数の符号器または復号器に含まれ得る。さらに、源装置12および受信装置14はそれぞれ、該当する場合、無線通信をサポートするのに十分な無線周波数(RF)無線構成要素およびアンテナを含めて、符号化された映像の送受信に適した変調、復調、周波数変換、フィルタリング、および増幅器の構成要素を含み得る。しかし、説明を簡単にするために、こうした構成要素は、図1に示していない。
映像系列は、一連の映像フレームを含む。映像符号器20は、映像データを符号化するために、個々の映像フレーム内の画素のブロックに対して働く。映像ブロックは、固定または可変のサイズを有していてよく、指定された符号化標準に従ってサイズが異なり得る。各映像フレームは、一連のスライスを含む。各スライスは、サブブロックに配列され得る一連のマクロブロックを含み得る。一例として、ITU−T H.264標準は、輝度成分(luma component)については16×16、8×8、4×4、色度成分(chroma component)については8×8など、様々なブロックサイズのイントラ予測、および輝度成分については16×16、16×8、8×16、8×8、8×4、4×8、4×4、色度成分については対応する変倍サイズなど、様々なブロックサイズのインター予測をサポートする。
より小さい映像ブロックは、より良い解像度を提供することができ、より高いレベルの詳細を含む映像フレームの位置の特定に使用され得る。一般に、マクロブロック(MB)および様々なサブブロックは、映像ブロックであると考えることができる。さらに、スライスは、MBおよび/またはサブブロックなど、一連の映像ブロックであると考えることができる。各スライスは、別々に復号可能な単位とすることができる。予測後、8×8の残余ブロック、または4×4の残余ブロックに変換が行われ、イントラ16×16予測モードが使用される場合、色度成分または輝度成分についての4×4ブロックのDC係数に、追加の変換が適用され得る。
図1のシステム10の映像符号器20および/または映像復号器26は、本開示に記載したように、メモリ効率の良い低複雑性の適応形可変長符号化(VLC)のための技術を使用するよう構成され得る。特に、映像符号器20および/または映像復号器26は、メモリ使用率、処理オーバーヘッド、処理複雑性、帯域幅消費、データ格納スペース、および/または消費電力を低減するために、こうした技術の少なくとも一部を適用する、エントロピ符号器およびエントロピ復号器をそれぞれ含み得る。
図2は、図1に示すような映像符号器20の一例を示すブロック図である。映像符号器20は、少なくとも一部分、まとめて集積回路装置と呼ばれ得る1つまたは複数の集積回路装置として形成され得る。一部の態様では、映像符号器20は、無線通信装置ハンドセットまたはブロードキャストサーバの一部を形成し得る。映像符号器20は、映像フレーム内のブロックのイントラおよびインター符号化を実行し得る。イントラ符号化は、空間的予測に依存して、所与の映像フレーム内の映像における空間的冗長度を低減し、または削除する。インター符号化は、時間的予測に依存して、映像系列の隣接するフレーム内の映像の時間的冗長度を低減し、または削除する。インター符号化では、映像符号器20は、隣接するフレーム間の整合する映像ブロックの動きを追跡するために、動き推定を行う。
図2に示すように、映像符号器20は、符号化すべき映像フレーム内の現在の映像ブロック30を受信する。図2の例において、映像符号器20は、動き推定ユニット32、基準フレームストア34、動き補償ユニット36、ブロック変換ユニット38、量子化ユニット40、逆量子化ユニット42、逆変換ユニット44およびエントロピ符号化ユニット46を含む。エントロピ符号化ユニット46は、符号化に有用なデータを取得するために、メモリ45に格納されている1つまたは複数のデータ構造にアクセスし得る。ループ内デブロッキングフィルタ(in-loop deblocking filter)(図示せず)は、ブロッキングアーティファクト(blocking artifact)を削除するために、ブロックをフィルタ処理するために適用され得る。映像符号器20は、加算器48および加算器50も含む。図2は、映像ブロックのインター符号化のための映像符号器20の時間的予測構成要素を示す。説明を簡単にするために、図2には示されていないが、映像符号器20は、いくつかの映像ブロックのイントラ符号化のための、空間的予測構成要素も含み得る。
動き推定ユニット32は、1つまたは複数の動きベクトルを生成するために、映像ブロック30を、1つまたは複数の隣接する映像フレーム内のブロックと比較する。1つまたは複数の隣接するフレームは、前に符号化されたブロックから再構成された映像ブロックを格納するための任意のタイプのメモリまたはデータ格納装置を備え得る基準フレームストア34から取り出すことができる。動き推定は、例えば、16×16、16×8、8×16、8×8、またはより小さいブロックサイズなど、可変サイズのブロックについて実行され得る。動き推定ユニット32は、例えば、レート歪みモデル(rate distortion model)に基づいて、現在の映像ブロック30に最も近い、隣接するフレーム内の1つまたは複数のブロックを識別し、隣接するフレーム内のブロックと現在の映像ブロックとの間の変位を決定する。これに基づいて、動き推定ユニット32は、現在の映像ブロック30と現在の映像ブロック30を符号化するために使用される基準フレームからの1つまたは複数の一致するブロックとの間の変位の大きさおよび軌道を示す1つまたは複数の動きベクトル(MV)を生成する。
動きベクトルは、半分または1/4の画素精度、またはさらに細かい精度を有している場合があり、これによって映像符号器20は、整数画素位置より高い精度で動きを追跡し、より良い予測ブロックを取得することができる。小数画素値を含む動きベクトルが使用されると、動き補償ユニット36において、補間演算が行われる。動き推定ユニット32は、レート歪みモデルなど、何らかの基準を使用して、映像ブロックについての最高のブロック分割、および1つまたは複数の動きベクトルを識別する。例えば、双方向予測の場合、1つより多くの動きベクトルが存在する場合がある。結果として得られたブロック分割および動きベクトルを使用して、動き補償ユニット36は、予測映像ブロックを形成する。
映像符号器20は、加算器48において、元の、現在の映像ブロック30から、動き補償ユニット36によって生成された予測映像ブロックを取り去ることによって、残余映像ブロックを形成する。ブロック変換ユニット38は、H.264/AVCで使用される4×4または8×8の整数変換などの変換を残余ブロックに適用して、残余変換ブロック係数を生成する。量子化ユニット40は、ビットレートをさらに減らすために、残余変換ブロック係数を量子化する。エントロピ符号化ユニット46は、ビットレートをまたさらに減らすために、量子化された係数をエントロピ符号化する。
エントロピ符号化ユニット46は、VLC符号化を量子化されたブロック係数に適用するために、可変長符号化(VLC)ユニットとして動作する。特に、エントロピ符号化ユニット46は、本開示に記載したようなメモリ効率の良い低複雑性の適応形VLC技術を使用して、ディジタル映像ブロック係数のVLC符号化を実行するよう構成することができる。したがって、本開示に記載されている様々な符号化プロセスは、映像データの符号化を実行するために、エントロピ符号化ユニット46内に実装され得る。あるいは、こうしたエントロピ符号化ユニット46は、それだけには限定されないが、映像、画像、言語、および音声データを含めて、様々なデータのうちの任意のものを符号化するために、本開示に記載されているプロセスを実行し得る。一般に、映像復号器26は、例えば図3を参照して説明するように、符号化された映像を復号し、再構成するために、VLC復号を含めて、逆の操作を実行する。
逆量子化ユニット42および逆変換ユニット44は、残余ブロックを再構成するために、逆量子化および逆変換をそれぞれ適用する。加算器50は、再構成された残余ブロックを、動き補償ユニット36によって生成された動き補償済みの予測ブロックに追加して、再構成された映像ブロックを生成して基準フレームストア34に格納する。再構成された映像ブロックは、次の映像フレームにおけるブロックを符号化するために、動き推定ユニット32、および動き補償ユニット36によって使用される。
図3は、映像復号器26の一例を示すブロック図である。映像復号器26は、少なくとも一部分、まとめて集積回路装置と呼ばれ得る1つまたは複数の集積回路装置として形成され得る。一部の態様では、映像復号器26は、無線通信装置ハンドセットの一部を形成し得る。映像復号器26は、映像フレーム内のブロックのイントラおよびインター復号を実行し得る。図3に示されるように、映像復号器26は、映像符号器20によって符号化された符号化済みの映像ビットストリームを受信する。図3の例において、映像復号器26は、エントロピ復号ユニット52、動き補償ユニット54、逆量子化ユニット56、逆変換ユニット58、および基準フレームストア62を含む。映像復号器26は、加算器64の出力をフィルタ処理するループ内デブロッキングフィルタ(図示せず)も含み得る。映像復号器26は、加算器64も含む。図3は、映像ブロックのインター復号のための映像復号器26の時間的予測構成要素を示す。図3には示されていないが、映像復号器26は、いくつかの映像ブロックのイントラ復号のための、空間的予測構成要素も含み得る。
エントロピ復号ユニット52は、符号化された映像ビットストリームを受信し、ビットストリームからの、量子化された残余係数、マイクロブロック符号化モード、および動きベクトルおよびブロック分割を含み得る動き情報を復号する。したがって、エントロピ復号ユニット52は、VLC復号ユニットとしての役目を果たす。例えば、符号化されたビットストリームからの量子化された残余係数を復号するために、図2のエントロピ符号化ユニット46のように、図3のエントロピ復号ユニット52は、本開示に記載されているような、ディジタル映像ブロック係数のメモリ効率の高い低複雑性の適応形VLC復号を実行することができる。しかし、エントロピ復号ユニット52は、符号化されたビットストリームから量子化されたブロック係数を取り出すために、図2のエントロピ符号化ユニット46に対して逆の方法でVLC復号を実行することができる。したがって、本開示に記載されている様々な復号プロセスは、映像データの復号を実行するために、エントロピ復号ユニット52内に実装される。あるいは、こうしたエントロピ復号ユニット52は、それだけには限定されないが、映像、画像、言語、および音声データを含めて、様々なデータのうちの任意のものを復号するために、本開示に記載されているプロセスを実行し得る。いずれの場合でも、エントロピ復号ユニット52によって実行された可変長の符号化の結果は、ユーザに出力され、メモリに格納され、かつ/または別の装置または処理ユニットに送信され得る。
動き補償ユニット54は、予測映像ブロックを生成するために、動きベクトルおよびブロック分割、および1つまたは複数の再構成された基準フレームを基準フレームストア62から受信する。逆量子化ユニット56は、量子化されたブロック係数を逆量子化、すなわち逆量子化する。逆変換ユニット58は、残余ブロックを生成するために、逆DCT、逆4×4または8×8整数変換など、逆変換を係数に適用する。予測映像ブロックは、次いで、復号されたブロックを形成するために、加算器64によって、残余ブロックと合計される。デブロッキングフィルタ(図示せず)は、ブロッキングアーティファクトを削除するために、復号されたブロックをフィルタ処理するために適用され得る。フィルタ処理されたブロックは、次いで、その後の映像フレームの復号のために基準フレームを提供し、表示装置28(図1)を駆動するために、復号された映像を生成する基準フレームストア62に入れられる。
可変長符号のメモリ効率の良い符号化
次に、本開示の第1の一般的な態様による、コンパクトなデータ構造をサポートするための可変長符号化のためのメモリ効率の良い技術の一例について、より詳細に説明する。この技術は、ハフマン、シャノン、シャノン−ファノ、ギルバートムーア、または他の符号など、任意の特定の符号構成方式に依存する必要はない。しかし、この技術は、記号の確率が単調に増加する源について、符号が構成されることを前提とする。より詳細には、符号語は、単調に減少する(または少なくとも非増加の)長さを有すること、および同じ長さの符号語は、それらが表す入力アルファベットにおける記号と同じ辞書式順序を有することを前提とする。
この技術は、映像符号化または他の用途に適用されるとき、非常にコンパクトなデータ構造により、こうした符号を一意に記述するために、上記の特性を使用する。上述したように、データ構造は、有効な符号語の長さ、すなわち符号ツリーにおける外部ノードを含むレベルごとに、以下の情報、
a.符号ツリー中の現在のレベルにおける辞書式に最小(または最大)の符号語の部分値
b.部分値におけるビット数
c.辞書式に最小(または最大)の符号語に対応する記号の値
d.符号ツリーの次のレベルに進む前に、いくつかの数のビットをスキップするよう復号器に指示するインジケータ
を含み得る。
符号化および復号のプロセスは、この構造を使用して、生成(または復号)すべき符号語に対応する符号ツリーのレベルを識別し、次いで、符号語(または復号された記号)の値を直接計算することができる。
この技術によって、辞書式に最小の符号語の部分値のみが格納されるという事実により、符号化および復号に、かなり少量のメモリを使用できるようになる。データ構造は、テーブル、リンクリスト、2値ツリー、ラディックスツリー、フラットファイルなど、広範なデータ構造のうちの任意のものでよく、多くの形式のランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、またはその両方など、様々な異なるメモリ装置のうちの任意のものに格納することができる。データ構造は、図2および図3にそれぞれ示されているメモリ45またはメモリ51内など、符号器または復号器内のこうしたメモリに格納することができる。この場合も、符号化ツリーのレベルの少なくともいくつかは、符号語によって表される記号値の順序に対して辞書式順序で配列される符号語を含む。したがって、基本符号語のそれぞれは、符号化ツリー中の対応するレベルにおける、辞書式に最小の符号語である。さらに、この技術は、ビットストリームデータへの増分的アクセスを使用することができ、これによって、ビットストリームバッファを、適度に短いレジスタによって提示することができる。例えば、32ビットレジスタは、非常に長い符号でさえ、十分であり得る。レジスタは、便利な間隔(例えば8ビットなど)で更新することができ、実装の複雑性をさらに低減することができる。全体的に、様々な態様において、この技術は、可変長符号の表現および符号化/復号の複雑性をかなり低減することができ、これによって、圧縮アルゴリズムの設計者は、より大きく、より効率の良いコードブックを使用することができるようになる。
次に、本開示に記載されている技術の例証を助けるために、可変長符号の一般論について説明する。可変長符号は、データ圧縮における基本的なツールを表す。一般に、可変長符号は、何らかの既知の、一般にかなり不均衡な分布の記号の系列を表すために使用される。こうした系列は、全長がかなり短い2値系列または符号によって表すことができる。長さの短縮は、より頻繁に出現する記号をより短い符号に置き換え、あまり頻繁に出現しない記号をより長い符号に置き換えることによって達成される。
データ圧縮で使用される可変長符号の例には、例えば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)に属する。図4は、2値符号化ツリーの一例を示す図である。上述した符号は、図4に示されているものなど、2値ツリーによって便利に表すことができる。したがって、符号器は、符号化ツリーに一致する記号値を符号化し得る。ツリーによる値は、映像データ、画像データ、言語データ、または音声データなど、様々なデータのうちの任意のものを表すことができる。こうしたツリーにおける各内部ノードは、その0値が右への移動を強制し、1値がツリーにおける左の子ノードへの移動を強制する2進数に対応する。一番上のノードは、符号化/復号がそこから開始するノードであるルートノードと呼ばれる。
ツリーにおける各外部ノードでは、符号化/復号プロセスが再開され、すなわちルートから現在のノードまでのビットの系列としての符号語、または現在の符号語に関連付けられている記号の復号された値のいずれかが生成される。図4の符号ツリー例では、0から15までインデックスが付けられた記号に対応する16の符号語がある。この例では、最短の符号語は、1ビットの長さを有し、最長の符号語は、それぞれ10ビットの長さを有する。このツリーにおいて外部ノード(符号語)を含むレベルの数は、7、すなわち、第1、第3、第4、第6、第7、第9、および第10のレベルである。
さらに図4を参照して、nは、符号ツリーにおける外部ノードの数(およびしたがって符号における符号語の数)を示し、Lは、最長の符号語の長さ、Kは、符号ツリーにおける外部ノードで埋められるレベルの数を示すとする。以下の説明では、ポールバッハマンのО記法を使用する。例えば、式y(n)=О(x(n))は、十分に大きいすべてのnについて、|y()|≦M|x(n)|となるようなある定数M>0の存在を示す。
符号化プロセスをサポートするために、エントロピ符号化ユニット46またはエントロピ復号ユニット52などの符号器または復号器は、一般に、メモリ45またはメモリ51など、コンピュータメモリに2値ツリーを格納する必要がある。さらに、符号化および復号プロセスは、メモリに格納されている符号化ツリーのビットごと(すなわちノードごと)のトラバースを伴うはずである。したがって、こうした実装は、О(n)ストレージコストを要し、最高О(L)ステップまでかかるはずである。それにもかかわらず、一部の特別な場合では、符号化ツリーが何らかの特定の構造を有するとき、こうした符号構造を格納し、符号化または復号の操作を実行する、より効果的な方法があり得る。
例えば、図4の符号化ツリーの例に提示されている符号を考えると、符号語は、非低減の長さであること、および符号化ツリーの同じレベルにおけるすべての符号語は、隣接する値を有することを観察することができる。例えば、図4のツリーの第4レベルの符号語は、ツリーの第3レベルの符号語より長く、すなわち、0001対011、010、001、および000である。さらに、第3レベルの符号語は、011、010、011、000の隣接する値を有する。したがって、すべての符号を格納する代わりに、符号化ツリーのレベルごとに、最小または最大の符号語のみを、すなわち隣接する符号語をそこから計算することができる基本符号語として格納することで十分であり得る。
上記の観察は、例えばA. Moffat and A. Turpin, On the Implementation of Minimum-Redundancy Prefix Codes, IEEE Trans. Communications, 45 (10) (1997) 1200-1207に記載されているように、いわゆる正準形への符号の変換に基づいて可変長の符号を復号する技術を理解する鍵である。簡単に言えば、正準の符号は、長さの非低減分布を有し、そのノードに割り当てられているインデックスに対して辞書式順序を維持する。結果として得られた符号が上記の特性を有するように、任意の所与の源を並べ替えることができることを示すのは、かなり簡単である。
例えば、図4の符号化ツリーに示されている符号は、以下の表1に示すように、非単調分布の源についての並べ替えられた符号を表す。具体的には、表1は、並べ替えられた正準の可変長符号の一例である。
Figure 2010509895
上記の表1において、記号0は、最も高い確率を有し、1、2が続く。しかし、記号3は、4より低い確率を有し、4および8は、1および2と同じ確率を有する。並べ替え後、すべての記号の確率は、単調に増加(非低減)しており、その結果、図4の符号化ツリーにおいて表現して示される正準の符号が得られる。A. Moffat and A. Turpin, On the Implementation of Minimum-Redundancy Prefix Codes, IEEE Trans. Communications, 45 (10) (1997) 1200-1207に記載されている、いわゆるMoffat−Turpinアルゴリズムは、正準の符号を復号するための技術を提供する。本開示に記載されている技術は、Moffat−Turpinアルゴリズムと比べて、改善をもたらし得る。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に記載されているものなど、他のアルゴリズムは、Moffat−Turpinアルゴリズムに似ており、開示された技術を似たように使用することによって、改良することもできる。
可変長符号の復号のためのMoffat−Turpinアルゴリズムについて、以下で説明する。入力アルファベットAは、n個の文字を含む:A={α,・・・αn−1}と仮定すると、並べ替えi:A→{0,・・・,n−1}は、結果として得られた確率がp≦p≦・・・≦pn−1を満たすように適用される。次いで、Lが最長の符号語の長さである場合、インデックス1≦iLごとに、符号語lの長さを割り当てる、ハフマンまたは他の最小冗長構成アルゴリズムを適用することができる。その結果、「集団数(population number)」は、m、すなわち、長さlの符号語の数として生成される。
これらのパラメータを使用して、以下のように、ツリーにおけるレベルごとにいわゆる「基本」値が計算される。
Figure 2010509895
これらの基本符号語値は、符号化ツリーの各レベルにおける、辞書式に最小の正準符号語を表す。base[l]の基本符号語値が与えられると、次に、長さlのm個の符号語の中のj+1番目の符号語の値を計算することができる。
Figure 2010509895
復号器の動作では、次のように左寄せバージョンの基本符号語値を格納することがより便利である。
Figure 2010509895
この場合、Wは、ビットストリームから最後にロードされたビットを保持するために使用されるビットバッファまたはレジスタの長さである。W≧Lであると仮定する。
最後に、基本符号語値に加えて、Moffat−Turpin復号器は、並べ替えられた配列に、それぞれの記号のインデックスも格納する。これらのインデックスは、ツリーにおける埋められたレベルごとに、offset[l]値として格納される。図4のツリーによって表される符号についてのMoffat−Turpinアルゴリズムによって維持される完全な構造例が、以下の表2に示される。
Figure 2010509895
表2の構造を使用したMoffat−Turpin復号アルゴリズムの実装のための擬似符号例が、以下の表3に示される。
Figure 2010509895
上記の表3から、復号プロセス全体は、現在のビットストリームバッファと左寄せの基本符号語値とのK回までの(Wビット)比較を伴い、次いで、復号された記号のインデックスの簡単な直接計算を伴うことがわかる。また、こうした構造によって使用されるlj_base[]配列は、メモリのО(K*W)ビットを必要とすることもわかり、このことは、WがW≧lとなるように使用されなければならないため、符号語が長い場合、問題となり得る。
表3の例において、復号器は、ビットストリームからVとしてWビットを受信し、符号化ツリーの連続するレベルiについて、Vと基本符号語(lj_base[i])と比較する。V以下である基本符号語が見つかると、符号語のレベルの検索を終了する。次いで、復号器は、レベルiに関連付けられている長さを決定し、lビットずつビットストリームをスクロールし、記号を復号する。特に、復号された記号は、レベルiについてのオフセット値、およびビットストリームからの符号語VとW−Iビットだけ右にシフトされた、レベルiの基本符号語との間の差との合計によって決定される。
一般の設定では、Moffat−Turpin復号に準ずるとき、逆マッピングルックアップ(inverse mapping lookup)i−1:{0,・・・,n−1}→Aである。この場合、最後の演算は、О(n)スペースを必要とするため、最もメモリを使うものとなる。しかし、多くの実際的な場合では、変換または予測子のランレングスまたは出力を伴う状況など、符号化する必要のある源は、すでに順序付けられている。したがって、Moffat−Turpin構造におけるlj_base[]配列によって使用されるメモリは、ストレージコスト全体における主要因となる。
第1の一般的な態様によれば、本開示に記載されている技術は、Moffat−Turpinアルゴリズムまたは他のアルゴリズムで使用されるデータ構造のこれ以上の圧縮を可能にする改良点を提供し、可変長符号の増分的復号をサポートする。次に、改良点について、より詳しく説明する。表2を参照すると、lj_base[l]値が右から左への先行ビットを大量に有することは明らかである。したがって、基本符号語の部分値は、基本符号語からの固定数の先行ビットの削除を表す。ほとんどの場合、削除される先行ビットは、ゼロである。符号化ツリーがより深い層に達するにつれて、こうしたゼロの数は、単調に増加している。したがって、符号化ツリーの一番最初の層で開始し、下方に移動しながら、ビットが順序復号される場合、復号の正確さに影響を与えることなく、先行ゼロビットの一部をスキップすることができる。先行ゼロの少なくとも一部をスキップすることによって、本開示に記載されている技術は、非常に圧縮されたデータ構造、および可変長の符号の増分的復号を可能にする。
しかし、先行ビットが削除されると、符号化ツリーのより低いレベルにおけるいくつかの正当な符号が、削除される先行ビットの範囲まで及ぶ可能性がある。したがって、こうした符号を失うのを避けるために、スキップインジケータの表が提供される。スキップインジケータは、符号化ツリーの選択されたレベルに進む前に、復号すべきビットストリームにおいて、いくつかのビットをスキップするよう復号器に指示する。特に、スキップインジケータは、符号化ツリーの選択されたレベルに進む前に、符号語ビットストリームにおいて、固定数のビット、例えば8ビットなどをスキップするよう復号器に指示することができる。このようにして、ツリーの選択されたレベルにおける基本符号語の部分値は、固定数のビットだけ、基本符号語をシフトすることに基づく。シフトなしでは、ツリーの選択されたレベルにおける基本符号語は、少なくとも部分的に削除された数の先行ビットまで及ぶことになる。
以下の表4は、符号語を表し、処理するために使用されるデータ構造をさらに圧縮するために、本開示の一態様に従って先行ゼロが削除される符号化プロセスの実装例を示す。表4の例において、先行ゼロは、8単位で削除され、これは、従来の8ビット/バイトコンピュータにおけるビットストリームバッファ管理に便利である。先行ゼロの削除を管理するために、上述したように、インジケータ(skip_8[i])の追加の表が提供される。したがって、表4は、一般に、表2に合致するが、先行ゼロを各符号語から削除し、スキップインジケータ列を追加する。
Figure 2010509895
表4の例において、値r_lj_base(i)は、各インデックス位置における基本符号語値を表し、値r_level[i]は、そのインデックス位置についての符号化ツリー内のレベル、およびそのレベルにおける符号語の長さを示し、値offset[i]は、基本符号語値についての、右から左への先行ゼロの数を示し、値skip_8[i]は、次の基本符号語値について、復号器が8ビットをスキップすべきかどうかを示し、1はスキップを指定し、0はスキップなしを指定する。このスキップ操作は、そうでなければ、先行ゼロが削除されると失われることになる符号語を復号器が識別できるようにするために、選択された間隔で、ビットバッファを定期的にリフレッシュする。例えば、左寄せの符号語の一番右の8つの先行ゼロが削除される場合、一番右の8ビットに及ぶ符号語は、部分的に、または完全に失われることになる。したがって、スキップ指示に応答して一番左の8ビットをスキップすることは、符号語を削除されないビットの範囲に移動させることになり、それによって、復号に使用する符号語を保持する。
したがって、スキップインジケータは、表4の例において、例えば8など、符号の次のレベルについて、指定されたスキップ増分だけ復号器が前方にスキップすべきとき、信号で伝える。一例として、表2において、インデックス位置5および6(ツリーレベル9および10)にある基本符号語値は、それぞれ0000000010000000および0000000000000000である。一番右の8つの先行ゼロ(左寄せ)がこれらの基本符号語値から削除されるとき、8つの先行ゼロを削除するときに実際の基本符号語値(0000000010000000)が失われないように、復号器が前方に8ビットスキップすることが必要である。代わりに、実際の基本符号語値(0000000010000000)は、最初の8ビット(00000000)をスキップし、次いで、一番右の8つの先行ゼロを削除することによって、異なる基本符号語値(10000000)に変換される。
先行ゼロの削除により、変更されたlj_base[i]配列の幅は、かなり小さくなる。表4の符号において、一例として、変更されたlj_base[i]配列の幅Wは、表2の場合のW=16の代わりに、W=8である。こうした余分のスキップ表を使用して、定期的にビットバッファをリフレッシュするアルゴリズムの実装の一例が、以下の表5に示されている。表5に示されるように構成されたアルゴリズムは、非常に長い符号語または非常にコンパクトな基本符号語値(lj_base)表をサポートするよう構成され得る。
Figure 2010509895
表5に示されるように、復号器は、ビットストリームから最後のWビットを取得し、これは、値V=bitstream_bufferによって表されている。次いで、復号器は、ビットストリームバッファからの符号語V以下である基本符号語値lj_base[i]について、符号化ツリーのレベルiを検索する。ツリーの現在のレベルiが、例えば表5に示されるように、スキップレベル(skip_B[i])に対応する場合、復号器は、復号器によって検索される次のレベルの符号語を、B個の一番右の先行ゼロの削除によって失うのではなく、保持することができるように、例えば、いくつかの実装における8ビットなど、Bビットだけ右にビットストリームをスクロールする。
例えば、表5に示されるように、ツリーの現在のレベルにおける符号語についての残余長さl=level[i]を決定すると、復号器は、長さlだけビットストリームをスクロールする。次いで、復号器は、現在のレベルiについてのオフセット、およびビットストリームバッファコンテンツVと、W−lビットだけ右にシフトされた、現在のレベルiの基本符号語との間の差の合計に基づいて、記号インデックスを直接計算する。
復号器は、基本符号語の部分値、スキップインジケータ、基本符号語によって表される値、および基本符号語の部分値の長さ(すなわち、ビット数)を指定する格納されているデータ構造を使用して、符号語ビットストリームからの符号語を復号する。一般に、エントロピ復号ユニット52などの復号器に関連付けられているプロセッサは、符号語のビットストリームからの符号語以下である基本符号語の部分値のうちの選択された1つについて、符号化ツリーのレベルを検索する。プロセッサは、スキップインジケータに応答して、選択されたレベルの符号化ツリーに進む前に、符号語ビットストリームにおいて、いくつかのビットをスキップし、符号語以下の基本符号語の部分値のうちの選択された1つと符号語との間の差、および符号語以下の基本符号語の部分値のうちの選択された1つのインデックスに基づいて、符号語に対応する複数の値のうちの1つを計算する。プロセッサは、メモリ内に格納する、異なる装置または処理ユニットに送信する、またはユーザに提示するために、復号の結果を生成する。例えば、復号された結果を、表示装置28を駆動して、映像または画像を提示し、かつ/または音声出力装置を駆動して、音声または言語出力を提示するために使用することができる。
表5の例において、復号器は、そうでなければ、先行ゼロが削除されると失われる符号語を保持するために、スキップ操作を介してビットストリームバッファの増分的更新を実行する。さらに、復号器が符号の各レベルで比較する基本符号語値を、かなり短くすることができる。次に、基本符号語値の長さの短縮の可能な量について説明する。本開示に記載されている変更されたアルゴリズムにおけるこうした量のダイナミックレンジを分析するために、2つの隣接するレベルの間の差は、以下のように考えられる。
Figure 2010509895
iが次の非空のレベルのインデックスである場合、次のようになる。
Figure 2010509895
ここで、注目すべき主な量は、ml+i−iであり、これは、この差に影響を与える。最も簡単な場合、i=1であるとき、この差は、単に、外部ノード数に依存することが明らかであり、したがって、Wは、以下になるように選択することができる。
Figure 2010509895
これは、最も実際的な場合では、Lよりかなり小さい量である。この差は、かなり不均衡な分布の場合、特に大きいはずである。
例えば、入力記号がベルヌーイ確率p(1−p)m−kでmビットのブロックである場合、最も埋められたレベルは、おおよそ
Figure 2010509895
の符号語を含むはずであり、これは、符号語間を区別するために、おおよそH(p)mビットを使用すべきであることを意味し、ここでは、H(p)は、例えばT. Cover and J. Thomas, Elements of Information Theory, Wiley, 1991に記載されているエントロピ関数である。
一方、この場合の最長の符号語は、おおよそ
Figure 2010509895
ビットを有し、この場合、非対称分布では、
Figure 2010509895
であることがよく知られており、式中、H−∞(p)は、例えばW.Szpankowski, Average Case Analysis of Algorithms on Sequences (New York, John Wiley & Sons, 2001)に記載されているような、レニーエントロピの特別な場合である。p≧0またはp≧1で、この差を任意に大きくすることができる。
上記の説明に基づいて、提案された技術は、大きい、非対称の符号構造の処理に効果的であるはずであるということになる。こうした構造は、従来の/既存の技術を使用して処理することが従来難しく、多くの場合、技術者は、それらをより実用的にするために、符号の圧縮性能に影響を与える様々な簡略化を使用するという方法を採る。
例えば、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に記載されているようなLynch−Davisson符号の設計に関連付けられている別の解決策は、符号を、最初の1つのみが可変長符号化を受け、残りの1つが固定数のビットを使用して拡張として送信される、2つの部分に分割することである。残念ながら、こうした分割における効率の損失があり、それは、時として、記号ごとに1.5〜2ビットの大きさとなる。
より手の込んだバージョンのコードブック分割技術が、例えば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)の名で開発されている。しかし、この手法も、圧縮効率において、いくらかの損失を犠牲にする。
上述した技術とは異なり、本開示に記載されている技術は、符号の構造および最適性を十分保持するよう構成することができ、したがって、ディジタル映像、画像、音声、または言語データの符号化および復号においてなど、データ圧縮および符号化における広範な実用的な応用に役立つツールとなり得る。
2値適応形ブロック符号化
次に、本開示の第2の一般的な態様による、無記憶情報源によって生成される2値系列の適応形可変長符号化の低複雑性技術の一例について、より詳しく説明する。この開示された技術は、ある系列における前のビットの非ゼロビットの数によって識別される1組のコンテキストのために構築されたユニバーサルブロック符号を実装し得る。本開示のこの第2の一般的な態様は、非常にコンパクトなデータ構造の生成に関して上述した第1の一般的な態様とは別に、またはそれと共に実施され、または提供され得る。データ構造は、テーブル、リンクリスト、2値ツリー、ラディックスツリー、フラットファイルなど、広範なデータ構造のうちの任意のものでよく、多くの形式のランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、またはその両方など、様々な異なるメモリ装置のうちの任意のものに格納することができる。データ構造は、符号器または復号器内のこうしたメモリに格納することができる。この第2の一般的な態様によれば、低複雑性の適応形符号化および復号のための技術は、R. E. Krichevsky and V. K. Trofimov, The Performance of Universal Encoding, IEEE Trans. Information Theory, 27 (1981) 199-207に記載されている推定を改良する、こうした符号の漸近的冗長の決まったやり方に少なくとも一部分依存し得る。
データ圧縮アルゴリズムは、何らかの未知の分布のビットの入力系列を復号可能なビットストリームに変換する。例えば、画像または映像コーデック、音声コーデックにおけるスペクトルの拡張可能(ビットスライスベースの)符号化、および他の用途の設計において、データ圧縮が使用される。こうした場合のほとんどは、符号化されるビットは、変換フィルタ、予測フィルタなど、様々な信号処理ツールによって生成される値から取得され、このことは、それらはすでに十分相関が取り除かれており、こうした源の無記憶情報性の前提が正当とされることを意味する。
こうした2値適応形アルゴリズムのほとんどの一般的に使用されている実装は、一般的に、その複雑性を低減するために何らかの近似および簡単な方法が適用された状態の算術演算符号に基づく。こうしたアルゴリズムの2つのよく知られている例には、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に記載されており、JBIG画像符号化標準に使用されるQコーダアルゴリズム、または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に記載されており、映像圧縮のためのITU−T H.264/MPEG AVC標準で使用されるCABACアルゴリズムがある。
本開示のこの第2の一般的な態様によれば、代替の実装は、いくつかの推定された密度のために設計され、ある系列における前のブロック(コンテキスト)内の非ゼロのビットの数によってインデックスが付けられたハフマン符号の配列を使用する。効率および実装の両方の観点から、こうした技術は、例えばn=8・・・16の小さめなサイズのビットのブロックを使用し、および例えば1.5kバイト・・・5kバイトの対応するメモリ量を使用することによって、所望の圧縮性能を達成することができる。
この技術は、確率pおよびq=1−pが対応する2値アルファベット{0,1}から記号を生成する無記憶情報源の文脈で考えることができる。wがこの源によって生成された長さnの単語である場合、その確率は、
Figure 2010509895
であり、式中、kは、この単語における1の数を示す。値kは、wの重さと呼ぶこともできる。
ブロック符号Φは、長さ|w|=nの単語wと、2値系列(または符号語)Φ(w)との間の単射であり、
Figure 2010509895
式中、符号語Φ(w)は、例えばT. M. Cover and J. M. Thomas, Elements of Information Theory, (John Wiley & Sons, New York, 1991)に記載されているような、一意に復号可能な組を表す。
一般に、源(すなわち、その確率p)が既知であるとき、こうした符号は、その平均長さ、または相対語では、その平均冗長度を最低限に抑えるようになっている。
Figure 2010509895
上記の式では、H(p)=−p log p−q log qは、源のエントロピを示す。
この問題を解決するために提案された符号およびアルゴリズムの従来の例には、ハフマン、シャノン、シャノン−ファノ、およびギルバートムーア符号、およびその変形などがある。こうした符号の性能は、よく研究されており、こうした符号についての多くの有用な実用的実装技術も報告されている。
源が未知であるとき、使用可能な最適なオプションは、源のクラスについて、最悪の場合の冗長を最低限に抑えるユニバーサル符号Φ*を設計することであり、例えば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に記載されており、以下に示される通りである。
Figure 2010509895
こうした符号の一例は、単語の確率の以下の推定を使用して、構成することができる。
Figure 2010509895
式中、Γ(x)は、Γ関数、kは、単語wの重さ、およびnは、その長さである。上記の公式は、R. E. Krichevsky and V. K. Trofimov, The Performance of Universal Encoding, IEEE Trans. Information Theory, 27 (1981) 199-207に記載されており、nが無限大(n≧∞)に近づくにつれて、真の確率への一様(p)収束を確実にする。
源のパラメータの正確な値がわからない状況で、過去にこの源によって生成された記号の系列uにアクセスすることができる。こうした系列は、サンプルと呼ぶことができ、|u|=tビット長と見なすことができる。ここでのタスクは、このサンプルの異なる値によってインデックスが付けられた1組の符号
Figure 2010509895
を設計することであり、以下に示されるように、その結果として得られる最悪の場合の平均冗長度を最小に抑えるようにする。
Figure 2010509895
こうした符号は、サンプルベースまたは適応形ユニバーサルブロック符号と呼ばれる。この開示では、サンプルuが与えられると、以下の単語wの確率の推定を使用して、適応形ブロック符号の特定の実装を記載する。
Figure 2010509895
式中、sは、サンプルの重さ、tは、その長さである。
すぐ上の推定量関数(estimator function)(1)を使用したサンプルベースの符号の概念および分析は、R. E. Krichevsky in R. E. Krichevsky, Universal Data Compression and Retrieval (Kluwer, Norwell, MA, 1993)によって記載されている。適応形ブロック符号の平均冗長レートは、漸近的に
Figure 2010509895
であり、式中、nはブロックサイズ、tは、サンプルのサイズである。
上記の式(2)から、長さt=О(n)のサンプルを使用することによって、既知の源について、ブロック符号の冗長レートの順序に一致する、こうした符号の冗長レートをО(1/n)に低下させることが可能であることが明らかである。しかし、こうした符号の十分な可能性を理解することができるように、ハフマン、シャノンなど、実際の符号構成アルゴリズムの選択によって影響を受ける項を含めて、その冗長についてのより正確な式を知る必要がある。
この第2の一般的な態様によれば、本開示は、Krichevskyの定理2の以下の改良を提供する。特に、以下の定理1は、以下のように、適応形ブロック符号
Figure 2010509895
についての平均冗長レートの定理を改良する。
定理1:適応形ブロック符号
Figure 2010509895
の平均冗長レートは、以下の漸近的挙動(n,t≧∞)を有する。
Figure 2010509895
式中、nはブロックサイズ、tはサンプルサイズ、p、q=1−pは、入力源の記号の確率であり、
Figure 2010509895
は、上記の式(1)で推定された分布に対する符号
Figure 2010509895
の平均冗長度である。
Figure 2010509895
の正確な挙動は、アルゴリズム固有である。しかし、従来のハフマンおよびシャノンの符号を含む大きいクラスの最小冗長技術では、この項は、大きさにおいて以下のような制限があり、
Figure 2010509895
振動挙動を示し、これは、パラメータpの値によって、何らかの定数に収束してもしなくてもよい。また、tおよびnの短い値の場合、こうした符号の冗長は、次の以下の項によって影響を受ける可能性がある。
Figure 2010509895
これは、源pのパラメータの関数である。図5は、漸近的挙動を有する適応形ブロック符号の冗長レートを示すグラフであり、この量を描く。短いブロック/サンプルの場合、こうした符号の性能は、源の非対称性に影響を受けやすい。この定理の証明は、例えば、Asymptotic average redundancy of adaptive block codes, Y.A. Reznik, W. Szpankowski, Proceedings of IEEE International Symposium on Information Theory (ISIT), 2003で見つけることができる。
次に、上述した符号を実装するための効率的なアルゴリズムの例について説明する。無記憶情報モデルにおいて、単語wの確率(またはその推定)は、そのビットの実際のパターンではなく、その重さkのみに依存する。したがって、すべての可能なnビットの単語の組を考えると、その組を同じ重さ(k=0,・・・n)および同じ確率の単語を含むn+1のグループに分けることができる。
Figure 2010509895
こうしたグループのサイズは、以下の通りである。
Figure 2010509895
さらに便宜上、各グループWn,kは、辞書式順序に単語を格納すると仮定する。値In,k(w)は、グループWn,kにおける単語wのインデックス(位置)を示す。以下の表6は、ベルヌーイ確率pn−k,p=0.9で4ビットのブロックのために構成された符号の一例である。
Figure 2010509895
表6における符号例は、本開示のいくつかの態様による、グループWn,kにおける単語とその符号語との間の提案されたマッピングの構造を記述するために使用される。この符号は、同じレベルにある符号語が、それらが表す入力ブロックと同じ辞書式順序を有することを確実にするために、追加のステップがとられた、ハフマンのアルゴリズムの変更を使用して構成されている。圧縮効率のどんなロスもなく、こうした並べ替えが可能であることは、よく知られている。この並べ替えの概念を使用した以前のアルゴリズムの例には、ハフマン−シャノン−ファノ符号、およびMoffatおよびTurpinによって述べられた正準の符号などがある。
図6は、表6のブロック符号例の構造を示す符号化ツリーを示す図である。予想されるように、各グループWn,kは、同じ長さの符号語を含む多くとも2つのサブグループから成る。一般に、図6の符号化ツリー、および表6のブロック符号によって表される符号構造は、符号語のグループ、およびそのグループのそれぞれの中の符号語の第1および第2のサブグループを定義する。各グループは、同じ重さを有する値を表す符号語を含む。第1のサブグループは、第1の長さを有する符号語を含み、第2のサブグループは、第1の長さとは異なる第2の長さを有する符号語を含む。各グループにおける符号語は、直接計算による符号化および復号を容易にするために、符号語によって表される値に対して、辞書式に順序付けられる。
グループの一例は、図6の参照番号66によって示される。第1および第2のサブグループの例は、それぞれ図6の参照番号68A、68Bによって示される。類似のグループおよびサブグループは、符号化ツリー内に重さごとに提供される。グループは、同じ重さkを有するブロックを含む。サブグループは、符号化ツリーにおける同じ重さおよび同じレベルを有するブロックを含む。これは、グループWn,kにおけるすべての単語が、同じ確率、およびいわゆるハフマン符号の兄弟の性質を有するという事実から得られる。また、この観察は、シャノン符号、汎用型シャノン符号、および場合によっては他のアルゴリズムにも当てはまる。上述したように、グループWn,kは、同じ長さの符号語を含む多くとも2つのサブグループを含み、次のように表すことができる。
Figure 2010509895
式中、lは、グループWn,kからのブロックに割り当てることができる最も短い符号長である。さらに、グループWn,k内の単語は、辞書式順序に従うため、Wn,k,lとWn,k,l+1との間の分割は、単に次のようになる。
Figure 2010509895
式中、nは、より短い符号語を含むサブグループのサイズを示す。したがって、第1のサブグループが、長さ3の3つの符号語を有し、同じグループ内の第2のサブグループが、長さ4の1つの符号語を有する場合、n(より短い符号語を含むサブグループ、すなわち第1のサブグループのサイズ)は、3に等しい。この例は、図6の符号化ツリーのレベル3および4に関連付けられているグループ内のサブグループに対応し、サブグループ68Aは、それぞれ長さ3の符号語001、010、および011を有し、サブグループ68Bは、長さ4の符号語0001を有する。
各サブグループ内の辞書式に最小の符号語は、例えば、本開示の第1の態様に関して上述したように、基本符号語と呼ぶことができ、以下のように表すことができる。
Figure 2010509895
式中、wは、グループWn,kにおけるi番目のブロックである。上述したように、両方のサブグループ内の残りの符号語を、以下のように計算することができることに留意されたい。
Figure 2010509895
一例として、例えば図6の符号化ツリーのレベル3および4の例と同様に、長さ3の3つの符号語を含む第1のサブグループ68A、および長さ4の1つの符号語を含む第2のサブグループ68Bがあると仮定する。この場合、所与のブロックの位置がi=2である場合、i<n(nは3に等しい)であり、結果として得られた符号語は、該当する基本符号語+iである。この例では、サブグループの基本符号語は、001であり、結果として得られた符号語は、001+2=011である。図6の符号化ツリーのレベル3および4について、該当する符号語の位置がi≧nであった場合、符号語は、第2のグループ内にあることになり、0000+4−3=0001に等しい、0000+i−nの基本符号語に等しいことになる。
基本符号語は、非空のサブグループによって定義されるだけであり、nビットブロックのために構成されたツリーにおけるこうしたサブグループSの数は、
Figure 2010509895
以内である。さらに、複数のサブグループは、同じレベルに存在する可能性があり、こうした一緒に配列されているサブグループの数は、n+1を超えることはできない。例えば、図6におけるツリーの第10レベルにおいて、符号語1110および1111に対応する2つのサブグループがある。しかし、これらのサブグループは、同じグループに属さない。これは、レベルごとに一意の基本符号語を割り当てるが、次いでこうした符号を処理するためにО(n2)の大きい並べ替え表を必要とする他のアルゴリズムとのかなりの差である。この場合、構造全体は、О(n)ビットの大きさである。
一般に、この符号構造は、グループWおよびサブグループSを定義する。各グループは、同じ重さを有する値を表す符号語を含む。各グループにおける符号語は、符号語によって表される値に対して辞書式に順序付けられる。さらに、各グループにおける第1のサブグループは、第1の長さを有する符号語を含み、第2のサブグループは、第1の長さとは異なる第2の長さを有する符号語を含む。符号構造は、可変長の符号化を実行するために、符号器によってアクセスすることができるデータ構造によって表すことができる。本開示は、可変長の符号化または復号におけるこうした符号構造の使用、およびこうした符号構造を定義するデータ構造を備えるコンピュータ可読媒体を企図する。
上記の説明を受けて、次に、ブロック符号の直接計算のための簡単なアルゴリズムについて説明する。パラメータ
Figure 2010509895
が使用可能であり、レベルlおよび基本符号語Bn,k,lを非空のサブグループごとに取得することができると仮定する。次いで、ブロックwを符号化するプロセスは、実質的に以下のステップの組によって達成することができる。
1.ブロックwが与えられると、その重さkおよびインデックスIn,k(w)を取得する。
2.In,k(w)<nである場合、第1のサブグループWn,k,lを選択し、そうでない場合、第2のサブグループWn,k,l+1を選択する。
3.次いで、選択されたサブグループ(Wn,k,lまたはWn,k,l+1)についての基本符号語(Bn,k,lまたはBn,k,l+1)を取り出し、以下の式に従って、該当する符号を計算する。
Figure 2010509895
上記の式によれば、選択されたサブグループ(Wn,k,lまたはWn,k,l+1)内のブロックwの位置i=In,k(w)が、サブグループ内のブロックの数n未満である場合、符号語は、Bn,k,l+iである。あるいは、選択されたサブグループ(Wn,k,lまたはWn,k,l+1)内のブロックwの位置iがサブグループ内のブロックの数n以上である場合、符号語は、Bn,k,l+1+i−nである。
上述したように、一例として、図6の符号化ツリーのレベル3および4の場合、所与のブロック符号の位置がi=2<nであるとき、上記のプロセスは、011の符号語をもたらし、所与のブロック符号の位置がi=3≧nであるとき、0001の符号語をもたらす。この例では、nは3、すなわち、重さk=1の第1のサブグループ68Aにおける符号語の数である。位置iの順序は、基本符号語で開始して、例えば、図6の例における重さk=1の場合、0から3など、辞書式に進む。特に、すべて第1のサブグループ68A(i<n)内にある位置0は基本符号語001に対応し、位置1は符号語010に対応し、位置2は符号語011に対応し、位置3は、サブグループ68B(i≧n)内の符号語0001に対応する。
このプロセスは、同じレベルにある符号語が、それらが表す入力ブロックと同じ辞書式順序を有するように、並べ替えられることを確実にすることによって、容易に達成することができる。例えば、上述した符号語は、入力ブロック0001、0010、0100、および1000の辞書式順序に従う。次いで、各サブグループにおける辞書式に最小の符号語、例えば、サブグループ68Aにおける001、またはサブグループ68Bにおける0001は、上述した符号語の計算の目的で、基本符号語として使用することができる。上述したようなブロック符号の直接構成のプロセスの実装例を表すC言語プログラム符号を、以下の表7に示す。
Figure 2010509895
上記のC言語符号において、値kは、ブロックwの重さを示し、値iは、重さkのグループ内のブロックの位置(In,k(w)を示し、nk[k]は、重さkのグループの第1のサブグループ内の符号語の数を示す。iがnk[k]以上である場合、iは、インデックスを調整するために減分され、サブグループは、該当する重さkの第2のサブグループ(1)に設定される。この第2のサブグループは、j=sg[k][l]によって識別される。iがnk[k])未満である場合、iは、減分されず、サブグループは、該当する重さkの第1のサブグループ(0)に設定される。この第1のサブグループは、j=sg[k][0]によって識別される。
次いで、符号語は、該当するサブグループj(base[j])の基本符号語と、iの値の合計として生成される。図6の例について、iの値が2である場合、符号は、サブグループ68Aの基本符号語001と、iの値(2)との合計となり、これは、001+010=011に等しい。上記の式(13)を参照すると、サブグループに応じて、基本符号語は、Bn,k,lまたはBn,k,l+1のいずれかであり、iの値は、iまたはi−nk[k]のいずれかである。したがって、上記の符号は、一般に、式(13)によって提供される結果に対応する。符号語(code)を計算すると、符号語の長さ(len)は、len[j]と指定され、これは、適当なサブグループの符号長であり、この場合、第2のサブグループは、第1のサブグループより1大きい符号長を有する。次いで、符号化プロセスは、codeおよびlenの値をビットストリームbsに書き込む、演算put_bits(code,len,bs)を介して符号をビットストリームに書き込む。ビットストリームは、別の装置による復号のために送信される。このプロセスは、次の符号語の計算のために、重さkを戻す。
上記で概説した符号化プロセスは、符号化すべき値の重さに基づいて、グループのうちの1つを選択することと、選択されたグループの第1のサブグループ内の符号語の数に対する符号化すべき値の辞書式位置に基づいて、サブグループのうちの1つを選択することと、選択されたサブグループの基本符号語、および符号化すべき値の辞書式位置に基づいて、選択されたサブグループ内の符号語のうちの1つを選択することと、選択された符号語により、符号化すべき値を符号化することとを伴い得る。サブグループのそれぞれの基本符号語、グループのそれぞれの中の符号語の位置、第1のサブグループのそれぞれの中の符号語の数、およびサブグループのそれぞれの中の符号語の長さは、可変長の符号化をサポートするために、符号器によってアクセスすることができるデータ構造に格納され得る。
メモリの見地から、表7に示されるプロセスは、S個の基本符号語(長さО(n)ビット)、n+1値のnk(長さО(n)ビット)、S個の符号長(長さО(log n)ビット)、および2(n+1)サブグループインデックス(長さО(log n)ビット)のみを必要とする。追加のメモリ低減は、本開示の他の場所に記載されているように、基本符号語の増分的値を格納することによって可能である。S=О(n)と仮定すると、データ構造全体は、О(n)ビットのみを必要とする。表7に示されている特定の実装において、例えば、n−20およびS=32であると仮定すると、このデータ構造のサイズは、244バイトになる。これは、この符号をダイレクトテーブル(direct table)の形で提示するために必要となる220の単語よりはるかに少ない。例えば、n≦12・・・16など、適度に短いブロックの場合、重さおよびインデックス(表7のプロセスにおける関数weight(.)およびindex(.,.))の計算は、せいぜい単一回のルックアップとすることができる。この場合、符号化プロセス全体は、多くとも1回の比較、2回の加算、および4回のルックアップを必要とし得る。
より大きいブロックの場合、以下のよく知られている組み合わせ公式を使用することができる。
Figure 2010509895
式中、wは、単語wの個々のビットを表し、すべてのk>nの場合、
Figure 2010509895
であると仮定する。この公式を実装するために、すべての2項係数を、パスカルの三角形においてレベルnまで事前計算するか、以下の簡単な恒等式を使用して、それらを動的に計算することができる。
Figure 2010509895
事前に計算された係数に基づく実装は、
Figure 2010509895
個の単語(О(n3)ビット)のメモリおよびО(n)回の加算を必要とする。係数の動的計算は、О(n)回の加算、乗算、除算を必要とする。しかし、プロセス全体は、ほんの少しのレジスタしか必要なく、スタティックメモリは必要としない場合がある。インデックス計算の複雑性の追加の説明は、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で見つけることができる。
次に、上記の技術を実装する復号器の設計の一例について説明する。上述した符号化プロセスのように、復号プロセスは、パラメータn、基本符号語、および関連の長さを使用し得る。便宜上、以下の説明は、左寄せのバージョンの基本符号語値に依存する。
Figure 2010509895
式中、Tは、機械語の長さ(T>max l)である。次いで、復号プロセス例は、以下のように説明することができる。
1.ビットストリーム内で、
Figure 2010509895
がTビット未満である一番上のサブグループを見つける。
2.ブロックのインデックスI(w)を、上記の式(13)に基づいて復号する。
3.その重さkおよびインデックスを使用して再構成されたブロックを生成する。上述した復号プロセスの実装例を表すC言語符号を、以下の表8に示す。
Figure 2010509895
表8に示されている復号プロセス例は、左寄せの基本符号語lj_base[S]を使用する。動作中、復号プロセスは、ビットストリームバッファのコンテンツvalを受信し、ビットストリームバッファのコンテンツvalに対応する基本符号語を有する符号化ツリー内のサブグループを識別する。例えば、プロセスは、基本符号語が受信した符号語valより大きい限り、引き続き、符号化ツリーにおける異なるレベルのサブグループを通過して下方に移動する。しかし、val以下の基本符号語を含むサブグループに到達すると、そのサブグループが選択される。適切なサブグループを見つけると、プロセスは、サブグループの符号長を決定し、ビットストリームをその長さだけスクロールして、復号されたビットをスキップし、符号語を隔離する。復号プロセスは、基本符号語値をビットストリームバッファコンテンツから取り去ることによって、サブグループ内の符号語のインデックス位置iを決定する。
例えば、符号語が011であり、基本符号語が010である場合、この差の結果は2であり、これは、符号語が、サブグループ内の可能な位置0、1、および2の中の位置2にあることを示す。32ビット幅のレジスタの例では、この差は、32マイナス符号長lenだけ、右にシフトされ得る。次いで、復号プロセスは、該当する重さk、およびサブグループインデックスjを取り出し、インデックスiを再構成する。次いで、プロセスは、選択されたグループ内のi番目の単語を、符号語として生成し、重さkを戻す。式kj[j].kは、サブグループの重さを戻し、式kj[j].jは、サブグループのインデックスを、所与の重さについての第1のサブグループ(0)または第2のサブグループ(1)を示す0または1のいずれかとして戻す。j=1となるように第2のサブグループが選択されると、インデックスiは、nk[k]の値を追加することによって調整される。そうでなく、第1のサブグループが選択された場合、インデックスiは、調整されない。関数word()は、例えば上記の式(13)を使用して、復号された単語値として、n,kグループにおけるi番目の単語を戻す。
一般に、符号器は、符号構造がグループおよびサブグループを定義する、上述した符号構造に従って可変長符号化を実行することができる。この場合もまた、各グループは、同じ重さを有する値を表す符号語を含む。各グループにおける符号語は、符号語によって表される値に対して辞書式に順序付けられる。さらに、各グループにおける第1のサブグループは、第1の長さを有する符号語を含み、第2のサブグループは、第1の長さとは異なる第2の長さを有する符号語を含む。
符号構造は、可変長の符号化を実行するために、符号器または復号器によってアクセスすることができるデータ構造によって表すことができる。上述したように、データ構造は、サブグループのそれぞれの基本符号語、グループのそれぞれの中の符号語の位置、第1のサブグループのそれぞれの中の符号語の数、およびサブグループのそれぞれの中の符号語の長さを指定することができる。このデータ構造は、映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの1つに関連付けられているメモリに格納することができ、符号化操作をサポートするために必要に応じてアクセスされる。
上述したように、エントロピ復号ユニット52などの復号器は、符号化ツリーのトップダウン(上から下への)検索で、復号すべき符号語以下の基本符号語を含むサブグループのうちの第1のものを選択することを選択することができる。次いで、復号器は、復号すべき符号語と、選択されたサブグループの基本符号語との間の差に基づいて、選択されたサブグループ内の復号すべき符号語の位置、すなわちサブグループインデックスを決定することができる。復号器は、選択されたサブグループが存在するグループに基づいて、復号すべき符号語によって表される値の重さを決定し、選択されたサブグループがそのグループの第1のサブグループであるか、第2のサブグループであるかに基づいて、選択されたサブグループが存在するグループ内の符号語の位置、すなわちグループインデックスを決定する。次いで、復号器は、復号すべき符号器によって表される値の重さ、および選択されたサブグループが存在するグループ内の符号語の位置に基づいて、値のうちの1つを選択し、選択された値により復号すべき符号語を復号する。値は、例えば、表6のブロック符号のうちの1つに対応し得る。
本開示のこの態様に従って企図される符号構造およびデータ構造は、計算オーバーヘッド、メモリ使用率、および処理時間に関して、効率をサポートすることができる。表8の復号プロセス例は、例えば、サブグループを見つけるための比較およびルックアップを1回からS回、加算を1回または2回、シフト操作を1回、追加の比較を1回、および追加のルックアップを3回必要とする。サブグループを見つけるのに必要なステップの数は、基本符号語を2値検索ツリーに入れることによって、または余分のルックアップテーブルを使用することによって、さらに低減することができるが、いずれの場合も、余分のメモリを犠牲にする。
復号プロセスの最後に、上述したように、符号語の重さkとインデックスIn,k(w)が、(例えば、表8の関数word()によって)実際の値に変換される。ブロックが適度に短い場合、これは、簡単なルックアップによって達成することができる。そうでない場合、単語は、例えば、D. A. Huffman, A method for the construction of minimum-redundancy codes. Proc. IRE, 40 (Sept. 1952) 1098-1101に記載されている計数公式(enumeration formula)を使用することによって合成することができる。複雑性の観点から、このプロセスは、符号器におけるインデックス計算に似ている。
上述した符号化および復号プロセスを使用して、データのブロックの適応形符号化および復号のシステムを定義することができる。この例について、以下の条件で、入力ブロックを符号化することができると仮定する。
1.コンテキストがない、すなわち、ユニバーサル符号が実装される
2.コンテキストは、以前観察された1つのブロックによって与えられる。すなわちt=n
3.コンテキストは、以前観察された2つのブロックによって与えられる。すなわちt=2n。
実際のブロックをコンテキストとして使用する代わりに、その重さを使用することで十分である(源の無記憶情報の性質のため)。これは、tビットサンプルの場合、その重さsによってインデックスを付けられたt+1の符号構造の配列が提供されることを意味する。スペースをさらに節約するために、sおよびkに対するKT分布の対称性を使用することができる。特にプロセスは、s>t/2であるときは毎回、s=t−sを交換し、ビットを反転する(すなわち、強制的にk=n−kにする)ことができる。このように、t/2+1のテーブルを定義するだけでよい。この例では、適応形符号によって必要なメモリの全体量は、1+n/2+1+n+1=1.5n+3のテーブルになる。ブロックサイズn=8・・・20の場合の特定のメモリ推定量を、以下の表9に示す。
Figure 2010509895
上記の表では、KT推定された密度を使用し、また本開示に従って変更されたハフマン符号構成アルゴリズムを使用して生成された。以下に示されるのは、本開示に記載されているような、適応形ブロック符号器を実装するプログラムのためのコンピュータ符号の一例である。
Figure 2010509895
Figure 2010509895
Figure 2010509895
Figure 2010509895
Figure 2010509895
Figure 2010509895
Figure 2010509895
Figure 2010509895
次に、ブロックサイズn=16での本明細書に記載された適応形符号化プロセスの性能の評価の実験結果を説明すると共に、よく知られている他のアルゴリズムと比較する。特に、適用形符号化プロセスは、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に記載されており、JBIG画像符号化標準に使用されるQコーダアルゴリズム、および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に記載されており、映像圧縮のITU−T H.264/MPEG AVC標準で使用されるCABACアルゴリズムと比較される。
テストを行うために、コンピュータで生成されたビットの系列は、確率pで2値ベルヌーイ源からの出力をシミュレートするために使用された。16から1024に及ぶこうした系列の長さ、および特定の長さごとに、こうした系列のQ=1000000のサンプルが生成された。相対冗長レートが次のように計算された。
Figure 2010509895
本開示に記載されている適応形符号化プロセスでは、コンテキストの以下の構造が使用された。
1.最初の16ビットブロックは、コンテキストなしに符号化される(ユニバーサル符号)
2.第2のブロックは、そのコンテキストとして第1のものを使用して符号化される(t=16の符号)
3.3番目およびそれ以降のすべてのブロックは、コンテキストとして系列内の前のブロック2つを使用して符号化される(t=32のサンプルベースの符号)。
図7Aおよび7Bは、異なる値pでの適応形ブロック符号の冗長レートとQコーダおよびCABAC技術との比較を示すグラフである。図7Aは、p=0.1の場合の結果を示し、図7Bは、p=0.5の場合の結果を示す。図8は、適応形ブロック符号、Qコーダ、およびCABAC技術の場合の源データの非対称性に対する冗長の感度を示すグラフである。実験的研究の結果が、図7A、図7B、および図8に示されている。図7Aおよび図7Bは、x軸上の符号化されたビットの数対y軸上の(平均符号長−エントロピ)/エントロピを描く。
図8は、x軸上の確率対y軸上の(平均符号長−エントロピ)/エントロピを描く。図7A、図7B、および図8の各グラフは、Qコーダ、CABAC、および適応形符号化のグラフを対応するラベルによって示す。実験結果から、本開示に記載されている適応形符号は、QコーダおよびCABACアルゴリズムの両方よりはるかに速い収束率を有し得ることがわかる。適応形符号化プロセスは、より短い系列については、QコーダおよびCABACアルゴリズムより優れており、符号化されたビットの合計長さが1024に近づくと、QコーダおよびCABACアルゴリズムに匹敵するようになる。さらに図8に示されているように、160の符号化されたビット(または次いで16ビットブロック)の後、適応形符号化プロセスは、QコーダおよびCABACアルゴリズムに比べて、より低い冗長を提供することができる。この挙動は、上述した定理1に一致する。
図9は、本開示の第1の一般の一態様による、単調分布についてのメモリ効率の良い可変長の符号化を構成するための方法を示すフロー図である。この方法は、図2および図3に示されるように、エントロピ符号化ユニット46およびエントロピ復号ユニット52によって使用する符号を構成するために、符号器、復号器、または他の装置に関連付けられているプロセッサによって実装することができ、それだけには限定されないが、映像、画像、言語、および音声データを含む、様々なデータのうちの任意のものの圧縮および符号化をサポートし得る。こうしたプロセッサは、例えば、可変長の符号化に有用な符号構造属性を定義するデータ構造を準備するために、符号器または復号器内、または汎用コンピューティングシステム内に設けることができる。
図9に示されるように、プロセッサは、符号化された入力記号のアルファベットを取得する(70)。記号は、所与のデータセットまたは系列内の記号の存在または使用の確率または頻度を示すそれぞれの重さを有する。該当する記号の重さを決定すると(72)、プロセスは、その重さに基づいて、インデックスを記号に割り当て(74)、インデックスおよび記号の辞書式順序に基づいて、記号に符号を割り当てる(76)。したがって、同じ重さを有する記号は、本開示に記載されている符号化技術を容易にするために、辞書式に順序付けられ得る。
符号は、2値符号化ツリーによって表される符号構造に従ってまとめることができる。プロセッサは、符号化ツリー内のレベルごとに、基本符号語を識別する(78)。基本符号語は、そのツリーの所与のレベルにおける最小の符号語であり、そのツリーのそのレベルにおける記号の中の辞書式に最も早い記号に対応する。コンパクトなデータ構造を提供するために、プロセッサは、部分的な基本符号語を生成するために、基本符号語から固定数Bの先行ビットを削除する(80)。基本符号語は、左寄せの符号語として構築することができ、先行ビットは、左寄せの符号語における右から左に進むM個の先行ビットであり得る。一部の実装では、削除される先行ビットの数は、8とすることができる。他の実装では、削除される先行ビットの数は、8未満、または8を上回ってもよい。
符号化ツリーの多くのレベルについて、M個の先行ビットは、ゼロである。しかし、いくつかのレベルでは、先行ビットは、そのツリーにおけるそれぞれのレベルについてのすべてまたは一部の基本符号を形成し得る。これらの選択されたレベルで、プロセッサは、スキップインジケータを生成する(82)。スキップインジケータは、先行するBビットの削除時に、基本符号が失われないように、復号器がビットストリームをBビットだけスクロールする旨の命令を提供する。このプロセスは、データ構造において、結果として得られた部分的な基本符号語、符号化ツリーのそれぞれのレベルにおける符号語に関連付けられている長さ、符号化ツリーにおける符号語に関連付けられているそれぞれの記号のインデックスを示すオフセット、および先行するBビット内に少なくとも部分的に含まれる基本符号語の損失を防ぐために、ビットストリームがBビットだけスクロールされなければならないときを示す1つまたは複数のスキップインジケータを格納することができる(84)。データ構造は、構成された可変符号でエントロピ符号化および復号を行うのを助けるために、エントロピ符号化ユニット46およびエントロピ復号ユニット52に提供され得る。データ構造は、1つまたは複数の1次元または多次元のルックアップテーブル、リンクリスト、2値ツリー、ラディックスツリー、フラットファイルなどを含めて、様々な形をとり得る。
図10は、本開示の第1の一般的な態様による、図9の方法に従って構成された可変長の符号を使用して記号を符号化するための方法を示すフロー図である。図10に示すように、エントロピ符号化ユニット46は、記号を受信し(86)、記号インデックスを決定し(87)、符号化ツリーにおける対応するレベルを識別するために、記号のインデックスとオフセットテーブルとを比較する。特に、エントロピ符号化ユニット46は、記号のインデックスがツリーの所与のレベルのオフセット以上であるかどうかを決定する(88)。記号インデックスは、重さの順序にランク付けされた、他の記号の中の記号の順序を表し、同じ重さの記号は、記号のアルファベットに従って辞書式に順序付けられている。オフセットは、ツリーの該当するレベルの1つまたは複数の符号の長さと、最大符号長との間の差である。図4のツリーでは、例えば最大符号長が16であり、ツリーのレベル3の符号長が3である場合、基本符号語の該当するオフセットは、12である。
記号インデックスがツリーの現在のレベルのオフセットを超えない場合、エントロピ符号化ユニット46は、トップダウン検索で、符号化ツリーの次のレベルへと下方に進み(90)、記号インデックスとその次のレベルのオフセットとの比較を繰り返す(88)。記号インデックスが符号化ツリーの特定のレベルのオフセット以上であることをエントロピ符号化ユニット46が決定すると(88)、エントロピ符号化ユニットは、記号の適切な符号語を計算する。特に、エントロピ符号化ユニット46は、記号の符号語を、ツリーの現在のレベルの基本符号語と、記号インデックスとそのレベルのオフセットとの差との合計に設定する(92)。
図4のツリーの例を使用して、記号インデックスが14である場合、14はそのレベルの基本符号語に割り当てられた12のオフセットより大きいため、エントロピ符号化ユニット46は、記号の符号がツリーのレベル3に存在することを決定する。次いで、エントロピ符号化ユニット46は、基本符号語(001)+(記号インデックス(14)−オフセット(12))として符号語を計算し、すなわち001+2=001+010=011となる。受信された記号の符号を設定する(92)と、エントロピ符号化ユニット46は、例えば、エントロピ復号ユニット52を備える受信装置に送信するために、符号語をビットストリームに出力する(94)。エントロピ符号化ユニット46は、次いで、該当するデータ系列における次の記号について、プロセスを繰り返す。
図11は、本開示の第1の一般的な態様による、図9の方法に従って構成された可変長の符号を復号するための方法を示すブロック図である。図11に示される方法は、表5に示されるものと同じ、または似たアルゴリズムを使用して実行され得る。実装例では、図10を参照して説明したように、符号は、エントロピ復号ユニット52によって受信され、エントロピ符号化ユニット46によって符号化される。図11に示した方法は、本開示に記載されるような、メモリ効率のより復号技術を使用することができ、こうした符号を構成することができるコンパクトなデータ構造を利用することができる。図11に示されるように、エントロピ復号ユニット52は、入ってくるビットストリームから符号語を受信する(96)。符号語は、ビットストリームバッファから取り出された固定幅Wのビットから取得され得る。符号語は、左寄せでよく、または左寄せフォーマットに変換することができ、幅Wは、右から左に、符号語からB個の先行ビットを削除することによって低減され得る。
エントロピ復号ユニット52は、一番上のレベルから開始し、適切な基本符号語が見つかるまで、トップダウン検索で、ツリーの中へより深く進みながら、符号語を、符号化ツリーの異なるレベルの基本符号語と比較する。特に、エントロピ復号ユニット52は、ツリーの現在のレベルの基本符号語が符号語以下であるかどうかを決定することができる(98)。そうでない場合、エントロピ復号ユニットは、引き続きツリーの次のレベルへと下方に進み(100)、次のレベルに関連付けられている基本符号語についての比較を繰り返す(98)。しかし、次のレベルに進むと(100)、エントロピ復号ユニット52は、スキップインジケータが現在のレベルに関連付けられているかどうかを決定する(102)。そうである場合、エントロピ復号ユニット52は、次のレベルに進む(100)前に、ビットストリームバッファを一定単位だけスクロールする(104)。特に、エントロピ復号ユニット52は、先行するMビットをドロップすることによって符号語が失われないように、Mビットだけビットストリームバッファをスクロールすることができる。スキップ指示(102)がない場合、エントロピ復号ユニット52は、単に、次のレベルに進む(100)。
いずれの場合でも、エントロピ復号ユニット52は、再度、符号語を、現在のレベルの基本符号語と比較する(98)。エントロピ復号ユニット52は、基本符号語がその符号語以下であるレベルを見つけ(98)、エントロピ復号ユニット52は、それぞれのレベルで基本符号語の残余長さを決定し(106)、ビットストリームを残余長さだけスクロールする(108)。次いで、エントロピ復号ユニット52は、そのレベルのオフセット、および基本符号語と復号される符号語との間の差に基づいて、符号語に関連付けられている記号を計算する(110)。
例えば、図4のツリーを参照すると、符号語が0110000000000000である場合、8個の先行ビットがドロップされた、部分的な、切り捨てられた符号語は、01100000である。この場合、エントロピ復号ユニット52は、レベル3の部分的な基本符号語(00100000)を、符号語以下であると識別し、3の残余長さを識別する。エントロピ復号ユニット52は、次の符号語を受信するために、ビットストリームを3ビット前方にスクロールする。さらに、エントロピ復号ユニット52は、レベル3のオフセットを、ビットストリームバッファ内の符号語とそのレベルの基本符号語との差に追加することによって、符号語の記号を計算する。例えば、エントロピ復号ユニット52は、符号を、オフセット[3]=12+符号語01100000−00100000として計算し、これは、12+2=14に等しい。この場合、14が符号011によって表される記号のインデックスである。
図11に示される方法は、本開示の他の場所に記載されているように、非常にコンパクトなデータ構造、およびかなりのメモリ効率を利用することができる。その結果、こうした方法を実装することによって、エントロピ復号ユニット52は、そのすべてが映像復号装置、またはデータの復元および復号のために構成されている他の装置には望ましい可能性のある、処理オーバーヘッドの低減、メモリ使用率の低減、および処理速度の増加を含めて、効率の増加を提供することができる。
図12は、本開示の第2の一般的な態様による適応形ブロック符号を構成するための方法を示すフロー図である。図12の方法は、符号化装置内のプロセッサまたは適応形ブロック符号の効率の良い直接構成をサポートする汎用プロセッサ内に実装することができる。図12に示されるように、プロセッサは、符号化すべき1組の単語(112)を取得する。結果として得られた符号構造を表すデータ構造は、符号化装置、復号装置、またはその両方の中のメモリに格納され得る。単語は、2値符号のブロックとすることができる。単語の重さを決定する(114)と、プロセッサは、重さに基づいて、符号語グループを単語に割り当てる(116)。符号語グループは、同じ重さkの単語の符号語を含み、例えば、図6に示されるように、符号化ツリーの隣接する2つのレベルにまたがり得る。
図12にさらに示されるように、プロセッサは、単語の長さに基づいて、サブグループを同じグループ内の単語に割り当てる(118)。特に、グループは、第1のサブグループおよび第2のサブグループを含み得る。第1のサブグループは、同じ長さおよび同じ重さを有する1つまたは複数の符号語を含む。同様に、第2のサブグループは、同じ長さおよび同じ重さを有する1つまたは複数の符号語を含む。しかし、第1のサブグループ内の符号語の長さは、第2のサブグループ内の符号語の長さ未満である。したがって、各サブグループは、同じ重さの、符号化ツリーにおける同じレベルにおける符号語を含む。
プロセッサは、サブグループごとに基本符号語を識別する(120)。基本符号語は、サブグループ内の最小の符号語である。図6の例では、サブグループ68Aの基本符号語は、001である。しかし、サブグループ68Aは、基本符号語001に加えて、符号語010および011をさらに含む。この例では、相対的に少量の計算が与えられると、符号を、容易に、直接計算することができるように、サブグループ内の符号語は、それらが表す単語の辞書式順序で順序付けられる。
各グループの第1のサブグループ内の要素の数は、符号語を計算するために使用することができる。そのために、プロセッサは、各グループの第1のサブグループ内の要素の数を格納し(122)、また、グループインデックスマッピング(124)、サブグループ符号長マッピング(126)、およびサブグループ基本符号語マッピング(128)も格納する。グループインデックスマッピングは、符号語が存在するグループ内の単語の符号語の位置を識別することができる。サブグループ符号長マッピングは、特定のサブグループ内の符号の長さを識別することができる。サブグループ基本符号語マッピングは、各サブグループに関連付けられている基本符号語を識別することができる。一般に、グループ内の単語のインデックスが与えられると、符号は、特定のサブグループの基本符号語から構成することができる。格納されている情報は、符号器、復号器、またはその両方によってアクセスすることができるデータ構造に格納することができる。
図13は、本開示の第2の一般的な態様による、図12の方法に従って構成された可変長の符号を使用してブロックを符号化するための方法を示すフロー図である。図13の方法は、例えば、図2のエントロピ符号化ユニット46など、エントロピ符号化ユニット内に実装することができる。図13に示される方法は、表7に示されるものと同じ、または似たアルゴリズムを使用して実行され得る。図13に示されるように、所与の単語を符号化するために、エントロピ符号化46は、その重さ(130)およびグループインデックス(132)を取得する。単語の重さを使用して、エントロピ符号化46は、該当する符号化ツリー内の単語のグループインデックスを決定する(132)。グループインデックスIn,k(w)は、辞書式順序で単語を格納するグループWn,k内の単語wのインデックス(位置)を指定する。
エントロピ符号化ユニット46は、グループインデックスを、入力単語の符号語が存在するグループの第1のサブグループ内の要素の数nと比較する。特に、エントロピ符号化ユニット46は、グループのインデックスが第1のサブグループ内の要素の数以上であるかどうかを決定する(134)。そうである場合、エントロピ符号化ユニット46は、第2のサブグループ、すなわちグループ内のサブグループ1を選択し(138)、グループインデックス値を減分する(140)。特に、グループインデックス値は、第1のサブグループにおける要素の数nだけ減分される。グループインデックスが第1のサブグループ内の要素の数以上でない場合(134)、エントロピ符号化ユニット46は、第1のサブグループ、すなわちサブグループ0を選択する(136)。各サブグループは、それ自体の基本符号語を有する。エントロピ符号化ユニット46は、選択されたサブグループの基本符号語を取得し(142)、基本符号語とグループインデックス値との合計に基づいて、符号語を計算する(144)。
図6の符号化ツリー例を参照すると、一例として、符号化すべき単語の重さが2であると仮定した場合、グループインデックス値は2、例えば符号化ツリーのレベル3および4のグループに対応する第1のサブグループ内の要素の数は3である。この場合、グループインデックス値(2)は、第1のサブグループ内の要素の数(3)未満であるから、エントロピ符号化ユニット46は、第1のサブグループ(サブグループ0)を選択する。その結果、基本符号語は001である。単語を符号化するために、エントロピ符号化ユニット46は、2のグループインデックス値を001の基本符号語に追加し、結果として011の符号語が得られる。
同じグループについて、グループインデックス値が3であった場合、エントロピ符号化ユニット46は、第2のサブグループ(サブグループ1)を選択することになる。しかし、エントロピ符号化ユニット46は、第1のサブグループ(サブグループ0)内の要素の数nだけグループインデックス値だけ減分することになる。この場合、3のグループインデックス値は、3だけ低減されゼロになり、符号語は、第2のサブグループの基本符号語である0001+グループインデックス値である0として計算されることになり、その結果、0001の符号語が得られる。
入力単語の符号語を計算することに加えて、エントロピ符号化ユニット46は、選択されたサブグループ内の符号の長さを取得することができる(146)。上記の例で、サブグループ0のレベル3について、符号の長さは、3となる。エントロピ符号化ユニットは、エントロピ復号ユニット52などエントロピ復号ユニットを含む復号装置など別の装置に格納および/または送信するために、計算された符号語とサブグループの符号長を、ビットストリームに出力する。
図14は、本開示の第2の一般的な態様による、図12および図13の方法に従って構成された可変長の符号を復号するための方法を示すブロック図である。図14に示される方法は、表8に示されるものと同じ、または似たアルゴリズムを使用して実行され得る。可変長の符号は、エントロピ符号化ユニット46を含む符号化装置などの符号化装置から受信することができる。可変長符号は、エントロピ復号ユニット52によって受信され、復号され得る。図14に示されるように、エントロピ復号ユニット52は、入ってくるビットストリームから符号語を受信し(150)、符号語をサブグループの基本符号語と比較する。特にエントロピ復号ユニット52は、該当する符号化ツリーを検索して、ビットストリームバッファから取得された符号語のコンテンツ以下の左寄せのサブグループの基本符号語を識別することができる(152)。
ツリーにおける所与のレベルのサブグループ内のサブグループの基本符号語が、符号語以下でない(152)場合、エントロピ復号ユニット52は、ツリーの次のレベルの次のサブグループに進み(154)、比較を繰り返す。このプロセスは、基本符号語がビットストリームから受信された符号語より大きいままである限り、すなわち、エントロピ復号ユニット52が、サブグループの基本符号語が符号語以下であるレベルに到達するまで、反復ベースで続行する。符号語と基本符号語を比較する際、エントロピ復号ユニット52は、本開示の第1の態様に従って、追加のメモリ低減のために、基本符号語の部分的な増分値を使用することができる。特に、いくつかの先行ビットは、上述したように、メモリ効率を向上させるために、ドロップされ得る。
サブグループの基本符号語が符号語以下である符号化ツリーのレベルに到達すると、エントロピ復号ユニット52は、サブグループの符号長を決定し(156)、その長さだけビットストリームをスクロールして、復号されたビットをスキップし、符号語を隔離する。エントロピ復号ユニット52は、基本符号語を使用して、そのサブグループ内の符号語の位置を決定することができる(158)。例えば、エントロピ復号ユニット52は、符号語と基本符号語との間の位置の差を生成するために、ビットストリーム符号語を基本符号語から取り去ることができる。
一例として、図6の符号化ツリーを参照して、入ってくる符号語が0110000000000000である場合、エントロピ復号ユニット52は、基本符号語0010000000000000を、符号語以下の一番上のサブグループの基本符号語と識別する。この基本符号語は、レベル3および4のグループ内の第1のサブグループに関連付けられている。基本符号語に関連付けられているサブグループの符号長(3)を決定すると、エントロピ復号ユニット52は、ビットストリームをスクロールして、復号されたビットをスキップすることができる。エントロピ復号ユニット52は、ビットストリームからの符号語から基本符号語を取り去ることによって、符号語のグループインデックスを決定することができる。この例では、011−001は、010をもたらし、これは、2のグループインデックス値を生成する。
エントロピ復号ユニット52は、例えば符号化ツリー内のサブグループのレベルに基づいて、符号語の重さを決定することもできる(160)。さらに、エントロピ復号ユニット52は、サブグループインデックス、すなわち、符号化ツリー内の選択されたサブグループのインデックスを決定することができる(162)。重さ、位置およびサブグループのインデックスを使用して、エントロピ復号ユニット52は、単語インデックスを決定し(164)、それによって、符号語によって表される単語を生成するために、ビットストリームからの符号語を復号する。この場合も、一部の実装では、エントロピ復号ユニット52によって実行される復号方法は、表8に示されるプロセスに対応し得る。
情報および信号を、様々な異なる技術および技法のうちの任意のものを使用して表すことができることを、当業者であれば理解されよう。例えば、上記の説明にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、記号、およびチップは、電圧、電流、電磁波、磁場または磁性粒子、光電場または光学粒子、またはその任意の組み合わせによって表すことができる。
本明細書に開示された実施形態との関連で記載されている様々な例示の論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはその両方の組み合わせとして実装され得ることを、当業者であれば、さらに理解されよう。ハードウェアおよびソフトウェアのこの互換性を明らかに示すために、様々な例示の構成要素、ブロック、モジュール、回路、およびステップについて、その機能に関して、上記で全般的に説明してきた。こうした機能は、ハードウェアとして実装されるか、ソフトウェアとして実装されるかは、システム全体に課せられる特定の用途および設計の制約によって決まる。当業者であれば、記載した機能を、特定の用途ごとに様々な方法で実装することができるが、こうした実装は、本開示の範囲からの逸脱をもたらすものと解釈されないものとする。
本明細書に記載された技術は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組み合わせにおいて実装され得る。こうした技術は、汎用コンピュータ、無線通信装置ハンドセット、または無線通信装置ハンドセットおよび他の装置における適用を含めて、複数の使用を有する集積回路装置など、様々な装置の任意のものに実装することができる。モジュールまたは構成要素として記載されている任意の特徴は、一体型の論理装置に一緒に、または別個ではあるが、相互運用可能な論理装置として別々に実装されてもよい。ソフトウェアに実装される場合、技術は、実行されると、上述した方法のうちの1つまたは複数を実行する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって少なくとも一部分実現することができる。コンピュータ可読データ記憶媒体は、コンピュータプログラム製品の一部分を形成し得る。コンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、例えばシンクロナスダイナミックランダムアクセスメモリ(SDRAM)、読み取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的に消去書き込み可能ROM(EEPROM)、フラッシュメモリ、磁気または光データ記憶媒体などを備え得る。さらに、または代わりに、技術は、命令またはデータ構造の形でプログラムコードを運び、または通信し、伝播信号または波など、コンピュータによるアクセス、読み取り、かつ/または実行が可能なコンピュータ可読通信媒体によって少なくとも一部分実現することができる。
プログラムコードは、1つまたは複数のディジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の一体型または別個の論理回路など、1つまたは複数のプロセッサによって実行することができる。汎用プロセッサは、マイクロプロセッサとすることができるが、代替では、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。また、プロセッサは、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、1つまたは複数のマイクロプロセッサおよびDSPコア、または他の任意のこうした構成など、コンピューティング装置の組み合わせとして実装することもできる。したがって、「プロセッサ」という用語は、本明細書で使用される場合、上記の構成のうちの任意のもの、または本明細書に記載された技術の実装に適した他の任意の構成を指し得る。さらに、一部の態様において、本明細書に記載されている機能は、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアモジュール内に設けられ、または結合された映像符号器/復号器(CODEC)に組み込まれてもよい。
本開示の様々な実施形態について説明してきた。これらおよび他の実施形態は、以下の特許請求の範囲内に含まれる。

Claims (82)

  1. 符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループと
    を定義する符号構造に従って可変長の符号化を実行することと、
    メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、前記可変長の符号化の結果を生成することと
    を備える方法。
  2. 可変長の符号化を実行することが、
    前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを指定するデータ構造にアクセスすることと、
    前記データ構造を使用して前記可変長の符号化を実行することと
    を備える請求項1に記載の方法。
  3. 前記データ構造が、映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの1つに関連付けられているメモリに格納される請求項2に記載の方法。
  4. 前記基本符号語のそれぞれが、前記それぞれのサブグループ内の辞書式に最小の符号語である請求項2に記載の方法。
  5. 前記可変長の符号化を実行することが、前記データ構造を使用して、前記値のうちの1つを符号化することを備え、符号化することが、
    前記符号化すべき値の重さに基づいて、前記グループのうちの1つを選択することと、
    前記選択されたグループの前記第1のサブグループ内の前記符号語の数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの1つを選択することと、
    前記選択されたサブグループの前記基本符号語および前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記符号語のうちの1つを選択することと、
    前記選択された符号語により前記符号化すべき値を符号化することと
    を備える請求項2に記載の方法。
  6. 前記符号化された値を復号器に送信することをさらに備える請求項5に記載の方法。
  7. 前記可変長の符号化を実行することが、前記データ構造を使用して、前記符号語のうちの1つを復号することを備え、復号することが、
    符号化ツリーのトップダウン検索で、前記復号すべき符号語以下の基本符号語を含む前記サブグループのうちの第1のものを選択することと、
    前記復号すべき符号語と、前記選択されたサブグループの前記基本符号語との間の差に基づいて、前記選択されたサブグループ内の前記復号すべき符号語の位置を決定することと、
    前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべき符号語によって表される前記値の重さを決定することと、
    前記選択されたサブグループが前記グループの前記第1のサブグループであるか、前記第2のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を決定することと、
    前記値のうちの1つ、前記復号すべき符号語によって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を選択することと、
    前記選択された値により前記復号すべき符号語を復号することと
    を備える請求項1に記載の方法。
  8. 前記選択された値に少なくとも一部分基づいて、ユーザに出力を提示することをさらに備える請求項7に記載の方法。
  9. 前記符号語によって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも1つを表す請求項1に記載の方法。
  10. 符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループと
    を定義する符号構造に従って可変長の符号を実行するための手段と、
    メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、前記可変長の符号化の結果を生成するための手段と
    を備える装置。
  11. 可変長の符号化を実行するための前記手段が、
    前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを指定するデータ構造にアクセスするための手段と、
    前記データ構造を使用して前記可変長の符号化を実行するための手段と
    を備える請求項10に記載の装置。
  12. 前記データ構造を、映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの1つに関連付けられているメモリに格納するための手段をさらに含む請求項11に記載の装置。
  13. 前記基本符号語のそれぞれが、前記それぞれのサブグループ内の辞書式に最小の符号語である請求項11に記載の装置。
  14. 可変長の符号化を実行するための前記手段が、前記データ構造を使用して、前記値のうちの1つを符号化するための手段を備え、符号化するための前記手段が、
    前記符号化すべき値の重さに基づいて、前記グループのうちの1つを選択するための手段と、
    前記選択されたグループの前記第1のサブグループ内の前記符号語の数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの1つを選択するための手段と、
    前記選択されたサブグループの前記基本符号語および前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記符号語のうちの1つを選択するための手段と、
    前記選択された符号語により前記符号化すべき値を符号化するための手段と
    を備える請求項11に記載の装置。
  15. 前記符号化された値を復号器に送信するための手段をさらに備える請求項14に記載の装置。
  16. 可変長の符号化を実行するための前記手段が、前記データ構造を使用して、前記符号語のうちの1つを復号するための手段を備え、復号するための前記手段が、
    符号化ツリーのトップダウン検索で、前記復号すべき符号語以下の基本符号語を含む前記サブグループのうちの第1のものを選択するための手段と、
    前記復号すべき符号語と、前記選択されたサブグループの前記基本符号語との間の差に基づいて、前記選択されたサブグループ内の前記復号すべき符号語の位置を決定するための手段と、
    前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべき符号語によって表される前記値の重さを決定するための手段と、
    前記選択されたサブグループが前記グループの前記第1のサブグループであるか、前記第2のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を決定するための手段と、
    前記値のうちの1つ、前記復号すべき符号語によって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を選択するための手段と、
    前記選択された値により前記復号すべき符号語を復号するための手段と
    を備える請求項11に記載の装置。
  17. 前記選択された値に少なくとも一部分基づいて、ユーザに出力を提示するための手段をさらに備える請求項16に記載の装置。
  18. 前記符号語によって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも1つを表す請求項10に記載の装置。
  19. プロセッサに、
    符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループと
    を定義する符号構造に従って可変長の符号化を実行させ、
    メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、前記可変長の符号化の結果を生成させる
    ための命令を備える有形のコンピュータ可読媒体。
  20. 前記プロセッサに、
    前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを指定するデータ構造にアクセスさせ、
    前記データ構造を使用して前記可変長の符号化を実行させる
    ための命令をさらに備える請求項19に記載のコンピュータ可読媒体。
  21. 前記プロセッサに、前記データ構造を、映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの1つに関連付けられているメモリに格納させるための命令をさらに備える請求項20に記載のコンピュータ可読媒体。
  22. 前記基本符号語のそれぞれが、前記それぞれのサブグループ内の辞書式に最小の符号語である請求項20に記載のコンピュータ可読媒体。
  23. 前記可変長の符号化を実行するために、前記データ構造を使用して、前記プロセッサに、前記値のうちの1つを符号化させるための命令であって、前記プロセッサに、
    前記符号化すべき値の重さに基づいて、前記グループのうちの1つを選択させ、
    前記選択されたグループの前記第1のサブグループ内の前記符号語の数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの1つを選択させ、
    前記選択されたサブグループの前記基本符号語および前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記符号語のうちの1つを選択させ、
    前記選択された符号語により前記符号化すべき値を符号化させる
    ための命令をさらに備える請求項21に記載のコンピュータ可読媒体。
  24. 前記プロセッサに、前記符号化された値を復号器に送信するよう送信機を制御させるための命令をさらに備える請求項23に記載のコンピュータ可読媒体。
  25. 前記可変長の符号化を実行するために、前記データ構造を使用して、前記プロセッサに、前記符号語のうちの1つを復号させるための命令であって、前記プロセッサに、
    符号化ツリーのトップダウン検索で、前記復号すべき符号語以下の基本符号語を含む前記サブグループのうちの第1のものを選択させ、
    前記復号すべき符号語と、前記選択されたサブグループの前記基本符号語との間の差に基づいて、前記選択されたサブグループ内の前記復号すべき符号語の位置を決定させ、
    前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべき符号語によって表される前記値の重さを決定させ、
    前記選択されたサブグループが前記グループの前記第1のサブグループであるか、前記第2のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を決定させ、
    前記値のうちの1つ、前記復号すべき符号語によって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を選択させ、
    前記選択された値により前記復号すべき符号語を復号させる
    ための命令をさらに備える請求項21に記載のコンピュータ可読媒体。
  26. 前記プロセッサに、前記選択された値に少なくとも一部分基づいて、ユーザに出力を提示するよう出力装置を制御させるための命令をさらに備える請求項25に記載のコンピュータ可読媒体。
  27. 前記符号語によって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも1つを表す請求項19に記載のコンピュータ可読媒体。
  28. 符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループと
    を定義する符号構造に従って可変長の符号化を実行するよう構成されているプロセッサであって、
    メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、前記可変長の符号化の結果を生成するよう構成されている
    プロセッサを備える装置。
  29. 前記プロセッサが、前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを指定するデータ構造にアクセスし、前記データ構造を使用して、前記可変長の符号化を実行する請求項28に記載の装置。
  30. 前記データ構造が、映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの1つに関連付けられているメモリに格納される請求項29に記載の装置。
  31. 前記基本符号語のそれぞれが、前記それぞれのサブグループ内の辞書式に最小の符号語である請求項29に記載の装置。
  32. 前記プロセッサが、前記可変長の符号化を実行するために、前記データ構造を使用して、前記値のうちの1つを符号化し、前記プロセッサが、前記符号化すべき値の重さに基づいて、前記グループのうちの1つを選択し、前記選択されたグループの前記第1のサブグループ内の前記符号語の数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの1つを選択し、前記選択されたサブグループの前記基本符号語および前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記符号語のうちの1つを選択し、前記選択された符号語により前記符号化すべき値を符号化する請求項29に記載の装置。
  33. 前記符号化された値を復号器に送信する送信機をさらに備える請求項32に記載の装置。
  34. 前記プロセッサが、前記可変長の符号化を実行するために、前記データ構造を使用して、前記符号語のうちの1つを復号し、前記プロセッサが、符号化ツリーのトップダウン検索で、前記復号すべき符号語以下の基本符号語を含む前記サブグループのうちの第1のものを選択し、前記復号すべき符号語と、前記選択されたサブグループの前記基本符号語との間の差に基づいて、前記選択されたサブグループ内の前記復号すべき符号語の位置を決定し、前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべき符号語によって表される前記値の重さを決定し、前記選択されたサブグループが前記グループの前記第1のサブグループであるか、前記第2のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を決定し、前記値のうちの1つ、前記復号すべき符号語によって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を選択し、前記選択された値により前記復号すべき符号語を復号する請求項29に記載の装置。
  35. 前記選択された値に少なくとも一部分基づいて、ユーザに出力を提示する出力装置をさらに備える請求項34に記載の装置。
  36. 前記符号語によって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも1つを表す請求項28に記載の装置。
  37. 可変長の符号語を指定する符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループと
    を定義する符号構造について、
    前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを使用して、可変長の符号化を実行することと、
    メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、前記可変長の符号化の結果を生成することと
    を備える方法。
  38. 可変長の符号化を実行することが、前記値の少なくとも一部を符号化することを備え、前記可変長の符号化の前記結果が1つまたは複数の符号語である請求項37に記載の方法。
  39. 符号化することが、
    前記符号化すべき値の重さに基づいて、前記グループのうちの1つを選択することと、
    前記選択されたグループの前記第1のサブグループ内の前記符号語の数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの1つを選択することと、
    前記選択されたサブグループの前記基本符号語および前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記符号語のうちの1つを選択することと、
    前記選択された符号語により前記符号化すべき値を符号化することと
    を備える請求項38に記載の方法。
  40. 可変長の符号化を実行することが、前記符号語の少なくとも一部を復号することを備え、前記可変長の符号化の前記結果が1つまたは複数の値である請求項37に記載の方法。
  41. 復号することが、
    符号化ツリーのトップダウン検索で、前記復号すべき符号語以下の基本符号語を含む前記サブグループのうちの第1のものを選択することと、
    前記復号すべき符号語と、前記選択されたサブグループの前記基本符号語との間の差に基づいて、前記選択されたサブグループ内の前記復号すべき符号語の位置を決定することと、
    前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべき符号語によって表される前記値の重さを決定することと、
    前記選択されたサブグループが前記グループの前記第1のサブグループであるか、前記第2のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を決定することと、
    前記値のうちの1つ、前記復号すべき符号語によって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を選択することと、
    前記選択された値により前記復号すべき符号語を復号することと
    を備える請求項40に記載の方法。
  42. 前記基本符号語のそれぞれが、前記それぞれのサブグループ内の辞書式に最小の符号語である請求項37に記載の方法。
  43. 前記符号語によって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも1つを表す請求項37に記載の方法。
  44. 符号構造について、
    可変長の符号語を指定する符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループと
    を定義するための手段と、
    前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを使用して、可変長の符号化を実行するための手段と、
    メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、前記可変長の符号化の結果を生成するための手段と
    を備える装置。
  45. 可変長の符号化を実行するための前記手段が、前記値の少なくとも一部を符号化するための手段を備え、前記可変長の符号化の前記結果が1つまたは複数の符号語である請求項44に記載の装置。
  46. 符号化するための前記手段が、
    前記符号化すべき値の重さに基づいて、前記グループのうちの1つを選択するための手段と、
    前記選択されたグループの前記第1のサブグループ内の前記符号語の数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの1つを選択するための手段と、
    前記選択されたサブグループの前記基本符号語および前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記符号語のうちの1つを選択するための手段と、
    前記選択された符号語により前記符号化すべき値を符号化するための手段と
    を備える請求項45に記載の装置。
  47. 可変長の符号化を実行するための前記手段が、前記符号語の少なくとも一部を復号するための手段を備え、前記可変長の符号化の前記結果が1つまたは複数の値である請求項44に記載の装置。
  48. 復号するための前記手段が、
    符号化ツリーのトップダウン検索で、前記復号すべき符号語以下の基本符号語を含む前記サブグループのうちの第1のものを選択するための手段と、
    前記復号すべき符号語と、前記選択されたサブグループの前記基本符号語との間の差に基づいて、前記選択されたサブグループ内の前記復号すべき符号語の位置を決定するための手段と、
    前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべき符号語によって表される前記値の重さを決定するための手段と、
    前記選択されたサブグループが前記グループの前記第1のサブグループであるか、前記第2のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を決定するための手段と、
    前記値のうちの1つ、前記復号すべき符号語によって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を選択するための手段と、
    前記選択された値により前記復号すべき符号語を復号するための手段と
    を備える請求項47に記載の装置。
  49. 前記基本符号語のそれぞれが、前記それぞれのサブグループ内の辞書式に最小の符号語である請求項44に記載の装置。
  50. 前記符号語によって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも1つを表す請求項44に記載の装置。
  51. プロセッサに、
    符号構造について、
    可変長の符号語を指定する符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループとを定義させ、
    前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを使用して、可変長の符号化を実行させ、
    メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、前記可変長の符号化の結果を生成することの
    ための命令を備える有形のコンピュータ可読媒体。
  52. 前記命令が前記プロセッサに前記値のうちの少なくとも一部を符号化させ、前記可変長の符号化の前記結果が1つまたは複数の符号語である請求項51に記載のコンピュータ可読媒体。
  53. 前記命令が、前記プロセッサに、
    前記符号化すべき値の重さに基づいて、前記グループのうちの1つを選択させ、
    前記選択されたグループの前記第1のサブグループ内の前記符号語の数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの1つを選択させ、
    前記選択されたサブグループの前記基本符号語および前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記符号語のうちの1つを選択させ、
    前記選択された符号語により前記符号化すべき値を符号化させる
    請求項52に記載のコンピュータ可読媒体。
  54. 前記命令が前記プロセッサに前記符号語のうちの少なくとも一部を復号させ、前記可変長の符号化の前記結果が1つまたは複数の値である請求項51に記載のコンピュータ可読媒体。
  55. 前記命令が、前記プロセッサに、
    符号化ツリーのトップダウン検索で、前記復号すべき符号語以下の基本符号語を含む前記サブグループのうちの第1のものを選択させ、
    前記復号すべき符号語と、前記選択されたサブグループの前記基本符号語との間の差に基づいて、前記選択されたサブグループ内の前記復号すべき符号語の位置を決定させ、
    前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべき符号語によって表される前記値の重さを決定させ、
    前記選択されたサブグループが前記グループの前記第1のサブグループであるか、前記第2のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を決定させ、
    前記値のうちの1つ、前記復号すべき符号語によって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を選択させ、
    前記選択された値により前記復号すべき符号語を復号させる
    請求項54に記載のコンピュータ可読媒体。
  56. 前記基本符号語のそれぞれが、前記それぞれのサブグループ内の辞書式に最小の符号語である請求項51に記載のコンピュータ可読媒体。
  57. 前記符号語によって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも1つを表す請求項51に記載のコンピュータ可読媒体。
  58. 可変長の符号語を指定する符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループと
    を定義する符号構造について、
    前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを使用して、可変長の符号化を実行し、メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、前記可変長の符号化の結果を生成するよう構成されているプロセッサ
    を備える装置。
  59. 前記プロセッサが前記値の少なくとも一部を符号化し、前記可変長の符号化の前記結果が1つまたは複数の符号語である請求項58に記載の装置。
  60. 前記プロセッサが、前記符号化すべき値の重さに基づいて、前記グループのうちの1つを選択し、前記選択されたグループの前記第1のサブグループ内の前記符号語の数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの1つを選択し、前記選択されたサブグループの前記基本符号語および前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記符号語のうちの1つを選択し、前記選択された符号語により前記符号化すべき値を符号化する請求項59に記載の装置。
  61. 前記プロセッサが前記符号語の少なくとも一部を復号し、前記可変長の符号化の前記結果が1つまたは複数の値である請求項58に記載の装置。
  62. 前記プロセッサが、符号化ツリーのトップダウン検索で、前記復号すべき符号語以下の基本符号語を含む前記サブグループのうちの第1のものを選択し、前記復号すべき符号語と、前記選択されたサブグループの前記基本符号語との間の差に基づいて、前記選択されたサブグループ内の前記復号すべき符号語の位置を決定し、前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべき符号語によって表される前記値の重さを決定し、前記選択されたサブグループが前記グループの前記第1のサブグループであるか、前記第2のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を決定し、前記値のうちの1つ、前記復号すべき符号語によって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を選択し、前記選択された値により前記復号すべき符号語を復号する請求項61に記載の装置。
  63. 前記基本符号語のそれぞれが、前記それぞれのサブグループ内の辞書式に最小の符号語である請求項58に記載の装置。
  64. 前記符号語によって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも1つを表す請求項58に記載の装置。
  65. 符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループと
    を定義する可変長の符号構造を使用した、可変長の符号化のためのデータ構造を備える有形のコンピュータ可読媒体。
  66. 前記データ構造が、前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを指定する請求項65に記載のコンピュータ可読媒体。
  67. 符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループと
    を定義する符号構造に従って可変長の符号化を実行するよう構成されているプロセッサであって、
    メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、前記可変長の符号化の結果を生成するよう構成されているプロセッサ
    を備える無線通信装置ハンドセット。
  68. 前記プロセッサが、前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを指定するデータ構造にアクセスし、前記データ構造を使用して、前記可変長の符号化を実行する請求項67に記載のハンドセット。
  69. メモリをさらに備え、前記データ構造が前記メモリに格納され、前記メモリが、前記ハンドセットにおける映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの1つに関連付けられている請求項68に記載のハンドセット。
  70. 前記基本符号語のそれぞれが、前記それぞれのサブグループ内の辞書式に最小の符号語である請求項68に記載のハンドセット。
  71. 前記プロセッサが、前記可変長の符号化を実行するために、前記データ構造を使用して、前記値のうちの1つを符号化し、前記プロセッサが、前記符号化すべき値の重さに基づいて、前記グループのうちの1つを選択し、前記選択されたグループの前記第1のサブグループ内の前記符号語の数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの1つを選択し、前記選択されたサブグループの前記基本符号語および前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記符号語のうちの1つを選択し、前記選択された符号語により前記符号化すべき値を符号化する請求項68に記載のハンドセット。
  72. 前記符号化された値を復号器に送信する無線送信機をさらに備える請求項71に記載のハンドセット。
  73. 前記プロセッサが、前記可変長の符号化を実行するために、前記データ構造を使用して、前記符号語のうちの1つを復号し、前記プロセッサが、符号化ツリーのトップダウン検索で、前記復号すべき符号語以下の基本符号語を含む前記サブグループのうちの第1のものを選択し、前記復号すべき符号語と、前記選択されたサブグループの前記基本符号語との間の差に基づいて、前記選択されたサブグループ内の前記復号すべき符号語の位置を決定し、前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべき符号語によって表される前記値の重さを決定し、前記選択されたサブグループが前記グループの前記第1のサブグループであるか、前記第2のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を決定し、前記値のうちの1つ、前記復号すべき符号語によって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を選択し、前記選択された値により前記復号すべき符号語を復号する請求項68に記載のハンドセット。
  74. 前記選択された値に少なくとも一部分基づいて、ユーザに出力を提示する出力装置をさらに備える請求項73に記載のハンドセット。
  75. 前記符号語によって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも1つを表す請求項67に記載のハンドセット。
  76. 符号化ツリーにおける符号語のグループであって、前記グループのそれぞれが、同じ重さを有する値を表す符号語を含み、前記グループのそれぞれにおける前記符号語が、前記符号語によって表される前記値に対して辞書式に順序付けられる符号語のグループと、
    前記グループのそれぞれの中の符号語の第1および第2のサブグループであって、前記第1のサブグループが第1の長さを有する符号語を含み、前記第2のサブグループが前記第1の長さとは異なる第2の長さを有する符号語を含む符号語の第1および第2のサブグループと
    を定義する符号構造に従って可変長の符号化を実行するよう構成されているプロセッサであって、
    メモリへの格納、装置への送信、またはユーザへの提示のうちの少なくとも1つのために、前記可変長の符号化の結果を生成するよう構成されているプロセッサ
    を備える集積回路装置。
  77. 前記プロセッサが、前記サブグループのそれぞれの基本符号語、前記グループのそれぞれの中の符号語の位置、前記第1のサブグループのそれぞれの中の符号語の数、および前記サブグループのそれぞれの中の前記符号語の長さを指定するデータ構造にアクセスし、前記データ構造を使用して、前記可変長の符号化を実行する請求項76に記載の装置。
  78. メモリをさらに備え、前記データ構造が前記メモリに格納され、前記メモリが、前記ハンドセットにおける映像符号器、画像符号器、音声符号器、言語符号器、映像復号器、画像復号器、および音声復号器、または言語復号器のうちの1つに関連付けられている請求項77に記載の装置。
  79. 前記基本符号語のそれぞれが、前記それぞれのサブグループ内の辞書式に最小の符号語である請求項77に記載の装置。
  80. 前記プロセッサが、前記可変長の符号化を実行するために、前記データ構造を使用して、前記値のうちの1つを符号化し、前記プロセッサが、前記符号化すべき値の重さに基づいて、前記グループのうちの1つを選択し、前記選択されたグループの前記第1のサブグループ内の前記符号語の数に対する前記符号化すべき値の辞書式位置に基づいて、前記サブグループのうちの1つを選択し、前記選択されたサブグループの前記基本符号語および前記符号化すべき値の前記辞書式位置に基づいて、前記選択されたサブグループ内の前記符号語のうちの1つを選択し、前記選択された符号語により前記符号化すべき値を符号化する請求項77に記載の装置。
  81. 前記プロセッサが、前記可変長の符号化を実行するために、前記データ構造を使用して、前記符号語のうちの1つを復号し、前記プロセッサが、符号化ツリーのトップダウン検索で、前記復号すべき符号語以下の基本符号語を含む前記サブグループのうちの第1のものを選択し、前記復号すべき符号語と、前記選択されたサブグループの前記基本符号語との間の差に基づいて、前記選択されたサブグループ内の前記復号すべき符号語の位置を決定し、前記選択されたサブグループが存在する前記グループに基づいて、前記復号すべき符号語によって表される前記値の重さを決定し、前記選択されたサブグループが前記グループの前記第1のサブグループであるか、前記第2のサブグループであるかに基づいて、前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を決定し、前記値のうちの1つ、前記復号すべき符号語によって表される前記値の重さ、および前記選択されたサブグループが存在する前記グループ内の前記符号語の位置を選択し、前記選択された値により前記復号すべき符号語を復号する
    請求項77に記載の装置。
  82. 前記符号語によって表される前記値が、映像データ、画像データ、言語データ、または音声データのうちの少なくとも1つを表す請求項76に記載の装置。
JP2009537330A 2006-11-14 2007-11-14 メモリ効率の良い(memoryefficient)適応形ブロックコーディング Expired - Fee Related JP4897888B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US86582706P 2006-11-14 2006-11-14
US60/865,827 2006-11-14
US86708106P 2006-11-22 2006-11-22
US60/867,081 2006-11-22
US11/840,406 2007-08-17
US11/840,406 US7573407B2 (en) 2006-11-14 2007-08-17 Memory efficient adaptive block coding
PCT/US2007/084682 WO2008061143A2 (en) 2006-11-14 2007-11-14 Memory efficient adaptive block coding

Publications (3)

Publication Number Publication Date
JP2010509895A true JP2010509895A (ja) 2010-03-25
JP2010509895A5 JP2010509895A5 (ja) 2011-08-18
JP4897888B2 JP4897888B2 (ja) 2012-03-14

Family

ID=39267977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009537330A Expired - Fee Related JP4897888B2 (ja) 2006-11-14 2007-11-14 メモリ効率の良い(memoryefficient)適応形ブロックコーディング

Country Status (11)

Country Link
US (1) US7573407B2 (ja)
EP (1) EP2095511B1 (ja)
JP (1) JP4897888B2 (ja)
KR (1) KR101095335B1 (ja)
CN (1) CN101542911B (ja)
AT (1) ATE485634T1 (ja)
BR (1) BRPI0718628A2 (ja)
CA (1) CA2668229A1 (ja)
DE (1) DE602007010034D1 (ja)
TW (1) TWI353120B (ja)
WO (1) WO2008061143A2 (ja)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8120515B2 (en) * 2006-09-29 2012-02-21 Agiledelta, Inc. Knowledge based encoding of data with multiplexing to facilitate compression
US8189683B2 (en) * 2006-11-28 2012-05-29 General Instrument Corporation Method and system for providing single cycle context weight update leveraging context address look ahead
US8411734B2 (en) 2007-02-06 2013-04-02 Microsoft Corporation Scalable multi-thread video decoding
JP2008227946A (ja) * 2007-03-13 2008-09-25 Toshiba Corp 画像復号装置
US20080247459A1 (en) * 2007-04-04 2008-10-09 General Instrument Corporation Method and System for Providing Content Adaptive Binary Arithmetic Coder Output Bit Counting
US8213499B2 (en) * 2007-04-04 2012-07-03 General Instrument Corporation Method and apparatus for context address generation for motion vectors and coefficients
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US8228991B2 (en) * 2007-09-20 2012-07-24 Harmonic Inc. System and method for adaptive video compression motion compensation
US7609182B2 (en) * 2007-11-30 2009-10-27 Comtech Aha Corporation Generating dynamic huffman codes
US7663512B2 (en) * 2008-07-21 2010-02-16 Hon Hai Precision Industry Co., Ltd. Decoder and method for decoding a message using an arbitrary-side growing Huffman tree
WO2010027324A1 (en) * 2008-09-08 2010-03-11 Scalado Ab Method for indexing images and for reading an index of an image
US8671327B2 (en) 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories
EP2335245B1 (en) * 2008-09-28 2015-01-07 Ramot at Tel-Aviv University Ltd. Method and system for adaptive coding in flash memories
US8503527B2 (en) 2008-10-03 2013-08-06 Qualcomm Incorporated Video coding with large macroblocks
US8335256B2 (en) * 2008-11-14 2012-12-18 General Instrument Corporation Motion compensation in video coding
KR101118089B1 (ko) * 2008-12-10 2012-03-09 서울대학교산학협력단 가변장 복호화 장치 및 방법
US9076239B2 (en) 2009-04-30 2015-07-07 Stmicroelectronics S.R.L. Method and systems for thumbnail generation, and corresponding computer program product
MX2011013707A (es) 2009-06-18 2012-02-28 Toshiba Kk Dispositivo de codificacion de imagenes dinamicas y dispositivo de decodificacion de imagenes dinamicas.
US9628794B2 (en) 2009-06-18 2017-04-18 Kabushiki Kaisha Toshiba Video encoding apparatus and a video decoding apparatus
KR101675118B1 (ko) * 2010-01-14 2016-11-10 삼성전자 주식회사 스킵 및 분할 순서를 고려한 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
US7990297B1 (en) * 2010-02-26 2011-08-02 Research In Motion Limited Encoding and decoding methods and devices employing dual codesets
US8063801B2 (en) * 2010-02-26 2011-11-22 Research In Motion Limited Encoding and decoding methods and devices using a secondary codeword indicator
US8233534B2 (en) * 2010-04-09 2012-07-31 Newport Media, Inc. Frame buffer compression and memory allocation in a video decoder
CA2799763A1 (en) 2010-07-13 2012-01-19 Research In Motion Limited Methods and devices for data compression using context-based coding order
US8378862B2 (en) 2010-07-28 2013-02-19 Reserch In Motion Limited Method and device for compression of binary sequences by grouping multiple symbols
US8879634B2 (en) 2010-08-13 2014-11-04 Qualcomm Incorporated Coding blocks of data using one-to-one codes
US8885704B2 (en) * 2010-10-01 2014-11-11 Qualcomm Incorporated Coding prediction modes in video coding
JP2012094959A (ja) * 2010-10-25 2012-05-17 Sony Corp 画像処理装置と画像処理方法およびプログラム
US9172963B2 (en) * 2010-11-01 2015-10-27 Qualcomm Incorporated Joint coding of syntax elements for video coding
US8885729B2 (en) 2010-12-13 2014-11-11 Microsoft Corporation Low-latency video decoding
US9706214B2 (en) 2010-12-24 2017-07-11 Microsoft Technology Licensing, Llc Image and video decoding implementations
US8755620B2 (en) 2011-01-12 2014-06-17 Panasonic Corporation Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus for performing arithmetic coding and/or arithmetic decoding
US8687904B2 (en) 2011-01-14 2014-04-01 Panasonic Corporation Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus which include arithmetic coding or arithmetic decoding
TWI606722B (zh) 2011-06-30 2017-11-21 微軟技術授權有限責任公司 用於減少視訊編碼及解碼中之延遲的方法、系統及電腦可讀取媒體
KR101955374B1 (ko) * 2011-06-30 2019-05-31 에스케이 텔레콤주식회사 고속 코딩 단위(Coding Unit) 모드 결정을 통한 부호화/복호화 방법 및 장치
JP2014523708A (ja) * 2011-07-01 2014-09-11 モトローラ モビリティ エルエルシー 動きベクトル予測設計の簡易化
US9338456B2 (en) * 2011-07-11 2016-05-10 Qualcomm Incorporated Coding syntax elements using VLC codewords
US8731067B2 (en) 2011-08-31 2014-05-20 Microsoft Corporation Memory management for video decoding
KR101616010B1 (ko) 2011-11-04 2016-05-17 구글 테크놀로지 홀딩스 엘엘씨 비균일 움직임 벡터 그리드에 대한 움직임 벡터 스케일링
US9819949B2 (en) 2011-12-16 2017-11-14 Microsoft Technology Licensing, Llc Hardware-accelerated decoding of scalable video bitstreams
WO2013162283A1 (ko) * 2012-04-24 2013-10-31 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
US9172970B1 (en) 2012-05-29 2015-10-27 Google Inc. Inter frame candidate selection for a video encoder
US11317101B2 (en) 2012-06-12 2022-04-26 Google Inc. Inter frame candidate selection for a video encoder
US9491461B2 (en) * 2012-09-27 2016-11-08 Qualcomm Incorporated Scalable extensions to HEVC and temporal motion vector prediction
SG11201500316PA (en) * 2012-09-28 2015-02-27 Intel Corp Inter-layer intra mode prediction
JP6763664B2 (ja) 2012-10-01 2020-09-30 ジーイー ビデオ コンプレッション エルエルシー エンハンスメント層作動パラメータのためのベース層ヒントを使用するスケーラブルビデオ符号化
US9503746B2 (en) 2012-10-08 2016-11-22 Google Inc. Determine reference motion vectors
US9485515B2 (en) 2013-08-23 2016-11-01 Google Inc. Video coding using reference motion vectors
JP5872513B2 (ja) * 2013-09-17 2016-03-01 株式会社東芝 符号化装置、復号化装置およびデータ処理システム
US9337862B2 (en) 2014-06-09 2016-05-10 Tidal Systems, Inc. VLSI efficient Huffman encoding apparatus and method
US20160092492A1 (en) * 2014-09-27 2016-03-31 Qualcomm Incorporated Sharing initial dictionaries and huffman trees between multiple compressed blocks in lz-based compression algorithms
WO2016074147A1 (en) 2014-11-11 2016-05-19 Mediatek Singapore Pte. Ltd. Separated coding tree for luma and chroma
US10873437B2 (en) * 2016-08-11 2020-12-22 Sharp Kabushiki Kaisha Systems and methods for frequency-division duplex transmission time interval operation
US10609421B2 (en) 2018-07-12 2020-03-31 Google Llc Context derivation for coefficient coding
US10547869B2 (en) 2017-12-08 2020-01-28 Google Llc Template-based entropy coding of quantized transform coefficients
RU2701711C1 (ru) * 2019-01-09 2019-09-30 федеральное государственное автономное образовательное учреждение высшего образования "Национальный исследовательский ядерный университет МИФИ" (НИЯУ МИФИ) Устройство для упаковки данных
US11093682B2 (en) 2019-01-14 2021-08-17 Microsoft Technology Licensing, Llc Language and compiler that generate synchronous digital circuits that maintain thread execution order
US11275568B2 (en) 2019-01-14 2022-03-15 Microsoft Technology Licensing, Llc Generating a synchronous digital circuit from a source code construct defining a function call
US11106437B2 (en) * 2019-01-14 2021-08-31 Microsoft Technology Licensing, Llc Lookup table optimization for programming languages that target synchronous digital circuits
US11113176B2 (en) 2019-01-14 2021-09-07 Microsoft Technology Licensing, Llc Generating a debugging network for a synchronous digital circuit during compilation of program source code
US11144286B2 (en) 2019-01-14 2021-10-12 Microsoft Technology Licensing, Llc Generating synchronous digital circuits from source code constructs that map to circuit implementations
US11362671B2 (en) * 2019-03-25 2022-06-14 Ariel Scientific Innovations Ltd. Systems and methods of data compression
TWI714184B (zh) * 2019-07-25 2020-12-21 中華電信股份有限公司 多階層網路樣式比對方法
US11722148B2 (en) 2019-12-23 2023-08-08 Ariel Scientific Innovations Ltd. Systems and methods of data compression

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0311883A (ja) * 1989-06-09 1991-01-21 Hitachi Ltd 可変長符号の復号化方式とファクシミリ装置、および静止画像伝送システム
JPH0697838A (ja) * 1992-07-02 1994-04-08 American Teleph & Telegr Co <Att> 復号化装置
JPH0879091A (ja) * 1994-08-31 1996-03-22 Mitsubishi Electric Corp 可変長符号テーブルおよび可変長符号化装置
JP2003273746A (ja) * 2002-03-18 2003-09-26 Mitsubishi Electric Corp 可変長符号復号装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3278297B2 (ja) * 1994-07-20 2002-04-30 富士通株式会社 データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
US5696507A (en) 1996-05-31 1997-12-09 Daewoo Electronics Co., Inc. Method and apparatus for decoding variable length code
US6188797B1 (en) 1997-05-27 2001-02-13 Apple Computer, Inc. Decoder for programmable variable length data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0311883A (ja) * 1989-06-09 1991-01-21 Hitachi Ltd 可変長符号の復号化方式とファクシミリ装置、および静止画像伝送システム
JPH0697838A (ja) * 1992-07-02 1994-04-08 American Teleph & Telegr Co <Att> 復号化装置
JPH0879091A (ja) * 1994-08-31 1996-03-22 Mitsubishi Electric Corp 可変長符号テーブルおよび可変長符号化装置
JP2003273746A (ja) * 2002-03-18 2003-09-26 Mitsubishi Electric Corp 可変長符号復号装置

Also Published As

Publication number Publication date
US7573407B2 (en) 2009-08-11
CN101542911B (zh) 2012-11-07
WO2008061143A2 (en) 2008-05-22
TWI353120B (en) 2011-11-21
CA2668229A1 (en) 2008-05-22
JP4897888B2 (ja) 2012-03-14
CN101542911A (zh) 2009-09-23
US20080111722A1 (en) 2008-05-15
EP2095511B1 (en) 2010-10-20
TW200835175A (en) 2008-08-16
DE602007010034D1 (de) 2010-12-02
ATE485634T1 (de) 2010-11-15
EP2095511A2 (en) 2009-09-02
WO2008061143A3 (en) 2008-07-10
BRPI0718628A2 (pt) 2013-11-26
KR20090089414A (ko) 2009-08-21
KR101095335B1 (ko) 2011-12-16

Similar Documents

Publication Publication Date Title
JP4897888B2 (ja) メモリ効率の良い(memoryefficient)適応形ブロックコーディング
JP4897887B2 (ja) 可変長コードのメモリ効率の良いコーディング
JP2010509895A5 (ja)
JP2010509893A5 (ja)
RU2426227C2 (ru) Кодирование кодов переменной длины с эффективным использованием памяти
JP5313362B2 (ja) 可変長固定長コードの高速パーシング
TWI826519B (zh) 用於係數寫碼之規則寫碼位元子之減少
US8947273B2 (en) Entropy coding
US9455744B2 (en) Context initialization in entropy coding
US7626522B2 (en) Data compression using variable-to-fixed length codes

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110425

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110506

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110525

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110601

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20110624

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110627

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111101

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111122

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111222

R150 Certificate of patent or registration of utility model

Ref document number: 4897888

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150106

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees