【文献】
N.Nguyen,T.Ji,D.He,G.Martin-Cocher,L. Song,Multi-level significance maps for Large Transform Units,Joint Collaborative Team on Video Coding(JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 7th Meeting:Geneva,21-30 November,2011,米国,JCTVC,2011年11月 9日,JCTVC-G644,P.1-P.11,URL,http://phenix.it-sudparis.eu/jct/index.php
(58)【調査した分野】(Int.Cl.,DB名)
符号化されたデータのビットストリームから変換ユニットに対する有効係数フラグを再構成する方法であって、前記ビットストリームは、符号化された有効係数グループフラグを含み、各有効係数グループフラグは、有効係数フラグのそれぞれのグループに対応し、前記方法は、
有効係数グループフラグを再構成することと、
前記再構成された有効係数グループフラグに対応するグループの前記有効係数フラグを再構成することと
を含み、
前記有効係数グループフラグが1に復号される場合には、前記有効係数フラグを再構成することは、
前記ビットストリームから、前記グループの左上隅に配置された前記有効係数フラグを除く、前記グループのすべての有効係数フラグを復号することと、
前記グループの前記復号された有効係数フラグのいずれかが非ゼロである場合には、前記ビットストリームから前記左上隅の前記有効係数フラグを復号することと、
それ以外の場合には、前記左上隅の前記有効係数フラグが1であると推測することと
を含む、方法。
前記グループの前記左上隅に配置された前記有効係数フラグを除く、前記グループのすべての有効係数フラグを復号することは、逆スキャン順序で前記有効係数フラグを復号することを含む、請求項1または請求項2に記載の方法。
前記有効係数グループフラグを再構成することは、最後の有効係数に対する前記有効係数フラグを含むグループに対して、または、前記変換ユニットにおける位置[0,0]の係数に対する前記有効係数フラグを含むグループに対して、または、1に設定された右隣りのグループフラグおよび下隣りのグループフラグの両方を有するグループに対して、前記有効係数グループフラグを1であると推測することを含む、請求項2に記載の方法。
コンピュータ読み取り可能な記録媒体であって、前記記録媒体は、コンピュータのプロセッサが実行可能な命令を記憶し、前記命令は、1つ以上のプロセッサにより実行されると、請求項1〜8のうちのいずれか一項に記載の方法を実行するように構成されている、コンピュータ読み取り可能な記録媒体。
変換ユニットに対する有効係数フラグを符号化する方法であって、前記変換ユニットは、各係数に対する有効係数フラグを有し、前記有効係数フラグは、それぞれのグループに区分されており、各グループは、それぞれの有効係数グループフラグを有し、前記方法は、
前記有効係数グループフラグのうちの少なくともいくつかを符号化することと、
少なくとも1つのグループに対して、そのグループに対する前記有効係数グループフラグが1に符号化される場合には、そのグループの前記有効係数フラグを符号化することと
を含み、
そのグループの前記有効係数フラグを符号化することは、
前記グループの左上隅に配置された前記有効係数フラグを除く、前記グループのすべての有効係数フラグを符号化することと、
前記グループの前記符号化された有効係数フラグのいずれかが非ゼロである場合には、前記左上隅の前記有効係数フラグを符号化することと、
それ以外の場合には、前記左上隅の前記有効係数フラグを符号化しないことと
を含む、方法。
前記グループの前記左上隅に配置された前記有効係数フラグを除く、前記グループのすべての有効係数フラグを符号化することは、逆スキャン順序で前記有効係数フラグを符号化することを含む、請求項11または請求項12に記載の方法。
コンピュータ読み取り可能な記録媒体であって、前記記録媒体は、コンピュータのプロセッサが実行可能な命令を記憶し、前記命令は、1つ以上のプロセッサにより実行されると、請求項11〜17のうちのいずれか一項に記載の方法を実行するように構成されている、コンピュータ読み取り可能な記録媒体。
【発明を実施するための形態】
【0020】
(例示的実施形態の説明)
後続の記述において、いくつかの例示的実施形態は、動画像符号化のためのH.264標準および/または開発中のHEVC標準を参照して記述される。いわゆる当業者は、本願がH.264/AVCまたはHEVCに限定されず、可能性のある将来の標準、マルチ表示符号化標準、スケーラブルな動画像符号化標準、再変更可能な動画像符号化標準を含む他の動画像符号化/復号標準に適用され得ることを理解するであろう。
【0021】
後続の記述において、動画像または画像に言及するとき、フレーム、ピクチャ、スライス、タイルおよび長方形スライスグループなる用語は、多少相互交換可能に使用され得る。いわゆる当業者は、H.264標準の場合、フレームが一つ以上のスライスを含み得ると認識する。また、その一定の符号化/復号動作が、適用できる画像または動画像符号化標準の特定の要件または専門用語に従って、フレーム毎、一部のものはピクチャ毎、一部のものはタイル毎、一部にものは長方形スライスグループ毎の方式で実行されることも認識されるであろう。任意の特定の実施形態において、適用できる画像または動画像符号化標準は、下記の一部の場合において、以下の記述の動作が、場合によって、フレームおよび/またはスライスおよび/またはピクチャおよび/またはタイルおよび/または長方形スライスグループと関連して実行されるか否かを決定し得る。従って、いわゆる当業者は、本開示に照らして、本明細書に記載の特定の動作または処理、およびフレーム、スライス、ピクチャ、タイル、長方形スライスグループへの特定の参照が、所与の実施形態に対して、フレーム、スライス、ピクチャ、タイル、長方形スライスグループ、またはこれらの一部またはすべてに適用可能であるか否かを認識するであろう。このことは、以下の記述に照らすと明らかになるように、伝送ユニット、符号化ユニット、符号化ユニットのグループなどにも当てはまる。
【0022】
本願は、有効性写像を符号化および復号するための例示的なプロセスおよびデバイスについて記述する。有効性写像は、変換ユニットまたは係数の規定されたユニット(例えば、幾つかの変換ユニット、変換ユニットの一部分、または符号化ユニット
)に写像するか、またはこれに対応するフラグのブロック、マトリックスまたはグループである。各フラグは、変換ユニットまたは特定のユニットにおける対応する位置が非ゼロ係数を含むか否かを示す。既存の標準において、これらのフラグは、有効係数フラグと呼ばれ得る。既存の標準においては、係数毎に1つのフラグが存在し、フラグは、対応する係数がゼロである場合、ゼロであり、対応する係数が非ゼロである場合、1に設定される1つのビットである。本明細書において使用されるような用語「有効性写像(significance map)」は、以下の記述から理解されるように、変換ユニットに対する有効係数フラグのマトリックスまたは順序付きセットを指すか、または、係数の規定されたユニットを指すことが意図されているが、このことは、用途のコンテキストから明らかである。
【0023】
本明細書に記述された例は、有効性写像に関するが、しかし、マルチレベル符号化および復号プロセスは、例えば、グループ構造を示し得る、係数レベル、フィルタ係数、および(二値化後の)運動ベクトルのような他の動画像におけるシンタックス要素に適用され得る。例えば、係数レベルの局所グループは、高い確立で全て1であり得る。同様に、運動ベクトルのローカルグループは、一つの方向において全てゼロ(例えば、ゼロ水平運動)であり得るか、または、一組のフィルタ係数は、隣接する周波数帯域において全てゼロであり得る。
【0024】
また、マルチレベル符号化および復号構造は、特定の状況に適用され得るが、それらの状況は、動画像コンテンツタイプ(シーケンス、ピクチャ、またはスライスのヘッダにおいて識別されるナチュラル動画像またはグラフィック)のような副次的な情報から決定され得ることが、以下の記述に照らして理解される。例えば、2つのレベルが、ナチュラル動画像に対して使用され得、そして、3つのレベルが、(通常、よりまばらである)グラフィックに対して使用され得る。さらに別の可能性は、構造が、1つ、2つ、または3つのレベルを有するか否かを示すために、シーケンス、ピクチャ、またはスライスヘッダのうちの1つにフラグを提供し、それによって、現在のコンテンツに対して最も適切な構造を選択する柔軟性を符号化器に許すことである。
【0025】
ここで、
図1を参照すると、
図1は、ブロック図の形式で、動画像を符号化するための符号化器10を示している。
図2をも参照すると、
図2は、復号器50が動画像を復号するためのブロック図を示している。本明細書に記載される符号化器10および復号器50は、各々、一つ以上の演算処理装置およびメモリを含む特定用途向けまたは汎用コンピュータに実装され得ることが認識されるであろう。一部の場合において、符号化器10または復号器50によって実行される動作は、例えば、特定用途向け集積回路として、またはメインプロセッサーによって実行可能な格納プログラム命令として実行され得る。デバイスは、例えば、ベースのデバイス機能を制御するためのオペレーティングシステムを含む付加的なソフトウェアを含み得る。符号化器10または復号器50が実装され得るデバイスおよびプラットフォームの範囲は、以下の記述に対する関心を有するいわゆる当業者に認識される。
【0026】
符号化器10は、動画像ソース12を受信し、符号化されたビットストリーム14を生成する。復号器50は、符号化されたビットストリーム14を受信し、復号された動画像フレーム16を出力する。符号化器10および復号器50は、いくつかの動画像圧縮標準に準拠して動作するように構成され得る。例えば、符号化器10および復号器50は、H.264/AVC対応であり得る。他の実施態様において、符号化器10および復号器50は、HEVCのような、H.264/AVC標準の進化を含む他の動画像圧縮標準に従い得る。
【0027】
符号化器10は、空間予測器21、符号化モードセレクター20、変換プロセッサ22、量子化器24、およびエントロピー符号化器26を含む。当業者であれば認識するように、符号化モードセレクター20は、動画像のための適切な符号化モード、例えば、対象のフレーム/スライスがI、PまたはBタイプのいずれであるか、フレーム/スライス内の特定の符号化ユニット(例えば、マクロブロック)が、相互符号化または内部符号化のいずれがされているかを決定する。変換プロセッサ22は、空間領域データに対する変換を実行する。特に、変換プロセッサ22は、空間領域データをスペクトル成分に変えるために、ブロックベースの変換を適用する。例えば、多くの実施形態において、離散余弦変換(DCT)が使用される。他の変換、例えば、離散正弦変換または他のものが、一部の例において使用され得る。ブロック方式の変換は、マクロブロックの大きさに従って、マクロブロックまたはサブブロック方式で実行される。H.264標準において、例えば、典型的な16x16マクロブロックは16個の4x4変換ブロックを含み、DCTプロセスは4x4ブロックに対して実行される。一部の場合において、変換ブロックは8x8であり得、マクロブロック毎に4つの変換ブロックがあることを意味する。さらに別のケースにおいて、変換ブロックは、他の大きさであり得る。一部の場合において、16x16のマクロブロックは、4x4の変換ブロックと8x8の変換ブロックとの非重複の組み合わせを含み得る。
【0028】
ブロック方式の変換をブロックの画素データに適用すると、1セットの変換領域係数が生じる。この場合における「セット」とは、係数が係数位置を有する順序付けられたセットである。一部の例において、変換領域係数のセットは、係数の「ブロック」またはマトリックスと考えられ得る。本明細書における記述において、「変換領域係数のセット」または「変換領域係数のブロック」が、相互交換可能に使用され、変換領域係数の順序付けられたセットを示すことを意味する。
【0029】
変換領域係数のセットは、量子化器24によって量子化される。量子化された係数と関連情報はそれからエントロピー符号化器26によって符号化される。
【0030】
量子化変換領域係数のブロックまたはマトリクスは、本明細書において「変換ユニット」と呼ばれ得る。
【0031】
内部符号化されたフレーム/スライス(例えば、タイプI)は、他のフレーム/スライスに関係なく符号化される。換言すると、それらは時間予測を使用しない。しかし、
図1で例示されるように、内部符号化されたフレームは、空間予測器21によって、フレーム/スライスの範囲内で空間予測による。すなわち、特定のブロックを符号化するとき、ブロック内のデータが、そのフレーム/スライスに対してすでに符号化されているブロック内の近傍の画素のデータと比較され得る。予測アルゴリズムを使用して、ブロックのソースデータは、残差データに変換され得る。変換プロセッサ22は、次に残差データを符号化する。H.264は、例えば、9つの空間予測モードを4x4変換ブロックに対して規定する。一部の実施形態において、9個のモードの各々が独立してブロックを処理するために用いられ得、次に、レートひずみ最適化がベストモードを選択するために使用される。
【0032】
H.264標準は、また、時間予測を利用するために運動予測/補償の使用を規定する。したがって、符号化器10は、逆量子化器28、逆変換プロセッサ30とデブロッキングプロセッサ32を含むフィードバックループを有する。デブロッキングプロセッサ32は、デブロッキングプロセッサとフィルタリングプロセッサを含み得る。これらの要素は、フレーム/スライスを再生するために復号器50によって実装される復号プロセスをミラーリングする。フレーム記憶34は、再生されたフレームを記憶するために用いられる。このように、運動予測は、元々のフレームではなく、復号器50において再構成されるフレームとなるものに基づいており、元々のフレームは、それは符号化/復号に含まれる損失性圧縮に起因して、再構成されたフレームとは異なり得る。運動予測器36は、類似のブロックを識別する目的で現在のフレームと比較するためのソースフレーム/スライスとしてフレーム記憶装置34に記憶されるフレーム/スライスを使用する。したがって、運動予測が適用されるマクロブロックに対して、変換プロセッサ22が符号化する「ソースデータ」は、運動予測プロセスの結果として生じる残差データである。例えば、残差データは、参照フレーム、空間変位または「運動ベクトル」、および参照ブロックと現在ブロックとの間の差(もしあれば)を表わす残差画素データに関する情報を含む。参照フレームおよび/または運動ベクトルに関する情報は、変換プロセッサ22および/または量子化器24によって処理されず、その代わりに、量子化された係数とともにビットストリームの一部として符号化するために、エントロピー符号化器26に供給され得る。
【0033】
当業者は、動画像符号化器を実装するための詳細および可能な変形を認識するであろう。
【0034】
復号器50は、エントロピー復号器52、逆量子化器(dequantizer)54、逆変換プロセッサ56、空間補償器57、およびデブロッキングプロセッサ60を含む。デブロッキングプロセッサ60はデブロックおよびフィルタリングプロセッサを含み得る。フレームバッファー58は、運動補償を適用する際に運動補償器62によって使用するための再構成フレームを供給する。空間補償器57は、以前に復号されたブロックからの特定の内部符号化されたブロックに対する動画像データを回復する動作を示す。
【0035】
ビットストリーム14は、エントロピー復号器52によって受信され、復号されることにより、量子化された係数を回復する。適用可能ならば、付随する情報が、また、エントロピー復号プロセスの際に回復され得、その一部は、運動補償における使用のために、運動補償ループに供給され得る。例えば、エントロピー復号器52は、相互符号化されたマクロブロックに対する運動ベクトルおよび/または参照フレーム情報を回復し得る。
【0036】
量子化された係数は、次に、逆量子化器54によって逆量子化されて、変換領域係数を生成し、変換領域係数は、次に、逆変換プロセッサ56によって逆変換され、「動画像データ」を再作成する。内部符号化されたマクロブロックまたは符号化ユニットに関するような一部の場合において、再作成された「動画像データ」は、フレーム内における以前に復号されたブロックに対する空間補償における使用のための残差データであると認められるであろう。空間補償器57は、以前にデコードされたブロックからの残差データと画素データからの動画像データとを生み出す。相互符号化されたマクロブロックまたは符号化ユニットのような他の場合において、逆変換プロセッサ56から再作成された「動画像データ」は、異なるフレームからの参照ブロックに対する運動補償において使用するための残差データである。空間補償および運動補償の両方は、本明細書において「予測動作」と称され得る。
【0037】
運動補償器62は、特定の相互符号化されたマクロブロックまたは符号化ユニットに対して、指定されたフレームバッファー58内の参照ブロックを特定する。運動補償器62は、相互符号化されたマクロブロックまたは符号化ユニットに対して指定された参照フレーム情報および運動ベクトルに基づいて参照ブロックを特定する。次に、運動補償器62は、その符号化ユニット/マクロブロックのために再構成された動画像データに到達するために、残差データとの組み合わせのための参照ブロック画素データを供給する。
【0038】
デブロッキングプロセッサ60によって示されるように、デブロッキング/フィルタリングプロセスが、次に、再構成されたフレーム/スライスに適用され得る。デブロッキング/フィルタリングの後に、例えば、ディスプレイデバイスにおける表示のために、フレーム/スライスは、復号された動画像フレーム16として出力される。例えば、コンピュータ、セットトップボックス、DVDまたはBlu−Rayプレーヤー、および/またはモバイル携帯デバイスなどの動画像再生装置が、出力装置に表示する前に、メモリの中に復号されたフレームをバッファリングし得ることが理解されるであろう。
【0039】
HEVC対応の符号化器および復号器が、これらの同一または類似の特徴の多くを有することが予想される。
【0040】
(有効性写像(Significance map)符号化)
上記のように、量子化された変換領域係数のブロックまたはセットのエントロピー符号化は、その量子化された変換領域係数のブロックまたはセットのための有効性写像を符号化することを含む。有効性写像は、非ゼロの係数がどの位置(最後の位置以外の)に現れるかについて示しているブロックについてのバイナリ写像である。ブロックは、それが関連付けられている一定の特性を有し得る。例えば、それは、内部符号化されたスライスまたは相互符号化されたスライスに由来し得る。それは、輝度ブロックまたは彩度ブロックであり得る。スライスに対するQP値は、スライス毎に変動し得る。全てのこれらの因子は、有効性写像をエントロピー符号化するための最良の方法に影響力を有し得る。
【0041】
有効性写像は、(垂直、水平、斜め、ジグザグ、または適用可能な符号化標準によって規定された任意の他のスキャン順序であり得る)スキャン順序に従って、ベクトルに変換される。スキャンは、一般に、逆のスキャン順序で行われ、すなわち、最後の有効係数から始めて、逆方向に有効性写像を通って、[0,0]におけるフラグに到達するまで戻る。本記述において、用語「スキャン順序」は、フラグ、係数、または、場合によっては、グループが処理される順序を意味するように意図され、そして、いわゆる「逆スキャン順序」と称される順序を含み得る。
【0042】
各々の有効性ビットは、次に、適用可能なコンテキスト適合性コード体系を使用してエントロピー符号化される。例えば、多くのアプリケーションにおいて、コンテキスト適合性バイナリ演算符号化(CABAC)スキームが使用され得る。他の実装は、二値化を伴う他のコンテキスト適合性コーデックを使用し得る。例は、バイナリ演算符号化(BAC)、変数から変数への(V2V)符号化、および可変長から固定長への(V2F)符号化を含む。4x4および8x8の写像の場合、コンテキストが各ビット位置に対して割り当てられる。ビット(有効係数フラグ)をそのビット位置において符号化する場合、割り当てられたコンテキストおよびその時点までのコンテキストの履歴は、最小見込みのシンボル(LPS)(または、一部の実装においては、最大見込みのシンボル(MPS))の推定確率を決定する。
【0043】
現在の動画像符号化器において、コンテキスト割当ては、符号化器および復号器の両方に対して予め定められる。例えば、4x4の輝度ブロックの場合、現在のドラフトのHEVC標準は、4x4の有効性写像における各ビット位置が固有のコンテキストを有することを規定する。最後の位置を除いて、それは15個のコンテキストが4x4の輝度有効性写像の符号化のために追跡されることを意味する。各ビット位置に対して、その位置に割り当てられたコンテキストは、その位置におけるLPSと関連する推定確率を決定する。実際のビット値は、次に、その推定確率を使用して符号化される。最後に、その位置に割り当てられるコンテキストは、実際のビット値に基づいて更新される。復号器において、符号化されたデータは、同じコンテキストモデルを使用して復号される。各ビット位置に対するコンテキストが追跡され、その位置に対するビットを回復するために、各ビット位置に対するコンテキストが符号化データに対する推定確率を決定するために使用される。
【0044】
16x16および32x32の有効性写像に関して、有効性に対するコンテキストは、隣接する有効係数フラグ値に(主に)基づいている。16x16および32x32の有効性写像に対して使用される13個のコンテキストの中で、[0,0]にあるビット位置および隣接するビット位置に専用の特定のコンテキストが存在するが、有効係数フラグの大部分は、隣接する有効係数フラグの累積値に依存する5個のコンテキストのうちの1つを採用する。これらの場合、有効係数フラグに対する適切なコンテキストの決定は、隣接する場所(一般的に5個の場所があるが、それより多いか少ない場合もあり得る)において、有効係数フラグの値を決定して、合計することに依存する。このことは、複数のメモリーアクセスを含み、それはメモリ帯域幅要件におけるコストがかかり得る。さらに、多くの場合、16x16および32x32の有効性写像は、多数のゼロを含む。したがって、ほとんど係数値を有しない大きい写像を符号化および送信することに含まれる相当なコストが存在する。
【0045】
本願の1つの局面に従って、符号化器および復号器は、特定の変換ユニットに対するマルチレベル有効性写像を使用する。下記の例において、マルチレベル有効性写像が16x16および32x32の大きさの変換ユニットに対して使用されるが、しかしながら、それらは、一部の実施形態において、8x8もしくは64x64または他のサイズの変換ユニットに対して使用され得ることが理解されるであろう。
【0046】
有効係数フラグはグルーピングされる。各有効係数フラグは、複数のグループのうちの1つに分類される。簡単にいえば、多くの実施形態において、グループは(概念的に)変換ユニット構造をブロックに分割または区画化することによって形成される。例えば、16x16の写像は、係数位置のうちの16個を各々が含んでいる4x4のブロックに分割され得る。32x32の写像は、係数位置のうちの64個を各々が含んでいる8x8のブロックに分割され得る。有効係数フラグは、それらがマトリックス構造の中に規定されるこれらのブロックに分類されるという方式で、このようにグルーピングされる。別の例において、16x16の写像および32x32の写像両方は、係数位置のうちの16個を各々が含んでいる4x4のブロックに分割され得る。
【0047】
図3は、例示的な16x16の変換ユニット100(量子化変換領域係数のマトリクス)を示す。インデックス付与の目的で、変換ユニット内のビット位置は、[xC,yC]によって特定され得、この場合、xC=0,1,2,...15であり、yC=0,1,2,...15である。(例えば、)斜めスキャン順序を使用すると、この例における最後の有効係数は、参照番号112によって示されるように、[12、10]にあることに留意する。
【0048】
ここで
図4を参照すると、
図4は、例示的な有効性写像102を示している。有効性写像102は、
図4で示される例示的変換ユニットから生成される有効係数フラグを含む。有効係数フラグは、全てのビット位置において、[0,0]から、[12、10]における最後の有効性係数(ただし、これは除外する)までのスキャン順序で現れる。各ビット位置における有効係数フラグであって、それに対して非ゼロ係数が変換ユニット100の中に存在する有効係数フラグは、1に設定され、一方、ゼロ係数が存在している各ビット位置における各有効係数フラグは、ゼロに設定される。
【0049】
一実施形態において、有効性写像102(すなわち、有効係数フラグのセット)は、変換ユニット構造の連続ブロックへの均一な分割に基づいてグーピングされ得る。変換ユニットのサイズは、ブロックのサイズを決定し得る。16x16の変換ユニットの場合、ブロックは、一部の実施形態において、4x4であり得る。グルーピングは、4x4のブロックの境界を定めている線によって、
図4に図示されている。32x32の変換ユニットのようなより大きな変換ユニットは、それの有効係数フラグが、4x4のブロック、8x8のブロックまたは他のサイズの連続ブロックにグルーピングされ得る。一実施形態において、4x4の係数グループが、サイズ16x16、4x16、16x4、8x32、32x8および32x32の変換ユニットに対して使用される。
【0050】
本明細書において挙げられる例は、簡単のために、連続する正方形ブロックとして規定されるが、本願は、正方形のグループに限定されない。グループは、一部の実施形態において、長方形のブロックとして形成され得る。さらに別の実施形態において、他の形状が使用され得る。例えば、斜めのスキャン順序の場合、変換ユニットの斜めのスライスから形成されるグループを使用することは有利であり得、この場合、グループの一部は、形状がいくぶん台形であり得る。例えば、長方形のグループが、水平スキャン順序または垂直スキャン順序に対して使用され得る。一例では、8x8の変換ユニットに対しては、水平スキャンが使用される場合、2x8の係数グループが使用され得、垂直スキャンが使用される場合、8x2の係数グループが使用され得る。他の変形が、当業者によって理解される。
【0051】
グループのマトリックスに対応しているより高レベルの有効性写像が、次に、生成され得る。より高レベルの有効性写像は、有効係数グループフラグの順序付けセットである。少なくとも1つの有効係数フラグを含む各グループに対して1つの有効係数グループフラグが存在する。最後の有効係数を含んでいるグループは、より高レベルの有効性写像の中に含まれる必要がなく、その理由は、それが少なくとも1つの非ゼロ係数、すなわち最後の有効係数を含むことがすでに知られているからである。有効性写像は、レベル0またはL0の写像と呼ばれ得る。より高レベルの有効性写像(すなわち、有効係数グループフラグを含む)は、レベル1またはL1の写像と呼ばれ得る。
【0052】
図5は、
図4に示された例示的有効性写像102に対応しているL1のより高レベルの有効性写像104を図示する。少なくとも1つの有効係数フラグを含む各グループに対して、L1写像104は、有効係数グループフラグを含むことが留意される。グループ内の有効係数フラグのうちの任意のものが非ゼロであるならば、有効係数グループフラグは1にセットされる。そうでなければ、フラグはゼロにセットされる。
【0053】
グループのインデックス付与は、[xCG,yCG]によって特定され得、この例においては、xCG=0,1,2,3およびyCG=0,1,2,3である。最後の有効係数を含んでいるグループは、[3,2]にある。[3,3]にあるグループは、有効係数フラグをなんら含まず、そのため、それはL1写像に含まれない。
【0054】
有効係数グループフラグは、一部の実施形態において、スキャン順序でベクトル形式に変換され得る。スキャン順序は、概して変換ユニットとの使用に対して特定されたスキャン順序と同一であり得る。一実施形態において、有効係数グループフラグは、変換ユニットに対して選択されたスキャン順序と異なり得る予め規定されたスキャン順序を使用し得る。場合によっては、L1写像は、[0,0]のグループまたは最後の有効係数グループのような特定のグループを除外し得、特定のグループは、さらに以下において記述されるように,推定されたフラグ値を有する。
【0055】
L1写像は、直接的にL0写像から導出される必要はなく、むしろ、スキャン順序で変換ユニットの係数をスキャンすることから導出されることが可能であろうことが認識されるであろう。
【0056】
また、さらにより高レベルの写像が、一部の実施形態において使用され得ると認められる。例えば、変換ユニットが64x64の変換ユニットであるならば、L1写像は、256個の4x4のグループに変換ユニットを分割することに基づき得る。このように、L1写像は、L1グループフラグを含む16x16の写像である。さらなるL2写像は、L1フラグを4x4のブロック(それらの各々が、変換ユニットからの16x16の係数のグループに対応する)のさらなるセットにグルーピングすることによって生成され得る。抽象化および/または粒度の追加のレベルが、他の実施形態において使用され得る。
【0057】
ここで、
図6を参照すると、
図6は、フローチャート形式で、有効係数フラグを符号化するための例示的プロセス200を示している。プロセス200は、動作202で始まり、符号化器が、有効係数フラグおよび有効係数グループフラグおよびを決定する。一実施形態において、符号化器は、スキャン順序で変換ブロックをスキャンすることにより、最後の有効係数および有効係数フラグのセットを決定する。有効係数グループフラグは、同一スキャン中に決定され得る。(もっとも、スキャン順序は、複数のブロックを横断することを含み得るので、一定量の値のバッファリングが実用的な実装において使用され得る;場合によっては、符号化器が、それがそのグループに対する最後の係数、例えば、出口係数をスキャンしたことを決定したときに、有効係数グループフラグの決定がなされる)。一部の実装において、符号化器は、L0有効性写像、または変換ユニットのいずれかについて第2のスキャンを実行して、有効係数グループフラグを決定し得る。
【0058】
動作204において、各有効係数グループフラグに対して、符号化器は使用すべきコンテキストを決定し、次に、決定されたコンテキストに基づいてその有効係数グループフラグをエントロピー符号化する。有効係数グループフラグは、規定された順序で処理され得る。一部の実施形態において、規定された順序は、変換ユニットに対するスキャン順序と同一である。コンテキストの数およびそれらの決定は、任意の好適な方法において構成され得る。例示的なコンテキストのセットおよび有効係数グループフラグに対してコンテキストを決定する方法が以下に記述される。
【0059】
有効係数グループフラグのセットを符号化して、符号化器は、次に、有効係数フラグを符号化する。動作206において、符号化器(スキャン順序で作動している)は、有効係数グループフラグがそれに対して1に設定されるグループに分類される場合、各有効係数フラグのコンテキストを決定し、各有効係数フラグを符号化する。対応する有効係数グループフラグがゼロに設定されているならば、エントロピー符号化プロセスの間、そのグループの中の有効係数フラグは、なんら符号化されず、すなわち、それらはスキップされる。
【0060】
したがって、プロセス200の後において、符号化器は、符号化された有効係数グループフラグおよび符号化された有効係数フラグを含む符号化されたデータのビットストリームを生成しており、これらの符号化された有効係数グループフラグおよび符号化された有効係数フラグは、少なくとも1つの非ゼロ有効係数フラグを有するグループに分類される。ビットストリームは、少なくとも1つの非ゼロ有効係数フラグを有しないグループからの有効係数フラグは含まない。
【0061】
復号器において、有効係数フラグは、ビットストリームの符号化されたデータから再構成される必要がある。ここで、
図7を参照すると、
図7は、フローチャート形式で、符号化されたデータのビットストリームから有効係数フラグを再構成するための例示的プロセス300を示している。ビットストリームは、ネットワーク接続を介して受信されるか、すなわち、ストリームされるか、メモリ(例えば、フラッシュメモリーなど)、または格納ディスク(例えば、DVD、BluRay
TM、CD−ROMなど)などのコンピュータ可読媒体から読み取られ得る。プロセス302は、復号器において変換ユニットを再構成するプロセスに適用される。(使用中の動画像符号化標準のシンタックスに応じた)シーケンス、および各スライスまたはピクチャの両方に対する、ヘッダ情報の復号は示されていない。
【0062】
動作302において、最後の有効係数の位置が、ビットストリームから復号される。この情報は、任意の適用可能なシンタックスにおいて表され得る。一部の標準は、最後の有効係数がマトリックスノーテーション(例えば、変換ユニット内のxおよびy基準の場所)を使用して特定されるべきことを規定し;一部の標準は、最後の有効係数が最後の有効係数位置に1つの1を有し他は0のベクトルを使用してシグナル伝達されるべきであって、この場合、ベクトルは、スキャン順序によって変換ユニットに写像されることを規定する。最後の有効係数を特定するために好適な任意のシンタックッスが、動作302において使用され得る。
【0063】
動作304において、有効係数グループフラグは、ビットストリームから復号される。標準によって特定されるか、またはヘッダ情報において特定される任意の適用可能な二値化スキームを使用して、有効係数グループフラグは、既にエントロピー符号化されていることがあり得る。例えば、コンテキスト適合型2値算術符号化は、一部の例において使用され得る。有効係数グループフラグは、各フラグ位置(より高レベルの有効性写像、例えば、L1有効性写像のビット位置)に対してコンテキストを決定し、次に、ビットストリームからフラグ値を復号し、およびフラグ値に基づいてコンテキストを更新することによって復号される。スキャン順序が既知であり、最後の有効係数が動作302において識別されており;従って、L1有効性写像のサイズが決定されているで、有効係数グループフラグのセットのサイズは既知である。不均一区画化グループの場合、グループサイズおよび位置の好適なシグナル伝達は、シンタックスの中に提供され得る。
【0064】
上記のように、各有効係数グループフラグは、変換ユニットに対して規定された連続するグループのうちのそれぞれの一つに対応する。一つ以上の有効係数フラグが、有効係数グループフラグを有しているこれらのグループの各々に分類される。したがって、各有効係数グループフラグは、有効係数フラグのそれぞれのグループに対応する。
【0065】
有効係数グループフラグのセットを復号した後に、有効性写像、すなわち有効係数フラグのセットを再構成するための残りの動作が、規定されたスキャン順序で実行される。処理は最後の有効係数から始まる(しかしながら、非ゼロ係数を含むことが既に知られているので、その最後の有効係数位置を除外する)。動作305において、各有効係数フラグに対して、復号器はそれの対応する有効係数グループフラグがゼロであるか否かを決定する。対応する有効係数グループフラグが非ゼロであるならば、動作306によって示されるように、有効係数フラグはビットストリームから復号される。すなわち、関連または対応する有効係数グループフラグが、グループが少なくとも1つの非ゼロ係数を含み得ることを示すならば、復号器は、現在位置に対してビットストリームから有効係数フラグを復号する。
【0066】
関連または対応する有効係数グループフラグがゼロであるならば、すなわち、非ゼロ係数がグループに存在しないことを示すならば、動作308によって示されるように、復号器はゼロとして現在の有効係数フラグをセットまたは再構成する。復号器は、ビットストリームからそれを復号しない。
【0067】
動作310において、復号器は、自身がスキャン順序の終わり、すなわち、変換ユニットの左上の角の係数、例えば[0,0]に既に到達しているか否かを決定する。もしそうであるならば、プロセス300は終了し;そうでなければ、復号器は、動作312において、スキャン順序で次の位置まで移動し、その次の位置に対する有効係数フラグを再構成するために動作306および308を繰り返す。
【0068】
この実施形態において、スキャン順序は、次のグループへと移動する前に、グループの全ての有効係数フラグを再構成することを生じさせるわけではないことが理解されるであろう。むしろ、スキャン順序(スキャン順序およびグループの幾何学形状に従う)は、グループ境界を横断してスキャンし、その結果、復号器は、スキャン順序で[0,0]位置まで戻りながら、1つのグループから少数のフラグを、隣りのループから少数のフラグをなどのように再構成する。この問題を回避するスキャンプロセスが、さらに以下に記述される。
【0069】
ビットを節約するために、符号化および復号プロセスにおいて考慮される特殊ケースが存在し得る。例えば、上記のように、最後の有効係数を含んでいるグループは、非ゼロ係数を示す有効係数グループフラグを常に有し、その結果、有効係数グループフラグは符号化されて復号器に送られる必要がない。符号化器は、そのグループに対する有効係数フラグを常に符号化し、復号器は、そのグループに対する有効係数フラグを常に復号するように構成される。
【0070】
一部の実施形態に含まれ得る別の特殊ケースは、第1のグループを常に符号化、および復号する場合である。このグループは、変換ユニットの中の[0,0]においてDC係数を含む。このグループが非ゼロ係数を含まない確率は、非常に低い。したがって、[0,0]のグループに対する有効係数グループフラグを送信する代わりに、符号化器は、そのグループの有効係数フラグを常に符号化するように構成され得、復号器は、そのグループの有効係数フラグを常に復号するように構成され得る。
【0071】
一部の実施形態に実装され得るさらに別の特殊ケースも、確率に基づいている。特定のグループの右方のグループおよび下方のグループが両方とも非ゼロ係数を含む場合、特定のグループが非ゼロ係数を含む確率は非常に高いことに留意してきた。したがって、一部の実施形態において、符号化器および復号器は、両方が非ゼロ係数を含む右方の隣接グループおよび下方の隣接グループを有する任意のグループは非ゼロ係数を有すると推定し得る。このように、特定のグループに関して、右方のグループに対する有効係数グループフラグが1に設定され、かつ、下方のグループに対する有効係数グループフラグが1に設定されるならば、符号化器は、特定のグループに対して有効係数グループフラグを符号化せず、常に特定のグループに対する有効係数フラグを符号化する。復号器は、右方および下方の隣りが、非ゼロ係数を示す有効係数グループフラグを有することを認識し、そこで、復号器は、特定のグループが非ゼロ係数を有すると自動的に仮定するであろうし、および、復号器は、有効係数フラグを復号するであろう。
【0072】
ここで、
図8を参照すると、
図8は、上記の特殊ケースの取扱いについての例示的実施形態を反映するための付加的な詳細を有する
図7からの動作304を示している。動作304は、動作304−1を含み、動作304−1において、最後の有効係数を含むグループに対する有効係数グループフラグが1に設定される。最後の有効係数の位置は、以前の動作においてビットストリームから復号される(図示されず)。
【0073】
復号器は、次に、スキャン順序でグループを通って移動する。動作304−2において示されているように、復号器は、スキャン順序で、最後の有効係数を含んでいるグループから次のグループまで移動する。このグループに対して、復号器は、現在のグループの右方のグループに対する有効係数グループフラグおよび現在のグループの下方のグループに対する有効係数グループフラグが、1に等しいか否かを評価する。最初、ちょうど始まったばかりなので、復号器は、右方および下方へのフラグを有しないが、スキャン順序(水平であるか、垂直であるか、斜めであるかに関係なく)において後になると、復号器は、ときとして、現在のグループに関するこれらの位置における有効係数グループフラグを再構成し終わっていることがあり得る(変換ユニットのボトムエッジに位置するグループに対して、復号器は下方のグループに対するフラグを決して有さない)。それらの2つの隣接したグループが1に設定されていると、現在のグループも1に設定されている確率は、符号化器および復号器の両方が、それが1に設定されていることを推定するほどに十分に高い。したがって、動作304−6において、特殊ケース条件が満たされるならば、復号器は有効係数グループフラグを1に設定する。そうでなければ、復号器は、動作304−4に移動する。別の実施形態において、この特殊ケースは、他の隣接したグループ、または全く他のグループの有効係数グループフラグに基づいて修正され得る。
【0074】
動作304−4において、復号器は、ビットストリームから現在のグループに対する有効係数グループフラグを復号する。復号は、コンテキストを決定すること、次に、決定されたコンテキストに従って復号することを含む。復号は、2値算術符号化(BAC)、または、他の2値化符号化/復号プロセスに基づき得る。
【0075】
動作304−5において、復号器は、これがスキャン順序における最後の1つ前のグループであるか否かを決定する。そうでなければ、復号は未だ完了しておらず、そのため、復号器は、スキャン順序において次のグループに進むために、動作304−2まで回帰する。それが、スキャン順序における最後の1つ前のグループであるならば、復号器は、動作304−7まで移動し、動作304−7において、復号は、最後のグループ、すなわち、グループ[0,0]に対して有効係数グループフラグを1に設定する。このことは、復号器および符号化器によって、その特定のグループが常に、少なくとも1つの非ゼロ係数を有すると推定される特殊ケースに基づいており、そのため、有効係数グループフラグは、常に1にプリセットされ、その結果、そのグループに対する有効係数フラグは、常に符号化および復号される。この動作の後に、復号器は、動作306または308に移動する(
図7)。
【0076】
上記の例示的プロセスは、
図7および
図8において、L1有効性写像(有効係数グループフラグ)の復号、およびL0有効性写像(有効係数フラグ)の復号を2段階プロセスとして記述し、このプロセスにおいて、L1有効性写像が完全に復号され、次に、L0有効性写像が復号されることが理解される。一部の実施形態において、このことは、事実であり得る。しかしながら、一部の他の実施形態においては、復号プロセスは、部分的に絡み合っているかもしれない。すなわち、L1写像が完全に復号される前に、L0写像の復号は始まり得る。一部の実施形態においては、第1の有効係数グループフラグが再構成されるとすぐに、L0の有効性写像の復号が開始し得ることが理解されるであろう。
【0077】
一部の実施形態において、マルチレベル有効性写像符号化は、例えば、ピクチャ種別に従ってオン/オフされ得る。例えば、多重レベル有効性写像符号化は、IピクチャおよびPピクチャに対して有効化され得るが、Bピクチャに対しては無効化され得る。
【0078】
(マルチレベルスキャン順序)
以上概略述べられたように、係数グループが上の例において示されるように形成されるとき、すなわち、連続ブロックで形成されるとき、(垂直、水平、または斜め)スキャン順序は、有効係数フラグをスキャンするとき、グループの境界を横断することを結果として生じる。これは、ハードウェア実装の観点から符号化および復号における困難性を引き起こし得る。なぜならば、ワンパススキャン(one−pass scan)を実行するために、データの有意なバッファリングが、部分的に復号されたグループの有効係数フラグを追跡するために必要とされ得るからである。そうでなければ、L1写像のフラグに対する1回のスキャン順序パスおよびL0写像に対する1回のスキャン順序パスというように、2回(以上)スキャンすることが必要であり得る。ワンパススキャニングプロセスを実行することならびにメモリおよび計算の複雑性の問題の幾つかを回避することに対する1つの選択肢は、グループベースまたはマルチレベルスキャニング順序を使用することである。
【0079】
ここで
図14を参照すると、例示的16x16変換ユニット600が示されている。有効性写像符号化のコンテキストにおいて、例示的16x16変換ユニット600は、16の係数グループを含み、各係数グループは、有効係数フラグの4x4ブロックである。斜めのスキャン順序が、
図14に示される。スキャン順序は、[15,15]における有効係数フラグから始まり、そして、斜めのスキャンが、右下[15,15]から左上[0,0]へ変換ユニット600を横断しながら、右上から左下へ走る。上で論議されたように、有効性写像符号化プロセスは、最後の有効係数から始まるスキャン順序を使用する。
【0080】
スキャニング順序が、係数グループ境界を横切ることに注目される。例えば、それぞれ、参照番号610、612、および614によって示されている、[10,12]、[11,11]および[12,10]における有効係数フラグに注目されたい。スキャン順序において、符号化器および復号器は、位置[12,10]において有効係数フラグ614と最初に遭遇する。スキャン順序は次に、位置[11,11]において有効係数フラグ612と遭遇し、有効係数フラグ612は、その係数グループにおける第1の有効係数フラグである。次に、スキャン順序が、位置[10,12]における有効係数フラグ610に到達するとき、スキャン順序は、別の係数グループの中に横断して入る。
【0081】
符号化器側において、係数グループ境界をこのように頻繁に横断することは、様々な係数グループにおける有効係数フラグの値を追跡するために、スキャニングプロセス中に有意なバッファリングを結果として生じ得ることが理解され、そして、係数グループに対する有効係数グループフラグに関する決定は、グループにおける最後(左上)の有効係数フラグが、スキャン順序において到達されるまで待つ必要があり得ることが理解される。ワンパススキャンで変換ユニット600全体を処理するために、符号化器は、過度のメモリアクセス動作を回避するために何らかの複雑なバッファリングを必要とし得る。係数グループ境界を頻繁に横断することは、レート歪み最適量子化(RDOQ)、すなわち、軟判定量子化(SDQ)に対する特定の複雑化を引き起こす。RDOQ/SDQ決定をなすとき、符号化と関連付けられたレートコストを追跡することは、有意により複雑となる。復号器側において、復号器が、スキャン順序で様々なグループを横断して有効係数フラグを再構成するとき、復号器も、様々なグループに対する既に復号された有効係数グループフラグを追跡するためにバッファリングを必要とし得る。これは、復号器において、より大きなメモリ/バッファ要件を結果として生じる。
【0082】
従って、一実施形態において、符号化および復号プロセスは、マルチレベルスキャニング順序を使用し得る。ここで、
図15を参照すると、
図15は、
図14の変換ユニット600を示し、マルチレベル斜めスキャン順序が示されている。変換ユニット600全体にわたるのではなく、各係数グループ内において、斜めのスキャン順序が、グループレベルで適用される。係数グループ自体が、スキャン順序で処理され、その実行も、この例において、斜めのスキャン順序である。
【0083】
斜めは1つの選択肢であり、他の実施形態においては、係数グループ内においておよび/またはグループレベルで係数グループの処理を順序付けるために、水平、垂直、ジグザグ、または他のスキャン順序が適用され得ることが理解される。
【0084】
グループベースのスキャニング順序またはマルチレベルスキャニング順序を使用して、有効係数フラグの各グループが、順に符号化および復号される。つまり、有効係数フラグの次のグループの符号化/復号は、現在のグループの符号化/復号が一旦完了したときにだけ始まる。例えば、斜めのグループスキャン順序を使用して、位置[12,10]において有効係数フラグ614を含む有効係数フラグのグループ全体が復号され、その後に復号器は、位置[10,12]において有効係数フラグ610を含む有効係数フラグのグループを復号し始める。同様に、これら両方のグループが完全に復号され、その後に復号器は、位置[11,11]において有効係数フラグ612を含むグループを復号し始める。これは、符号化器/復号器が、1回のパスでマルチレベル有効性写像をより容易に処理することを許す。なぜならば、係数グループの有効係数フラグは全て、グループ内でのスキャン順序で、順次処理されるからである。
【0085】
有利なことに、マルチレベルスキャニング順序またはグループベースのスキャンイング順序は、有効係数グループフラグをビットストリーム内にインタリーブすることをさらに容易にする。各係数グループが、スキャン順序で処理されるにつれ、符号化器は、ビットストリームに有効係数グループフラグを書き込み得、そして次に、有効係数グループフラグが非ゼロの場合に、その係数グループに対して有効係数フラグを挿入し得る。復号器において、復号器は、有効係数グループフラグをビットストリームから復号し、非ゼロの場合、次に復号器は、グループ内でのスキャン順序でそのグループに対する有効係数フラグを復号する。有効係数グループフラグがゼロである場合、複合器は、そのグループに対するすべての有効係数フラグをゼロに設定して、そして、次の有効係数グループフラグをビットストリームから復号する。このようにして、復号器は、グループスキャン順序でグループごとに有効性写像を再構成する。
【0086】
グループ内で使用されるスキャン順序は、グループからグループへと進行するために使用されるグループスキャン順序と必ずしも対応する必要はないことが理解される。例えば、グループ内では斜めのスキャン順序が使用され得、一方、グループの処理は、水平グループスキャン順序で実行される。
【0087】
本明細書に記述されたマルチレベルスキャン順序は、マルチレベル有効性写像に対して使用される係数グルーピングと整合するが、しかし、より一般的な場合において、マルチレベルスキャン順序またはグループベースのスキャン順序は、有効係数フラグのグループと必ずしも対応しないブロックの中で組織され得ることは理解される。例えば、
図14および
図15を参照すると、斜めのスキャン順序を各4x4の係数グループに適用する代わりに、別の例示的実装において、スキャン順序の目的でのグルーピングまたはブロッキングは、8x8のブロックを使用し得る。換言すると、この例において、斜めのスキャン順序が、4つの8x8のブロックに適用される。マルチレベルスキャン順序に対して使用されるグルーピングとマルチレベル有効性写像において使用される係数グループとの間に不整合が存在する場合、符号化器/復号器は必ずしも、次のグループに移動する前に、各グループを完全には処理しないことに注目されたい。
【0088】
図16をここで参照すると、
図16は、マルチレベルスキャン順序を使用してマルチレベル有効性写像を復号するための例示的方法700を示す。方法700は、符号化されたデータのビットストリームから有効係数フラグを再構成するための例示的なプロセスである。符号化されたデータのビットストリームは、符号化された有効係数グループフラグを含む。各有効係数グループフラグは、それぞれの有効係数フラグのグループと対応する。スキャン順序において、ビットストリームにおける各非ゼロ有効係数グループフラグの後には、それぞれのグループの有効係数フラグが従う。
【0089】
方法700は、動作702において、ビットストリームから最後の有効係数の位置を復号することから始まる。既に述べられたように、最後の有効係数の位置は、多くの方法のうちの任意の1つで示され得る。一旦最後の有効係数の位置が知られると、次に動作704において、復号器は、最後の有効係数を含む係数グループ内の有効係数に対する有効係数フラグをビットストリームから復号する。動作704における復号は、係数グループ内のスキャン順序(このスキャン順序は、斜め、垂直、水平、その他であり得る)で実行され、最後の有効係数位置の後の有効係数位置から始まり、スキャン順序で左上の係数に向かって戻る。
【0090】
動作706において、グループスキャン順序を参照して、(CGとインデックスが付けられた)現在の有効係数グループは、最後の有効係数を含むグループの後のグループであるように設定される。グループスキャン順序は、係数グループが復号される順序であり、最後の有効係数を含むグループの後のグループから始まり、変換ユニットにおける左上のグループ(位置[0,0]においてDC係数を含むグループ)に向かってグループスキャン順序で戻る。グループスキャン順序は、垂直、水平、斜め、その他であり得る。
【0091】
動作708において、復号器は、(CGとインデックスが付けられた)現在の係数グループに対する有効係数グループフラグを再構成する。特殊な場合が当てはまるのでなければ、この再構成は、ビットストリームから有効係数グループフラグを復号することを含む。例えば、1つの例示的な特殊な場合は、現在の係数グループの右のグループおよび現在の係数グループの下のグループに対する有効係数グループフラグが、両方とも非ゼロであるときである。この状況においては、有効係数グループフラグは、デフォルトにより非ゼロと推測され得る。
【0092】
動作710によって示されるように、再構成された有効係数グループフラグがゼロの場合、次の動作712において、対応する係数グループの有効係数フラグは全てゼロに設定される。再構成された有効係数グループフラグが非ゼロの場合、次の動作714において、対応する係数グループの有効係数フラグは、そのグループ内のスキャン順序でビットストリームから復号される。
【0093】
一旦、動作712または714のいずれかで現在の係数グループのすべての有効係数フラグが再構成されると、次の動作716において、CGインデックスが減ぜられて、グループスキャン順序で次の係数グループへ移動する。動作718において、グループスキャン順序で次の係数グループがCG>0である場合、すなわち、このグループが、[0,0]においてDC係数を含む左上のグループではない場合、プロセスは、動作708に戻り、次の係数グループの有効係数を完全に再構成する。しかしながら、CG=0の場合、方法700は、動作720へ進み、動作720において、左上係数グループの有効係数フラグが、ビットストリームから復号される。この例示的実施形態において、左上係数グループの有効係数フラグは、常にビットストリームにおいて符号化され、従って、復号器は、この係数グループに対する有効係数グループフラグは、事実上常に非ゼロであると推測する。
【0094】
(コンテキスト−モデリング)
符号化効率を改善するために、BACエンジン(または、他のエントロピー符号化/復号エンジン)は、コンテキストを使用する。本願は、有効係数グループフラグを符号化することに対して、4つの新しいコンテキストを使用することを提案する。2つのコンテキストは、輝度の符号化/復号に対するものであり、2つは彩度の符号化/復号に対するものである。
【0095】
2つのコンテキストのうちどちらが所与の有効係数グループフラグに適用されるかを決定することが次のように生じる。現在のグループの右方に隣接したグループに対する有効係数グループフラグがゼロであり、現在のグループの下方に隣接したグループに対する有効係数グループフラグがゼロであるならば、現在のグループの有効係数グループフラグを符号化することに対するコンテキストは、0である。そうでなければ、コンテキストは1である。それらの2つの隣接したグループに対するフラグが利用できない場合、利用できないフラグは、コンテキスト決定の目的のために0と推定される。
【0096】
(例えば、左上から右下に向かうような)異なるスキャン順序の方向が使用される場合、コンテキストを決定するために、コンテキストモデルが、現在のグループの左方に隣接したグループに対する有効係数グループフラグ、および現在のグループより上方に隣接したグループに対する有効係数グループフラグを使用するように変更されることができることに留意されたい。
【0097】
コンテキスト決定プロセスは、また、特殊ケースを含み得る。例えば、左上グループは、常にコンテキスト1を割り当てられ得る。
【0098】
他の可能なコンテキストモデルおよび使用され得るコンテキストを決定する方法が存在する。いくつかの例が以下に示される。
【0099】
記号を定義すると、L[i]は、レベルLでの係数グループiの有効性フラグを表示し、Nは、レベルLでの係数グループの数を表示する。一般に、所与のLおよび係数グループiについて、L[i]に対するコンテキストC_iを決定するために、iおよび全ての利用可能なL[j]の関数c(
*)を使用する。従って、コンテキストは、
C_i=c(i,L[0],L[1],...L[N−1])
によって与えられ、ここで、j!=iである。L[i]に対するコンテキストを決定するためにL[j]を使用するには、L[j]自体が利用可能でなければならないことに留意されたい。従って、選択されるスキャン順序は、c(
*)において使用される任意のL[j]が以前に決定されていることを保証しなければならない。
【0100】
上記のコンテキスト決定モードと類似の実施形態において、コンテキストは、
C_i=c(i,L0[0],L0[1],...,L0[15])
=sum{bj
*L0[j]}
によって決定され得、ここで、j=0,1,...,N、およびj!=iであり、係数グループjが係数グループiの右方または下方の隣である場合、bj=1であり、そうでない場合、bj=0である。この特定の実施形態は、3個のコンテキストを有する(別の3つのコンテキストが彩度に対して使用される場合には、6個である)。
【0101】
c(
*)の別の実施形態は、
C_i=c(i,L[0],L[1],...,L[N−1])
=sum{bj
*L[j]}
によって与えられ、ここで、j=0,1,...,N、およびj!=iであり、係数グループjが既に決定されているiの任意の隣接した係数グループである場合には、bjは非ゼロであり、そうでない場合は、bj=0である。この実施形態において、重み係数bjは、必ずしも定数ではないことがあり得る。
【0102】
c(
*)の別の実施形態は、Lにおける他の係数グループの有効係数グループフラグを無視し、現在の係数グループの位置iにのみ基づいてコンテキストを決定する。これは、
C_i=c(i,L[0],L[1],...,L[N−1])
=i
と表され得る。
【0103】
他のコンテキストモデルおよびコンテキストを決定するプロセスが、マルチレベル有効性写像に対して使用される。
【0104】
以下に、上に論議された2コンテキスト実施形態に対する例示的なシンタックスが与えられる。この例において、入力を現在の係数グループスキャン位置(xCG,yCG)、およびシンタックス要素significant_coeffgroup_flagの既に復号されたビン(bin)であると考慮されたい。このプロセスの出力は、ctxIdxIncである。この例においては、変換ユニットは、16の連続ブロックに分割されて、係数グループを形成したと推測される。例えば、16x16TUは、4x4のブロックに分割され、そして、32x32TUは、8x8のブロックに分割される。別の例においては、変換ユニットは、4x4のブロックまたは他のサイズのブロックに分割され得る。
【0105】
可変ctxIdxIncは、現在の位置(xCG,yCG)、およびシンタックス要素significant_coeffgroup_flagの既に復号されたビンに依存する。ctxIdxIncの導出に対しては、以下が適用される。
【0106】
xCGが3に等しく、そしてyCGが3に等しい場合、ctxIdxIncは、デフォルトコンテキスト値と等しいように設定される。この例示的実施形態において、デフォルト値は、ctxIdxInc=44である。他の実施形態において、デフォルト値は、0を含む別の値であり得る。
【0107】
xCGが3より小さく、そしてyCGが3に等しい場合、ctxIdxIncは、ct
xIdxInc=44+significant_subblock_flag[xCG+1][yCG]として設定される。
【0108】
xCGが3に等しく、そしてyCGが3より小さい場合、ctxIdxIncは、ct
xIdxInc=44+significant_subblock_flag[xCG][yCG+1]として設定される。
【0109】
xSBが3より小さく、そして、ySBが3より小さい場合、ctxIdxIncは、ctxIdxInc=44+max{significant_subblock_flag[xCG+1][yCG],significant_subblock_flag[xCG][yCG+1]}として設定される。
【0110】
上の式における値44は、デフォルトインデックス値の一例である。0を含む他の値が、他の実施形態において使用され得る。
(レートひずみ最適量子化)
一部の符号化プロセスは、レートひずみ最適量子化(RDOQ)、または、ときには、「ソフト量子化(soft−quantization)」と呼ばれるものを使用する。RDOQは、レートひずみ最適化表現に基づいて最適な量子化変換領域係数を決定するプロセスである。したがって、RDOQから生じる量子化変換領域係数は、通常の変換および量子化プロセスを介して到達された量子化変換領域係数と同一であることも、同一でないこともあり得る。一部の場合において、結果として生じるひずみが、それに伴う送信コストの節減よりもコスト的により低いことが決定され、係数値は、RDOQプロセスによって修正され得る。
【0111】
RDOQプロセスは、レート成分を決定する際に、通常、4つのコストを評価する。4つのレートコストは、最後の位置レート、有効性レート(L0レート)、係数レート、およびコード化されたブロックパラメータ(CBP)レートを含む。マルチレベル有効性写像を実装するために、また、RDOQ計算においてより高レベルの有効性レート(例えば、L1レート)をも含むように、RDOQを修正することが有利であり得る。
【0112】
一実施形態において、RDOQプロセスは、有効性写像に関して二段階のRDOQを実行するように修正され得る。最初に、RDOQプロセスが、最良の最後の位置および係数値、従って、L1有効係数フラグを決定するために適用される。第二段階において、最後の位置が固定され、RDOQプロセスが、次に、L1レートに関して再び適用されて、任意の係数をゼロにすることに対するレートひずみ(RD)コスト調整があるか否かを決定し得る。
【0113】
図9は、フローチャート方式で、マルチレベル有効性写像の符号化に対する例示的RDOQプロセス400を示している。プロセス400は、RDOQを使用することにより、最適な量子化変換係数を得るとともに、最後の有効係数、すなわちL0RDOQの位置を決定する。プロセス400は、次に、最後の位置を固定し、現在のRDコストを調節することにより、有効性写像の追加レベルの効果を考慮に入れる。次に、貪欲な(greedy)アプローチを使用して、さらに変換係数を最適化する。
【0114】
動作402は、最適な量子化変換領域係数を得るために、最後の有効係数位置を提供するRDOQの使用を表わす。動作402は、最後の位置、最適係数に対応している有効性写像、係数値、およびCBPを送信することに対するレートに基づく特定のRDコストをもたらす。
【0115】
動作404において、最後の有効位置が固定される。すなわち、最後のグループは、非ゼロ係数を含み、すなわち、最後の有効係数グループフラグが1に固定される。符号化器が、次に、コスト節減が他のグループにおける係数をゼロにすることによって見つかるか否かを貪欲に決定する。一部の実施形態において、プロセス400がスキャン順序で実行され得るが、別の順序でも処理されることが可能である。
【0116】
動作406において、現在のグループとして最後の1つ前のグループから始めて、符号化器は、現在のグループが1に等しい有効係数グループフラグを有するか否かを決定する。1に等しくない場合、グループはすでにゼロだけを含んでおり、符号化器は次のグループにスキップする。有効係数グループフラグ=1ならば、符号化器は、現在のグループの全ての係数がゼロである場合にもたらされるであろうRDコストを計算する。動作408において、符号化器は、新たに計算されたRDコストが現在のRDコストよりもより良好であるか(すなわち、より低い)否か評価する。もしそうであれば、動作410において、現在のグループの全ての係数がゼロにされ、現在のRDコストが変化を反映するために更新される。動作412において、符号化器は、それがL1RDOQに関し、実行されたか否か、すなわち、それが[0,0]グループの直前のグループに到達したか否かを評価する(上記の特殊ケースにおいて概説されたように、少なくとも1つの非ゼロ係数がそのグループの中に存在すること推定するように符号化器および復号器が、構成される場合、[0,0]グループはゼロにされない)。評価すべきさらなるグループが存在する場合、プロセス400は、動作414において、継続し、この場合、符号化器は次のグループに移動する(一部の実施形態においては、スキャン順序を使用する)。
【0117】
ここで、RDOQプロセスが実施例として図示される。
図3、4および5に関連する上記の実施例を再び参照する。L1RDOQの前、かつL0RDOQ後の最適な量子化変換領域係数が
図3に示される。対応するL0有効性写像が
図4で示され、L1有効性写像が
図5に示される。
【0118】
L1RDOQプロセスは、例えば、
図10に示される最適化されたL0有効性写像500、
図11に示される関連または対応するL1有効性写像502をもたらし得る。
【0119】
最後の有効グループ、すなわち[3,2]グループにおける有効係数フラグが不変であることに留意する。しかしながら、[3,0]グループ、[0,3]グループ、および[1,3]グループは、すべてゼロにされた。その結果、
図11に示すように、これらの3つのグループに対して対応する有効係数グループフラグは、同様にゼロに変更された。結果は、符号化器がこれらの3つのグループを符号化する必要はないであろうということである。それらのグループの中に見られた少しの係数をゼロにすることから生じるひずみより、RDOQ評価によって決定されるように、符号化されたビットの数を低減することにおけるコスト削減に重きが置かれている。
【0120】
一つの可能な実施形態において、RDOQプロセスは、現在のTUに対する最適な係数グループサイズを決定するために拡張されることができる。この実施形態において、プロセス400は複数回、繰り返され、各回は異なる係数グループサイズをとり、動作410は、変換係数が実際には0に設定されないように修正される。実質的に、各回において、この修正されたRDOQプロセスは、特定の係数グループサイズに対してRDコストを計算する。全ての回が完了した後に、RDOQは最少のRDコストを与える係数グループサイズを選択し、最後に、任意の変換係数を要求どおりに0に設定する。符号化器は、最適係数グループサイズの値をビットストリームの中に符号化することにより、その値は、復号器によって獲得され、使用されることができる。
【0121】
テストされる係数グループサイズは、変換ユニットサイズに基づき得る。例えば、32x32の変換ユニットは、グループサイズ8x8、4x4および2x2をテストし得る。テストされるグループが選択可能であり得、符号化器は、いくらのグループサイズが各変換ユニットサイズに対するテストであるかについて示し得る(例えば、シーケンスヘッダーの中に)。例えば、符号化器および復号器が16x16のTUに対するテストに同意したと仮定すると、修正されたRDOQは、2つの異なる係数グループサイズ:それぞれ1および0によって表示される4x4および2x2をテストする。修正されたRDOQが2x2が最適であると決定すると、符号化器は、significant_coefficient−group flagのビットストリームの前のビットストリームの中に、ビン(bin)1を符号化する。復号器は、significant_coefficient−group flagの前にこのビンを復号し、現在のTUに対する係数グループサイズが2x2であることを知る。
【0122】
別の実施形態において、RDOQプロセスは、マルチレベルスキャンを利用する。すなわち、L1/L0RDOQは、グループごとの方法によって実行され、その後に最後の位置を決定することが続く。特に、16x16TU、4x4の係数グループ、および4x4グループにわたるマルチレベルスキャンに対する例示的なRDOQプロセスは、次のとおりである。
【0123】
ステップ1:nCG=15と設定する(最後の係数グループから始まる)。
【0124】
ステップ2:マルチレベルスキャンによって特定されたとおりのグループ内のスキャン順序に従って、グループ位置nCGにおける係数グループの各係数に対してL0RDOQを実行する。
【0125】
ステップ3:ステップ2の後に結果として生じる係数グループが非ゼロ係数を有し、nCGが0よりも大きく、そして右隣りまたは下隣りのいずれかが、その有効係数グループフラグをゼロに設定した場合、係数グループに対してL1RDOQを実行する。すなわち、1)RDコストを計算して、L1フラグを現在の係数グループに対してゼロに設定する、2)コストが、ステップ2から生じるRDコストより小さい場合、係数グループにおけるすべての係数をゼロに設定し、そして、現在のグループの有効係数グループフラグを0に設定する。
【0127】
ステップ5:nCGが0と等しくなるまで、ステップ1〜4を反復する。
【0128】
ステップ6:最後の位置を決定し、RDコストを最小にする。
【0129】
図17は、この例をフローチャート形式で示しており、マルチレベルスキャン順序によるマルチレベル有効性写像のRDOQ符号化に対する例示的なプロセス450を示している。プロセス450は、最後の有効係数を含むグループに基づいて係数グループの数nCGを設定する第1の動作452を含む。動作454において、L0RDOQプロセスが、現在の係数グループ内の係数に対して実行される。すなわち、レートひずみ最適化が、現在のグループにおける各係数に対する最適な係数値を決定するために使用される。動作456において、非ゼロ係数が存在しない場合、プロセス450は、動作464へスキップし、スキャン順序における次の係数グループへ進み、そして、動作454へ戻り、次の係数グループに対してL0RDOQを実行する。プロセス450はまた、下隣りのグループおよび右隣りのグループが、両方が非ゼロである有効係数フラグを有する場合、動作464にスキップすることに留意されたい。
【0130】
動作456において、現在のグループに非ゼロ係数が存在する場合、プロセス450は、動作458へ進み、動作458においては、L1RDOQが、現在のグループに関して実行される。すなわち、もしL1フラグ(有効係数グループフラグ)がゼロに設定され、それによって、復号器における係数がすべてゼロとなる場合のRDコストが計算される。動作460で評価されるレート節減対ひずみが、より低いRDコストを生じる場合、次の動作462において、係数をゼロにし、そして、有効係数グループフラグがゼロに設定される。
(例示的シンタックス)
マルチレベル有効性写像を実装することに対する例示的シンタックスは、以下に提供される。この例示的シンタックスは、わずかに1つの可能な実装である。
【0131】
有効係数グループフラグは、
significant_coeffgroup_flag[xCG][yCG]と表示および規定され得る。
【0132】
現在の16x16または32x32の変換ブロック内の係数グループ位置(xCG,yCG)に対して、このフラグは、場所(xCG,yCG)における対応する係数グループが、非ゼロ係数を有するか否かを以下のように特定する:
significant_coeffgroup_flag[xCG][yCG]が0に等しい場合、場所(xCG,yCG)における係数グループの中の非ゼロ係数の数は、0に等しく設定され;
そうでない(significant_coeffgroup_flag[xCG][yCG]が1に等しい)場合、場所(xCG,yCG)における係数グループの中の非ゼロ係数の数は、以下に規定される特殊ケースを除いて非ゼロである。
【0133】
特殊ケースは、以下のように規定される:
1.スキャン順序の第1の係数グループ位置(0,0)におけるsignificant_coeffgroup_flag[0][0]は、1に等しいと推測される。
2.スキャン順序の係数グループ位置(xCG,yCG)におけるsignificant_coeffgroup_flag[xCG][yCG]は、
significant_coeffgroup_flag[xCG][yCG+1]=1、かつ、
significant_coeffgroup_flag[xCG+1][yCG]=1
の場合、1に等しいと推測される。
【0134】
significant_coeffgroup_flag[xCG][yCG]が存在しない場合、それは0に等しいと推測される。
【0135】
一部の実施形態において、significant_coeffgroup_flag[xCG][yCG]は、4x4および8x8の変換ブロックに適用されない。
【0136】
以下の擬似コードは、再構成量子化変換領域係数(残差)に対する、復号プロセス内でのマルチレベル有効性写像の1つの例示的実装を例示している。
【0137】
擬似コードの第1の部分は、最後の有効係数位置を復号することを含むことに留意する。(if(log2TrafoSize>3)によって示されるように)変換ユニットが16x16以上である場合、グループの数が決定され、そして、各係数グループにおける係数の数。第2のif−elseステートメントは、最後の有効係数を含む係数グループ内の有効係数フラグの復号を表している。
【0139】
【数1-2】
メインのif−elseステートメント内の第2のフォー−ループ(for−loop)は、グループスキャン順序でのグループ毎の処理を表す。そのループの第1の部分の内部において、2つの特殊ケースが、if−elseステートメントで取り扱われる。つまり、係数グループが左上のグループ(すなわち、nCG=0)である場合、または現在のグループの右および下のグループが、両方が非ゼロである有効係数グループフラグを有する場合、有効係数グループフラグは、1に設定される。これら2つのケースが適用されない場合(「else]クローズ(clause))、有効係数グループフラグが、ビットストリームから復号される(significant_coeffgroup_flag[xCG][yCG])。
【0140】
if−elseステートメントに続いて、さらなるif−elseステートメントが、有効係数グループフラグが非ゼロである場合、そのグループに対する有効係数フラグは、スキャン順序でビットストリームから復号されることを規定する。グループにおける最後の(左上の)有効係数フラグを除く全ては、ビットストリームから復号される。復号器は次に、そのグループに対して復号された有効係数フラグのうちの任意のものが非ゼロであるかどうか評価する。そうである場合、復号器は、そのグループに対して最後の(左上の)有効係数フラグを復号し、そうしない場合は、復号器は、それを1に設定する(なぜならば、復号器は、それが、ゼロではあり得ないことを知っているからである)。
【0141】
後に続く「else」ステートメントは、有効係数グループフラグがゼロである状況に適用される。この場合、そのグループに対する全ての有効係数フラグはゼロに設定される。
【0142】
上記の擬似コードは、
図16に関連して上に記述された例示的方法700の1つの例示的な実装を示す。有効係数グループフラグおよび(もしあれば)それらと対応する有効係数フラグは、この実施形態において、インタリーブされる。
図16における例示的な方法700と例示的な擬似コードとの間の相違は、例示的な方法700は、動作720において左上のグループの特殊ケースを取り扱い、一方、擬似コードは、そのグループに対する有効係数グループフラグを非ゼロに設定し、従って、動作714においてビットストリームからそのグループの有効係数フラグを復号することによって、動作708内の特殊ケースを取り扱う。
【0143】
別の実施形態において、係数グループサイズが固定され得る。固定された4x4の係数グループを使用する例示的シンタックスが、以下の擬似コードで開始される。
【0146】
【数2-3】
さらに別の実施形態において、有効係数グループフラグは、ビットストリーム内において、有効係数フラグとインタリーブされないことがあり得る。すなわち、有効係数グループフラグは、ビットストリームにおいて一緒に符号化され、そして、有効係数フラグは、スキャン順序でグループごとに、ビットストリームにおいてそれらの後に続く。非インタリーブ実施形態に対応する例示的シンタックスが、以下の擬似コードで開始される。
【0149】
【数3-3】
ここで、
図12を参照すると、
図12は、符号化器900の例示的実施形態の簡略ブロック図を示している。符号化器900は、プロセッサ902、メモリ904および符号化アプリケーション906を含む。符号化アプリケーション906は、メモリ904に記憶され、およびプロセッサ902を構成するための命令を含むコンピュータプログラムまたはアプリケーションを含むことにより、本明細書に記述されるような動作を実行し得る。例えば、符号化アプリケーション906は、本明細書に記述されるマルチレベル有効性写像プロセスに従って、ビットストリームを符号化および出力し得る。符号化アプリケーション906は、コンピュータ可読媒体、例えば、コンパクトディスク、フラッシュメモリデバイス、ランダムアクセスメモリ、ハードディスクなどに記憶され得ることが理解されるであろう。
【0150】
ここで、
図13を参照すると、
図13は、復号器1000の例示的実施例の簡略ブロック図を示している。復号器1000は、プロセッサ1002、メモリ1004および復号アプリケーション1006を含む。復号アプリケーション1006は、メモリ1004に記憶され、およびプロセッサ1002を構成するための命令を含むコンピュータプログラムまたはアプリケーションを含むことにより、本明細書に記述されるそれらのような動作を実行し得る。復号アプリケーション1006は、本明細書に記述されるように、マルチレベル有効性写像に基づいて残差を再構成するように構成されるエントロピー復号器を含み得る。復号アプリケーション1006は、コンピュータ可読媒体、例えば、コンパクトディスク、フラッシュメモリデバイス、ランダムアクセスメモリ、ハードディスクなどに記憶され得ることが理解されるであろう。
【0151】
本願に従う復号器および/または符号化器は、いくつかのコンピューティング装置、例えば、限定するものではないが、サーバー、適切にプログラムされた汎用コンピュータ、オーディオ/動画像符号化および再生装置、セットトップ・テレビ・ボックス、テレビ放送装置およびモバイル装置などに実装され得る。復号器または符号化器は、プロセッサを本明細書に記述される機能を実行するように構成するための命令を含んでいるソフトウェアとして実装され得る。ソフトウェア命令は、CD、RAM、ROM、Flashメモリなどを含む任意の好適な固定コンピュータ可読メモリに記憶され得る。
【0152】
本明細書に記述される符号化器およびモジュール、ルーチン、プロセス、スレッド、または符号化器を構成するための記述された方法/プロセスを実装する他のソフトウェアコンポーネントが、標準的なコンピュータプログラミング技術または言語を使用して実現され得ることが理解されるであろう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング規則、データ構造、他のそのような実装詳細に限定されない。当業者であれば、記述されたプロセスは、揮発性または非揮発性記憶装置に記憶されるコンピュータ実行可能コードの一部として、特定用途向けチップ(ASIC)の一部などとして実装され得ることを認識するであろう。
【0153】
記述された実施形態の特定の適合および修正がなされることができる。したがって、上記の議論された実施形態は、例示的であって限定的ではないと考えられる。