本願は、2018年9月10日に中国国家知識産権局に出願された「ビデオ復号化方法及びビデオ・デコーダ」と題する中国特許出願第201811053068.0号に対する優先権を主張しており、参照によりその全体が本願に援用される。
技術分野
本願の実施態様は、一般に、ビデオ・コーディングの分野に関連し、より具体的にはビデオ復号化方法及びビデオ・デコーダに関連する。
背景
ビデオ・コーディング(ビデオ符号化及び復号化)は、幅広いデジタル・ビデオ・アプリケーションにおいて、例えば放送用デジタルTV、インターネットやモバイル・ネットワークを介したビデオ伝送、ビデオ・チャットやビデオ会議のようなリアルタイム会話アプリケーション、DVD及びブルーレイ・ディスク、ビデオ・コンテンツ捕捉編集のシステム及びカムコーダのセキュリティ・アプリケーションにおいて使用される。
1990年のH.261規格におけるブロック・ベースのハイブリッド・ビデオ・コーディング・モードの開発により、新たなビデオ・コーディング技術及びツールが開発されており、新たなビデオ・コーディング規格の基礎を築いている。その他のビデオ・コーディング規格は、MPEG-1ビデオ、MPEG-2ビデオ、ITU-T H.262/MPEG-2、ITU-T H.263、ITU-T H.264/MPEG-4 Part10:アドバンスト・ビデオ・コーディング(Advanced Video Coding,AVC)、ITU-T H.265/高効率ビデオ・コーディング(High Efficiency Video Coding,HEVC)、及びそのような規格の拡張、例えば、そのような規格のスケーラビリティ及び/又は3D(三次元)拡張を含む。ビデオの制作及び利用が益々普及するにつれて、ビデオ・トラフィックは、通信ネットワーク及びデータ・ストレージにとって最大の負担になっている。従って、多くのビデオ・コーディング規格の目的の1つは、以前の規格と比較して、画質を犠牲にすることなくビット・レートを低減することである。最新の高効率ビデオ・コーディング(high efficiency video coding,HEVC)は、画質を犠牲にすることなく、AVCの約2倍でビデオを圧縮することが可能であるが、HEVCと比較してビデオを更に圧縮するための新たな技術に対する緊急のニーズが依然として存在する。
本願の実施形態は、コンテキストを記憶するためにエンコーダ又はデコーダにより必要とされるスペースを減らすビデオ復号化方法及びビデオ・デコーダを提供する。
上記及び他の目的は独立請求項の対象事項により達成される。他の実装は従属請求項、明細書、及び添付図面から明らかである。
第1態様によれば、ビデオ復号化方法が提供され、ビデオ復号化方法は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するステップであって、現在ブロックにおけるシンタックス要素1に関するエントロピー復号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー復号化はコンテキスト・モデルを使用することにより完了する、ステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するステップと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するステップとを含む。
現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、デコーダは、エントロピー復号化を実行する際にコンテキスト・モデルを確認する必要がなく、デコーダによりビデオ復号化を実行する復号化効率を改善する。更に、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とするので、ビデオ・デコーダのより少ないストレージ空間が占有されることが可能である。
第2態様によれば、ビデオ復号化方法が提供され、ビデオ復号化方法は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するステップと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するステップとを含む。
現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2について唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
第2態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量は2又は3である。
第2態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルが事前に設定されたコンテキスト・モデル・セットから決定されることは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスを決定することを含み、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルを示すために使用され、又は
現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルが事前に設定されたコンテキスト・モデル・セットから決定されることは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスを決定することを含み、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルを示すために使用される。
第2態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が3である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計である。
第2態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が2である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果である。
第1態様又は第2態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素1は、affine_merge_flagであり、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用され、又は
現在ブロックにおけるシンタックス要素1は、subblock_merge_flagであり、サブブロック・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用される。
第3態様によれば、ビデオ復号化方法が提供され、ビデオ復号化方法は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含む、ステップと、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するステップと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するステップとを含む。
現在ブロックにおけるシンタックス要素3及びシンタックス要素4は1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素3及びシンタックス要素4について唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
第3態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットは、5つのコンテキスト・モデルを含む。
第3態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、affine_merge_idxであり、現在ブロックのアフィン・マージ候補リストのインデックス値を示すために使用され、又は
現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、subblock_merge_idxであり、サブブロック・マージ候補リストのインデックス値を示すために使用される。
第4態様によれば、ビデオ復号化方法が提供され、ビデオ復号化方法は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値とに基づいて、現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値を決定するステップと、現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値に基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するステップと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するステップとを含む。
第4態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素1は、affine_merge_flagであり、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用され、又は
現在ブロックにおけるシンタックス要素1は、subblock_merge_flagであり、サブブロック・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用される。
第4態様に関し、可能な実装において、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値とに基づいて、現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値を決定するステップは、
現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値を、以下の論理表現:
Context index = (condL && availableL) + (condA && availableA)
に従って決定するステップを含み、
condL = syntax element 1 [x0−1][y0] | syntax element 2 [x0−1][y0]
であり、syntax element 1 [x0−1][y0]は、左隣接ブロックにおけるシンタックス要素1の値を示し、syntax element 2 [x0−1][y0]は、左隣接ブロックにおけるシンタックス要素2の前記値を示し、
condA = syntax element 1 [x0][y0−1] | syntax element 2 [x0][y0−1]
であり、syntax element 1 [x0][y0−1]は、上隣接ブロックにおけるシンタックス要素1の値を示し、syntax element 2 [x0][y0−1]は、上隣接ブロックにおけるシンタックス要素2の値を示し、
availableLは、左隣接ブロックが利用可能であるか否かを示し、availableAは、上隣接ブロックが利用可能であるか否かを示す。
第5態様によれば、ビデオ・デコーダが提供され、ビデオ・デコーダは、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成されたエントロピー復号化ユニットであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー復号化ユニットは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値とに基づいて、現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値を決定し、現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値に基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成されているエントロピー復号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成された予測処理ユニットと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成された再構成ユニットとを含む。
第5態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素1は、affine_merge_flagであり、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用され、又は
現在ブロックにおけるシンタックス要素1は、subblock_merge_flagであり、サブブロック・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用される。
第5態様に関し、可能な実装において、可能な実装において、エントロピー復号化ユニットは、具体的には、
現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値を、以下の論理表現:
Context index = (condL && availableL) + (condA && availableA)
に従って決定するように構成されており、
condL = syntax element 1 [x0−1][y0] | syntax element 2 [x0−1][y0]
であり、syntax element 1 [x0−1][y0]は、左隣接ブロックにおけるシンタックス要素1の値を示し、syntax element 2 [x0−1][y0]は、左隣接ブロックにおけるシンタックス要素2の値を示し、
condA = syntax element 1 [x0][y0−1] | syntax element 2 [x0][y0−1]
であり、syntax element 1 [x0][y0−1]は、上隣接ブロックにおけるシンタックス要素1の値を示し、syntax element 2 [x0][y0−1]は、上隣接ブロックにおけるシンタックス要素2の前記値を示し、
availableLは、左隣接ブロックが利用可能であるか否かを示し、availableAは、上隣接ブロックが利用可能であるか否かを示す。
第6態様によれば、ビデオ・デコーダが提供され、ビデオ・デコーダは、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成されたエントロピー復号化ユニットであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー復号化ユニットは、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成され、現在ブロックにおけるシンタックス要素1に関するエントロピー復号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー復号化はコンテキスト・モデルを使用することにより完了する、エントロピー復号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成された予測処理ユニットと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成された再構成ユニットとを含む。
第7態様によれば、ビデオ・デコーダが提供され、ビデオ・デコーダは、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成されたエントロピー復号化ユニットであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー復号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー復号化ユニットは、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成されているエントロピー復号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成された予測処理ユニットと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成された再構成ユニットとを含む。
第7態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量は2又は3である。
第7態様に関し、可能な実装において、エントロピー復号化ユニットは、具体的には、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスを決定するように構成され、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルを示すために使用され、又は
エントロピー復号化ユニットは、具体的には、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスを決定するように構成され、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルを示すために使用される。
第7態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が3である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計である。
第7態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が2である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果である。
第6態様又は第7態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素1は、affine_merge_flagであり、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用され、又は
現在ブロックにおけるシンタックス要素1は、subblock_merge_flagであり、サブブロック・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用される。
第8態様によれば、ビデオ・デコーダが提供され、ビデオ・デコーダは、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成されたエントロピー復号化ユニットであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含み、エントロピー復号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー復号化ユニットは、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成されているエントロピー復号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成された予測処理ユニットと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成された再構成ユニットとを含む。
第8態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットは、5つのコンテキスト・モデルを含む。
第8態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、affine_merge_idxであり、現在ブロックのアフィン・マージ候補リストのインデックス値を示すために使用され、又は
現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、subblock_merge_idxであり、サブブロック・マージ候補リストのインデックス値を示すために使用される。
第9態様によれば、符号化方法が提供され、符号化方法は、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化が実行される場合に、現在ブロックにおけるシンタックス要素1に関するエントロピー符号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー符号化はコンテキスト・モデルを使用することにより完了する、ステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第1態様を参照されたい。
第10態様によれば、符号化方法が提供され、符号化方法は、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー符号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第2態様を参照されたい。
第11態様によれば、符号化方法が提供され、符号化方法は、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含む、ステップと、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー符号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第3態様を参照されたい。
第12態様によれば、ビデオ・エンコーダが提供され、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニットであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されており、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化が実行される場合に、現在ブロックにおけるシンタックス要素1に関するエントロピー符号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー符号化はコンテキスト・モデルを使用することにより完了する、エントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力とを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第4態様を参照されたい。
第13態様によれば、ビデオ・エンコーダが提供され、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニットであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー符号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されているエントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力とを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第5態様を参照されたい。
第14態様によれば、ビデオ・エンコーダが提供され、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニットであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含み、エントロピー符号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されているエントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力とを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第6態様を参照されたい。
第15態様によれば、本発明は、プロセッサ及びメモリを含む、ビデオ・ストリームを復号化する装置に関連する。メモリは命令を記憶し、命令は、第1態様、第2態様、第3態様、若しくは第4態様、又はそれらの任意の可能な実装における方法をプロセッサが実行することを可能にする。
第16態様によれば、本発明は、プロセッサ及びメモリを含む、ビデオ・ストリームを復号化する装置に関連する。メモリは命令を記憶し、命令は、第7態様、第8態様、若しくは第9態様、又はそれらの任意の可能な実装における方法をプロセッサが実行することを可能にする。
第17態様によれば、コンピュータ読み取り可能な記憶媒体が提案される。コンピュータ読み取り可能な記憶媒体は命令を記憶し、命令が実行されると、1つ以上のプロセッサはビデオ・データを符号化することが可能である。命令は、第1態様、第2態様、第3態様、第4態様、第7態様、第8態様、若しくは第9態様、又はそれらの任意の可能な実装における方法を1つ以上のプロセッサが実行することを可能にする。
第18態様によれば、本発明はプログラム・コードを含むコンピュータ・プログラムに関連する。プログラム・コードがコンピュータ上で実行されると、第1態様、第2態様、第3態様、第4態様、第7態様、第8態様、若しくは第9態様、又はそれらの任意の可能な実装における方法が実行される。
1つ以上の実施形態の詳細が添付図面及び以下の説明において記載されている。他の特徴、目的、及び利点は、明細書、図面、及び特許請求の範囲から明らかであろう。
本願の実施態様又は背景における技術的解決策をより明確に説明するために、以下、本願の実施態様又は背景を説明するために必要とされる添付図面を簡単に説明する。
本発明の実施形態を実装するためのビデオ符号化システムの一例のブロック図である。
本発明の実施形態を実装するためのビデオ・エンコーダの例示的な構造を示すブロック図である。
本発明の実施形態を実装するためのビデオ・デコーダの例示的な構造を示すブロック図である。
図2のエンコーダ20と図3のデコーダ30とを含むビデオ・コーディング・システムを示す図である。
他の符号化装置又は復号化装置の一例を示すブロック図である。
一実施形態による現在ブロックの空間ドメイン及び時間ドメインにおける候補の動き情報の位置を示す概略図である。
一実施形態による現在ブロックと複数の隣接位置ブロックとの位置を示す概略図である。
一実施形態による構築制御ポイント動きベクトルを予測する方法を示すフローチャートである。
一実施形態による構築制御ポイント動きベクトルを予測する方法を示すフローチャートである。
一実施形態によるインター予測方法を示すフローチャートである。
一実施形態による構築制御ポイント動きベクトルを予測する方法を示すフローチャートである。
一実施形態による動き補償ユニットの中心点に基づく動き補償ユニットの位置を示す概略図である。
一実施形態によるビデオ復号化方法を示すフローチャートである。
一実施形態に係るビデオ復号化方法を示すフローチャートである。
一実施形態によるビデオ復号化方法を示すフローチャートである。
以下において、特に指定されない限り、同一の参照記号は同一の又は少なくとも機能的に同等な特徴を表す。
以下の説明において、本開示の一部を成し、例示として本発明の実施形態の特定の態様又は本発明の実施形態が使用される可能性のある特定の態様、を示す添付図面に対する参照が行われる。本発明の実施形態は、他の態様で使用される可能性があり、添付図面に示されていない構造的又は論理的な変更を含む可能性があることは理解されるべきである。従って、以下の詳細な説明は、限定としては解釈されないものとし、本発明の範囲は、添付の特許請求の範囲によって定められる。
例えば、説明される方法に関して開示される内容は、方法を実行するように構成された対応するデバイス又はシステムにも適用される可能性があり、その逆も可能であることが理解されるべきである。例えば、1つ以上の特定の方法ステップが説明される場合、対応するデバイスは、説明された1つ以上の方法ステップを実行するための機能ユニットのような1つ以上のユニット(例えば、1つ以上のステップを実行する1つのユニット、又は複数のステップのうちの1つ以上を各々が実行する複数のユニット)を、たとえそのような1つ以上のユニットが添付図面において明示的に説明も図示もされていなかったとしても、含む可能性がある。更に、例えば、機能ユニットのような1つ以上のユニットに基づいて、特定の装置が説明される場合、対応する方法は、1つ以上のユニットの機能を実行するための1つのステップ(例えば、1つ以上のユニットの機能を実行するための1つのステップ、又は複数のユニットのうちの1つ以上の機能を実行するために各々が使用される複数のステップ)を、たとえそのような1つ以上のステップが添付図面において明示的に説明も図示もされていなかったとしても、含む可能性がある。更に、本明細書で説明される様々な例示的な実施形態及び/又は態様の特徴は、特に指定されない限り、互いに組み合わせられる可能性があることは理解されるべきである。
ビデオ・コーディングは、通常、ビデオ又はビデオ・シーケンスを形成する一連のピクチャを処理する。ビデオ・コーディングの分野において、「ピクチャ(picture)」、「フレーム(frame)」及び「画像(image)」という用語は同義語として使用される可能性がある。本願(又は本開示)で使用されるビデオ・コーディングは、ビデオ符号化又はビデオ復号化を示す。ビデオ符号化は、ソース側で実行され、通常、ビデオ・ピクチャを表すのに必要なデータ量を減らすために(より効率的な記憶及び/又は伝送のために)オリジナル・ビデオ・ピクチャを(例えば、圧縮により)処理することを含む。ビデオ復号化は、宛先側で実行され、通常、ビデオ・ピクチャを再構成するために、エンコーダに関連する逆の処理を含む。実施形態におけるビデオ・ピクチャ(又は、以下で説明されるピクチャとして一般的に言及される)の「コーディング」は、ビデオ・シーケンスに関する「符号化」又は「復号化」として理解されるべきである。符号化及び復号化の組み合わせもまた、コーディング(符号化及び復号化)と言及される。
ロスレス・ビデオ・コーディングの場合、オリジナル・ビデオ・ピクチャを再構成することが可能であり、即ち、再構成されたビデオ・ピクチャはオリジナル・ビデオ・ピクチャと同じ質を有する(記憶及び伝送の間に、伝送ロス又は他のデータ・ロスは発生しないことを仮定している)。ロスレスでないビデオ・コーディングの場合、ビデオ・ピクチャを表現するために必要なデータ量を減らすために、量子化などによって更なる圧縮が実行され、ビデオ・ピクチャはデコーダ側で完全には再構成することができず、即ち、再構成されたビデオ・ピクチャの質は、オリジナル・ビデオ・ピクチャのものより劣る。
幾つかのH.261ビデオ・コーディング規格は、「ロスレスでないハイブリッド・ビデオ・コーディング」に関連している(即ち、サンプル・ドメインにおける空間的及び時間的な予測は、変換ドメインにおける量子化を適用するために2D変換コーディングと組み合わされる)。ビデオ・シーケンスの各ピクチャは、通常、重複しないブロックのセットに分割され、通常、ブロック・レベルでコーディングが実行される。具体的には、エンコーダ側において、ビデオは、通常、ブロック(ビデオ・ブロック)レベルで処理される、即ち符号化される。例えば、予測ブロックは、空間(イントラ・ピクチャ)予測及び時間(インター・ピクチャ)予測により生成され、予測ブロックは、残差ブロックを取得するために、現在ブロック(現在処理中の又は処理されるべきブロック)から減算され、残差ブロックは、変換ドメインにおいて変換され、量子化されて、伝送されるべきデータ量を減少させる(圧縮される)。デコーダ側では、エンコーダに対する逆処理が、符号化又は圧縮されたブロックに適用され、表現のために現在ブロックを再構成する。更に、エンコーダは、デコーダの処理ループを繰り返し、その結果、エンコーダ及びデコーダは、以後のブロックを処理、即ち符号化するために、同じ予測(例えば、イントラ予測及びインター予測)及び/又は再構成を生成する。
本明細書で使用されるように、「ブロック」という用語は、ピクチャ又はフレームの一部であってもよい。説明を容易にするために、ITU−Tビデオ・コーディング・エキスパート・グループ(Video Coding Experts Group,VCEG)及びISO/IEC動画エキスパート・グループ(Motion Picture Experts Group,MPEG)のビデオ・コーディングに関する共同研究チーム(Joint Collaboration Team on Video Coding,JCT-VC)によって開発された汎用ビデオ・コーディング(VVC:Versatile Video Coding)又は高効率ビデオ・コーディング(High-Efficiency Video Coding,HEVC)を参照して、本発明の実施形態を説明する。当業者は、本発明の実施形態がHEVC又はVVCに限定されず、ブロックはCU、PU又はTUであってもよいことを理解する。HEVCにおいて、CTUは、コーディング・ツリーとして示される四分木構造を使用することによって、複数のCUに分割される。ピクチャ領域がCUレベルでインター・ピクチャ(時間的)又はイントラ・ピクチャ(空間的)予測によりコーディングされるかどうかが決定される。各CUは更に、PU分割タイプに基づいて、1つ、2つ、又は4つのPUに分割されてもよい。同じ予測プロセスが1つのPU内で適用され、関連情報はPUに基づいてデコーダに送信される。PU分割タイプに基づいて予測プロセスを適用することにより、残差ブロックを取得した後に、CUは、CUに使用されるコーディング・ツリーに類似する別の四分木構造に基づいて、変換ユニット(transform unit,TU)に分割される可能性がある。最新のビデオ圧縮技術の開発では、フレームは、コーディング・ブロックを分割するために、四分木プラス二分木(Quad-tree and binary tree,QTBT)により分割される。QTBTブロック構造では、CUは正方形又は長方形であってもよい。VVCでは、コーディング・ツリー・ユニット(coding tree unit,CTU)は先ず四分木構造を使用することにより分割され、四分木リーフ・ノードは二分木構造を使用することにより更に分割される。二分木リーフ・ノードはコーディング・ユニット(CU)と言及され、その分割は、他の如何なる分割もなしに予測及び変換処理のために使用される。これは、CU、PU、TUがQTBTコーディング・ブロック構造において同じブロック・サイズを有することを意味する。更に、多重分割、例えばトリプル・ツリー分割がQTBTブロック構造とともに使用される。
以下、エンコーダ20、デコーダ30、符号化システム10、復号化システム40の実施形態を、(図10に基づいて本発明の実施形態をより詳細に説明する前に)図1−図4に基づいて説明する。
図1は、例示的な符号化システム10、例えば本願(本開示)の技術を使用することが可能なビデオ符号化システム10を示す概念的又は概略的なブロック図である。ビデオ符号化システム10内のエンコーダ20(例えば、ビデオ・エンコーダ20)及びデコーダ30(例えば、ビデオ・デコーダ30)は、本願で説明される種々の例に従って...(分割/イントラ予測/...)のための技術を実行するように構成されている可能性があるデバイス例を表す。図1に示すように、符号化システム10は、符号化されたピクチャ13のような符号化されたデータ13を、符号化されたデータ13等を復号化する宛先デバイスへ提供するように構成されたソース・デバイス12を含む。
ソース・デバイス12は、エンコーダ20を含み、追加的に又はオプションとして、ピクチャ・ソース16、例えばピクチャ前処理ユニット18のような前処理ユニット18、及び、通信インターフェース又は通信ユニット22を含む可能性がある。
ビデオ・ソース16は、実世界のピクチャ等を捕捉するように構成された任意の種類のピクチャ捕捉デバイス、及び/又は、ピクチャ又はコメントを生成する任意の種類のデバイス(スクリーン・コンテンツ符号化の場合には、スクリーン上の何らかのテキストもまた、符号化対象のピクチャ又は画像の一部と考えられる)、例えば、コンピュータ・アニメーション・ピクチャを生成するように構成されたコンピュータ・グラフィックス処理ユニット、又は、実世界のピクチャ又はコンピュータ・アニメーション・ピクチャを取得及び/又は提供するように構成された任意の種類のデバイス(例えば、スクリーン・コンテンツ又はバーチャル・リアリティ(virtual reality,VR)ピクチャ)、及び/又は、それらの任意の組み合わせ(例えば、拡張現実(augmented reality,AR)ピクチャ)を含んでもよいし、又はそれらであってもよい。
(デジタル)ピクチャは、ルミナンス値を有するサンプルの2次元アレイ又はマトリックスであるか、又はそのように考えられてもよい。アレイ中のサンプルは、ピクセル(pixel)(ピクチャ要素(picture element)の短縮形)又はペルと呼ばれてもよい。アレイ又はピクチャの水平及び垂直方向(又は軸)におけるサンプルの量は、ピクチャのサイズ及び/又は解像度を規定する。色の表現には、通常、3つの色成分が使用され、即ち、ピクチャは、3つのサンプル・アレイとして表現されてもよいし、又はそれを含んでもよい。RBGフォーマット又は色空間において、ピクチャは対応する赤、緑、及び青のサンプル・アレイを含む。しかしながら、ビデオ・コーディングにおいては、各サンプルは、通常、ルミナンス/クロミナンス・フォーマット又は色空間で表現され、例えば、YCbCrフォーマットのピクチャは、Yで示されるルミナンス成分(時にはLで示される)とCb及びCrで示される2つのクロミナンス成分を含む。ルミナンス(略称、ルマ)成分Yは、ルミナンス又はグレー・レベル強度を示し(例えば、両者はグレー・スケール・ピクチャでは同じである)、2つのクロミナンス成分(略称、クロマ)Cb及びCrはクロミナンス又は色情報成分を表す。従って、YCbCrフォーマットにおけるピクチャは、ルミナンス・サンプル値(Y)のルミナンス・サンプル・アレイと、クロミナンス値(Cb及びCr)の2つのクロミナンス・サンプル・アレイとを含む。RGBフォーマットのピクチャは、YCbCrフォーマットのピクチャにコンバート又は変換されることが可能であり、その逆も可能である。このプロセスは、色変換又はコンバージョンとも呼ばれる。ピクチャがモノクロである場合、そのピクチャはルミナンス・サンプル・アレイのみを含む可能性がある。
ピクチャ・ソース16(例えば、ビデオ・ソース16)は、例えば、ピクチャを捕捉するように構成されたカメラ、例えば、事前に捕捉された若しくは生成したピクチャを包含又は記憶するピクチャ・メモリのようなメモリ、及び/又はピクチャを取得若しくは受信するための任意のタイプの(内部又は外部)インターフェースであってもよい。カメラは、例えば、ソース・デバイスに一体化されたローカル・カメラ又は一体化カメラであってもよく、メモリは、ソース・デバイスに一体化されたローカル・メモリ又は一体化メモリであってもよい。インターフェースは、例えば、外部ビデオ・ソースからピクチャを受信するための外部インターフェースであってもよい。外部ビデオ・ソースは、例えば、カメラ、外部メモリ、又は外部ピクチャ生成デバイスのような外部ピクチャ捕捉デバイスである。外部ピクチャ生成デバイスは、例えば、外部コンピュータ・グラフィックス処理ユニット、コンピュータ、又はサーバーである。インターフェースは、任意のプロプライエタリ又は標準化されたインターフェース・プロトコルに従う任意のタイプのインターフェース、例えば有線又は無線インターフェース又は光インターフェースであるとすることが可能である。ピクチャ・データ17を取得するためのインターフェースは、通信インターフェース22と同じインターフェースであってもよいし、又は通信インターフェース22の一部であってもよい。
前処理ユニット18及び前処理ユニット18により実行される処理とは異なり、ピクチャ17及びピクチャ・データ17(例えば、ビデオ・データ16)はまた、オリジナル・ピクチャ17又はオリジナル・ピクチャ・データ17と呼ばれてもよい。
前処理ユニット18は、(オリジナル)ピクチャ・データ17を受信し、ピクチャ・データ17に関して前処理を実行して、前処理されたピクチャ19又は前処理されたピクチャ・データ19を取得するように構成されている。例えば、前処理ユニット18によって実行される前処理は、トリミング、カラー・フォーマット変換(例えば、RGBからYCbCrへ)、色補正、又はノイズ低減を含む可能性がある。前処理ユニット18はオプションの構成要素であってもよいことは理解されるであろう。
エンコーダ20(例えば、ビデオ・エンコーダ20)は、前処理されたピクチャ・データ19を受信し、符号化されたピクチャ・データ21を提供するように構成される(詳細は、例えば以下において図2又は図4に基づいて更に説明される)。一例では、エンコーダ20は、ピクチャを符号化するように構成されることが可能である。
ソース・デバイス12の通信インターフェース22は、符号化されたピクチャ・データ21を受信し、符号化されたピクチャ・データ21を他のデバイス、例えば宛先デバイス14又は任意の他のデバイスへ、記憶又は直接的な再構成のために送信するように構成されることが可能であり、又は符号化されたピクチャ・データ13を相応して記憶し、及び/又は符号化されたデータ13を他のデバイスに送信する前に、符号化されたピクチャ・データ21を処理するように構成されることが可能である。他のデバイスは、例えば宛先デバイス14、又は復号化又は記憶のために使用される他のデバイスである。
宛先デバイス14は、デコーダ30(例えば、ビデオ・デコーダ30)を含み、追加的に又はオプションとして、通信インターフェース又は通信ユニット28、後処理ユニット32、及び表示デバイス34を含む可能性がある。
例えば、宛先デバイス14の通信インターフェース28は、符号化されたピクチャ・データ21又は符号化されたデータ13を、ソース・デバイス12又は他の任意のソースから直接的に受信するように構成される。任意の他のソースは、例えば記憶デバイスであり、記憶デバイスは、例えば符号化されたピクチャ・データの記憶デバイスである。
通信インターフェース22及び通信インターフェース28は、ソース・デバイス12と宛先デバイス14との間の直接的な通信リンク、又は任意のタイプのネットワークを介して、符号化されたピクチャ・データ21又は符号化されたデータ13を送信又は受信するように構成されることが可能である。直接的な通信リンクは、例えば、直接的な有線又は無線の接続であり、任意の種類のネットワークが、例えば有線又は無線ネットワーク若しくはそれらの任意の組み合わせ、又は任意の種類の私的なネットワーク若しくは公のネットワーク、又はそれらの任意の組み合わせである。
通信インターフェース22は、例えば、符号化されたピクチャ・データ21を、通信リンク又は通信ネットワークでの伝送のためのパケットのような適切なフォーマットにカプセル化するように構成されることが可能である。
通信インターフェース22の対応する部分としての通信インターフェース28は、符号化されたピクチャ・データ21等を取得するために符号化されたデータ13を非カプセル化するように構成されることが可能である。
通信インターフェース22及び通信インターフェース28の両方は、一方向通信インターフェース、例えば図1の符号化されたピクチャ・データ13のために使用されるソース・デバイス12から宛先デバイス14へ向かう矢印として構成されることが可能であり、又は双方向通信インターフェースとして構成されることが可能であり、例えば接続を確立するためにメッセージを送信及び受信し、通信リンク及び/又は符号化されたピクチャ・データ伝送のようなデータ伝送に関連する他の任意の情報を確認及び交換するように構成されることが可能である。
デコーダ30は、符号化されたピクチャ・データ21を受信し、復号化されたピクチャ・データ31又は復号化されたピクチャ31を提供するように構成される(詳細は、例えば図3又は図5に基づいて、以下において更に説明される)。
宛先デバイス14の後処理プロセッサ32は、復号化されたピクチャ・データ131のような復号化されたピクチャ・データ31(再構成されたピクチャ・データとも呼ばれる)を後処理して、後処理されたピクチャ33のような後処理されたピクチャ・データ33を取得するように構成される。後処理ユニット32によって実行される後処理は、例えばカラー・フォーマット変換(例えば、YCbCrからRGBへ)、色補正、トリミング、リサンプリング、又は表示デバイス34による表示のための復号化されたピクチャ・データ31を準備するための他の任意の処理を含む可能性がある。
宛先デバイス14の表示デバイス34は、後処理ピクチャ・データ33を受信して、ピクチャをユーザー、ビューア等に表示するように構成されている。表示デバイス34は、再構成されたピクチャを提示するように構成された任意のタイプのディスプレイ、例えば一体化された又は外部のディスプレイ又はモニタであってもよいし、又はそれらを含んでもよい。例えば、ディスプレイは、液晶ディスプレイ(liquid crystal display,LCD)、有機発光ダイオード(organic light emitting diode,OLED)ディスプレイ、プラズマ・ディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オン・シリコン(liquid crystal on silicon,LCoS)ディスプレイ、デジタル光プロセッサ(digital light processor,DLP)、又は任意の他のタイプのディスプレイを含む可能性がある。
図1は、ソース・デバイス12と宛先デバイス14とを別々のデバイスとして描いているが、デバイスの実施形態はまた、ソース・デバイス12と宛先デバイス14の両方、又はソース・デバイス12の機能と宛先デバイス14の機能の両方、即ち、ソース・デバイス12又は対応する機能と、宛先デバイス14又は対応する機能とを含む可能性がある。そのような実施形態では、ソース・デバイス12又は対応する機能と宛先デバイス14又は対応する機能とは、同じハードウェア及び/又はソフトウェア、別個のハードウェア及び/又はソフトウェア、又はそれらの任意の組み合わせを使用することにより実装されもよい。
図1に示すソース・デバイス12及び/又は宛先デバイス14の機能/様々なユニットの機能又は機能の存在及び(正確な)分割は、実際のデバイス及び用途によって異なる可能性があることを、当業者は明細書に基づいて容易に理解する。
エンコーダ20(例えば、ビデオ・エンコーダ20)及びデコーダ30(例えば、ビデオ・デコーダ30)は、それぞれ、種々の適切な回路、例えば1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(digital signal processor,DSP)、特定用途向け集積回路(application-specific integrated circuit,ASIC)、フィールド・プログラマブル・ゲート・アレイ(field-programmable gate array,FPGA)、ディスクリート・ロジック、ハードウェア、又はそれらの任意の組み合わせのうちの任意の1つとして実現されることが可能性である。技術がソフトウェアで部分的に実装される場合、デバイスは、ソフトウェア命令を、適切な非一時的なコンピュータ読み取り可能な記憶媒体に記憶することが可能であり、本開示の技術を実行するために1つ以上のプロセッサを使用することによって、ハードウェアにおいて命令を実行することが可能である。前述の任意の内容(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組み合わせ等を含む)が、1つ以上のプロセッサと考えられてもよい。ビデオ・エンコーダ20及びビデオ・デコーダ30は、それぞれ、1つ以上のエンコーダ又はデコーダに含まれる可能性があり、エンコーダ又はデコーダの任意の1つが、対応するデバイス内の組み合わされたエンコーダ/デコーダ(コーデック)の一部として統合される可能性がある。
ソース・デバイス12は、ビデオ符号化デバイス又はビデオ符号化装置と言及されてもよい。宛先デバイス14は、ビデオ復号化デバイス又はビデオ復号化装置と言及されてもよい。ソース・デバイス12及び宛先デバイス14は、それぞれ、ビデオ符号化デバイス又はビデオ符号化装置の一例とすることが可能である。
ソース・デバイス12及び宛先デバイス14は、それぞれ、任意のタイプのハンドヘルド又はステーショナリ・デバイスを含む様々なデバイスのうちの任意の1つ、例えば、ノートブック又はラップトップ・コンピュータ、携帯電話、スマートフォン、タブレット又はタブレット・コンピュータ、ビデオ・カメラ、デスクトップ・コンピュータ、セット・トップ・ボックス、テレビ、表示デバイス、デジタル・メディア・プレーヤ、ビデオ・ゲーム・コンソール、ビデオ・ストリーミング伝送デバイス(コンテンツ・サービス・サーバー又はコンテンツ配信サーバー等)、放送受信デバイス、又は放送送信デバイスである可能性があり、任意のタイプのオペレーティング・システムを使用してもよいし、又は使用しなくてもよい。
場合によっては、ソース・デバイス12及び宛先デバイス14は無線通信用に装備されてもよい。従って、ソース・デバイス12及び宛先デバイス14は、無線通信デバイスであってもよい。
場合によっては、図1に示すビデオ符号化システム10は単なる一例に過ぎず、本願の技術は、符号化デバイスと復号化デバイスとの間で如何なるデータ通信も含む必要のないビデオ・コーディング設定(例えば、ビデオ符号化又はビデオ復号化)に適用される可能性がある。他の例において、データは、ローカル・メモリから検索されてもよいし、ネットワークを介してストリーミング等されてもよい。ビデオ符号化デバイスは、データを符号化し、そのデータをメモリに格納することが可能であり、及び/又はビデオ復号化デバイスは、データをメモリから検索し、そのデータを復号化することが可能である。幾つかの例では、符号化及び復号化は、互いに通信しないが、メモリへのデータを符号化し及び/又はメモリからデータを検索してデータを復号化するだけのデバイスによって実行される。
ビデオ・エンコーダ20を参照して説明された前述の例のそれぞれについて、ビデオ・デコーダ30は、逆プロセスを実行するように構成さることが可能であることが理解されるはずである。シグナリング・シンタックス要素の場合、ビデオ・デコーダ30は、シンタックス要素を受信及び解析し、それに応じて、関連するビデオ・データを復号化するように構成されることが可能である。幾つかの例では、ビデオ・エンコーダ20は、符号化ビデオ・ビットストリームへの...を規定する1つ以上のシンタックス要素をエントロピー符号化することができる。このような例では、ビデオ・デコーダ30は、このようなシンタックス要素を解析し、それに応じて、関連するビデオ・データを復号化することが可能である。
エンコーダ&符号化方法
図2は、本願(開示)における技術を実装するように構成されたビデオ・エンコーダ20の一例の概略的/概念的なブロック図である。図2の例では、ビデオ・エンコーダ20は、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構成ユニット214と、バッファ216と、ループ・フィルタ・ユニット220と、復号化済みピクチャ・バッファ(decoded picture buffer,DPB)230と、予測処理ユニット260と、エントロピー符号化ユニット270とを含む。予測処理ユニット260は、インター予測ユニット244と、イントラ予測ユニット254と、モード選択ユニット262とを含むことが可能である。インター予測ユニット244は、動き推定ユニットと、動き補償ユニット(図面には示されていない)とを含むことが可能である。図2に示すビデオ・エンコーダ20はまた、ハイブリッド・ビデオ・エンコーダ又はハイブリッド・ビデオ・コーデック・ベースのビデオ・エンコーダと言及されてもよい。
例えば、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、予測処理ユニット260、エントロピー符号化ユニット270は、エンコーダ20の順方向信号経路を形成し、逆量子化ユニット210、逆変換処理ユニット部212、再構成ユニット214、バッファ216、ループ・フィルタ220、復号化済みピクチャ・バッファ(decoded picture buffer,DPB)230、予測処理ユニット260等は、エンコーダの逆方向信号経路を形成する。エンコーダの逆方向信号経路は、デコーダ(図3のデコーダ30を参照されたい)の信号経路に対応する。
エンコーダ20は、ピクチャ201又はピクチャ201のブロック203、例えばビデオ又はビデオ・シーケンスを形成する一連のピクチャにおけるピクチャを、入力202等を使用することにより受信する。ピクチャ・ブロック203はまた、現在のピクチャ・ブロック又は符号化対象のピクチャ・ブロックと言及される可能性があり、ピクチャ201は、現在のピクチャ又は符号化対象のピクチャと言及される可能性がある(特に、現在ピクチャがビデオ・コーディングにおける他のピクチャから区別される場合、例えば同じビデオ・シーケンス内の他のピクチャはまた、現在のピクチャのビデオ・シーケンスにおける以前に符号化及び/又は復号化されたピクチャを含む。)。
分割
エンコーダ20の実施形態は、ピクチャ201を、ブロック203のような複数の重複しないブロックに分割するように構成された分割ユニット(図2には示されていない)を含むことが可能である。分割ユニットは、ビデオ・シーケンス内のすべてのピクチャに対して同一のブロック・サイズとブロック・サイズを規定する対応するラスタとを使用するように構成されることが可能であり、又は、ピクチャ、サブセット、又はピクチャ・グループ間のブロック・サイズを変更し、各ピクチャを対応するブロックに分割するように構成されることが可能である。
一例では、ビデオ・エンコーダ20の予測処理ユニット260は、前述の分割技術の任意の組み合わせを実行するように構成されてもよい。
例えば、ピックチャ201において、ブロック203はまた、ルミナンス値(サンプル値)を有する2次元アレイ又はマトリクスであるか、又はそれらとして考えられてもよいが、ブロック203のサイズはピクチャ201のものより小さい。換言すれば、ブロック203は、例えば、1つのサンプル・アレイ(例えば、モノクロ・ピクチャ201の場合のルミナンス・アレイ)、3つのサンプル・アレイ(例えば、カラー・ピクチャの場合における1つのルミナンス・アレイ及び2つのクロミナンス・アレイ)、又は使用されるカラー・フォーマットに基づく他の任意の量及び/又はアレイのタイプを含むことが可能である。ブロック203の水平及び垂直方向(又は軸)におけるサンプルの量は、ブロック203のサイズを規定する。
図2に示すエンコーダ20は、ブロック毎にピクチャ201を符号化するように、例えば各ブロック203において符号化及び予測を実行するように構成される。
残差計算
残差計算ユニット204は、ピクチャ・ブロック203及び予測ブロック265(予測ブロック265に関する更なる詳細は以下において行われる)に基づいて、残差ブロック205を計算するように、例えば、予測ブロック265のサンプル値をサンプル毎に(ピクセル毎に)ピクチャ・ブロック203のサンプル値から減算することにより、サンプル・ドメインにおいて残差ブロック205を取得するように構成されている。
変換
変換処理ユニット206は、離散コサイン変換(discrete cosine transform,DCT)又は離散サイン変換(discrete sine transform,DST)のような変換を、残差ブロック205のサンプル値に適用し、変換ドメインにおいて変換係数207を取得するように構成されている。変換係数207はまた、残差変換係数と言及されてもよく、変換ドメインにおける残差ブロック205を示す。
変換処理ユニット206は、DCT/DSTの整数近似、例えばHEVC/H.265で指定されている変換を適用するように構成されてもよい。この整数近似は、通常、直交DCT変換に匹敵する因子によって比例的にスケーリングされる。順変換及び逆変換を通じて取得された残差ブロックのノルムを維持するために、追加的なスケール因子が変換プロセスの一部として適用される。スケール因子は、通常、幾つかの制約条件に基づいて選択され、例えば、2の冪乗、変換係数のビット深度、又はシフト演算に使用される精度と実装コストとの間のトレードオフに基づいて選択される。例えば、逆変換処理ユニット212を使用することにより、デコーダ30側における逆変換に対して(相応に、逆変換処理ユニット212等を使用することにより、エンコーダ20側における逆変換に対して)、特定のスケール因子が指定され、これに対応して、変換処理ユニット206を使用することにより、エンコーダ20側における順変換に対して、対応するスケール因子が指定されてもよい。
量子化
量子化ユニット208は、スケール量子化やベクトル量子化などを適用することにより変換係数207を量子化し、量子化された変換係数209を取得するように構成される。量子化された変換係数209は、量子化された残差係数209とも呼ばれる。量子化プロセスは、幾つかの又は全ての変換係数207に関連するビット深度を低減することができる。例えば、nビット変換係数は、量子化中にmビット変換係数に丸められる可能性があり、ここで、nはmより大きい。量子化の程度は、量子化パラメータ(quantization parameter,QP)を調整することによって修正されることが可能である。例えば、スケール量子化のために、異なるスケールが、より細かい又はより粗い量子化を達成するために適用されてもよい。より小さな量子化ステップはより細かい量子化に対応し、より大きな量子化ステップはより粗い量子化に対応する。適切な量子化ステップは、量子化パラメータ(quantization parameter,QP)を使用することによって示されてもよい。例えば、量子化パラメータは、適切な量子化ステップの所定のセットのインデックスであってもよい。例えば、より小さな量子化パラメータはより細かい量子化(より小さな量子化ステップ)に対応し、より大きな量子化パラメータはより粗い量子化(より大きな量子化ステップ)に対応し、その逆も可能である。量子化は、量子化ステップによる除算と、逆量子化ユニット210等によって実行される対応する量子化又は逆量子化とを含んでもよいし、又は量子化ステップによる乗算を含んでもよい。HEVC等の幾つかの規格による実施形態では、量子化ステップを決定するために量子化パラメータが使用されてもよい。一般に、量子化ステップは、除算を含む式の固定小数点近似による量子化パラメータに基づいて計算される可能性がある。追加的なスケール因子が量子化及び逆量子化のために導入され、残差ブロックのノルムであって、量子化ステップのために使用される式の固定小数点近似で使用されるスケール及び量子化パラメータに起因して修正される可能性があるノルムを復元することが可能である。例示的な実装において、逆変換のスケールは逆量子化のスケールと組み合わせられてもよい。代替的に、カスタマイズされた量子化テーブルが使用され、エンコーダからデコーダへ、例えばビットストリームでシグナリングされてもよい。量子化はロスレスでない演算であり、より大きな量子化ステップはより大きなロスを示す。
逆量子化ユニット210は、量子化ユニット208の逆量子化を量子化係数に適用して、逆量子化係数211を取得するように、例えば量子化ユニット208と同じ量子化ステップに基づいて又はそれを使用して、量子化ユニット208により適用される量子化方式の逆量子化方式を適用するように、構成される。逆量子化係数211はまた、逆量子化残差係数211とも呼ばれ、変換係数207に対応するが、量子化によって生じるロスは、通常、変換係数とは異なる。
逆変換処理ユニット212は、変換処理ユニット206によって適用される変換の逆変換、例えば逆離散コサイン変換(discrete cosine transform,DCT)又は逆離散サイン変換(discrete sine transform,DST)を適用して、サンプル・ドメインにおける逆変換ブロック213を取得するように構成される。逆変換ブロック213はまた、逆変換逆量子化ブロック213又は逆変換残差ブロック213と言及されてもよい。
再構成ユニット214(例えば、加算器214)は、予測ブロック265に逆変換ブロック213(即ち、再構成された残差ブロック213)を加算して、例えば再構成された残差ブロック213のサンプル値と予測ブロック265のサンプル値とを加算することにより、サンプル・ドメインにおいて再構成されたブロック215を取得するように構成される。
オプションとして、ライン・バッファ216のようなバッファ・ユニット216(又は略称「バッファ」216)は、再構成されたブロック215とイントラ予測などのための対応するサンプル値とをバッファリング又は記憶するように構成される。他の実施形態では、エンコーダは、イントラ予測などの任意のタイプの推定及び/又は予測のために、バッファ・ユニット216に記憶されたフィルタリングされていない再構成ブロック及び/又は対応するサンプル値を使用するように構成されてもよい。
例えば、エンコーダ20の実施形態は、バッファ・ユニット216が、イントラ予測254のために再構成ブロック215を記憶するように構成されるだけでなく、ループ・フィルタ・ユニット220(図2には図示せず)のフィルタリングされたブロック221を記憶するようにも構成され、及び/又はバッファ・ユニット216と復号化済みピクチャ・バッファ・ユニット230とが1つのバッファを形成するように、構成されることが可能である。他の実施形態は、フィルタリングされたブロック221及び/又は復号化済みピクチャ・バッファ230(図2には示されていない)からのブロック又はサンプルを、イントラ予測254のための入力又は基礎として使用するために使用されることが可能である。
ループ・フィルタ・ユニット220(又は、略称「ループ・フィルタ」220)は、フィルタリングされたブロック221を取得するために、再構成されたブロック215に関してフィルタリングを実行し、サンプル変換を円滑に行い、又はビデオ品質を改善するように構成される。ループ・フィルタ・ユニット220は、1つ以上のループ・フィルタ、例えばデブロッキング・フィルタ、サンプル・アダプティブ・オフセット(sample-adaptive offset,SAO)フィルタ、又は、バイラテラル・フィルタ、アダプティブ・ループ・フィルタ(adaptive loop filter,ALF)、鮮鋭化又は平滑化フィルタ、又は協調フィルタ等の別のフィルタを表すように意図されている。ループ・フィルタ・ユニット220は、ループ内フィルタとして図2に示されているが、ループ・フィルタ・ユニット220は、他の構成では、ポスト・ループ・フィルタとして実装されてもよい。フィルタリングされたブロック221は、フィルタリング済みの再構成されたブロック221としても参照されてもよい。復号化済みピクチャ・バッファ230は、ループ・フィルタ・ユニット220が再構成されたコーディング・ブロックに対してフィルタリング処理を実行した後に、再構成されたコーディング・ブロックを記憶することが可能である。
エンコーダ20(対応して、ループ・フィルタ・ユニット220)の実施形態は、ループ・フィルタ・パラメータ(例えば、サンプル適応オフセット情報)を出力するために、例えばループ・フィルタ・パラメータを直接的に出力するために、又は例えばエントロピー符号化ユニット270又は何らかの他のエントロピー符号化ユニットがエントロピー符号化を実行した後に、ループ・フィルタ・パラメータを出力するために使用されることが可能であり、その結果、デコーダ30は復号化などのために同じループ・フィルタ・パラメータを受信及び適用することが可能である。
復号化済みピクチャ・バッファ(decoded picture buffer,DPB)230は、ビデオ・データを符号化するためにビデオ・エンコーダ20用に参照ピクチャ・データを記憶する参照ピクチャ・メモリであってもよい。DPB230は、複数のメモリ、例えば、ダイナミック・ランダム・アクセス・メモリ(dynamic random access memory,DRAM)(同期DRAM(synchronous DRAM,SDRAM)、磁気抵抗RAM(magnetoresistive RAM, MRAM)、又は抵抗RAM(resistive RAM,RRAM)を含む)、又は別のタイプのメモリのうちの任意のものであってもよい。DPB230及びバッファ216は、同一のメモリ又は別個のメモリによって提供されてもよい。一例では、復号化済みピクチャ・バッファ(decoded picture buffer,DRB)230は、フィルタリングされたブロック221を記憶するように構成される。復号化済みピクチャ・バッファ230は、更に、同じ現在ピクチャ又は以前に再構成されたピクチャのような異なるピクチャの、以前に再構成されフィルタリングされたブロック221のような他の以前のフィルタリングされたブロックを記憶するように更に構成されることが可能であり、完全な以前の再構成された、即ち復号化されたピクチャ(及び対応する参照ブロック及び対応するサンプル)及び/又はイントラ予測等のための部分的に再構成された現在ピクチャ(及び対応する参照ブロック及び対応するサンプル)を提供することが可能である。一例では、再構成ブロック215がループ内フィルタリングなしに再構成される場合、復号化済みピクチャ・バッファ(decoded picture buffer,DPB)230は、再構成ブロック215を記憶するように構成される。
予測処理ユニット260はまた、ブロック予測処理ユニット260とも言及され、ブロック203(現在ピクチャ201の現在ブロック203)及び再構成されたピクチャ・データ、例えばバッファ216内の同じ(現在の)ピクチャからの参照サンプル、復号化済みピクチャ・バッファ230内の1つ以上の以前の復号化されたピクチャからの参照ピクチャ・データ231を受信又は取得し、そのデータを予測のために処理し、即ち、インター予測ブロック245又はイントラ予測ブロック255である可能性がある予測ブロック265を提供するように構成される。
モード選択ユニット262は、予測ブロック265として予測モード(例えば、イントラ又はインター予測モード)及び/又は対応する予測ブロック245又は255を選択して、残差ブロック205を計算し、再構成ブロック215を再構成するように構成されることが可能である。
モード選択ユニット262の実施形態は、予測モードを(例えば、予測処理ユニット260によりサポートされる予測モードから)選択するために使用されてもよい。予測モードは、最良の一致又は最小の残差(最小の残差は、伝送又は記憶における、より良い圧縮を意味する)を提供し、又は最小のシグナリング・オーバヘッド(最小のシグナリング・オーバヘッドは、伝送又は記憶における、より良い圧縮を意味する)を提供し、或いは両者を考慮する又はバランスをとる。モード選択ユニット262は、レート歪最適化(rate distortion optimization,RDO)に基づいて予測モードを決定するように、即ち、最小レート歪最適化を提供する予測モードを選択するように、又は関連するレート歪が少なくとも予測モード選択基準を満たす予測モードを選択するように構成されてもよい。
エンコーダ20の一例によって実行される、(例えば、予測処理ユニット260を用いることによる)予測処理及び(例えば、モード選択ユニット262を用いることによる)モード選択が、以下において詳細に説明される。
上述したように、エンコーダ20は、(所定の)予測モード・セットから最良の又は最適な予測モードを決定又は選択するように構成される。予測モード・セットは、例えば、イントラ予測モード及び/又はインター予測モードを含むことが可能である。
イントラ予測モード・セットは、35個の異なるイントラ予測モード、例えば、DC(又は平均)モード及び平面モードのような非方向性モード、又はH.265で規定されている方向性モードを含むことが可能であり、又は67個のイントラ予測モード、例えばDC(又は平均)モード及び平面モードのような非方向性モード、又はH.266で規定される発展した方向性モードを含むことが可能である。
(可能な)インター予測モード・セットは、利用可能な参照ピクチャ(例えば、DBP230に記憶されている復号化されたピクチャの少なくとも一部)及び他のインター予測パラメータに依存し、例えば、参照ピクチャ全体が使用されるか又は参照ピクチャの一部分のみが使用されるかどうか、例えば、現在ブロックの領域を囲むサーチ・ウィンドウ領域が、最良に合致する参照ブロックのために探索されるかどうかに依存し、及び/又は、ハーフ・サンプル及び/又は4分の1サンプル補間のようなサンプル補間が適用されるかどうかに依存する。
前述の予測モードに加えて、スキップ・モード及び/又はダイレクト・モードも適用されることが可能である。
予測処理ユニット260は、更に、ブロック203を、より小さなブロック・パーティション又はサブブロックに、例えば四分木(quad-tree,QT)分割、二分木(binary-tree,BT)分割、三分木又は三分探索木(triple-tree or ternary-tree,TT)分割、又はこれらの組み合わせを反復的に用いることにより分割し、ブロック・パーティション又はサブブロックのそれぞれに関して予測などを実行するように構成されてもよい。モード選択は、分割されたブロック203のツリー構造を選択することと、ブロック・パーティション又はサブブロックの各々に適用される予測モードを選択することとを含む。
インター予測ユニット244は、動き推定(motion estimation,ME)ユニット(図2には示されていない)と、動き補償(motion compensation,MC)ユニット(図2には示されていない)とを含むことが可能である。動き推定ユニットは、動き推定を行うために、ピクチャ・ブロック203(現在ピクチャ201の現在ピクチャ・ブロック203)及び復号化されたピクチャ231、又は少なくとも1つ以上の以前に再構成されたブロック、例えば、以前に復号化されたピクチャ231とは異なる1つ以上の他の再構成されたブロックを受信又は取得するように構成される。例えば、ビデオ・シーケンスは、現在のピクチャ及び以前の復号化されたピクチャ31を含む可能性がある。換言すれば、現在ピクチャ及び以前の復号化されたピクチャ31は、ビデオ・シーケンスを形成する、又はピクチャ・シーケンスを形成するピクチャのシーケンスの一部であってもよい。
例えば、エンコーダ20は、同一のピクチャの複数の参照ブロック、又は複数の他のピクチャにおける異なるピクチャから、参照ブロックを選択し、参照ピクチャ(又は参照ピクチャ・インデックス)、及び/又は参照ブロックの位置(X−Y座標)と現在ブロックの位置との間のオフセット(空間オフセット)を、インター予測パラメータとして動き推定ユニット(図2には示されていない)に提供するように構成されてもよい。このオフセットは、動きベクトル(motion vector,MV)とも言及される。
動き補償ユニットは、例えば、インター予測パラメータを取得、例えば受信し、インター予測パラメータに基づいて又はそれを使用することにより、インター予測を行ってインター予測ブロック245を取得するように構成される。動き補償ユニット(図2には示されていない)によって実行される動き補償は、動き推定によって決定される動き/ブロック・ベクトルに基づいて、予測ブロックをフェッチ又は生成すること(可能性として、サブ・サンプル精度で補間を実行することを含む)を含む可能性がある。補間フィルタリングの間に、追加サンプルが既知のサンプルから生成され、それにより、ピクチャ・ブロックを符号化するために使用される可能性がある候補予測ブロックの量を潜在的に増加させることが可能である。一旦、現在のピクチャ・ブロックのPUに使用される動きベクトルが受信されると、動き補償ユニット246は、動きベクトルが参照ピクチャ・リスト内で指し示す予測ブロックを位置決めすることが可能である。動き補償ユニット246は、更に、ブロック及びビデオ・スライスに関連するシンタックス要素を生成することが可能であり、その結果、ビデオ・デコーダ30は、ビデオ・スライスのピクチャ・ブロックを復号化する場合にシンタックス要素を使用する。
イントラ予測ユニット254は、例えば、同じピクチャのピクチャ・ブロック203(現在ピクチャ・ブロック)と、再構成された隣接ブロックのような1つ以上の以前の再構成ブロックとを取得、例えば受信して、イントラ推定を実行するように構成される。例えば、エンコーダ20は、複数の(所定の)イントラ予測モードからイントラ予測モードを選択するように構成されることが可能である。
エンコーダ20の実施形態は、最適化基準に基づいて、例えば最小残差(例えば、現在のピクチャ・ブロック203に最も類似した予測ブロック255を提供するイントラ予測モード)又は最小レート歪に基づいて、イントラ予測モードを選択するように構成されてもよい。
イントラ予測部254は、選択されたイントラ予測モードのイントラ予測パラメータに基づいて、イントラ予測ブロック255を決定するように更に構成される。何れにせよ、ブロックに使用されるイントラ予測モードを選択した後、イントラ予測ユニット254は、更に、エントロピー符号化ユニット270にイントラ予測パラメータを提供するように、即ち、ブロックに使用される選択されたイントラ予測モードを示す情報を提供するように構成される。一例では、イントラ予測ユニット254は、以下のイントラ予測技術の任意の組み合わせを実行するように構成されてもよい。
エントロピー符号化ユニット270は、エントロピー符号化アルゴリズム又はスキーム(例えば、可変長コーディング(variable length coding,VLC)スキーム、コンテキスト適応VLC(context adaptive VLC,CAVLC)スキーム、算術コーディング・スキーム、コンテキスト適応バイナリ算術コーディング(context adaptive binary arithmetic coding,CABAC)スキーム、シンタックス・ベースのコンテキスト適応バイナリ算術コーディング(syntax-based context-adaptive binary arithmetic coding, SBAC)スキーム、確率区間分割エントロピー(probability interval partitioning entropy, PIPE)コーディング・スキーム、又は他のエントロピー符号化方法又は技術)を、量子化された残差係数209、インター予測パラメータ、イントラ予測パラメータ、及び/又はループ・フィルタ・パラメータのうちの1つ以上に適用して(又は何れにも適用せず)、出力272を使用することにより例えば符号化されたビットストリーム21の形式で出力されることが可能な符号化されたピクチャ・データ21を取得するように構成される。符号化されたビットストリームは、ビデオ・デコーダ30に送信されてもよいし、又はビデオ・デコーダ30による後の送信又は検索のために保管されてもよい。エントロピー符号化ユニット270は、符号化されつつある現在のビデオ・スライスの別のシンタックス要素に関してエントロピー符号化を実行するように更に構成されてもよい。
ビデオ・エンコーダ20の別の構造的な変形は、ビデオ・ストリームを符号化するように構成されてもよい。例えば、非変換ベースのエンコーダ20は、幾つかのブロック又はフレームについて、変換処理ユニット206を使用せずに残差信号を直接的に量子化することができる。別の実装において、エンコーダ20は、1つのユニットに結合される量子化ユニット208及び逆量子化ユニット210を有することが可能である。
図3は、本願における技術を実装するように構成されたビデオ・デコーダ30の一例を示す。ビデオ・デコーダ30は、エンコーダ20等によって符号化された符号化されたピクチャ・データ(例えば、符号化されたビットストリーム)21を受信して、復号化されたピクチャ231を取得するように構成される。復号化処理において、ビデオ・デコーダ30は、ビデオ・エンコーダ20からビデオ・データ、例えば符号化ビデオ・スライスのピクチャ・ブロック及び関連するシンタックス要素を示す符号化ビデオ・ビットストリームを受信する。
図3の例では、デコーダ30は、エントロピー復号化ユニット304と、逆量子化ユニット310と、逆変換処理ユニット312と、再構成ユニット314(例えば、加算器314)と、バッファ316と、ループ・フィルタ320と、復号化済みピクチャ・バッファ330と、予測処理ユニット360とを含む。予測処理ユニット360は、インター予測ユニット344と、イントラ予測ユニット354と、モード選択ユニット362とを含んでもよい。幾つかの例では、ビデオ・デコーダ30は、図2のビデオ・エンコーダ20を参照して説明した符号化トラバースに対して概ね逆の復号化トラバースを実行することが可能である。
エントロピー復号化ユニット304は、符号化されたピクチャ・データ21に関してエントロピー復号化を実行し、量子化係数309、復号化されたコーディング・パラメータ(図3には示されていない)等、及び/又は、例えばインター予測パラメータ、イントラ予測パラメータ、ループ・フィルタ・パラメータ、及び/又は他のシンタックス要素(復号化されている)のうちの任意の1つ又は全てを取得するように構成される。エントロピー復号化ユニット304は、更に、インター予測パラメータ、イントラ予測パラメータ、及び/又は他のシンタックス要素を予測処理ユニット360に転送するように構成される。ビデオ・デコーダ30は、ビデオ・スライス・レベルでのシンタックス要素及び/又はビデオ・ブロック・レベルでのシンタックス要素を受信することが可能である。
逆量子化ユニット310は、逆量子化ユニット110と同じ機能を有してもよく、逆変換処理ユニット312は、逆変換処理ユニット212と同じ機能を有してもよく、再構成ユニット314は、再構成ユニット214と同じ機能を有してもよく、バッファ316は、バッファ216と同じ機能を有してもよく、ループ・フィルタ320は、ループ・フィルタ220と同じ機能を有してもよく、復号化済みピクチャ・バッファ330は、復号化済みピクチャ・バッファ230と同じ機能を有してもよい。
予測処理ユニット360は、インター予測ユニット344及び内部予測ユニット354を含むことが可能である。インター予測ユニット344は、インター予測ユニット244と同様の機能を有してもよく、イントラ予測ユニット354は、イントラ予測ユニット254と同様の機能を有してもよい。予測処理ユニット360は、通常、ブロック予測を実行し、及び/又は符号化されたデータ21から予測ブロック365を取得し、選択された予測モードに関する予測関連パラメータ及び/又は情報を、例えばエントロピー復号化ユニット304から(明示的又は黙示的に)受信又は取得するように構成される。
ビデオ・スライスがイントラ符号化(I)として符号化されると、予測処理ユニット360のイントラ予測ユニット354は、現在フレーム又はピクチャの以前の復号化されたブロックからのデータ及びシグナリングされたイントラ予測モードに基づいて、現在のビデオ・スライスのピクチャ・ブロックに使用される予測ブロック365を生成するように構成される。ビデオ・フレームが、インター・コーディングされた(即ち、B又はP)スライスとして符号化されると、予測処理ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、エントロピー復号化ユニット304から受信した動きベクトル及び別のシンタックス要素に基づいて、現在のビデオ・スライスのビデオ・ブロックに使用される予測ブロック365を生成するように構成される。インター予測に関し、予測ブロックは、1つの参照ピクチャ・リスト内の参照ピクチャの1つから生成されてもよい。ビデオ・デコーダ30は、DPB330に記憶された参照ピクチャに基づくデフォルトの構成技術を使用することによって、リスト0及びリスト1の参照フレーム・リストを構成することができる。
予測処理ユニット360は、動きベクトル及び他のシンタックス要素を解析することにより、現在のビデオ・スライスのビデオ・ブロックに使用される予測情報を決定し、予測情報を使用して、復号化されつつある現在のビデオ・ブロックに使用される予測ブロックを生成するように構成される。例えば、予測処理ユニット360は、受信した幾つかのシンタックス要素を使用することにより、ビデオ・スライスのビデオ・ブロックを符号化するために使用される予測モード(例えば、イントラ又はインター予測)、インター予測スライス・タイプ(例えば、Bスライス、Pスライス、又はGPBスライス)、スライスに使用される参照ピクチャ・リスト内の1つ以上のピクチャの構成情報、スライスに使用されるインター符号化ビデオ・ブロック各々の動きベクトル、スライスに使用されるインター符号化ビデオ・ブロック各々のインター予測状態、及び他の情報を決定して、現在のビデオ・スライスのビデオ・ブロックを復号化する。
逆量子化ユニット310は、ビットストリームで提供されるエントロピー復号化ユニット304によって復号化される量子化変換係数に対して逆量子化(即ち、非量子化)を実行するように構成されてもよい。逆量子化プロセスは、ビデオ・スライス内の各ビデオ・ブロックについてビデオ・エンコーダ20によって計算される量子化パラメータを使用して、適用されるべき量子化の程度を決定し、適用されるべき逆量子化の程度を決定することを含む可能性がある。
逆変換処理ユニット312は、変換係数に逆変換(例えば、逆DCT、逆整数変換、又は概念的に類似する逆変換処理)を適用して、サンプル・ドメインにおける残差ブロックを生成するように構成される。
再構成ユニット314(例えば、加算器314)は、逆変換ブロック313(即ち、再構成された残差ブロック313)を予測ブロック365に加算して、例えば、再構成された残差ブロック313のサンプル値を予測ブロック365のサンプル値に加算することによって、サンプル・ドメインにおける再構成されたブロック315を取得するように構成される。
ループ・フィルタ・ユニット320(符号化ループ内又は符号化ループの後)は、再構成されたブロック315をフィルタリングして、フィルタリングされたブロック321を取得し、サンプル変換を円滑に実行する、又はビデオ品質を改善するように構成される。一例では、ループ・フィルタ・ユニット320は、以下のフィルタリング技術の任意の組み合わせを実行するように構成されることが可能である。ループ・フィルタ・ユニット320は、1つ以上のループ・フィルタ、例えば、デブロッキング・フィルタ、サンプル・アダプティブ・オフセット(sample-adaptive offset,SAO)フィルタ、又は別のフィルタ、例えばバイラテラル・フィルタ、アダプティブ・ループ・フィルタ(adaptive loop filter,ALF)、鮮鋭化又は平滑化フィルタ、又は協調フィルタを表すように意図されている。ループ・フィルタ・ユニット320は、ループ内フィルタとして図3に示されているが、ループ・フィルタ・ユニット320は、他の構成では、ポスト・ループ・フィルタとして実装されてもよい。
所与のフレーム又はピクチャ内の復号化されたビデオ・ブロック321は、その後の動き補償に使用される参照ピクチャを記憶する復号化済みピクチャ・バッファ330に記憶される。
デコーダ30は、出力332等を使用することにより復号化されたピクチャ31を出力し、復号化されたピクチャ31をユーザーに提示する、又はユーザーが眺めるように復号化されたピクチャ31を提供するように構成される。
ビデオ・デコーダ30の別の変形は、圧縮されたビットストリームを復号化するように構成されることが可能である。例えば、デコーダ30は、ループ・フィルタ・ユニット320なしに出力ビデオ・ストリームを生成することができる。例えば、非変換ベースのデコーダ30は、幾つかのブロック又はフレームに対して、逆変換処理ユニット312なしに、残差信号を直接的に非量子化することが可能である。別の実装において、ビデオ・デコーダ30は、1つのユニットに結合される逆量子化ユニット310及び逆変換処理ユニット312を有することが可能である。
図4は、例示の実施形態による図2のエンコーダ20及び/又は図3のデコーダ30を含むビデオ・コーディング・システム40の一例を示す図である。システム40は本願の様々な技術の組み合わせを実装することが可能である。図示の実装において、ビデオ・コーディング・システム40は、撮像デバイス41、ビデオ・エンコーダ20、ビデオ・デコーダ30(及び/又は、処理ユニット46の論理回路47によって実現されるビデオ・エンコーダ)、アンテナ42、1つ以上のプロセッサ43、1つ以上のメモリ44、及び/又は、表示デバイス45を含んでもよい。
図面に示されるように、撮像デバイス41、アンテナ42、処理デバイス46、論理回路47、ビデオ・エンコーダ20、ビデオ・デコーダ30、プロセッサ43、メモリ44、及び/又は表示デバイス45は、互いに通信することが可能である。説明されるように、ビデオ・コーディング・システム40は、ビデオ・エンコーダ20及びビデオ・デコーダ30の両方とともに示されているが、異なる例において、ビデオ・コーディング・システム40は、ビデオ・エンコーダ20のみ、又はビデオ・デコーダ30のみを含む可能性がある。
幾つかの例では、図面に示されるように、ビデオ・コーディング・システム40は、アンテナ42を含むことが可能である。例えば、アンテナ42は、ビデオ・データの符号化されたビットストリームを送信又は受信するように構成されることが可能である。更に、幾つかの例において、ビデオ・コーディング・システム40は、表示デバイス45を含んでもよい。表示デバイス45は、ビデオ・データを提示するように構成されることが可能である。幾つかの例では、図面に示されるように、論理回路47は、処理ユニット46によって実現されてもよい。処理ユニット46は、特定用途向け集積回路(application-specific integrated circuit,ASIC)ロジック、グラフィックス処理ユニット、汎用プロセッサ等を含むことが可能である。ビデオ・コーディング・システム40はまた、オプションのプロセッサ43を含んでもよい。オプションのプロセッサ43は、同様に、特定用途向け集積回路(application-specific integrated circuit,ASIC)ロジック、グラフィックス処理ユニット、汎用プロセッサ等を含むことが可能である。幾つかの例では、論理回路47は、ビデオ符号化専用ハードウェアのようなハードウェアによって実装されることが可能であり、プロセッサ43は、ユニバーサル・ソフトウェア、オペレーティング・システム等によって実現されることが可能である。更に、メモリ44は、任意のタイプのメモリ、例えば揮発性メモリ(例えば、スタティック・ランダム・アクセス・メモリ(Static Random Access Memory,SRAM)又はダイナミック・ランダム・アクセス・メモリ(Dynamic Random Access Memory, DRAM)又は不揮発性メモリ(例えば、フラッシュ・メモリ)であってもよい。非限定的な例では、メモリ44は、キャッシュ・メモリによって実現されてもよい。幾つかの例では、論理回路47は、(例えば、イメージ・バッファを実現するための)メモリ44にアクセスすることが可能である。他の例では、論理回路47及び/又は処理ユニット46は、画像バッファ等を実現するためのメモリ(例えば、キャッシュ)を含む可能性がある。
一部の例では、論理回路によって実現されるビデオ・エンコーダ20は、画像バッファ(例えば、処理ユニット46又はメモリ44によって実現される)及びグラフィックス処理ユニット(例えば、処理ユニット46によって実現される)を含むことが可能である。グラフィックス処理ユニットは、画像バッファに通信可能に結合されることが可能である。グラフィックス処理ユニットは、図2を参照して説明される種々のモジュール、及び/又は本明細書で説明される他の任意のエンコーダ・システム又はサブシステムを実現するために、論理回路47によって実現されるビデオ・エンコーダ20を含んでもよい。論理回路は、本明細書で説明される種々の動作を実行するように構成されることが可能である。
ビデオ・デコーダ30は、図3のデコーダ30を参照して説明される種々のモジュール、及び/又は本明細書で説明される他の任意のデコーダ・システム又はサブシステムを実現するために、論理回路47によって同様に実現されてもよい。幾つかの例において、論理回路によって実現されるビデオ・デコーダ30は、画像バッファ(処理ユニット2820又はメモリ44によって実現される)及びグラフィックス処理ユニット(例えば、処理ユニット46によって実現される)を含んでもよい。グラフィックス処理ユニットは、画像バッファに通信可能に結合されることが可能である。グラフィックス処理ユニットは、図3を参照して説明される種々のモジュール、及び/又は本明細書で説明される任意の他のデコーダ・システム又はサブシステムを実現するために、論理回路47によって実現されるビデオ・デコーダ30を含んでもよい。
幾つかの例では、ビデオ・コーディング・システム40のアンテナ42は、ビデオ・データの符号化されたビットストリームを受信するように構成されてもよい。説明されるように、符号化されたビットストリームは、本明細書で説明されるビデオ・フレーム符号化に関連するデータ、インジケータ、インデックス値、モード選択データ等、例えば、符号化分割に関連するデータ(例えば、変換係数又は量子化変換係数、(説明されているような)オプションのインジケータ、及び/又は符号化分割を規定するデータ)を含んでもよい。ビデオ・コーディング・システム40は、アンテナ42に結合され、符号化されたビットストリームを復号化するように構成されたビデオ・デコーダ30を更に含むことが可能である。表示デバイス45は、ビデオ・フレームを提示するように構成される。
図5は、例示的な実施形態による図1のソース・デバイス12及び宛先デバイス14のうちの任意の1つ又は2つとして使用することが可能な装置500の簡略化されたブロック図である。装置500は、本願における技術を実装することができる。装置500は、複数のコンピューティング・デバイスを含むコンピューティング・システムの一形態を使用することが可能であり、又は、携帯電話、タブレット・コンピュータ、ラップトップ・コンピュータ、ノートブック・コンピュータ、又はデスクトップ・コンピュータのような単一のコンピューティング・デバイスの一形態を使用することが可能である。
装置500内のプロセッサ502は、中央処理ユニットであってもよい。代替的に、プロセッサ502は、何らかの他のタイプの既存の若しくは将来のデバイス、又は情報を制御又は処理することが可能なデバイスであってもよい。図面に示されているように、開示される実装は、プロセッサ502のような単一のプロセッサを使用することによって実施されることが可能であるが、1つより多いプロセッサを使用することによって、速度及び効率における利点を達成することができる。
実装においては、装置500内のメモリ504は、リード・オンリ・メモリ(Read Only Memory,ROM)デバイス又はランダム・アクセス・メモリ(random access memory,RAM)デバイスであってもよい。他の任意の適切なタイプの記憶デバイスがメモリ504として使用されることが可能である。メモリ504は、バス512を使用することによって、プロセッサ502によりアクセスされるコード及びデータ506を含んでもよい。メモリ504は、オペレーティング・システム508及びアプリケーション・プログラム510を更に含んでもよい。アプリケーション・プログラム510は、プロセッサ502が本明細書で説明される方法を実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーション・プログラム510はアプリケーション1からNを含むことが可能であり、アプリケーション1からNは更に、本明細書で説明される方法を実行するためのビデオ符号化アプリケーションを更に含む。装置500は、更に、セカンダリ・メモリ514の形態で追加メモリを含んでもよい。セカンダリ・メモリ514は、例えば、モバイル・コンピューティング・デバイスと共に使用されるメモリ・カードであってもよい。ビデオ通信セッションは、大量の情報を含む可能性があるので、情報は、セカンダリ・メモリ514に完全又は部分的に記憶され、必要に応じて処理のためにメモリ504にロードされることが可能である。
装置500は、1つ以上の出力デバイス、例えばディスプレイ518を更に含んでもよい。一例では、ディスプレイ518は、タッチ入力を感知するように動作することが可能なタッチ感知素子とディスプレイを組み合わせるタッチ感知ディスプレイであってもよい。ディスプレイ518は、バス512を使用することによってプロセッサ502に結合されことが可能である。ディスプレイ518に加えて、ユーザーが装置500をプログラムすること、又は別の方法で装置500を使用することを可能にする別の出力デバイスが更に提供されてもよく、又は別の出力デバイスがディスプレイ518の代わりとして提供されてもよい。出力デバイスがディスプレイである、又はディスプレイを含む場合、ディスプレイは、例えば、液晶ディスプレイ(liquid crystal display,LCD)、陰極線管(cathode-ray tube,CRT)ディスプレイ、プラズマ・ディスプレイ、又は有機LED(organic LED,OLED)ディスプレイのような発光ダイオード(LED)ディスプレイを使用することによって、別様に実装されてもよい。
装置500は、更に、画像感知デバイス520を含んでもよいし、又は画像感知デバイス520に接続されてもよい。画像感知デバイス520は、例えば、画像を感知することが可能なカメラ又は何らかの他の既存の若しくは将来の画像感知デバイス520である。画像は、例えば、装置500を動かすユーザーの画像である。画像感知デバイス520は、装置500を動かすユーザーに直に対面して配置されることが可能である。一例では、画像感知デバイス520の位置及び光軸は、画像感知デバイス520の視野が、ディスプレイ518に隣接する領域を含み、且つディスプレイ518がその領域から見えるように、構成されることが可能である。
デバイス500は、更に、サウンド感知デバイス522を含んでもよいし、又はサウンド感知デバイス522に接続されてもよい。サウンド感知デバイス522は、例えば、マイクロホン、又はデバイス500の近辺で音を感知することが可能な何らかの他の既存の又は将来のサウンド感知デバイスである。サウンド感知デバイス522は、装置500を動かすユーザーに直に対面して配置されることが可能であり、ユーザーが装置500を動かす場合にユーザーによって生じる声又は別の音、のような音を受信するように構成されてもよい。
装置500のプロセッサ502及びメモリ504は、図5に示されるように1つのユニットに一体化されているが、他の構成を使用することが可能である。プロセッサ502の動作は、直接結合されることが可能な複数のマシン(各マシンは1つ以上のプロセッサを有する)に分散されてもよいし、又はローカルな領域又は別のネットワークに分散されてもよい。メモリ504は、ネットワーク・ベースのメモリ及び装置500を動かす複数のマシンにおけるメモリのように複数のマシンに分散されもよい。ここでは単一のバスが描かれているが、装置500の複数のバス512が存在してもよい。更に、セカンダリ・メモリ514は、装置500の他の構成要素に直接的に結合されてもよいし、又はネットワークを介してアクセスされてもよいし、メモリ・カードのような単一の集積ユニット、又は複数のメモリ・カードのような複数のユニットを含んでもよい。従って、装置500は、複数の構成で実現されることが可能である。
以下、本願の概念を説明する。
1.インター予測モード
HEVCでは、2つのインター予測モード:アドバンスト動きベクトル予測(advanced motion vector prediction,AMVP)モード及びマージ(merge)モードが使用される。
AMVPモードでは、先ず現在ブロックの空間的又は時間的に隣接する符号化ブロック(隣接ブロックと称する)がトラバースされ、隣接ブロックの動き情報に基づいて、候補動きベクトル・リスト(動き情報候補リストとも言及される)が構築される。次に、レート歪コストに基づいて、最適な動きベクトルが、候補動きベクトル・リストから決定され、最小レート歪コストを有する候補動き情報が、現在ブロックの動きベクトル予測子(motion vector predictor,MVP)として使用される。隣接ブロックの位置及びそのトラバース順序の両方は予め定められる。レート歪コストは、式(1)に従って計算され、ここで、Jはレート歪コストRDコストを示し、SADはオリジナル・サンプル値と、候補動きベクトル予測子を使用することによる動き推定によって取得される予測サンプル値との間の絶対差の合計(sum of absolute differences,SAD)であり、Rはビット・レートを示し、λはラグランジュ乗数を示す。エンコーダ側は、候補動きベクトル・リスト内の選択された動きベクトル予測子のインデックスと、参照フレームのインデックス値とを、デコーダ側に転送する。更に、現在ブロックの実際の動きベクトルを取得するために、MVPを中心とした近傍で動き探索が実行される。エンコーダ側は、MVPと実際の動きベクトルとの間の差(動きベクトル差)をデコーダ側に転送する。
J = SAD + λR (1)
マージ・モードにおいて、現在ブロックの空間的又は時間的に隣接する符号化ブロックの動き情報に基づいて、候補動きベクトル・リストが先ず構築される。次いで、現在ブロックの動き情報として役立つように、レート歪コストに基づいて、最適動き情報が候補動きベクトル・リストから決定される。次に、候補動きベクトル・リスト内の最適動き情報の位置のインデックス値(以下、マージ・インデックスと称する)が、デコーダ側に転送される。現在ブロックの空間候補動き情報及び時間候補動き情報が図6に示されている。空間候補動き情報は、5つの空間的に隣接するブロック(A0,A1,B0,B1,B2)からのものである。隣接ブロックが利用可能でない場合(隣接ブロックが存在しない場合、隣接ブロックが符号化されていない場合、隣接ブロックに使用される予測モードがインター予測モードでない場合)、隣接ブロックの動き情報は候補動きベクトル・リストに追加されない。現在ブロックの時間候補動き情報は、参照フレーム及び現在フレームのピクチャ順序カウント(picture order count,POC)に基づいて、参照フレームの対応する位置におけるブロックのMVをスケーリングすることによって取得される。参照フレーム内のTの位置のブロックが利用可能であるか否かが先ず判定される。ブロックが利用可能でない場合、Cの位置のブロックが選択される。
AMVPモードと同様に、マージ・モードでは、隣接ブロックの位置とそのトラバース順序の両方が予め決定される。更に、隣接ブロックの位置及びそのトラバース順序は、モードによって変化する可能性がある。
候補動きベクトル・リストは、AMVPモード及びマージ・モードの両方で維持されなければならないことが分かる。新しい動き情報が候補リストに追加される前にその都度、リスト内に同じ動き情報が存在するかどうかが先ず検査される。同じ動き情報が存在する場合、動き情報はリストに追加されない。この検査プロセスは、候補動きベクトル・リストのトリミングと言及される。リストのトリミングは、リスト内の同じ動き情報を回避することであり、それによって冗長なレート歪コスト計算を回避する。
HEVCインター予測では、コーディング・ブロック内のすべてのサンプルが同じの動き情報を使用し、従って、コーディング・ブロックのサンプルの予測子を取得するために、動き補償が動き情報に基づいて実行される。しかしながら、コーディング・ブロックにおいて、すべてのサンプルが同じ動き特性を有するわけではない。同じ動き情報を使用すると、不正確な動き補償予測、及びより多くの残差情報を生じさせる可能性がある。
既存のビデオ・コーディング規格では、並進運動モデルに基づくブロック・マッチング動き推定が使用され、ブロック内のすべてのサンプルの動きは一貫していると仮定されている。しかしながら、現実の世界では、さまざまな動きが存在する。多くの物体は、非並進運動にあり、例えば、回転する物体、様々な方向で回転するローラー・コースター、花火の表示、及び映画における幾つかのスタント、特にUGCシナリオにおける移動する物体である。これらの移動する物体に対して、既存のコーディング規格における並進運動モデルに基づくブロック動き補償技術がコーディングに使用される場合、コーディング効率は大きく影響される可能性がある。従って、コーディング効率を更に改善するために、アフィン動きモデルのような非並進運動モデルが導入される。
従って、様々な運動モデルに関し、AMVPモードは、並進モデル・ベースのAMVPモードと非並進モデル・ベースのAMVPモードとに分類され、マージ・モードは、並進モデル・ベースのマージ・モードと非並進モデル・ベースのマージ・モードとに分類されることが可能である。
2.非並進運動モデル
非並進運動モデル・ベースの予測では、コーデック側は、現在ブロック内の各々のチャイルド動き補償ユニットの動き情報を導出するために1つの運動モデルを使用し、予測ブロックを取得するためにチャイルド動き補償ユニットの動き情報に基づいて動き補償を実行し、予測効率を向上させる。一般的な非並進運動モデルは、4パラメータ・アフィン動きモデル又は6パラメータ・アフィン動きモデルである。
本願の実施形態におけるチャイルド動き補償ユニットは、特定の方法に従う分割によって得られたサンプル又はN1×N2サンプル・ブロックである可能性があり、N1及びN2は双方とも正の整数であり、N1はN2に等しくてもよいし、又はN2に等しくなくてもよい。
4パラメータ・アフィン動きモデルは式(2)のように表現される:
4パラメータ・アフィン動きモデルは、2つのサンプルの動きベクトルと、現在ブロックの左上サンプルに対する2つのサンプルの座標とによって表すことが可能である。運動モデル・パラメータを表現するために使用されるサンプルは、制御ポイントと呼ばれる。左上サンプル(0,0)及び右上サンプル(W,0)が制御ポイントとして使用される場合、現在ブロックの左上制御ポイントと右上制御ポイントの動きベクトル(vx0,vy0)及び(vx1,vy1)が、先ず決定される。次いで、現在ブロックにおける各チャイルド動き補償ユニットの動き情報は、式(3)に従って取得され、ここで、(x,y)は現在ブロックの左上サンプルに対するチャイルド動き補償ユニットの座標であり、Wは現在ブロックの幅を示す。
6パラメータ・アフィン動きモデルは式(4)のように表現される:
6パラメータ・アフィン動きモデルは、3つのサンプルの動きベクトルと、現在ブロックの左上サンプルに対する3つのサンプルの座標とによって表現されることが可能である。左上サンプル(0,0)、右上サンプル(W,0)、及び左下サンプル(0,H)が制御ポイントとして使用される場合に、現在ブロックの左上制御ポイント、右上制御ポイント、及び左下制御ポイントの動きベクトル(vx0,vy0),(vx1,vy1)及び(vx2,vy2)が先ず決定される。次いで、現在ブロックにおける各チャイルド動き補償ユニットの動き情報は、式(5)に従って取得され、ここで、(x,y)は現在ブロックの左上サンプルに対するチャイルド動き補償ユニットの座標であり、W及びHはそれぞれ現在ブロックの幅及び高さを示す。
アフィン動きモデルを使用することにより予測されるコーディング・ブロックは、アフィン・コーディング・ブロックと言及される。
一般に、アフィン・コーディング・ブロックの制御ポイントの動き情報は、アフィン動きモデル・ベースのアドバンスト動きベクトル予測(Advanced Motion Vector Prediction,AMVP)モード又はアフィン動きモデル・ベースのマージ(Merge)モードを使用することにより取得することができる。
現在のコーディング・ブロックの制御ポイントの動き情報は、継承制御ポイント動きベクトル予測法又は構築制御ポイント動きベクトル予測法を使用することにより取得されることが可能である。
3.継承制御ポイント動きベクトル予測法
継承制御ポイント動きベクトル予測法は、隣接する符号化されたアフィン・コーディング・ブロックの動きモデルを用いて、現在ブロックの候補制御ポイント動きベクトルを決定するものである。
図7に示す現在ブロックが一例として使用される。現在ブロック周辺の隣接ブロックは、指定された順序、例えば、A1→B1→B0→A0→B2でトラバースされ、現在ブロックの隣接ブロックが位置するアフィン・コーディング・ブロックを発見し、アフィン・コーディング・ブロックの制御ポイント動き情報を取得する。更に、現在ブロックの制御ポイント動きベクトル(マージ・モードの場合)又は制御ポイント動きベクトル予測子(AMVPモードの場合)が、アフィン・コーディング・ブロックの制御ポイント動き情報を使用することにより構築された運動モデルを用いて導出される。A1→B1→B0→A0→B2の順序は、単なる一例として使用されている。他の組み合わせの順序もまた、本願に適用可能である。更に、隣接ブロックは、A1、B1、B0、A0、及びB2に限定されない。
隣接ブロックは、特定の分割方法に基づいて得られる事前に設定されたサイズのサンプル又はサンプル・ブロックである可能性があり、例えば4×4サンプル・ブロック、4×2サンプル・ブロック、又は別のサイズのサンプル・ブロックであってもよい。これは限定されない。
以下、一例としてA1を用いることによる決定プロセスを説明する。他の場合はこれと同様である。
図7に示すように、A1が位置するコーディング・ブロックが4パラメータ・アフィン・コーディング・ブロックである場合、アフィン・コーディング・ブロックの左上サンプル(x4,y4)の動きベクトル(vx4,vy4)と右上サンプル(x5,y5)の動きベクトル(vx5,vy5)とが取得される。現在アフィン・コーディング・ブロックの左上サンプル(x0,y0)の動きベクトル(vx0,vy0)は、式(6)に従って計算され、現在のアフィン・コーディング・ブロックの右上サンプル(x1,y1)の動きベクトル(vx1,vy1)は、式(7)に従って計算される。
A1が位置するアフィン・コーディング・ブロックに基づいて得られる、現在ブロックの左上サンプル(x0,y0)の動きベクトル(vx0,vy0)と右上サンプル(x1,y1)の動きベクトル(vx1,vy1)との組み合わせが、現在ブロックの候補の制御ポイント動きベクトルである。
A1が位置するコーディング・ブロックが6パラメータ・アフィン・コーディング・ブロックである場合、アフィン・コーディン・ブロックの左上サンプル(x4,y4)の動きベクトル(vx4,vy4)、右上サンプル(x5,y5)の動きベクトル(vx5,vy5)、左下サンプル(x6,y6)の動きベクトル(vx6,vy6)が取得される。現在ブロックの左上サンプル(x0,y0)の動きベクトル(vx0,vy0)は、式(8)に従って計算され、現在ブロックの右上サンプル(x1,y1)の動きベクトル(vx1,vy1)は、式(9)に従って計算され、現在ブロックの左下サンプル(x2,y2)の動きベクトル(vx2,vy2)は、式(10)に従って計算される。
A1が位置するアフィン・コーディング・ブロックに基づいて取得される現在ブロックの、左上サンプル(x0,y0)の動きベクトル(vx0,vy0)、右上サンプル(x1,y1)の動きベクトル(vx1,vy1)、左下サンプル(x2,y2)の動きベクトル(vx2,vy2)の組み合わせが、現在ブロックの候補の制御ポイント動きベクトルである。
他の運動モデル、候補位置、検索及びトラバース順序も本願に適用可能であることに留意すべきである。詳細は本願の実施形態では説明されない。
隣接する及び現在のコーディング・ブロックの運動モデルを表現するために他の制御ポイントが使用される方法もまた本願に適用可能であることに留意すべきである。詳細はここでは説明されない。
4.構築制御ポイント動きベクトル(constructed control point motion vectors)予測法1
構築制御ポイント動きベクトル予測法は、隣接する符号化ブロックがアフィン・コーディング・ブロックであるかどうかを考慮せずに、現在ブロックの制御ポイント周辺の隣接する符号化ブロックの動きベクトルを結合し、結合された動きベクトルを、現在のアフィン・コーディング・ブロックの制御ポイント動きベクトルとして使用するものである。
現在ブロックの左上サンプルと右上サンプルの動きベクトルは、現在のコーディング・ブロック周辺の隣接する符号化ブロックの動き情報を使用することにより決定される。図8Aは、構築制御ポイント動きベクトル予測法を説明するための一例として使用される。図8Aは単なる一例であることに留意すべきである。
図8Aに示すように、左上サンプルの隣接する符号化ブロックA2、B2、B3の動きベクトルは、現在ブロックの左上サンプルの動きベクトルに対する候補動きベクトルとして使用され、右上サンプルの隣接する符号化ブロックB1、B0の動きベクトルは、現在ブロックの右上サンプルの動きベクトルに対する候補動きベクトルとして使用される。左上サンプルと右上サンプルの候補の動きベクトルは、複数の2タプルを構成するように組み合わせられる。2タプルに含まれる2つの符号化ブロックの動きベクトルは、以下の式(11A)に示されるように、現在ブロックの候補の制御ポイント動きベクトルとして使用されることが可能である:
vA2はA2の動きベクトルを示し、vB1はB1の動きベクトルを示し、vB0はB0の動きベクトルを示し、vB2はB2の動きベクトルを示し、vB3はB3の動きベクトルを示す。
図8Aに示されるように、左上サンプルの隣接する符号化ブロックA2、B2、B3の動きベクトルは、現在ブロックの左上サンプルの動きベクトルに対する候補動きベクトルとして使用され、右上サンプルの隣接する符号化ブロックB1、B0の動きベクトルは、現在ブロックの右上サンプルの動きベクトルに対する候補動きベクトルとして使用され、左下サンプルの隣接する符号化ブロックA0、A1の動きベクトルは、現在ブロックの左下サンプルの動きベクトルに対する候補動きベクトルとして使用される。左上サンプル、右上サンプル、及び左下サンプルの候補動きベクトルは、3タプルを構成するように組み合わせられる。3タプルに含まれる3つの符号化ブロックの動きベクトルは、以下の式(11B)及び(11C)に示されるように、現在ブロックの候補制御ポイント動きベクトルとして使用されることが可能である:
vA2はA2の動きベクトルを示し、vB1はB1の動きベクトルを示し、vB0はB0の動きベクトルを示し、vB2はB2の動きベクトルを示し、vB3はB3の動きベクトルを示し、vA0はA0の動きベクトルを示し、vA1はA1の動きベクトルを示す。
制御ポイントの動きベクトルを組み合わせる他の方法も本願に適用できることに留意すべきである。詳細はここでは説明されない。
隣接する及び現在のコーディング・ブロックの運動モデルを表現するために他の制御ポイントが使用される方法もまた本願に適用できることに留意すべきである。詳細はここでは説明されない。
5.構築制御ポイント動きベクトル(constructed control point motion vectors)予測法2:これについては、図8を参照されたい。
ステップ801:現在ブロックの制御ポイントの動き情報を取得する。
例えば、図8Aにおいて、CPk(k=1,2,3,又は4)はk番目の制御ポイントを示し、A0,A1,A2,B0,B1,B2,及びB3は、現在ブロックの空間的に隣接する位置であり、且つCP1,CP2,又はCP3を予測するために使用され、Tは、現在ブロックの時間的に隣接する位置であり、且つCP4を予測するために使用される。
CP1,CP2,CP3,及びCP4の座標はそれぞれ(0,0),(W,0),(H,0),(W,H)であると仮定し、ここで、WとHは現在ブロックの幅と高さを示す。
各々の制御ポイントの動き情報は以下の順序で取得される:
(1)CP1の場合、検査順序はB2→A2→B3である。B2が利用可能である場合、B2の動き情報が使用される。B2が利用可能でない場合、A2及びB3が検査される。3つの位置すべての動き情報が利用不能な場合、CP1の動き情報を取得することはできない。
(2)CP2の場合、検査順序はB0→B1である。B0が利用可能である場合、B0の動き情報がCP2のために使用される。B0が利用可能でない場合、B1が検査される。双方の位置の動き情報が利用不能な場合、CP2の動き情報を取得することはできない。
(3)CP3の場合、検査順序はA0→A1である。
(4)CP4の場合、Tの動き情報が使用される。
ここで、Xが利用可能であるということは、X(XはA0、A1、A2、B0、B1、B2、B3、又はTである)の位置におけるブロックが符号化されており、インター予測モードが使用されることを意味する。そうでない場合、Xの位置は利用可能ではない。
制御ポイントの動き情報を取得する他の方法もまた本願に適用できることに留意すべきである。詳細はここでは説明されない。
ステップ802:制御ポイントの動き情報を結合し、構築制御ポイント動き情報を取得する。
2つの制御ポイントの動き情報は、2タプルを構成するように組み合わせられ、4パラメータ・アフィン動きモデルを構築する。2つの制御ポイントを結合する方法は、{CP1,CP4},{CP2,CP3},{CP1,CP2},{CP2,CP4},{CP1,CP3},又は{CP3,CP4}であってもよい。例えば、制御ポイントCP1及びCP2を含む2タプルを使用することにより構築された4パラメータ・アフィン動きモデルは、Affine(CP1,CP2)として示される可能性がある。
3つの制御ポイントの動き情報は、3タプルを構成するように組み合わせられ、6パラメータ・アフィン動きモデルを構築する。3つの制御ポイントを結合する方法は、{CP1,CP2,CP4},{CP1,CP2,CP3},{CP2,CP3,CP4},又は{CP1,CP3,CP4}であってもよい。例えば、制御ポイントCP1、CP2、及びCP3を含む3タプルを使用することにより構築された6パラメータ・アフィン動きモデルは、Affine(CP1,CP2,CP3)として示される可能性がある。
4つの制御ポイントの動き情報は、4タプルを構成するように組み合わせられ、8パラメータ・バイリニア・モデルを構築する。制御ポイントCP1,CP2,CP3,及びCP4を含む4タプルを使用することにより構築された8パラメータ・バイリニア・モデルは、“Bilinear”(CP1,CP2,CP3,CP4)として示される可能性がある。
本願のこの実施形態では、説明を容易にするために、2つの制御ポイント(又は2つの符号化ブロック)の動き情報の組み合わせは単に2タプルとして言及され、3つの制御ポイント(又は2つの符号化ブロック)の動き情報の組み合わせは単に3タプルとして言及され、4つの制御ポイント(又は4つの符号化ブロック)の動き情報の組み合わせは単に4タプルとして言及される。
これらのモデルは事前に設定された順序でトラバースされる。結合モデルに対応する制御ポイントの動き情報が利用可能でない場合、モデルは利用可能でないと考えられる。そうでない場合、モデルの参照フレーム・インデックスが決定され、制御ポイントの動きベクトルがスケーリングされる。すべての制御ポイントのスケーリングされた動き情報が一貫している場合、モデルは無効である。モデルを制御する全ての制御ポイントの動き情報が利用可能であり、且つモデルが有効である場合、モデルを構成する制御ポイントの動き情報が動き情報候補リストに追加される。
制御ポイント動きベクトル・スケーリング法は式(12)に示される:
CurPocは現在フレームのPOC番号を示し、DesPocは現在ブロックの参照フレームのPOC番号を示し、SrcPocは制御ポイントの参照フレームのPOC番号を示し、MVsはスケーリングにより得られる動きベクトルを示し、MVは制御ポイントの動きベクトルを示す。
異なる制御ポイントの組み合わせが、同じ位置における制御ポイントに変換される可能性があることに留意すべきである。
例えば{CP1,CP4},{CP2,CP3},{CP2,CP4},{CP1,CP3}又は{CP3,CP4}の組み合わせにより得られる4パラメータ・アフィン動きモデルが、{CP1,CP2}又は{CP1,CP2,CP3}による表現に変換される。変換方法は、制御ポイントの動きベクトルと座標情報を式(2)に代入してモデル・パラメータを取得し、次いで{CP1,CP2}の座標情報を式(3)に代入して動きベクトルを取得するものである。
より直接的には、変換は以下の式(13)−(21)に従って実行されることが可能であり、ここで、Wは現在ブロックの幅を示し、Hは現在ブロックの高さを示す。式(13)−(21)において、(vx0,vy0)はCP1の動きベクトルを示し、(vx1,vy1)はCP2の動きベクトルを示し、(vx2,vy2)はCP3の動きベクトルを示し、(vx3,vy3)はCP4の動きベクトルを示す。
{CP1,CP2}は、以下の式(13)により{CP1,CP2,CP3}に変換されることが可能である。換言すれば、{CP1,CP2,CP3}におけるCP3の動きベクトルは、式(13)により決定されることが可能である:
{CP1,CP3}は、以下の式(14)により{CP1,CP2}又は{CP1,CP2,CP3}に変換されることが可能である:
{CP2,CP3}は、以下の式(15)により{CP1,CP2}又は{CP1,CP2,CP3}に変換されることが可能である:
{CP1,CP4}は、以下の式(16)又は(17)により{CP1,CP2}又は{CP1,CP2,CP3}に変換されることが可能である:
{CP2,CP4}は、以下の式(18)により{CP1,CP2}に変換されることが可能であり、{CP2,CP4}は、以下の式(18)及び(19)により{CP1,CP2,CP3}に変換されることが可能である:
{CP3,CP4}は、以下の式(20)により{CP1,CP2}に変換されることが可能であり、{CP3,CP4}は、以下の式(20)及び(21)により{CP1,CP2,CP3}に変換されることが可能である:
例えば{CP1,CP2,CP4},{CP2,CP3,CP4},又は{CP1,CP3,CP4}の組み合わせにより得られる6パラメータ・アフィン動きモデルは、{CP1,CP2,CP3}による表現に変換される。変換方法は、制御ポイントの動きベクトルと座標情報を式(4)に代入してモデル・パラメータを取得し、次いで{CP1,CP2,CP3}の座標情報を式(5)に代入して動きベクトルを取得するものである。
より直接的には、変換は以下の式(22)−(24)に従って実行されることが可能であり、ここで、Wは現在ブロックの幅を示し、Hは現在ブロックの高さを示す。式(13)−(21)において、(vx0,vy0)はCP1の動きベクトルを示し、(vx1,vy1)はCP2の動きベクトルを示し、(vx2,vy2)はCP3の動きベクトルを示し、(vx3,vy3)はCP4の動きベクトルを示す。
{CP1,CP2,CP4}は、以下の式(22)により{CP1,CP2,CP3}に変換されることが可能である:
{CP2,CP3,CP4}は、以下の式(23)により{CP1,CP2,CP3}に変換されることが可能である:
{CP1,CP3,CP4}は、以下の式(24)により{CP1,CP2,CP3}に変換されることが可能である:
6.アフィン動きモデル・ベースのアドバンスト動きベクトル予測モード(Affine AMVP mode)
(1)候補動きベクトル・リストを構築する
アフィン動きモデル・ベースのAMVPモードのための候補動きベクトル・リストは、継承制御ポイント動きベクトル予測法及び/又は構築制御ポイント動きベクトル予測法を使用することによって構築される。本願のこの実施形態では、アフィン動きモデル・ベースのAMVPモードのための候補動きベクトル・リストは、制御ポイント動きベクトル予測子候補リスト(control point motion vectors predictor candidate list)と言及されてもよい。各々の制御ポイントの動きベクトル予測子は、2つの(4パラメータ・アフィン動きモデルの)制御ポイントの動きベクトル又は3つの(6パラメータ・アフィン動きモデルの)制御ポイントの動きベクトルを含む。
オプションとして、制御ポイント動きベクトル予測子候補リストは、特定のルールに従ってプルーニング及びソートされ、特定の量に打ち切られるか又はパディングされることが可能である。
(2)最適な制御ポイント動きベクトル予測子を決定する
エンコーダ側では、現在のコーディング・ブロック内の各チャイルド動き補償ユニットの動きベクトルが、式(3)/(5)を用いることで、制御ポイント動きベクトル予測子リスト内の各制御ポイント動きベクトル予測子に基づいて取得され、各チャイルド動き補償ユニットの動きベクトルが指し示す参照フレームにおける対応する位置におけるサンプル値を取得し、サンプル値は、アフィン動きモデルを使用することで動き補償を実行するための予測子として使用される。現在のコーディング・ブロックにおける各サンプルのオリジナル値と予測子との間の平均差分が計算される。最小平均差分に対応する制御ポイント動きベクトル予測子は、最適制御ポイント動きベクトル予測子として選択され、現在のコーディング・ブロックの2つ/3つの制御ポイントの動きベクトル予測子として使用される。制御ポイント動きベクトル予測子候補リストにおける制御ポイント動きベクトル予測子の位置を表すインデックス番号は、ビットストリーム内に符号化され、デコーダへ送信される。
デコーダ側では、インデックス番号が解析され、インデックス番号に基づいて、制御ポイント動きベクトル予測子(control point motion vectors predictor,CPMVP)が、制御ポイント動きベクトル予測子候補リストから決定される。
(3)制御ポイント動きベクトルを決定する
エンコーダ側では、制御ポイント動きベクトル(control point motion vectors,CPMV)を取得するために、制御ポイント動きベクトル予測子が、特定の探索レンジ内の動き探索のための探索開始点として使用される。制御ポイント動きベクトルと制御ポイント動きベクトル予測子との間の差分(control point motion vectors differences, CPMVD)は、デコーダ側に転送される。
デコーダ側では、制御ポイント動きベクトル差分が解析され、制御ポイント動きベクトル予測子に追加されて、制御ポイント動きベクトルを取得する。
7.アフィン・マージ・モード(Affine Merge mode)
継承制御ポイント動きベクトル予測法及び/又は構築制御ポイント動きベクトル予測法を使用することにより、制御ポイント動きベクトル・マージ候補リスト(control point motion vectors merge candidate list)が構築される。
オプションとして、制御ポイント動きベクトル予測子候補リストは、特定のルールに従ってプルーニング及びソートされ、特定の量に打ち切られるか又はパディングされることが可能である。
エンコーダ側では、現在のコーディング・ブロック内の各チャイルド動き補償ユニット(特定の方法に従う分割により取得されるN1×N2サンプル・ブロック又はサンプル)の動きベクトルが、式(3)/(5)を用いることで、マージ候補リスト内の各制御ポイント動きベクトルに基づいて取得され、各チャイルド動き補償ユニットの動きベクトルが指し示す参照フレーム内の位置におけるサンプル値を取得し、サンプル値は、アフィン動き補償を実行するための予測子として使用される。現在のコーディング・ブロックにおける各サンプルのオリジナル値と予測子との間の平均差分が計算される。最小平均差分に対応する制御ポイント動きベクトルは、現在のコーディング・ブロックの2つ/3つの制御ポイントの動きベクトルとして選択される。候補リストにおける制御ポイント動きベクトルの位置を表すインデックス番号は、ビットストリーム内に符号化され、デコーダへ送信される。
デコーダ側では、インデックス番号が解析され、インデックス番号に基づいて、制御ポイント動きベクトル(control point motion vectors,CPMV)が、制御ポイント動きベクトル・マージ候補リストから決定される。
なお、本願において、「少なくとも1つ」は1つ以上を意味し、「複数の」は2つ以上を意味することに留意すべきである。「及び/又は」は、関連する対象を説明するための関連付け関係を説明しており、3つの関係が存在する可能性があることを示す。例えば、A及び/又はBは、以下のケース:Aのみが存在すること、A及びB双方が存在すること、Bのみが存在することを表す可能性があり、ここでA及びBは単数又は複数である可能性がある。文字「/」は、一般に、関連する対象間の「又は」の関係を表す。「以下のアイテム(ピース)のうちの少なくとも1つ」又は類似の表現は、単一のアイテム(ピース)又は複数のアイテム(ピース)の任意の組み合わせを含む、これらのアイテムの任意の組み合わせを示す。例えば、a,b,又はcのうちの少なくとも1つは、a、b、c、a及びb、a及びc、b及びc、又はa、b、及びcを示す可能性があり、ここで、a、b、及びcは単数又は複数である可能性がある。
本願では、現在ブロックを復号化するためにインター予測モードが使用される場合に、インター予測モードをシグナリングするために、シンタックス要素が使用されてもよい。
現在ブロックの解析に使用されるインター予測モードの現在使用されているシンタックス構造の一部については、表1を参照されたい。シンタックス構造におけるシンタックス要素は、代替的に、他の識別子によって表現されてもよいことに留意すべきである。これは本願において具体的には限定されない。
表1
シンタックス要素merge_flag[x0][y0]は、マージ・モードが現在ブロックに使用されているかどうかを示すために使用されることが可能である。例えば、merge_flag[x0][y0]=1の場合、マージ・モードが現在ブロックに使用されていることを示し、merge_flag[x0][y0]=0の場合、マージ・モードが現在ブロックに使用されていないことを示し、ここで、x0とy0はビデオ・ピクチャにおける現在ブロックの座標を示す。
変数allowAffineMergeは、現在ブロックがアフィン動きモデル・ベースのマージ・モードを使用する条件を満たしているかどうかを示すために使用されることが可能である。例えば、allowAffineInter=0の場合、アフィン動きモデル・ベースのマージ・モードを使用する条件が満たされていないことを示し、allowAffineInter=1の場合、アフィン動きモデル・ベースのマージ・モードを使用する条件が満たされていることを示す。アフィン動きモデル・ベースのマージ・モードを使用するための条件は、現在ブロックの幅と高さの両方が8以上であることであってもよく、ここで、cbWidthは現在ブロックの幅を示し、cbHeightは現在ブロックの高さを示す。換言すれば、cbWidth<8又はcbHeight<8である場合、alloweAffineMerge=0であり、cbWidth≧8及びcbHeight≧8である場合、allowAffineMerge=1である。
変数allowAffineInterは、現在ブロックがアフィン動きモデル・ベースのAMVPモードを使用する条件を満たしているかどうかを示すために使用されることが可能である。例えば、allowAffineInter=0の場合、アフィン動きモデル・ベースのAMVPモードを使用する条件は満たされていないことを示し、alloweAffineInter=1の場合、アフィン動きモデル・ベースのAMVPモードを使用する条件は満たされていることを示す。アフィン動きモデル・ベースのAMVPモードを使用するための条件は、現在ブロックの幅と高さの両方が16以上であることであってもよい。換言すれば、cbWidth<16又はcbHeight<16である場合、alloweAffineMerge=0であり、cbWidth≧16及びcbHeight≧16である場合、allowAffineMerge=1である。
シンタックス要素affine_merge_flag[x0][y0]は、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されているかどうかを示すために使用されてもよい。現在ブロックが位置付けられているスライスのタイプ(slice_type)のタイプは、Pタイプ又はBタイプである。例えば、affine_merge_flag[x0][y0]=1の場合、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されていることを示し、affine_merge_flag[x0][y0]=0の場合、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されていないことを示すが、並進運動モデル・ベースのマージ・モードが使用されてもよい。
シンタックス要素merge_idx[x0][y0]は、マージ候補リストのインデックス値を示すために使用されてもよい。
シンタックス要素affine_merge_idx[x0][y0]は、アフィン・マージ候補リストのインデックス値を示すために使用されてもよい。
シンタックス要素affine_inter_flag[x0][y0]は、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されるかどうかを示すために使用されてもよい。例えば、allowAffineInter=0の場合、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されていることを示し、allowAffineInter=1の場合、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されていないことを示すが、並進運動モデル・ベースのAMVPモードが使用されてもよい。
現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、シンタックス要素affine_type_flag[x0][y0]は、現在ブロックに関して動き補償を実行するために6パラメータ・アフィン動きモデルが使用されるかどうかを示すために、使用されてもよい。affine_type_flag[x0][y0]=0の場合、6パラメータ・アフィン動きモデルが現在ブロックに関して動き補償を実行するために使用されておらず、4パラメータ・アフィン動きモデルのみが動き補償を実行するために使用されてもよいことを示し、affine_type_flag[x0][y0]=1の場合、6パラメータ・アフィン動きモデルが現在ブロックに関して動き補償を実行するために使用されていることを示す。
表2に示すように、MotionModelIdc[x0][y0]=1の場合、4パラメータ・アフィン動きモデルが使用されていることを示し、MotionModelIdc[x0][y0]=2の場合、6パラメータ・アフィン動きモデルが使用されていることを示し、MotionModelIdc[x0][y0]=0の場合、並進動きモデルが使用されていることを示す。
表2
変数MaxNumMergeCand及びMaxAffineNumMrgCandは、最大リスト長を示し、構築された候補動きベクトル・リストの最大長を示すために使用され、inter_pred_idc[x0][y0]は予測方向を示すために使用され、PRED_L1は後方予測を示すために使用され、num_ref_idx_l0_active_minus1は前方参照フレーム・リストにおける参照フレームの量を示し、ref_idx_l0[x0][y0]は現在ブロックの前方参照フレーム・インデックス値を示し、mvd_coding(x0,y0,0,0)は第1動きベクトル差分を示し、mvp_l0_flag[x0][y0]は前方MVP候補リスト・インデックス値を示し、PRED_L0は前方予測を示し、num_ref_idx_l1_active_minus1は後方参照フレーム・リストにおける参照フレームの量を示し、ref_idx_l1[x0][y0]は現在ブロックの後方参照フレーム・インデックス値を示し、mvp_l1_flag[x0][y0]は後方MVP候補リスト・インデックス値を示す。
表1において、ae(v)は、コンテキスト・ベースの適応バイナリ算術コーディング(context-based adaptive binary arithmetic coding,cabac)によって符号化されるシンタックス要素を示す。
以下、インター予測プロセスを詳細に説明する。これについては、図9Aを参照されたい。
ステップ601:表1に示すシンタックス構造に基づいてビットストリームを解析し、現在ブロックのインター予測モードを決定する。
現在ブロックのインター予測モードがアフィン動きモデル・ベースのAMVPモードであると判定された場合に、ステップ602aが実行される。
具体的には、シンタックス要素merge_flag=0及びシンタックス要素affine_inter_flag=1の場合、それは現在ブロックのインター予測モードがアフィン動きモデル・ベースのAMVPモードであることを示す。
現在ブロックのインター予測モードがアフィン動きモデル・ベースのマージ(merge)モードであると判定された場合、ステップ602bが実行される。
具体的には、シンタックス要素merge_flag=1及びシンタックス要素affine_merge_flag=1の場合、それは現在ブロックのインター予測モードがアフィン動きモデル・ベースのAMVPモードであることを示す。
ステップ602a:アフィン動きモデル・ベースのAMVPモードに対応する候補動きベクトル・リストを作成し、ステップ603aを実行する。
現在ブロックの候補制御ポイント動きベクトルは、継承制御ポイント動きベクトル予測法及び/又は構築制御ポイント動きベクトル予測法を用いて導出され、候補動きベクトル・リストに追加される。
候補動きベクトル・リストは、2タプル・リスト(4パラメータ・アフィン動きモデルが現在のコーディング・ブロックに使用される)又は3タプル・リストを含む可能性がある。2タプル・リストは、4パラメータ・アフィン動きモデルを構築するために使用される1つ以上の2タプルを含む。3タプル・リストは、6パラメータ・アフィン動きモデルを構築するために使用される1つ以上の3タプルを含む。
オプションとして、候補動きベクトルの2タプル/3タプル・リストは、特定のルールに従ってプルーニング及びソートされ、特定の量に打ち切られるか又はパディングされることが可能である。
A1:継承制御ポイント動きベクトル予測法を使用することにより候補動きベクトル・リストを構築するプロセスが説明される。
図7が一例として使用される。現在ブロック周辺の隣接ブロックは、図7におけるA1→B1→B0→A0→B2の順序でトラバースされ、隣接ブロックが位置付けられているアフィン・コーディング・ブロックを発見し、アフィン・コーディング・ブロックの制御ポイント動き情報を取得する。更に、現在ブロックの候補の制御ポイント動き情報は、アフィン・コーディング・ブロックの制御ポイント動き情報に基づいて構築された運動モデルを使用することにより導出される。詳細については、3における継承制御ポイント動きベクトル予測法の関連する説明を参照されたい。詳細はここでは説明されない。
例えば、現在ブロックに使用されるアフィン動きモデルが4パラメータ・アフィン動きモデルである場合において(即ち、MotionModelIdc=1)、4パラメータ・アフィン動きモデルが隣接するアフィン復号化ブロックに使用される場合、アフィン復号化ブロックの2つの制御ポイントの動きベクトル:左上制御ポイント(x4,y4)の動きベクトル(vx4,vy4)及び右上制御ポイント(x5,y5)の動きベクトル(vx5,vy5)が取得される。アフィン復号化ブロックは、アフィン動きモデルを使用することにより符号化フェーズで予測されるアフィン・コーディング・ブロックである。
現在ブロックの左上制御ポイント及び右上制御ポイントの動きベクトルはそれぞれ、隣接するアフィン復号化ブロックの2つの制御ポイントを含む4パラメータ・アフィン動きモデルを使用することにより、4パラメータ・アフィン動きモデルに対応する式(6)及び式(7)に従って導出される。
6パラメータ・アフィン動きモデルが隣接するアフィン復号化ブロックに使用される場合、隣接するアフィン復号化ブロックの3つの制御ポイントの動きベクトル、例えば、図7における左上制御ポイント(x4,y4)の動きベクトル(vx4,vy4)、右上制御ポイント(x5,y5)の動きベクトル(vx5,vy5)、及び左下制御ポイント(x6,y6)の動きベクトル(vx6,vy6)が取得される。
現在ブロックの左上制御ポイント及び右上制御ポイントの動きベクトルはそれぞれ、隣接するアフィン復号ブロックの3つの制御ポイントを含む6パラメータ・アフィン動きモデルを使用することにより、6パラメータ・アフィン動きモデルに対応する式(8)及び式(9)に従って導出される。
例えば、現在の復号化ブロックに使用されるアフィン動きモデルは、6パラメータ・アフィン動きモデルである(即ち、MotionModelIdc=2)。
隣接するアフィン復号化ブロックに使用されるアフィン動きモデルが、6パラメータ・アフィン動きモデルである場合、隣接するアフィン復号化ブロックの3つの制御ポイントの動きベクトル、例えば、図7における左上制御ポイント(x4,y4)の動きベクトル(vx4,vy4)、右上制御ポイントの動きベクトル(vx5,vy5)、及び左下制御ポイント(x6,y6)の動きベクトル(vx6,vy6)が取得される。
現在ブロックの左上制御ポイント、右上制御ポイント、及び左下制御ポイントの動きベクトルはそれぞれ、隣接するアフィン復号化ブロックの3つの制御ポイントを含む6パラメータ・アフィン動きモデルを使用することにより、6パラメータ・アフィン動きモデルに対応する式(8)、(9)及び式(10)に従って導出される。
隣接するアフィン復号化ブロックに使用されるアフィン動きモデルが、4パラメータ・アフィン動きモデルである場合、アフィン復号化ブロックの2つの制御ポイントの動きベクトル、例えば、左上制御ポイント(x4,y4)の動きベクトル(vx4,vy4)、及び右上制御ポイント(x5,y5)の動きベクトル(vx5,vy5)が取得される。
現在ブロックの左上制御ポイント、右上制御ポイント、及び左下制御ポイントの動きベクトルはそれぞれ、隣接するアフィン復号化ブロックの2つの制御ポイントを含む4パラメータ・アフィン動きモデルを使用することにより、4パラメータ・アフィン動きモデルに対応する式(6)及び式(7)に従って導出される。
他の運動モデル、候補位置、検索順序も本願に適用可能であることに留意すべきである。詳細はここでは説明されない。隣接する及び現在のコーディング・ブロックの運動モデルを表現するために他の制御ポイントが使用される方法もまた本願に適用可能であることに留意すべきである。詳細はここでは説明されない。
A2:構築制御ポイント動きベクトル予測法を使用することにより候補動きベクトル・リストを構築するプロセスが説明される。
例えば、現在の復号化ブロックに使用されているアフィン動きモデルが4パラメータ・アフィン動きモデルである場合(即ち、MotionModelIdc=1)、現在のコーディング・ブロックの左上サンプル及び右上サンプルの動きベクトルは、現在のコーディング・ブロックの隣接する符号化ブロックの動き情報を使用することにより決定される。具体的には、構築制御ポイント動きベクトル予測法1又は構築制御ポイント動きベクトル予測法2を使用することにより、候補動きベクトル・リストが構築されることが可能である。具体的な方法については、4及び5の説明を参照されたい。詳細はここでは説明されない。
例えば、現在の復号化ブロックに使用されているアフィン運動モデルが6パラメータ・アフィン運動モデルである場合(即ち、MotionModelIdc=2)、現在のコーディング・ブロックの左上サンプル、右上サンプル、及び左下サンプルの動きベクトルは、現在のコーディング・ブロックの隣接する符号化ブロックの動き情報を使用することにより決定される。具体的には、候補動きベクトル・リストは、構築制御ポイント動きベクトル予測法1又は構築制御ポイント動きベクトル予測法2を使用することにより構成されることが可能である。具体的な方法については、4及び5の説明を参照されたい。詳細はここでは説明されない。
制御ポイント動き情報を組み合わせる別の方法もまた本願に適用可能であることに留意すべきである。詳細はここでは説明されない。
ステップ603a:ビットストリームを解析して最適な制御ポイント動きベクトル予測子を決定し、ステップ604aを実行する。
B1:現在の復号化ブロックに使用されているアフィン動きモデルが4パラメータ・アフィン動きモデルである場合(MotionModelIdc=1)、インデックス番号が解析され、インデックス番号に基づいて、2つの制御ポイントにおける最適な動きベクトル予測子が、候補動きベクトル・リストから決定される。
例えば、インデックス番号は、mvp_l0_flag又はmvp_l1_flagである。
B2:現在の復号化ブロックに使用されているアフィン動きモデルが6パラメータ・アフィン動きモデルである場合(MotionModelIdc=2)、インデックス番号が解析され、インデックス番号に基づいて、3つの制御ポイントにおける最適な動きベクトル予測子が、候補動きベクトル・リストから決定される。
ステップ604a:ビットストリームを解析して、制御ポイント動きベクトルを決定する。
C1:現在の復号化ブロックに使用されているアフィン動きモデルが4パラメータ・アフィン動きモデルである場合(MotionModelIdc=1)、現在ブロックの2つの制御ポイントの動きベクトル差分が、復号化によりビットストリームから取得され、制御ポイントの動きベクトルは、制御ポイントの動きベクトル差分と動きベクトル予測子と基づいて取得される。前方予測を一例として使用すると、2つの制御ポイントの動きベクトル差分はそれぞれ、mvd_coding(x0,y0,0,0)及びmvd_coding(x0,y0,0,1)である。
例えば、左上制御ポイント及び右上制御ポイントの動きベクトル差分が、復号化によりビットストリームから取得され、それぞれ動きベクトル予測子に加算され、現在ブロックの左上制御ポイント及び右上制御ポイントの動きベクトルを取得する。
C2:現在の復号化ブロックに使用されているアフィン動きモデルは、6パラメータ・アフィン動きモデルである(MotionModelIdc=2)。
現在ブロックの3つの制御ポイントの動きベクトル差分が、復号化によりビットストリームから取得され、制御ポイント動きベクトルが、制御ポイントの動きベクトル差分と動きベクトル予測子とに基づいて取得される。前方予測を一例として使用すると、3つの制御ポイントの動きベクトル差分はそれぞれ、mvd_coding(x0,y0,0,0),mvd_coding(x0,y0,0,1)及びmvd_coding(x0,y0,0,2)である。
例えば、左上制御ポイント、右上制御ポイント、及び左下制御ポイントの動きベクトル差分が、復号化によりビットストリームから取得され、それぞれ動きベクトル予測子に加算され、現在ブロックの左上制御ポイント、右上制御ポイント、及び左下制御ポイントの動きベクトルを取得する。
ステップ605a:現在の復号化ブロックに使用されている制御ポイントの動き情報とアフィン動きモデルとに基づいて、現在ブロックにおける各サブブロックの動きベクトルを取得する。
現在のアフィン復号化ブロック内の各サブブロックに関し(1つのサブブロックは、1つの動き補償ユニットと同等であり、サブブロックの幅及び高さは、現在ブロックの幅及び高さよりも小さい)、動き補償ユニット内の事前に設定された位置におけるサンプルの動き情報が、動き補償ユニット内のすべてのサンプルの動き情報を表現するために使用されることが可能である。動き補償ユニットのサイズがMxNであると仮定すると、事前に設定された位置におけるサンプルは、中心サンプル(M/2,N/2)、左上サンプル(0,0)、右上サンプル(M−1,0)、又は動き補償ユニットの別の位置におけるサンプルであってもよい。以下、説明のための一例として、動き補償ユニットの中心サンプルを使用する。図9Cを参照すると、V0は左上制御ポイントの動きベクトルを示し、V1は右上制御ポイントの動きベクトルを示している。小さなボックスの各々は1つの補償ユニットを示す。
現在のアフィン復号化ブロックの左上サンプルに対する動き補償ユニットの中心サンプルの座標は、式(25)を使用することにより算出され、ここで、iは水平方向の(左から右への)i番目の動き補償ユニットを示し、jは垂直方向の(上から下への)j番目の動き補償ユニットを示し、(x(i,j),y(i,j))は現在のアフィン復号化ブロックの左上サンプルに対する(i,j)番目の動き補償ユニットの中心サンプルの座標を示す。
現在のアフィン復号化ブロックに使用されるアフィン動きモデルが6パラメータ・アフィン動きモデルである場合には、(x(i,j),y(i,j))が、6パラメータ・アフィン動きモデルに対応する式(26)に代入され、各動き補償ユニットの中心サンプルの動きベクトルを取得し、中心サンプルの動きベクトルは、動き補償ユニットにおけるすべてのサンプルの動きベクトル(vx(i,j),vy(i,j))として使用される。
現在のアフィン復号化ブロックに使用されるアフィン動きモデルが4パラメータ・アフィン動きモデルである場合には、(x
(i,j),y
(i,j))が、4パラメータ・アフィン動きモデルに対応する式(27)に代入され、各動き補償ユニットの中心サンプルの動きベクトルを取得し、中心サンプルの動きベクトルは、動き補償ユニットにおけるすべてのサンプルの動きベクトル(vx
(i,j),vy
(i,j))として使用される。
ステップ606a:サブブロックの決定された動きベクトルに基づいて各サブブロックに関して動き補償を実行し、サブブロックのサンプル予測子を取得する。
ステップ602b:アフィン動きモデル・ベースのマージ・モードに対応する動き情報候補リストを構築する。
具体的には、アフィン動きモデル・ベースのマージ・モードに対応する動き情報候補リストは、継承制御ポイント動きベクトル予測法及び/又は構築制御ポイント動きベクトル予測法を使用することにより構築されることが可能である。
オプションとして、動き情報候補リストは、特定のルールに従ってプルーニング及びソートされ、特定の量に打ち切られるか又はパディングされることが可能である。
D1:継承制御ポイント動きベクトル予測法を使用することにより候補動きベクトル・リストを構築するプロセスが説明される。
現在ブロックの候補制御ポイント動き情報は、継承制御ポイント動きベクトル予測法を使用することにより導出され、動き情報候補リストに追加される。
現在ブロック周辺の隣接ブロックは、図8AにおけるA1→B1→B0→A0→B2の順序でトラバースされ、位置が突き止められているアフィン・コーディング・ブロックを発見し、アフィン・コーディング・ブロックの制御ポイント動き情報を取得する。更に、現在ブロックの候補制御ポイント動き情報が、アフィン・コーディング・ブロックの動きモデルを使用することにより導出される。
候補動きベクトル・リストが空である場合、候補制御ポイント動き情報が候補リストに追加される。そうでない場合、候補動きベクトル・リストにおける動き情報は、順次トラバースされ、候補制御ポイント動き情報と同一の動き情報が、候補動きベクトル・リスト内に存在するか否かを検査する。候補制御ポイント動き情報と同一の動き情報が候補動きベクトル・リスト内に存在しない場合、候補制御ポイント動き情報が、候補動きベクトル・リストに追加される。
2つの候補動き情報が同一であるかどうかを判定するには、順方向参照フレーム、逆方向参照フレーム、順方向動きベクトル各々の水平及び垂直成分、逆方向動きベクトル各々の水平及び垂直成分が、2つの候補動き情報において、同一であるかどうかを順次判定する必要がある。2つの候補動き情報は、前述の要素のすべてが異なる場合に限り、異なるものと考えられる。
候補動きベクトル・リスト内の動き情報の個数が、最大リスト長MaxAffineNumMrgCand(MaxAffineNumMrgCandは、1,2,3,4,又は5のような正の整数であり、以下、一例として5である長さを使用することにより説明を行い、詳細はここでは説明されない)に到達する場合、候補リストは完備である。そうでない場合、次の隣接ブロックがトラバースされる。
D2:現在ブロックの候補の制御ポイント動き情報は、構築制御ポイント動きベクトル予測方法を使用することにより導出され、動き情報候補リストに追加される。これについては、図9Bを参照されたい。
ステップ601c:現在ブロックの制御ポイントの動き情報を取得する。これについては、5における構築制御ポイント動きベクトル予測法2におけるステップ801を参照されたい。詳細はここで再び説明されない。
ステップ602c:制御ポイントの動き情報を結合し、構築制御ポイント動き情報を取得する。これについては、図8Bのステップ801を参照されたい。詳細はここで再び説明されない。
ステップ603c:構築制御ポイントの動き情報を候補の動きベクトル・リストに追加する。
候補リストの長さが最大リスト長MaxAffineNumMrgCandより短い場合、候補制御ポイント動き情報として有効な組み合わせを取得するために、事前に設定された順序で組み合わせがトラバースされる。この場合において、候補動きベクトル・リストが空である場合、候補制御ポイント動き情報が候補動きベクトル・リストに追加される。そうでない場合、候補動きベクトル・リスト内の動き情報が順次トラバースされ、候補制御ポイント動き情報と同一である動き情報が、候補動きベクトル・リスト内に存在するか否かを検査する。候補制御ポイント動き情報と同一の動き情報が候補動きベクトル・リストに存在しない場合、候補制御ポイント動き情報が候補動きベクトル・リストに追加される。
例えば、事前に設定された順序は次のとおりである:Affine(CP1,CP2,CP3)→Affine (CP1,CP2,CP4)→Affine(CP1,CP3,CP4)→Affine(CP2,CP3,CP4)→Affine(CP1,CP2)→Affine(CP1,CP3)→Affine(CP2,CP3)→Affine(CP1,CP4)→Affine(CP2,CP4)→Affine(CP3,CP4)。合計10個の組み合わせが存在する。
組み合わせに対応する制御ポイント動き情報が利用可能でない場合、その組み合わせは利用可能でないと考えられる。組み合わせが利用可能である場合、組み合わせの参照フレーム・インデックスが決定され(2つの制御ポイントの場合には、より小さな参照フレーム・インデックスが組み合わせの参照フレーム・インデックスとして選択され、2つより多い制御ポイントの場合には、最も頻繁に現れる参照フレーム・インデックスが選択され、複数の参照フレーム・インデックスが現れる回数が同一であれば、最小参照フレーム・インデックスが組み合わせの参照フレーム・インデックスとして選択される)、制御ポイントの動きベクトルがスケーリングされる。すべての制御ポイントのスケーリングされた動き情報が一貫している場合、その組み合わせは無効である。
オプションとして、本願のこの実施形態では、候補動きベクトル・リストはパディングされてもよい。例えば、前述のトラバース処理の後、候補動きベクトル・リストの長さが最大リスト長MaxAffineNumMrgCandより短い場合、候補動きベクトル・リストは、リスト長がMaxAffineNumMrgCandに等しくなるまで、パディングされてもよい。
パディングは、ゼロ動きベクトル・パディング法を使用するか、又は既存のリスト内の既存の候補動き情報を結合又は重み付け平均化することによって、実行されることが可能である。候補動きベクトル・リストをパディングするための別の方法も、本願に適用可能であることに留意すべきである。詳細はここで説明されない。
ステップS603b:ビットストリームを解析して、最適な制御ポイント動き情報を決定する。
インデックス番号は解析され、インデックス番号に基づいて、最適な制御ポイント動き情報が候補動きベクトル・リストから決定される。
ステップ604b:現在の復号化ブロックに使用されている最適な制御ポイント動き情報とアフィン動きモデルとに基づいて、現在ブロックの各サブブロックの動きベクトルを取得する。
このステップはステップ605aと同じである。
ステップ605b:サブブロックの決定された動きベクトルに基づいて、各サブブロックに関して動き補償を実行し、サブブロックのサンプル予測子を取得する。
本発明における技術は、コンテキスト適応バイナリ算術コーディング(CABAC)エントロピー・デコーダ、又は確率間隔分割エントロピー(PIPE)デコーダ又は関連するデコーダのような別のエントロピー・デコーダに関連する。算術復号化は、シンボルが算術復号化において非整数長コードにマッピングされることが可能であるので、高い復号化効率を有する多くの圧縮アルゴリズムで使用されるエントロピー復号化の一形態である。一般に、CABACによるデータ・シンボルを復号化することは、以下のステップのうちの1つ以上を含む:
(1)二進化:復号化対象のシンボルがバイナリでない場合、シンボルは「バイナリ」シーケンスにマッピングされ、各バイナリ・ビットの値は「0」又は「1」を有することが可能である。
(2)コンテキスト割り当て:(通常モードにおいて)各バイナリ・ビットに1つのコンテキストが割り当てられる。コンテキスト・モデルは、バイナリ・ビットに対して利用可能な情報に基づいて、所与のバイナリ・ビットに対するコンテキストを計算するための方法を決定するために使用される。その情報は、例えば、以前に復号化されたシンボルの値又は2進数である。
(3)二進符号化:算術エンコーダはバイナリ・ビットを符号化する。バイナリ・ビットを符号化するために、算術エンコーダは、バイナリ・ビットの値の確率を入力として必要とし、その確率は、バイナリ・ビットの値が「0」に等しい確率、及びバイナリ・ビットの値が「1」に等しい確率である。各コンテキストの(推定された)確率は、「コンテキスト状態」と呼ばれる整数値で表現される。各コンテキストは状態を有し、従って、状態(即ち、推定された確率)は、1つのコンテキストが割り当てられるバイナリ・ビットに対しては同一であり、コンテキスト間で異なる。
(4)状態更新:コンテキストを選択する確率(状態)は、バイナリ・ビットの実際の復号化された値に基づいて更新される(例えば、バイナリ・ビットの値が「1」である場合、「1」の確率は増やされる)。
従来技術では、アフィン動きモデルのパラメータ情報、例えば表1におけるaffine_merge_flag,affine_merge_idx,affine_inter_flag,及びaffine_type_flagをCABACにより解析する場合、異なるコンテキストが、CABAC解析において異なるシンタックス要素に対して使用されることを必要とする。本発明では、CABACで使用されるコンテキストの量が削減される。従って、コンテキストを記憶するためにエンコーダ及びデコーダによって必要とされる、より少ない空間が、コーディング効率に影響することなく占有される。
affine_merge_flag及びaffine_inter_flagについては、2つの異なるコンテキスト・セット(各コンテキスト・セットは3つのコンテキストを含む)が従来技術におけるCABACで使用されている。各セットで使用される実際のコンテキスト・インデックスは、表3に示されるように、現在の復号化ブロックの左隣接ブロックにおける同じシンタックス要素の値と、現在の復号化ブロックの上隣接ブロックの同じシンタックス要素の値との合計に等しい。ここで、avallableLは、現在の復号化ブロックの左隣接ブロックの利用可能性(左隣接ブロックが存在し且つ復号化されているか否か)を示し、avallableAは、現在の復号化ブロックの上隣接ブロックの利用可能性(上隣接ブロックが存在し且つ復号化されているか否か)を示す。従来技術では、affine_merge_flag及びaffine_inter_flagのコンテキストの量は6である。
表3 コンテキスト・インデックス
図10は、本発明の一実施形態によるビデオ復号化方法の手順を記載している。この実施形態は、図3に示すビデオ・デコーダによって実行されることが可能である。図10に示すように、本方法は、以下のステップを含む。
1001.受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得し、ここで、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む。
実装において、現在ブロックにおけるシンタックス要素1はaffine_merge_flagであり、又は現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
実装において、現在ブロックにおけるシンタックス要素1はsubblock_merge_flagであり、又は現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
本発明のこの実施形態における現在ブロックは、CUであってもよい。
1002.現在ブロックにおけるエントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行する。現在ブロックにおけるシンタックス要素1に関するエントロピー復号化は、事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー復号化は、コンテキスト・モデルを使用することにより完了する。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1003.現在ブロックにおけるシンタックス要素であり且つエントロピー復号化によって取得されるものに基づいて、現在ブロックに関して予測処理を実行し、現在ブロックの予測ブロックを取得する。
このステップは、具体的には、図3の予測処理ユニット360によって実行されてもよい。
1004.現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得する。
このステップは、具体的には、図3の再構成ユニット314によって実行されてもよい。
この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、デコーダは、エントロピー復号化を実行する際にコンテキスト・モデルを確認する必要がなく、デコーダによりビデオ復号化を実行する復号化効率を改善する。更に、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とするので、ビデオ・デコーダのより少ないストレージ空間が占有される。
図10において説明されるビデオ復号化方法に対応して、本発明の実施形態は更に符号化方法を提供し、符号化方法は:
現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化が実行される場合に、現在ブロックにおけるシンタックス要素1に関するエントロピー符号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー符号化はコンテキスト・モデルを使用することにより完了する、ステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデルは、図10に記載されるビデオ復号化方法におけるコンテキスト・モデルと同じである。この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、エンコーダは、エントロピー復号化を実行する際にコンテキスト・モデルを確認する必要がなく、エンコーダによりビデオ符号化を実行する復号化効率を改善する。更に、ビデオ・エンコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とするので、ビデオ・エンコーダのより少ないストレージ空間が占有される。
図11は、本発明の別の実施形態によるビデオ復号化方法の手順を記載している。この実施形態は、図3に示すビデオ・デコーダによって実行されることが可能である。図11に示すように、本方法は以下のステップを含む。
1101.受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得する。現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む。
実装において、現在ブロックにおけるシンタックス要素1はaffine_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
実装において、現在ブロックにおけるシンタックス要素1はsubblock_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1102.エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得する。現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは、事前に設定されたコンテキスト・モデル・セットから決定されるか、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは、事前に設定されたコンテキスト・モデル・セットから決定される。
ビデオ・デコーダは、シンタックス要素1とシンタックス要素2に対して唯1つのコンテキスト・モデル・セットを記憶することを必要とする。
幾つかの実装において、事前に設定されたコンテキスト・モデル・セットは唯2つのコンテキスト・モデルを含む。幾つかの他の実装において、事前に設定されたコンテキスト・モデル・セットは、3つのコンテキスト・モデルのみを含む。事前に設定されたコンテキスト・モデル・セットは、代替的に、4つ、5つ、又は6つのコンテキスト・モデルを含む可能性があることを理解することができる。事前に設定されたコンテキスト・モデル・セットに含まれるコンテキスト・モデルの量は、本発明のこの実施形態では限定されない。
実装において、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルが事前に設定されたコンテキスト・モデル・セットから決定されることは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスを決定することを含み、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルを示すために使用される。
別の実装において、現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルが事前に設定されたコンテキスト・モデル・セットから決定されることは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスを決定することを含み、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルを示すために使用される。
例えば、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が3である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計であり、又は現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計である。
具体的には、シンタックス要素1affine_merge_flag及びシンタックス要素2affine_inter_flagは、1つのコンテキスト・モデル・セットを共有することが可能である(セットは3つのコンテキスト・モデルを含む)。各セットで使用される実際のコンテキスト・インデックスは、表4に示すように、現在の復号化ブロックの左隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値と、現在の復号化ブロックの上隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値とを加算することによって得られる結果に等しい。ここで、「|」はOR演算を示す。
表4 本発明におけるコンテキスト・インデックス
例えば、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が2である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果であり、又は現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果である。
具体的には、シンタックス要素1affine_merge_flag及びシンタックス要素2affine_inter_flagは、1つのコンテキスト・モデル・セットを共有する(セットは2つのコンテキスト・モデルを含む)。各セットで使用される実際のコンテキスト・インデックスは、表5に示すように、現在の復号化ブロックの左隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値と、現在の復号化ブロックの上隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値とに、OR演算を実行することによって得られる結果に等しい。ここで、「|」はOR演算を示す。本発明のこの実施形態では、affine_merge_flag及びaffine_inter_flagに関するコンテキストの量は2に減少する。
表5 本発明におけるコンテキスト・インデックス
1103.現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行する。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1104.現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得する。
このステップは、具体的には、図3の予測処理ユニット360によって実行されてもよい。
1105.現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得する。
このステップは、具体的には、図3の再構成ユニット314によって実行されてもよい。
この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
図11において説明されるビデオ復号化方法に対応して、本発明の実施形態は更に符号化方法を提供し、符号化方法は、
現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー符号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデル・セットは、図11に記載されるビデオ復号化方法におけるコンテキスト・モデル・セットと同じである。この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は、1つのコンテキスト・モデルを共有するので、ビデオ・エンコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・エンコーダのより少ないストレージ空間を占有する。
図12は、本発明の実施形態によるビデオ復号化方法の手順を記載している。この実施形態は、図3に示すビデオ・デコーダによって実行されてもよい。図12に示すように、本方法は、以下のステップを含む。
1201.受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得する。現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含む。
実装において、現在ブロックにおけるシンタックス要素3はmerge_idxであり、現在ブロックにおけるシンタックス要素4はaffine_merge_idxである。
実装において、現在ブロックにおけるシンタックス要素3はmerge_idxであり、現在ブロックにおけるシンタックス要素4はsubblock_merge_idxである。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1202.エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得する。現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは、事前に設定されたコンテキスト・モデル・セットから決定されるか、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは、事前に設定されたコンテキスト・モデルから決定される。
実装において、事前に設定されたコンテキスト・モデル・セットに含まれるコンテキスト・モデルの量は5である。事前に設定されたコンテキスト・モデル・セットに含まれるコンテキスト・モデルの量は、代替的に、1、2、3、又は4のような別の値であってもよいことを理解することができる。事前に設定されたコンテキスト・モデル・セットに含まれるコンテキスト・モデルの量が1である場合、事前に設定されたコンテキスト・モデル・セットは1つのコンテキスト・モデルである。事前に設定されたコンテキスト・モデル・セットに含まれるコンテキスト・モデルの量は、本発明のこの実施形態では限定されない。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1203.現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行する。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1204.現在ブロックにおけるシンタックス要素であり且つエントロピー復号化によって取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得する。
このステップは、具体的には、図3の予測処理ユニット360によって実行されてもよい。
1205.現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得する。
このステップは、具体的には、図3の再構成ユニット314によって実行されてもよい。
この実施形態では、現在ブロックにおけるシンタックス要素3及びシンタックス要素4は、1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素3及びシンタックス要素4のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
図12において説明されるビデオ復号化方法に対応して、本発明の実施形態は更に符号化方法を提供し、符号化方法は、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含む、ステップと、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー符号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデル・セットは、図12に記載されるビデオ復号化方法におけるコンテキスト・モデル・セットと同じである。この実施形態では、現在ブロックにおけるシンタックス要素3及びシンタックス要素4は、1つのコンテキスト・モデルを共有するので、ビデオ・エンコーダは、シンタックス要素3及びシンタックス要素4のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・エンコーダのより少ないストレージ空間を占有する。
本発明の実施形態は、エントロピー復号化ユニット304、予測処理ユニット360、及び再構成ユニット314を含むビデオ・デコーダ30を提供する。
エントロピー復号化ユニット304は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成され、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー復号化ユニット304は、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成され、現在ブロックにおけるシンタックス要素1に関するエントロピー復号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー復号化はコンテキスト・モデルを使用することにより完了する。
実装において、現在ブロックにおけるシンタックス要素1はaffine_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
実装において、現在ブロックにおけるシンタックス要素1はsubblock_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
予測処理ユニット360は、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化によって取得されるシンタックス要素に基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成される。
再構成ユニット314は、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成される。
この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、デコーダは、エントロピー復号化を実行する際にコンテキスト・モデルを確認する必要がなく、デコーダによりビデオ復号化を実行する復号化効率を改善する。更に、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とするので、ビデオ・デコーダのより少ないストレージ空間が占有される。
相応して、本発明の実施形態はビデオ・エンコーダ20を提供し、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニット270であって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されており、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化が実行される場合に、現在ブロックにおけるシンタックス要素1に関するエントロピー符号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー符号化はコンテキスト・モデルを使用することにより完了する、エントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力272とを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデルは、図10に記載される方法におけるコンテキスト・モデルと同じである。この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、エンコーダは、エントロピー復号化を実行する際にコンテキスト・モデルを確認する必要がなく、エンコーダによりビデオ符号化を実行する復号化効率を改善する。更に、ビデオ・エンコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とするので、ビデオ・エンコーダのより少ないストレージ空間が占有される。
本発明の別の実施形態は、エントロピー復号化ユニット304、予測処理ユニット360、及び再構成ユニット314を含むビデオ・デコーダ30を提供する。
エントロピー復号化ユニット304は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成され、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー復号化ユニット304は、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー復号化ユニットは、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成されている。
実装において、現在ブロックにおけるシンタックス要素1はaffine_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
実装において、現在ブロックにおけるシンタックス要素1はsubblock_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
実装において、エントロピー復号化ユニット304は、具体的には、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスを決定するように構成されることが可能であり、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルを示すために使用され、又は、
エントロピー復号化ユニットは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスを決定するように構成されることが可能であり、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルを示すために使用される。
例えば、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計である。
例えば、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、前記上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果である。
予測処理ユニット360は、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化によって取得されるものに基づいて、現在ブロックに関して予測処理を実行し、現在ブロックの予測ブロックを取得するように構成される。
再構成ユニット314は、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成される。
この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は、1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2に対して唯1つのコンテキスト・モデルのみを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
相応して、本発明の実施形態は更にビデオ・エンコーダ20を提供し、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニット270であって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー符号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されているエントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力272とを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデル・セットは、図11に記載されるビデオ復号化方法におけるコンテキスト・モデル・セットと同じである。この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、ビデオ・エンコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・エンコーダのより少ないストレージ空間を占有する。
本発明の別の実施形態は、エントロピー復号化ユニット304、予測処理ユニット360、及び再構成ユニット314を含むビデオ・デコーダ30を提供する。
エントロピー復号化ユニット304は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成され、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含み、エントロピー復号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー復号化ユニットは、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成されている。
事前に設定されたコンテキスト・モデル・セットは、1つ、2つ、3つ、4つ、又は5つのコンテキスト・モデルを含む。事前に設定されたコンテキスト・モデル・セットが1つのコンテキスト・モデルのみを含む場合、事前に設定されたコンテキスト・モデル・セットは1つのコンテキスト・モデルであることを理解することができる。
実装において、現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、affine_merge_idxであり、現在ブロックのアフィン・マージ候補リストのインデックス値を示すために使用され、又は
現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、subblock_merge_idxであり、サブブロック・マージ候補リストのインデックス値を示すために使用される。
予測処理ユニット360は、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成される。
再構成ユニット314は、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成される。
この実施形態では、現在ブロックにおけるシンタックス要素3及びシンタックス要素4は1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素3及びシンタックス要素4のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
相応して、本発明の実施形態は更にビデオ・エンコーダを提供し、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニット270であって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含み、エントロピー符号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されているエントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力272とを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデル・セットは、図12に記載されるビデオ復号化方法におけるコンテキスト・モデル・セットと同じである。この実施形態では、現在ブロックにおけるシンタックス要素3及びシンタックス要素4は1つのコンテキスト・モデルを共有するので、ビデオ・エンコーダは、シンタックス要素3及びシンタックス要素4のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・エンコーダのより少ないストレージ空間を占有する。
本発明の実施形態1は、affine_merge_flag及びaffine_inter_flagが、1つのコンテキスト・セットを共有すること(セットは3つのコンテキストを含む)、及び、各セットで使用される実際のコンテキスト・インデックスは、表4に示すように、現在の復号化ブロックの左隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値と、現在の復号化ブロックの上隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値とを加算することによって得られる結果に等しいこと、を提案する。ここで、「|」はOR演算を示す。本発明の実施形態1では、affine_merge_flag及びaffine_inter_flagに関するコンテキストの量は3に減少する。
本発明の実施形態2は、affine_merge_flag及びaffine_inter_flagが、1つのコンテキスト・セットを共有すること(セットは2つのコンテキストを含む)、及び、各セットで使用される実際のコンテキスト・インデックスは、表5に示すように、現在の復号化ブロックの左隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値と、現在の復号化ブロックの上隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値とに、OR演算を実行することによって得られる結果に等しいこと、を提案する。ここで、「|」はOR演算を示す。本発明の実施形態2では、affine_merge_flag及びaffine_inter_flagに関するコンテキストの量は2に減少する。
本発明の実施形態3は、affine_merge_flagとaffine_inter_flagとが1つのコンテキストを共有することを提案する。本発明の実施形態3では、affine_merge_flagコンテキストの数及びaffine_inter_flagコンテキストの数は1に減少する。
先行技術では、打ち切られた単進符号を使用することにより、二進化がmerge_idx及びaffine_merge_idxに関して実行され、2つの異なるコンテキスト・セット(各コンテキスト・セットは5つのコンテキストを含む)がCABACにおいて使用され、異なるコンテキストが、二値化後の各バイナリ・ビットに対して使用される。先行技術において、merge_idx及びaffine_merge_idxのコンテキストの量は10である。
本発明の実施形態4は、merge_idx及びaffine_merge_idxが1つのコンテキスト・セットを共有することを提案する(各コンテキスト・セットは5つのコンテキストを含む)。本発明の実施形態4では、merge_idx及びaffine_merge_idxのコンテキストの量は5に減少する。
幾つかの他の技術において、表1のシンタックス要素affine_merge_flag[x0][y0]は、subblock_merge_flag[x0][y0]に置換されてもよく、サブブロック・ベースのマージ・モードが現在ブロックに使用されているかどうかを示すために使用され、表1のシンタックス要素affine_merge_idx[x0][y0]は、subblock_merge_idx[x0][y0]に置換されてもよく、サブブロック・マージ候補リストのインデックス値を示すために使用される。
この場合において、本発明の実施形態1ないし実施形態4が依然として適用可能であり、即ちsubblock_merge_flag及びaffine_inter_flagは1つのコンテキスト・セット(又はコンテキスト)及び1つのインデックス取得方法を共有し、merge_idx及びsubblock_merge_idxは1つのコンテキスト・セット(又はコンテキスト)を共有する。
本発明の実施形態は、更に、上記の何れかの方法を実行するように構成された実行回路を含むビデオ・デコーダを提供する。
本発明の実施形態は、更に、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに結合された不揮発性のコンピュータ読み取り可能な記憶媒体とを含むビデオ・デコーダを提供する。不揮発性のコンピュータ読み取り可能な記憶媒体は、少なくとも1つのプロセッサにより実行されることが可能なコンピュータ・プログラムを記憶し、コンピュータ・プログラムが少なくとも1つのプロセッサにより実行されると、ビデオ・デコーダは、上記の何れかの方法を実行するように動作することが可能である。
本発明の実施形態は、プロセッサにより実行されることが可能なコンピュータ・プログラムを記憶するように構成されたコンピュータ読み取り可能な記憶媒体を更に提供する。コンピュータ・プログラムが少なくとも1つのプロセッサにより実行されると、上記の何れかの方法が実行される。
本発明の実施形態は、更に、コンピュータ・プログラムを提供する。コンピュータ・プログラムが実行されると、上記の何れかの方法が実行される。
前述の1つ以上の例において、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせによって実現されることが可能である。ソフトウェアで実現される場合、機能は、コンピュータ読み取り可能な媒体に記憶されるか又はそれで伝送され、1つ以上の命令又はコードとしてハードウェア・ベースの処理ユニットによって実行されることが可能である。コンピュータ読み取り可能な媒体は、データ記憶媒体のような有形媒体に対応するコンピュータ読み取り可能な記憶媒体又は通信媒体を含む可能性がある。通信媒体は、例えば、通信プロトコルに従って或る場所から他の場所へのコンピュータ・プログラムの転送を促す任意の媒体を含む。従って、コンピュータ読み取り可能な媒体は、一般に、(1)非一時的な有形のコンピュータ読み取り可能な記憶媒体、又は(2)信号又はキャリアのような通信媒体に対応する可能性がある。データ記憶媒体は、本発明で説明される技術の実装のための命令、コード、及び/又はデータ構造を取り出するために、1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスされることが可能な任意の利用可能な媒体であってもよい。コンピュータ・プログラム製品は、コンピュータ読み取り可能な媒体を含む可能性がある。
限定ではなく例示として、このようなコンピュータ読み取り可能な記憶媒体は、RAM、ROM、EEPROM、CD−ROM、又は他の光ディスク・ストレージ、磁気ディスク・ストレージ、又は他の磁気ストレージ・デバイス、フラッシュ・メモリ、又は、任意の他の媒体であって命令又はデータ構造の形態で必要なプログラム・コードを記憶するために使用されることが可能であり且つコンピュータによってアクセスされることが可能なもの、を含む可能性がある。更に、任意の接続がコンピュータ読み取り可能な媒体として適切に言及されてもよい。例えば、同軸ケーブル、光ファイバ・ケーブル、ツイスト・ペア、デジタル加入者回線(digital subscriber line, DSL)、又は、赤外線、無線、及びマイクロ波などの無線技術を利用することにより、命令がウェブサイト、サーバー、又は他のリモート・ソースから伝送される場合、同軸ケーブル、光ファイバ・ケーブル、ツイスト・ペア、DSL、又は赤外線、無線、無線、及びマイクロ波などの無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ読み取り可能な記憶媒体及びデータ記憶媒体は、接続、キャリア、信号、又は他の任意の一時的な媒体を含まず、実際には非一時的な有形の記憶媒体に向けられることが理解されるべきである。本明細書において使用されるように、ディスク及び光ディスクは、コンパクト・ディスク(compact disc,CD)、レーザー・ディスク、光ディスク、デジタル多用途ディスク(digital versatile disc,DVD)、フロッピー・ディスク、及びブルーレイ・ディスクを含む。ディスクは一般に磁気的にデータを再生し、光ディスクはレーザーを使用することにより光学的にデータを再生する。上記の如何なる組み合わせも、コンピュータ読み取り可能な媒体の範囲内に該当するはずである。
命令は、1つ以上のプロセッサによって実行されることが可能であり、1つ以上のプロセッサは、例えば1つ以上のデジタル信号プロセッサ(digital signal processor,DSP)、1つ以上の汎用マイクロプロセッサ、1つ以上の特定用途向け集積回路(application specific integrated circuit,ASIC)、1つ以上のフィールド・プログラマブル論理アレイ(field programmable logic arrays,FPGA)、又は他の同等な統合された又は個別的な論理回路である。従って、本明細書で使用される用語「プロセッサ」は、前述の構造又は本明細書で説明される技術の実装に適用可能な他の構造、のうちの任意の1つを表す可能性がある。更に、幾つかの態様において、本明細書で説明される機能は、符号化及び復号化を実行するように構成された専用ハードウェア及び/又はソフトウェア・モジュール内で提供されてもよいし、又は組み合わされたコーデックに組み込まれてもよい。更に、技術は、1つ以上の回路又は論理素子で完全に実現されてもよい。
本開示の技術は、無線ハンドセット、集積回路(integrated circuit,IC)、又はICセット(例えば、チップセット)を含む複数のデバイス又は装置で実現されてもよい。開示される技術を実行するように構成されるデバイスの機能を強調するために、本開示では様々な構成要素、モジュール、又はユニットが説明されており、これらは、必ずしも異なるハードウェア・ユニットによって実現される必要はない。実際には、上述したように、種々のユニットは、適切なソフトウェア及び/又はファームウェアと共にコーデック・ハードウェア・ユニット内で結合されてもよいし、又は一組の相互運用可能なハードウェア・ユニットによって提供されてもよい。ハードウェア・ユニットは、上述の1つ以上のプロセッサを含む。
本願は、2018年9月10日に中国国家知識産権局に出願された「ビデオ復号化方法及びビデオ・デコーダ」と題する中国特許出願第201811053068.0号に対する優先権を主張しており、参照によりその全体が本願に援用される。
技術分野
本願の実施態様は、一般に、ビデオ・コーディングの分野に関連し、より具体的にはビデオ復号化方法及びビデオ・デコーダに関連する。
背景
ビデオ・コーディング(ビデオ符号化及び復号化)は、幅広いデジタル・ビデオ・アプリケーションにおいて、例えば放送用デジタルTV、インターネットやモバイル・ネットワークを介したビデオ伝送、ビデオ・チャットやビデオ会議のようなリアルタイム会話アプリケーション、DVD及びブルーレイ・ディスク、ビデオ・コンテンツ捕捉編集のシステム及びカムコーダのセキュリティ・アプリケーションにおいて使用される。
1990年のH.261規格におけるブロック・ベースのハイブリッド・ビデオ・コーディング・モードの開発により、新たなビデオ・コーディング技術及びツールが開発されており、新たなビデオ・コーディング規格の基礎を築いている。その他のビデオ・コーディング規格は、MPEG-1ビデオ、MPEG-2ビデオ、ITU-T H.262/MPEG-2、ITU-T H.263、ITU-T H.264/MPEG-4 Part10:アドバンスト・ビデオ・コーディング(Advanced Video Coding,AVC)、ITU-T H.265/高効率ビデオ・コーディング(High Efficiency Video Coding,HEVC)、及びそのような規格の拡張、例えば、そのような規格のスケーラビリティ及び/又は3D(三次元)拡張を含む。ビデオの制作及び利用が益々普及するにつれて、ビデオ・トラフィックは、通信ネットワーク及びデータ・ストレージにとって最大の負担になっている。従って、多くのビデオ・コーディング規格の目的の1つは、以前の規格と比較して、画質を犠牲にすることなくビット・レートを低減することである。最新の高効率ビデオ・コーディング(high efficiency video coding,HEVC)は、画質を犠牲にすることなく、AVCの約2倍でビデオを圧縮することが可能であるが、HEVCと比較してビデオを更に圧縮するための新たな技術に対する緊急のニーズが依然として存在する。
本願の実施形態は、コンテキストを記憶するためにエンコーダ又はデコーダにより必要とされるスペースを減らすビデオ復号化方法及びビデオ・デコーダを提供する。
上記及び他の目的は独立請求項の対象事項により達成される。他の実装は従属請求項、明細書、及び添付図面から明らかである。
第1態様によれば、ビデオ復号化方法が提供され、ビデオ復号化方法は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するステップであって、現在ブロックにおけるシンタックス要素1に関するエントロピー復号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー復号化はコンテキスト・モデルを使用することにより完了する、ステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するステップと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するステップとを含む。
現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、デコーダは、エントロピー復号化を実行する際にコンテキスト・モデルを確認する必要がなく、デコーダによりビデオ復号化を実行する復号化効率を改善する。更に、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とするので、ビデオ・デコーダのより少ないストレージ空間が占有されることが可能である。
第2態様によれば、ビデオ復号化方法が提供され、ビデオ復号化方法は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するステップと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するステップとを含む。
現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2について唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
第2態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量は2又は3である。
第2態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルが事前に設定されたコンテキスト・モデル・セットから決定されることは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスを決定することを含み、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルを示すために使用され、又は
現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルが事前に設定されたコンテキスト・モデル・セットから決定されることは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスを決定することを含み、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルを示すために使用される。
第2態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が3である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計である。
第2態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が2である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果である。
第1態様又は第2態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素1は、affine_merge_flagであり、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用され、又は
現在ブロックにおけるシンタックス要素1は、subblock_merge_flagであり、サブブロック・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用される。
第3態様によれば、ビデオ復号化方法が提供され、ビデオ復号化方法は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含む、ステップと、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するステップと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するステップとを含む。
現在ブロックにおけるシンタックス要素3及びシンタックス要素4は1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素3及びシンタックス要素4について唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
第3態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットは、5つのコンテキスト・モデルを含む。
第3態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、affine_merge_idxであり、現在ブロックのアフィン・マージ候補リストのインデックス値を示すために使用され、又は
現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、subblock_merge_idxであり、サブブロック・マージ候補リストのインデックス値を示すために使用される。
第4態様によれば、ビデオ復号化方法が提供され、ビデオ復号化方法は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値とに基づいて、現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値を決定するステップと、現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値に基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するステップと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するステップとを含む。
第4態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素1は、affine_merge_flagであり、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用され、又は
現在ブロックにおけるシンタックス要素1は、subblock_merge_flagであり、サブブロック・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用される。
第4態様に関し、可能な実装において、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値とに基づいて、現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値を決定するステップは、
現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値を、以下の論理表現:
Context index = (condL && availableL) + (condA && availableA)
に従って決定するステップを含み、
condL = syntax element 1 [x0−1][y0] | syntax element 2 [x0−1][y0]
であり、syntax element 1 [x0−1][y0]は、左隣接ブロックにおけるシンタックス要素1の値を示し、syntax element 2 [x0−1][y0]は、左隣接ブロックにおけるシンタックス要素2の前記値を示し、
condA = syntax element 1 [x0][y0−1] | syntax element 2 [x0][y0−1]
であり、syntax element 1 [x0][y0−1]は、上隣接ブロックにおけるシンタックス要素1の値を示し、syntax element 2 [x0][y0−1]は、上隣接ブロックにおけるシンタックス要素2の値を示し、
availableLは、左隣接ブロックが利用可能であるか否かを示し、availableAは、上隣接ブロックが利用可能であるか否かを示す。
第5態様によれば、ビデオ・デコーダが提供され、ビデオ・デコーダは、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成されたエントロピー復号化ユニットであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー復号化ユニットは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2の値とに基づいて、現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値を決定し、現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値に基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成されているエントロピー復号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成された予測処理ユニットと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成された再構成ユニットとを含む。
第5態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素1は、affine_merge_flagであり、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用され、又は
現在ブロックにおけるシンタックス要素1は、subblock_merge_flagであり、サブブロック・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用される。
第5態様に関し、可能な実装において、可能な実装において、エントロピー復号化ユニットは、具体的には、
現在ブロックにおけるエントロピー復号化対象のシンタックス要素のコンテキスト・インデックスの値を、以下の論理表現:
Context index = (condL && availableL) + (condA && availableA)
に従って決定するように構成されており、
condL = syntax element 1 [x0−1][y0] | syntax element 2 [x0−1][y0]
であり、syntax element 1 [x0−1][y0]は、左隣接ブロックにおけるシンタックス要素1の値を示し、syntax element 2 [x0−1][y0]は、左隣接ブロックにおけるシンタックス要素2の値を示し、
condA = syntax element 1 [x0][y0−1] | syntax element 2 [x0][y0−1]
であり、syntax element 1 [x0][y0−1]は、上隣接ブロックにおけるシンタックス要素1の値を示し、syntax element 2 [x0][y0−1]は、上隣接ブロックにおけるシンタックス要素2の前記値を示し、
availableLは、左隣接ブロックが利用可能であるか否かを示し、availableAは、上隣接ブロックが利用可能であるか否かを示す。
第6態様によれば、ビデオ・デコーダが提供され、ビデオ・デコーダは、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成されたエントロピー復号化ユニットであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー復号化ユニットは、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成され、現在ブロックにおけるシンタックス要素1に関するエントロピー復号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー復号化はコンテキスト・モデルを使用することにより完了する、エントロピー復号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成された予測処理ユニットと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成された再構成ユニットとを含む。
第7態様によれば、ビデオ・デコーダが提供され、ビデオ・デコーダは、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成されたエントロピー復号化ユニットであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー復号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー復号化ユニットは、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成されているエントロピー復号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成された予測処理ユニットと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成された再構成ユニットとを含む。
第7態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量は2又は3である。
第7態様に関し、可能な実装において、エントロピー復号化ユニットは、具体的には、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスを決定するように構成され、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルを示すために使用され、又は
エントロピー復号化ユニットは、具体的には、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスを決定するように構成され、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルを示すために使用される。
第7態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が3である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計である。
第7態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が2である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果である。
第6態様又は第7態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素1は、affine_merge_flagであり、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用され、又は
現在ブロックにおけるシンタックス要素1は、subblock_merge_flagであり、サブブロック・ベースのマージ・モードが現在ブロックに使用されているか否かを示すために使用され、又は現在ブロックにおけるシンタックス要素2は、affine_inter_flagであり、且つ、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されているか否かを示すために使用される。
第8態様によれば、ビデオ・デコーダが提供され、ビデオ・デコーダは、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成されたエントロピー復号化ユニットであって、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含み、エントロピー復号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー復号化ユニットは、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成されているエントロピー復号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成された予測処理ユニットと、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成された再構成ユニットとを含む。
第8態様に関し、可能な実装において、事前に設定されたコンテキスト・モデル・セットは、5つのコンテキスト・モデルを含む。
第8態様に関し、可能な実装において、現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、affine_merge_idxであり、現在ブロックのアフィン・マージ候補リストのインデックス値を示すために使用され、又は
現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、subblock_merge_idxであり、サブブロック・マージ候補リストのインデックス値を示すために使用される。
第9態様によれば、符号化方法が提供され、符号化方法は、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化が実行される場合に、現在ブロックにおけるシンタックス要素1に関するエントロピー符号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー符号化はコンテキスト・モデルを使用することにより完了する、ステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第1態様を参照されたい。
第10態様によれば、符号化方法が提供され、符号化方法は、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、エントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第2態様を参照されたい。
第11態様によれば、符号化方法が提供され、符号化方法は、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含む、ステップと、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第3態様を参照されたい。
第12態様によれば、ビデオ・エンコーダが提供され、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニットであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されており、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化が実行される場合に、現在ブロックにおけるシンタックス要素1に関するエントロピー符号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー符号化はコンテキスト・モデルを使用することにより完了する、エントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力とを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第4態様を参照されたい。
第13態様によれば、ビデオ・エンコーダが提供され、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニットであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー符号化ユニットは、エントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されているエントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力とを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第5態様を参照されたい。
第14態様によれば、ビデオ・エンコーダが提供され、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニットであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含み、エントロピー符号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されているエントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力とを含む。
具体的なシンタックス要素及び具体的なコンテキスト・モデルについては、第6態様を参照されたい。
第15態様によれば、本発明は、プロセッサ及びメモリを含む、ビデオ・ストリームを復号化する装置に関連する。メモリは命令を記憶し、命令は、第1態様、第2態様、第3態様、若しくは第4態様、又はそれらの任意の可能な実装における方法をプロセッサが実行することを可能にする。
第16態様によれば、本発明は、プロセッサ及びメモリを含む、ビデオ・ストリームを復号化する装置に関連する。メモリは命令を記憶し、命令は、第7態様、第8態様、若しくは第9態様、又はそれらの任意の可能な実装における方法をプロセッサが実行することを可能にする。
第17態様によれば、コンピュータ読み取り可能な記憶媒体が提案される。コンピュータ読み取り可能な記憶媒体は命令を記憶し、命令が実行されると、1つ以上のプロセッサはビデオ・データを符号化することが可能である。命令は、第1態様、第2態様、第3態様、第4態様、第7態様、第8態様、若しくは第9態様、又はそれらの任意の可能な実装における方法を1つ以上のプロセッサが実行することを可能にする。
第18態様によれば、本発明はプログラム・コードを含むコンピュータ・プログラムに関連する。プログラム・コードがコンピュータ上で実行されると、第1態様、第2態様、第3態様、第4態様、第7態様、第8態様、若しくは第9態様、又はそれらの任意の可能な実装における方法が実行される。
1つ以上の実施形態の詳細が添付図面及び以下の説明において記載されている。他の特徴、目的、及び利点は、明細書、図面、及び特許請求の範囲から明らかであろう。
本願の実施態様又は背景における技術的解決策をより明確に説明するために、以下、本願の実施態様又は背景を説明するために必要とされる添付図面を簡単に説明する。
本発明の実施形態を実装するためのビデオ符号化システムの一例のブロック図である。
本発明の実施形態を実装するためのビデオ・エンコーダの例示的な構造を示すブロック図である。
本発明の実施形態を実装するためのビデオ・デコーダの例示的な構造を示すブロック図である。
図2のエンコーダ20と図3のデコーダ30とを含むビデオ・コーディング・システムを示す図である。
他の符号化装置又は復号化装置の一例を示すブロック図である。
一実施形態による現在ブロックの空間ドメイン及び時間ドメインにおける候補の動き情報の位置を示す概略図である。
一実施形態による現在ブロックと複数の隣接位置ブロックとの位置を示す概略図である。
一実施形態による構築制御ポイント動きベクトルを予測する方法を示すフローチャートである。
一実施形態による構築制御ポイント動きベクトルを予測する方法を示すフローチャートである。
一実施形態によるインター予測方法を示すフローチャートである。
一実施形態による構築制御ポイント動きベクトルを予測する方法を示すフローチャートである。
一実施形態による動き補償ユニットの中心点に基づく動き補償ユニットの位置を示す概略図である。
一実施形態によるビデオ復号化方法を示すフローチャートである。
一実施形態に係るビデオ復号化方法を示すフローチャートである。
一実施形態によるビデオ復号化方法を示すフローチャートである。
以下において、特に指定されない限り、同一の参照記号は同一の又は少なくとも機能的に同等な特徴を表す。
以下の説明において、本開示の一部を成し、例示として本発明の実施形態の特定の態様又は本発明の実施形態が使用される可能性のある特定の態様、を示す添付図面に対する参照が行われる。本発明の実施形態は、他の態様で使用される可能性があり、添付図面に示されていない構造的又は論理的な変更を含む可能性があることは理解されるべきである。従って、以下の詳細な説明は、限定としては解釈されないものとし、本発明の範囲は、添付の特許請求の範囲によって定められる。
例えば、説明される方法に関して開示される内容は、方法を実行するように構成された対応するデバイス又はシステムにも適用される可能性があり、その逆も可能であることが理解されるべきである。例えば、1つ以上の特定の方法ステップが説明される場合、対応するデバイスは、説明された1つ以上の方法ステップを実行するための機能ユニットのような1つ以上のユニット(例えば、1つ以上のステップを実行する1つのユニット、又は複数のステップのうちの1つ以上を各々が実行する複数のユニット)を、たとえそのような1つ以上のユニットが添付図面において明示的に説明も図示もされていなかったとしても、含む可能性がある。更に、例えば、機能ユニットのような1つ以上のユニットに基づいて、特定の装置が説明される場合、対応する方法は、1つ以上のユニットの機能を実行するための1つのステップ(例えば、1つ以上のユニットの機能を実行するための1つのステップ、又は複数のユニットのうちの1つ以上の機能を実行するために各々が使用される複数のステップ)を、たとえそのような1つ以上のステップが添付図面において明示的に説明も図示もされていなかったとしても、含む可能性がある。更に、本明細書で説明される様々な例示的な実施形態及び/又は態様の特徴は、特に指定されない限り、互いに組み合わせられる可能性があることは理解されるべきである。
ビデオ・コーディングは、通常、ビデオ又はビデオ・シーケンスを形成する一連のピクチャを処理する。ビデオ・コーディングの分野において、「ピクチャ(picture)」、「フレーム(frame)」及び「画像(image)」という用語は同義語として使用される可能性がある。本願(又は本開示)で使用されるビデオ・コーディングは、ビデオ符号化又はビデオ復号化を示す。ビデオ符号化は、ソース側で実行され、通常、ビデオ・ピクチャを表すのに必要なデータ量を減らすために(より効率的な記憶及び/又は伝送のために)オリジナル・ビデオ・ピクチャを(例えば、圧縮により)処理することを含む。ビデオ復号化は、宛先側で実行され、通常、ビデオ・ピクチャを再構成するために、エンコーダに関連する逆の処理を含む。実施形態におけるビデオ・ピクチャ(又は、以下で説明されるピクチャとして一般的に言及される)の「コーディング」は、ビデオ・シーケンスに関する「符号化」又は「復号化」として理解されるべきである。符号化及び復号化の組み合わせもまた、コーディング(符号化及び復号化)と言及される。
ロスレス・ビデオ・コーディングの場合、オリジナル・ビデオ・ピクチャを再構成することが可能であり、即ち、再構成されたビデオ・ピクチャはオリジナル・ビデオ・ピクチャと同じ質を有する(記憶及び伝送の間に、伝送ロス又は他のデータ・ロスは発生しないことを仮定している)。ロスレスでないビデオ・コーディングの場合、ビデオ・ピクチャを表現するために必要なデータ量を減らすために、量子化などによって更なる圧縮が実行され、ビデオ・ピクチャはデコーダ側で完全には再構成することができず、即ち、再構成されたビデオ・ピクチャの質は、オリジナル・ビデオ・ピクチャのものより劣る。
幾つかのH.261ビデオ・コーディング規格は、「ロスレスでないハイブリッド・ビデオ・コーディング」に関連している(即ち、サンプル・ドメインにおける空間的及び時間的な予測は、変換ドメインにおける量子化を適用するために2D変換コーディングと組み合わされる)。ビデオ・シーケンスの各ピクチャは、通常、重複しないブロックのセットに分割され、通常、ブロック・レベルでコーディングが実行される。具体的には、エンコーダ側において、ビデオは、通常、ブロック(ビデオ・ブロック)レベルで処理される、即ち符号化される。例えば、予測ブロックは、空間(イントラ・ピクチャ)予測及び時間(インター・ピクチャ)予測により生成され、予測ブロックは、残差ブロックを取得するために、現在ブロック(現在処理中の又は処理されるべきブロック)から減算され、残差ブロックは、変換ドメインにおいて変換され、量子化されて、伝送されるべきデータ量を減少させる(圧縮される)。デコーダ側では、エンコーダに対する逆処理が、符号化又は圧縮されたブロックに適用され、表現のために現在ブロックを再構成する。更に、エンコーダは、デコーダの処理ループを繰り返し、その結果、エンコーダ及びデコーダは、以後のブロックを処理、即ち符号化するために、同じ予測(例えば、イントラ予測及びインター予測)及び/又は再構成を生成する。
本明細書で使用されるように、「ブロック」という用語は、ピクチャ又はフレームの一部であってもよい。説明を容易にするために、ITU−Tビデオ・コーディング・エキスパート・グループ(Video Coding Experts Group,VCEG)及びISO/IEC動画エキスパート・グループ(Motion Picture Experts Group,MPEG)のビデオ・コーディングに関する共同研究チーム(Joint Collaboration Team on Video Coding,JCT-VC)によって開発された汎用ビデオ・コーディング(VVC:Versatile Video Coding)又は高効率ビデオ・コーディング(High-Efficiency Video Coding,HEVC)を参照して、本発明の実施形態を説明する。当業者は、本発明の実施形態がHEVC又はVVCに限定されず、ブロックはCU、PU又はTUであってもよいことを理解する。HEVCにおいて、CTUは、コーディング・ツリーとして示される四分木構造を使用することによって、複数のCUに分割される。ピクチャ領域がCUレベルでインター・ピクチャ(時間的)又はイントラ・ピクチャ(空間的)予測によりコーディングされるかどうかが決定される。各CUは更に、PU分割タイプに基づいて、1つ、2つ、又は4つのPUに分割されてもよい。同じ予測プロセスが1つのPU内で適用され、関連情報はPUに基づいてデコーダに送信される。PU分割タイプに基づいて予測プロセスを適用することにより、残差ブロックを取得した後に、CUは、CUに使用されるコーディング・ツリーに類似する別の四分木構造に基づいて、変換ユニット(transform unit,TU)に分割される可能性がある。最新のビデオ圧縮技術の開発では、フレームは、コーディング・ブロックを分割するために、四分木プラス二分木(Quad-tree plus binary tree,QTBT)により分割される。QTBTブロック構造では、CUは正方形又は長方形であってもよい。VVCでは、コーディング・ツリー・ユニット(coding tree unit,CTU)は先ず四分木構造を使用することにより分割され、四分木リーフ・ノードは二分木構造を使用することにより更に分割される。二分木リーフ・ノードはコーディング・ユニット(CU)と言及され、その分割は、他の如何なる分割もなしに予測及び変換処理のために使用される。これは、CU、PU、TUがQTBTコーディング・ブロック構造において同じブロック・サイズを有することを意味する。更に、多重分割、例えばトリプル・ツリー分割がQTBTブロック構造とともに使用される。
以下、エンコーダ20、デコーダ30、符号化システム10、復号化システム40の実施形態を、(図10に基づいて本発明の実施形態をより詳細に説明する前に)図1−図4に基づいて説明する。
図1は、例示的な符号化システム10、例えば本願(本開示)の技術を使用することが可能なビデオ符号化システム10を示す概念的又は概略的なブロック図である。ビデオ符号化システム10内のエンコーダ20(例えば、ビデオ・エンコーダ20)及びデコーダ30(例えば、ビデオ・デコーダ30)は、本願で説明される種々の例に従って...(分割/イントラ予測/...)のための技術を実行するように構成されている可能性があるデバイス例を表す。図1に示すように、符号化システム10は、符号化されたピクチャ13のような符号化されたデータ13を、符号化されたデータ13等を復号化する宛先デバイスへ提供するように構成されたソース・デバイス12を含む。
ソース・デバイス12は、エンコーダ20を含み、追加的に又はオプションとして、ピクチャ・ソース16、例えばピクチャ前処理ユニット18のような前処理ユニット18、及び、通信インターフェース又は通信ユニット22を含む可能性がある。
ビデオ・ソース16は、実世界のピクチャ等を捕捉するように構成された任意の種類のピクチャ捕捉デバイス、及び/又は、ピクチャ又はコメントを生成する任意の種類のデバイス(スクリーン・コンテンツ符号化の場合には、スクリーン上の何らかのテキストもまた、符号化対象のピクチャ又は画像の一部と考えられる)、例えば、コンピュータ・アニメーション・ピクチャを生成するように構成されたコンピュータ・グラフィックス処理ユニット、又は、実世界のピクチャ又はコンピュータ・アニメーション・ピクチャを取得及び/又は提供するように構成された任意の種類のデバイス(例えば、スクリーン・コンテンツ又はバーチャル・リアリティ(virtual reality,VR)ピクチャ)、及び/又は、それらの任意の組み合わせ(例えば、拡張現実(augmented reality,AR)ピクチャ)を含んでもよいし、又はそれらであってもよい。
(デジタル)ピクチャは、ルミナンス値を有するサンプルの2次元アレイ又はマトリックスであるか、又はそのように考えられてもよい。アレイ中のサンプルは、ピクセル(pixel)(ピクチャ要素(picture element)の短縮形)又はペルと呼ばれてもよい。アレイ又はピクチャの水平及び垂直方向(又は軸)におけるサンプルの量は、ピクチャのサイズ及び/又は解像度を規定する。色の表現には、通常、3つの色成分が使用され、即ち、ピクチャは、3つのサンプル・アレイとして表現されてもよいし、又はそれを含んでもよい。RBGフォーマット又は色空間において、ピクチャは対応する赤、緑、及び青のサンプル・アレイを含む。しかしながら、ビデオ・コーディングにおいては、各サンプルは、通常、ルミナンス/クロミナンス・フォーマット又は色空間で表現され、例えば、YCbCrフォーマットのピクチャは、Yで示されるルミナンス成分(時にはLで示される)とCb及びCrで示される2つのクロミナンス成分を含む。ルミナンス(略称、ルマ)成分Yは、ルミナンス又はグレー・レベル強度を示し(例えば、両者はグレー・スケール・ピクチャでは同じである)、2つのクロミナンス成分(略称、クロマ)Cb及びCrはクロミナンス又は色情報成分を表す。従って、YCbCrフォーマットにおけるピクチャは、ルミナンス・サンプル値(Y)のルミナンス・サンプル・アレイと、クロミナンス値(Cb及びCr)の2つのクロミナンス・サンプル・アレイとを含む。RGBフォーマットのピクチャは、YCbCrフォーマットのピクチャにコンバート又は変換されることが可能であり、その逆も可能である。このプロセスは、色変換又はコンバージョンとも呼ばれる。ピクチャがモノクロである場合、そのピクチャはルミナンス・サンプル・アレイのみを含む可能性がある。
ピクチャ・ソース16(例えば、ビデオ・ソース16)は、例えば、ピクチャを捕捉するように構成されたカメラ、例えば、事前に捕捉された若しくは生成したピクチャを包含又は記憶するピクチャ・メモリのようなメモリ、及び/又はピクチャを取得若しくは受信するための任意のタイプの(内部又は外部)インターフェースであってもよい。カメラは、例えば、ソース・デバイスに一体化されたローカル・カメラ又は一体化カメラであってもよく、メモリは、ソース・デバイスに一体化されたローカル・メモリ又は一体化メモリであってもよい。インターフェースは、例えば、外部ビデオ・ソースからピクチャを受信するための外部インターフェースであってもよい。外部ビデオ・ソースは、例えば、カメラ、外部メモリ、又は外部ピクチャ生成デバイスのような外部ピクチャ捕捉デバイスである。外部ピクチャ生成デバイスは、例えば、外部コンピュータ・グラフィックス処理ユニット、コンピュータ、又はサーバーである。インターフェースは、任意のプロプライエタリ又は標準化されたインターフェース・プロトコルに従う任意のタイプのインターフェース、例えば有線又は無線インターフェース又は光インターフェースであるとすることが可能である。ピクチャ・データ17を取得するためのインターフェースは、通信インターフェース22と同じインターフェースであってもよいし、又は通信インターフェース22の一部であってもよい。
前処理ユニット18及び前処理ユニット18により実行される処理とは異なり、ピクチャ17及びピクチャ・データ17(例えば、ビデオ・データ16)はまた、オリジナル・ピクチャ17又はオリジナル・ピクチャ・データ17と呼ばれてもよい。
前処理ユニット18は、(オリジナル)ピクチャ・データ17を受信し、ピクチャ・データ17に関して前処理を実行して、前処理されたピクチャ19又は前処理されたピクチャ・データ19を取得するように構成されている。例えば、前処理ユニット18によって実行される前処理は、トリミング、カラー・フォーマット変換(例えば、RGBからYCbCrへ)、色補正、又はノイズ低減を含む可能性がある。前処理ユニット18はオプションの構成要素であってもよいことは理解されるであろう。
エンコーダ20(例えば、ビデオ・エンコーダ20)は、前処理されたピクチャ・データ19を受信し、符号化されたピクチャ・データ21を提供するように構成される(詳細は、例えば以下において図2又は図4に基づいて更に説明される)。一例では、エンコーダ20は、ピクチャを符号化するように構成されることが可能である。
ソース・デバイス12の通信インターフェース22は、符号化されたピクチャ・データ21を受信し、符号化されたピクチャ・データ21を他のデバイス、例えば宛先デバイス14又は任意の他のデバイスへ、記憶又は直接的な再構成のために送信するように構成されることが可能であり、又は符号化されたピクチャ・データ13を相応して記憶し、及び/又は符号化されたデータ13を他のデバイスに送信する前に、符号化されたピクチャ・データ21を処理するように構成されることが可能である。他のデバイスは、例えば宛先デバイス14、又は復号化又は記憶のために使用される他のデバイスである。
宛先デバイス14は、デコーダ30(例えば、ビデオ・デコーダ30)を含み、追加的に又はオプションとして、通信インターフェース又は通信ユニット28、後処理ユニット32、及び表示デバイス34を含む可能性がある。
例えば、宛先デバイス14の通信インターフェース28は、符号化されたピクチャ・データ21又は符号化されたデータ13を、ソース・デバイス12又は他の任意のソースから直接的に受信するように構成される。任意の他のソースは、例えば記憶デバイスであり、記憶デバイスは、例えば符号化されたピクチャ・データの記憶デバイスである。
通信インターフェース22及び通信インターフェース28は、ソース・デバイス12と宛先デバイス14との間の直接的な通信リンク、又は任意のタイプのネットワークを介して、符号化されたピクチャ・データ21又は符号化されたデータ13を送信又は受信するように構成されることが可能である。直接的な通信リンクは、例えば、直接的な有線又は無線の接続であり、任意の種類のネットワークが、例えば有線又は無線ネットワーク若しくはそれらの任意の組み合わせ、又は任意の種類の私的なネットワーク若しくは公のネットワーク、又はそれらの任意の組み合わせである。
通信インターフェース22は、例えば、符号化されたピクチャ・データ21を、通信リンク又は通信ネットワークでの伝送のためのパケットのような適切なフォーマットにカプセル化するように構成されることが可能である。
通信インターフェース22の対応する部分としての通信インターフェース28は、符号化されたピクチャ・データ21等を取得するために符号化されたデータ13を非カプセル化するように構成されることが可能である。
通信インターフェース22及び通信インターフェース28の両方は、一方向通信インターフェース、例えば図1の符号化されたピクチャ・データ13のために使用されるソース・デバイス12から宛先デバイス14へ向かう矢印として構成されることが可能であり、又は双方向通信インターフェースとして構成されることが可能であり、例えば接続を確立するためにメッセージを送信及び受信し、通信リンク及び/又は符号化されたピクチャ・データ伝送のようなデータ伝送に関連する他の任意の情報を確認及び交換するように構成されることが可能である。
デコーダ30は、符号化されたピクチャ・データ21を受信し、復号化されたピクチャ・データ31又は復号化されたピクチャ31を提供するように構成される(詳細は、例えば図3又は図5に基づいて、以下において更に説明される)。
宛先デバイス14の後処理プロセッサ32は、復号化されたピクチャ・データ31のような復号化されたピクチャ・データ31(再構成されたピクチャ・データとも呼ばれる)を後処理して、後処理されたピクチャ33のような後処理されたピクチャ・データ33を取得するように構成される。後処理ユニット32によって実行される後処理は、例えばカラー・フォーマット変換(例えば、YCbCrからRGBへ)、色補正、トリミング、リサンプリング、又は表示デバイス34による表示のための復号化されたピクチャ・データ31を準備するための他の任意の処理を含む可能性がある。
宛先デバイス14の表示デバイス34は、後処理ピクチャ・データ33を受信して、ピクチャをユーザー、ビューア等に表示するように構成されている。表示デバイス34は、再構成されたピクチャを提示するように構成された任意のタイプのディスプレイ、例えば一体化された又は外部のディスプレイ又はモニタであってもよいし、又はそれらを含んでもよい。例えば、ディスプレイは、液晶ディスプレイ(liquid crystal display,LCD)、有機発光ダイオード(organic light emitting diode,OLED)ディスプレイ、プラズマ・ディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オン・シリコン(liquid crystal on silicon,LCoS)ディスプレイ、デジタル光プロセッサ(digital light processor,DLP)、又は任意の他のタイプのディスプレイを含む可能性がある。
図1は、ソース・デバイス12と宛先デバイス14とを別々のデバイスとして描いているが、デバイスの実施形態はまた、ソース・デバイス12と宛先デバイス14の両方、又はソース・デバイス12の機能と宛先デバイス14の機能の両方、即ち、ソース・デバイス12又は対応する機能と、宛先デバイス14又は対応する機能とを含む可能性がある。そのような実施形態では、ソース・デバイス12又は対応する機能と宛先デバイス14又は対応する機能とは、同じハードウェア及び/又はソフトウェア、別個のハードウェア及び/又はソフトウェア、又はそれらの任意の組み合わせを使用することにより実装されもよい。
図1に示すソース・デバイス12及び/又は宛先デバイス14の機能/様々なユニットの機能又は機能の存在及び(正確な)分割は、実際のデバイス及び用途によって異なる可能性があることを、当業者は明細書に基づいて容易に理解する。
エンコーダ20(例えば、ビデオ・エンコーダ20)及びデコーダ30(例えば、ビデオ・デコーダ30)は、それぞれ、種々の適切な回路、例えば1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(digital signal processor,DSP)、特定用途向け集積回路(application-specific integrated circuit,ASIC)、フィールド・プログラマブル・ゲート・アレイ(field-programmable gate array,FPGA)、ディスクリート・ロジック、ハードウェア、又はそれらの任意の組み合わせのうちの任意の1つとして実現されることが可能性である。技術がソフトウェアで部分的に実装される場合、デバイスは、ソフトウェア命令を、適切な非一時的なコンピュータ読み取り可能な記憶媒体に記憶することが可能であり、本開示の技術を実行するために1つ以上のプロセッサを使用することによって、ハードウェアにおいて命令を実行することが可能である。前述の任意の内容(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組み合わせ等を含む)が、1つ以上のプロセッサと考えられてもよい。ビデオ・エンコーダ20及びビデオ・デコーダ30は、それぞれ、1つ以上のエンコーダ又はデコーダに含まれる可能性があり、エンコーダ又はデコーダの任意の1つが、対応するデバイス内の組み合わされたエンコーダ/デコーダ(コーデック)の一部として統合される可能性がある。
ソース・デバイス12は、ビデオ符号化デバイス又はビデオ符号化装置と言及されてもよい。宛先デバイス14は、ビデオ復号化デバイス又はビデオ復号化装置と言及されてもよい。ソース・デバイス12及び宛先デバイス14は、それぞれ、ビデオ符号化デバイス又はビデオ復号化装置の一例とすることが可能である。
ソース・デバイス12及び宛先デバイス14は、それぞれ、任意のタイプのハンドヘルド又はステーショナリ・デバイスを含む様々なデバイスのうちの任意の1つ、例えば、ノートブック又はラップトップ・コンピュータ、携帯電話、スマートフォン、タブレット又はタブレット・コンピュータ、ビデオ・カメラ、デスクトップ・コンピュータ、セット・トップ・ボックス、テレビ、表示デバイス、デジタル・メディア・プレーヤ、ビデオ・ゲーム・コンソール、ビデオ・ストリーミング伝送デバイス(コンテンツ・サービス・サーバー又はコンテンツ配信サーバー等)、放送受信デバイス、又は放送送信デバイスである可能性があり、任意のタイプのオペレーティング・システムを使用してもよいし、又は使用しなくてもよい。
場合によっては、ソース・デバイス12及び宛先デバイス14は無線通信用に装備されてもよい。従って、ソース・デバイス12及び宛先デバイス14は、無線通信デバイスであってもよい。
場合によっては、図1に示すビデオ符号化システム10は単なる一例に過ぎず、本願の技術は、符号化デバイスと復号化デバイスとの間で如何なるデータ通信も含む必要のないビデオ・コーディング設定(例えば、ビデオ符号化又はビデオ復号化)に適用される可能性がある。他の例において、データは、ローカル・メモリから検索されてもよいし、ネットワークを介してストリーミング等されてもよい。ビデオ符号化デバイスは、データを符号化し、そのデータをメモリに格納することが可能であり、及び/又はビデオ復号化デバイスは、データをメモリから検索し、そのデータを復号化することが可能である。幾つかの例では、符号化及び復号化は、互いに通信しないが、メモリへのデータを符号化し及び/又はメモリからデータを検索してデータを復号化するだけのデバイスによって実行される。
ビデオ・エンコーダ20を参照して説明された前述の例のそれぞれについて、ビデオ・デコーダ30は、逆プロセスを実行するように構成さることが可能であることが理解されるはずである。シグナリング・シンタックス要素の場合、ビデオ・デコーダ30は、シンタックス要素を受信及び解析し、それに応じて、関連するビデオ・データを復号化するように構成されることが可能である。幾つかの例では、ビデオ・エンコーダ20は、符号化ビデオ・ビットストリームへの...を規定する1つ以上のシンタックス要素をエントロピー符号化することができる。このような例では、ビデオ・デコーダ30は、このようなシンタックス要素を解析し、それに応じて、関連するビデオ・データを復号化することが可能である。
エンコーダ&符号化方法
図2は、本願(開示)における技術を実装するように構成されたビデオ・エンコーダ20の一例の概略的/概念的なブロック図である。図2の例では、ビデオ・エンコーダ20は、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構成ユニット214と、バッファ216と、ループ・フィルタ・ユニット220と、復号化済みピクチャ・バッファ(decoded picture buffer,DPB)230と、予測処理ユニット260と、エントロピー符号化ユニット270とを含む。予測処理ユニット260は、インター予測ユニット244と、イントラ予測ユニット254と、モード選択ユニット262とを含むことが可能である。インター予測ユニット244は、動き推定ユニットと、動き補償ユニット(図面には示されていない)とを含むことが可能である。図2に示すビデオ・エンコーダ20はまた、ハイブリッド・ビデオ・エンコーダ又はハイブリッド・ビデオ・コーデック・ベースのビデオ・エンコーダと言及されてもよい。
例えば、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、予測処理ユニット260、エントロピー符号化ユニット270は、エンコーダ20の順方向信号経路を形成し、逆量子化ユニット210、逆変換処理ユニット部212、再構成ユニット214、バッファ216、ループ・フィルタ220、復号化済みピクチャ・バッファ(decoded picture buffer,DPB)230、予測処理ユニット260等は、エンコーダの逆方向信号経路を形成する。エンコーダの逆方向信号経路は、デコーダ(図3のデコーダ30を参照されたい)の信号経路に対応する。
エンコーダ20は、ピクチャ201又はピクチャ201のブロック203、例えばビデオ又はビデオ・シーケンスを形成する一連のピクチャにおけるピクチャを、入力202等を使用することにより受信する。ピクチャ・ブロック203はまた、現在のピクチャ・ブロック又は符号化対象のピクチャ・ブロックと言及される可能性があり、ピクチャ201は、現在のピクチャ又は符号化対象のピクチャと言及される可能性がある(特に、現在ピクチャがビデオ・コーディングにおける他のピクチャから区別される場合、例えば同じビデオ・シーケンス内の他のピクチャはまた、現在のピクチャのビデオ・シーケンスにおける以前に符号化及び/又は復号化されたピクチャを含む。)。
分割
エンコーダ20の実施形態は、ピクチャ201を、ブロック203のような複数の重複しないブロックに分割するように構成された分割ユニット(図2には示されていない)を含むことが可能である。分割ユニットは、ビデオ・シーケンス内のすべてのピクチャに対して同一のブロック・サイズとブロック・サイズを規定する対応するラスタとを使用するように構成されることが可能であり、又は、ピクチャ、サブセット、又はピクチャ・グループ間のブロック・サイズを変更し、各ピクチャを対応するブロックに分割するように構成されることが可能である。
一例では、ビデオ・エンコーダ20の予測処理ユニット260は、前述の分割技術の任意の組み合わせを実行するように構成されてもよい。
例えば、ピックチャ201において、ブロック203はまた、ルミナンス値(サンプル値)を有する2次元アレイ又はマトリクスであるか、又はそれらとして考えられてもよいが、ブロック203のサイズはピクチャ201のものより小さい。換言すれば、ブロック203は、例えば、1つのサンプル・アレイ(例えば、モノクロ・ピクチャ201の場合のルミナンス・アレイ)、3つのサンプル・アレイ(例えば、カラー・ピクチャの場合における1つのルミナンス・アレイ及び2つのクロミナンス・アレイ)、又は使用されるカラー・フォーマットに基づく他の任意の量及び/又はアレイのタイプを含むことが可能である。ブロック203の水平及び垂直方向(又は軸)におけるサンプルの量は、ブロック203のサイズを規定する。
図2に示すエンコーダ20は、ブロック毎にピクチャ201を符号化するように、例えば各ブロック203において符号化及び予測を実行するように構成される。
残差計算
残差計算ユニット204は、ピクチャ・ブロック203及び予測ブロック265(予測ブロック265に関する更なる詳細は以下において行われる)に基づいて、残差ブロック205を計算するように、例えば、予測ブロック265のサンプル値をサンプル毎に(ピクセル毎に)ピクチャ・ブロック203のサンプル値から減算することにより、サンプル・ドメインにおいて残差ブロック205を取得するように構成されている。
変換
変換処理ユニット206は、離散コサイン変換(discrete cosine transform,DCT)又は離散サイン変換(discrete sine transform,DST)のような変換を、残差ブロック205のサンプル値に適用し、変換ドメインにおいて変換係数207を取得するように構成されている。変換係数207はまた、残差変換係数と言及されてもよく、変換ドメインにおける残差ブロック205を示す。
変換処理ユニット206は、DCT/DSTの整数近似、例えばHEVC/H.265で指定されている変換を適用するように構成されてもよい。この整数近似は、通常、直交DCT変換に匹敵する因子によって比例的にスケーリングされる。順変換及び逆変換を通じて取得された残差ブロックのノルムを維持するために、追加的なスケール因子が変換プロセスの一部として適用される。スケール因子は、通常、幾つかの制約条件に基づいて選択され、例えば、2の冪乗、変換係数のビット深度、又はシフト演算に使用される精度と実装コストとの間のトレードオフに基づいて選択される。例えば、逆変換処理ユニット212を使用することにより、デコーダ30側における逆変換に対して(相応に、逆変換処理ユニット212等を使用することにより、エンコーダ20側における逆変換に対して)、特定のスケール因子が指定され、これに対応して、変換処理ユニット206を使用することにより、エンコーダ20側における順変換に対して、対応するスケール因子が指定されてもよい。
量子化
量子化ユニット208は、スケール量子化やベクトル量子化などを適用することにより変換係数207を量子化し、量子化された変換係数209を取得するように構成される。量子化された変換係数209は、量子化された残差係数209とも呼ばれる。量子化プロセスは、幾つかの又は全ての変換係数207に関連するビット深度を低減することができる。例えば、nビット変換係数は、量子化中にmビット変換係数に丸められる可能性があり、ここで、nはmより大きい。量子化の程度は、量子化パラメータ(quantization parameter,QP)を調整することによって修正されることが可能である。例えば、スケール量子化のために、異なるスケールが、より細かい又はより粗い量子化を達成するために適用されてもよい。より小さな量子化ステップはより細かい量子化に対応し、より大きな量子化ステップはより粗い量子化に対応する。適切な量子化ステップは、量子化パラメータ(quantization parameter,QP)を使用することによって示されてもよい。例えば、量子化パラメータは、適切な量子化ステップの所定のセットのインデックスであってもよい。例えば、より小さな量子化パラメータはより細かい量子化(より小さな量子化ステップ)に対応し、より大きな量子化パラメータはより粗い量子化(より大きな量子化ステップ)に対応し、その逆も可能である。量子化は、量子化ステップによる除算と、逆量子化ユニット210等によって実行される対応する量子化又は逆量子化とを含んでもよいし、又は量子化ステップによる乗算を含んでもよい。HEVC等の幾つかの規格による実施形態では、量子化ステップを決定するために量子化パラメータが使用されてもよい。一般に、量子化ステップは、除算を含む式の固定小数点近似による量子化パラメータに基づいて計算される可能性がある。追加的なスケール因子が量子化及び逆量子化のために導入され、残差ブロックのノルムであって、量子化ステップのために使用される式の固定小数点近似で使用されるスケール及び量子化パラメータに起因して修正される可能性があるノルムを復元することが可能である。例示的な実装において、逆変換のスケールは逆量子化のスケールと組み合わせられてもよい。代替的に、カスタマイズされた量子化テーブルが使用され、エンコーダからデコーダへ、例えばビットストリームでシグナリングされてもよい。量子化はロスレスでない演算であり、より大きな量子化ステップはより大きなロスを示す。
逆量子化ユニット210は、量子化ユニット208の逆量子化を量子化係数に適用して、逆量子化係数211を取得するように、例えば量子化ユニット208と同じ量子化ステップに基づいて又はそれを使用して、量子化ユニット208により適用される量子化方式の逆量子化方式を適用するように、構成される。逆量子化係数211はまた、逆量子化残差係数211とも呼ばれ、変換係数207に対応するが、量子化によって生じるロスは、通常、変換係数とは異なる。
逆変換処理ユニット212は、変換処理ユニット206によって適用される変換の逆変換、例えば逆離散コサイン変換(discrete cosine transform,DCT)又は逆離散サイン変換(discrete sine transform,DST)を適用して、サンプル・ドメインにおける逆変換ブロック213を取得するように構成される。逆変換ブロック213はまた、逆変換逆量子化ブロック213又は逆変換残差ブロック213と言及されてもよい。
再構成ユニット214(例えば、加算器214)は、予測ブロック265に逆変換ブロック213(即ち、再構成された残差ブロック213)を加算して、例えば再構成された残差ブロック213のサンプル値と予測ブロック265のサンプル値とを加算することにより、サンプル・ドメインにおいて再構成されたブロック215を取得するように構成される。
オプションとして、ライン・バッファ216のようなバッファ・ユニット216(又は略称「バッファ」216)は、再構成されたブロック215とイントラ予測などのための対応するサンプル値とをバッファリング又は記憶するように構成される。他の実施形態では、エンコーダは、イントラ予測などの任意のタイプの推定及び/又は予測のために、バッファ・ユニット216に記憶されたフィルタリングされていない再構成ブロック及び/又は対応するサンプル値を使用するように構成されてもよい。
例えば、エンコーダ20の実施形態は、バッファ・ユニット216が、イントラ予測のために再構成ブロック215を記憶するように構成されるだけでなく、ループ・フィルタ・ユニット220(図2には図示せず)のフィルタリングされたブロック221を記憶するようにも構成され、及び/又はバッファ・ユニット216と復号化済みピクチャ・バッファ・ユニット230とが1つのバッファを形成するように、構成されることが可能である。他の実施形態は、フィルタリングされたブロック221及び/又は復号化済みピクチャ・バッファ230(図2には示されていない)からのブロック又はサンプルを、イントラ予測254のための入力又は基礎として使用するために使用されることが可能である。
ループ・フィルタ・ユニット220(又は、略称「ループ・フィルタ」220)は、フィルタリングされたブロック221を取得するために、再構成されたブロック215に関してフィルタリングを実行し、サンプル変換を円滑に行い、又はビデオ品質を改善するように構成される。ループ・フィルタ・ユニット220は、1つ以上のループ・フィルタ、例えばデブロッキング・フィルタ、サンプル・アダプティブ・オフセット(sample-adaptive offset,SAO)フィルタ、又は、バイラテラル・フィルタ、アダプティブ・ループ・フィルタ(adaptive loop filter,ALF)、鮮鋭化又は平滑化フィルタ、又は協調フィルタ等の別のフィルタを表すように意図されている。ループ・フィルタ・ユニット220は、ループ内フィルタとして図2に示されているが、ループ・フィルタ・ユニット220は、他の構成では、ポスト・ループ・フィルタとして実装されてもよい。フィルタリングされたブロック221は、フィルタリング済みの再構成されたブロック221としても参照されてもよい。復号化済みピクチャ・バッファ230は、ループ・フィルタ・ユニット220が再構成されたコーディング・ブロックに対してフィルタリング処理を実行した後に、再構成されたコーディング・ブロックを記憶することが可能である。
エンコーダ20(対応して、ループ・フィルタ・ユニット220)の実施形態は、ループ・フィルタ・パラメータ(例えば、サンプル適応オフセット情報)を出力するために、例えばループ・フィルタ・パラメータを直接的に出力するために、又は例えばエントロピー符号化ユニット270又は何らかの他のエントロピー符号化ユニットがエントロピー符号化を実行した後に、ループ・フィルタ・パラメータを出力するために使用されることが可能であり、その結果、デコーダ30は復号化などのために同じループ・フィルタ・パラメータを受信及び適用することが可能である。
復号化済みピクチャ・バッファ(decoded picture buffer,DPB)230は、ビデオ・データを符号化するためにビデオ・エンコーダ20用に参照ピクチャ・データを記憶する参照ピクチャ・メモリであってもよい。DPB230は、複数のメモリ、例えば、ダイナミック・ランダム・アクセス・メモリ(dynamic random access memory,DRAM)(同期DRAM(synchronous DRAM,SDRAM)、磁気抵抗RAM(magnetoresistive RAM, MRAM)、又は抵抗RAM(resistive RAM,RRAM)を含む)、又は別のタイプのメモリのうちの任意のものであってもよい。DPB230及びバッファ216は、同一のメモリ又は別個のメモリによって提供されてもよい。一例では、復号化済みピクチャ・バッファ(decoded picture buffer,DRB)230は、フィルタリングされたブロック221を記憶するように構成される。復号化済みピクチャ・バッファ230は、更に、同じ現在ピクチャ又は以前に再構成されたピクチャのような異なるピクチャの、以前に再構成されフィルタリングされたブロック221のような他の以前のフィルタリングされたブロックを記憶するように更に構成されることが可能であり、完全な以前の再構成された、即ち復号化されたピクチャ(及び対応する参照ブロック及び対応するサンプル)及び/又はイントラ予測等のための部分的に再構成された現在ピクチャ(及び対応する参照ブロック及び対応するサンプル)を提供することが可能である。一例では、再構成ブロック215がループ内フィルタリングなしに再構成される場合、復号化済みピクチャ・バッファ(decoded picture buffer,DPB)230は、再構成ブロック215を記憶するように構成される。
予測処理ユニット260はまた、ブロック予測処理ユニット260とも言及され、ブロック203(現在ピクチャ201の現在ブロック203)及び再構成されたピクチャ・データ、例えばバッファ216内の同じ(現在の)ピクチャからの参照サンプル、復号化済みピクチャ・バッファ230内の1つ以上の以前の復号化されたピクチャからの参照ピクチャ・データ231を受信又は取得し、そのデータを予測のために処理し、即ち、インター予測ブロック245又はイントラ予測ブロック255である可能性がある予測ブロック265を提供するように構成される。
モード選択ユニット262は、予測ブロック265として予測モード(例えば、イントラ又はインター予測モード)及び/又は対応する予測ブロック245又は255を選択して、残差ブロック205を計算し、再構成ブロック215を再構成するように構成されることが可能である。
モード選択ユニット262の実施形態は、予測モードを(例えば、予測処理ユニット260によりサポートされる予測モードから)選択するために使用されてもよい。予測モードは、最良の一致又は最小の残差(最小の残差は、伝送又は記憶における、より良い圧縮を意味する)を提供し、又は最小のシグナリング・オーバヘッド(最小のシグナリング・オーバヘッドは、伝送又は記憶における、より良い圧縮を意味する)を提供し、或いは両者を考慮する又はバランスをとる。モード選択ユニット262は、レート歪最適化(rate distortion optimization,RDO)に基づいて予測モードを決定するように、即ち、最小レート歪最適化を提供する予測モードを選択するように、又は関連するレート歪が少なくとも予測モード選択基準を満たす予測モードを選択するように構成されてもよい。
エンコーダ20の一例によって実行される、(例えば、予測処理ユニット260を用いることによる)予測処理及び(例えば、モード選択ユニット262を用いることによる)モード選択が、以下において詳細に説明される。
上述したように、エンコーダ20は、(所定の)予測モード・セットから最良の又は最適な予測モードを決定又は選択するように構成される。予測モード・セットは、例えば、イントラ予測モード及び/又はインター予測モードを含むことが可能である。
イントラ予測モード・セットは、35個の異なるイントラ予測モード、例えば、DC(又は平均)モード及び平面モードのような非方向性モード、又はH.265で規定されている方向性モードを含むことが可能であり、又は67個のイントラ予測モード、例えばDC(又は平均)モード及び平面モードのような非方向性モード、又はH.266で規定される発展した方向性モードを含むことが可能である。
(可能な)インター予測モード・セットは、利用可能な参照ピクチャ(例えば、DBP230に記憶されている復号化されたピクチャの少なくとも一部)及び他のインター予測パラメータに依存し、例えば、参照ピクチャ全体が使用されるか又は参照ピクチャの一部分のみが使用されるかどうか、例えば、現在ブロックの領域を囲むサーチ・ウィンドウ領域が、最良に合致する参照ブロックのために探索されるかどうかに依存し、及び/又は、ハーフ・サンプル及び/又は4分の1サンプル補間のようなサンプル補間が適用されるかどうかに依存する。
前述の予測モードに加えて、スキップ・モード及び/又はダイレクト・モードも適用されることが可能である。
予測処理ユニット260は、更に、ブロック203を、より小さなブロック・パーティション又はサブブロックに、例えば四分木(quad-tree,QT)分割、二分木(binary-tree,BT)分割、三分木又は三分探索木(triple-tree or ternary-tree,TT)分割、又はこれらの組み合わせを反復的に用いることにより分割し、ブロック・パーティション又はサブブロックのそれぞれに関して予測などを実行するように構成されてもよい。モード選択は、分割されたブロック203のツリー構造を選択することと、ブロック・パーティション又はサブブロックの各々に適用される予測モードを選択することとを含む。
インター予測ユニット244は、動き推定(motion estimation,ME)ユニット(図2には示されていない)と、動き補償(motion compensation,MC)ユニット(図2には示されていない)とを含むことが可能である。動き推定ユニットは、動き推定を行うために、ピクチャ・ブロック203(現在ピクチャ201の現在ピクチャ・ブロック203)及び復号化されたピクチャ31、又は少なくとも1つ以上の以前に再構成されたブロック、例えば、以前に復号化されたピクチャ31とは異なる1つ以上の他の再構成されたブロックを受信又は取得するように構成される。例えば、ビデオ・シーケンスは、現在のピクチャ及び以前の復号化されたピクチャ31を含む可能性がある。換言すれば、現在ピクチャ及び以前の復号化されたピクチャ31は、ビデオ・シーケンスを形成する、又はピクチャ・シーケンスを形成するピクチャのシーケンスの一部であってもよい。
例えば、エンコーダ20は、同一のピクチャの複数の参照ブロック、又は複数の他のピクチャにおける異なるピクチャから、参照ブロックを選択し、参照ピクチャ(又は参照ピクチャ・インデックス)、及び/又は参照ブロックの位置(X−Y座標)と現在ブロックの位置との間のオフセット(空間オフセット)を、インター予測パラメータとして動き推定ユニット(図2には示されていない)に提供するように構成されてもよい。このオフセットは、動きベクトル(motion vector,MV)とも言及される。
動き補償ユニットは、例えば、インター予測パラメータを取得、例えば受信し、インター予測パラメータに基づいて又はそれを使用することにより、インター予測を行ってインター予測ブロック245を取得するように構成される。動き補償ユニット(図2には示されていない)によって実行される動き補償は、動き推定によって決定される動き/ブロック・ベクトルに基づいて、予測ブロックをフェッチ又は生成すること(可能性として、サブ・サンプル精度で補間を実行することを含む)を含む可能性がある。補間フィルタリングの間に、追加サンプルが既知のサンプルから生成され、それにより、ピクチャ・ブロックを符号化するために使用される可能性がある候補予測ブロックの量を潜在的に増加させることが可能である。一旦、現在のピクチャ・ブロックのPUに使用される動きベクトルが受信されると、動き補償ユニット246は、動きベクトルが参照ピクチャ・リスト内で指し示す予測ブロックを位置決めすることが可能である。動き補償ユニット246は、更に、ブロック及びビデオ・スライスに関連するシンタックス要素を生成することが可能であり、その結果、ビデオ・デコーダ30は、ビデオ・スライスのピクチャ・ブロックを復号化する場合にシンタックス要素を使用する。
イントラ予測ユニット254は、例えば、同じピクチャのピクチャ・ブロック203(現在ピクチャ・ブロック)と、再構成された隣接ブロックのような1つ以上の以前の再構成ブロックとを取得、例えば受信して、イントラ推定を実行するように構成される。例えば、エンコーダ20は、複数の(所定の)イントラ予測モードからイントラ予測モードを選択するように構成されることが可能である。
エンコーダ20の実施形態は、最適化基準に基づいて、例えば最小残差(例えば、現在のピクチャ・ブロック203に最も類似した予測ブロック255を提供するイントラ予測モード)又は最小レート歪に基づいて、イントラ予測モードを選択するように構成されてもよい。
イントラ予測部254は、選択されたイントラ予測モードのイントラ予測パラメータに基づいて、イントラ予測ブロック255を決定するように更に構成される。何れにせよ、ブロックに使用されるイントラ予測モードを選択した後、イントラ予測ユニット254は、更に、エントロピー符号化ユニット270にイントラ予測パラメータを提供するように、即ち、ブロックに使用される選択されたイントラ予測モードを示す情報を提供するように構成される。一例では、イントラ予測ユニット254は、以下のイントラ予測技術の任意の組み合わせを実行するように構成されてもよい。
エントロピー符号化ユニット270は、エントロピー符号化アルゴリズム又はスキーム(例えば、可変長コーディング(variable length coding,VLC)スキーム、コンテキスト適応VLC(context adaptive VLC,CAVLC)スキーム、算術コーディング・スキーム、コンテキスト適応バイナリ算術コーディング(context adaptive binary arithmetic coding,CABAC)スキーム、シンタックス・ベースのコンテキスト適応バイナリ算術コーディング(syntax-based context-adaptive binary arithmetic coding, SBAC)スキーム、確率区間分割エントロピー(probability interval partitioning entropy, PIPE)コーディング・スキーム、又は他のエントロピー符号化方法又は技術)を、量子化された残差係数209、インター予測パラメータ、イントラ予測パラメータ、及び/又はループ・フィルタ・パラメータのうちの1つ以上に適用して(又は何れにも適用せず)、出力272を使用することにより例えば符号化されたビットストリームの形式で出力されることが可能な符号化されたピクチャ・データ21を取得するように構成される。符号化されたビットストリームは、ビデオ・デコーダ30に送信されてもよいし、又はビデオ・デコーダ30による後の送信又は検索のために保管されてもよい。エントロピー符号化ユニット270は、符号化されつつある現在のビデオ・スライスの別のシンタックス要素に関してエントロピー符号化を実行するように更に構成されてもよい。
ビデオ・エンコーダ20の別の構造的な変形は、ビデオ・ストリームを符号化するように構成されてもよい。例えば、非変換ベースのエンコーダ20は、幾つかのブロック又はフレームについて、変換処理ユニット206を使用せずに残差信号を直接的に量子化することができる。別の実装において、エンコーダ20は、1つのユニットに結合される量子化ユニット208及び逆量子化ユニット210を有することが可能である。
図3は、本願における技術を実装するように構成されたビデオ・デコーダ30の一例を示す。ビデオ・デコーダ30は、エンコーダ20等によって符号化された符号化されたピクチャ・データ(例えば、符号化されたビットストリーム)21を受信して、復号化されたピクチャ31を取得するように構成される。復号化処理において、ビデオ・デコーダ30は、ビデオ・エンコーダ20からビデオ・データ、例えば符号化ビデオ・スライスのピクチャ・ブロック及び関連するシンタックス要素を示す符号化ビデオ・ビットストリームを受信する。
図3の例では、デコーダ30は、エントロピー復号化ユニット304と、逆量子化ユニット310と、逆変換処理ユニット312と、再構成ユニット314(例えば、加算器314)と、バッファ316と、ループ・フィルタ320と、復号化済みピクチャ・バッファ330と、予測処理ユニット360とを含む。予測処理ユニット360は、インター予測ユニット344と、イントラ予測ユニット354と、モード選択ユニット362とを含んでもよい。幾つかの例では、ビデオ・デコーダ30は、図2のビデオ・エンコーダ20を参照して説明した符号化トラバースに対して概ね逆の復号化トラバースを実行することが可能である。
エントロピー復号化ユニット304は、符号化されたピクチャ・データ21に関してエントロピー復号化を実行し、量子化係数309、復号化されたコーディング・パラメータ(図3には示されていない)等、及び/又は、例えばインター予測パラメータ、イントラ予測パラメータ、ループ・フィルタ・パラメータ、及び/又は他のシンタックス要素(復号化されている)のうちの任意の1つ又は全てを取得するように構成される。エントロピー復号化ユニット304は、更に、インター予測パラメータ、イントラ予測パラメータ、及び/又は他のシンタックス要素を予測処理ユニット360に転送するように構成される。ビデオ・デコーダ30は、ビデオ・スライス・レベルでのシンタックス要素及び/又はビデオ・ブロック・レベルでのシンタックス要素を受信することが可能である。
逆量子化ユニット310は、逆量子化ユニット110と同じ機能を有してもよく、逆変換処理ユニット312は、逆変換処理ユニット212と同じ機能を有してもよく、再構成ユニット314は、再構成ユニット214と同じ機能を有してもよく、バッファ316は、バッファ216と同じ機能を有してもよく、ループ・フィルタ320は、ループ・フィルタ220と同じ機能を有してもよく、復号化済みピクチャ・バッファ330は、復号化済みピクチャ・バッファ230と同じ機能を有してもよい。
予測処理ユニット360は、インター予測ユニット344及び内部予測ユニット354を含むことが可能である。インター予測ユニット344は、インター予測ユニット244と同様の機能を有してもよく、イントラ予測ユニット354は、イントラ予測ユニット254と同様の機能を有してもよい。予測処理ユニット360は、通常、ブロック予測を実行し、及び/又は符号化されたデータ21から予測ブロック365を取得し、選択された予測モードに関する予測関連パラメータ及び/又は情報を、例えばエントロピー復号化ユニット304から(明示的又は黙示的に)受信又は取得するように構成される。
ビデオ・スライスがイントラ符号化(I)として符号化されると、予測処理ユニット360のイントラ予測ユニット354は、現在フレーム又はピクチャの以前の復号化されたブロックからのデータ及びシグナリングされたイントラ予測モードに基づいて、現在のビデオ・スライスのピクチャ・ブロックに使用される予測ブロック365を生成するように構成される。ビデオ・フレームが、インター・コーディングされた(即ち、B又はP)スライスとして符号化されると、予測処理ユニット360のインター予測ユニット344(例えば、動き補償ユニット)は、エントロピー復号化ユニット304から受信した動きベクトル及び別のシンタックス要素に基づいて、現在のビデオ・スライスのビデオ・ブロックに使用される予測ブロック365を生成するように構成される。インター予測に関し、予測ブロックは、1つの参照ピクチャ・リスト内の参照ピクチャの1つから生成されてもよい。ビデオ・デコーダ30は、DPB330に記憶された参照ピクチャに基づくデフォルトの構成技術を使用することによって、リスト0及びリスト1の参照フレーム・リストを構成することができる。
予測処理ユニット360は、動きベクトル及び他のシンタックス要素を解析することにより、現在のビデオ・スライスのビデオ・ブロックに使用される予測情報を決定し、予測情報を使用して、復号化されつつある現在のビデオ・ブロックに使用される予測ブロックを生成するように構成される。例えば、予測処理ユニット360は、受信した幾つかのシンタックス要素を使用することにより、ビデオ・スライスのビデオ・ブロックを符号化するために使用される予測モード(例えば、イントラ又はインター予測)、インター予測スライス・タイプ(例えば、Bスライス、Pスライス、又はGPBスライス)、スライスに使用される参照ピクチャ・リスト内の1つ以上のピクチャの構成情報、スライスに使用されるインター符号化ビデオ・ブロック各々の動きベクトル、スライスに使用されるインター符号化ビデオ・ブロック各々のインター予測状態、及び他の情報を決定して、現在のビデオ・スライスのビデオ・ブロックを復号化する。
逆量子化ユニット310は、ビットストリームで提供されるエントロピー復号化ユニット304によって復号化される量子化変換係数に対して逆量子化(即ち、非量子化)を実行するように構成されてもよい。逆量子化プロセスは、ビデオ・スライス内の各ビデオ・ブロックについてビデオ・エンコーダ20によって計算される量子化パラメータを使用して、適用されるべき量子化の程度を決定し、適用されるべき逆量子化の程度を決定することを含む可能性がある。
逆変換処理ユニット312は、変換係数に逆変換(例えば、逆DCT、逆整数変換、又は概念的に類似する逆変換処理)を適用して、サンプル・ドメインにおける残差ブロックを生成するように構成される。
再構成ユニット314(例えば、加算器314)は、逆変換ブロック313(即ち、再構成された残差ブロック313)を予測ブロック365に加算して、例えば、再構成された残差ブロック313のサンプル値を予測ブロック365のサンプル値に加算することによって、サンプル・ドメインにおける再構成されたブロック315を取得するように構成される。
ループ・フィルタ・ユニット320(符号化ループ内又は符号化ループの後)は、再構成されたブロック315をフィルタリングして、フィルタリングされたブロック321を取得し、サンプル変換を円滑に実行する、又はビデオ品質を改善するように構成される。一例では、ループ・フィルタ・ユニット320は、以下のフィルタリング技術の任意の組み合わせを実行するように構成されることが可能である。ループ・フィルタ・ユニット320は、1つ以上のループ・フィルタ、例えば、デブロッキング・フィルタ、サンプル・アダプティブ・オフセット(sample-adaptive offset,SAO)フィルタ、又は別のフィルタ、例えばバイラテラル・フィルタ、アダプティブ・ループ・フィルタ(adaptive loop filter,ALF)、鮮鋭化又は平滑化フィルタ、又は協調フィルタを表すように意図されている。ループ・フィルタ・ユニット320は、ループ内フィルタとして図3に示されているが、ループ・フィルタ・ユニット320は、他の構成では、ポスト・ループ・フィルタとして実装されてもよい。
所与のフレーム又はピクチャ内のフィルタリングされたブロック321は、その後の動き補償に使用される参照ピクチャを記憶する復号化済みピクチャ・バッファ330に記憶される。
デコーダ30は、出力332等を使用することにより復号化されたピクチャ31を出力し、復号化されたピクチャ31をユーザーに提示する、又はユーザーが眺めるように復号化されたピクチャ31を提供するように構成される。
ビデオ・デコーダ30の別の変形は、圧縮されたビットストリームを復号化するように構成されることが可能である。例えば、デコーダ30は、ループ・フィルタ・ユニット320なしに出力ビデオ・ストリームを生成することができる。例えば、非変換ベースのデコーダ30は、幾つかのブロック又はフレームに対して、逆変換処理ユニット312なしに、残差信号を直接的に非量子化することが可能である。別の実装において、ビデオ・デコーダ30は、1つのユニットに結合される逆量子化ユニット310及び逆変換処理ユニット312を有することが可能である。
図4は、例示の実施形態による図2のエンコーダ20及び/又は図3のデコーダ30を含むビデオ・コーディング・システム40の一例を示す図である。システム40は本願の様々な技術の組み合わせを実装することが可能である。図示の実装において、ビデオ・コーディング・システム40は、撮像デバイス41、ビデオ・エンコーダ20、ビデオ・デコーダ30(及び/又は、処理ユニット46の論理回路47によって実現されるビデオ・デコーダ)、アンテナ42、1つ以上のプロセッサ43、1つ以上のメモリ44、及び/又は、表示デバイス45を含んでもよい。
図面に示されるように、撮像デバイス41、アンテナ42、処理デバイス46、論理回路47、ビデオ・エンコーダ20、ビデオ・デコーダ30、プロセッサ43、メモリ44、及び/又は表示デバイス45は、互いに通信することが可能である。説明されるように、ビデオ・コーディング・システム40は、ビデオ・エンコーダ20及びビデオ・デコーダ30の両方とともに示されているが、異なる例において、ビデオ・コーディング・システム40は、ビデオ・エンコーダ20のみ、又はビデオ・デコーダ30のみを含む可能性がある。
幾つかの例では、図面に示されるように、ビデオ・コーディング・システム40は、アンテナ42を含むことが可能である。例えば、アンテナ42は、ビデオ・データの符号化されたビットストリームを送信又は受信するように構成されることが可能である。更に、幾つかの例において、ビデオ・コーディング・システム40は、表示デバイス45を含んでもよい。表示デバイス45は、ビデオ・データを提示するように構成されることが可能である。幾つかの例では、図面に示されるように、論理回路47は、処理ユニット46によって実現されてもよい。処理ユニット46は、特定用途向け集積回路(application-specific integrated circuit,ASIC)ロジック、グラフィックス処理ユニット、汎用プロセッサ等を含むことが可能である。ビデオ・コーディング・システム40はまた、オプションのプロセッサ43を含んでもよい。オプションのプロセッサ43は、同様に、特定用途向け集積回路(application-specific integrated circuit,ASIC)ロジック、グラフィックス処理ユニット、汎用プロセッサ等を含むことが可能である。幾つかの例では、論理回路47は、ビデオ符号化専用ハードウェアのようなハードウェアによって実装されることが可能であり、プロセッサ43は、ユニバーサル・ソフトウェア、オペレーティング・システム等によって実現されることが可能である。更に、メモリ44は、任意のタイプのメモリ、例えば揮発性メモリ(例えば、スタティック・ランダム・アクセス・メモリ(Static Random Access Memory,SRAM)又はダイナミック・ランダム・アクセス・メモリ(Dynamic Random Access Memory, DRAM)又は不揮発性メモリ(例えば、フラッシュ・メモリ)であってもよい。非限定的な例では、メモリ44は、キャッシュ・メモリによって実現されてもよい。幾つかの例では、論理回路47は、(例えば、イメージ・バッファを実現するための)メモリ44にアクセスすることが可能である。他の例では、論理回路47及び/又は処理ユニット46は、画像バッファ等を実現するためのメモリ(例えば、キャッシュ)を含む可能性がある。
一部の例では、論理回路によって実現されるビデオ・エンコーダ20は、画像バッファ(例えば、処理ユニット46又はメモリ44によって実現される)及びグラフィックス処理ユニット(例えば、処理ユニット46によって実現される)を含むことが可能である。グラフィックス処理ユニットは、画像バッファに通信可能に結合されることが可能である。グラフィックス処理ユニットは、図2を参照して説明される種々のモジュール、及び/又は本明細書で説明される他の任意のエンコーダ・システム又はサブシステムを実現するために、論理回路47によって実現されるビデオ・エンコーダ20を含んでもよい。論理回路は、本明細書で説明される種々の動作を実行するように構成されることが可能である。
ビデオ・デコーダ30は、図3のデコーダ30を参照して説明される種々のモジュール、及び/又は本明細書で説明される他の任意のデコーダ・システム又はサブシステムを実現するために、論理回路47によって同様に実現されてもよい。幾つかの例において、論理回路によって実現されるビデオ・デコーダ30は、画像バッファ(処理ユニット46又はメモリ44によって実現される)及びグラフィックス処理ユニット(例えば、処理ユニット46によって実現される)を含んでもよい。グラフィックス処理ユニットは、画像バッファに通信可能に結合されることが可能である。グラフィックス処理ユニットは、図3を参照して説明される種々のモジュール、及び/又は本明細書で説明される任意の他のデコーダ・システム又はサブシステムを実現するために、論理回路47によって実現されるビデオ・デコーダ30を含んでもよい。
幾つかの例では、ビデオ・コーディング・システム40のアンテナ42は、ビデオ・データの符号化されたビットストリームを受信するように構成されてもよい。説明されるように、符号化されたビットストリームは、本明細書で説明されるビデオ・フレーム符号化に関連するデータ、インジケータ、インデックス値、モード選択データ等、例えば、符号化分割に関連するデータ(例えば、変換係数又は量子化変換係数、(説明されているような)オプションのインジケータ、及び/又は符号化分割を規定するデータ)を含んでもよい。ビデオ・コーディング・システム40は、アンテナ42に結合され、符号化されたビットストリームを復号化するように構成されたビデオ・デコーダ30を更に含むことが可能である。表示デバイス45は、ビデオ・フレームを提示するように構成される。
図5は、例示的な実施形態による図1のソース・デバイス12及び宛先デバイス14のうちの任意の1つ又は2つとして使用することが可能な装置500の簡略化されたブロック図である。装置500は、本願における技術を実装することができる。装置500は、複数のコンピューティング・デバイスを含むコンピューティング・システムの一形態を使用することが可能であり、又は、携帯電話、タブレット・コンピュータ、ラップトップ・コンピュータ、ノートブック・コンピュータ、又はデスクトップ・コンピュータのような単一のコンピューティング・デバイスの一形態を使用することが可能である。
装置500内のプロセッサ502は、中央処理ユニットであってもよい。代替的に、プロセッサ502は、何らかの他のタイプの既存の若しくは将来のデバイス、又は情報を制御又は処理することが可能なデバイスであってもよい。図面に示されているように、開示される実装は、プロセッサ502のような単一のプロセッサを使用することによって実施されることが可能であるが、1つより多いプロセッサを使用することによって、速度及び効率における利点を達成することができる。
実装においては、装置500内のメモリ504は、リード・オンリ・メモリ(Read Only Memory,ROM)又はランダム・アクセス・メモリ(random access memory,RAM)であってもよい。他の任意の適切なタイプの記憶デバイスがメモリ504として使用されることが可能である。メモリ504は、バス512を使用することによって、プロセッサ502によりアクセスされるコード及びデータ506を含んでもよい。メモリ504は、オペレーティング・システム508及びアプリケーション・プログラム510を更に含んでもよい。アプリケーション・プログラム510は、プロセッサ502が本明細書で説明される方法を実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーション・プログラム510はアプリケーション1からNを含むことが可能であり、アプリケーション1からNは更に、本明細書で説明される方法を実行するためのビデオ符号化アプリケーションを更に含む。装置500は、更に、セカンダリ・メモリ514の形態で追加メモリを含んでもよい。セカンダリ・メモリ514は、例えば、モバイル・コンピューティング・デバイスと共に使用されるメモリ・カードであってもよい。ビデオ通信セッションは、大量の情報を含む可能性があるので、情報は、セカンダリ・メモリ514に完全又は部分的に記憶され、必要に応じて処理のためにメモリ504にロードされることが可能である。
装置500は、1つ以上の出力デバイス、例えばディスプレイ518を更に含んでもよい。一例では、ディスプレイ518は、タッチ入力を感知するように動作することが可能なタッチ感知素子とディスプレイを組み合わせるタッチ感知ディスプレイであってもよい。ディスプレイ518は、バス512を使用することによってプロセッサ502に結合されことが可能である。ディスプレイ518に加えて、ユーザーが装置500をプログラムすること、又は別の方法で装置500を使用することを可能にする別の出力デバイスが更に提供されてもよく、又は別の出力デバイスがディスプレイ518の代わりとして提供されてもよい。出力デバイスがディスプレイである、又はディスプレイを含む場合、ディスプレイは、例えば、液晶ディスプレイ(liquid crystal display,LCD)、陰極線管(cathode-ray tube,CRT)ディスプレイ、プラズマ・ディスプレイ、又は有機LED(organic LED,OLED)ディスプレイのような発光ダイオード(LED)ディスプレイを使用することによって、別様に実装されてもよい。
装置500は、更に、画像感知デバイス520を含んでもよいし、又は画像感知デバイス520に接続されてもよい。画像感知デバイス520は、例えば、画像を感知することが可能なカメラ又は何らかの他の既存の若しくは将来の画像感知デバイス520である。画像は、例えば、装置500を動かすユーザーの画像である。画像感知デバイス520は、装置500を動かすユーザーに直に対面して配置されることが可能である。一例では、画像感知デバイス520の位置及び光軸は、画像感知デバイス520の視野が、ディスプレイ518に隣接する領域を含み、且つディスプレイ518がその領域から見えるように、構成されることが可能である。
デバイス500は、更に、サウンド感知デバイス522を含んでもよいし、又はサウンド感知デバイス522に接続されてもよい。サウンド感知デバイス522は、例えば、マイクロホン、又はデバイス500の近辺で音を感知することが可能な何らかの他の既存の又は将来のサウンド感知デバイスである。サウンド感知デバイス522は、装置500を動かすユーザーに直に対面して配置されることが可能であり、ユーザーが装置500を動かす場合にユーザーによって生じる声又は別の音、のような音を受信するように構成されてもよい。
装置500のプロセッサ502及びメモリ504は、図5に示されるように1つのユニットに一体化されているが、他の構成を使用することが可能である。プロセッサ502の動作は、直接結合されることが可能な複数のマシン(各マシンは1つ以上のプロセッサを有する)に分散されてもよいし、又はローカルな領域又は別のネットワークに分散されてもよい。メモリ504は、ネットワーク・ベースのメモリ及び装置500を動かす複数のマシンにおけるメモリのように複数のマシンに分散されもよい。ここでは単一のバスが描かれているが、装置500の複数のバス512が存在してもよい。更に、セカンダリ・メモリ514は、装置500の他の構成要素に直接的に結合されてもよいし、又はネットワークを介してアクセスされてもよいし、メモリ・カードのような単一の集積ユニット、又は複数のメモリ・カードのような複数のユニットを含んでもよい。従って、装置500は、複数の構成で実現されることが可能である。
以下、本願の概念を説明する。
1.インター予測モード
HEVCでは、2つのインター予測モード:アドバンスト動きベクトル予測(advanced motion vector prediction,AMVP)モード及びマージ(merge)モードが使用される。
AMVPモードでは、先ず現在ブロックの空間的又は時間的に隣接する符号化ブロック(隣接ブロックと称する)がトラバースされ、隣接ブロックの動き情報に基づいて、候補動きベクトル・リスト(動き情報候補リストとも言及される)が構築される。次に、レート歪コストに基づいて、最適な動きベクトルが、候補動きベクトル・リストから決定され、最小レート歪コストを有する候補動き情報が、現在ブロックの動きベクトル予測子(motion vector predictor,MVP)として使用される。隣接ブロックの位置及びそのトラバース順序の両方は予め定められる。レート歪コストは、式(1)に従って計算され、ここで、Jはレート歪コストRDコストを示し、SADはオリジナル・サンプル値と、候補動きベクトル予測子を使用することによる動き推定によって取得される予測サンプル値との間の絶対差の合計(sum of absolute differences,SAD)であり、Rはビット・レートを示し、λはラグランジュ乗数を示す。エンコーダ側は、候補動きベクトル・リスト内の選択された動きベクトル予測子のインデックスと、参照フレームのインデックス値とを、デコーダ側に転送する。更に、現在ブロックの実際の動きベクトルを取得するために、MVPを中心とした近傍で動き探索が実行される。エンコーダ側は、MVPと実際の動きベクトルとの間の差(動きベクトル差)をデコーダ側に転送する。
J = SAD + λR (1)
マージ・モードにおいて、現在ブロックの空間的又は時間的に隣接する符号化ブロックの動き情報に基づいて、候補動きベクトル・リストが先ず構築される。次いで、現在ブロックの動き情報として役立つように、レート歪コストに基づいて、最適動き情報が候補動きベクトル・リストから決定される。次に、候補動きベクトル・リスト内の最適動き情報の位置のインデックス値(以下、マージ・インデックスと称する)が、デコーダ側に転送される。現在ブロックの空間候補動き情報及び時間候補動き情報が図6に示されている。空間候補動き情報は、5つの空間的に隣接するブロック(A0,A1,B0,B1,B2)からのものである。隣接ブロックが利用可能でない場合(隣接ブロックが存在しない場合、隣接ブロックが符号化されていない場合、隣接ブロックに使用される予測モードがインター予測モードでない場合)、隣接ブロックの動き情報は候補動きベクトル・リストに追加されない。現在ブロックの時間候補動き情報は、参照フレーム及び現在フレームのピクチャ順序カウント(picture order count,POC)に基づいて、参照フレームの対応する位置におけるブロックのMVをスケーリングすることによって取得される。参照フレーム内のTの位置のブロックが利用可能であるか否かが先ず判定される。ブロックが利用可能でない場合、Cの位置のブロックが選択される。
AMVPモードと同様に、マージ・モードでは、隣接ブロックの位置とそのトラバース順序の両方が予め決定される。更に、隣接ブロックの位置及びそのトラバース順序は、モードによって変化する可能性がある。
候補動きベクトル・リストは、AMVPモード及びマージ・モードの両方で維持されなければならないことが分かる。新しい動き情報が候補リストに追加される前にその都度、リスト内に同じ動き情報が存在するかどうかが先ず検査される。同じ動き情報が存在する場合、動き情報はリストに追加されない。この検査プロセスは、候補動きベクトル・リストのトリミングと言及される。リストのトリミングは、リスト内の同じ動き情報を回避することであり、それによって冗長なレート歪コスト計算を回避する。
HEVCインター予測では、コーディング・ブロック内のすべてのサンプルが同じの動き情報を使用し、従って、コーディング・ブロックのサンプルの予測子を取得するために、動き補償が動き情報に基づいて実行される。しかしながら、コーディング・ブロックにおいて、すべてのサンプルが同じ動き特性を有するわけではない。同じ動き情報を使用すると、不正確な動き補償予測、及びより多くの残差情報を生じさせる可能性がある。
既存のビデオ・コーディング規格では、並進運動モデルに基づくブロック・マッチング動き推定が使用され、ブロック内のすべてのサンプルの動きは一貫していると仮定されている。しかしながら、現実の世界では、さまざまな動きが存在する。多くの物体は、非並進運動にあり、例えば、回転する物体、様々な方向で回転するローラー・コースター、花火の表示、及び映画における幾つかのスタント、特にUGCシナリオにおける移動する物体である。これらの移動する物体に対して、既存のコーディング規格における並進運動モデルに基づくブロック動き補償技術がコーディングに使用される場合、コーディング効率は大きく影響される可能性がある。従って、コーディング効率を更に改善するために、アフィン動きモデルのような非並進運動モデルが導入される。
従って、様々な運動モデルに関し、AMVPモードは、並進モデル・ベースのAMVPモードと非並進モデル・ベースのAMVPモードとに分類され、マージ・モードは、並進モデル・ベースのマージ・モードと非並進モデル・ベースのマージ・モードとに分類されることが可能である。
2.非並進運動モデル
非並進運動モデル・ベースの予測では、コーデック側は、現在ブロック内の各々のチャイルド動き補償ユニットの動き情報を導出するために1つの運動モデルを使用し、予測ブロックを取得するためにチャイルド動き補償ユニットの動き情報に基づいて動き補償を実行し、予測効率を向上させる。一般的な非並進運動モデルは、4パラメータ・アフィン動きモデル又は6パラメータ・アフィン動きモデルである。
本願の実施形態におけるチャイルド動き補償ユニットは、特定の方法に従う分割によって得られたサンプル又はN1×N2サンプル・ブロックである可能性があり、N1及びN2は双方とも正の整数であり、N1はN2に等しくてもよいし、又はN2に等しくなくてもよい。
4パラメータ・アフィン動きモデルは式(2)のように表現される:
4パラメータ・アフィン動きモデルは、2つのサンプルの動きベクトルと、現在ブロックの左上サンプルに対する2つのサンプルの座標とによって表すことが可能である。運動モデル・パラメータを表現するために使用されるサンプルは、制御ポイントと呼ばれる。左上サンプル(0,0)及び右上サンプル(W,0)が制御ポイントとして使用される場合、現在ブロックの左上制御ポイントと右上制御ポイントの動きベクトル(vx0,vy0)及び(vx1,vy1)が、先ず決定される。次いで、現在ブロックにおける各チャイルド動き補償ユニットの動き情報は、式(3)に従って取得され、ここで、(x,y)は現在ブロックの左上サンプルに対するチャイルド動き補償ユニットの座標であり、Wは現在ブロックの幅を示す。
6パラメータ・アフィン動きモデルは式(4)のように表現される:
6パラメータ・アフィン動きモデルは、3つのサンプルの動きベクトルと、現在ブロックの左上サンプルに対する3つのサンプルの座標とによって表現されることが可能である。左上サンプル(0,0)、右上サンプル(W,0)、及び左下サンプル(0,H)が制御ポイントとして使用される場合に、現在ブロックの左上制御ポイント、右上制御ポイント、及び左下制御ポイントの動きベクトル(vx0,vy0),(vx1,vy1)及び(vx2,vy2)が先ず決定される。次いで、現在ブロックにおける各チャイルド動き補償ユニットの動き情報は、式(5)に従って取得され、ここで、(x,y)は現在ブロックの左上サンプルに対するチャイルド動き補償ユニットの座標であり、W及びHはそれぞれ現在ブロックの幅及び高さを示す。
アフィン動きモデルを使用することにより予測されるコーディング・ブロックは、アフィン・コーディング・ブロックと言及される。
一般に、アフィン・コーディング・ブロックの制御ポイントの動き情報は、アフィン動きモデル・ベースのアドバンスト動きベクトル予測(Advanced Motion Vector Prediction,AMVP)モード又はアフィン動きモデル・ベースのマージ(Merge)モードを使用することにより取得することができる。
現在のコーディング・ブロックの制御ポイントの動き情報は、継承制御ポイント動きベクトル予測法又は構築制御ポイント動きベクトル予測法を使用することにより取得されることが可能である。
3.継承制御ポイント動きベクトル予測法
継承制御ポイント動きベクトル予測法は、隣接する符号化されたアフィン・コーディング・ブロックの動きモデルを用いて、現在ブロックの候補制御ポイント動きベクトルを決定するものである。
図7に示す現在ブロックが一例として使用される。現在ブロック周辺の隣接ブロックは、指定された順序、例えば、A1→B1→B0→A0→B2でトラバースされ、現在ブロックの隣接ブロックが位置するアフィン・コーディング・ブロックを発見し、アフィン・コーディング・ブロックの制御ポイント動き情報を取得する。更に、現在ブロックの制御ポイント動きベクトル(マージ・モードの場合)又は制御ポイント動きベクトル予測子(AMVPモードの場合)が、アフィン・コーディング・ブロックの制御ポイント動き情報を使用することにより構築された運動モデルを用いて導出される。A1→B1→B0→A0→B2の順序は、単なる一例として使用されている。他の組み合わせの順序もまた、本願に適用可能である。更に、隣接ブロックは、A1、B1、B0、A0、及びB2に限定されない。
隣接ブロックは、特定の分割方法に基づいて得られる事前に設定されたサイズのサンプル又はサンプル・ブロックである可能性があり、例えば4×4サンプル・ブロック、4×2サンプル・ブロック、又は別のサイズのサンプル・ブロックであってもよい。これは限定されない。
以下、一例としてA1を用いることによる決定プロセスを説明する。他の場合はこれと同様である。
図7に示すように、A1が位置するコーディング・ブロックが4パラメータ・アフィン・コーディング・ブロックである場合、アフィン・コーディング・ブロックの左上サンプル(x4,y4)の動きベクトル(vx4,vy4)と右上サンプル(x5,y5)の動きベクトル(vx5,vy5)とが取得される。現在アフィン・コーディング・ブロックの左上サンプル(x0,y0)の動きベクトル(vx0,vy0)は、式(6)に従って計算され、現在のアフィン・コーディング・ブロックの右上サンプル(x1,y1)の動きベクトル(vx1,vy1)は、式(7)に従って計算される。
A1が位置するアフィン・コーディング・ブロックに基づいて得られる、現在ブロックの左上サンプル(x0,y0)の動きベクトル(vx0,vy0)と右上サンプル(x1,y1)の動きベクトル(vx1,vy1)との組み合わせが、現在ブロックの候補の制御ポイント動きベクトルである。
A1が位置するコーディング・ブロックが6パラメータ・アフィン・コーディング・ブロックである場合、アフィン・コーディン・ブロックの左上サンプル(x4,y4)の動きベクトル(vx4,vy4)、右上サンプル(x5,y5)の動きベクトル(vx5,vy5)、左下サンプル(x6,y6)の動きベクトル(vx6,vy6)が取得される。現在ブロックの左上サンプル(x0,y0)の動きベクトル(vx0,vy0)は、式(8)に従って計算され、現在ブロックの右上サンプル(x1,y1)の動きベクトル(vx1,vy1)は、式(9)に従って計算され、現在ブロックの左下サンプル(x2,y2)の動きベクトル(vx2,vy2)は、式(10)に従って計算される。
A1が位置するアフィン・コーディング・ブロックに基づいて取得される現在ブロックの、左上サンプル(x0,y0)の動きベクトル(vx0,vy0)、右上サンプル(x1,y1)の動きベクトル(vx1,vy1)、左下サンプル(x2,y2)の動きベクトル(vx2,vy2)の組み合わせが、現在ブロックの候補の制御ポイント動きベクトルである。
他の運動モデル、候補位置、検索及びトラバース順序も本願に適用可能であることに留意すべきである。詳細は本願の実施形態では説明されない。
隣接する及び現在のコーディング・ブロックの運動モデルを表現するために他の制御ポイントが使用される方法もまた本願に適用可能であることに留意すべきである。詳細はここでは説明されない。
4.構築制御ポイント動きベクトル(constructed control point motion vectors)予測法1
構築制御ポイント動きベクトル予測法は、隣接する符号化ブロックがアフィン・コーディング・ブロックであるかどうかを考慮せずに、現在ブロックの制御ポイント周辺の隣接する符号化ブロックの動きベクトルを結合し、結合された動きベクトルを、現在のアフィン・コーディング・ブロックの制御ポイント動きベクトルとして使用するものである。
現在ブロックの左上サンプルと右上サンプルの動きベクトルは、現在のコーディング・ブロック周辺の隣接する符号化ブロックの動き情報を使用することにより決定される。図8Aは、構築制御ポイント動きベクトル予測法を説明するための一例として使用される。図8Aは単なる一例であることに留意すべきである。
図8Aに示すように、左上サンプルの隣接する符号化ブロックA2、B2、B3の動きベクトルは、現在ブロックの左上サンプルの動きベクトルに対する候補動きベクトルとして使用され、右上サンプルの隣接する符号化ブロックB1、B0の動きベクトルは、現在ブロックの右上サンプルの動きベクトルに対する候補動きベクトルとして使用される。左上サンプルと右上サンプルの候補の動きベクトルは、複数の2タプルを構成するように組み合わせられる。2タプルに含まれる2つの符号化ブロックの動きベクトルは、以下の式(11A)に示されるように、現在ブロックの候補の制御ポイント動きベクトルとして使用されることが可能である:
vA2はA2の動きベクトルを示し、vB1はB1の動きベクトルを示し、vB0はB0の動きベクトルを示し、vB2はB2の動きベクトルを示し、vB3はB3の動きベクトルを示す。
図8Aに示されるように、左上サンプルの隣接する符号化ブロックA2、B2、B3の動きベクトルは、現在ブロックの左上サンプルの動きベクトルに対する候補動きベクトルとして使用され、右上サンプルの隣接する符号化ブロックB1、B0の動きベクトルは、現在ブロックの右上サンプルの動きベクトルに対する候補動きベクトルとして使用され、左下サンプルの隣接する符号化ブロックA0、A1の動きベクトルは、現在ブロックの左下サンプルの動きベクトルに対する候補動きベクトルとして使用される。左上サンプル、右上サンプル、及び左下サンプルの候補動きベクトルは、3タプルを構成するように組み合わせられる。3タプルに含まれる3つの符号化ブロックの動きベクトルは、以下の式(11B)及び(11C)に示されるように、現在ブロックの候補制御ポイント動きベクトルとして使用されることが可能である:
vA2はA2の動きベクトルを示し、vB1はB1の動きベクトルを示し、vB0はB0の動きベクトルを示し、vB2はB2の動きベクトルを示し、vB3はB3の動きベクトルを示し、vA0はA0の動きベクトルを示し、vA1はA1の動きベクトルを示す。
制御ポイントの動きベクトルを組み合わせる他の方法も本願に適用できることに留意すべきである。詳細はここでは説明されない。
隣接する及び現在のコーディング・ブロックの運動モデルを表現するために他の制御ポイントが使用される方法もまた本願に適用できることに留意すべきである。詳細はここでは説明されない。
5.構築制御ポイント動きベクトル(constructed control point motion vectors)予測法2:これについては、図8を参照されたい。
ステップ801:現在ブロックの制御ポイントの動き情報を取得する。
例えば、図8Aにおいて、CPk(k=1,2,3,又は4)はk番目の制御ポイントを示し、A0,A1,A2,B0,B1,B2,及びB3は、現在ブロックの空間的に隣接する位置であり、且つCP1,CP2,又はCP3を予測するために使用され、Tは、現在ブロックの時間的に隣接する位置であり、且つCP4を予測するために使用される。
CP1,CP2,CP3,及びCP4の座標はそれぞれ(0,0),(W,0),(H,0),(W,H)であると仮定し、ここで、WとHは現在ブロックの幅と高さを示す。
各々の制御ポイントの動き情報は以下の順序で取得される:
(1)CP1の場合、検査順序はB2→A2→B3である。B2が利用可能である場合、B2の動き情報が使用される。B2が利用可能でない場合、A2及びB3が検査される。3つの位置すべての動き情報が利用不能な場合、CP1の動き情報を取得することはできない。
(2)CP2の場合、検査順序はB0→B1である。B0が利用可能である場合、B0の動き情報がCP2のために使用される。B0が利用可能でない場合、B1が検査される。双方の位置の動き情報が利用不能な場合、CP2の動き情報を取得することはできない。
(3)CP3の場合、検査順序はA0→A1である。
(4)CP4の場合、Tの動き情報が使用される。
ここで、Xが利用可能であるということは、X(XはA0、A1、A2、B0、B1、B2、B3、又はTである)の位置におけるブロックが符号化されており、インター予測モードが使用されることを意味する。そうでない場合、Xの位置は利用可能ではない。
制御ポイントの動き情報を取得する他の方法もまた本願に適用できることに留意すべきである。詳細はここでは説明されない。
ステップ802:制御ポイントの動き情報を結合し、構築制御ポイント動き情報を取得する。
2つの制御ポイントの動き情報は、2タプルを構成するように組み合わせられ、4パラメータ・アフィン動きモデルを構築する。2つの制御ポイントを結合する方法は、{CP1,CP4},{CP2,CP3},{CP1,CP2},{CP2,CP4},{CP1,CP3},又は{CP3,CP4}であってもよい。例えば、制御ポイントCP1及びCP2を含む2タプルを使用することにより構築された4パラメータ・アフィン動きモデルは、Affine(CP1,CP2)として示される可能性がある。
3つの制御ポイントの動き情報は、3タプルを構成するように組み合わせられ、6パラメータ・アフィン動きモデルを構築する。3つの制御ポイントを結合する方法は、{CP1,CP2,CP4},{CP1,CP2,CP3},{CP2,CP3,CP4},又は{CP1,CP3,CP4}であってもよい。例えば、制御ポイントCP1、CP2、及びCP3を含む3タプルを使用することにより構築された6パラメータ・アフィン動きモデルは、Affine(CP1,CP2,CP3)として示される可能性がある。
4つの制御ポイントの動き情報は、4タプルを構成するように組み合わせられ、8パラメータ・バイリニア・モデルを構築する。制御ポイントCP1,CP2,CP3,及びCP4を含む4タプルを使用することにより構築された8パラメータ・バイリニア・モデルは、“Bilinear”(CP1,CP2,CP3,CP4)として示される可能性がある。
本願のこの実施形態では、説明を容易にするために、2つの制御ポイント(又は2つの符号化ブロック)の動き情報の組み合わせは単に2タプルとして言及され、3つの制御ポイント(又は3つの符号化ブロック)の動き情報の組み合わせは単に3タプルとして言及され、4つの制御ポイント(又は4つの符号化ブロック)の動き情報の組み合わせは単に4タプルとして言及される。
これらのモデルは事前に設定された順序でトラバースされる。結合モデルに対応する制御ポイントの動き情報が利用可能でない場合、モデルは利用可能でないと考えられる。そうでない場合、モデルの参照フレーム・インデックスが決定され、制御ポイントの動きベクトルがスケーリングされる。すべての制御ポイントのスケーリングされた動き情報が一貫している場合、モデルは無効である。モデルを制御する全ての制御ポイントの動き情報が利用可能であり、且つモデルが有効である場合、モデルを構成する制御ポイントの動き情報が動き情報候補リストに追加される。
制御ポイント動きベクトル・スケーリング法は式(12)に示される:
CurPocは現在フレームのPOC番号を示し、DesPocは現在ブロックの参照フレームのPOC番号を示し、SrcPocは制御ポイントの参照フレームのPOC番号を示し、MVsはスケーリングにより得られる動きベクトルを示し、MVは制御ポイントの動きベクトルを示す。
異なる制御ポイントの組み合わせが、同じ位置における制御ポイントに変換される可能性があることに留意すべきである。
例えば{CP1,CP4},{CP2,CP3},{CP2,CP4},{CP1,CP3}又は{CP3,CP4}の組み合わせにより得られる4パラメータ・アフィン動きモデルが、{CP1,CP2}又は{CP1,CP2,CP3}による表現に変換される。変換方法は、制御ポイントの動きベクトルと座標情報を式(2)に代入してモデル・パラメータを取得し、次いで{CP1,CP2}の座標情報を式(3)に代入して動きベクトルを取得するものである。
より直接的には、変換は以下の式(13)−(21)に従って実行されることが可能であり、ここで、Wは現在ブロックの幅を示し、Hは現在ブロックの高さを示す。式(13)−(21)において、(vx0,vy0)はCP1の動きベクトルを示し、(vx1,vy1)はCP2の動きベクトルを示し、(vx2,vy2)はCP3の動きベクトルを示し、(vx3,vy3)はCP4の動きベクトルを示す。
{CP1,CP2}は、以下の式(13)により{CP1,CP2,CP3}に変換されることが可能である。換言すれば、{CP1,CP2,CP3}におけるCP3の動きベクトルは、式(13)により決定されることが可能である:
{CP1,CP3}は、以下の式(14)により{CP1,CP2}又は{CP1,CP2,CP3}に変換されることが可能である:
{CP2,CP3}は、以下の式(15)により{CP1,CP2}又は{CP1,CP2,CP3}に変換されることが可能である:
{CP1,CP4}は、以下の式(16)又は(17)により{CP1,CP2}又は{CP1,CP2,CP3}に変換されることが可能である:
{CP2,CP4}は、以下の式(18)により{CP1,CP2}に変換されることが可能であり、{CP2,CP4}は、以下の式(18)及び(19)により{CP1,CP2,CP3}に変換されることが可能である:
{CP3,CP4}は、以下の式(20)により{CP1,CP2}に変換されることが可能であり、{CP3,CP4}は、以下の式(20)及び(21)により{CP1,CP2,CP3}に変換されることが可能である:
例えば{CP1,CP2,CP4},{CP2,CP3,CP4},又は{CP1,CP3,CP4}の組み合わせにより得られる6パラメータ・アフィン動きモデルは、{CP1,CP2,CP3}による表現に変換される。変換方法は、制御ポイントの動きベクトルと座標情報を式(4)に代入してモデル・パラメータを取得し、次いで{CP1,CP2,CP3}の座標情報を式(5)に代入して動きベクトルを取得するものである。
より直接的には、変換は以下の式(22)−(24)に従って実行されることが可能であり、ここで、Wは現在ブロックの幅を示し、Hは現在ブロックの高さを示す。式(13)−(21)において、(vx0,vy0)はCP1の動きベクトルを示し、(vx1,vy1)はCP2の動きベクトルを示し、(vx2,vy2)はCP3の動きベクトルを示し、(vx3,vy3)はCP4の動きベクトルを示す。
{CP1,CP2,CP4}は、以下の式(22)により{CP1,CP2,CP3}に変換されることが可能である:
{CP2,CP3,CP4}は、以下の式(23)により{CP1,CP2,CP3}に変換されることが可能である:
{CP1,CP3,CP4}は、以下の式(24)により{CP1,CP2,CP3}に変換されることが可能である:
6.アフィン動きモデル・ベースのアドバンスト動きベクトル予測モード(Affine AMVP mode)
(1)候補動きベクトル・リストを構築する
アフィン動きモデル・ベースのAMVPモードのための候補動きベクトル・リストは、継承制御ポイント動きベクトル予測法及び/又は構築制御ポイント動きベクトル予測法を使用することによって構築される。本願のこの実施形態では、アフィン動きモデル・ベースのAMVPモードのための候補動きベクトル・リストは、制御ポイント動きベクトル予測子候補リスト(control point motion vectors predictor candidate list)と言及されてもよい。各々の制御ポイントの動きベクトル予測子は、2つの(4パラメータ・アフィン動きモデルの)制御ポイントの動きベクトル又は3つの(6パラメータ・アフィン動きモデルの)制御ポイントの動きベクトルを含む。
オプションとして、制御ポイント動きベクトル予測子候補リストは、特定のルールに従ってプルーニング及びソートされ、特定の量に打ち切られるか又はパディングされることが可能である。
(2)最適な制御ポイント動きベクトル予測子を決定する
エンコーダ側では、現在のコーディング・ブロック内の各チャイルド動き補償ユニットの動きベクトルが、式(3)/(5)を用いることで、制御ポイント動きベクトル予測子リスト内の各制御ポイント動きベクトル予測子に基づいて取得され、各チャイルド動き補償ユニットの動きベクトルが指し示す参照フレームにおける対応する位置におけるサンプル値を取得し、サンプル値は、アフィン動きモデルを使用することで動き補償を実行するための予測子として使用される。現在のコーディング・ブロックにおける各サンプルのオリジナル値と予測子との間の平均差分が計算される。最小平均差分に対応する制御ポイント動きベクトル予測子は、最適制御ポイント動きベクトル予測子として選択され、現在のコーディング・ブロックの2つ/3つの制御ポイントの動きベクトル予測子として使用される。制御ポイント動きベクトル予測子候補リストにおける制御ポイント動きベクトル予測子の位置を表すインデックス番号は、ビットストリーム内に符号化され、デコーダへ送信される。
デコーダ側では、インデックス番号が解析され、インデックス番号に基づいて、制御ポイント動きベクトル予測子(control point motion vectors predictor,CPMVP)が、制御ポイント動きベクトル予測子候補リストから決定される。
(3)制御ポイント動きベクトルを決定する
エンコーダ側では、制御ポイント動きベクトル(control point motion vectors,CPMV)を取得するために、制御ポイント動きベクトル予測子が、特定の探索レンジ内の動き探索のための探索開始点として使用される。制御ポイント動きベクトルと制御ポイント動きベクトル予測子との間の差分(control point motion vectors differences, CPMVD)は、デコーダ側に転送される。
デコーダ側では、制御ポイント動きベクトル差分が解析され、制御ポイント動きベクトル予測子に追加されて、制御ポイント動きベクトルを取得する。
7.アフィン・マージ・モード(Affine Merge mode)
継承制御ポイント動きベクトル予測法及び/又は構築制御ポイント動きベクトル予測法を使用することにより、制御ポイント動きベクトル・マージ候補リスト(control point motion vectors merge candidate list)が構築される。
オプションとして、制御ポイント動きベクトル予測子候補リストは、特定のルールに従ってプルーニング及びソートされ、特定の量に打ち切られるか又はパディングされることが可能である。
エンコーダ側では、現在のコーディング・ブロック内の各チャイルド動き補償ユニット(特定の方法に従う分割により取得されるN1×N2サンプル・ブロック又はサンプル)の動きベクトルが、式(3)/(5)を用いることで、マージ候補リスト内の各制御ポイント動きベクトルに基づいて取得され、各チャイルド動き補償ユニットの動きベクトルが指し示す参照フレーム内の位置におけるサンプル値を取得し、サンプル値は、アフィン動き補償を実行するための予測子として使用される。現在のコーディング・ブロックにおける各サンプルのオリジナル値と予測子との間の平均差分が計算される。最小平均差分に対応する制御ポイント動きベクトルは、現在のコーディング・ブロックの2つ/3つの制御ポイントの動きベクトルとして選択される。候補リストにおける制御ポイント動きベクトルの位置を表すインデックス番号は、ビットストリーム内に符号化され、デコーダへ送信される。
デコーダ側では、インデックス番号が解析され、インデックス番号に基づいて、制御ポイント動きベクトル(control point motion vectors,CPMV)が、制御ポイント動きベクトル・マージ候補リストから決定される。
なお、本願において、「少なくとも1つ」は1つ以上を意味し、「複数の」は2つ以上を意味することに留意すべきである。「及び/又は」は、関連する対象を説明するための関連付け関係を説明しており、3つの関係が存在する可能性があることを示す。例えば、A及び/又はBは、以下のケース:Aのみが存在すること、A及びB双方が存在すること、Bのみが存在することを表す可能性があり、ここでA及びBは単数又は複数である可能性がある。文字「/」は、一般に、関連する対象間の「又は」の関係を表す。「以下のアイテム(ピース)のうちの少なくとも1つ」又は類似の表現は、単一のアイテム(ピース)又は複数のアイテム(ピース)の任意の組み合わせを含む、これらのアイテムの任意の組み合わせを示す。例えば、a,b,又はcのうちの少なくとも1つは、a、b、c、a及びb、a及びc、b及びc、又はa、b、及びcを示す可能性があり、ここで、a、b、及びcは単数又は複数である可能性がある。
本願では、現在ブロックを復号化するためにインター予測モードが使用される場合に、インター予測モードをシグナリングするために、シンタックス要素が使用されてもよい。
現在ブロックの解析に使用されるインター予測モードの現在使用されているシンタックス構造の一部については、表1を参照されたい。シンタックス構造におけるシンタックス要素は、代替的に、他の識別子によって表現されてもよいことに留意すべきである。これは本願において具体的には限定されない。
表1
シンタックス要素merge_flag[x0][y0]は、マージ・モードが現在ブロックに使用されているかどうかを示すために使用されることが可能である。例えば、merge_flag[x0][y0]=1の場合、マージ・モードが現在ブロックに使用されていることを示し、merge_flag[x0][y0]=0の場合、マージ・モードが現在ブロックに使用されていないことを示し、ここで、x0とy0はビデオ・ピクチャにおける現在ブロックの座標を示す。
変数allowAffineMergeは、現在ブロックがアフィン動きモデル・ベースのマージ・モードを使用する条件を満たしているかどうかを示すために使用されることが可能である。例えば、allowAffineInter=0の場合、アフィン動きモデル・ベースのマージ・モードを使用する条件が満たされていないことを示し、allowAffineInter=1の場合、アフィン動きモデル・ベースのマージ・モードを使用する条件が満たされていることを示す。アフィン動きモデル・ベースのマージ・モードを使用するための条件は、現在ブロックの幅と高さの両方が8以上であることであってもよく、ここで、cbWidthは現在ブロックの幅を示し、cbHeightは現在ブロックの高さを示す。換言すれば、cbWidth<8又はcbHeight<8である場合、alloweAffineMerge=0であり、cbWidth≧8及びcbHeight≧8である場合、allowAffineMerge=1である。
変数allowAffineInterは、現在ブロックがアフィン動きモデル・ベースのAMVPモードを使用する条件を満たしているかどうかを示すために使用されることが可能である。例えば、allowAffineInter=0の場合、アフィン動きモデル・ベースのAMVPモードを使用する条件は満たされていないことを示し、alloweAffineInter=1の場合、アフィン動きモデル・ベースのAMVPモードを使用する条件は満たされていることを示す。アフィン動きモデル・ベースのAMVPモードを使用するための条件は、現在ブロックの幅と高さの両方が16以上であることであってもよい。換言すれば、cbWidth<16又はcbHeight<16である場合、alloweAffineMerge=0であり、cbWidth≧16及びcbHeight≧16である場合、allowAffineMerge=1である。
シンタックス要素affine_merge_flag[x0][y0]は、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されているかどうかを示すために使用されてもよい。現在ブロックが位置付けられているスライスのタイプ(slice_type)のタイプは、Pタイプ又はBタイプである。例えば、affine_merge_flag[x0][y0]=1の場合、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されていることを示し、affine_merge_flag[x0][y0]=0の場合、アフィン動きモデル・ベースのマージ・モードが現在ブロックに使用されていないことを示すが、並進運動モデル・ベースのマージ・モードが使用されてもよい。
シンタックス要素merge_idx[x0][y0]は、マージ候補リストのインデックス値を示すために使用されてもよい。
シンタックス要素affine_merge_idx[x0][y0]は、アフィン・マージ候補リストのインデックス値を示すために使用されてもよい。
シンタックス要素affine_inter_flag[x0][y0]は、現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されるかどうかを示すために使用されてもよい。例えば、allowAffineInter=0の場合、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されていることを示し、allowAffineInter=1の場合、アフィン動きモデル・ベースのAMVPモードが現在ブロックに使用されていないことを示すが、並進運動モデル・ベースのAMVPモードが使用されてもよい。
現在ブロックが位置付けられているスライスがPタイプ・スライス又はBタイプ・スライスである場合に、シンタックス要素affine_type_flag[x0][y0]は、現在ブロックに関して動き補償を実行するために6パラメータ・アフィン動きモデルが使用されるかどうかを示すために、使用されてもよい。affine_type_flag[x0][y0]=0の場合、6パラメータ・アフィン動きモデルが現在ブロックに関して動き補償を実行するために使用されておらず、4パラメータ・アフィン動きモデルのみが動き補償を実行するために使用されてもよいことを示し、affine_type_flag[x0][y0]=1の場合、6パラメータ・アフィン動きモデルが現在ブロックに関して動き補償を実行するために使用されていることを示す。
表2に示すように、MotionModelIdc[x0][y0]=1の場合、4パラメータ・アフィン動きモデルが使用されていることを示し、MotionModelIdc[x0][y0]=2の場合、6パラメータ・アフィン動きモデルが使用されていることを示し、MotionModelIdc[x0][y0]=0の場合、並進動きモデルが使用されていることを示す。
表2
変数MaxNumMergeCand及びMaxAffineNumMrgCandは、最大リスト長を示し、構築された候補動きベクトル・リストの最大長を示すために使用され、inter_pred_idc[x0][y0]は予測方向を示すために使用され、PRED_L1は後方予測を示すために使用され、num_ref_idx_l0_active_minus1は前方参照フレーム・リストにおける参照フレームの量を示し、ref_idx_l0[x0][y0]は現在ブロックの前方参照フレーム・インデックス値を示し、mvd_coding(x0,y0,0,0)は第1動きベクトル差分を示し、mvp_l0_flag[x0][y0]は前方MVP候補リスト・インデックス値を示し、PRED_L0は前方予測を示し、num_ref_idx_l1_active_minus1は後方参照フレーム・リストにおける参照フレームの量を示し、ref_idx_l1[x0][y0]は現在ブロックの後方参照フレーム・インデックス値を示し、mvp_l1_flag[x0][y0]は後方MVP候補リスト・インデックス値を示す。
表1において、ae(v)は、コンテキスト・ベースの適応バイナリ算術コーディング(context-based adaptive binary arithmetic coding,CABAC)によって符号化されるシンタックス要素を示す。
以下、インター予測プロセスを詳細に説明する。これについては、図9Aを参照されたい。
ステップ601:表1に示すシンタックス構造に基づいてビットストリームを解析し、現在ブロックのインター予測モードを決定する。
現在ブロックのインター予測モードがアフィン動きモデル・ベースのAMVPモードであると判定された場合に、ステップ602aが実行される。
具体的には、シンタックス要素merge_flag=0及びシンタックス要素affine_inter_flag=1の場合、それは現在ブロックのインター予測モードがアフィン動きモデル・ベースのAMVPモードであることを示す。
現在ブロックのインター予測モードがアフィン動きモデル・ベースのマージ(merge)モードであると判定された場合、ステップ602bが実行される。
具体的には、シンタックス要素merge_flag=1及びシンタックス要素affine_merge_flag=1の場合、それは現在ブロックのインター予測モードがアフィン動きモデル・ベースのマージ・モードであることを示す。
ステップ602a:アフィン動きモデル・ベースのAMVPモードに対応する候補動きベクトル・リストを作成し、ステップ603aを実行する。
現在ブロックの候補制御ポイント動きベクトルは、継承制御ポイント動きベクトル予測法及び/又は構築制御ポイント動きベクトル予測法を用いて導出され、候補動きベクトル・リストに追加される。
候補動きベクトル・リストは、2タプル・リスト(4パラメータ・アフィン動きモデルが現在のコーディング・ブロックに使用される)又は3タプル・リストを含む可能性がある。2タプル・リストは、4パラメータ・アフィン動きモデルを構築するために使用される1つ以上の2タプルを含む。3タプル・リストは、6パラメータ・アフィン動きモデルを構築するために使用される1つ以上の3タプルを含む。
オプションとして、候補動きベクトルの2タプル/3タプル・リストは、特定のルールに従ってプルーニング及びソートされ、特定の量に打ち切られるか又はパディングされることが可能である。
A1:継承制御ポイント動きベクトル予測法を使用することにより候補動きベクトル・リストを構築するプロセスが説明される。
図7が一例として使用される。現在ブロック周辺の隣接ブロックは、図7におけるA1→B1→B0→A0→B2の順序でトラバースされ、隣接ブロックが位置付けられているアフィン・コーディング・ブロックを発見し、アフィン・コーディング・ブロックの制御ポイント動き情報を取得する。更に、現在ブロックの候補の制御ポイント動き情報は、アフィン・コーディング・ブロックの制御ポイント動き情報に基づいて構築された運動モデルを使用することにより導出される。詳細については、3における継承制御ポイント動きベクトル予測法の関連する説明を参照されたい。詳細はここでは説明されない。
例えば、現在ブロックに使用されるアフィン動きモデルが4パラメータ・アフィン動きモデルである場合において(即ち、MotionModelIdc=1)、4パラメータ・アフィン動きモデルが隣接するアフィン復号化ブロックに使用される場合、アフィン復号化ブロックの2つの制御ポイントの動きベクトル:左上制御ポイント(x4,y4)の動きベクトル(vx4,vy4)及び右上制御ポイント(x5,y5)の動きベクトル(vx5,vy5)が取得される。アフィン復号化ブロックは、アフィン動きモデルを使用することにより符号化フェーズで予測されるアフィン・コーディング・ブロックである。
現在ブロックの左上制御ポイント及び右上制御ポイントの動きベクトルはそれぞれ、隣接するアフィン復号化ブロックの2つの制御ポイントを含む4パラメータ・アフィン動きモデルを使用することにより、4パラメータ・アフィン動きモデルに対応する式(6)及び式(7)に従って導出される。
6パラメータ・アフィン動きモデルが隣接するアフィン復号化ブロックに使用される場合、隣接するアフィン復号化ブロックの3つの制御ポイントの動きベクトル、例えば、図7における左上制御ポイント(x4,y4)の動きベクトル(vx4,vy4)、右上制御ポイント(x5,y5)の動きベクトル(vx5,vy5)、及び左下制御ポイント(x6,y6)の動きベクトル(vx6,vy6)が取得される。
現在ブロックの左上制御ポイント及び右上制御ポイントの動きベクトルはそれぞれ、隣接するアフィン復号ブロックの3つの制御ポイントを含む6パラメータ・アフィン動きモデルを使用することにより、6パラメータ・アフィン動きモデルに対応する式(8)及び式(9)に従って導出される。
例えば、現在の復号化ブロックに使用されるアフィン動きモデルは、6パラメータ・アフィン動きモデルである(即ち、MotionModelIdc=2)。
隣接するアフィン復号化ブロックに使用されるアフィン動きモデルが、6パラメータ・アフィン動きモデルである場合、隣接するアフィン復号化ブロックの3つの制御ポイントの動きベクトル、例えば、図7における左上制御ポイント(x4,y4)の動きベクトル(vx4,vy4)、右上制御ポイントの動きベクトル(vx5,vy5)、及び左下制御ポイント(x6,y6)の動きベクトル(vx6,vy6)が取得される。
現在ブロックの左上制御ポイント、右上制御ポイント、及び左下制御ポイントの動きベクトルはそれぞれ、隣接するアフィン復号化ブロックの3つの制御ポイントを含む6パラメータ・アフィン動きモデルを使用することにより、6パラメータ・アフィン動きモデルに対応する式(8)、(9)及び式(10)に従って導出される。
隣接するアフィン復号化ブロックに使用されるアフィン動きモデルが、4パラメータ・アフィン動きモデルである場合、アフィン復号化ブロックの2つの制御ポイントの動きベクトル、例えば、左上制御ポイント(x4,y4)の動きベクトル(vx4,vy4)、及び右上制御ポイント(x5,y5)の動きベクトル(vx5,vy5)が取得される。
現在ブロックの左上制御ポイント、右上制御ポイント、及び左下制御ポイントの動きベクトルはそれぞれ、隣接するアフィン復号化ブロックの2つの制御ポイントを含む4パラメータ・アフィン動きモデルを使用することにより、4パラメータ・アフィン動きモデルに対応する式(6)及び式(7)に従って導出される。
他の運動モデル、候補位置、検索順序も本願に適用可能であることに留意すべきである。詳細はここでは説明されない。隣接する及び現在のコーディング・ブロックの運動モデルを表現するために他の制御ポイントが使用される方法もまた本願に適用可能であることに留意すべきである。詳細はここでは説明されない。
A2:構築制御ポイント動きベクトル予測法を使用することにより候補動きベクトル・リストを構築するプロセスが説明される。
例えば、現在の復号化ブロックに使用されているアフィン動きモデルが4パラメータ・アフィン動きモデルである場合(即ち、MotionModelIdc=1)、現在のコーディング・ブロックの左上サンプル及び右上サンプルの動きベクトルは、現在のコーディング・ブロックの隣接する符号化ブロックの動き情報を使用することにより決定される。具体的には、構築制御ポイント動きベクトル予測法1又は構築制御ポイント動きベクトル予測法2を使用することにより、候補動きベクトル・リストが構築されることが可能である。具体的な方法については、4及び5の説明を参照されたい。詳細はここでは説明されない。
例えば、現在の復号化ブロックに使用されているアフィン運動モデルが6パラメータ・アフィン運動モデルである場合(即ち、MotionModelIdc=2)、現在のコーディング・ブロックの左上サンプル、右上サンプル、及び左下サンプルの動きベクトルは、現在のコーディング・ブロックの隣接する符号化ブロックの動き情報を使用することにより決定される。具体的には、候補動きベクトル・リストは、構築制御ポイント動きベクトル予測法1又は構築制御ポイント動きベクトル予測法2を使用することにより構成されることが可能である。具体的な方法については、4及び5の説明を参照されたい。詳細はここでは説明されない。
制御ポイント動き情報を組み合わせる別の方法もまた本願に適用可能であることに留意すべきである。詳細はここでは説明されない。
ステップ603a:ビットストリームを解析して最適な制御ポイント動きベクトル予測子を決定し、ステップ604aを実行する。
B1:現在の復号化ブロックに使用されているアフィン動きモデルが4パラメータ・アフィン動きモデルである場合(MotionModelIdc=1)、インデックス番号が解析され、インデックス番号に基づいて、2つの制御ポイントにおける最適な動きベクトル予測子が、候補動きベクトル・リストから決定される。
例えば、インデックス番号は、mvp_l0_flag又はmvp_l1_flagである。
B2:現在の復号化ブロックに使用されているアフィン動きモデルが6パラメータ・アフィン動きモデルである場合(MotionModelIdc=2)、インデックス番号が解析され、インデックス番号に基づいて、3つの制御ポイントにおける最適な動きベクトル予測子が、候補動きベクトル・リストから決定される。
ステップ604a:ビットストリームを解析して、制御ポイント動きベクトルを決定する。
C1:現在の復号化ブロックに使用されているアフィン動きモデルが4パラメータ・アフィン動きモデルである場合(MotionModelIdc=1)、現在ブロックの2つの制御ポイントの動きベクトル差分が、復号化によりビットストリームから取得され、制御ポイントの動きベクトルは、制御ポイントの動きベクトル差分と動きベクトル予測子と基づいて取得される。前方予測を一例として使用すると、2つの制御ポイントの動きベクトル差分はそれぞれ、mvd_coding(x0,y0,0,0)及びmvd_coding(x0,y0,0,1)である。
例えば、左上制御ポイント及び右上制御ポイントの動きベクトル差分が、復号化によりビットストリームから取得され、それぞれ動きベクトル予測子に加算され、現在ブロックの左上制御ポイント及び右上制御ポイントの動きベクトルを取得する。
C2:現在の復号化ブロックに使用されているアフィン動きモデルは、6パラメータ・アフィン動きモデルである(MotionModelIdc=2)。
現在ブロックの3つの制御ポイントの動きベクトル差分が、復号化によりビットストリームから取得され、制御ポイント動きベクトルが、制御ポイントの動きベクトル差分と動きベクトル予測子とに基づいて取得される。前方予測を一例として使用すると、3つの制御ポイントの動きベクトル差分はそれぞれ、mvd_coding(x0,y0,0,0),mvd_coding(x0,y0,0,1)及びmvd_coding(x0,y0,0,2)である。
例えば、左上制御ポイント、右上制御ポイント、及び左下制御ポイントの動きベクトル差分が、復号化によりビットストリームから取得され、それぞれ動きベクトル予測子に加算され、現在ブロックの左上制御ポイント、右上制御ポイント、及び左下制御ポイントの動きベクトルを取得する。
ステップ605a:現在の復号化ブロックに使用されている制御ポイントの動き情報とアフィン動きモデルとに基づいて、現在ブロックにおける各サブブロックの動きベクトルを取得する。
現在のアフィン復号化ブロック内の各サブブロックに関し(1つのサブブロックは、1つの動き補償ユニットと同等であり、サブブロックの幅及び高さは、現在ブロックの幅及び高さよりも小さい)、動き補償ユニット内の事前に設定された位置におけるサンプルの動き情報が、動き補償ユニット内のすべてのサンプルの動き情報を表現するために使用されることが可能である。動き補償ユニットのサイズがMxNであると仮定すると、事前に設定された位置におけるサンプルは、中心サンプル(M/2,N/2)、左上サンプル(0,0)、右上サンプル(M−1,0)、又は動き補償ユニットの別の位置におけるサンプルであってもよい。以下、説明のための一例として、動き補償ユニットの中心サンプルを使用する。図9Cを参照すると、V0は左上制御ポイントの動きベクトルを示し、V1は右上制御ポイントの動きベクトルを示している。小さなボックスの各々は1つの補償ユニットを示す。
現在のアフィン復号化ブロックの左上サンプルに対する動き補償ユニットの中心サンプルの座標は、式(25)を使用することにより算出され、ここで、iは水平方向の(左から右への)i番目の動き補償ユニットを示し、jは垂直方向の(上から下への)j番目の動き補償ユニットを示し、(x(i,j),y(i,j))は現在のアフィン復号化ブロックの左上サンプルに対する(i,j)番目の動き補償ユニットの中心サンプルの座標を示す。
現在のアフィン復号化ブロックに使用されるアフィン動きモデルが6パラメータ・アフィン動きモデルである場合には、(x(i,j),y(i,j))が、6パラメータ・アフィン動きモデルに対応する式(26)に代入され、各動き補償ユニットの中心サンプルの動きベクトルを取得し、中心サンプルの動きベクトルは、動き補償ユニットにおけるすべてのサンプルの動きベクトル(vx(i,j),vy(i,j))として使用される。
現在のアフィン復号化ブロックに使用されるアフィン動きモデルが4パラメータ・アフィン動きモデルである場合には、(x
(i,j),y
(i,j))が、4パラメータ・アフィン動きモデルに対応する式(27)に代入され、各動き補償ユニットの中心サンプルの動きベクトルを取得し、中心サンプルの動きベクトルは、動き補償ユニットにおけるすべてのサンプルの動きベクトル(vx
(i,j),vy
(i,j))として使用される。
ステップ606a:サブブロックの決定された動きベクトルに基づいて各サブブロックに関して動き補償を実行し、サブブロックのサンプル予測子を取得する。
ステップ602b:アフィン動きモデル・ベースのマージ・モードに対応する動き情報候補リストを構築する。
具体的には、アフィン動きモデル・ベースのマージ・モードに対応する動き情報候補リストは、継承制御ポイント動きベクトル予測法及び/又は構築制御ポイント動きベクトル予測法を使用することにより構築されることが可能である。
オプションとして、動き情報候補リストは、特定のルールに従ってプルーニング及びソートされ、特定の量に打ち切られるか又はパディングされることが可能である。
D1:継承制御ポイント動きベクトル予測法を使用することにより候補動きベクトル・リストを構築するプロセスが説明される。
現在ブロックの候補制御ポイント動き情報は、継承制御ポイント動きベクトル予測法を使用することにより導出され、動き情報候補リストに追加される。
現在ブロック周辺の隣接ブロックは、図8AにおけるA1→B1→B0→A0→B2の順序でトラバースされ、位置が突き止められているアフィン・コーディング・ブロックを発見し、アフィン・コーディング・ブロックの制御ポイント動き情報を取得する。更に、現在ブロックの候補制御ポイント動き情報が、アフィン・コーディング・ブロックの動きモデルを使用することにより導出される。
候補動きベクトル・リストが空である場合、候補制御ポイント動き情報が候補リストに追加される。そうでない場合、候補動きベクトル・リストにおける動き情報は、順次トラバースされ、候補制御ポイント動き情報と同一の動き情報が、候補動きベクトル・リスト内に存在するか否かを検査する。候補制御ポイント動き情報と同一の動き情報が候補動きベクトル・リスト内に存在しない場合、候補制御ポイント動き情報が、候補動きベクトル・リストに追加される。
2つの候補動き情報が同一であるかどうかを判定するには、順方向参照フレーム、逆方向参照フレーム、順方向動きベクトル各々の水平及び垂直成分、逆方向動きベクトル各々の水平及び垂直成分が、2つの候補動き情報において、同一であるかどうかを順次判定する必要がある。2つの候補動き情報は、前述の要素のすべてが異なる場合に限り、異なるものと考えられる。
候補動きベクトル・リスト内の動き情報の個数が、最大リスト長MaxAffineNumMrgCand(MaxAffineNumMrgCandは、1,2,3,4,又は5のような正の整数であり、以下、一例として5である長さを使用することにより説明を行い、詳細はここでは説明されない)に到達する場合、候補リストは完備である。そうでない場合、次の隣接ブロックがトラバースされる。
D2:現在ブロックの候補の制御ポイント動き情報は、構築制御ポイント動きベクトル予測方法を使用することにより導出され、動き情報候補リストに追加される。これについては、図9Bを参照されたい。
ステップ601c:現在ブロックの制御ポイントの動き情報を取得する。これについては、5における構築制御ポイント動きベクトル予測法2におけるステップ801を参照されたい。詳細はここで再び説明されない。
ステップ602c:制御ポイントの動き情報を結合し、構築制御ポイント動き情報を取得する。これについては、図8Bのステップ801を参照されたい。詳細はここで再び説明されない。
ステップ603c:構築制御ポイントの動き情報を候補の動きベクトル・リストに追加する。
候補リストの長さが最大リスト長MaxAffineNumMrgCandより短い場合、候補制御ポイント動き情報として有効な組み合わせを取得するために、事前に設定された順序で組み合わせがトラバースされる。この場合において、候補動きベクトル・リストが空である場合、候補制御ポイント動き情報が候補動きベクトル・リストに追加される。そうでない場合、候補動きベクトル・リスト内の動き情報が順次トラバースされ、候補制御ポイント動き情報と同一である動き情報が、候補動きベクトル・リスト内に存在するか否かを検査する。候補制御ポイント動き情報と同一の動き情報が候補動きベクトル・リストに存在しない場合、候補制御ポイント動き情報が候補動きベクトル・リストに追加される。
例えば、事前に設定された順序は次のとおりである:Affine(CP1,CP2,CP3)→Affine (CP1,CP2,CP4)→Affine(CP1,CP3,CP4)→Affine(CP2,CP3,CP4)→Affine(CP1,CP2)→Affine(CP1,CP3)→Affine(CP2,CP3)→Affine(CP1,CP4)→Affine(CP2,CP4)→Affine(CP3,CP4)。合計10個の組み合わせが存在する。
組み合わせに対応する制御ポイント動き情報が利用可能でない場合、その組み合わせは利用可能でないと考えられる。組み合わせが利用可能である場合、組み合わせの参照フレーム・インデックスが決定され(2つの制御ポイントの場合には、より小さな参照フレーム・インデックスが組み合わせの参照フレーム・インデックスとして選択され、2つより多い制御ポイントの場合には、最も頻繁に現れる参照フレーム・インデックスが選択され、複数の参照フレーム・インデックスが現れる回数が同一であれば、最小参照フレーム・インデックスが組み合わせの参照フレーム・インデックスとして選択される)、制御ポイントの動きベクトルがスケーリングされる。すべての制御ポイントのスケーリングされた動き情報が一貫している場合、その組み合わせは無効である。
オプションとして、本願のこの実施形態では、候補動きベクトル・リストはパディングされてもよい。例えば、前述のトラバース処理の後、候補動きベクトル・リストの長さが最大リスト長MaxAffineNumMrgCandより短い場合、候補動きベクトル・リストは、リスト長がMaxAffineNumMrgCandに等しくなるまで、パディングされてもよい。
パディングは、ゼロ動きベクトル・パディング法を使用するか、又は既存のリスト内の既存の候補動き情報を結合又は重み付け平均化することによって、実行されることが可能である。候補動きベクトル・リストをパディングするための別の方法も、本願に適用可能であることに留意すべきである。詳細はここで説明されない。
ステップS603b:ビットストリームを解析して、最適な制御ポイント動き情報を決定する。
インデックス番号は解析され、インデックス番号に基づいて、最適な制御ポイント動き情報が候補動きベクトル・リストから決定される。
ステップ604b:現在の復号化ブロックに使用されている最適な制御ポイント動き情報とアフィン動きモデルとに基づいて、現在ブロックの各サブブロックの動きベクトルを取得する。
このステップはステップ605aと同じである。
ステップ605b:サブブロックの決定された動きベクトルに基づいて、各サブブロックに関して動き補償を実行し、サブブロックのサンプル予測子を取得する。
本発明における技術は、コンテキスト適応バイナリ算術コーディング(CABAC)エントロピー・デコーダ、又は確率間隔分割エントロピー(PIPE)デコーダ又は関連するデコーダのような別のエントロピー・デコーダに関連する。算術復号化は、シンボルが算術復号化において非整数長コードにマッピングされることが可能であるので、高い復号化効率を有する多くの圧縮アルゴリズムで使用されるエントロピー復号化の一形態である。一般に、CABACによるデータ・シンボルを復号化することは、以下のステップのうちの1つ以上を含む:
(1)二進化:復号化対象のシンボルがバイナリでない場合、シンボルは「バイナリ」シーケンスにマッピングされ、各バイナリ・ビットの値は「0」又は「1」を有することが可能である。
(2)コンテキスト割り当て:(通常モードにおいて)各バイナリ・ビットに1つのコンテキストが割り当てられる。コンテキスト・モデルは、バイナリ・ビットに対して利用可能な情報に基づいて、所与のバイナリ・ビットに対するコンテキストを計算するための方法を決定するために使用される。その情報は、例えば、以前に復号化されたシンボルの値又は2進数である。
(3)二進符号化:算術エンコーダはバイナリ・ビットを符号化する。バイナリ・ビットを符号化するために、算術エンコーダは、バイナリ・ビットの値の確率を入力として必要とし、その確率は、バイナリ・ビットの値が「0」に等しい確率、及びバイナリ・ビットの値が「1」に等しい確率である。各コンテキストの(推定された)確率は、「コンテキスト状態」と呼ばれる整数値で表現される。各コンテキストは状態を有し、従って、状態(即ち、推定された確率)は、1つのコンテキストが割り当てられるバイナリ・ビットに対しては同一であり、コンテキスト間で異なる。
(4)状態更新:コンテキストを選択する確率(状態)は、バイナリ・ビットの実際の復号化された値に基づいて更新される(例えば、バイナリ・ビットの値が「1」である場合、「1」の確率は増やされる)。
従来技術では、アフィン動きモデルのパラメータ情報、例えば表1におけるaffine_merge_flag,affine_merge_idx,affine_inter_flag,及びaffine_type_flagをCABACにより解析する場合、異なるコンテキストが、CABAC解析において異なるシンタックス要素に対して使用されることを必要とする。本発明では、CABACで使用されるコンテキストの量が削減される。従って、コンテキストを記憶するためにエンコーダ及びデコーダによって必要とされる、より少ない空間が、コーディング効率に影響することなく占有される。
affine_merge_flag及びaffine_inter_flagについては、2つの異なるコンテキスト・セット(各コンテキスト・セットは3つのコンテキストを含む)が従来技術におけるCABACで使用されている。各セットで使用される実際のコンテキスト・インデックスは、表3に示されるように、現在の復号化ブロックの左隣接ブロックにおける同じシンタックス要素の値と、現在の復号化ブロックの上隣接ブロックの同じシンタックス要素の値との合計に等しい。ここで、avallableLは、現在の復号化ブロックの左隣接ブロックの利用可能性(左隣接ブロックが存在し且つ復号化されているか否か)を示し、avallableAは、現在の復号化ブロックの上隣接ブロックの利用可能性(上隣接ブロックが存在し且つ復号化されているか否か)を示す。従来技術では、affine_merge_flag及びaffine_inter_flagのコンテキストの量は6である。
表3 コンテキスト・インデックス
図10は、本発明の一実施形態によるビデオ復号化方法の手順を記載している。この実施形態は、図3に示すビデオ・デコーダによって実行されることが可能である。図10に示すように、本方法は、以下のステップを含む。
1001.受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得し、ここで、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む。
実装において、現在ブロックにおけるシンタックス要素1はaffine_merge_flagであり、又は現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
実装において、現在ブロックにおけるシンタックス要素1はsubblock_merge_flagであり、又は現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
本発明のこの実施形態における現在ブロックは、CUであってもよい。
1002.現在ブロックにおけるエントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行する。現在ブロックにおけるシンタックス要素1に関するエントロピー復号化は、事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー復号化は、コンテキスト・モデルを使用することにより完了する。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1003.現在ブロックにおけるシンタックス要素であり且つエントロピー復号化によって取得されるものに基づいて、現在ブロックに関して予測処理を実行し、現在ブロックの予測ブロックを取得する。
このステップは、具体的には、図3の予測処理ユニット360によって実行されてもよい。
1004.現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得する。
このステップは、具体的には、図3の再構成ユニット314によって実行されてもよい。
この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、デコーダは、エントロピー復号化を実行する際にコンテキスト・モデルを確認する必要がなく、デコーダによりビデオ復号化を実行する復号化効率を改善する。更に、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とするので、ビデオ・デコーダのより少ないストレージ空間が占有される。
図10において説明されるビデオ復号化方法に対応して、本発明の実施形態は更に符号化方法を提供し、符号化方法は:
現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化が実行される場合に、現在ブロックにおけるシンタックス要素1に関するエントロピー符号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー符号化はコンテキスト・モデルを使用することにより完了する、ステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデルは、図10に記載されるビデオ復号化方法におけるコンテキスト・モデルと同じである。この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、エンコーダは、エントロピー符号化を実行する際にコンテキスト・モデルを確認する必要がなく、エンコーダによりビデオ符号化を実行する符号化効率を改善する。更に、ビデオ・エンコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とするので、ビデオ・エンコーダのより少ないストレージ空間が占有される。
図11は、本発明の別の実施形態によるビデオ復号化方法の手順を記載している。この実施形態は、図3に示すビデオ・デコーダによって実行されることが可能である。図11に示すように、本方法は以下のステップを含む。
1101.受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得する。現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む。
実装において、現在ブロックにおけるシンタックス要素1はaffine_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
実装において、現在ブロックにおけるシンタックス要素1はsubblock_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1102.エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得する。現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは、事前に設定されたコンテキスト・モデル・セットから決定されるか、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは、事前に設定されたコンテキスト・モデル・セットから決定される。
ビデオ・デコーダは、シンタックス要素1とシンタックス要素2に対して唯1つのコンテキスト・モデル・セットを記憶することを必要とする。
幾つかの実装において、事前に設定されたコンテキスト・モデル・セットは唯2つのコンテキスト・モデルを含む。幾つかの他の実装において、事前に設定されたコンテキスト・モデル・セットは、3つのコンテキスト・モデルのみを含む。事前に設定されたコンテキスト・モデル・セットは、代替的に、4つ、5つ、又は6つのコンテキスト・モデルを含む可能性があることを理解することができる。事前に設定されたコンテキスト・モデル・セットに含まれるコンテキスト・モデルの量は、本発明のこの実施形態では限定されない。
実装において、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルが事前に設定されたコンテキスト・モデル・セットから決定されることは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスを決定することを含み、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルを示すために使用される。
別の実装において、現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルが事前に設定されたコンテキスト・モデル・セットから決定されることは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスを決定することを含み、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルを示すために使用される。
例えば、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が3である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計であり、又は現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計である。
具体的には、シンタックス要素1affine_merge_flag及びシンタックス要素2affine_inter_flagは、1つのコンテキスト・モデル・セットを共有することが可能である(セットは3つのコンテキスト・モデルを含む)。各セットで使用される実際のコンテキスト・インデックスは、表4に示すように、現在の復号化ブロックの左隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値と、現在の復号化ブロックの上隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値とを加算することによって得られる結果に等しい。ここで、「|」はOR演算を示す。
表4 本発明におけるコンテキスト・インデックス
例えば、事前に設定されたコンテキスト・モデル・セットにおけるコンテキスト・モデルの量が2である場合に、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果であり、又は現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果である。
具体的には、シンタックス要素1affine_merge_flag及びシンタックス要素2affine_inter_flagは、1つのコンテキスト・モデル・セットを共有する(セットは2つのコンテキスト・モデルを含む)。各セットで使用される実際のコンテキスト・インデックスは、表5に示すように、現在の復号化ブロックの左隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値と、現在の復号化ブロックの上隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値とに、OR演算を実行することによって得られる結果に等しい。ここで、「|」はOR演算を示す。本発明のこの実施形態では、affine_merge_flag及びaffine_inter_flagに関するコンテキストの量は2に減少する。
表5 本発明におけるコンテキスト・インデックス
1103.現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行する。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1104.現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得する。
このステップは、具体的には、図3の予測処理ユニット360によって実行されてもよい。
1105.現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得する。
このステップは、具体的には、図3の再構成ユニット314によって実行されてもよい。
この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
図11において説明されるビデオ復号化方法に対応して、本発明の実施形態は更に符号化方法を提供し、符号化方法は、
現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含む、ステップと、エントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデル・セットは、図11に記載されるビデオ復号化方法におけるコンテキスト・モデル・セットと同じである。この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は、1つのコンテキスト・モデルを共有するので、ビデオ・エンコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・エンコーダのより少ないストレージ空間を占有する。
図12は、本発明の実施形態によるビデオ復号化方法の手順を記載している。この実施形態は、図3に示すビデオ・デコーダによって実行されてもよい。図12に示すように、本方法は、以下のステップを含む。
1201.受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得する。現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含む。
実装において、現在ブロックにおけるシンタックス要素3はmerge_idxであり、現在ブロックにおけるシンタックス要素4はaffine_merge_idxである。
実装において、現在ブロックにおけるシンタックス要素3はmerge_idxであり、現在ブロックにおけるシンタックス要素4はsubblock_merge_idxである。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1202.エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得する。現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは、事前に設定されたコンテキスト・モデル・セットから決定されるか、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは、事前に設定されたコンテキスト・モデルから決定される。
実装において、事前に設定されたコンテキスト・モデル・セットに含まれるコンテキスト・モデルの量は5である。事前に設定されたコンテキスト・モデル・セットに含まれるコンテキスト・モデルの量は、代替的に、1、2、3、又は4のような別の値であってもよいことを理解することができる。事前に設定されたコンテキスト・モデル・セットに含まれるコンテキスト・モデルの量が1である場合、事前に設定されたコンテキスト・モデル・セットは1つのコンテキスト・モデルである。事前に設定されたコンテキスト・モデル・セットに含まれるコンテキスト・モデルの量は、本発明のこの実施形態では限定されない。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1203.現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行する。
このステップは、具体的には、図3のエントロピー復号化ユニット304によって実行されてもよい。
1204.現在ブロックにおけるシンタックス要素であり且つエントロピー復号化によって取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得する。
このステップは、具体的には、図3の予測処理ユニット360によって実行されてもよい。
1205.現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得する。
このステップは、具体的には、図3の再構成ユニット314によって実行されてもよい。
この実施形態では、現在ブロックにおけるシンタックス要素3及びシンタックス要素4は、1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素3及びシンタックス要素4のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
図12において説明されるビデオ復号化方法に対応して、本発明の実施形態は更に符号化方法を提供し、符号化方法は、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するステップであって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含む、ステップと、エントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するステップであって、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定される、ステップと、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するステップと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するステップとを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデル・セットは、図12に記載されるビデオ復号化方法におけるコンテキスト・モデル・セットと同じである。この実施形態では、現在ブロックにおけるシンタックス要素3及びシンタックス要素4は、1つのコンテキスト・モデルを共有するので、ビデオ・エンコーダは、シンタックス要素3及びシンタックス要素4のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・エンコーダのより少ないストレージ空間を占有する。
本発明の実施形態は、エントロピー復号化ユニット304、予測処理ユニット360、及び再構成ユニット314を含むビデオ・デコーダ30を提供する。
エントロピー復号化ユニット304は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成され、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー復号化ユニット304は、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成され、現在ブロックにおけるシンタックス要素1に関するエントロピー復号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー復号化はコンテキスト・モデルを使用することにより完了する。
実装において、現在ブロックにおけるシンタックス要素1はaffine_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
実装において、現在ブロックにおけるシンタックス要素1はsubblock_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
予測処理ユニット360は、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化によって取得されるシンタックス要素に基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成される。
再構成ユニット314は、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成される。
この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、デコーダは、エントロピー復号化を実行する際にコンテキスト・モデルを確認する必要がなく、デコーダによりビデオ復号化を実行する復号化効率を改善する。更に、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とするので、ビデオ・デコーダのより少ないストレージ空間が占有される。
相応して、本発明の実施形態はビデオ・エンコーダ20を提供し、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニット270であって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されており、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に関してエントロピー符号化が実行される場合に、現在ブロックにおけるシンタックス要素1に関するエントロピー符号化は事前に設定されたコンテキスト・モデルを使用することにより完了し、又は現在ブロックにおけるシンタックス要素2に関するエントロピー符号化はコンテキスト・モデルを使用することにより完了する、エントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力272とを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデルは、図10に記載される方法におけるコンテキスト・モデルと同じである。この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、エンコーダは、エントロピー符号化を実行する際にコンテキスト・モデルを確認する必要がなく、エンコーダによりビデオ符号化を実行する符号化効率を改善する。更に、ビデオ・エンコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とするので、ビデオ・エンコーダのより少ないストレージ空間が占有される。
本発明の別の実施形態は、エントロピー復号化ユニット304、予測処理ユニット360、及び再構成ユニット314を含むビデオ・デコーダ30を提供する。
エントロピー復号化ユニット304は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成され、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー復号化ユニット304は、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー復号化ユニットは、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成されている。
実装において、現在ブロックにおけるシンタックス要素1はaffine_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
実装において、現在ブロックにおけるシンタックス要素1はsubblock_merge_flagであり、現在ブロックにおけるシンタックス要素2はaffine_inter_flagである。
実装において、エントロピー復号化ユニット304は、具体的には、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスを決定するように構成されることが可能であり、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルを示すために使用され、又は、
エントロピー復号化ユニットは、現在ブロックの左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2と、現在ブロックの上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2とに基づいて、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスを決定するように構成されることが可能であり、現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスは、現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルを示すために使用される。
例えば、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値との合計である。
例えば、現在ブロックにおけるシンタックス要素1のコンテキスト・インデックスの値は、上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果であり、又は
現在ブロックにおけるシンタックス要素2のコンテキスト・インデックスの値は、前記上隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値と、左隣接ブロックにおけるシンタックス要素1及びシンタックス要素2に関してOR演算を実行することにより取得される値とに、OR演算を実行することにより取得される結果である。
予測処理ユニット360は、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化によって取得されるものに基づいて、現在ブロックに関して予測処理を実行し、現在ブロックの予測ブロックを取得するように構成される。
再構成ユニット314は、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成される。
この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は、1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素1及びシンタックス要素2に対して唯1つのコンテキスト・モデルのみを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
相応して、本発明の実施形態は更にビデオ・エンコーダ20を提供し、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニット270であって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素1又は現在ブロックにおけるシンタックス要素2を含み、エントロピー符号化ユニットは、エントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素1に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素2に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されているエントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力272とを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデル・セットは、図11に記載されるビデオ復号化方法におけるコンテキスト・モデル・セットと同じである。この実施形態では、現在ブロックにおけるシンタックス要素1及びシンタックス要素2は1つのコンテキスト・モデルを共有するので、ビデオ・エンコーダは、シンタックス要素1及びシンタックス要素2のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・エンコーダのより少ないストレージ空間を占有する。
本発明の別の実施形態は、エントロピー復号化ユニット304、予測処理ユニット360、及び再構成ユニット314を含むビデオ・デコーダ30を提供する。
エントロピー復号化ユニット304は、受信ビットストリームを解析して、現在ブロックにおけるエントロピー復号化対象のシンタックス要素を取得するように構成され、現在ブロックにおけるエントロピー復号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含み、エントロピー復号化ユニットは、エントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー復号化ユニットは、現在ブロックにおけるエントロピー復号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー復号化対象のシンタックス要素に関してエントロピー復号化を実行するように構成されている。
事前に設定されたコンテキスト・モデル・セットは、1つ、2つ、3つ、4つ、又は5つのコンテキスト・モデルを含む。事前に設定されたコンテキスト・モデル・セットが1つのコンテキスト・モデルのみを含む場合、事前に設定されたコンテキスト・モデル・セットは1つのコンテキスト・モデルであることを理解することができる。
実装において、現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、affine_merge_idxであり、現在ブロックのアフィン・マージ候補リストのインデックス値を示すために使用され、又は
現在ブロックにおけるシンタックス要素3は、merge_idxであり、現在ブロックのマージ候補リストのインデックス値を示すために使用され、又は現在ブロックにおけるシンタックス要素4は、subblock_merge_idxであり、サブブロック・マージ候補リストのインデックス値を示すために使用される。
予測処理ユニット360は、現在ブロックにおけるシンタックス要素であり且つエントロピー復号化により取得されるものに基づいて、現在ブロックに関して予測処理を実行して、現在ブロックの予測ブロックを取得するように構成される。
再構成ユニット314は、現在ブロックの予測ブロックに基づいて、現在ブロックの再構成された画像を取得するように構成される。
この実施形態では、現在ブロックにおけるシンタックス要素3及びシンタックス要素4は1つのコンテキスト・モデルを共有するので、ビデオ・デコーダは、シンタックス要素3及びシンタックス要素4のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・デコーダのより少ないストレージ空間を占有する。
相応して、本発明の実施形態は更にビデオ・エンコーダを提供し、ビデオ・エンコーダは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素を取得するように構成されたエントロピー符号化ユニット270であって、現在ブロックにおけるエントロピー符号化対象のシンタックス要素は、現在ブロックにおけるシンタックス要素3又は現在ブロックにおけるシンタックス要素4を含み、エントロピー符号化ユニットは、エントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルを取得するように構成され、現在ブロックにおけるシンタックス要素3に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、又は現在ブロックにおけるシンタックス要素4に対応するコンテキスト・モデルは事前に設定されたコンテキスト・モデル・セットから決定され、エントロピー符号化ユニットは、現在ブロックにおけるエントロピー符号化対象のシンタックス要素に対応するコンテキスト・モデルに基づいて、エントロピー符号化対象のシンタックス要素に関してエントロピー符号化を実行するように構成されているエントロピー符号化ユニットと、現在ブロックにおけるシンタックス要素であり且つエントロピー符号化により取得されるものを含むビットストリームを出力するように構成された出力272とを含む。現在ブロック上でエントロピー符号化が実行される場合に使用されるコンテキスト・モデル・セットは、図12に記載されるビデオ復号化方法におけるコンテキスト・モデル・セットと同じである。この実施形態では、現在ブロックにおけるシンタックス要素3及びシンタックス要素4は1つのコンテキスト・モデルを共有するので、ビデオ・エンコーダは、シンタックス要素3及びシンタックス要素4のために唯1つのコンテキスト・モデルを記憶することを必要とし、ビデオ・エンコーダのより少ないストレージ空間を占有する。
本発明の実施形態1は、affine_merge_flag及びaffine_inter_flagが、1つのコンテキスト・セットを共有すること(セットは3つのコンテキストを含む)、及び、各セットで使用される実際のコンテキスト・インデックスは、表4に示すように、現在の復号化ブロックの左隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値と、現在の復号化ブロックの上隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値とを加算することによって得られる結果に等しいこと、を提案する。ここで、「|」はOR演算を示す。本発明の実施形態1では、affine_merge_flag及びaffine_inter_flagに関するコンテキストの量は3に減少する。
本発明の実施形態2は、affine_merge_flag及びaffine_inter_flagが、1つのコンテキスト・セットを共有すること(セットは2つのコンテキストを含む)、及び、各セットで使用される実際のコンテキスト・インデックスは、表5に示すように、現在の復号化ブロックの左隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値と、現在の復号化ブロックの上隣接ブロックにおける2つのシンタックス要素に関してOR演算を実行することにより得られる値とに、OR演算を実行することによって得られる結果に等しいこと、を提案する。ここで、「|」はOR演算を示す。本発明の実施形態2では、affine_merge_flag及びaffine_inter_flagに関するコンテキストの量は2に減少する。
本発明の実施形態3は、affine_merge_flagとaffine_inter_flagとが1つのコンテキストを共有することを提案する。本発明の実施形態3では、affine_merge_flagコンテキストの数及びaffine_inter_flagコンテキストの数は1に減少する。
先行技術では、打ち切られた単進符号を使用することにより、二進化がmerge_idx及びaffine_merge_idxに関して実行され、2つの異なるコンテキスト・セット(各コンテキスト・セットは5つのコンテキストを含む)がCABACにおいて使用され、異なるコンテキストが、二値化後の各バイナリ・ビットに対して使用される。先行技術において、merge_idx及びaffine_merge_idxのコンテキストの量は10である。
本発明の実施形態4は、merge_idx及びaffine_merge_idxが1つのコンテキスト・セットを共有することを提案する(各コンテキスト・セットは5つのコンテキストを含む)。本発明の実施形態4では、merge_idx及びaffine_merge_idxのコンテキストの量は5に減少する。
幾つかの他の技術において、表1のシンタックス要素affine_merge_flag[x0][y0]は、subblock_merge_flag[x0][y0]に置換されてもよく、サブブロック・ベースのマージ・モードが現在ブロックに使用されているかどうかを示すために使用され、表1のシンタックス要素affine_merge_idx[x0][y0]は、subblock_merge_idx[x0][y0]に置換されてもよく、サブブロック・マージ候補リストのインデックス値を示すために使用される。
この場合において、本発明の実施形態1ないし実施形態4が依然として適用可能であり、即ちsubblock_merge_flag及びaffine_inter_flagは1つのコンテキスト・セット(又はコンテキスト)及び1つのインデックス取得方法を共有し、merge_idx及びsubblock_merge_idxは1つのコンテキスト・セット(又はコンテキスト)を共有する。
本発明の実施形態は、更に、上記の何れかの方法を実行するように構成された実行回路を含むビデオ・デコーダを提供する。
本発明の実施形態は、更に、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに結合された不揮発性のコンピュータ読み取り可能な記憶媒体とを含むビデオ・デコーダを提供する。不揮発性のコンピュータ読み取り可能な記憶媒体は、少なくとも1つのプロセッサにより実行されることが可能なコンピュータ・プログラムを記憶し、コンピュータ・プログラムが少なくとも1つのプロセッサにより実行されると、ビデオ・デコーダは、上記の何れかの方法を実行するように動作することが可能である。
本発明の実施形態は、プロセッサにより実行されることが可能なコンピュータ・プログラムを記憶するように構成されたコンピュータ読み取り可能な記憶媒体を更に提供する。コンピュータ・プログラムが少なくとも1つのプロセッサにより実行されると、上記の何れかの方法が実行される。
本発明の実施形態は、更に、コンピュータ・プログラムを提供する。コンピュータ・プログラムが実行されると、上記の何れかの方法が実行される。
前述の1つ以上の例において、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせによって実現されることが可能である。ソフトウェアで実現される場合、機能は、コンピュータ読み取り可能な媒体に記憶されるか又はそれで伝送され、1つ以上の命令又はコードとしてハードウェア・ベースの処理ユニットによって実行されることが可能である。コンピュータ読み取り可能な媒体は、データ記憶媒体のような有形媒体に対応するコンピュータ読み取り可能な記憶媒体又は通信媒体を含む可能性がある。通信媒体は、例えば、通信プロトコルに従って或る場所から他の場所へのコンピュータ・プログラムの転送を促す任意の媒体を含む。従って、コンピュータ読み取り可能な媒体は、一般に、(1)非一時的な有形のコンピュータ読み取り可能な記憶媒体、又は(2)信号又はキャリアのような通信媒体に対応する可能性がある。データ記憶媒体は、本発明で説明される技術の実装のための命令、コード、及び/又はデータ構造を取り出するために、1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスされることが可能な任意の利用可能な媒体であってもよい。コンピュータ・プログラム製品は、コンピュータ読み取り可能な媒体を含む可能性がある。
限定ではなく例示として、このようなコンピュータ読み取り可能な記憶媒体は、RAM、ROM、EEPROM、CD−ROM、又は他の光ディスク・ストレージ、磁気ディスク・ストレージ、又は他の磁気ストレージ・デバイス、フラッシュ・メモリ、又は、任意の他の媒体であって命令又はデータ構造の形態で必要なプログラム・コードを記憶するために使用されることが可能であり且つコンピュータによってアクセスされることが可能なもの、を含む可能性がある。更に、任意の接続がコンピュータ読み取り可能な媒体として適切に言及されてもよい。例えば、同軸ケーブル、光ファイバ・ケーブル、ツイスト・ペア、デジタル加入者回線(digital subscriber line, DSL)、又は、赤外線、無線、及びマイクロ波などの無線技術を利用することにより、命令がウェブサイト、サーバー、又は他のリモート・ソースから伝送される場合、同軸ケーブル、光ファイバ・ケーブル、ツイスト・ペア、DSL、又は赤外線、無線、無線、及びマイクロ波などの無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ読み取り可能な記憶媒体及びデータ記憶媒体は、接続、キャリア、信号、又は他の任意の一時的な媒体を含まず、実際には非一時的な有形の記憶媒体に向けられることが理解されるべきである。本明細書において使用されるように、ディスク及び光ディスクは、コンパクト・ディスク(compact disc,CD)、レーザー・ディスク、光ディスク、デジタル多用途ディスク(digital versatile disc,DVD)、フロッピー・ディスク、及びブルーレイ・ディスクを含む。ディスクは一般に磁気的にデータを再生し、光ディスクはレーザーを使用することにより光学的にデータを再生する。上記の如何なる組み合わせも、コンピュータ読み取り可能な媒体の範囲内に該当するはずである。
命令は、1つ以上のプロセッサによって実行されることが可能であり、1つ以上のプロセッサは、例えば1つ以上のデジタル信号プロセッサ(digital signal processor,DSP)、1つ以上の汎用マイクロプロセッサ、1つ以上の特定用途向け集積回路(application specific integrated circuit,ASIC)、1つ以上のフィールド・プログラマブル論理アレイ(field programmable logic arrays,FPGA)、又は他の同等な統合された又は個別的な論理回路である。従って、本明細書で使用される用語「プロセッサ」は、前述の構造又は本明細書で説明される技術の実装に適用可能な他の構造、のうちの任意の1つを表す可能性がある。更に、幾つかの態様において、本明細書で説明される機能は、符号化及び復号化を実行するように構成された専用ハードウェア及び/又はソフトウェア・モジュール内で提供されてもよいし、又は組み合わされたコーデックに組み込まれてもよい。更に、技術は、1つ以上の回路又は論理素子で完全に実現されてもよい。
本開示の技術は、無線ハンドセット、集積回路(integrated circuit,IC)、又はICセット(例えば、チップセット)を含む複数のデバイス又は装置で実現されてもよい。開示される技術を実行するように構成されるデバイスの機能を強調するために、本開示では様々な構成要素、モジュール、又はユニットが説明されており、これらは、必ずしも異なるハードウェア・ユニットによって実現される必要はない。実際には、上述したように、種々のユニットは、適切なソフトウェア及び/又はファームウェアと共にコーデック・ハードウェア・ユニット内で結合されてもよいし、又は一組の相互運用可能なハードウェア・ユニットによって提供されてもよい。ハードウェア・ユニットは、上述の1つ以上のプロセッサを含む。