(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
本発明の原理は、ツリー構造を再使用してバイナリ・セットを符号化および復号する方法および装置に関する。本発明の原理は、任意のタイプの基礎となっているデータに関連するバイナリ・セットに適用することができることを理解されたい。従って、バイナリ・セットを適用することができ、かつ本発明の原理に従って利用することができる例示的なタイプのデータをいくつか挙げると、画像、映像、音響(例えば人声、音楽、音声など)などがあるが、これらに限定されるわけではない。上記に列挙したものは単なる例示であり、バイナリ・セットが表すことができ、かつ本発明の原理に従って利用することができるデータのタイプを網羅するものではないことを強調しておく。さらに、本明細書に与える本発明の原理の教示があれば、当技術分野およびこれに関連する技術分野の当業者なら、本発明の原理の精神を維持しながら、本発明の原理を適用することができる上記およびその他の用途およびデータ・タイプを思いつくであろうことも理解されたい。
【0017】
本明細書は、本発明の原理を例示するものである。従って、本明細書に明示的に記述または図示していなくても、本発明の原理を実現し、かつその精神および範囲に含まれる様々な構成を、当業者なら考案することができることを理解されたい。
【0018】
本明細書に記載する全ての例および条件に関する表現は、本発明の原理と、当技術分野をさらに進歩させるために本発明者(等)が与える概念とを、読者が理解するのを助けるという教育的な目的を意図したものであって、これらの具体的に列挙した例および条件に限定されるわけではないものと解釈されたい。
【0019】
さらに、本発明の原理の原理、特徴および実施例ならびにその具体的な例について本明細書で述べる全ての記述は、その構造的均等物および機能的均等物の両方を含むものとする。さらに、これらの均等物には、現在既知の均等物だけでなく、将来開発されるであろう均等物も含まれる、すなわち、その構造に関わらず、同じ機能を実行する開発される任意の要素も含まれるものとする。
【0020】
従って、例えば、当業者なら、本明細書に示すブロック図が本発明の原理を実施する例示的な回路の概念図を表していることを理解するであろう。同様に、任意のフローチャート、流れ図、状態遷移図、擬似コードなどが、コンピュータ可読媒体中に実質的に表現され、明示してある場合もしていない場合もあるコンピュータまたはプロセッサによって実質的に実行される様々なプロセスを表すことを理解されたい。
【0021】
図に示す様々な要素の機能は、専用のハードウェアを使用することによって、またソフトウェアを実行することができるハードウェアを適当なソフトウェアと関連付けて使用することによって、実現することができる。プロセッサによってそれらの機能を実現するときには、単一の専用プロセッサで実現することも、単一の共用プロセッサで実現することも、あるいはその一部を共用することもできる複数の個別プロセッサで実現することもできる。さらに、「プロセッサ」または「制御装置」という用語を明示的に用いていても、ソフトウェアを実行することができるハードウェアのみを指していると解釈すべきではなく、ディジタル信号プロセッサ(「DSP」)ハードウェア、ソフトウェアを記憶するための読取り専用メモリ(「ROM」)、ランダム・アクセス・メモリ(「RAM」)および不揮発性記憶装置(ただしこれらに限定されない)を暗に含むことがある。
【0022】
従来の、かつ/または特注のその他のハードウェアも含まれることがある。同様に、図に示す任意のスイッチも、概念的なものに過ぎない。それらの機能は、プログラム論理の動作によっても、専用論理によっても、プログラム制御と専用論理の相互作用によっても、あるいは手作業でも実施することができ、実施者(implementer)が、前後関係から具体的に考慮して特定の技術を選択することができる。
【0023】
本明細書の特許請求の範囲において、特定の機能を実行する手段として表現されている任意の要素は、当該機能を実行する任意の方法を含むものとする。当該機能は、例えば、(a)当該機能を実行する回路素子の組合せや、(b)ファームウェアやマイクロコードなども含めた任意の形態のソフトウェアを、当該ソフトウェアを実行して当該機能を実行する適当な回路と組み合わせたものなども含む。特許請求の範囲によって定義される本発明の原理は、記載した様々な手段が実施する機能を、特許請求の範囲が要求する形式で組み合わせ、まとめることにある。従って、これらの機能を実施することができる任意の手段を、本明細書に示す手段の均等物とみなすものとする。
【0024】
本明細書において、本発明の原理の「一実施例」または「実施例」あるいはその他の変形例と述べている場合、それは、当該実施例に関連して述べられる特定の特性、構造、特徴などが、本発明の原理の少なくとも1つの実施例に含まれるという意味である。従って、本明細書の様々な箇所に見られる「一実施例において」または「実施例において」という表現、あるいは任意のその他の変形表現は、その全てが必ずしも同じ実施例のことを指しているわけではない。
【0025】
例えば「A/B」、「Aおよび/またはB」ならびに「AおよびBの少なくとも1つ」の場合など、「/」、「および/または」ならびに「の少なくとも1つ」の何れかを使用している場合、それは、1番目に挙げた選択肢(A)のみを選択すること、または2番目に挙げた選択肢(B)のみを選択すること、または両方の選択肢(AおよびB)を選択することを含むということであることを理解されたい。さらに別の例として、「A、Bおよび/またはC」ならびに「A、BおよびCの少なくとも1つ」の場合には、この表現は、1番目に挙げた選択肢(A)のみを選択すること、または2番目に挙げた選択肢(B)のみを選択すること、または3番目に挙げた選択肢(C)のみを選択すること、または1番目と2番目に挙げた選択肢(AおよびB)のみを選択すること、または1番目と3番目に挙げた選択肢(AおよびC)のみを選択すること、または2番目と3番目に挙げた選択肢(BおよびC)のみを選択すること、または3つ全ての選択肢(AおよびBおよびC)を選択することを含むということである。当技術分野および関連技術分野の当業者には容易に分かるように、このことは、列挙されている項目の数に応じて拡張することができる。
【0026】
また、本明細書で使用する「ピクチャ」および「画像」という用語は入れ替えて使用してもよく、ビデオ・シーケンスに含まれる静止画像またはピクチャを指している。既知の通り、ピクチャは、フレームであってもフィールドであってもよい。
【0027】
さらに、本明細書で使用する「信号(信号通信する)」という用語は、対応するデコーダに対して何かを示すことを指す。例えば、エンコーダは、例えばあるピクチャ内の1つまたは複数のブロックの係数の重要度を示すデータのバイナリ・セットなどのデータの復号に再使用するために、1つまたは複数のツリーまたはサブツリーを信号通信することができる。このようにして、エンコーダ側とデコーダ側とで、同じツリーおよび/またはサブツリーを使用することができる。従って、例えば、エンコーダは、1組のツリーおよび/またはサブツリーのセットをデコーダに伝送して、デコーダが同じツリーおよび/またはサブツリーのセットを使用することができるようにすることができ、あるいは、デコーダがその他のツリーおよび/またはサブツリーと同様に当該のツリーおよび/またはサブツリーを既に有している場合には、(伝送は行わずに)信号通信を使用して、単に当該のツリーおよび/またはサブツリーをデコーダに知らせて、それらを選択できるようにすることもできる。任意の実際のツリーおよび/またはサブツリーの伝送を避けることにより、ビット節約を実現することができる。信号通信は、様々な方法で実施することができることを理解されたい。例えば、1つまたは複数のシンタックス要素やフラグなどを使用して、対応するデコーダに対して情報を信号通信することができる。
【0028】
上記のように、本発明の原理は、ツリー構造を再使用してバイナリ・セットを符号化および復号する方法および装置に関する。
【0029】
図1を参照すると、本発明の原理を適用することができる例示的なビデオ・エンコーダが、参照番号100で全体的に示されている。ビデオ・エンコーダ100は、結合器185の非反転入力部と信号通信する出力部を有するフレーム順序付けバッファ110を含む。結合器185の出力部は、変換器/量子化器125の第1の入力部に信号通信するように接続されている。変換器/量子化器125の出力部は、エントロピ・コーダ145の第1の入力部および逆変換器/逆量子化器150の第1の入力部に信号通信するように接続されている。エントロピ・コーダ145の出力部は、結合器190の第1の非反転入力部に信号通信するように接続されている。結合器190の出力部は、出力バッファ135の第1の入力部に信号通信するように接続されている。
【0030】
エンコーダ制御装置105の第1の出力部は、フレーム順序付けバッファ110の第2の入力部、逆変換器/逆量子化器150の第2の入力部、ピクチャ・タイプ決定モジュール115の入力部、マクロブロック・タイプ(MBタイプ)決定モジュール120の第1の入力部、イントラ予測モジュール160の第2の入力部、デブロッキング・フィルタ165の第2の入力部、動き補償器170の第1の入力部、動き推定器175の第1の入力部、および参照ピクチャ・バッファ180の第2の入力部に信号通信するように接続されている。
【0031】
エンコーダ制御装置105の第2の出力部は、付加拡張情報(SEI)挿入器130の第1の入力部、変換器/量子化器125の第2の入力部、エントロピ・コーダ145の第2の入力部、出力バッファ135の第2の入力部、およびシーケンス・パラメータ・セット(SPS)/ピクチャ・パラメータ・セット(PPS)挿入器140の入力部に信号通信するように接続されている。
【0032】
SEI挿入器130の出力部は、結合器190の第2の非反転入力部に信号通信するように接続されている。
【0033】
ピクチャ・タイプ決定モジュール115の第1の出力部は、フレーム順序付けバッファ110の第3の入力部に信号通信するように接続されている。ピクチャ・タイプ決定モジュール115の第2の出力部は、マクロブロック・タイプ決定モジュール120の第2の入力部に信号通信するように接続されている。
【0034】
シーケンス・パラメータ・セット(SPS)/ピクチャ・パラメータ・セット(PPS)挿入器140の出力部は、結合器190の第3の非反転入力部に信号通信するように接続されている。
【0035】
逆量子化器/逆変換器150の出力部は、結合器119の第1の非反転入力部に信号通信するように接続されている。結合器119の出力部は、イントラ予測モジュール160の第1の入力部およびデブロッキング・フィルタ165の第1の入力部に信号通信するように接続されている。デブロッキング・フィルタ165の出力部は、参照ピクチャ・バッファ180の第1の入力部に信号通信するように接続されている。参照ピクチャ・バッファ180の出力部は、動き推定器175の第2の入力部および動き補償器170の第3の入力部に信号通信するように接続されている。動き推定器175の第1の出力部は、動き補償器170の第2の入力部に信号通信するように接続されている。動き推定器175の第2の出力部は、エントロピ・コーダ145の第3の入力部に信号通信するように接続されている。
【0036】
動き補償器170の出力部は、スイッチ197の第1の入力部に信号通信するように接続されている。イントラ予測モジュール160の出力部は、スイッチ197の第2の入力部に信号通信するように接続されている。マクロブロック・タイプ決定モジュール120の出力部は、スイッチ197の第3の入力部に信号通信するように接続されている。スイッチ197の第3の入力部は、スイッチの「データ」入力(制御入力すなわち第3の入力に対して)が、動き補償器170またはイントラ予測モジュール160によって与えられるか否かを判定する。スイッチ197の出力部は、結合器119の第2の非反転入力部および結合器185の反転入力部に信号通信するように接続されている。
【0037】
フレーム順序付けバッファ110の第1の入力部およびエンコーダ制御装置105の入力部は、エンコーダ100の、入力ピクチャを受信するための入力部として利用することができる。さらに、付加拡張情報(SEI)挿入器130の第2の入力部は、エンコーダ100の、メタデータを受信するための入力部として利用することができる。出力バッファ135の出力部は、エンコーダ100の、ビットストリームを出力するための出力部として利用することができる。
【0038】
図2を参照すると、本発明の原理を適用することができる例示的なビデオ・デコーダが、参照番号200で全体的に示されている。ビデオ・デコーダ200は、エントロピ・デコーダ245の第1の入力部に信号通信するように接続された出力部を有する入力バッファ210を含む。エントロピ・デコーダ245の第1の出力部は、逆変換器/逆量子化器250の第1の入力部に信号通信するように接続されている。逆変換器/逆量子化器250の出力部は、結合器225の第2の非反転入力部に信号通信するように接続されている。結合器225の出力部は、デブロッキング・フィルタ265の第2の入力部およびイントラ予測モジュール260の第1の入力部に信号通信するように接続されている。デブロッキング・フィルタ265の第2の出力部は、参照ピクチャ・バッファ280の第1の入力部に信号通信するように接続されている。参照ピクチャ・バッファ280の出力部は、動き補償器270の第2の入力部に信号通信するように接続されている。
【0039】
エントロピ・デコーダ245の第2の出力部は、動き補償器270の第3の入力部、デブロッキング・フィルタ265の第1の入力部、およびイントラ予測器260の第3の入力部に信号通信するように接続されている。エントロピ・デコーダ245の第3の出力部は、デコーダ制御装置205の入力部に信号通信するように接続されている。デコーダ制御装置205の第1の出力部は、エントロピ・デコーダ245の第2の入力部に信号通信するように接続されている。デコーダ制御装置205の第2の出力部は、逆変換器/逆量子化器250の第2の入力部に信号通信するように接続されている。デコーダ制御装置205の第3の出力部は、デブロッキング・フィルタ265の第3の入力部に信号通信するように接続されている。デコーダ制御装置205の第4の出力部は、イントラ予測モジュール260の第2の入力部、動き補償器270の第1の入力部、および参照ピクチャ・バッファ280の第2の入力部に信号通信するように接続されている。
【0040】
動き補償器270の出力部は、スイッチ297の第1の入力部に信号通信するように接続されている。イントラ予測モジュール260の出力部は、スイッチ297の第2の入力部に信号通信するように接続されている。スイッチ297の出力部は、結合器225の第1の非反転入力部に信号通信するように接続されている。
【0041】
入力バッファ210の入力部は、デコーダ200の、入力ビットストリームを受信するための入力部として利用することができる。デブロッキング・フィルタ265の第1の出力部は、デコーダ200の、出力ピクチャを出力するための出力部として利用することができる。
【0042】
MPEG−4 AVC規格では、非ゼロ係数の位置が重要度マップによって符号化される。MPEG−4 AVC規格の重要度マップは、以下のように機能する。coded_block_flagが、ブロックが重要な係数を有することを示す場合には、バイナリ値重要度マップを符号化する。各係数について、走査順序で、1ビット・シンボルsignificant_coeff_flagが伝送される。significant_coeff_flagが1である場合、すなわちこの走査位置に非ゼロ係数が存在する場合には、さらに別の1ビット・シンボルlast_significant_coeff_flagが送信される。このシンボルは、現在の重要な係数が当該ブロック内の最後の重要な係数であるかどうか、または別の重要な係数がさらに続くかどうかを示す。ブロックの最後の走査位置のフラグ(significant_coeff_flag、last_significant_coeff_flag)は決して伝送されないことに留意されたい。最後の走査位置に到達し、かつ重要度マップの符号化が値1のlast_significant_coeff_flagでまだ終了していない場合には、最後の係数が重要でなければならないことが明らかである。
【0043】
重要度を示す別の方法は、いわゆるゼロ・ツリーによって行われる。ツリーは、リンクされた1組のノード・セットを備えた階層木構造を模した、広く使用されているデータ構造である。さらに、ツリーは、各ノードが、ゼロ個以上の子ノードを有する1組の子ノード・セットと、最大で1個の親ノードとを有する、無閉路連結グラフ(acyclic connected graph)である。
【0044】
ゼロ・ツリーを用いた重要度の信号通信の例は、画像圧縮のウェーブレット変換に見ることができる。ツリー構造は、重要度マップを伝達するために使用される。
図3を参照すると、本発明の原理を適用することができる例示的なツリー構造が、参照番号300で全体的に示されている。小さい四角はそれぞれ、変換係数を表している。ツリーのルートは、内部に星印を含んだ小さい四角で表されている。子ノードは、隣接する係数である。以下、子ノード同士のつながりは、矢印で示されている。図示のように、各親は、その他の4つの係数を子として有している。ツリー構造300は、これらの前述の関係を示し、ツリーがどのような構造になっているのかを示す単なる一例であるが、ツリー全体またはツリー内の全ての親子関係を示しているわけではない。この場合には、ツリーの各ノードは、1つの係数と関係付けられ、ツリーは、2Dのウェーブレット変換係数間の空間的関係を考慮に入れて構築されている。その後、全てのノードについて、0または1が送信される。値/シンボル0は、ツリー内の特定のノードの係数ならびにツリー内の当該係数未満の全ての係数がゼロであることを示す。このように、多くのゼロ係数が、1つのシンボルのみで符号化される。多くのゼロがある場合には、このような手法により、良好な圧縮比が得られる。
【0045】
別のタイプのツリーとして、バイナリ・ツリーがあり、これは、単純であるが効率的な種類のツリーである。第1の従来技術の手法では、このツリーを使用して、係数の位置を記述する。この場合には、ツリーの各リーフを変換係数と関係付けることができる一方で、ツリーの内部ノードはいかなる係数とも関係付けられない。この場合、符号化は、前述の場合と同様である。すなわち、あるノードより下の全ての係数がゼロであるときには、「0」でこの状況を示すことができる。従って、当該ノードより下に進んで、各「後続」係数の重要度/ゼロ値を明示的に示す必要がない。本発明の原理は、このタイプのツリーに関するものである。
【0046】
ある係数が重要である確率は、従来技術の手法では適切に考慮されていない多くの要因によって決まる。例えば、係数の重要性には空間的相関がある。さらに、低周波数の係数の統計学的性質は、高周波数の係数の統計学的性質と異なる。さらに、異なる残差ブロックの重要度マップは、大きく異なる可能性がある。従って、1つのデータ構造および符号化プロセスを使用するだけでは、こうした多様性を全て捉えるには不十分である。
【0047】
重要度マップ(または任意のバイナリ・セット)の多様性によりよく適応するために、いくつかのツリーおよびサブツリーを使用することが提案されている。重要度マップ毎に、マップを符号化するために使用する最良のツリーまたはサブツリーの組合せを選択する。複数のリーフの値の統計学的性質およびそれらの間の相関を活用する変換、グルーピング、符号反転(flipping signs)およびその他の演算を使用することも既知であり、ツリー、サブツリーまたはその一部でこれらの演算を使用することも提案されている。
【0048】
ビデオ符号化技術は、予測および変換のサイズを大きくすることによって、性能を向上させている。これらの大きなサイズは、ツリー構造の要件に影響を及ぼす。ツリー構造の要件を簡略化するために、本発明者等は、本明細書において、例えば重要度マップなどの(ただしこれに限定されない)バイナリ・セットの異なる部分を符号化するためにツリーまたはツリーの一部を再使用する、再帰的ツリーを使用する方法および装置について述べる。具体的には、本発明者等は、類似の統計値を有するバイナリ・セットの異なる領域で、ツリーまたはツリーの一部を再使用する。本発明者等は、再帰的アルゴリズムが適用されるようにツリー構造を適応させる。この方法では、ツリー全体の符号化性能を維持またはむしろ改善し、かつ計算の複雑さをほぼ同程度に維持しつつも、必要とする確率値の数が減少する。
【0049】
これに対して、現在のビデオ・エンコーダは、シンボルを符号化するのに算術符号化を使用する。各シンボルは、コンテキストが関連付けられた確率値を有する。バイナリ・セットを符号化するツリーに基づく方法は、各シンボルをエントロピ符号化することによって統計値に適応することができる。1つまたは複数の確率値が、各ノードまたはノード間の各分岐に関連付けられる。欠点は、対応するバイナリ・セットに対するツリーのサイズとともに、確率値の数が増えることである。本発明者等は、バイナリ・セットの異なる部分でツリーまたはサブツリーを再使用することによって、この増加を制限することを提案する。例えば、16×16の変換係数は、8×8のゼロ・ツリーまたは8×8のサブツリーを再使用することができる。従って、確率値と関連付けられる重要なコンテキストを減らすことができる。効率という観点からいえば、この複雑さの低減は、類似の統計値を有するバイナリ・セットの複数の部分に再使用を限定すると、良好に機能する。本発明の原理は、特に高精細度(HD)ビデオで符号化効率を改善するためにより大きな変換を使用する場合に、有利である。
【0050】
バイナリ・セット(例えば変換済み係数の重要度マップなど)を符号化するためのゼロ・ツリー構造では、リーフに、当該セット内の要素のバイナリ値が与えられる。従って、各リーフの値とバイナリ・セット内の各要素との間には、一対一の関係がある。残差係数の重要度マップは、バイナリ・セットを形成する。
【0051】
特定の内部ノードの値は、当該特定の内部ノードより下のノードの値を求めることによって求められる。このようにして、各内部ノードの重要度/バイナリ値が、リーフ・ノードからルート・ノードに導出される。次いで、ルート・ノードから始まるノードの値を信号通信することによって、ツリーを符号化する。特定のノードに「0」がマークされている場合、それは当該特定のノードより下の全ての(「下位」)ノードも「0」であることを意味するため、これらの下位ノードの値は特に信号通信する必要がないので、圧縮が実現される。この方法の様々な変形形態が存在する。
【0052】
例:バイナリ・ツリー
分かりやすく例示するために、最初に、バイナリ・ツリーについて説明する。バイナリ・ツリーは、子を持たないリーフ・ノードを除き、各内部ノードが2つの子ノードを有するツリーである。前述の第1の従来技術の手法では、重要度マップを符号化するためのバイナリ・ツリーについて述べた。
【0053】
図4を参照すると、本発明の原理を適用することができる例示的なバイナリ・ツリーが、参照番号400で全体的に示されている。バイナリ・ツリー400は、ノード1から13を含む。バイナリ・ツリー400は、6個の内部ノードおよび7個のリーフ・ノードを有する。ノード1は、ルート・ノードである。ノード2,3,6,9および11は、内部ノードである。ノード4,5,7,8,12および13は、リーフ・ノードである。ノード内の数字は、ノードを通過する順序を示している。この例では、順序は、深さ優先である。もちろん、当技術分野および関連技術分野の当業者が容易に思いつくその他の順序であってもよい。
【0054】
バイナリ・セットは、ツリーのリーフにマッピングされる。
図5を参照すると、バイナリ・ツリーのリーフへのバイナリ・セットの例示的なマッピングが、全体的に参照番号500で示されている。リーフ内の数字は、当該リーフがリンクされるバイナリ・セットの要素を示している。例えば、7個の係数(c0からc6で示す)の重要度マップを、このツリーを用いて符号化することができる。c0の値は、第1の係数がゼロである場合には「0」に等しく、さもなければ「1」に等しい。同じことが、残りの係数にも当てはまる。第1の係数の重要度は、参照番号「1」で示されるリーフを使用して符号化され、第2の係数の重要度は、参照番号「2」で示されるリーフを使用して符号化され、以下同様である。
【0055】
どのようにこの符号化プロセスを実行するかの一例について、以下に説明する。符号化プロセスは、ルートから始まり、ノードを通過する順序に従う(この事例では深さ優先)。ノードが重要である(すなわち子が両方とも重要である)場合には、「1」が符号化され、符号化プロセスは次のノードに進む。ノードが重要でない(すなわち子の一方が重要でない)場合には、「0」が符号化され、次いで、左の子と右の子のうちのどちらが重要であるのかを示す。これは、左の子が重要である場合には「1」を符号化し、右の子が重要である場合には「0」を符号化することによって行われる。
【0056】
以下は具体例である。リーフ・ノードへのマッピングが、本明細書で上記に説明したように行われるものと仮定する。また、c1、c2およびc4を除いて全ての係数がゼロであると仮定する。
図6を参照すると、バイナリ・ゼロ・ツリーを使用した重要度マップの例示的な符号化が、参照番号600で全体的に示されている。この符号化プロセスは、深さ優先順序で適用される。「0」が付された内部ノードは、2つの子のうちどちらが重要であるかを示す第2のシンボルの送信を必要とする。
図6では、これを、対応するシンボルが付された左側の分岐上の小さい四角で示してある。このマップで符号化する最終的なシンボルは、「11000101」である。
【0057】
2次元(2D)変換では、最初に、2次元係数セットを1次元セットにマッピングし、次いで、各セットをリーフにマッピングする。
図7を参照すると、2次元(2D)係数の、1次元(1D)バイナリ・セットへの例示的なマッピングが、参照番号700で全体的に示されている。特に、マッピング700は、8×8変換の係数の2Dから1Dへのマッピングに関する。このマップは、係数0,c0から始まり、右下部の最後の係数c63まで矢印に従って進む。
【0058】
バイナリ・セットの符号化および復号におけるツリー構造の再使用
ツリー内の各シンボルは、対応する確率でエントロピ符号化される。エントロピ符号化は、算術コーダを用いて行うことができる。エンコーダおよびデコーダが各確率値を追跡してコンテンツに適応させているときには、エンコーダは、統計値に良好に適応し、良好な性能を発揮する。しかし、大きな変換の重要度マップの場合のようにツリーが大きい場合には、コストが高くなりすぎて、全ての確率値を記憶および追跡することができない。
【0059】
この問題を軽減するために、本発明者等は、バイナリ・セットの異なる部分についてツリー構造および/または関連する確率値を再使用する。多くの場合、ツリー構造の一部分を再使用することは、再使用した部分に関連する任意の対応する確率値を再使用することを黙示的に含む。このように、当技術分野および関連技術分野の当業者なら容易に理解できるように、ツリー構造を再使用するとともに関連する任意の確率値も再使用することにより、複雑さやオーバヘッドなどが大幅に低減するので、最大の利点を得ることができる。一実施例では、8×8変換の場合に、垂直方向の周波数と水平方向の周波数とが類似していることから、重要度マップの異なる部分が類似点を有する。右上の係数と左下の係数の間に、統計学的な対称性がある。この場合には、構造および確率値を、両方の部分で再使用することができる。
図8を参照すると、本発明の原理の一実施例による、同じツリーを共用することができる
図7の例示的なマッピングの複数の部分が、参照番号800で全体的に示されている。
図8では、これらの部分800を、参照番号800で示すとともに破線の楕円でも示し、マッピング700の残りの部分は実線で示してある。
【0060】
重要度マップは、本発明の原理の教示に従って活用することができるその他の特徴を有する。通常は、1Dマップの最初のいくつかの係数は、重要である確率が高く、それらの間の相関が高い。一方、重要度マップの残りの部分は、重要である確率が低く、相関が低い。また、ツリー内で深くなるほど、重要な係数の数は少なくなる。従って、他の実施例では、マップのこれらの部分は、ほとんど常にゼロであるという意味で類似している。その結果として、効率性を損なうことなく、かつメモリの複雑さを軽減しながら、これらの領域でツリーの複数の部分を再使用することができる。
図9を参照すると、本発明の原理の一実施例による、同じツリー構造および関連する確率値を共用することができる
図7の例示的なマッピングのその他の部分が、参照番号900で全体的に示されている。
図9では、これらの部分900を、参照番号900で示すとともに破線でも示し、マッピング700の残りの部分は実線で示してある。
【0061】
以前に使用したツリー構造の1つまたは複数の部分を再使用するために本発明の原理で活用することができる類似性は、例えば、1つまたは複数の類似性メトリクスに基づくことができることを理解されたい。例えば、本明細書に与える本発明の原理の教示があれば、当技術分野および関連技術分野の当業者なら、類似性の判定に適用可能な閾値を容易に思いつくことができる。このようにして、容易に使用できる客観的な基準を使用して、類似性を容易に特定し、それにより、これを本発明の原理に従って活用することができる。
【0062】
ここで、本発明の原理の少なくとも1つの例示的な実施形態について説明する。ただし、このような実施形態は例示を目的としたものであり、本発明の原理がこれにのみ限定されるわけではないことを理解されたい。この例示的な実施形態では、本発明者等は、上述の状況、すなわち重要度マップ内で最初のいくつかの要素のみが異なる統計値を有する状況を仮定する。従って、その後の要素について、このツリーのサブツリーを再使用する。これを行うために、本発明者等は、ツリーの最後のリーフが次のツリー(同じツリー)のルートに接続する、再帰的ツリーを提案する。このようにして、構造および確率値を再帰的に再使用する。
図10を参照すると、本発明の原理の一実施例による例示的な再帰的バイナリ・ツリーが、参照番号1000で全体的に示されている。内部にそれぞれ参照番号「1」、「2」および「3」がラベル付けされている破線で描いた3つの四角で示すように、このツリーには、3回使用されるサブツリーがある。従って、同じ内部ノード(aおよびb)を有する同じ構造が、(番号を付した破線の四角の中に)3回現れる。これらのリーフを符号化するために使用する確率値および内部ノードは、同じとすることができる。
【0063】
他の実施例では、本発明者等は、小さな変換のツリーをそれより大きな変換に再使用する。16×16変換の係数は、4組の8×8個の係数のセットに分割することができる。例えば、これは、第1の係数を第1のセットに入れ、第2の係数を第2のセットに入れ、第3の係数を第3のセットに入れ、第4の係数を第4のセットに入れ、第5の係数を再び第1のセットに入れ、以下同様に行うことによって行うことができる。これにより、4つのセットのそれぞれが、8×8個の係数のツリーを使用することができる。さらに、これら4つの8×8ツリーを、4つのリーフ・ノードを有するツリーによって1つのツリーにまとめることができる。
図11を参照すると、本発明の原理の一実施例による複数の小さいツリーを再使用して変換重要度マップのための大きなツリーを生成する例が、参照番号1100で全体的に示されている。
【0064】
この方法は、カスケード変換で非常に良好に機能する。カスケード変換は、2つの変換を順番に連結することによって形成される変換である。例えば、16×16変換は、4つの8×8変換を適用した後に、最初の変換で得られたDC成分に2×2変換を適用することによって得ることができる。この場合、4つの8×8サブツリーを再使用して16×16ツリーを分割すると、当然、以下のようになる。すなわち、最初の8×8変換の係数に2×2変換の1つの係数を加えたものが1つのサブツリーとなり、他の3つのサブツリーについても同様に構成される。
【0065】
以下に述べる方法の一部は、データのバイナリ・セットおよびデータの非バイナリ・セットに関するものであることを理解されたい。例示的な一例としてのビデオ・データに関しては、このようなデータのセットは、符号化または復号されるピクチャ内の現在のブロックに対してどの予測を行うかを決定することから得ることができる。このような場合には、ある方法を使用してデータのバイナリ・セットを符号化または復号し、別の方法を使用してデータの非バイナリ・セットを符号化または復号することができる。本発明の原理が対象とするような場合では、データのバイナリ・セットである。
【0066】
図12を参照すると、本発明の原理の一実施例による、ツリー構造を再使用してバイナリ・セットを符号化する例示的な方法が、参照番号1200で全体的に示されている。この方法1200は、制御を機能ブロック1210に渡す開始ブロック1205を含む。機能ブロック1210は、予測モード選択を実行し、制御を機能ブロック1215に渡す。機能ブロック1215は、(機能ブロック1210で選択された予測モードを使用して得られた)予測を信号通信し、制御を機能ブロック1220に渡す。機能ブロック1220は、非バイナリ・セットのエントロピ符号化を実行し、制御を機能ブロック1225に渡す。機能ブロック1225は、バイナリ・セットを符号化するために再使用するツリーおよび1つまたは複数のサブツリーを決定し、制御を機能ブロック1230に渡す。機能ブロック1230は、機能ブロック1225で決定されたツリーおよび1つまたは複数のサブツリーを用いてバイナリ・セットのエントロピ符号化を実行し、制御を終了ブロック1299に渡す。
【0067】
図13を参照すると、本発明の原理の一実施例による、ツリー構造を再使用してバイナリ・セットを復号する例示的な方法が、参照番号1300で全体的に示されている。方法1300は、制御を機能ブロック1310に渡す開始ブロック1305を含む。機能ブロック1310は、非バイナリ・セットのエントロピ復号を実行し、制御を機能ブロック1315に渡す。機能ブロック1315は、当該セットを符号化するために(以前に)再使用されたツリーおよび1つまたは複数のサブツリーを特定し、制御を機能ブロック1320に渡す。機能ブロック1320は、機能ブロック1315で特定されたツリーおよび1つまたは複数のサブツリーを使用してバイナリ・セットを復号し、制御を機能ブロック1325に渡す。機能ブロック1325は、信号の再構築を実行し、制御を終了ブロック1399に渡す。
【0068】
図12および
図13の方法1200および1300はそれぞれ、1つのツリーと(当該1つのツリーから派生した)1つまたは複数のサブツリーとを使用するが、本発明の原理の他の実施例では、2つ以上のツリーと当該2つ以上のツリーの1つまたは複数のサブツリーとを使用することができることを理解されたい。本明細書に与える本発明の原理の教示があれば、当技術分野および関連技術分野の当業者なら、本発明の原理の精神を維持しながら、本発明の原理の上記およびその他の変形を思いつくであろう。
【0069】
図14を参照すると、本発明の原理の一実施例による、ツリー構造を再使用してバイナリ・セットを符号化する別の例示的な方法が、参照番号1400で全体的に示されている。この方法1400は、制御を機能ブロック1410に渡す開始ブロック1405を含む。機能ブロック1410は、予測モード選択、信号予測、順方向N×N変換および量子化を実行し、制御を機能ブロック1415に渡す。機能ブロック1415は、変換済みの係数の重要度マップを求め、制御を機能ブロック1420に渡す。機能ブロック1420は、重要度を1次元(1D)バイナリ・セットにマッピングし、制御を機能ブロック1425に渡す。機能ブロック1425は、最初の2N個の係数に対してツリーを用いてバイナリ・セットのエントロピ符号化を実行し、残りの係数に対しては別のN+1個のリーフのサブツリーを再帰的に再使用し、制御を機能ブロック1430に渡す。機能ブロック1430は、重要な係数の大きさおよび符号を符号化し、制御を終了ブロック1499に渡す。
【0070】
図15を参照すると、本発明の原理の一実施例による、ツリー構造を再使用してバイナリ・セットを復号する別の例示的な方法が、参照番号1500で全体的に示されている。この方法1500は、制御を機能ブロック1510に渡す開始ブロック1505を含む。機能ブロック1510は、最初の2N個の係数に対してツリーを用いてバイナリ・セットのエントロピ復号を実行し、残りの係数に対しては別のN+1個のリーフのサブツリーを再帰的に再使用し、制御を機能ブロック1515に渡す。機能ブロック1515は、1次元(1D)バイナリ・セットを重要度マップにマッピングし、制御を機能ブロック1520に渡す。機能ブロック1520は、変換済みの係数の重要度マップを求め、制御を機能ブロック1530に渡す。機能ブロック1530は、重要な係数の大きさおよび符号を復号し、制御を終了ブロック1599に渡す。
【0071】
図16を参照すると、本発明の原理の一実施例による、ツリー構造を再使用してバイナリ・セットを符号化するさらに別の例示的な方法が、参照番号1600で全体的に示されている。この方法1600は、制御を機能ブロック1610に渡す開始ブロック1605を含む。機能ブロック1610は、予測モード選択、信号予測、順方向N×N変換および量子化を実行し、制御を機能ブロック1615に渡す。機能ブロック1615は、変換済みの係数の重要度マップを求め、制御を機能ブロック1620に渡す。機能ブロック1620は、重要度を1次元(1D)バイナリ・セットにマッピングし、制御を機能ブロック1625に渡す。機能ブロック1625は、N/2×N/2サイズ変換のためにツリーを4回再使用することによって形成したツリーを用いてバイナリ・セットのエントロピ符号化を実行し、制御を機能ブロック1630に渡す。機能ブロック1630は、重要な係数の大きさおよび符号を符号化し、制御を終了ブロック1699に渡す。
【0072】
図17を参照すると、本発明の原理の一実施例による、ツリー構造を再使用してバイナリ・セットを復号するさらに別の例示的な方法が、参照番号1700で全体的に示されている。この方法1700は、制御を機能ブロック1710に渡す開始ブロック1705を含む。機能ブロック1710は、N/2×N/2サイズ変換のためにツリーを4回再使用することによって形成したツリーを用いてバイナリ・セットのエントロピ復号を実行し、制御を機能ブロック1715に渡す。機能ブロック1715は、1次元(1D)バイナリ・セットを重要度マップにマッピングし、制御を機能ブロック1720に渡す。機能ブロック1720は、変換済みの係数の重要度マップを求め、制御を機能ブロック1730に渡す。機能ブロック1730は、重要な係数の大きさおよび符号を復号し、制御を終了ブロック1799に渡す。
【0073】
図18を参照すると、本発明の原理の一実施例による、ツリー構造を再使用してバイナリ・セットを符号化するさらに別の例示的な方法が、参照番号1800で全体的に示されている。この方法1800は、制御を機能ブロック1810に渡す開始ブロック1805を含む。機能ブロック1810は、ビデオ・コンテンツの係数重要度マップを解析し、制御を機能ブロック1815に渡す。機能ブロック1815は、類似性メトリックによって、再使用するツリー構造および確率を決定し、制御を機能ブロック1820に渡す。機能ブロック1820は、現在の係数の重要度マップを1次元(1D)バイナリ・セットにマッピングし、制御を機能ブロック1825に渡す。機能ブロック1825は、ツリーを用いてバイナリ・セットのエントロピ符号化を実行し、制御を機能ブロック1830に渡す。機能ブロック1830は、重要な係数の大きさおよび符号を符号化し、制御を終了ブロック1899に渡す。
【0074】
図19を参照すると、本発明の原理の一実施例による、ツリー構造を再使用してバイナリ・セットを復号するさらに別の例示的な方法が、参照番号1900で全体的に示されている。この方法1900は、制御を機能ブロック1910に渡す開始ブロック1905を含む。機能ブロック1910で、ビデオ・コンテンツの係数重要度マップを解析し、制御を機能ブロック1915に渡す。機能ブロック1915は、類似性メトリックによって、再使用するツリー構造および確率を決定し、制御を機能ブロック1920に渡す。機能ブロック1920は、ツリーを用いて現在のバイナリ・セットのエントロピ復号を実行し、制御を機能ブロック1925に渡す。機能ブロック1925は、1次元(1D)バイナリ・セットを現在の係数の重要度マップにマッピングし、制御を機能ブロック1930に渡す。機能ブロック1930では、重要な係数の大きさおよび符号を復号し、制御を終了ブロック1999に渡す。
【0075】
ここで、一部については既に上記で述べた、本発明の多数の付随的な利点/特性の一部について述べる。例えば、1つの利点/特性は、ツリー構造を使用してデータのバイナリ・セットを符号化するエンコーダを有する装置である。エンコーダは、ツリー構造の一部分を使用してバイナリ・セットの一部分を符号化し、かつ、バイナリ・セットの一部分を符号化するために使用したツリー構造の一部分の少なくとも一部を再使用することによってバイナリ・セットの別の部分を符号化する。
【0076】
別の利点/特性は、上述のエンコーダを有する装置であって、バイナリ・セットの別の部分を符号化するために再使用したツリー構造の一部分の少なくとも一部が、再帰的に再使用される装置である。
【0077】
さらに別の利点/特性は、上述のエンコーダを有する装置であって、バイナリ・セットが、変換係数の重要度を表し、既定のサイズを超える変換の変換係数の重要度が、既定のサイズより小さい変換に対応するツリー構造の部分を再使用する装置である。
【0078】
さらに別の利点/特性は、上述のエンコーダを有する装置であって、ビデオ・エンコーダに含まれる装置である。
【0079】
さらに、別の利点/特性は、上述のエンコーダを有する装置であって、ツリー構造のどの部分を再使用するかの決定が、バイナリ・セットが対応するコンテンツの性質に基づいて行われる装置である。
【0080】
さらに、別の利点/特性は、ツリー構造のどの部分を再使用するかの決定が、バイナリ・セットが対応するコンテンツの性質に基づいて行われる、上述のエンコーダを有する装置であって、決定を下すために評価されるコンテンツの性質が、係数重要度マップから得られる装置である。
【0081】
また、別の利点/特性は、ツリー構造のどの部分を再使用するかの決定が、バイナリ・セットが対応するコンテンツの性質に基づいて行われる、上述のエンコーダを有する装置であって、決定が、1つまたは複数の類似性メトリックに基づいて性質が類似しているかどうかに基づいて行われる装置である。
【0082】
本発明の原理の上記およびその他の特性および利点は、本明細書の教示に基づいて、当業者であれば容易に確認することができる。本発明の原理の教示は、ハードウェア、ソフトウェア、ファームウェア、特殊目的プロセッサ、またはそれらの組合せの様々な形態で実施することができることを理解されたい。
【0083】
本発明の原理の教示は、ハードウェアとソフトウェアの組合せとして実施されることが最も好ましい。さらに、ソフトウェアは、プログラム記憶装置に有形に実現されるアプリケーション・プログラムとして実施することができる。アプリケーション・プログラムは、任意の適当なアーキテクチャを備える機械にアップロードして実行することができる。この機械は、1つまたは複数の中央処理装置(「CPU」)、ランダム・アクセス・メモリ(「RAM」)および入力/出力(「I/O」)インタフェースなどのハードウェアを有するコンピュータ・プラットフォームで実施されることが好ましい。コンピュータ・プラットフォームは、オペレーティング・システムおよびマイクロ命令コードを含むこともできる。本明細書に記載する様々なプロセスおよび機能は、CPUによって実行することができる、マイクロ命令コードの一部またはアプリケーション・プログラムの一部あるいはそれらの任意の組合せの何れかにすることができる。さらに、追加のデータ記憶装置や印刷装置など、その他の様々な周辺装置をコンピュータ・プラットフォームに接続することができる。
【0084】
さらに、添付の図面に示すシステム構成要素および方法の一部はソフトウェアで実施することが好ましいので、システム構成要素間またはプロセス機能ブロック間の実際の接続は、本発明の原理をプログラミングする方法によって異なっていてもよいことも理解されたい。本明細書の教示があれば、当業者なら、本発明の原理の上記の実施態様または構成およびそれと同様の実施態様または構成を思いつくことができるであろう。
【0085】
本明細書では、添付の図面を参照して例示的な実施例について述べたが、本発明の原理は、これらの具体的な実施例に限定されるわけではなく、当業者なら、本発明の原理の範囲または精神を逸脱することなく様々な変更および修正をそれらの実施例に加えることができることを理解されたい。そうした変更および修正は全て、添付の特許請求の範囲に記載する本発明の原理の範囲に含まれるものとする。
【0086】
以上の実施例に関し、更に、以下の項目を開示する。
【0087】
(付記1)ツリー構造を使用してデータのバイナリ・セットを符号化するエンコーダ(145)を有する装置であって、
前記エンコーダは、前記ツリー構造の一部分を使用して前記バイナリ・セットの一部分を符号化し、かつ、前記バイナリ・セットの前記一部分を符号化するために使用した前記ツリー構造の前記一部分の少なくとも一部を再使用することによって前記バイナリ・セットの別の部分を符号化する、前記装置。
【0088】
(付記2)ツリー構造を使用してデータのバイナリ・セットを符号化するステップを含む方法であって、
前記符号化ステップは、前記ツリー構造の一部分を使用して前記バイナリ・セットの一部分を符号化し、かつ、前記バイナリ・セットの前記一部分を符号化するために使用した前記ツリー構造の前記一部分の少なくとも一部を再使用することによって前記バイナリ・セットの別の部分を符号化する(1225,1230)、前記方法。
【0089】
(付記3)前記バイナリ・セットの前記別の部分を符号化するために再使用した前記ツリー構造の前記一部分の前記少なくとも一部が、再帰的に再使用される(1425)、付記2に記載の方法。
【0090】
(付記4)前記バイナリ・セットが、変換係数の重要度を表し、既定のサイズを超える変換の変換係数の重要度が、前記既定のサイズより小さい変換に対応するツリー構造の部分を再使用する(1620,1625)、付記2に記載の方法。
【0091】
(付記5)装置がビデオ・エンコーダに含まれる(1225,1230,1400,1425)、付記2に記載の方法。
【0092】
(付記6)ツリー構造のどの部分を再使用するかの決定が、前記バイナリ・セットが対応するコンテンツの性質に基づいて行われる(1810,1815,1825)、付記2に記載の方法。
【0093】
(付記7)前記決定を下すために評価される前記コンテンツの前記性質が、係数重要度マップから得られる(1810,1815,1825)、付記6に記載の方法。
【0094】
(付記8)前記決定が、1つまたは複数の類似性メトリックに基づいて前記性質が類似しているかどうかに基づいて行われる(1810,1815,1825)、付記6に記載の方法。
【0095】
(付記9)ツリー構造を使用してデータのバイナリ・セットを復号するデコーダ(245)を有する装置であって、
前記デコーダは、前記ツリー構造の一部分を使用して前記バイナリ・セットの一部分を復号し、かつ、前記バイナリ・セットの前記一部分を復号するために使用した前記ツリー構造の前記一部分の少なくとも一部を再使用することによって前記バイナリ・セットの別の部分を復号する、前記装置。
【0096】
(付記10)ツリー構造を使用してデータのバイナリ・セットを復号するステップを含む方法であって、
前記復号ステップは、前記ツリー構造の一部分を使用して前記バイナリ・セットの一部分を復号し、かつ、前記バイナリ・セットの前記一部分を復号するために使用した前記ツリー構造の前記一部分の少なくとも一部を再使用することによって前記バイナリ・セットの別の部分を復号する(1315,1320)、前記方法。
【0097】
(付記11)前記バイナリ・セットの前記別の部分を復号するために再使用した前記ツリー構造の前記一部分の前記少なくとも一部が、再帰的に再使用される(1510)、付記10に記載の方法。
【0098】
(付記12)前記バイナリ・セットが、変換係数の重要度を表し、既定のサイズを超える変換の変換係数の重要度が、前記既定のサイズより小さい変換に対応するツリー構造の部分を再使用する(1710,1715,1720)、付記10に記載の方法。
【0099】
(付記13)装置がビデオ・デコーダに含まれる(1315,1320,1500,1510)、付記10に記載の方法。
【0100】
(付記14)ツリー構造のどの部分を再使用するかの決定が、前記バイナリ・セットが対応するコンテンツの性質に基づいて行われる(1910,1915,1920,1930)、付記10に記載の方法。
【0101】
(付記15)前記決定を下すために評価される前記コンテンツの前記性質が、係数重要度マップから得られる(1910,1915,1920,1930)、付記14に記載の方法。
【0102】
(付記16)前記決定が、1つまたは複数の類似性メトリックに基づいて前記性質が類似しているかどうかに基づいて行われる(1910,1915,1920,1930)、付記14に記載の方法。
【0103】
(付記17)ツリー構造を使用して符号化されたデータのバイナリ・セットを含む、符号化されたビデオ信号データを有する、非一時的なコンピュータ可読記憶媒体であって、
前記バイナリ・セットの一部分が、前記ツリー構造の一部分を使用して符号化されており、かつ、前記バイナリ・セットの別の部分が、前記バイナリ・セットの前記一部分を符号化するために使用した前記ツリー構造の前記一部分の少なくとも一部を再使用することによって符号化されている、前記非一時的なコンピュータ可読記憶媒体。