(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
本発明の原理は、適応ツリー選択を使用してバイナリ・セットをビデオ符号化およびビデオ復号する方法および装置に関する。
【0019】
本説明は、本発明の原理を例示するものである。従って、本明細書において明示的に記載、または図示されていなくとも、当業者が本発明の原理を実施する様々な構成を企図することが可能であり、このような構成が本発明の趣旨および範囲の中に包含されることが理解できるであろう。
【0020】
本明細書に記載された全ての例および条件付の文言は、本発明の原理を読者が理解するのを助けるための教示目的のものであり、発明者によって寄与された概念は、技術を発展させるものであり、このような具体的に記載された例や条件に限定されるように解釈されるべきではない。
【0021】
また、本明細書における本発明の原理、態様、および、実施形態についての全ての記載、さらに、その特定の例は、構造的な均等物、機能的な均等物の双方を包含するように意図したものである。さらに、このような均等物は、現在公知の均等物だけでなく、将来において開発される均等物、即ち、構造に係らず、同一の機能を実行するように開発された全ての要素を包含するように意図されている。
【0022】
従って、例えば当業者であれば、本明細書において示されたブロック図は、本発明の原理を実施する回路を例示する概念図であることが理解できよう。同様に、フローチャート、フロー図、状態遷移図、擬似コードなどは、いずれも様々な処理を表すことが理解できよう。これらの処理は、実質的にコンピュータによって読み取り可能なメディアにおいて表すことができ、コンピュータまたはプロセッサが明示的に図示されているかどうかにかかわらず、このようなコンピュータまたはプロセッサにより実行される。
【0023】
各図面において示される様々な要素の機能は、専用のハードウエアの使用により提供されてもよく、適切なソフトウエアと関連付けてソフトウエアを実行することが可能なハードウエアの使用によって提供されてもよい。機能がプロセッサによって提供される場合にも、単一の専用プロセッサによって提供されてもよく、単一の共有プロセッサによって提供されてもよく、複数の別個のプロセッサによって提供されてもよく、プロセッサの中に共有されているものがあってもよい。さらに、用語「プロセッサ」または「コントローラ」を明示的に使用した場合であっても、ソフトウエアを実行することが可能なハードウエアのみを意味するように解釈されるべきではなく、限定するものではないが、ディジタル信号プロセッサ(DSP)・ハードウエア、ソフトウエアを格納する読み出し専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、および不揮発性の記憶装置を黙示的に含むことがある。
【0024】
また、従来のおよび/または慣習的な他のハードウエアを含むこともある。同様に、図面に示されたどのスイッチも概念的なものに過ぎない。これらの機能はプログラム・ロジックの動作を介して、専用のロジックを介して、プログラム制御と専用のロジックとのインタラクションを介して、または、手動でも実行されることがある。状況に応じて具体的に理解されるように、実施者により、特定の技術を選択可能である。
【0025】
請求の範囲において、特定の機能を実施するための手段として表現されたいずれの要素も、この機能をどのような方法で実行するものも包含するように意図されている。例えばa)機能を実行する回路要素を組み合わせたもの、または、b)形態に関わらず、ソフトウエア、つまり、ファームウエア、マイクロコード等を含み、機能を実施するためにソフトウエアの実行に適した回路と組み合わせたものも包含する。このような請求の範囲によって定義される本発明の原理は、請求項に記載された様々な手段によって提供される機能が請求の範囲の要件として、組み合わせられ、まとめられている事実に基づいたものである。従って、このような機能を提供することが可能な手段はどのようなものであっても、本願において示されているものと均等であるとみなされる。
【0026】
明細書において、本発明の原理の「一実施形態」、「実施形態」、または、この類の表現が言及されている場合、これは、実施形態に関して記載される特定の特徴事項、構造、特性などが本発明の原理の少なくとも1つの実施形態に含まれることを意味する。従って、明細書全体に渡って様々な箇所に存在する文言「一実施形態においては」、「実施形態においては」、または、この類の表現は、必ずしも、全てが同一の実施形態について言及するものではない。
【0027】
「/(スラッシュ)」、「および/または」、さらに、「〜のうちの少なくとも一方(〜のうちの少なくとも1つ)」の使用は、例えば「A/B」、「Aおよび/またはB」、「AおよびBのうちの少なくとも一方」の場合、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)の選択を包含するものと意図されている。列挙された数の項目の分だけ、このことが拡張されることは、当該技術分野、さらに、関連する技術分野における通常の技術知識を有するものであれば容易に理解できるであろう。
【0028】
また、本明細書において使用される単語「ピクチャ」および「イメージ」は代替的に使用され、静止画像または、ビデオ・シーケンスからのピクチャを意味する。公知であるように、ピクチャは、フレームやフィールドであり得る。
【0029】
また、本明細書において使用される単語「信号伝達(signal)」は、何かを対応する復号器に示すことを指している。例えば、符号化器は、ピクチャ内の1つ以上のブロックの係数有意性を示すデータのバイナリ・セットなどのデータを復号する際に使用する1つ以上のツリーまたはサブツリーを信号によって伝達することもあれば、さらに/または、1つ以上のツリーおよび/またはサブツリーの1つ以上のノードに対する変更を決定する際に使用する1つ以上のパラメータを信号によって伝達することもある。このようにして、同一のツリー、サブツリー、および/または変更を符号化器側と復号器側の双方において使用することができる。従って、例えば符号器は、ツリーおよび/またはサブツリーのセットを復号器に送信し、復号器が同一のツリーおよび/またはサブツリーを用いることができるようにしてもよく、復号器が既に他のものと共にツリーおよび/またはサブツリーを有する場合には、(データを送信することなく)信号伝達により、単純に、復号器に対し、ツリーおよび/またはサブツリーを知らせ、これを選択させるようにしてもよい。実際のツリーおよび/またはサブツリー、さらに/または、(ノードの変更に使用される)パラメータの送信を回避することによって、ビット節約を実現できる。信号伝達は、様々な方法で行えることが理解できよう。例えば1つ以上のシンタックス要素、フラグなどを用いて、対応する復号器に情報を信号伝達することができる。
【0030】
図1を参照すると、本発明の原理が適用されるビデオ符号化器が参照符号100によって全体的に示されている。
【0031】
ビデオ符号化器100は、結合器185の非反転入力部と信号通信する出力部を有するフレーム順序付けバッファ110を含む。結合器185の出力部は、変換器/量子化器125の第1の入力部と信号通信するように結合されている。変換器/量子化器125の出力部は、適応ツリー選択およびツリー・ノード変換を用いたエントロピー符号化器145の第1の入力部、および、逆変換器/逆量子化器150の第1の入力部と信号通信するように結合されている。適応ツリー選択およびツリー・ノード変換を用いたエントロピー符号化器145の出力部は、結合器190の第1の非反転入力部と信号通信するように結合されている。結合器190の出力部は、出力バッファ135の第1の入力部と信号通信するように結合されている。
【0032】
符号化器コントローラ105の第1の出力部は、フレーム順序付けバッファ110の第2の入力部、逆変換器/逆量子化器150の第2の入力部、ピクチャ・タイプ決定モジュール115の入力部、マクロブロック・タイプ(MBタイプ)決定モジュール120の第1の入力部、イントラ予測モジュール160の第2の入力部と、デブロッキング・フィルタ165の第2の入力部、動き補償器170の第1の入力部と、動き推定器175の第1の入力部、および、参照ピクチャ・バッファ180の第2の入力部と信号通信するように結合されている。
【0033】
符号化器コントローラ105の第2の出力部は、補助拡張情報(SEI)挿入器130の第1の入力部、変換器/量子化器125の第2の入力部、適応ツリー選択およびツリー・ノード変換を用いたエントロピー符号化器145の第2の入力部、出力バッファ135の第2の入力部、および、シーケンス・パラメータ・セット(Sequence Parameter Set(SPS))/ピクチャ・パラメータ・セット(Picture Parameter Set(PPS))挿入器140の入力部と信号通信するように結合されている。
【0034】
SEI挿入器130の出力部は、結合器190の第2の非反転入力部と信号通信するように結合されている。
【0035】
ピクチャ・タイプ決定モジュール115の第1の出力部は、フレーム順序付けバッファ110の第3の入力部と信号通信するように結合されている。ピクチャ・タイプ決定モジュール115の第2の出力部は、マクロブロック・タイプ決定モジュール120の第2の入力部と信号通信するように結合されている。
【0036】
シーケンス・パラメータ・セット(SPS)/ピクチャ・パラメータ・セット(PPS)挿入器140の出力部は、結合器190の第3の非反転入力部と信号通信するように結合されている。
【0037】
逆変換器/逆量子化器150の出力部は、結合器119の第1の非反転入力部と信号通信するように結合されている。結合器119の出力部は、イントラ予測モジュール160の第1の入力部、および、デブロッキング・フィルタ165の第1の入力部と信号通信するように結合されている。デブロッキング・フィルタ165の出力部は、参照ピクチャ・バッファ180の第1の入力部と信号通信するように結合されている。参照ピクチャ・バッファ180の出力部は、動き推定器175の第2の入力部、および、動き補償器170の第3の入力部と信号通信するように結合されている。動き推定器175の第1の出力部は、動き補償器170の第2の入力部と信号通信するように結合されている。動き推定器175の第2の出力部は、適応ツリー選択およびツリー・ノード変換を用いたエントロピー符号化器145の第3の入力部と信号通信するように結合されている。
【0038】
動き補償器170の出力部は、スイッチ197の第1の入力部と信号通信するように結合されている。イントラ予測モジュール160の出力部は、スイッチ197の第2の入力部と信号通信するように結合されている。マクロブロック・タイプ決定モジュール120の出力部は、スイッチ197の第3の入力部と信号通信するように結合されている。スイッチ197の第3の入力部は、スイッチの(制御入力、即ち、第3の入力と比較される)「データ」入力が、動き補償器170またはイントラ予測モジュール160によって供給されるかどうかを判定する。スイッチ197の出力部は、結合器119の第2の非反転入力部および結合器185の反転入力部と信号通信するように結合されている。
【0039】
フレーム順序付けバッファ110の第1の入力部および符号化器コントローラ105の入力部は、符号化器100の入力部として、入力ピクチャを受信するために利用可能である。さらに、補助拡張情報(SEI)挿入器130の第2の入力部は、符号化器100の入力部として、メタデータを受信するために利用可能である。出力バッファ135の出力部は、符号化器100の出力部として、ビットストリームを出力するために利用可能である。
【0040】
図2を参照すると、本発明の原理が適用される例示的なビデオ復号器が参照符号200によって全体的に示されている。
【0041】
ビデオ復号器200は、適応ツリー選択およびツリー・ノード変換を用いたエントロピー復号器245の第1の入力部と信号通信するように結合された出力部を有する入力バッファ210を含んでいる。適応ツリー選択およびツリー・ノード変換を用いたエントロピー復号器245の第1の出力部は、逆変換器/逆量子化器250の第1の入力部と信号通信するように結合されている。逆変換器/逆量子化器250の出力部は、結合器225の第2の非反転入力部と信号通信するように結合されている。結合器225の出力部は、デブロッキング・フィルタ265の第2の入力部、および、イントラ予測モジュール260の第1の入力部と信号通信するように結合されている。デブロッキング・フィルタ265の第2の出力部は、参照ピクチャ・バッファ280の第1の入力部と信号通信するように結合されている。参照ピクチャ・バッファ280の出力部は、動き補償器270の第2の入力部と信号通信するように結合されている。
【0042】
適応ツリー選択およびツリー・ノード変換を用いたエントロピー復号器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の入力部と信号通信するように結合されている。
【0043】
動き補償器270の出力部は、スイッチ297の第1の入力部と信号通信するように結合されている。イントラ予測モジュール260の出力部は、スイッチ297の第2の入力部と信号通信するように結合されている。スイッチ297の出力部は、結合器225の第1の非反転入力部と信号通信するように結合されている。
【0044】
入力バッファ210の入力部は、復号器200の入力部として、入力ビットストリームを受信するために利用可能である。デブロッキング・フィルタ265の第1の出力部は、復号器200の出力部として、出力ピクチャを出力するために利用可能である。
【0045】
上述したように、本発明の原理は、適応ツリー選択を使用して符号化および復号を行う方法および装置に関する。このような適応ツリー選択は、例えば、ピクチャ内の1つ以上のブロックのための係数有意性を示すデータのバイナリ・セットを符号化または復号するために使用することができる。
【0046】
MPEG−4 AVC規格においては、非零(零ではない)係数の各位置が有意性マップによって符号化される。MPEG−4 AVCにおける有意性マップは、以下のように機能する。coded_block_flag(符号化されたブロック・フラグ)が、ブロックが有意係数を有することを示す場合には、2値の(バイナリ値の)有意性マップが符号化される。スキャン順における各係数について、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によって既に終了していない場合には、最後の係数が有意でなければならないことは明らかである。
【0047】
有意性を示す別の方法は、「零ツリー(zero−trees)」に関する。画像圧縮のためのウェーブレット変換において、例を見出すことができる。有意性マップを伝達するためにツリー構造が使用される。
図3を参照すると、本発明の原理が適用される例示的なツリー構造が参照符号300によって全体的に示されている。小さな正方形の各々は、変換係数を意味する。ツリーのルートは、星を含む正方形によって表されている。子ノードは、近傍の係数である。さらに、矢印によって子ノードの関係が示されている。図示しているように、各親は、子として、4つの他の係数を有する。ツリー構造300は、これらの関係、さらに、ツリー構造がどのようなものであるかを示す例にすぎず、全体のツリーまたはツリー内の親子関係を示すものではない。この場合、ツリーの各ノードは、係数に関連し、ツリーは、2次元(2−D)におけるウェーブレット変換係数間の空間関係を考慮して構成されている。そして、各ノードについて、0または1が送信される。0の値/シンボルは、ツリー内の特定のノードにおける係数、さらに、ツリー内のこの係数より下の全ての係数が零であることを意味する。このようにして、多数の零係数が1つのシンボルのみを用いて符号化される。多数の零が存在する場合には、これによって良好な圧縮率を得ることができる。本開示内容および出願明細書においては、用語「ツリー」は、用語「ツリー構造」と同じ意味で使用され、用語「サブツリー」は、用語「サブツリー構造」と同じ意味で使用されることが理解できるであろう。
【0048】
多くのアルゴリズムは、いわゆる零ツリーのコンセプトに従っていた。その一変形例が、いわゆるバイナリ・ツリー符号化であり、これは、単純であるが、効率的なツリーのタイプである。この場合、ツリーの各リーフは変換係数に関連することがあるが、ツリーの内部ノードは、いずれの係数にも関連しない。そこで、符号化は、従前のケースよりも類似するものである、即ち、ノードの下の全ての係数が零(0)である場合には、0は、その状況を示すことができるため、そのノードよりも下に進み、各係数の有意性/零の値を明示的に示す必要はない。
図4を参照すると、本発明の原理が適用される例示的なバイナリ・ツリーが参照符号400によって全体的に示されている。バイナリ・ツリー400は、ノード1〜13を含む。ノード1は、ルート・ノードである。ノード2,3,6,9および11は、内部ノードである。ノード4,5,7,8,10,12および13は、リーフ・ノードである。
【0049】
有意である確率は、これらの方法が適切に考慮しない多くの要因に依存する。各係数の有意性の間には、空間相関が存在する。また、低周波数側の係数の統計プロパティは、高周波数側の係数の統計プロパティとは異なる。さらに、各残差ブロックの有意性マップ間の違いは、非常に大きいことがある。従って、1つのデータ構造および符号化処理を使用するのでは、このような多様性の全てを捉えるのには十分ではない。
【0050】
従って、従来技術の少なくとも上述した欠陥を考慮して、本発明の原理の少なくとも一実施形態において、有意性マップの多様性により良好に適応するための幾つかのツリーおよびサブツリーの使用を提案する。同時に利用可能な幾つかのツリーおよびサブツリーを有すること、さらに、これらのツリーからの選択によって所与のバイナリ・セットを符号化することにより、符号化効率を向上させることができる。例えば、一実施形態においては、サブツリーの各々を符号化するための最終的なビット・レートは、選択の基礎となる適切な尺度である。一実施形態においては、各有意性マップについて、これを符号化するための最良のツリーまたはサブツリーの組み合わせを選択することを提案する。また、一実施形態においては、リーフの各値間の統計プロパティおよび相関を利用する、変換、グループ化、サインのフリッピング(反転)、および他の処理の使用を提案する。一実施形態においては、ツリー、サブツリー、または、ツリーやサブツリーの部分におけるこれらの処理の使用を提案する。また、一実施形態においては、バイナリ・セットの潜在的な相互依存性をさらに利用するために、バイナリ演算子を通じて各リーフを前処理することを提案する。
【0051】
また、サブツリーのセットを用いること、さらに、これらのうちから適応的な選択を行って、零/非零係数の位置を符号化する際の効率性を向上させることを提案する。さらに、ツリーの各ノード/リーフに対し、これらの間の相互依存性をより良好に利用するために、処理/変換を実行し、これらの当初の意味を変更することを提案する。
【0052】
(変換された係数の有意性マップのような)バイナリ・セットを符号化するための零ツリー構造においては、各リーフには、このセットの中の要素のバイナリ値が与えられる。従って、各リーフの値とバイナリ・セットの各要素との間には一対一の関係がある。残差係数の有意性マップは、バイナリ・セットを形成する。
【0053】
各内部ノードの値は、この内部ノードより下の各ノードの値を求めることによって導くことができる。このようにして、各内部ノードの有意性/バイナリ値は、ルート・ノードへの各リーフ(ノード)から導出される。そして、ツリーは、ルート・ノードから開始する各ノードの値を信号により伝達することによって符号化される。ノードに「0」がマークされているときは、このノードの下の全てのノードは「0」であり、各ノードの値を具体的に信号により伝達する必要がないことを意味するため、圧縮が実現される。
【0054】
有意である確率は、従来技術の方法が適切に考慮していない多数の要因に依存する。各係数の有意性の間には、空間相関が存在する。また、低周波数側の係数の統計プロパティは、高周波数側の係数の統計プロパティとは異なる。さらに、各残差ブロックの有意性マップ間の違いは、非常に大きいことがある。従って、1つのデータ構造および符号化処理を使用するのでは、このような多様性の全てを捉えるのには十分ではない。
【0055】
一実施形態においては、幾つかのツリーおよびサブツリーの中からの選択を行うことによって、有意性マップのような、所与のバイナリ・セットを符号化することを提案する。さらに、変換、フリッピング・ビット、または、他の演算子を介して、幾つかのリーフにおけるツリー・リーフの値の意味を潜在的に変更することを提案する。この変更は、ツリー内の元々の値よりもよりコンパクトに「0」と「1」とで表現することにより、ツリーの符号化処理をより効率化することを目的とする。
【0056】
以下、幾つかの実施の形態について記載する。もちろん、本発明の原理の趣旨および範囲を逸脱することなく、本明細書において提供される本発明の原理の開示内容を考慮して、本発明の原理のこれらの変更およびその他の変更を、本技術および関連する技術の当業者によって企図することができる。
【0057】
一実施形態においては、各ツリーを用いてセットを符号化するコストが計算され、最小のコストを有するツリーが有意性マップを符号化するために使用される。コスト関数は、最終的なビット・レート、エントロピー、および/または、1つ以上の他のパラメータとすることができる。選択されたツリーは、例えば、フラグを用いて信号により伝達される。
【0058】
一実施形態においては、幾つかのツリーを自由に使用することができ、選択されたツリーは、予測モードに依存するか、ブロックに使用される特定の変換に依存するか、さらに/または、他の復号されたデータに依存し、使用する正しい(即ち、選択された)ツリーを符号化器が明示的に信号により伝達する必要はない。
【0059】
一実施形態においては、有意性マップは、幾つかの部分に分割される。各部分について、特定の部分を符号化するのにサブツリーのセットが使用される。各サブツリーのコストが計算され、最低のコストを有するものが有意性マップの該当部分の符号化のために選択される。各部分において、フラグは、選択されたサブツリーを示すことができる。さらに、サブツリーが符号化された際、マップの残りが符号化中である(即ち、有意な係数が残っている)か、または、符号化中でない(即ち、残りの係数が全て零である)か、が示されなければならない。この目的のため、一実施形態においては、フラグは、マップの残りの有意性を示すことができる。他の実施形態においては、これは、サブツリーの中の追加ノードを用いて示される。マップの残りが零である場合には、このノードは「0」であり、マップの残りが少なくとも1つの有意な係数を有する場合には、このノードは「1」である。このノード/リーフは、ツリーの残りと共に符号化され、明示的な信号伝達は不要である。この実施形態においては、サブツリーは、そのために、(即ち、その目的のために)、追加ノードを有することがある。例外として、マップの最後の部分を符号化するために充てられるサブツリーは、この追加ノードを必要としない。さらに、ツリーの中間部分を符号化するための幾つかのサブツリーはこのノードを有していないことがあり、このようなサブツリーが選択されていることは、マップの残りが零であることを黙示的に意味する。
【0060】
一実施形態においては、ツリーおよびサブツリーのセットを使用して、有意性マップを符号化することができる。各サブツリーは、相異なるサイズを有することができる。サブツリーの異なる組み合わせのコストおよびツリー全体のコストが計算され、バイナリ・セットを符号化するために、最小のコストを有する組み合わせ、または、ツリーが選択される。
【0061】
少なくとも一実施形態においては、適応ツリー選択を使用して符号化/復号を行う本願のアプローチに対する第2の部分は、ツリー内のノードまたは、ノードのサブセットを、これらの間の相関および依存関係をさらに利用するために、どのように組み合わせる/変更する/変換するかに関する。零であるバイナリ・セットの部分が(零でない部分よりも)大きい場合には、ツリーの符号化はより効率的であるため、零の量が大きくなる処理はどのようなものでも、符号化処理に役立つ。例えば、有意性マップの場合には、係数の近傍子が零である場合の方が、係数の近傍子が零でない場合よりも、係数が有意である可能性がより少ない。ツリーの特定の構造は、部分的にその事実を考慮するものであるが、全ての依存関係を完全に捉え、利用できるものではない。リーフに関して提案する一連の組み合わせおよび処理は、この問題を解決することを目的とする。
【0062】
有意性マップの場合においては、ツリーの各ノードは、2次元(2−D)での近傍の係数にリンクされる。これは、二次元の有意性マップが一次元(1−D)でスキャンされ、次に、ツリー・ノードにマッピングされるからである。二次元ブロックの残差は、近傍の係数の間の依存関係を示しているため、対応するツリーもまた、近傍のノード/リーフ間の依存関係を示している。この理由により、ノードのバイナリ処理は、効率性の向上に役立つ。
【0063】
一実施形態においては、バイナリ処理は、ツリーの各リーフにおけるデータを、データの1次元配列として考慮し、配列にバイナリ演算子/変換を適用することができる。
【0064】
特定の実施形態においては、バイナリ・ウェーブレット変換、バイナリ離散フーリエ変換、および/または、他のバイナリ変換をデータに適用することができる。この場合には、配列の空間相関が低減され、ツリーのより効率的な符号化が実現される。
【0065】
他の特定の実施形態においては、近傍の相関を以下のように減少させることができる。この場合には、連続した1および0(零)の文字列が一次元でスキャンされた有意性マップにおいて発生する。ツリーの第2のリーフから開始して、前のリーフから、リーフの値を反復的に減算することによって相関が減少される。この点の特定の実施形態は、論理XOR演算を連続するリーフに適用することに関する。この場合、以下のバイナリ・セット1111000001111が、セット10001000001000に変換される。この演算は、ツリー・リーフの一次元空間相関を利用する非零の数を減少させることが理解できるであろう。
【0066】
他の特定の実施形態においては、ツリー・リーフ・ノードの意味をフリッピング(反転)させ、零ツリーの符号化が有意性ツリーの符号化となる。これは、バイナリ・ツリーが0(零)よりも1を多く含んでいる場合に役立つ。
【0067】
他の実施の形態においては、ツリーが2つの意味を有することができる。即ち、一部のノードを或る方法で処理し、他のノードを別の方法で処理することができる。これは、本出願人がデュアル・ツリーと呼ぶものに関する特定の実施形態につながるものである。ツリーの第1の係数は、通常は非零であり(零ではなく)、残りの係数は、通常は零であることが知られている。そこで、デュアル・ツリーは、第1の係数の各リーフの値をフリッピング(反転)する一方で、残りのリーフの通常の有意性の意味を維持するであろう。これは、ツリーの両方の部分で、非零と零とを効果的に符号化するデュアル・ツリーである。
【0068】
この提案に基づいて、さらに、ツリー・リーフ内には、(ビット値のフリッピングからビット値の非フリッピングに)意味が変化するポイントが存在する。このポイントは、適応的に変更し、ビットストリーム内において明示的に示すこともできれば、以前に再構築されたデータから導出することもできる。本出願人は、本実施形態を「適応型フリッピング・デュアル・バイナリ・ツリー(adaptive−flipping dual binary tree)」と呼ぶ。
【0069】
ツリーまたは、ツリーの1つ以上の部分を前処理するための幾つかの方法において「デュアル」ツリーを拡張可能であることは明らかである。また、必要に応じて、幾つかの「意味変更ポイント」を適応させ、変更させることができる(即ち、ビットをフリッピングするだけでなく、潜在的にノードのどのような変換/変更も可能である)。
【0070】
我々の提案の両方の部分は、本技術分野および関連する技術分野における当業者であれば容易に理解できるように、本明細書において提供された発明の原理の開示内容に鑑み、多くの方法で組み合わせることができる。例えば、幾らかのサブツリーを処理し、他のサブツリーを処理しないようにすることができる。
【0071】
シンタックス
表1は、本発明の原理の実施形態による、バイナリ・セットを符号化するための適応ツリー選択のシーケンス・パラメータ・セットの例示的なシンタックスを示している。表2は、本発明の原理の実施形態による、ブロックのための有意性マップを符号化するために使用される特定のツリーを示すブロック・パラメータの例示的なシンタックスを示している。
【表1】
【表2】
【0072】
表1および表2に示されたシンタックス要素のうちの少なくとも幾つかのセマンティックスは、以下の通りである。
【0073】
adaptive_tree_selection_flag: adaptive_tree_selection_flagが0であることは、(バイナリ・セットとして符号化された)変換された残差係数の符号化に適応ツリー選択が行われないことを意味し、adaptive_tree_selection_flagが1であることは、変換された残差係数の符号化に適応ツリー選択が行われることを意味する。
【0074】
binary_tree_index: binary_tree_indexは、現在の残差ブロックを符号化するために選択されているツリーを規定する。
【0075】
図5を参照すると、適応ツリー選択を用いて符号化を行う例示的な方法が参照符号500によって全体的に示されている。方法500は、制御を機能ブロック510に受け渡す開始ブロック505を含む。機能ブロック510は、予測モード選択を実行し、制御を機能ブロック515に受け渡す。機能ブロック515は、(予測モードから取得された)予測を信号により伝達し、制御をループ端ブロック520に受け渡す。ループ端ブロック520は、バイナリ・セットについてエントロピー符号化のループを実行し、制御を機能ブロック525に受け渡す。機能ブロック525は、最良のツリーを選択(例えば、1つ以上の基準に基づいて最良のツリーを選択)し、制御を機能ブロック530に受け渡す。機能ブロック530は、選択されたツリーのインデックスを符号化し、制御を機能ブロック535に受け渡す。機能ブロック535は、選択されたツリーを使用してバイナリ・セットを符号化し、制御をループ端ブロック540に受け渡す。ループ端ブロック540は、ループを終了し、制御を終了ブロック599に受け渡す。
【0076】
図6を参照すると、適応ツリー選択を用いて復号を行う例示的な方法が参照符号600によって全体的に示されている。方法600は、制御をループ端ブロック610に受け渡す開始ブロック605を含む。ループ端ブロック610は、バイナリ・セットをエントロピー復号するループを実行し、制御を機能ブロック615に受け渡す。機能ブロック615は、ツリー・インデックス・シンタックスをパース(parse)し、符号化器によって使用されたツリーを取得し、制御を機能ブロック620に受け渡す。機能ブロック620は、復号されたツリーを使用してバイナリ・セットを復号し、制御をループ端ブロック625に受け渡す。ループ端ブロック625は、ループを終了し、制御を終了ブロック699に受け渡す。
【0077】
図7を参照すると、ツリー・ノード変換を用いて符号化を行う例示的な方法が参照符号700によって全体的に示されている。方法700は、制御を機能ブロック710に受け渡す開始ブロック705を含む。機能ブロック710は、バイナリ・セットおよび予測モードを判定し、制御を機能ブロック720に受け渡す。機能ブロック720は、(機能ブロック710によって判定された)バイナリ・セットおよび予測モードに基づいて通常のツリー構築を実行し、制御を機能ブロック730に受け渡す。機能ブロック730は、ツリー・ノード変換を実行し、制御を機能ブロック740に受け渡す。機能ブロック740は、ツリーのエントロピー符号化を実行し、制御を機能ブロック799に受け渡す。
【0078】
図8を参照すると、ツリー・ノード変換を使用して復号を行う例示的な方法が参照符号800によって全体的に示されている。方法800は、制御を開始ブロック810に受け渡す開始ブロック805を含む。機能ブロック810は、予測モードおよびバイナリ・セットによって使用する(特定の)ツリーを決定し、制御を機能ブロック820に受け渡す。機能ブロック820は、ツリーをエントロピー復号し、制御を機能ブロック830に受け渡す。機能ブロック830は、ツリー・ノードの逆変換を実行し、制御を機能ブロック840に受け渡す。機能ブロック840は、(逆変換の結果に基づいて)バイナリ・セットを出力し、制御を終了ブロック899に受け渡す。
【0079】
図9を参照すると、ツリー・ノード変換を用いて符号化を行う他の方法が参照符号900によって全体的に示されている。方法900は、制御を機能ブロック910に受け渡す開始ブロック905を含む。機能ブロック910は、バイナリ・セットを(おそらくは異なるサイズの)幾つかのサブセットに分割し、制御をループ端ブロック915に受け渡す。ループ端ブロック915は、全てのバイナリ・サブセットについてループを開始し、制御をループ端ブロック920に受け渡す。ループ端ブロック920は、複数のツリーについてループを開始し、制御を機能ブロック925に受け渡す。機能ブロック925は、現在のサブセットに次のバイナリ・サブセットの有意性を加算し、制御を機能ブロック930に受け渡す。機能ブロック930は、ツリーをエントロピー符号化し、制御をループ端ブロック935に受け渡す。ループ端ブロック935は、複数のツリーについてのループを終了し、制御を機能ブロック940に受け渡す。機能ブロック940は、最良のパフォーマンスを有するツリーを選択し、制御を機能ブロック945に受け渡す。機能ブロック945は、選択したツリーをエントロピー符号化し、制御を決定ブロック950に受け渡す。決定ブロック950は、選択されたツリーがターミナル・サブツリーであるかどうかを判定する。選択されたツリーがターミナル・サブツリーである場合には、制御が終了ブロック999に受け渡される。そうでない場合には、制御がループ端ブロック955に受け渡される。ループ端ブロック955は、バイナリ・セットについてのループを終了し、制御を終了ブロック999に受け渡す。
【0080】
図10を参照すると、ツリー・ノード変換を用いて復号を行う他の例示的な方法が参照符号1000によって全体的に示されている。方法1000は、制御を機能ブロック1010に受け渡す開始ブロック1005を含む。機能ブロック1010は、バイナリ・セットを(おそらくは異なるサイズの)幾つかのサブセットに分割し、制御をループ端ブロック1020に受け渡す。ループ端ブロック1020は、全てのバイナリ・サブセットについてループを開始し、制御を機能ブロック1030に受け渡す。機能ブロック1030は、選択されたツリーを復号し、ツリーをエントロピー復号し、制御を機能ブロック1040に受け渡す。機能ブロック1040は、現在のツリーが追加のリーフを有する場合には、次のバイナリ・サブセットの有意性を判定し、制御を決定ブロック1050に受け渡す。決定ブロック1050は、選択されたツリーがターミナル・サブツリーであるかどうか、または、次のバイナリ・サブセットが有意でないかどうかを判定する。選択されたツリーがターミナル・サブツリーであるか、または、次のバイナリ・サブセットが有意でない場合には、制御は終了ブロック1099に受け渡される。そうでない場合には、制御はループ端ブロック1060に受け渡される。ループ端ブロック1060は、全てのバイナリ・サブセットについてループを終了し、制御を終了ブロック1099に受け渡す。
【0081】
本発明の多くの付随する利点/特徴の幾つかについて説明する。これらの幾つかは既に述べた通りのものである。例えば1つの利点/特徴は、ピクチャ内の少なくともブロックのピクチャ・データを符号化する符号化器を有する装置である。ビデオ符号化器は、複数のツリーからの選択を行って、少なくともこのブロックの係数有意性を示すデータのバイナリ・セットを符号化する。
【0082】
さらに、別の利点/特徴は、上述したビデオ符号化器を有する装置であって、ビデオ符号化器が複数のツリーから1つ以上のツリーを選択する装置である。
【0083】
さらに、別の利点/特徴は、ビデオ符号化器を有し、上述したように、ビデオ符号化器が複数のツリーから1つ以上のツリーを選択する装置であって、1つ以上の尺度に基づいて1つ以上のツリーが選択され、この1つ以上の尺度はビット・レート値およびレート歪み値のうちの少なくとも一方を含む装置である。
【0084】
さらに、別の利点/特徴は、上述したようなビデオ符号化器を有し、ビデオ符号化器が複数のツリーから1つ以上のツリーを選択する装置であって、選択された1つ以上のツリーは副情報として示される装置である。
【0085】
さらに、別の利点/特徴は、上述したビデオ符号化器を有する装置であって、ビデオ符号化器は、予測モード、変換、1つ以上の以前に復号されたブロックの復号されたデータ、およびブロックの他の復号されたデータのうちの少なくとも1つに従って複数のツリーから選択する装置である。
【0086】
さらに、別の利点/特徴は、上述したビデオ符号化器を有する装置であって、データのバイナリ・セットが、このデータのバイナリ・セットを複数のサブセットに分割し、複数のサブセットを符号化することによって符号化され、ビデオ符号化器は、複数のツリーおよび複数のサブセットからの選択を行って複数のサブセットを符号化する装置である。
【0087】
さらに、別の利点/特徴は、上述したようなビデオ符号化器を有し、データのバイナリ・セットがは、このデータのバイナリ・セットを複数のサブセットに分割し、複数のサブセットを符号化することによって符号化され、ビデオ符号化器は、複数のツリーおよび複数のサブセットからの選択を行って複数のサブセットを符号化する装置であって、複数のサブツリーのうちの少なくとも1つは、複数のサブツリーのうちの少なくとも1つにおける残りの下位ノードの零値または非零値を示す追加ノードを有する装置である。
【0088】
さらに、別の利点/特徴は、上述したようなビデオ符号化器を有し、データのバイナリ・セットが、このデータのバイナリ・セットを複数のサブセットに分割し、複数のサブセットを符号化することによって符号化され、ビデオ符号化器は、複数のツリーおよび複数のサブセットからの選択を行って複数のサブセットを符号化する装置であって、複数のサブツリーのうちの少なくとも1つは、ターミナル・サブツリーであり、ターミナル・サブツリーの選択は、データのバイナリ・セットの全ての残りの部分が零であることを示す装置である。
【0089】
さらに、別の利点/特徴は、上述したようなビデオ符号化器を有し、データのバイナリ・セットが、このデータのバイナリ・セットを複数のサブセットに分割し、複数のサブセットを符号化することによって符号化され、ビデオ符号化器は、複数のツリーおよび複数のサブセットからの選択を行って複数のサブセットを符号化する装置であって、複数のツリーの各々は複数のノードを含み、複数のツリーのうちの少なくとも一部が、ツリーに含まれている異なる数のノードに対応して異なるサイズを有する装置である。
【0090】
さらに、別の利点/特徴は、ピクチャ内の少なくともブロックのピクチャ・データを符号化するビデオ符号化器を有する装置であって、1つ以上のツリーを使用して少なくとも1つのブロックの係数有意性を示すデータのバイナリ・セットを符号化し、1つ以上のツリーの各々は、複数のノードを有し、1つ以上のツリーのうちの少なくとも1つにおいて、そのツリーのノードのうちの少なくとも1つは、1つ以上のパラメータに応じて変更される装置である。
【0091】
さらに、別の利点/特徴は、上述したビデオ符号化器を有する装置であって、複数のノードは、1つ以上のツリーの各々について、ルート・ノードと、少なくとも1つのリーフ・ノードとを含み、バイナリ変換が少なくとも1つのリーフ・ノードのうちの少なくとも1つに対して適用される装置である。
【0092】
さらに、別の利点/特徴は、ビデオ符号化器を有し、上述したように、複数のノードは、1つ以上のツリーの各々について、ルート・ノードと、少なくとも1つのリーフ・ノードとを含み、バイナリ変換が少なくとも1つのリーフ・ノードのうちの少なくとも1つに対して適用される装置であって、バイナリ変換は、バイナリ・ウェーブレット変換またはバイナリ・フーリエ変換である装置である。
【0093】
さらに、別の利点/特徴は、上述したビデオ符号化器を有する装置であって、ノードの少なくとも1つに減算を適用してノードの少なくとも1つを変更する装置である。
【0094】
さらに、別の利点/特徴は、上述したビデオ符号化器を有する装置であって、複数のノードは、1つ以上のツリーの各々について、ルート・ノードと、2つ以上の連続するリーフ・ノードとを含み、変更されるノードのうちの少なくとも1つは、2つ以上の連続するリーフ・ノードを含み、排他的論理和演算(exclusive OR operation)を2つ以上の連続するリーフのうちの少なくとも2つに適用して、少なくともこの2つ以上の連続するリーフ・ノードを変更する装置である。
【0095】
さらに、別の利点/特徴は、上述したビデオ符号化器を有する装置であって、ノードの少なくとも1つにおけるビットは、値がフリッピングされてノードの少なくとも1つを変更する装置である。
【0096】
さらに、別の利点/特徴は、上述したビデオ符号化器を有する装置であって、ノードのうちの少なくとも1つが変更されていることが、ノードの総数の一部分のみが変更されるように、1つ以上のツリーの内のノードの総数の一部分のみが変更されることを表す装置である。
【0097】
さらに、別の利点/特徴は、ビデオ符号化器を有し、上述したように、ノードのうちの少なくとも1つが変更されていることが、ノードの総数の一部分のみが変更されるように、1つ以上のツリーの内のノードの総数の一部分のみが変更されることを表す装置であって、1つ以上のツリーのうちの1つ以上が1つ以上のパラメータに応じて変更され、変更が始められる特定のノードは、1つ以上のツリーのうちの1つ以上からの、少なくとも2つのツリーの間で変化する装置である。
【0098】
さらに、別の利点/特徴は、上述したビデオ符号化器を有する装置であって、1つ以上のツリーのうちの1つ以上が1つ以上のパラメータに応じて変更され、各ツリーは、ノードのセットを含み、1つ以上のツリーのうちの1つ以上からの、少なくとも2つのツリー間の異なるノード・サブセットに異なる変更が適用される装置である。
【0099】
さらに、別の利点/特徴は、ビデオ符号化器を有し、上述したように、1つ以上のツリーのうちの1つ以上が1つ以上のパラメータに応じて変更され、各ツリーは、ノードのセットを含み、1つ以上のツリーのうちの1つ以上からの、少なくとも2つのツリー間の異なるノード・サブセットに異なる変更が適用される装置であって、異なる変更が適用される異なるノードのサブセットが適応的に決定される装置である。
【0100】
本発明の原理のこれらの特徴およびその他の特徴は、関連する分野において通常の知識を有するものであれば、本明細書中の開示内容に基づいて、容易に解明することができるであろう。本発明の原理の開示内容は、ハードウエア、ソフトウエア、ファームウエア、特定用途向けプロセッサ、または、これらを組み合わせたものの形態で実施できることが理解されよう。
【0101】
より好ましくは、本発明の原理の開示内容は、ハードウエアおよびソフトウエアを組み合わせて実施される。さらに、ソフトウエアは、プログラム・ストレージ・ユニットに上に現実的に実装されるアプリケーション・プログラムとして実施される。アプリケーション・プログラムは、適切なアーキテクチャからなるマシンにアップロードされ、このマシンによって実行されるようにしてもよい。好ましくは、このマシンは、1つ以上の中央処理装置(CPU)、ランダム・アクセス・メモリ(RAM)、入出力(I/O)インタフェースなどのハードウエアを有するコンピュータ・プラットフォーム上で実施される。また、コンピュータ・プラットフォームは、オペレーティング・システムおよびマイクロインストラクション・コードを含むようにしてもよい。本明細書中で開示される様々な処理および機能は、マイクロインストラクション・コードの一部を構成するものでもよいし、アプリケーション・プログラムの一部を構成するものであってもよいし、これらを組み合わせたものであってもよいし、CPUによって実行されるものであってもよい。さらに、追加的なデータ記憶装置やプリンタ等、コンピュータ・プラットフォームに様々な他の周辺機器を結合してもよい。
【0102】
添付図面に示すシステムの構成要素および方法のステップの幾つかは、好ましくは、ソフトウエアの形態によって実施されるため、システムの構成要素または処理機能ブロック間の実際の結合は、本発明の原理をプログラムする方法によって異なる場合があることが理解できるであろう。本明細書の開示する内容に基づいて、関連する技術における通常の技術知識を有するものであれば、本発明の原理の実施形態または構成、さらに、類似した実施形態または構成を企図できるであろう。
【0103】
添付図面を参照して本明細書中で例示的な実施形態について説明したが、本発明はこれらの実施形態に厳格に限定されるものではなく、関連技術に関して通常の技術を有する者であれば、本発明の原理の範囲または趣旨を逸脱することなく、様々な変更、改変を施すことが可能であることが理解できよう。このような変更、改変は、全て、添付の請求の範囲に記載されたような本発明の原理の範囲に含まれるように意図されている。