IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グァンドン オッポ モバイル テレコミュニケーションズ コーポレーション リミテッドの特許一覧

特許7577232ビデオ信号の符号化/復号方法及び前記方法のための装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-24
(45)【発行日】2024-11-01
(54)【発明の名称】ビデオ信号の符号化/復号方法及び前記方法のための装置
(51)【国際特許分類】
   H04N 19/52 20140101AFI20241025BHJP
   H04N 19/463 20140101ALI20241025BHJP
【FI】
H04N19/52
H04N19/463
【請求項の数】 11
(21)【出願番号】P 2024010339
(22)【出願日】2024-01-26
(62)【分割の表示】P 2021523845の分割
【原出願日】2019-11-07
(65)【公開番号】P2024045337
(43)【公開日】2024-04-02
【審査請求日】2024-01-26
(31)【優先権主張番号】10-2018-0136255
(32)【優先日】2018-11-08
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2018-0149064
(32)【優先日】2018-11-27
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2018-0148890
(32)【優先日】2018-11-27
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】516227559
【氏名又は名称】オッポ広東移動通信有限公司
【氏名又は名称原語表記】GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP., LTD.
【住所又は居所原語表記】No. 18 Haibin Road,Wusha, Chang’an,Dongguan, Guangdong 523860 China
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100152205
【弁理士】
【氏名又は名称】吉田 昌司
(74)【代理人】
【識別番号】100137523
【弁理士】
【氏名又は名称】出口 智也
(74)【代理人】
【識別番号】100120385
【弁理士】
【氏名又は名称】鈴木 健之
(72)【発明者】
【氏名】リー、ベグン
【審査官】岩井 健二
(56)【参考文献】
【文献】国際公開第2020/094052(WO,A1)
【文献】国際公開第2020/083403(WO,A1)
【文献】Tadamasa Toma, et al.,Description of SDR video coding technology proposal by Panasonic,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-J0020-v1,10th Meeting: San Diego, US,2018年04月,pp.12-15,65-71
【文献】Max Blaser, Johannes Sauer, and Mathias Wien,Description of SDR and 360° video coding technology proposal by RWTH Aachen University,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-J0023-r1,10th Meeting: San Diego, US,2018年04月,pp.1-14,28-29
【文献】Ru-Ling Liao, and Chong Soon Lim,CE10.3.1.b: Triangular prediction unit mode,Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-L0124-v2,12th Meeting: Macao, CN,2018年10月,pp.1-8
【文献】Benjamin Bross, Jianle Chen, and Shan Liu,Versatile Video Coding (Draft 4),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,JVET-M1001 (version 7),13th Meeting: Marrakech, MA,2019年03月17日,pp.47-48,92-94,157-159
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
ビデオ復号方法であって、
符号化ブロックに対応する第1予測及び第2予測が存在する場合、前記符号化ブロックの分割タイプを決定することと、
前記符号化ブロックの前記第1予測の第1運動情報及び前記第2予測の第2運動情報を導き出すことと、
前記第1運動情報及び前記第2運動情報に基づいて前記符号化ブロックにおける予測サンプルを取得することと、を含み、
第1マージ候補に基づいて前記第1予測の前記第1運動情報を取得し、前記第1マージ候補は第1インデックス情報によりマージ候補リストに含まれる複数のマージ候補から指定されたものであり、
第2マージ候補に基づいて前記第2予測の前記第2運動情報を取得し、前記第2マージ候補は第2インデックス情報により前記マージ候補リストに含まれる複数のマージ候補から指定されたものであり、
前記第2インデックス情報の値が前記第1インデックス情報の値以上である場合、前記第2マージ候補のインデックスは、前記第2インデックス情報の値に1を加えた値に等しいビデオ復号方法。
【請求項2】
前記第2インデックス情報の値が前記第1インデックス情報の値より小さい場合、前記第2マージ候補のインデックスは、前記第2インデックス情報の値に等しい請求項1に記載のビデオ復号方法。
【請求項3】
前記予測サンプルが前記第1予測及び前記第2予測の境界領域に含まれる場合、前記第1運動情報に基づいて導き出した第1予測サンプル及び前記第2運動情報に基づいて導き出した第2予測サンプルの重み付け及び演算によって前記予測サンプルを導き出す請求項1に記載のビデオ復号方法。
【請求項4】
前記予測サンプルのx軸座標及びy軸座標に基づいて前記第1予測サンプルに応用される第1重み付け値を決定する請求項3に記載のビデオ復号方法。
【請求項5】
定数から前記第1重み付け値を引くことにより、前記第2予測サンプルに応用される第2重み付け値を導き出す請求項4に記載のビデオ復号方法。
【請求項6】
ビデオ符号化方法であって、
符号化ブロックに対応する第1予測及び第2予測が存在する場合、前記符号化ブロックの分割タイプを決定することと、
前記符号化ブロックの前記第1予測の第1運動情報及び前記第2予測の第2運動情報を導き出すことと、
前記第1運動情報及び前記第2運動情報に基づいて前記符号化ブロックにおける予測サンプルを取得することと、を含み、
マージ候補リストに含まれる複数のマージ候補のうちの第1マージ候補に基づいて前記第1予測の前記第1運動情報を取得し、
前記マージ候補リストに含まれる複数のマージ候補のうちの第2マージ候補に基づいて前記第2予測の前記第2運動情報を取得し、
それぞれ前記第1マージ候補を指定するための第1インデックス情報及び前記第2マージ候補を指定するための第2インデックス情報を符号化し、
前記第2インデックス情報の値が前記第1インデックス情報の値以上である場合、前記第2マージ候補のインデックスは、前記第2インデックス情報の値に1を加えた値に等しいビデオ符号化方法。
【請求項7】
前記第2インデックス情報の値が前記第1インデックス情報の値より小さい場合、前記第2マージ候補のインデックスは、前記第2インデックス情報の値に等しい請求項6に記載のビデオ符号化方法。
【請求項8】
ビデオ復号装置であって、インター予測部を備え、
前記インター予測部は、符号化ブロックに対応する第1予測及び第2予測が存在する場合、前記符号化ブロックの分割タイプを決定することと、前記符号化ブロックの前記第1予測の第1運動情報及び前記第2予測の第2運動情報を導き出すことと、前記第1運動情報及び前記第2運動情報に基づいて前記符号化ブロックにおける予測サンプルを取得することとに用いられ、
第1マージ候補に基づいて前記第1予測の前記第1運動情報を取得し、前記第1マージ候補は第1インデックス情報によりマージ候補リストに含まれる複数のマージ候補から指定されたものであり、第2マージ候補に基づいて前記第2予測の前記第2運動情報を取得し、前記第2マージ候補は第2インデックス情報により前記マージ候補リストに含まれる複数のマージ候補から指定されたものであり、
前記第2インデックス情報の値が前記第1インデックス情報の値以上である場合、前記第2マージ候補のインデックスは、前記第2インデックス情報の値に1を加えた値に等しいビデオ復号装置。
【請求項9】
前記第2インデックス情報の値が前記第1インデックス情報の値より小さい場合、前記第2マージ候補のインデックスは、前記第2インデックス情報の値に等しい請求項8に記載のビデオ復号装置。
【請求項10】
ビデオ符号化装置であって、
命令を格納したメモリと、プロセッサと、を備え、前記プロセッサは、前記命令を実行して、
符号化ブロックに対応する第1予測及び第2予測が存在する場合、前記符号化ブロックの分割タイプを決定することと、
前記符号化ブロックの前記第1予測の第1運動情報及び前記第2予測の第2運動情報を導き出すことと、
前記第1運動情報及び前記第2運動情報に基づいて前記符号化ブロックにおける予測サンプルを取得することと、を実行するように構成され、ここで、
マージ候補リストに含まれる複数のマージ候補のうちの第1マージ候補に基づいて前記第1予測の前記第1運動情報を取得し、
前記マージ候補リストに含まれる複数のマージ候補のうちの第2マージ候補に基づいて前記第2予測の前記第2運動情報を取得し、
それぞれ前記第1マージ候補を指定するための第1インデックス情報及び前記第2マージ候補を指定するための第2インデックス情報を符号化し、
前記第2インデックス情報の値が前記第1インデックス情報の値以上である場合、前記第2マージ候補のインデックスは、前記第2インデックス情報の値に1を加えた値に等しいビデオ符号化装置。
【請求項11】
前記第2インデックス情報の値が前記第1インデックス情報の値より小さい場合、前記第2マージ候補のインデックスは、前記第2インデックス情報の値に等しい請求項10に記載のビデオ符号化装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はビデオ信号の符号化/復号方法及び前記方法のための装置に関する。
【背景技術】
【0002】
表示パネルが大きくなるにつれて、画質の一層高いビデオサービスを必要とすることになっている。高解像度ビデオサービスの最大問題はデータ量が大幅に増加することである。このような問題を解決するために、ビデオ圧縮率を向上するための研究を積極的に行っている。代表例として、動画専門家グループ(MPEG、Motion Picture Experts Group)及び国際電気通信連合-電気通信(ITU-T、International Telecommunication Union-Telecommunication)傘下のビデオ符号化専門家グループ(VCEG、Video Coding Experts Group)は2009年で映像符号化共同研究部会JCT-VC(Joint Collaborative Team on Video Coding)を設立した。JCT-VCはビデオ圧縮規格HEVC(高効率映像符号化、High Efficiency Video Coding)を提案し、2013年1月25日に承認を得たが、その圧縮性能が約H.264/AVCの2倍である。高解像度ビデオサービスの急速な発展に伴い、HEVCの性能の限定性も徐々に明らかになっている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明の目的はビデオ信号を符号化/復号する際に符号化ブロックを複数の予測ブロックに分割する方法及び前記方法を実行するための装置を提供することにある。
【0004】
本発明の目的はビデオ信号を符号化/復号する際に複数の予測ブロックのうちの各予測ブロックの運動情報を導き出す方法及び前記方法を実行するための装置を提供することにある。
【0005】
本発明の目的はビデオ信号を符号化/復号する際にインター運動情報リストを使用してマージ候補を導き出す方法及び前記方法を実行するための装置を提供することにある。
【0006】
本発明が実現しようとする技術的課題は以上に言及した技術的課題に限らず、当業者は以下の説明から言及しない他の技術的課題を明確に理解することができる。
【課題を解決するための手段】
【0007】
本発明のビデオ信号の符号化/復号方法は、符号化ブロックを第1予測ユニット及び第2予測ユニットに分割するかどうかを決定することと、前記符号化ブロックを分割することを決定する場合、前記符号化ブロックの分割タイプを決定することと、前記符号化ブロックの前記第1予測ユニットの第1運動情報及び前記第2予測ユニットの第2運動情報を導き出すことと、前記第1運動情報及び前記第2運動情報に基づいて前記符号化ブロックにおける予測サンプルを取得することと、を含む。このような場合、第1マージ候補に基づいて前記第1予測ユニットの前記第1運動情報を取得してもよく、前記第1マージ候補は第1インデックス情報によりマージ候補リストに含まれる複数のマージ候補から指定されたものであり、第2マージ候補に基づいて前記第2予測ユニットの前記第2運動情報を取得してもよく、前記第2マージ候補は第2インデックス情報により前記マージ候補リストに含まれる複数のマージ候補から指定されたものである。
【0008】
本発明のビデオ信号の符号化/復号方法では、前記第2インデックス情報の値が前記第1インデックス情報の値以上である場合、前記第2マージ候補はインデックスとして前記第2インデックス情報の値に1を加えた値を有してもよい。
【0009】
本発明のビデオ信号の符号化/復号方法では、前記第2インデックス情報の値が前記第1インデックス情報の値より小さい場合、前記第2インデックス情報の値を前記第2マージ候補のインデックスとしてもよい。
【0010】
本発明のビデオ信号の符号化/復号方法では、前記予測サンプルが前記第1予測ユニット及び前記第2予測ユニットの境界領域に含まれる場合、前記第1運動情報に基づいて導き出した第1予測サンプル及び前記第2運動情報に基づいて導き出した第2予測サンプルの重み付け及び演算によって前記予測サンプルを導き出してもよい。
【0011】
本発明のビデオ信号の符号化/復号方法では、前記予測サンプルのx軸座標及びy軸座標に基づいて前記第1予測サンプルに応用される第1重み付け値を決定してもよい。
【0012】
本発明のビデオ信号の符号化/復号方法では、定数から前記第1重み付け値を引くことにより、前記第2予測サンプルに応用される第2重み付け値を導き出してもよい。
【0013】
本発明のビデオ信号の符号化/復号方法では、前記符号化ブロックのサイズ又は前記符号化ブロックの形状のうちの少なくとも1つに基づいて前記境界領域のサイズを決定してもよい。
【0014】
以上に本発明を簡単に説明した特徴は以下に説明しようとする本発明の詳細説明の例示的な実施形態であって、本発明の範囲を制限するものではない。
【発明の効果】
【0015】
本発明によれば、符号化ブロックを複数の予測ブロックに分割して複数の予測ブロックのうちの各予測ブロックの運動情報を導き出す方法を提供することにより、インター予測効率を向上させることができる。
【0016】
本発明によれば、インター運動情報リストを使用してマージ候補を導き出す方法を提供することにより、インター予測効率を向上させることができる。
【0017】
本発明に実現できる効果は上記効果に限らず、当業者は以下の説明から言及しない他の効果を明確に理解することができる。
【図面の簡単な説明】
【0018】
図1図1は本発明の実施例のビデオエンコーダ(encoder)のブロック図である。
図2図2は本発明の実施例のビデオデコーダ(decoder)のブロック図である。
図3図3は本発明の実施例の基本符号化木ユニットを示す図である。
図4図4は符号化ブロックの複数の分割タイプを示す図である。
図5図5は符号化木ユニットの分割例を示す図である。
図6図6は本発明の実施例のインター予測方法のフローチャートである。
図7図7はオブジェクトの非線形運動を示す図である。
図8図8は本発明の実施例に係るアフィン運動に基づくインター予測方法を示すフローチャートである。
図9図9は各アフィン運動モデルのアフィンシードベクトルの例を示す図である。
図10図10は4パラメータ運動モデルにおけるサブブロックのアフィンベクトルの例を示す図である。
図11図11はマージ候補を導き出すために使用できる隣接ブロックを示す図である。
図12図12はアフィン隣接ブロックのアフィンシードベクトルに基づいて現在ブロックのアフィンシードベクトルを導き出すことを示す図である。
図13図13はサブブロックの運動ベクトルをアフィン隣接ブロックのアフィンシードベクトルとして設定する例を示す図である。
図14図14は参照サンプルの位置を示す図である。
図15図15は参照サンプルの位置を示す図である。
図16図16は参照サンプルの位置を示す図である。
図17図17は修正されたアフィンマージベクトルの導き出し方法の応用例を示す図である。
図18図18は隣接ブロックに属する複数のサブブロックの複数の運動ベクトルに基づいてアフィンマージ候補のアフィンシードベクトルを導き出す例を示す図である。
図19図19は現在ブロックの左側に位置する複数のサブブロックの運動ベクトルに基づいてアフィンマージ候補のアフィンシードベクトルを導き出す例を示す図である。
図20図20は現在ブロックの左側に位置する非隣接ブロック又は隣接ブロックの運動情報に基づいてアフィンマージ候補のアフィンシードベクトルを導き出す例を示す図である。
図21図21はアフィンマージ候補のアフィンシードベクトルを導き出すためのブロックの位置を示す図である。
図22図22は複数の隣接ブロックの複数の運動ベクトルを組み合わせて組合せマージ候補を導き出す例を説明するための図である。
図23図23は隣接ブロックが使用できないことを示す図である。
図24図24はマージモードにおいて現在ブロックの運動情報を導き出す過程のフローチャートである。
図25図25はインター運動情報リストの更新例を説明するための図である。
図26図26はインターマージ候補リストを更新する実施例を示す図である。
図27図27は予め記憶されるインターマージ候補のインデックスが更新された例を示す図である。
図28図28は代表的なサブブロックの位置を示す図である。
図29図29は異なるインター予測モードに対してインター運動情報リストを生成することを示す例。
図30図30は長期運動情報リストに含まれるインターマージ候補をマージ候補リストに追加する例を示す図である。
図31図31はマージ候補のうちのいくつかのマージ候補のみに対して冗長検査を行う例を示す図である。
図32図32は特定のマージ候補に対して冗長検査を省略する例を示す図である。
図33図33は対角線を使用して符号化ブロックを複数の予測ユニットに分割する例を示す図である。
図34図34は符号化ブロックを2つの予測ユニットに分割する例を示す図である。
図35図35は符号化ブロックを異なるサイズの複数の予測ブロックに分割する例を示す図である。
図36図36は三角形マージ候補を導き出すための隣接ブロックを示す図である。
図37図37は各三角形予測ユニットの隣接ブロックの利用可能性を決定する例を説明するための図である。
図38図38は第1予測サンプル及び第2予測サンプルの重み付け及び演算によって予測サンプルを導き出す例を示す図である。
図39図39は第1予測サンプル及び第2予測サンプルの重み付け及び演算によって予測サンプルを導き出す例を示す図である。
図40図40は本発明の実施例に係るイントラ予測方法を示すフローチャートである。
図41図41はイントラ予測モードを示す図である。
図42図42は参照サンプルを1行に配列する一次元配列の例を示す図である。
図43図43は参照サンプルを1行に配列する一次元配列の例を示す図である。
図44図44は角度イントラ予測モードとx軸に平行する直線とがなす角度を示す図である。
図45図45は現在ブロックが非正方形である場合に予測サンプルを取得する例を示す図である。
図46図46は広角イントラ予測モードを示す図である。
図47図47はブロック化強度の決定過程を示すフローチャートである。
図48図48は予め定義されたフィルタ候補を示す図である。
【発明を実施するための形態】
【0019】
以下、図面を参照しながら本発明の実施例を詳しく説明する。
【0020】
ビデオの符号化及び復号はブロック単位で実行される。例えば、符号化ブロック、変換ブロック又は予測ブロックに対して、変換、量子化、予測、ループ内フィルタリング又は復元等の符号化/復号処理を実行することができる。
【0021】
以下、符号化/復号されようとするブロックは「現在ブロック」と称される。例えば、現在符号化/復号処理ステップによって、現在ブロックは符号化ブロック、変換ブロック又は予測ブロックを示してもよい。
【0022】
また、本明細書に使用される用語「ユニット」は特定の符号化/復号過程を実行するための基本ユニットを示し、「ブロック」は所定サイズのサンプル配列を示すと理解されてもよい。特に断りがない限り、「ブロック」と「ユニット」は交換可能に使用される。例えば、以下に説明される実施例では、符号化ブロックと符号化ユニットが同じ意味を有すると理解されてもよい。
【0023】
図1は本発明の実施例のビデオエンコーダ(encoder)のブロック図である。
【0024】
図1に示すように、ビデオ符号化装置100はピクチャ分割部110、予測部120、125、変換部130、量子化部135、並べ替え部160、エントロピー符号化部165、逆量子化部140、逆変換部145、フィルタ部150及びメモリ155を含んでもよい。
【0025】
各部材が分離したハードウェア又は単一のソフトウェアコンポーネントからなることを示さず、ビデオ符号化装置の様々な特徴的機能を示すように、図1に示される各部材は独立して示される。即ち、説明の都合上、代表的な構造要素として各構造要素を列挙して含み、且つ少なくとも2つの構造要素は1つの構造要素に組み合わせられ、又は1つの構造要素を複数の構造要素に分割させることができ、これにより、機能を実行する。本発明の本質から逸脱しない限り、このような各構造要素を組み合わせる実施例及び各構造要素を分離させる実施例も本発明の権限範囲に属する。
【0026】
また、一部の構造要素は本発明において本質的機能を実行するために必要な構造要素ではなく、性能を向上させるだけに用いられる選択可能な構造要素である。本発明は本発明の本質を実現するために必要な部材のみを含む(性能を向上させるための構造要素を含まない)ことにより実施されてもよく、且つ、必要な構造要素のみを含む(性能を向上させるための構造要素を含まない)構造も本発明の権限範囲に属する。
【0027】
ピクチャ分割部110は入力されたピクチャを少なくとも1つの処理ユニットに分割することができる。このような場合、処理ユニットは予測ユニット(PU、Prediction Unit)であってもよく、変換ユニット(TU、Transform Unit)であってもよく、符号化ユニット(CU、Coding Unit)であってもよい。ピクチャ分割部110は1つのピクチャを複数の符号化ユニット、予測ユニット及び変換ユニットの組み合わせに分割し、所定規格(例えば、コスト関数)に基づいて符号化ユニット、予測ユニット及び変換ユニットの組み合わせを選択してピクチャを符号化することができる。
【0028】
例えば、1つのピクチャを複数の符号化ユニットに分割してもよい。ピクチャを符号化ユニットに分割するために、例えば4分木構造(Quad Tree Structure)の再帰型ツリー構造を使用してもよく、1つのビデオ又は最大符号化ユニット(largest coding unit)をルートとして符号化ユニットを他の符号化ユニットに分割することができ、前記符号化ユニットは分割された符号化ユニット数と同じ数の子ノードを有してもよい。何らかの制限によって、再び分割されない符号化ユニットは葉ノードとなる。即ち、1つの符号化ユニットが正方形分割しか実現できないと仮定すれば、1つの符号化ユニットは多くとも4つの他の符号化ユニットに分割され得る。
【0029】
以下、本発明の実施例では、符号化ユニットとは符号化を実行するユニットを意味してもよく、更に復号を実行するユニットを意味してもよい。
【0030】
1つの符号化ユニットにおける予測ユニットを少なくとも1つの同じサイズの正方形又は矩形に分割してもよいし、1つの符号化ユニットにおける1つの予測ユニットを他の予測ユニットと異なる形状及び/又はサイズに分割してもよい。
【0031】
符号化ユニットによりイントラ予測を実行する予測ユニットは最小符号化ユニットではない場合、複数の予測ユニットN×Nに分割せずにイントラ予測を実行してもよい。
【0032】
予測部120、125はインター予測を実行するインター予測部120と、イントラ予測を実行するイントラ予測部125とを含んでもよい。予測ユニットに対してインター予測を使用するかそれともイントラ予測を実行するかを決定して、各予測方法に基づいて具体的な情報(例えば、イントラ予測モード、運動ベクトル、参照ピクチャ等)を決定してもよい。このような場合、予測を実行する処理ユニットは予測方法及び具体的な内容を決定する処理ユニットと異なる可能性がある。例えば、予測ユニットによって予測方法及び予測モード等を決定してもよく、変換ユニットによって予測を実行してもよい。生成された予測ブロックと原ブロックとの残余値(残余ブロック)は変換部130に入力され得る。また、予測のための予測モード情報、運動ベクトル情報等を残余値とともにエントロピー符号化部165において符号化して、デコーダに伝送してもよい。特定の符号化モードを使用する場合、予測部120、125により予測ブロックを生成せずに、原ブロックを直接符号化してデコーダに伝送してもよい。
【0033】
インター予測部120は現ピクチャの前のピクチャ又は後のピクチャのうちの少なくとも1つのピクチャの情報に基づいて予測ユニットを予測してもよい。いくつかの場合、更に現ピクチャにおける符号化された一部の領域の情報に基づいて予測ユニットを予測してもよい。インター予測部120は参照ピクチャ補間部、運動予測部、運動補償部を含んでもよい。
【0034】
参照ピクチャ補間部はメモリ155から参照ピクチャ情報を受信して、参照ピクチャに基づいて整数画素又は分数画素の画素情報を生成することができる。輝度画素については、1/4画素単位で分数画素の画素情報を生成するために、フィルタ係数の異なるDCTベース8次元補間フィルタ(DCT-based Interpolation Filter)を使用してもよい。色度信号については、1/8画素単位で分数画素の画素情報を生成するために、フィルタ係数の異なるDCTベース4次元補間フィルタ(DCT-based Interpolation Filter)を使用してもよい。
【0035】
運動予測部は参照ピクチャ補間部により補間された参照ピクチャに基づいて運動予測を実行することができる。運動ベクトルの計算方法はフルサーチブロックマッチングアルゴリズム(FBMA、Full search-based Block Matching Algorithm)、3段探索法(TSS、Three Step Search)、新たな3段探索アルゴリズム(NTS、New Three-Step Search Algorithm)等の複数の方法を使用してもよい。運動ベクトルは補間された画素に基づいて1/2画素又は1/4画素を単位とする運動ベクトル値を有してもよい。運動予測部において様々な運動予測方法を用いて現在予測ユニットを予測してもよい。運動予測方法はスキップ(Skip)方法、マージ(Merge)方法、高度動きベクトル予測(AMVP、Advanced Motion Vector Prediction)方法、イントラブロックコピー(Intra Block Copy)方法等の複数の方法を使用してもよい。
【0036】
イントラ予測部125は現在ブロック周辺の参照画素情報(前記参照画素情報が現ピクチャにおける画素情報である)に基づいて予測ユニットを生成することができる。現在予測ユニットの隣接ブロックがインター予測を実行したブロックであり且つ参照画素がインター予測を実行した画素である場合、インター予測を実行したブロックに含まれる参照画素を、周辺のイントラ予測を実行したブロックの参照画素情報として使用してもよい。即ち、参照画素が利用不可能である場合、利用可能な参照画素のうちの少なくとも1つの参照画素で利用不可能な参照画素情報を代替してもよい。
【0037】
イントラ予測において、予測モードは予測方向に基づいて参照画素情報を使用する角度予測モードと、予測を実行する際に方向情報を使用しない非角度モードとを有してもよい。輝度情報の予測モードと色度情報の予測モードとが異なってもよく、色度情報を予測するために、輝度情報を予測するために使用したイントラ予測モード情報又は予測された輝度信号情報を使用してもよい。
【0038】
イントラ予測を実行するとき、予測ユニットのサイズが変換ユニットのサイズと同じである場合、予測ユニットの左側に位置する画素、左上に位置する画素、上方に位置する画素に基づいて予測ユニットに対してイントラ予測を実行してもよい。しかしながら、イントラ予測を実行するとき、予測ユニットのサイズが変換ユニットのサイズと異なる場合、変換ユニットの参照画素に基づいてイントラ予測を実行してもよい。また、最小符号化ユニットのみに対してN×N分割を用いるイントラ予測を応用してもよい。
【0039】
予測モードに基づいて参照画素に対して適応型画面内平滑化(AIS、Adaptive Intra Smoothing)フィルタを応用した後、イントラ予測方法は予測ブロックを生成してもよい。参照画素に応用される適応型画面内平滑化フィルタのタイプが異なる可能性がある。イントラ予測方法を実行するために、現在予測ユニットの周辺に位置する予測ユニットのイントラ予測モードに基づいて現在予測ユニットのイントラ予測モードを予測してもよい。周辺予測ユニットから予測されたモード情報を使用して現在予測ユニットの予測モードを予測する場合、現在予測ユニット及び周辺予測ユニットのイントラ予測モードが同じであれば、所定のフラグ情報を使用して、現在予測ユニット及び周辺予測ユニットの予測モードが同じであることを示す情報を伝送してもよく、現在予測ユニット及び周辺予測ユニットの予測モードが異なれば、エントロピー符号化を実行することにより現在ブロックの予測モード情報を符号化してもよい。
【0040】
また、残余情報を含む残余ブロックを生成することができ、前記残余情報は予測部120、125において生成された予測ユニットにより予測を実行する予測ユニットと予測ユニットの原ブロックとの差分である。生成された残余ブロックを変換部130に入力することができる。
【0041】
変換部130において、離散コサイン変換(DCT、Discrete Cosine Transform)又は離散サイン変換(DST、Discrete Sine Transform)等の変換方法を使用して残余ブロックを変換してもよく、前記残余ブロックは原ブロックと予測部120、125により生成された予測ユニットとの残余値(residual)情報を含む。DCT変換コアはDCT2又はDCT8のうちの少なくとも1つを含み、DST変換コアはDST7を含む。残余ブロックを生成するために使用した予測ユニットのイントラ予測モード情報に基づいて、DCTを応用して残余ブロックを変換するかそれともDSTを応用して残余ブロックを変換するかを決定してもよい。更に残余ブロックの変換をスキップしてもよい。残余ブロックの変換をスキップするかどうかを示すフラグを符号化してもよい。サイズが閾値以下である残余ブロック、輝度成分又は色度成分(4:4:4フォーマット以下)は、変換をスキップすることが許容されてもよい。
【0042】
量子化部135は変換部130において周波数領域に変換された値を量子化してもよい。量子化係数はブロック又はビデオの重要性によって変化してもよい。逆量子化部140及び並べ替え部160に量子化部135における計算された値を提供することができる。
【0043】
並べ替え部160は量子化された残余値に対して係数値の並べ替えを実行してもよい。
【0044】
並べ替え部160は係数スキャニング(Coefficient Scanning)方法によって2次元のブロック形状係数を1次元のベクトル形式に変更することができる。例えば、並べ替え部160はジグザグスキャン(Zig-Zag Scan)方法を使用してDC係数乃至高周波数領域の係数を走査して、1次元ベクトル形式に変更することができる。変換ユニットのサイズ及びイントラ予測モードに基づいて、ジグザグスキャンの代わりに、更に列方向に沿って2次元ブロック形状係数を走査する垂直走査と、行方向に沿って2次元ブロック形状係数を走査する水平走査とを使用してもよい。即ち、変換ユニットのサイズ及びイントラ予測モードに基づいて、ジグザグスキャン、垂直方向走査及び水平方向走査のうちのどの走査方法を使用するかを決定してもよい。
【0045】
エントロピー符号化部165は並べ替え部160により計算された値に基づいてエントロピー符号化を実行してもよい。例えば、エントロピー符号化は指数ゴロム(Exponential Golomb)、コンテキスト適応型可変長符号化(CAVLC、Context-Adaptive Variable Length Coding)、コンテキスト適応型バイナリ算術符号化(CABAC、Context-Adaptive Binary Arithmetic Coding)等の複数の符号化方法を使用してもよい。
【0046】
エントロピー符号化部165は並べ替え部160及び予測部120、125からの符号化ユニットの残余値係数情報及びブロックタイプ情報、予測モード情報、分割ユニット情報、予測ユニット情報及び伝送ユニット情報、運動ベクトル情報、参照フレーム情報、ブロックの補間情報、フィルタリング情報等の複数の情報を符号化してもよい。
【0047】
エントロピー符号化部165は並べ替え部160から入力された符号化ユニットの係数値に対してエントロピー符号化を行うことができる。
【0048】
逆量子化部140及び逆変換部145は量子化部135により量子化された複数の値を逆量子化して、変換部130により変換された値を逆変換する。逆量子化部140及び逆変換部145において生成された残余値は予測部120、125に含まれる運動予測部、運動補償部及びイントラ予測部により予測された予測ユニットとマージすることにより、復元ブロック(Reconstructed Block)を生成することができる。
【0049】
フィルタ部150はデブロッキングフィルタ、オフセット補正部(offset correction unit)、適応型ループフィルタ(ALF、Adaptive Loop Filter)のうちの少なくとも1つを含んでもよい。
【0050】
デブロッキングフィルタはブロック間の境界により復元されたピクチャにおいて生成されたブロック歪みを除去することができる。デブロックを実行するかどうかを判断するために、ブロックに含まれるいくつかの列又は行に含まれる画素に基づいて、現在ブロックに対してデブロッキングフィルタを応用するかどうかを判断してもよい。ブロックに対してデブロッキングフィルタを応用する場合、必要なデブロッキングフィルタリング強度に基づいてストロングフィルタ(Strong Filter)又はウィークフィルタ(Weak Filter)を応用してもよい。また、デブロッキングフィルタの使用過程において、垂直フィルタリング及び水平フィルタリングを実行するとき、水平方向フィルタリング及び垂直方向フィルタリングを同期処理してもよい。
【0051】
オフセット補正部は画素単位でデブロックピクチャとオリジナルピクチャとの間のオフセットを補正してもよい。ピクチャに含まれる画素を所定数の領域に分割した後、オフセットを実行しようとする領域を決定して、対応の領域に対してオフセットを応用し、又は各画素のエッジ情報を考慮した上でオフセットを応用するという方式で、指定されたピクチャをオフセット補正してもよい。
【0052】
フィルタリング後の復元ピクチャとオリジナルピクチャとを比較した値に基づいて適応型ループフィルタリング(ALF、Adaptive Loop Filtering)を実行してもよい。ピクチャに含まれる画素を所定組に分割した後、対応の組に使用されようとする1つのフィルタを決定してもよく、各組に対してフィルタリングを区別的に実行してもよい。各符号化ユニット(CU、Coding Unit)に対して輝度信号によって適応型ループフィルタリングを応用するかどうかに関連する情報を伝送してもよく、応用されようとする適応型ループフィルタの形状及びフィルタ係数は各ブロックによって異なってもよい。また、応用されるブロックの特性にかかわらず、更に同じタイプ(固定タイプ)のALFを応用することができる。
【0053】
メモリ155はフィルタ部150により計算された復元ブロック又はピクチャを記憶することができ、インター予測を実行する際に記憶される復元ブロック又はピクチャを予測部120、125に提供することができる。
【0054】
図2は本発明の実施例のビデオデコーダ(decoder)のブロック図である。
【0055】
図2に示すように、ビデオデコーダ200はエントロピー復号部210、並べ替え部215、逆量子化部220、逆変換部225、予測部230、予測部235、フィルタ部240、メモリ245を含んでもよい。
【0056】
ビデオエンコーダからビデオビットストリームを入力するとき、ビデオエンコーダと反対のステップに応じて入力されたビットストリームを復号してもよい。
【0057】
エントロピー復号部210はビデオエンコーダのエントロピー符号化部においてエントロピー符号化を実行するステップと反対のステップに応じてエントロピー復号してもよい。例えば、ビデオエンコーダにおいて実行される方法に対応して、指数ゴロム(Exponential Golomb)、コンテキスト適応型可変長符号化(CAVLC、Context-Adaptive Variable Length Coding)、コンテキスト適応型バイナリ算術符号化(CABAC、Context-Adaptive Binary Arithmetic Coding)等の複数の方法を応用してもよい。
【0058】
エントロピー復号部210はエンコーダにより実行されるイントラ予測及びインター予測に関連する情報を復号してもよい。
【0059】
並べ替え部215は符号化部においてエントロピー復号部210によりエントロピー復号されたビットストリームを並べ替える方法に基づいて並べ替えを実行することができる。1次元ベクトル形式で示される複数の係数を2次元ブロック形状の係数に復元して並べ替えてもよい。並べ替え部215は、符号化部により実行された係数スキャニングに関連する情報を受信して、対応の符号化部により実行される走査順序に従って逆向走査を行う方式で、並べ替えを実行してもよい。
【0060】
逆量子化部220はエンコーダの提供する量子化パラメータ及び並べ替えられるブロックの係数値に基づいて逆量子化を実行してもよい。
【0061】
逆変換部225はビデオエンコーダにより実行される量子化結果に対して逆離散コサイン変換、逆離散サイン変換を実行してもよく、前記逆離散コサイン変換、逆離散サイン変換は変換部において実行される変換の逆変換、即ち離散コサイン変換、離散サイン変換の逆変換に属する。DCT変換コアはDCT2又はDCT8のうちの少なくとも1つを含んでもよく、DST変換コアはDST7を含んでもよい。代替的に、ビデオエンコーダにおいて変換をスキップすれば、逆変換部225は逆変換を実行しなくてもよい。逆変換はビデオエンコーダにより決定された伝送ユニットにより実行されてもよい。ビデオデコーダの逆変換部225は予測方法、現在ブロックのサイズ及び予測方向等の複数の情報に基づいて変換方法(例えば、DCT又はDST)を選択的に実行してもよい。
【0062】
予測部230、235はエントロピー復号部210の提供する予測ブロックの生成に関連する情報及びメモリ245の提供する予め復号されたブロック又はピクチャ情報に基づいて予測ブロックを生成することができる。
【0063】
以上のように、ビデオエンコーダにおける操作と同じ方式でイントラ予測を実行するとき、予測ユニットのサイズが変換ユニットのサイズと同じである場合、予測ユニットの左側に位置する画素、左上に位置する画素、上方に位置する画素に基づいて予測ユニットに対してイントラ予測を実行し、イントラ予測を実行する際の予測ユニットのサイズが変換ユニットのサイズと異なる場合、変換ユニットに基づく参照画素を使用してイントラ予測を実行してもよい。また、更に最小符号化ユニットのみに対してN×N分割を用いるイントラ予測を応用してもよい。
【0064】
予測部230、235は予測ユニット判定部、インター予測部及びイントラ予測部を含んでもよい。予測ユニット判定部はエントロピー復号部210から入力された予測ユニット情報、イントラ予測方法の予測モード情報、インター予測方法の運動予測関連情報等の複数種類の情報を受信し、現在符号化ユニットに基づいて予測ユニットを分類して、予測ユニットがインター予測を実行しているかそれともイントラ予測を実行しているかを決定する。インター予測部230はビデオエンコーダの提供する現在予測ユニットのインター予測を実行するために必要な情報を使用して、現在予測ユニットの属する現ピクチャの前のピクチャ又は後のピクチャのうちの少なくとも1つのピクチャに含まれる情報に基づいて現在予測ユニットに対してインター予測を実行してもよい。代替的に、更に現在予測ユニットの属する現ピクチャにおける復元された一部の領域の情報に基づいてインター予測を実行してもよい。
【0065】
インター予測を実行するために、符号化ユニットによって対応の符号化ユニットに含まれる予測ユニットの運動予測方法がスキップモード(Skip Mode)、マージモード(Merge Mode)、高度動きベクトル予測モード(AMVP Mode)、イントラブロックコピーモードのうちのどのモードであるかを判断してもよい。
【0066】
イントラ予測部235は現ピクチャにおける画素情報に基づいて予測ブロックを生成することができる。予測ユニットがイントラ予測を実行した予測ユニットである場合、ビデオエンコーダの提供する予測ユニットのイントラ予測モード情報に基づいてイントラ予測を実行することができる。イントラ予測部235は適応型画面内平滑化(AIS、Adaptive Intra Smoothing)フィルタ、参照画素補間部、DCフィルタを含んでもよい。適応型画面内平滑化フィルタは現在ブロックの参照画素に対してフィルタリングを実行する部分であり、現在予測ユニットの予測モードに基づいてフィルタを応用するかどうかを決定することができる。ビデオエンコーダの提供する予測ユニットの予測モード及び適応型画面内平滑化フィルタ情報を使用して現在ブロックの参照画素に対して適応型画面内平滑化フィルタリングを実行してもよい。現在ブロックの予測モードが適応型画面内平滑化フィルタリングを実行しないモードである場合、適応型画面内平滑化フィルタを応用しなくてもよい。
【0067】
予測ユニットの予測モードが参照画素を補間する画素値に基づいてイントラ予測を実行する予測ユニットである場合、参照画素補間部は参照画素を補間することにより整数値又は分数値の画素単位の参照画素を生成することができる。現在予測ユニットの予測モードが参照画素を補間しない方式で予測ブロックを生成する予測モードである場合、参照画素を補間しなくてもよい。現在ブロックの予測モードがDCモードである場合、DCフィルタはフィルタリングによって予測ブロックを生成してもよい。
【0068】
復元されたブロック又はピクチャをフィルタ部240に提供してもよい。フィルタ部240はデブロッキングフィルタ、オフセット補正部、ALFを含んでもよい。
【0069】
ビデオエンコーダから、対応のブロック又はピクチャに対してデブロッキングフィルタを応用するかどうかに関連する情報と、デブロッキングフィルタを応用する際にストロングフィルタを応用するかそれともウィークフィルタを応用するかに関連する情報とを受信することができる。ビデオデコーダのデブロッキングフィルタはビデオエンコーダの提供するデブロッキングフィルタに関連する情報を受信することができ、ビデオデコーダは対応ブロックに対してデブロックフィルタリングを実行することができる。
【0070】
オフセット補正部は符号化時にピクチャに応用されるオフセット補正のタイプ及びオフセット量情報等に基づいて、復元されたピクチャに対してオフセット補正を実行することができる。
【0071】
エンコーダの提供するALFを応用するかどうかに関連する情報、ALF係数情報等に基づいて、ALFを符号化ユニットに応用してもよい。このようなALF情報は特定のパラメータセットに含まれることで提供され得る。
【0072】
メモリ245は復元されたピクチャ又はブロックを記憶し、前記ピクチャ又はブロックが参照ピクチャ又は参照ブロックとして利用できるようにし、且つ復元されたピクチャを出力部に提供することができる。
【0073】
図3は本発明の実施例の基本符号化木ユニットを示す図である。
【0074】
最大サイズの符号化ブロックを符号化木ブロックとして定義してもよい。1つのピクチャは複数の符号化木ユニット(CTU、Coding Tree Unit)に分割されてもよい。符号化木ユニットは最大サイズの符号化ユニットであり、更に最大符号化ユニット(LCU、Largest Coding Unit)と称されてもよい。図3には1つのピクチャを複数の符号化木ユニットに分割する例を示す。
【0075】
符号化木ユニットのサイズはピクチャレベル又はシーケンスレベルで定義されてもよい。このため、ピクチャパラメータセット又はシーケンスパラメータセットによって信号で符号化木ユニットのサイズを示す情報を送信してもよい。
【0076】
例えば、シーケンスにおけるピクチャ全体の符号化木ユニットのサイズは128×128として設定されてもよい。代替的に、ピクチャレベルの128×128又は256×256のうちのいずれか1つを符号化木ユニットのサイズとして決定してもよい。例えば、第1ピクチャにおける符号化木ユニットのサイズを128×128として設定してもよく、第2ピクチャにおける符号化木ユニットのサイズを256×256として設定してもよい。
【0077】
符号化木ユニットを分割することにより符号化ブロックを生成することができる。符号化ブロックは符号化/復号処理を行うための基本ユニットを示す。例えば、異なる符号化ブロックによって予測又は変換を実行してもよく、又は異なる符号化ブロックによって予測符号化モードを決定してもよい。予測符号化モードは予測ピクチャの生成方法を示す。例えば、予測符号化モードは画面内予測(Intra Prediction、イントラ予測)、画面間予測(Inter Prediction、インター予測)、現ピクチャ参照(CPR、Current Picture Referencing、又はイントラブロックコピー(IBC、Intra Block Copy))又は組合せ予測(Combined Prediction)を含んでもよい。符号化ブロックに対して、イントラ予測、インター予測、現ピクチャ参照又は組合せ予測のうちの少なくとも1つの予測符号化モードを使用して符号化ブロックに関連する予測ブロックを生成してもよい。
【0078】
ビットストリームを介して信号によって現在ブロックの予測符号化モードを示す情報を送信してもよい。例えば、前記情報は予測符号化モードがイントラモードであるかそれともインターモードであるかを示す1ビットフラグであってもよい。現在ブロックの予測符号化モードがインターモードであると決定する場合のみ、現ピクチャ参照又は組合せ予測を使用してもよい。
【0079】
現ピクチャ参照は現ピクチャを参照ピクチャとして設定して、現ピクチャにおける符号化/復号後の領域から現在ブロックの予測ブロックを取得することに用いられる。現ピクチャとは現在ブロックを含むピクチャを意味する。ビットストリームを介して信号によって現在ブロックに対して現ピクチャ参照を応用するかどうかを示す情報を送信してもよい。例えば、前記情報は1ビットフラグであってもよい。前記フラグが真である場合、現在ブロックの予測符号化モードを現ピクチャ参照として決定してもよく、前記フラグが偽である場合、現在ブロックの予測モードをインター予測として決定してもよい。
【0080】
代替的に、参照ピクチャインデックスに基づいて現在ブロックの予測符号化モードを決定してもよい。例えば、参照ピクチャインデックスが現ピクチャを指す場合、現在ブロックの予測符号化モードを現ピクチャ参照として決定してもよい。参照ピクチャインデックスが現ピクチャではなく他のピクチャを指す場合、現在ブロックの予測符号化モードをインター予測として決定してもよい。即ち、現ピクチャ参照は現ピクチャにおける符号化/復号後の領域の情報を使用する予測方法であり、インター予測は符号化/復号後の他のピクチャの情報を使用する予測方法である。
【0081】
組合せ予測はイントラ予測、インター予測及び現ピクチャ参照のうちの2つ以上が組み合わせられてなる符号化モードを示す。例えば、組合せ予測を応用する場合、イントラ予測、インター予測又は現ピクチャ参照のうちの1つによって第1予測ブロックを生成してもよく、イントラ予測、インター予測又は現ピクチャ参照のうちのもう1つによって第2予測ブロックを生成してもよい。第1予測ブロック及び第2予測ブロックを生成する場合、第1予測ブロック及び第2予測ブロックの平均演算又は重み付け及び演算によって最終的な予測ブロックを生成してもよい。ビットストリームを介して信号によって組合せ予測を応用するかどうかを示す情報を送信してもよい。前記情報は1ビットフラグであってもよい。
【0082】
図4は符号化ブロックの複数の分割タイプを示す図である。
【0083】
4分木分割、2分木分割又は3分木分割によって符号化ブロックを複数の符号化ブロックに分割してもよい。更に4分木分割、2分木分割又は3分木分割によって分割された符号化ブロックを複数の符号化ブロックに再び分割してもよい。
【0084】
4分木分割とは現在ブロックを4つのブロックに分割する分割技術を意味する。4分木分割の結果として、現在ブロックを4つの正方形セグメントに分割してもよい(図4(a)部分における「SPLIT_QT」参照)。
【0085】
2分木分割とは現在ブロックを2つのブロックに分割する分割技術を意味する。垂直方向に沿って(即ち、現在ブロックを横切る垂直線を使用して)現在ブロックを2つのブロックに分割する過程は垂直方向2分木分割と称されてもよく、水平方向に沿って(即ち、現在ブロックを横切る水平線を使用して)現在ブロックを2つのブロックに分割する過程は水平方向2分木分割と称されてもよい。2分木分割の結果として、現在ブロックを2つの非正方形セグメントに分割してもよい。図4(b)部分における「SPLIT_BT_VER」は垂直方向2分木分割結果を示し、図4(c)部分における「SPLIT_BT_HOR」は水平方向2分木分割結果を示す。
【0086】
3分木分割とは現在ブロックを3つのブロックに分割する分割技術を意味する。垂直方向に沿って(即ち、現在ブロックを横切る2つの垂直線を使用して)現在ブロックを3つのブロックに分割する過程は垂直方向3分木分割と称されてもよく、水平方向に沿って(即ち、現在ブロックを横切る2つの水平線を使用して)現在ブロックを3つのブロックに分割する過程は水平方向3分木分割と称されてもよい。3分木分割の結果として、現在ブロックを3つの非正方形セグメントに分割してもよい。このような場合、現在ブロックの中心に位置するセグメントの幅/高さは他のセグメントの幅/高さの2倍であってもよい。図4(d)部分における「SPLIT_TT_VER」は垂直方向3分木分割結果を示し、図4(e)部分における「SPLIT_TT_HOR」は水平方向3分木分割結果を示す。
【0087】
符号化木ユニットの分割回数を分割深度(Partitioning Depth)として定義してもよい。シーケンス又はピクチャレベルで符号化木ユニットの最大分割深度を決定してもよい。従って、符号化木ユニットの最大分割深度は様々なシーケンス又はピクチャによって異なってもよい。
【0088】
代替的に、複数の分割技術のそれぞれに対して最大分割深度を独立して決定してもよい。例えば、4分木分割が許容される最大分割深度は2分木分割及び/又は3分木分割が許容される最大分割深度と異なってもよい。
【0089】
エンコーダはビットストリームを介して信号によって現在ブロックの分割タイプ又は分割深度のうちの少なくとも1つを示す情報を送信してもよい。デコーダはビットストリームから解析された情報に基づいて符号化木ユニットの分割タイプ及び分割深度を決定してもよい。
【0090】
図5は符号化木ユニットの分割例を示す図である。
【0091】
4分木分割、2分木分割及び/又は3分木分割等の分割技術を使用して符号化ブロックを分割する過程はマルチツリー分割(Multi Tree Partitioning)と称されてもよい。
【0092】
符号化ブロックに対してマルチツリー分割を応用して生成した符号化ブロックは下游符号化ブロックと称されてもよい。符号化ブロックの分割深度がkである場合、複数の下流符号化ブロックの分割深度がk+1として設定される。
【0093】
一方、分割深度k+1の符号化ブロックに対して、分割深度kの符号化ブロックは上流符号化ブロックと称されてもよい。
【0094】
上流符号化ブロックの分割タイプ又は隣接符号化ブロックの分割タイプのうちの少なくとも1つに基づいて現在符号化ブロックの分割タイプを決定してもよい。隣接符号化ブロックは現在符号化ブロックに隣接し、現在符号化ブロックの上側隣接ブロック、左側隣接ブロック又は左上角に隣接する隣接ブロックのうちの少なくとも1つを含んでもよい。分割タイプは4分木に分割されるかどうか、2分木に分割されるかどうか、2分木の分割方向、3分木に分割されるかどうか又は3分木の分割方向のうちの少なくとも1つを含んでもよい。
【0095】
符号化ブロックの分割タイプを決定するために、ビットストリームを介して信号によって符号化ブロックが分割されたかどうかを示す情報を送信してもよい。前記情報は1ビットフラグ「split_cu_flag」であり、前記フラグが真である場合、マルチツリー分割技術によって符号化ブロックを分割することを示す。
【0096】
「split_cu_flag」が真である場合、ビットストリームを介して信号によって符号化ブロックが4分木分割されたかどうかを示す情報を送信してもよい。前記情報は1ビットフラグ「split_qt_flag」であり、前記フラグが真である場合、符号化ブロックは4つのブロックに分割され得る。
【0097】
例えば、図5に示される例には符号化木ユニットが4分木分割されるにつれて分割深度1の4つの符号化ブロックを生成することを示す。また、4分木分割の結果として生成された4つの符号化ブロックのうちの1番目の符号化ブロック及び4番目の符号化ブロックに対して4分木分割を再び応用することを示す。最終的に、分割深度2の4つの符号化ブロックを生成することができる。
【0098】
また、分割深度2の符号化ブロックに対して4分木分割を再び応用して分割深度3の符号化ブロックを生成してもよい。
【0099】
符号化ブロックに対して4分木分割を応用しない場合、符号化ブロックのサイズ、符号化ブロックがピクチャ境界に位置するかどうか、最大分割深度又は隣接ブロックの分割タイプのうちの少なくとも1つを考慮した上で、前記符号化ブロックに対して2分木分割を実行するかそれとも3分木分割を実行するかを決定してもよい。前記符号化ブロックに対して2分木分割又は3分木分割を実行することを決定する場合、ビットストリームを介して信号によって分割方向を示す情報を送信してもよい。前記情報は1ビットフラグ「mtt_split_cu_vertical_flag」であってもよい。前記フラグに基づいて、分割方向が垂直方向であるかそれとも水平方向であるかを決定してもよい。また、ビットストリームを介して信号によって前記符号化ブロックに対して2分木分割又は3分木分割のうちのどの情報を応用するかを送信してもよい。前記情報は1ビットフラグ「mtt_split_cu_binary_flag」であってもよい。前記フラグに基づいて、前記符号化ブロックに対して2分木分割を応用するかそれとも3分木分割を応用するかを決定してもよい。
【0100】
例えば、図5に示される例には、分割深度1の符号化ブロックに対して垂直方向2分木分割を応用し、前記分割結果として生成された符号化ブロックのうちの左側符号化ブロックに対して垂直方向3分木分割を応用し、右側符号化ブロックに対して垂直方向2分木分割を応用することを示す。
【0101】
インター予測とは前のピクチャの情報を使用して現在ブロックの予測符号化モードを予測することを意味する。例えば、前のピクチャにおける現在ブロックと同じ位置のブロック(以下にコロケーテッドブロック、Collocated blockと称される)を現在ブロックの予測ブロックとして設定してもよい。以下、位置が現在ブロックと同じであるブロックに基づいて生成された予測ブロックはコロケーテッド予測ブロック(Collocated Prediction Block)と称される。
【0102】
一方、前のピクチャに存在するオブジェクトは既に現ピクチャにおける他の位置に移動した場合、オブジェクトの運動によって現在ブロックを効果的に予測してもよい。例えば、前のピクチャと現ピクチャとを比較することによりオブジェクトの移動方向及びサイズを把握できる場合、オブジェクトの運動情報を考慮した上で現在ブロックの予測ブロック(又は、予測ピクチャ)を生成してもよい。以下、運動情報により生成された予測ブロックは運動予測ブロックと称されてもよい。
【0103】
現在ブロックから予測ブロックを除去することにより残余ブロック(residual block)を生成することができる。このような場合、オブジェクトが運動する場合、運動予測ブロックでコロケーテッド予測ブロックを代替することにより、残余ブロックのエネルギーを減少させ、それにより残余ブロックの圧縮性能を向上させることができる。
【0104】
以上のように、運動情報により予測ブロックを生成する過程は運動補償予測と称されてもよい。大半のインター予測において、運動補償予測によって予測ブロックを生成してもよい。
【0105】
運動情報は運動ベクトル、参照ピクチャインデックス、予測方向又は双方向重み付け値インデックスのうちの少なくとも1つを含んでもよい。運動ベクトルはオブジェクトの移動方向及びサイズを示す。参照ピクチャインデックスは参照ピクチャリストに含まれる複数の参照ピクチャのうちの現在ブロックの参照ピクチャを指定する。予測方向は単方向L0予測、単方向L1予測又は双方向予測(L0予測及びL1予測)のうちのいずれか1つを指す。現在ブロックの予測方向に基づいてL0方向の運動情報又はL1方向の運動情報のうちの少なくとも1つを使用してもよい。双方向重み付け値インデックスはL0予測ブロックに応用される重み付け値及びL1予測ブロックに応用される重み付け値を指定する。
【0106】
図6は本発明の実施例のインター予測方法のフローチャートである。
【0107】
図6に示すように、インター予測方法は、現在ブロックのインター予測モードを決定する(S601)と、決定されたインター予測モードに基づいて現在ブロックの運動情報を取得する(S602)と、取得された運動情報に基づいて現在ブロックに対して運動補償予測を実行する(S603)と、を含む。
【0108】
インター予測モードは現在ブロックの運動情報を決定するための複数の技術を示し、並進(Translation)運動情報を使用するインター予測モードと、アフィン(Affine)運動情報を使用するインター予測モードとを含んでもよい。例えば、並進運動情報を使用するインター予測モードはマージモード及び高度動きベクトル予測モードを含んでもよく、アフィン運動情報を使用するインター予測モードはアフィンマージモード及びアフィン運動ベクトル予測モードを含んでもよい。インター予測モードに応じて、現在ブロックに隣接する隣接ブロック又はビットストリームから解析された情報に基づいて現在ブロックの運動情報を決定してもよい。
【0109】
以下、アフィン運動情報を使用するインター予測方法を詳しく説明する。
【0110】
図7はオブジェクトの非線形運動を例示する図である。
【0111】
ビデオにおいてオブジェクトの運動が非線形運動である可能性がある。例えば、図7に示される例では、ビデオカメラのズーム・イン(Zoom-in)、ズーム・アウト(Zoom-out)、回転(Rotation)又はアフィン変換等のオブジェクトの非線形運動が発生する可能性がある。オブジェクトの非線形運動が発生する場合、並進運動ベクトルによってオブジェクトの運動を効果的に示すことができない。従って、オブジェクトの非線形運動が発生する部分において、アフィン運動で並進運動を代替してもよく、これにより、符号化効率を向上させる。
【0112】
図8は本発明の実施例に係るアフィン運動に基づくインター予測方法を示すフローチャートである。
【0113】
ビットストリームから解析された情報に基づいて、現在ブロックに対してアフィン運動に基づくインター予測技術を応用するかどうかを決定してもよい。具体的に、現在ブロックに対してアフィンマージモードを応用するかどうかを示すフラグ又は現在ブロックに対してアフィン運動ベクトル予測モードを応用するかどうかを示すフラグのうちの少なくとも1つに基づいて、現在ブロックに対してアフィン運動に基づくインター予測技術を応用するかどうかを決定してもよい。
【0114】
アフィン運動に基づくインター予測技術を現在ブロックに応用する場合、現在ブロックのアフィン運動モデルを決定してもよい(S801)。アフィン運動モデルは6パラメータアフィン運動モデル又は4パラメータアフィン運動モデルのうちの少なくとも1つとして決定されてもよい。6パラメータアフィン運動モデルは6つのパラメータでアフィン運動を示し、4パラメータアフィン運動モデルは4つのパラメータでアフィン運動を示す。
【0115】
等式1は6つのパラメータでアフィン運動を示す場合である。アフィン運動はアフィンシードベクトルにより決定された所定領域の並進運動を示す。
【0116】
等式1
【数1】
【0117】
6つのパラメータでアフィン運動を示す場合、複雑な運動を示してもよいが、各パラメータを符号化する際に必要なビット数が増加するため、符号化効率が低下することとなる。従って、更に4つのパラメータでアフィン運動を示してもよい。等式2は4つのパラメータでアフィン運動を示す場合である。
【0118】
等式2
【数2】
【0119】
現在ブロックのアフィン運動モデルを決定するための情報を符号化してビットストリームを介して信号によって送信してもよい。例えば、前記情報は1ビットフラグ「affine_type_flag」であってもよい。前記フラグの値が0である場合、4パラメータアフィン運動モデルを応用することを示し、前記フラグの値が1である場合、6パラメータアフィン運動モデルを応用することを示す。前記フラグはスライス(slice)、セグメント又はブロック(例えば、符号化ブロック又は符号化木ユニット)単位で符号化されてもよい。スライスレベルで信号によりフラグを送信する場合、前記スライスの属するすべてのブロックに対して前記スライスレベルで決定されたアフィン運動モデルを応用してもよい。
【0120】
代替的に、現在ブロックのアフィンインター予測モードに基づいて現在ブロックのアフィン運動モデルを決定してもよい。例えば、アフィンマージモードを応用する場合、現在ブロックのアフィン運動モデルを4パラメータ運動モデルとして決定してもよい。一方、アフィン運動ベクトル予測モードを応用する場合、現在ブロックのアフィン運動モデルを決定するための情報を符号化してビットストリームを介して信号によって送信してもよい。例えば、現在ブロックに対してアフィン運動ベクトル予測モードを応用する場合、1ビットフラグ「affine_type_flag」に基づいて現在ブロックのアフィン運動モデルを決定してもよい。
【0121】
次に、現在ブロックのアフィンシードベクトルを導き出してもよい(S802)。4パラメータアフィン運動モデルを選択する場合、現在ブロックの2つの制御点上の運動ベクトルを導き出してもよい。一方、6パラメータアフィン運動モデルを選択する場合、現在ブロックの3つの制御点上の運動ベクトルを導き出してもよい。制御点上の運動ベクトルはアフィンシードベクトルと称されてもよい。制御点は現在ブロックの左上角、右上角又は左下角のうちの少なくとも1つを含んでもよい。
【0122】
図9は各アフィン運動モデルのアフィンシードベクトルの例を示す図である。
【0123】
4パラメータアフィン運動モデルにおいて、左上角、右上角又は左下角のうちの2つに関連するアフィンシードベクトルを導き出してもよい。例えば、図9(a)部分に示される例では、4パラメータアフィン運動モデルを選択する場合、現在ブロックの左上角(例えば、左上サンプル(x0,y0))に関連するアフィンシードベクトルsv0及び現在ブロックの右上角(例えば、右上サンプル(x1,y1))に関連するアフィンシードベクトルsv1を使用してアフィンベクトルを導き出してもよい。更に左下角に関連するアフィンシードベクトルで左上角に関連するアフィンシードベクトルを代替してもよく、又は、更に左下角に関連するアフィンシードベクトルで右上角に関連するアフィンシードベクトルを代替してもよい。
【0124】
6パラメータアフィン運動モデルにおいて、左上角、右上角及び左下角に関連するアフィンシードベクトルを導き出してもよい。例えば、図9(b)部分に示される例では、6パラメータアフィン運動モデルを選択する場合、現在ブロックの左上角(例えば、左上サンプル(x0,y0))に関連するアフィンシードベクトルsv、現在ブロックの右上角(例えば、右上サンプル(x1,y1))に関連するアフィンシードベクトルsv及び現在ブロックの左上角(例えば、左上サンプル(x2,y2))に関連するアフィンシードベクトルsvを使用してアフィンベクトルを導き出してもよい。
【0125】
以下に説明される実施例では、4パラメータアフィン運動モデルにおいて、左上制御点及び右上制御点のアフィンシードベクトルはそれぞれ第1アフィンシードベクトル及び第2アフィンシードベクトルと称される。以下に説明される第1アフィンシードベクトル及び第2アフィンシードベクトルを使用する実施例では、第1アフィンシードベクトル及び第2アフィンシードベクトルのうちの少なくとも1つを左下制御点のアフィンシードベクトル(第3アフィンシードベクトル)又は右下制御点のアフィンシードベクトル(第4アフィンシードベクトル)に置換してもよい。
【0126】
また、6パラメータアフィン運動モデルにおいて、左上制御点、右上制御点及び左下制御点のアフィンシードベクトルはそれぞれ第1アフィンシードベクトル、第2アフィンシードベクトル及び第3アフィンシードベクトルと称される。以下に説明される第1アフィンシードベクトル、第2アフィンシードベクトル及び第3アフィンシードベクトルを使用する実施例では、第1アフィンシードベクトル、第2アフィンシードベクトル及び第3アフィンシードベクトルのうちの少なくとも1つを右下制御点のアフィンシードベクトル(第4アフィンシードベクトル)に置換してもよい。
【0127】
アフィンシードベクトルを使用して異なるサブブロックに対してアフィンベクトルを導き出してもよい(S803)。アフィンベクトルはアフィンシードベクトルに基づいて導き出した並進運動ベクトルを示す。サブブロックのアフィンベクトルはアフィンサブブロック運動ベクトル又はサブブロック運動ベクトルと称されてもよい。
【0128】
図10は4パラメータ運動モデルにおけるサブブロックのアフィンベクトルの例を示す図である。
【0129】
制御点の位置、サブブロックの位置及びアフィンシードベクトルに基づいてサブブロックのアフィンベクトルを導き出してもよい。例えば、等式3はアフィンサブブロックベクトルを導き出す例を示す。
【0130】
等式3
【数3】
【0131】
等式3では、(x,y)がサブブロックの位置を示す。サブブロックの位置がサブブロックに含まれる参照サンプルの位置を示す。参照サンプルはサブブロックの左上角に位置するサンプル、又はそのx軸又はy軸座標のうちの少なくとも1つが中心位置に位置するサンプルであってもよい。(x,y)が第1制御点の位置を示し、(sv0x,sv0y)が第1アフィンシードベクトルを示す。また、(x,y)が第2制御点の位置を示し、(sv1x,sv1y)が第2アフィンシードベクトルを示す。
【0132】
第1制御点及び第2制御点がそれぞれ現在ブロックの左上角及び右上角に対応する場合、x-xを現在ブロックの幅と同じ値として設定してもよい。
【0133】
その後、各サブブロックのアフィンベクトルを使用して各サブブロックに対して運動補償予測を実行してもよい(S804)。運動補償予測を実行した後、各サブブロックに関連する予測ブロックを生成してもよい。サブブロックの予測ブロックを現在ブロックの予測ブロックとして設定してもよい。
【0134】
現在ブロックに隣接する隣接ブロックのアフィンシードベクトルに基づいて現在ブロックのアフィンシードベクトルを導き出してもよい。現在ブロックのインター予測モードがアフィンマージモードである場合、マージ候補リストに含まれるマージ候補のアフィンシードベクトルを現在ブロックのアフィンシードベクトルとして決定してもよい。また、現在ブロックのインター予測モードがアフィンマージモードである場合、現在ブロックを含む参照ピクチャインデックス、特定方向予測フラグ又は双方向重み付け値のうちの少なくとも1つの運動情報がマージ候補と同じであるように設定してもよい。
【0135】
現在ブロックの隣接ブロックに基づいてマージ候補を導き出してもよい。前記隣接ブロックは現在ブロックに空間的に隣接する空間隣接ブロック及び現ピクチャと異なるピクチャに含まれる時間隣接ブロックのうちの少なくとも1つを含んでもよい。
【0136】
図11はマージ候補を導き出すために使用できる隣接ブロックを示す図である。
【0137】
現在ブロックの隣接ブロックは現在ブロックの左側に隣接する隣接ブロック(A)、現在ブロックの上方に隣接する隣接ブロック(B)、現在ブロックの右上角に隣接する隣接ブロック(C)、現在ブロックの左下角に隣接する隣接ブロック(D)、又は現在ブロックの左上角に隣接する隣接ブロックのうちの少なくとも1つを含んでもよい。現在ブロックの左上サンプルの座標が(x0,y0)である場合、左側隣接ブロックAは(x0-1,y0+H-1)位置上のサンプルを含み、上側隣接ブロックBは(x0+W-1,y0-1)位置上のサンプルを含む。WとHがそれぞれ現在ブロックの幅及び高さを示す。右上隣接ブロックCは(x0+W,y0-1)位置上のサンプルを含み、左下隣接ブロックDは(x0-1,y0+H)位置上のサンプルを含む。左上隣接ブロックEは(x0-1,y0-1)位置上のサンプルを含む。
【0138】
アフィンインター予測モードで隣接ブロックを符号化する場合、対応の隣接ブロックのアフィンシードベクトルに基づいてマージ候補のアフィンシードベクトルを導き出してもよい。以下、アフィンインター予測モードで符号化された隣接ブロックはアフィン隣接ブロックと称され、アフィン隣接ブロックから導き出されたマージ候補はアフィンマージ候補と称される。
【0139】
予め定義された走査順序に従って隣接ブロックを検索することにより、現在ブロックに関連するアフィンマージ候補を生成してもよい。エンコーダ及びデコーダにおいて走査順序を予め定義してもよい。例えば、A、B、C、D、Eの順序に従って隣接ブロックを検索してもよい。また、検索されたアフィン隣接ブロックから順にマージ候補を導き出してもよい。代替的に、現在ブロックのサイズ、形状又はアフィン運動モデルのうちの少なくとも1つに基づいて走査順序を適応的に決定してもよい。即ち、異なるサイズ、形状又はアフィン運動モデルのうちの少なくとも1つを有するブロックの走査順序が異なる。
【0140】
代替的に、現在ブロックの上方に位置する複数のブロックを順に検索して、先に検索されたアフィン隣接ブロックから1つのアフィンマージ候補を導き出し、且つ、現在ブロックの左側に位置する複数のブロックを順に検索して、先に検索されたアフィン隣接ブロックから1つのアフィンマージ候補を導き出す。現在ブロックの上方に位置する複数の隣接ブロックは隣接ブロックE、隣接ブロックB又は隣接ブロックCのうちの少なくとも1つを含み、現在ブロックの左側に位置する複数のブロックはブロックA又はブロックDのうちの少なくとも1つを含んでもよい。このような場合、更に隣接ブロックEを現在ブロックの左側に位置するブロックに分類してもよい。
【0141】
図示しないが、更に現在ブロックの時間隣接ブロックからアフィンマージ候補を導き出してもよい。時間隣接ブロックはコロケーテッドピクチャにおける現在ブロックと同じ位置に位置するブロック又は現在ブロックに隣接するブロックを含んでもよい。具体的に、アフィンインター予測モードで現在ブロックの時間隣接ブロックを符号化すれば、時間アフィンマージ候補のアフィンシードベクトルに基づいてアフィンマージ候補を導き出してもよい。
【0142】
アフィンマージ候補を含むマージ候補リストを生成してもよく、マージ候補リストに含まれるマージ候補のうちの1つのアフィンシードベクトルを現在ブロックのアフィンシードベクトルとして決定してもよい。このため、複数のマージ候補のうちのいずれか1つを示すインデックス情報を符号化してビットストリームを介して伝送してもよい。
【0143】
他の例として、走査順序に従って複数の隣接ブロックを検索してもよく、先に検索されたアフィン隣接ブロックのアフィンシードベクトルから現在ブロックのアフィンシードベクトルを導き出してもよい。
【0144】
以上のように、アフィンマージモードにおいて、隣接ブロックのアフィンシードベクトルを使用して現在ブロックのアフィンシードベクトルを導き出してもよい。
【0145】
現在ブロックのインター予測モードがアフィン運動ベクトル予測モードである場合、運動ベクトル予測候補リストに含まれる運動ベクトル予測候補のアフィンシードベクトルを現在ブロックのアフィンシードベクトル予測値として決定してもよい。前記アフィンシードベクトル予測値にアフィンシードベクトル差分を加えることにより、現在ブロックのアフィンシードベクトルを導き出してもよい。
【0146】
現在ブロックの隣接ブロックに基づいてアフィンシードベクトル予測候補を導き出してもよい。具体的に、所定の走査順序に従って現在ブロックの上方に位置する複数の隣接ブロックを検索し、且つ先に検索されたアフィン隣接ブロックから第1アフィンシードベクトル予測候補を導き出してもよい。また、所定の走査順序に従って現在ブロックの左側に位置する複数の隣接ブロックを検索し、且つ先に検索されたアフィン隣接ブロックから第2アフィンシードベクトル予測候補を導き出してもよい。
【0147】
アフィンシードベクトル差分を決定するための情報を符号化してビットストリームを介して伝送してもよい。前記情報はアフィンシードベクトル差分の大きさを示す大きさ情報と、アフィンシードベクトル差分の符号を示す符号信号とを含んでもよい。各制御点に関連するアフィンシードベクトル差分が同じであるように設定してもよい。代替的に、各制御点に対して異なるアフィンシードベクトル差分を設定してもよい。
【0148】
以上のように、アフィン隣接ブロックのアフィンシードベクトルからアフィンマージ候補又はアフィンシードベクトル予測候補のアフィンシードベクトルを導き出してもよく、導き出されたアフィンマージ候補又はアフィンシードベクトル予測候補のアフィンシードベクトルを使用して現在ブロックのアフィンシードベクトルを導き出してもよい。代替的に、更に所定の走査順序に従って複数のアフィン隣接ブロックを検索した後、先に検索されたアフィン隣接ブロックのアフィンシードベクトルから現在ブロックのアフィンシードベクトルを導き出してもよい。
【0149】
以下、アフィン隣接ブロックのアフィンシードベクトルから現在ブロックのアフィンシードベクトル、アフィンマージ候補又はアフィンシードベクトル予測候補を導き出す方法について詳しく説明する。以下に説明される実施例では、現在ブロックのアフィンシードベクトルを導き出すことはアフィンマージ候補のアフィンシードベクトルを導き出すと理解されてもよく、又はアフィンシードベクトル予測候補のアフィンシードベクトルを導き出すと更に理解されてもよい。
【0150】
図12はアフィン隣接ブロックのアフィンシードベクトルに基づいて現在ブロックのアフィンシードベクトルを導き出すことを示す図である。
【0151】
アフィン隣接ブロックには左上制御点に関連する第1アフィンシードベクトルnv及び右上制御点に関連する第2アフィンシードベクトルnvが記憶される場合、前記第1アフィンシードベクトル及び第2アフィンシードベクトルに基づいてアフィン隣接ブロックの左下制御点に関連する第3アフィンシードベクトルnvを導き出してもよい。等式4には第3アフィンシードベクトルを導き出す例を示す。
【0152】
等式4
【数4】
【0153】
等式4では、(nv0x,nv0y)が第1アフィンシードベクトルnvを示し、(nv1x,nv1y)が第2アフィンシードベクトルnvを示し、(nv2x,nv2y)が第3アフィンシードベクトルnvを示す。また、(xn0,xn0)が第1制御点の位置を示し、(xn1,xn1)が第2制御点の位置を示し、(xn2,xn2)が第3制御点の位置を示す。
【0154】
その後、第1アフィンシードベクトル、第2アフィンシードベクトル及び第3アフィンシードベクトルを使用して現在ブロックのアフィンシードベクトルを導き出してもよい。等式5には現在ブロックの第1アフィンシードベクトルvを導き出す例を示し、等式6には現在ブロックの第2アフィンシードベクトルvを導き出す例を示す。
【0155】
等式5
【数5】
【0156】
等式6
【数6】
【0157】
等式5及び等式6では、(v0x,v0y)が現在ブロックの第1アフィンシードベクトルsvを示し、(v1x,v1y)が現在ブロックの第2アフィンシードベクトルsvを示す。また、(x,y)が第1制御点の位置を示し、(x,y)が第2制御点の位置を示す。例えば、第1制御点が現在ブロックの左上角を示し、第2制御点が現在ブロックの右上角を示す。
【0158】
前記例では、アフィン隣接ブロックに関連する3つのアフィンシードベクトルを使用して現在ブロックの複数のアフィンシードベクトルを導き出すことについて説明した。他の例として、更にアフィン隣接ブロックの複数のアフィンシードベクトルのうちの2つを使用して現在ブロックのアフィンシードベクトルを導き出してもよい。
【0159】
代替的に、アフィン隣接ブロックに関連する左上角の第1アフィンシードベクトル、右上角の第2アフィンシードベクトル又は左下角の第3アフィンシードベクトルを使用せずに、右下角に関連する第4アフィンシードベクトルを使用して現在ブロックの複数のアフィンシードベクトルを導き出してもよい。
【0160】
特に、現在ブロックの上境界が符号化木ユニットの上境界に接触し且つ現在ブロックの上方に隣接するアフィン隣接ブロック(以下、上方アフィン隣接ブロックと称される)の上方制御点(例えば、左上角又は右上角)のアフィンシードベクトルを使用しようとする場合、それらをメモリに予め記憶する必要がある。このため、行バッファエリアの数が増加するという問題を引き起こす可能性がある。従って、現在ブロックの上境界が符号化木ユニットの上境界に接触する場合、上方アフィン隣接ブロックに対して上方制御点のアフィンシードベクトルを使用せずに下方制御点(例えば、左下角又は右下角)のアフィンシードベクトルを使用するように設定してもよい。例えば、上方アフィン隣接ブロックの左下角に関連する第3アフィンシードベクトル及び右下角に関連する第4アフィンシードベクトルを使用して現在ブロックの複数のアフィンシードベクトルを導き出してもよい。このような場合、下角に関連するアフィンシードベクトルは上角に関連するアフィンシードベクトルをコピーすることにより導き出されてもよく、又は複数の上角に関連するアフィンシードベクトルから導き出されてもよい。例えば、第1アフィンシードベクトル、第2アフィンシードベクトル又は第3アフィンシードベクトルを右下角に関連する第4アフィンシードベクトルに変換/置換してもよい。
【0161】
等式7及び等式8には隣接アフィンベクトルの左下制御点に関連する第3アフィンシードベクトル及び右下制御点に関連する第4アフィンシードベクトルを使用して現在ブロックの第1アフィンシードベクトル及び第2アフィンシードベクトルを導き出す例を示す。
【0162】
等式7
【数7】
【0163】
等式8
【数8】
【0164】
等式7及び等式8では、(xn2,yn2)がアフィン隣接ブロックの左下制御点の座標を示し、(xn3,yn3)がアフィン隣接ブロックの右下制御点の座標を示す。(x,y)が現在ブロックの左上制御点の座標を示し、(x,y)が現在ブロックの右上制御点の座標を示す。(nv2x,nv2y)がアフィン隣接ブロックの左下制御点のアフィンシードベクトル(即ち、第3アフィンシードベクトル)を示し、(nv3x,nv3y)がアフィン隣接ブロックの右下制御点のアフィンシードベクトル(即ち、第4アフィンシードベクトル)を示す。(v0x,v0y)が現在ブロックの左上制御点のアフィンシードベクトル(即ち、第1アフィンシードベクトル)を示し、(v1x,v1y)が現在ブロックの右上制御点のアフィンシードベクトル(即ち、第2アフィンシードベクトル)を示す。
【0165】
更に等式7及び等式8に含まれる除算演算をシフト操作に変更してもよい。シフト操作は左下制御点と右下制御点との間の幅(即ち、(xn3-xn2))により導き出された値に基づいて実行されてもよい。
【0166】
上記例では、符号化/復号後のアフィン隣接ブロックの複数のアフィンシードベクトルに基づいて現在ブロックの複数のアフィンシードベクトルを導き出してもよい。このため、符号化/復号後のアフィン隣接ブロックの複数のアフィンシードベクトルをメモリに記憶する必要がある。しかしながら、アフィン隣接ブロックに含まれる複数のサブブロックの複数の並進運動ベクトル(即ち、複数のアフィンベクトル)以外に、更にアフィン隣接ブロックの複数のアフィンシードベクトルをメモリに記憶し、このため、メモリ使用量が増加するという問題がある。このような問題を除去するために、アフィン隣接ブロックの制御点に隣接するサブブロックの運動ベクトルを使用して現在ブロックのアフィンシードベクトルを導き出して、アフィン隣接ブロックのアフィンシードベクトルを代替してもよい。即ち、アフィン隣接ブロックの制御点に隣接するサブブロックの運動ベクトルをアフィン隣接ブロックのアフィンシードベクトルとして設定してもよい。サブブロックはエンコーダ及びデコーダに予め定義されたサイズ/形状を有するブロックであり、且つ運動ベクトルの基本サイズ/形状を記憶するブロックであってもよい。例えば、サブブロックはサイズ4×4の正方形ブロックであってもよい。代替的に、サンプル位置を指定する運動ベクトルをアフィン隣接ブロックのアフィンシードベクトルとして設定してもよい。
【0167】
図13はサブブロックの運動ベクトルをアフィン隣接ブロックのアフィンシードベクトルとして設定する例を示す図である。
【0168】
制御点に隣接するサブブロックの運動ベクトルを対応の制御点のアフィンシードベクトルとして設定してもよい。例えば、図13に示される例では、アフィン隣接ブロックの左下角に隣接するサブブロック(左下サブブロック)の運動ベクトル(nv4x,nv4y)を左下制御点のアフィンシードベクトル(nv2x,nv2y)として設定してもよく、右下角に隣接するサブブロック(右下サブブロック)の運動ベクトル(nv5x,nv5y)を右下角の制御点のアフィンシードベクトル(nv3x,nv3y)として設定してもよい。左下サブブロックとは隣接アフィンブロックの左下制御点(xn2,yn2)に隣接するサンプル(例えば、(xn2,yn2-1)位置のサンプル)を含むサブブロックを意味し、右下サブブロックとは隣接アフィンブロックの右下制御点(xn3,yn3)に隣接するサンプル(例えば、(xn3-1,yn3-1))位置のサンプル)を含むブロックを意味する。等式7及び等式8に基づいて現在ブロックのアフィンシードベクトルを導き出す場合、アフィン隣接ブロックの第3アフィンシードベクトルは左下サブブロックの運動ベクトルで代替されてもよく、第4アフィンシードベクトルは右下サブブロックの運動ベクトルで代替されてもよい。
【0169】
以下、以下に説明される実施例では、アフィン隣接ブロックとして使用されるアフィンシードベクトルのサブブロックはアフィンサブブロックと称される。
【0170】
本発明の一実施例によれば、特定位置上のサンプルに基づいてアフィンサブブロックを決定してもよい。例えば、更に特定位置上のサンプルを含むサブブロックをアフィンサブブロックとして設定してもよい。以下、特定位置のサンプルはアフィン参照サンプルと称される。また、左下制御点を決定するためのアフィンサブブロックの参照サンプルは左下参照サンプルと称され、右下制御点を決定するためのアフィンサブブロックの参照サンプルは右下参照サンプルと称される。
【0171】
左下参照サンプル及び右下参照サンプルはアフィン隣接ブロックに含まれる複数のサンプルから選ばれたものであってもよい。例えば、左下サブブロックの左上サンプル、左下サンプル、右上サンプル又は左下サンプルのうちの少なくとも1つを左下参照サンプルとして設定してもよく、右下サブブロックの左上サンプル、左下サンプル、右上サンプル又は左下サンプルのうちの少なくとも1つを右下参照サンプルとして設定してもよい。従って、それぞれ左下参照サンプルを含む左下サブブロック及び右下参照サンプルを含む右下サブブロックの運動ベクトルを、左下制御点に関連するアフィンシードベクトル及び右下制御点に関連するアフィンシードベクトルとして設定してもよい。
【0172】
他の例として、左下参照サンプル又は右下参照サンプルのうちの少なくとも1つをアフィン隣接ブロックの外に位置するサンプルとして設定してもよい。これについて、図14図16を参照しながら詳しく説明する。
【0173】
図14図16は参照サンプルの位置を示す図である。
【0174】
図14(a)部分に示される例では、左下制御点に対して、左下サブブロックの左上サンプルを参照サンプル(xn4,yn4)として設定してもよい。従って、参照サンプル(xn4,yn4)を含む左下サブブロックを左下制御点に関連するアフィンサブブロックとして設定してもよい。
【0175】
右下制御点に対して、右下サブブロックの右上サンプルの右側に位置するサンプルを参照サンプル(xn5,yn5)として設定してもよい。従って、参照サンプル(xn5,yn5)を含む右下サブブロックの右側に隣接するサブブロックを右下制御点に関連するアフィンサブブロックとして設定してもよい。
【0176】
代替的に、図14(b)部分に示される例では、左下制御点に対して、左下サブブロックの左上サンプルの左側に位置するサンプルを参照サンプル(xn4,yn4)として設定してもよい。従って、参照サンプル(xn4,yn4)を含む左下サブブロックの左側に隣接するサブブロックを左下制御点に関連するアフィンサブブロックとして設定してもよい。
【0177】
右下制御点に対して、右下サブブロックの右上サンプルを参照サンプル(xn5,yn5)として設定してもよい。従って、参照サンプル(xn5,yn5)を含む右下サブブロックを右下制御点に関連するアフィンサブブロックとして設定してもよい。
【0178】
代替的に、図15(a)部分に示される例では、左下制御点に対して、左下サブブロックの左下サンプルを参照サンプル(xn4,yn4)として設定してもよい。従って、参照サンプル(xn4,yn4)を含む左下サブブロックを左下制御点に関連するアフィンサブブロックとして設定してもよい。
【0179】
右下制御点に対して、右下サブブロックの右下サンプルの右側に位置するサンプルを参照サンプル(xn5,yn5)として設定してもよい。従って、参照サンプル(xn5,yn5)を含む右下サブブロックの右側に隣接するサブブロックを右下制御点に関連するアフィンサブブロックとして設定してもよい。
【0180】
代替的に、図15(b)部分に示される例では、左下制御点に対して、左下サブブロックの左下サンプルの左側に位置するサンプルを参照サンプル(xn4,yn4)として設定してもよい。従って、参照サンプル(xn4,yn4)を含む左下サブブロックの左側に隣接するサブブロックを左下制御点に関連するアフィンサブブロックとして設定してもよい。
【0181】
右下制御点に対して、右下サブブロックの右下サンプルを参照サンプル(xn5,yn5)として設定してもよい。従って、参照サンプル(xn5,yn5)を含む右下サブブロックを右下制御点に関連するアフィンサブブロックとして設定してもよい。
【0182】
代替的に、図16(a)部分に示される例では、左下制御点に対して、左下サブブロックの左上サンプルと左下サンプルとの間に位置するサンプル(例えば、左側中間サンプル)を参照サンプル(xn4,yn4)として設定してもよい。従って、参照サンプル(xn4,yn4)を含む左下サブブロックを左下制御点に関連するアフィンサブブロックとして設定してもよい。
【0183】
右下制御点に対して、右下サブブロックの右上サンプルと右下サンプルとの間に位置するサンプル(例えば、右側中間サンプル)の右側のサンプルを参照サンプル(xn5,yn5)として設定してもよい。従って、参照サンプル(xn5,yn5)を含む右下サブブロックの右側に隣接するサブブロックを右下制御点に関連するアフィンサブブロックとして設定してもよい。
【0184】
代替的に、図16(b)部分に示される例では、左下制御点に対して、左下サブブロックの左上サンプルと左下サンプルとの間に位置するサンプルの左側のサンプルを参照サンプル(xn4,yn4)として設定してもよい。従って、参照サンプル(xn4,yn4)を含む左下サブブロックの左側に隣接するサブブロックを左下制御点に関連するアフィンサブブロックとして設定してもよい。
【0185】
右下制御点に対して、右下サブブロックの右上サンプルと右下サンプルとの間に位置するサンプルを参照サンプル(xn5,yn5)として設定してもよい。従って、参照サンプル(xn5,yn5)を含む右下サブブロックを右下制御点に関連するアフィンサブブロックとして設定してもよい。
【0186】
等式7及び等式8に基づいて現在ブロックの複数のアフィンシードベクトルを導き出す場合、アフィン隣接ブロックの第3アフィンシードベクトルは左下制御点に関連するアフィンサブブロックの運動ベクトルで代替されてもよく、第4アフィンシードベクトルは右下制御点に関連するアフィンサブブロックの運動ベクトルで代替されてもよい。また、左下制御点の位置は左下参照サンプルの位置で代替されてもよく、右下制御点の位置は右下参照サンプルの位置で代替されてもよい。
【0187】
図14図16に説明される内容と異なり、更に参照サンプルに隣接するサンプルを含むサブブロックをアフィンサブブロックとして設定してもよい。具体的に、アフィン隣接サブブロックの外に位置するサンプルを参照サンプルとして設定してもよく、アフィン隣接ブロックに含まれるサブブロックをアフィンサブブロックとして設定してもよい。例えば、図14(a)部分に示される例では、右下サブブロックの右上サンプルの右側に位置するサンプルを参照サンプル(xn5,yn5)として設定してもよく、右下サブブロックを右下角に関連するアフィンサブブロックとして設定してもよい。代替的に、図14(b)部分に示される例では、左下サブブロックの左上サンプルの左側に位置するサンプルを参照サンプル(xn4,yn4)として設定してもよく、左下サブブロックを左下角に関連するアフィンサブブロックとして設定してもよい。
【0188】
図15及び図16に説明される実施例を同様に応用してもよい。即ち、図15(a)部分又は図16(a)部分に示される例では、右下サブブロックの右下サンプル又は右側中間サンプルの右側に位置するサンプルを参照サンプル(xn5,yn5)として設定してもよく、右下サブブロックを右下角に関連するアフィンサブブロックとして設定してもよい。代替的に、図15(b)部分又は図16(b)部分に示される例では、左下サブブロックの左下サンプル又は左側中間サンプルの左側に位置するサンプルを参照サンプル(xn4,yn4)として設定してもよく、左下サブブロックを左下角に関連するアフィンサブブロックとして設定してもよい。
【0189】
上記例では、アフィンサブブロックの運動ベクトルを使用してアフィン隣接ブロックのアフィンシードベクトルを導き出してもよい。このため、符号化/復号後のブロックに対して、サブブロック単位で運動ベクトルを記憶してもよい。
【0190】
他の例として、アフィン隣接ブロックに最小数のアフィンシードベクトルが記憶された後、記憶される複数のアフィンシードベクトルを使用してアフィンサブブロックの運動ベクトルを導き出してもよい。
【0191】
等式9及び等式10にはアフィン隣接ブロックのアフィンシードベクトルを使用してアフィンサブブロックの運動ベクトルを導き出す例を示す。
【0192】
等式9
【数9】
【0193】
等式10
【数10】
【0194】
等式9及び等式10では、(nv4x,nv4y)が左下制御点に関連するアフィンサブブロックの運動ベクトルを示し、(nv5x,nv5y)が右下制御点に関連するアフィンサブブロックの運動ベクトルを示す。アフィンサブブロックの運動ベクトルと制御点のアフィンシードベクトルとが同じであるように設定されるため、(nv4x,nv4y)は左下制御点に関連するアフィンシードベクトル(nv2x,nv2y)で代替されてもよく、又は(nv5x,nv5y)は右下制御点に関連するアフィンシードベクトル(nv3x,nv3y)で代替されてもよい。
【0195】
(xn4,yn4)が左下サブブロックの参照サンプルの位置を示す。代替的に、更に左下サブブロックの中心位置又は左下制御点の位置で該位置を代替してもよい。(xn5,yn5)が右下サブブロックの参照サンプルの位置を示す。代替的に、更に右下サブブロックの中心位置又は右下制御点の位置で該位置を代替してもよい。
【0196】
現在ブロックが符号化木ユニットの境界に接触しない場合、等式9及び等式10を応用してもよい。現在ブロックが符号化木ユニットの上境界に接触する場合、等式9及び等式10を使用する代わりに、左下参照サンプルに基づいて決定したアフィンサブブロックの並進運動ベクトルを第3アフィンシードベクトルとして設定してもよく、右下参照サンプルに基づいて決定したアフィンサブブロックの並進運動ベクトルを第4アフィンシードベクトルとして設定してもよい。
【0197】
等式7及び等式8では、(xn3-xn2)が左下制御点と右下制御点との間の幅を示す。以上のように、xn3は右下参照サンプルの位置xn5で代替されてもよく、xn2は左下参照サンプルの位置xn4で代替されてもよい。以下、(xn3-xn2)又は参照サンプルの位置で上記等式の位置を代替して取得した値(例えば、(xn5-xn4))を変数Wseedとして定義し、前記変数はサブシードベクトル幅と称される。
【0198】
参照サンプルの位置によって、サブシードベクトル幅が2の冪級数(例えば、2n)ではない場合がある。例えば、左下サブブロックの左下サンプルを左下参照サンプルとして設定して右下サブブロックの右下サンプルを右下参照サンプルとして設定する場合、サブシードベクトルの幅が2の倍数ではない。以上のように、サブシードベクトル幅が2の冪級数ではない場合、サブシードベクトル幅を2の冪級数に変換してもよい。前記変換はサブシードベクトル幅にオフセット量を加え、又はサブシードベクトル幅からオフセット量を引き、又は前記参照サンプルに隣接するサンプルの位置で参照サンプルの位置を代替することを含んでもよい。例えば、左下参照サンプルと右下参照サンプルとの間の幅に1を加えることにより、変換されたサブシードベクトル幅を導き出してもよい。代替的に、右下参照サンプルの右側に隣接する隣接参照サンプルと左下参照サンプルとの間の幅を変換されたサブシードベクトル幅として設定してもよい。その後、変換されたサブシードベクトル幅を等式7及び等式8に代入して現在ブロックのアフィンシードベクトルを導き出してもよい。
【0199】
更に等式7及び等式8に含まれる除算演算をシフト操作に変更してもよい。シフト操作は変換後のサブシードベクトル幅(即ち、2の冪級数として示される値)により導き出した値に基づいて実行されてもよい。
【0200】
アフィンサブブロックを決定するための参照サンプルはアフィン隣接ブロックに属しない場合、アフィン隣接ブロックに含まれる複数のサンプルのうちの参照サンプルに隣接するサンプルに基づいてアフィン隣接ブロックのアフィンシードベクトルを導き出してもよい。具体的に、アフィン隣接ブロックにおける参照サンプルに隣接するサンプル(以下、隣接参照サンプルと称される)を含むサブブロックの並進運動ベクトルをアフィン隣接ブロックのアフィンシードベクトルとして設定してもよい。以上のように、隣接参照サンプルを使用してアフィンシードベクトルを導き出す方法は修正されたアフィンマージベクトルの導き出し方法として定義されてもよい。
【0201】
図17は修正されたアフィンマージベクトルの導き出し方法の応用例を示す図である。
【0202】
アフィン隣接ブロックEの右下参照サンプル(xn5,yn5)がアフィン隣接ブロックに属しない場合、アフィン隣接ブロックに含まれるサンプルのうちの右下参照サンプルの左側に隣接するサンプル(xn5-1,yn5)に基づいてアフィンシードベクトルを導き出してもよい。具体的に、隣接参照サンプル(xn5-1,yn5)を含むサブブロックの並進運動ベクトルは右下制御点のアフィンシードベクトルとして設定されてもよい。
【0203】
図17に示される例では、右下サブブロックの右上サンプルの右側に隣接するサンプルは右下参照サンプルとして示される。右下サブブロックの右下サンプルの右側に隣接するサンプル又は右下サブブロックの右側中間サンプルの右側に隣接するサンプルが右下参照サンプルとして設定される場合、隣接参照サンプルの左側に隣接するサンプルに基づいてアフィンシードベクトルを導き出してもよい。
【0204】
また、左下参照サンプルがアフィン隣接ブロックに属しない場合、説明される実施例に応じて左下参照サンプルの右側に隣接するサンプルに基づいてアフィンシードベクトルを導き出してもよい。
【0205】
異なる方式で参照サンプルの位置及びアフィンシードベクトルを導き出すためのサブブロックを設定することにより、サブシードベクトル幅を2の冪級数として設定してもよい。
【0206】
代替的に、左下サブブロック及び右下サブブロックの運動ベクトルを使用できる場合、隣接ブロックの幅に基づいて複数のアフィンシードベクトルを導き出してもよい。
【0207】
図18は隣接ブロックに属する複数のサブブロックの複数の運動ベクトルに基づいてアフィンマージ候補のアフィンシードベクトルを導き出す例を示す図である。
【0208】
現在ブロックの上境界が符号化木ユニットの境界に接触する場合、現在ブロックの上方に位置する上側隣接ブロックの左下サブブロック及び右下サブブロックの運動ベクトルに基づいてアフィンマージ候補のアフィンシードベクトルを導き出してもよい。上側隣接ブロックの左上サンプルの位置が(xNb,yNb)であり、上側隣接ブロックの幅及び高さがそれぞれNbW及びNbHであると仮定すれば、左下サブブロックは(xNb,yNb+yNbH-1)位置上のサンプルを含んでもよく、右下サブブロックは(xNb+NbW-1,yNb+NbH-1)位置上のサンプルを含んでもよい。
【0209】
隣接ブロックの幅及び隣接ブロックと現在ブロックとの座標差に基づいてアフィンマージ候補の複数のアフィンシードベクトルを導き出してもよい。例えば、下記等式11~等式13に基づいてアフィンマージ候補の複数のアフィンシードベクトルを導き出してもよい。
【0210】
等式11
【数11】
【0211】
等式12
【数12】
【0212】
等式13
【数13】
【0213】
前記等式11~13では、(v0x,v0y)が第1アフィンシードベクトルを示し、(v1x,v1y)が第2アフィンシードベクトルを示し、(v2x,v2y)が第3アフィンシードベクトルを示す。Vlbxが左下サブブロックの水平成分運動ベクトルを示し、Vlbyが左下サブブロックの垂直成分運動ベクトルを示す。Vrbxが右下サブブロックの水平成分運動ベクトルを示し、Vrbyが右下サブブロックの垂直成分運動ベクトルを示す。NbWが隣接ブロックの幅を示し、xCbW及びxCbHがそれぞれ現在ブロックの幅及び高さを示す。xCbが現在ブロックの左上サンプルのx座標を示し、xNbが隣接ブロックの左上サンプルのx座標を示す。
【0214】
更に第1隣接ブロックから導き出した複数のアフィンシードベクトルと第2隣接ブロックの運動ベクトルを組み合わせてアフィンマージ候補を生成してもよい。例えば、図18に示される例では、左下サブブロック及び右下サブブロックの運動ベクトルに基づいてアフィンマージ候補の第3アフィンシードベクトルを導き出す代わりに、更に現在ブロックの左側に位置するサブブロックの運動ベクトルに基づいてアフィンマージ候補の第3アフィンシードベクトルを導き出してもよい。
【0215】
図19は現在ブロックの左側に位置する複数のサブブロックの運動ベクトルに基づいてアフィンマージ候補のアフィンシードベクトルを導き出す例を示す図である。
【0216】
現在ブロックの上方に位置する上側隣接ブロックの左下サブブロック及び右下サブブロックの運動ベクトルに基づいて、アフィンマージ候補のアフィンシードベクトルを導き出してもよい。具体的に、左下サブブロック及び右下サブブロックの運動ベクトルに基づいてアフィンマージ候補の第1アフィンシードベクトル及び第2アフィンシードベクトルを導き出してもよい。例えば、等式11及び等式12に基づいてアフィンマージ候補の第1アフィンシードベクトル及び第2アフィンシードベクトルを導き出してもよい。
【0217】
現在ブロックの左側に位置する隣接ブロックの運動ベクトルに基づいてアフィンマージ候補の第3アフィンシードベクトルを導き出してもよい。例えば、現在ブロックの左側に隣接する隣接ブロック又は現在ブロックの左下角に隣接する隣接ブロックの運動ベクトルを第3アフィンシードベクトルとして設定してもよい。現在ブロックの左側に隣接する隣接ブロックは(xCb-1,yCb+CbH-1)位置上のサンプルを含んでもよく、現在ブロックの左下角に隣接する隣接ブロックは(xCb-1,yCb+CbH)位置上のサンプルを含んでもよい。等式14及び等式15には現在ブロックの左側に位置する隣接ブロックの運動ベクトルを第3アフィンシードベクトルとして設定する例を示す。
【0218】
等式14
【数14】
【0219】
等式15
【数15】
【0220】
等式14では、VLeftxが現在ブロックの左側に隣接する隣接ブロックの水平方向運動ベクトルを示し、VLeftyが現在ブロックの左側に隣接する隣接ブロックの垂直方向運動ベクトルを示す。等式15では、VLBxが現在ブロックの左下角に隣接する隣接ブロックの水平方向運動ベクトルを示し、VLByが現在ブロックの左下角に隣接する隣接ブロックの垂直方向運動ベクトルを示す。
【0221】
現在ブロックの左側に隣接する隣接ブロックの運動ベクトルが利用不可能である場合のみ、現在ブロックの左下角に隣接する隣接ブロックの運動ベクトルを使用して第3アフィンシードベクトルを導き出すことができる。
【0222】
更に、現在ブロックの左側に位置する隣接ブロックの運動ベクトルが利用可能であるかどうかによって、異なるアフィンマージ候補の第3アフィンシードベクトルの導き出し方法を設定してもよい。例えば、現在ブロックの左側に位置する隣接ブロック(例えば、現在ブロックの左側に隣接するサブブロック又は現在ブロックの左下角に隣接するサブブロック)の運動ベクトルが利用可能である場合、等式14又は等式15を使用して第3アフィンシードベクトルを導き出すことができる。一方、現在ブロックの左側に位置する隣接ブロックの運動ベクトルが利用不可能である場合、等式13を使用して第3アフィンシードベクトルを導き出すことができる。
【0223】
更に参照サンプルにおける現在ブロックに隣接しない非隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出してもよい。第3アフィンシードベクトルを導き出すために、アフィンマージ候補を導き出す際に使用される上側隣接ブロックの位置に基づいて、参照サンプルにおける現在ブロックに隣接する隣接ブロックの運動ベクトルを使用するかそれとも参照サンプルにおける現在ブロックに隣接しない非隣接ブロックの運動ベクトルを使用するかを決定してもよい。
【0224】
図20は現在ブロックの左側に位置する非隣接ブロック又は隣接ブロックの運動情報に基づいてアフィンマージ候補のアフィンシードベクトルを導き出す例を示す図である。
【0225】
アフィンマージ候補を導き出すための上側隣接ブロックの左上サンプルの位置と現在ブロックの左上サンプルの位置とを比較することにより、第3アフィンシードベクトルを導き出すためのブロックの位置を決定してもよい。例えば、図20(a)部分に示される例では、上側隣接ブロックの左上サンプルのx座標(xNb)が現在ブロックの左上サンプルのx座標(xCb)より小さい場合、現在ブロックの左側に隣接しない非隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出してもよい。具体的に、上側隣接ブロックの左上サンプルと同じx座標を有するサンプル(xNb,yCb+CbH-1)を含む左側非隣接ブロック又は(xNb,yCb+CbH)位置上のサンプルを含む左下非隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出してもよい。等式16及び等式17には非隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出す例を示す。
【0226】
等式16
【数16】
【0227】
等式17
【数17】
【0228】
等式16では、VLeft2xが左側非隣接ブロックの水平方向運動ベクトルを示し、VLeft2yが左側非隣接ブロックの垂直方向運動ベクトルを示す。等式17では、VLB2xが左下非隣接ブロックの水平方向運動ベクトルを示し、VLB2yが左下非隣接ブロックの垂直方向運動ベクトルを示す。
【0229】
左側非隣接ブロックの運動ベクトルが利用不可能である場合のみ、左下非隣接ブロックの運動ベクトルを使用して第3アフィンシードベクトルを導き出すことができる。
【0230】
図20(b)部分に示される例では、上側隣接ブロックの左上サンプルのx座標(xNb)が現在ブロックの左上サンプルのx座標(xCb)と同じであり、又は上側隣接ブロックの左上サンプルのx座標(xNb)が現在ブロックの左上サンプルのx座標(xCb)より大きい場合、現在ブロックの左側又は左下角に隣接する隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出してもよい。具体的に、現在ブロックの左側に隣接するサンプル(xCb,yCb+CbH-1)を含む左側隣接ブロック又は現在ブロックの左下角に隣接するサンプル(xCb,yCb+CbH)位置上のサンプルを含む左下隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出してもよい。
【0231】
更に、図18図20に示されるのと異なる方式で左側隣接ブロック又は左側非隣接ブロックの参照サンプルの位置を設定してもよい。例えば、現在ブロックに隣接するサンプル(xCb-1,yCb+subH-1)を含むブロックを左側隣接ブロックとして設定してもよく、現在ブロックに隣接しないサンプル(xNb,yCb+subH-1)を含むブロックを左側非隣接ブロックとして設定してもよい。subHは運動情報を記憶するブロックの最小高さを示し、2、4又は8等の整数であってもよい。
【0232】
図21はアフィンマージ候補のアフィンシードベクトルを導き出すためのブロックの位置を示す図である。
【0233】
例えば、図21(a)部分に示される例では、上側隣接ブロックの左上サンプルのx座標(xNb)が現在ブロックの左上サンプルのx座標(xCb)より小さい場合、現在ブロックの左側に隣接しない非隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出してもよい。具体的に、上側隣接ブロックの左上サンプルと同じx座標を有する、上側隣接ブロックの左下サンプルから所定距離(例えば、subH)離れるサンプル(xNb,yCb+subH-1)を含む左側非隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出してもよい。等式18には非隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出す例を示す。
【0234】
等式18
【数18】
【0235】
等式18では、VLeftT2xが上側隣接ブロックの左下サンプルから所定距離離れるサンプルを含む左側非隣接ブロックの水平方向運動ベクトルを示す。VLeftT2yが上側隣接ブロックの左下サンプルから所定距離離れるサンプルを含む左側非隣接ブロックの垂直方向運動ベクトルを示す。
【0236】
代替的に、図21(b)部分に示される例では、上側隣接ブロックの左上サンプルのx座標(xNb)が現在ブロックの左上サンプルのx座標(xCb)と同じであり、又は上側隣接ブロックの左上サンプルのx座標(xNb)が現在ブロックの左上サンプルのx座標(xCb)より大きい場合、現在ブロックの左側に隣接する、現在ブロックの左上サンプルから垂直方向に沿って所定距離(例えば、subH-1)離れるサンプル(xCb-1,yCb+subH-1)を含む左側隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出してもよい。等式19には隣接ブロックの運動ベクトルに基づいて第3アフィンシードベクトルを導き出す例を示す。
【0237】
等式19
【数19】
【0238】
等式19では、VLeftTxが現在ブロックの左側に隣接し且つ現在ブロックの左上サンプルから垂直方向に沿って所定距離離れるサンプルを含む左側隣接ブロックの水平方向運動ベクトルを示す。VLeftTyが現在ブロックの左側に隣接し且つ現在ブロックの左上サンプルから垂直方向に沿って所定距離離れるサンプルを含む左側隣接ブロックの垂直方向運動ベクトルを示す。
【0239】
代替的に、参照サンプルを図18図21に示される位置と異なる位置に設定してもよい。例えば、現在ブロックの左側に隣接し且つ現在ブロックの左上サンプルと同じy座標を有するサンプル(xCb-1,yCb)又は現在ブロックの左側に隣接せず且つ現在ブロックの左上サンプルと同じy座標を有するサンプル(xNb,yCb)を参照サンプルとして設定してもよい。
【0240】
説明される例では、現在ブロックの上方に位置する隣接ブロックからアフィンマージ候補の第1アフィンシードベクトル及び第2アフィンシードベクトルを導き出してもよく、現在ブロックの左側に位置する隣接ブロックからアフィンマージ候補の第3アフィンシードベクトルを導き出してもよい。現在ブロックの左側に位置する隣接ブロックからアフィンマージ候補の第1アフィンシードベクトル及び第3アフィンシードベクトルを導き出してもよく、現在ブロックの上方に位置する隣接ブロックからアフィンマージ候補の第2アフィンシードベクトルを導き出してもよい。
【0241】
等式11~等式13に示される例では、上側隣接ブロックの左下サブブロックの運動ベクトルVLBと右下サブブロックの運動ベクトルVRBとの差分に基づいてアフィンマージ候補のアフィンシードベクトルを導き出してもよい。このような場合、左下サブブロックの運動ベクトル又は右下サブブロックの運動ベクトルの代わりに、他のブロックの運動ベクトルを使用してアフィンマージ候補のアフィンシードベクトルを導き出してもよい。例えば、上側隣接ブロックの左下サブブロックの運動ベクトルVLB及び右下サブブロックの運動ベクトルVRBの値が同じである場合、右下サブブロックの右側又は下方に位置するサンプルのブロックの運動ベクトルでVRBを代替してもよい。例えば、右下サブブロックの運動ベクトルVRBの代わりに、(xNb+NbW,yNb+NbH-1)位置上のサンプルを含むブロックの運動ベクトルを使用してアフィンマージ候補の運動ベクトルを導き出してもよい。
【0242】
代替的に、上側隣接ブロックの左下サブブロックの運動ベクトルVLB及び右下サブブロックの運動ベクトルVRBの値が同じである場合、左下サブブロックの左側又は下方に位置するサンプルを含むブロックの運動ベクトルでVLBを代替してもよい。例えば、左下サブブロックの運動ベクトルVLBの代わりに、(xNb,yNb+NbH-1+offset)位置上のサンプルを含むブロックの運動ベクトルを使用してアフィンマージ候補の運動ベクトルを導き出してもよい。オフセット量は1以上の整数であってもよい。
【0243】
代替的に、左下サブブロックの左側又は下方に位置するサンプルを含むブロックの運動ベクトルでVRBを代替してもよく、又は右下サブブロックの右側又は下方に位置するサンプルを含むブロックの運動ベクトルでVLBを代替してもよい。
【0244】
更に現在ブロックに隣接する複数の隣接ブロックの複数の運動ベクトルを組み合わせてマージ候補を導き出してもよい。複数の隣接ブロックの複数の運動ベクトルが組み合わせられてなるマージ候補は組合せマージ候補と称されてもよい。組合せマージ候補を導き出す場合、制御点に隣接する複数の隣接ブロックのうちの1つの隣接ブロックから制御点のアフィンシードベクトルを導き出してもよい。
【0245】
図22は複数の隣接ブロックの複数の運動ベクトルを組み合わせて組合せマージ候補を導き出す例を説明するための図である。
【0246】
隣接ブロックは現在ブロックの上方に位置する上側隣接ブロックと、現在ブロックの左側に位置する左側隣接ブロックとを含んでもよい。上側隣接ブロックは、(xCb+CbW,yCb-1)位置上のサンプルを含むブロックB0、(xCb+CbW-1,yCb-1)位置上のサンプルを含むブロックB1、(xCb-1,yCb-1)位置上のサンプルを含むブロックB2、又は(xCb,yCb-1)位置上のサンプルを含むブロックB3のうちの少なくとも1つであってもよい。(xCb,yCb)が現在ブロックの左上サンプルの位置を示し、CbWが現在ブロックの幅を示す。左側隣接ブロックは、(xCb-1,yCb+CbH)位置上のサンプルを含むブロックA0、(xCb-1,yCb+CbH-1)位置上のサンプルを含むブロックA1、又は(xCb-1,yCb)位置のサンプルを含むブロックA2のうちの少なくとも1つであってもよい。CbHが現在ブロックの高さを示す。
【0247】
また、隣接ブロックは更に現在ブロックの時間隣接ブロックを含んでもよい。
【0248】
隣接ブロックのうちの2つ以上の隣接ブロックの運動情報を組み合わせて組合せマージ候補を導き出してもよい。2つ又は3つの隣接ブロックの運動情報を組み合わせて組合せマージ候補を導き出してもよい。具体的に、組合せマージ候補は更に第1制御点に隣接する隣接ブロックの運動情報、第2制御点に隣接する隣接ブロックの運動情報又は第3制御点に隣接する隣接ブロックの運動情報のうちの2つ以上を組み合わせることにより導き出されてもよい。
【0249】
例えば、左上制御点CP0に隣接する隣接ブロックA2、B2又はB3、右上制御点CP1に隣接する隣接ブロックB1又はB0、又は左下制御点CP2に関連する時間隣接ブロックTのうちの2つ以上の隣接ブロックの運動ベクトルを組み合わせて組合せマージ候補を導き出してもよい。
【0250】
このような場合、予め定義された走査順序に従って制御点に隣接する複数の隣接ブロックを走査する場合、先に検索された利用可能な隣接ブロックの運動ベクトルを前記制御点のアフィンシードベクトルとして設定してもよい。例えば、CP0に関連する組合せマージ候補の第1アフィンシードベクトルを、B2、B3及びA2の順序に従って複数の隣接ブロックを検索する際に先に検索された利用可能な隣接ブロックの運動ベクトルとして設定してもよい。CP1に関連する組合せマージ候補の第2アフィンシードベクトルを、B1及びB0の順序に従って複数の隣接ブロックを検索する際に先に検索された利用可能な隣接ブロックの運動ベクトルとして設定してもよい。CP2に関連する組合せマージ候補の第3アフィンシードベクトルを、A1及びA0の順序に従って複数の隣接ブロックを検索する際に先に検索された利用可能な隣接ブロックの運動ベクトルとして設定してもよい。
【0251】
組合せマージ候補を導き出す場合、アフィン運動モデルで符号化された隣接ブロック又はアフィンマージ候補により導き出された隣接ブロックは使用できないように設定されてもよい。
【0252】
図23は隣接ブロックが使用できないことを示す図である。
【0253】
現在ブロックの上方に位置する隣接ブロックB1からアフィンマージ候補を導き出すとき、隣接ブロックB1が組合せマージ候補を導き出すために使用できないことを決定できる。従って、CP1に関連する組合せマージ候補のアフィンシードベクトルを導き出すとき、B1の運動ベクトルを使用しない可能性がある。
【0254】
代替的に、アフィン運動モデルで隣接ブロックを符号化するとき、参照サンプルを含むサブブロックのアフィンベクトルに基づいて組合せマージ候補を導き出してもよい。例えば、アフィン運動モデルでB1位置上のサンプルを含む隣接ブロックを符号化する場合、前記隣接ブロックのB1位置上のサンプルを含むサブブロックのアフィンベクトルを使用して組合せマージ候補を導き出してもよい。
【0255】
代替的に、アフィン運動モデルで隣接ブロックを符号化するかどうか又はアフィンマージ候補によって隣接ブロックを導き出すかどうかを考慮した上で、走査順序を決定してもよい。例えば、アフィン運動モデルで符号化された隣接ブロック又はアフィンマージ候補により導き出された隣接ブロックの走査順序を最後に設定してもよい。例えば、アフィン運動モデルによりB1位置上の隣接ブロックを符号化するとき、B0及びB1の順序に従って複数の隣接ブロックを検索することにより、CP2に関連する組合せマージ候補の第2アフィンシードベクトルを導き出してもよい。
【0256】
複数の隣接ブロックの間の参照ピクチャインデックスが異なる場合、インデックスの最も小さい参照ピクチャ又はインデックスの最も大きい参照ピクチャに基づいて運動ベクトルを拡大縮小してもよい。参照ピクチャと現ピクチャとの出力順序(POC、Picture Order Count)差分に基づいて前記拡大縮小を実行してもよい。
【0257】
代替的に、複数の隣接ブロックのうちの参照ピクチャインデックスと同じ隣接ブロックのみを使用して複数の隣接ブロックの組合せを実行してもよい。例えば、複数の隣接ブロックのうちの少なくとも1つの参照ピクチャインデックスが異なる場合、組合せを、組合せマージ候補として使用できないように設定してもよい。また、隣接ブロックの運動情報又は運動ベクトルと同じであるかどうかにかかわらず、組合せの利用可能性を決定できる。例えば、複数の隣接ブロックの運動ベクトル(例えば、CP0アフィンシードベクトル及びCP1アフィンシードベクトル)が同じである場合、参照ピクチャインデックスと同じ複数の隣接ブロックを組み合わせて組合せマージ候補を導き出してもよい。代替的に、複数の隣接ブロックの参照ピクチャインデックスを考慮した上で、複数の隣接ブロックの走査順序を決定してもよい。代替的に、複数の隣接ブロックのうちの予測方向が同じ複数の隣接ブロックのみを使用して前記組合せを実行してもよい。
【0258】
設定された組合せ順序に従ってマージ候補を生成してもよい。例えば、組合せ順序を、
1.{CP0アフィンシードベクトル、CP1アフィンシードベクトル、CP2アフィンシードベクトル}
2.{CP0アフィンシードベクトル、CP1アフィンシードベクトル、CP3アフィンシードベクトル}
3.{CP0アフィンシードベクトル、CP2アフィンシードベクトル、CP3アフィンシードベクトル}
4.{CP1アフィンシードベクトル、CP2アフィンシードベクトル、CP3アフィンシードベクトル}
5.{CP0アフィンシードベクトル、CP1アフィンシードベクトル}
6.{CP0アフィンシードベクトル、CP2アフィンシードベクトル}に設定してもよい。
【0259】
6つの組合せ例を示したが、この数より少なく又は多い数の組合せ例を使用してもよい。
【0260】
3つのアフィンシードベクトルを組み合わせて生成した組合せマージ候補は6パラメータセットマージ候補と称されてもよく、2つのアフィンシードベクトルを組み合わせて生成した組合せマージ候補は4パラメータセットマージ候補と称されてもよい。
【0261】
組合せ順序はエンコーダ及びデコーダにおいて予め定義されてもよい。代替的に、現在ブロックのサイズ、形状、分割タイプ、アフィン運動モデル、符号化木ユニットにおける現在ブロックの位置又は参照ピクチャの出力順序のうちの少なくとも1つに基づいて組合せ順序を決定してもよい。例えば、現在ブロックに対して4パラメータアフィン運動モデルを応用する場合、4パラメータセットマージ候補に使用される複数の組合せ例は6パラメータセットマージ候補に使用される複数の組合せ例より高い優先度を有するように設定されてもよい。
【0262】
組合せ順序に従って組合せマージ候補を生成してもよいが、参照ピクチャが同じ複数の隣接ブロックのみを組み合わせて生成したマージ候補しか使用できないことを決定できる。代替的に、複数の隣接ブロックのうちの少なくとも1つの参照ピクチャが異なる場合、インデックスの最も大きい参照ピクチャ又はインデックスの最も小さい参照ピクチャに基づいて運動ベクトルを拡大縮小することにより、マージ候補を導き出してもよい。現ピクチャと参照ピクチャとの出力順序の相違によって前記拡大縮小を実行してもよい。代替的に、複数の隣接ブロックにおける2つの参照ピクチャが同じであるが他の参照ピクチャが異なる場合、共同で2つの隣接ブロックに応用される参照ピクチャに基づいて他の隣接ブロックの運動ベクトルを拡大縮小することにより、組合せマージ候補を導き出してもよい。
【0263】
マージ候補リストに含まれるマージ候補の数又はマージ候補の最大数のうちの少なくとも1つに基づいて、マージ候補リストに追加した組合せマージ候補の数を決定してもよい。代替的に、現在ブロックのアフィン運動モデルに基づいて、6パラメータセットマージ候補のみをマージ候補リストに追加してもよく、又は4パラメータセットマージ候補のみを組合せマージ候補リストに追加してもよい。
【0264】
例えば、マージ候補リストに追加しようとする組合せマージ候補の数が1であり且つ現在ブロックに対して6パラメータ運動モデルを応用する場合、設定された組合せ順序に基づく1つの6パラメータセットマージ候補をマージ候補リストに追加してもよい。具体的に、CP0アフィンシードベクトル、CP1アフィンシードベクトル及びCP2アフィンシードベクトルがいずれも利用可能である場合、組合せマージ候補{CP0アフィンシードベクトル、CP1アフィンシードベクトル、CP2アフィンシードベクトル}をマージ候補リストに追加してもよい。代替的に、CP2アフィンシードベクトルが利用不可能であり且つCP3アフィンシードベクトルが利用可能である場合、組合せマージ候補{CP0アフィンシードベクトル、CP1アフィンシードベクトル、CP3アフィンシードベクトル}をマージ候補リストに追加してもよい。
【0265】
代替的に、マージ候補リストに追加しようとする組合せマージ候補の数が1であり且つ現在ブロックに対して6パラメータ運動モデルを応用する場合、設定された組合せ順序に基づく1つの4パラメータセットマージ候補をマージ候補リストに追加してもよい。
【0266】
他の例として、現在ブロックのアフィン運動モデルに基づいて、マージ候補リストに追加しようとする複数の組合せマージ候補の数が異なるように設定してもよい。例えば、現在ブロックに対して6パラメータ運動モデルを応用する場合、1つの組合せマージ候補をマージ候補リストに追加してもよい。一方、現在ブロックに対して4パラメータ運動モデルを応用する場合、2つの組合せマージ候補をマージ候補リストに追加してもよい。
【0267】
利用可能なアフィンマージ候補の数に基づいて、マージ候補リストに追加しようとする組合せマージ候補を選択してもよい。例えば、利用可能なアフィンマージ候補の数が2つ以上である場合、4パラメータセットマージ候補のみをマージ候補リストに追加してもよい。一方、利用可能なアフィンマージ候補の数が1つ以下である場合、6パラメータセットマージ候補のみをマージ候補リストに追加してもよい。代替的に、利用可能なアフィンマージ候補の数が1つ以下である場合、N個の6パラメータセットマージ候補及びM個の4パラメータセットマージ候補をマージ候補リストに追加してもよい。NとMが整数であり、Mがマージ候補の最大数からNを引いた数値に基づいて導き出されてもよい。代替的に、利用可能なアフィンマージ候補の数が1つ以下である場合、4パラメータセットマージ候補のみをマージ候補リストに追加してもよい。
【0268】
代替的に、複数のアフィンシードベクトルの利用可能性に基づいて組合せ順序を決定してもよい。例えば、複数のアフィンシードベクトルの利用可能性を考慮した上で、
1.CP0アフィンシードベクトル、CP1アフィンシードベクトル及びCP2アフィンシードベクトルが利用可能である場合
{CP0アフィンシードベクトル、CP1アフィンシードベクトル、CP2アフィンシードベクトル}
2.CP0アフィンシードベクトル、CP1アフィンシードベクトル及びCP3アフィンシードベクトルが利用可能である場合
{CP0アフィンシードベクトル、CP1アフィンシードベクトル、CP3アフィンシードベクトル}
3.CP0アフィンシードベクトル、CP2アフィンシードベクトル及びCP3アフィンシードベクトルが利用可能である場合
{CP0アフィンシードベクトル、CP2アフィンシードベクトル、CP3アフィンシードベクトル}
4.CP0アフィンシードベクトル、CP2アフィンシードベクトル及びCP3アフィンシードベクトルが利用可能である場合
{CP1アフィンシードベクトル、CP2アフィンシードベクトル、CP3アフィンシードベクトル}
5.CP0アフィンシードベクトル及びCP1アフィンシードベクトルが利用可能である場合
{CP0アフィンシードベクトル、CP1アフィンシードベクトル}
6.CP0アフィンシードベクトル及びCP2アフィンシードベクトルが利用可能である場合
{CP0アフィンシードベクトル、CP2アフィンシードベクトル}の順序に従って組合せマージ候補をマージ候補リストに追加してもよい。
【0269】
マージ候補リストに追加できる組合せマージ候補の数が1つである場合、前記1~6の条件のうちの先に満足された条件の組合せマージ候補をマージ候補リストに追加してもよい。1~6の条件を満足しない場合、組合せマージ候補をマージ候補リストに追加しない可能性がある。
【0270】
他の例として、更に利用可能なアフィンマージ候補の数に基づいてマージ候補リストに追加できる組合せマージ候補の最大数を決定してもよい。
【0271】
マージ候補リストに含まれるマージ候補の数が最大数より小さい場合、更に運動ベクトル0のゼロマージ候補をマージ候補リストに追加してもよい。従って、アフィンマージモードにおいて、
1.アフィンマージ候補を導き出す
2.組合せマージ候補
3.ゼロマージ候補の順序に従ってマージ候補を導き出してもよい。
【0272】
次に、並進運動情報を使用するインター予測方法について詳しく説明する。
【0273】
現在ブロックの他のブロックの運動情報から現在ブロックの運動情報を導き出してもよい。他のブロックは現在ブロックの前でインター予測により符号化/復号されたブロックであってもよい。現在ブロックの運動情報が他のブロックの運動情報と同じであるように設定される場合はマージモードとして定義されてもよい。また、他のブロックの運動ベクトルが現在ブロックの運動ベクトルの予測値として設定される場合は運動ベクトル予測モードと定義されてもよい。
【0274】
図24はマージモードにおいて現在ブロックの運動情報を導き出す過程のフローチャートである。
【0275】
現在ブロックのマージ候補を導き出してもよい(S2401)。現在ブロックのマージ候補は現在ブロックの前でインター予測により符号化/復号されたブロックから導き出されてもよい。
【0276】
マージ候補を導き出すために使用される候補ブロックは隣接ブロック、即ち現在ブロックに隣接するサンプルを含んでもよい。例えば、現在ブロックの左上サンプルの座標が(0,0)である場合、(-1,H-1)位置上の参照サンプルを含むブロック、(W-1,-1)位置上の参照サンプルを含むブロック、(W,-1)位置上の参照サンプルを含むブロック、(-1,H)位置上の参照サンプルを含むブロック、又は(-1,-1)位置上の参照サンプルを含むブロックのうちの少なくとも1つは候補ブロックとして使用されてもよい。
【0277】
代替的に、現在ブロックと同じ符号化木ユニットに属しない候補ブロックはマージ候補として使用できないように設定されてもよい。例えば、参照サンプルが現在ブロックの属する符号化木ユニットの上境界を超える場合、参照サンプルを含む候補ブロックはマージ候補として使用できないように設定されてもよい。
【0278】
更に現在ブロックと異なるピクチャに含まれる時間隣接ブロックからマージ候補を導き出してもよい。例えば、更にコロケーテッドピクチャに含まれるコロケーテッドブロックからマージ候補を導き出してもよい。参照ピクチャリストに含まれる複数の参照ピクチャのうちのいずれか1つはコロケーテッドピクチャとして設定されてもよい。ビットストリームを介して信号によって複数の参照ピクチャのうちのコロケーテッドピクチャを示すためのインデックス情報を送信してもよい。代替的に、複数の参照ピクチャのうちの予め定義されたインデックスを有する参照ピクチャはコロケーテッドピクチャとして決定されてもよい。
【0279】
マージ候補の運動情報が候補ブロックの運動情報と同じであるように設定してもよい。例えば、候補ブロックの運動ベクトル、参照ピクチャインデックス、予測方向又は双方向重み付け値インデックスのうちの少なくとも1つはマージ候補の運動情報として設定されてもよい。
【0280】
マージ候補を含むマージ候補リストを生成してもよい(S2402)。
【0281】
所定順序に従ってマージ候補リストにおける複数のマージ候補のインデックスを割り当ててもよい。例えば、左側隣接ブロックから導き出したマージ候補、上側隣接ブロックから導き出したマージ候補、右上隣接ブロックから導き出したマージ候補、左下隣接ブロックから導き出したマージ候補、左上隣接ブロックから導き出したマージ候補、及び時間隣接ブロックから導き出したマージ候補の順序に従って、インデックスを割り当ててもよい。
【0282】
マージ候補リストは複数のマージ候補を含む場合、複数のマージ候補のうちの少なくとも1つを選択してもよい(S2403)。具体的に、ビットストリームを介して信号によって指定された複数のマージ候補のうちのいずれか1つを指定するための情報を送信してもよい。例えば、ビットストリームを介して信号によってマージ候補リストに含まれる複数のマージ候補のうちのいずれか1つを示すインデックスの情報merge_idxを送信してもよい。
【0283】
マージ候補リストに含まれるマージ候補の数が閾値より小さい場合、インター運動情報リストに含まれるマージ候補をマージ候補リストに追加してもよい。閾値はマージ候補リストに含まれ得るマージ候補の最大数又はマージ候補の最大数からオフセット量を引いた値であってもよい。オフセット量は1又は2等の整数であってもよい。インター運動情報リストは現在ブロックの前に符号化/復号されるブロックに基づいて導き出したマージ候補を含んでもよい。
【0284】
インター運動情報リストは現ピクチャにおけるインター予測により符号化/復号されたブロックから導き出したマージ候補を含む。例えば、インター運動情報リストに含まれるマージ候補の運動情報はインター予測により符号化/復号されたブロックの運動情報と同じであるように設定してもよい。運動情報は運動ベクトル、参照ピクチャインデックス、予測方向又は双方向重み付け値インデックスのうちの少なくとも1つを含んでもよい。
【0285】
説明の都合上、インター運動情報リストに含まれるマージ候補はインターマージ候補と称される。
【0286】
エンコーダ及びデコーダにおいてインター運動情報リストに含まれ得るマージ候補の最大数を予め定義してもよい。例えば、インター運動情報リストに含まれ得るマージ候補の最大数は1、2、3、4、5、6、7、8又はそれ以上(例えば、16)であってもよい。
【0287】
代替的に、ビットストリームを介して信号によってインター運動情報リストにおけるマージ候補の最大数を示す情報を送信してもよい。前記情報はシーケンスレベル、ピクチャレベル又はスライスレベルで信号により送信される。
【0288】
代替的に、ピクチャのサイズ、スライスのサイズ又は符号化木ユニットのサイズに基づいてインター運動情報リストにおけるマージ候補の最大数を決定してもよい。
【0289】
インター運動情報リストはピクチャ、スライス、セグメント、ブロック、符号化木ユニット又は符号化木ユニット行(行又は列)単位で初期化を実現してもよい。例えば、スライスを初期化するとき、インター運動情報リストも初期化され、インター運動情報リストはいかなるマージ候補を含まない可能性がある。
【0290】
代替的に、更にビットストリームを介して信号によってインター運動情報リストを初期化するかどうかを示す情報を送信してもよい。前記情報はスライスレベル、セグメントレベル、ブロックレベル又はブロックレベルで信号により送信されてもよい。前記情報がインター運動情報リストを初期化することを示す前に、設定されたインター運動情報リストを使用してもよい。
【0291】
代替的に、ピクチャパラメータセット又はスライスヘッダーを介して信号によってインターマージ候補に関連する情報を送信してもよい。スライスが初期化されても、インター運動情報リストも初期インターマージ候補を含んでもよい。従って、インターマージ候補をスライスにおける初めて符号化/復号されたブロックに使用してもよい。
【0292】
符号化/復号順序に従ってブロックを符号化/復号し、且つ、符号化/復号順序に従ってインター予測により符号化/復号された複数のブロックを順にインターマージ候補として設定してもよい。
【0293】
図25はインター運動情報リストの更新例を説明するための図である。
【0294】
現在ブロックに対してインター予測を実行するとき(S2501)、現在ブロックに基づいてインターマージ候補を導き出してもよい(S2502)。インターマージ候補の運動情報が現在ブロックの運動情報と同じであるように設定してもよい。
【0295】
インター運動情報リストが空である場合(S2503)、現在ブロックに基づいて導き出したインターマージ候補をインター運動情報リストに追加してもよい(S2504)。
【0296】
インター運動情報リストが前記インターマージ候補を含む場合(S2503)、現在ブロックの運動情報(又は、現在ブロックに基づいて導き出したインターマージ候補)に対して冗長検査を行ってもよい(S2505)。冗長検査はインター運動情報リストに記憶されるインターマージ候補の運動情報が現在ブロックの運動情報と同じであるかどうかを決定することに用いられる。インター運動情報リストに記憶されるすべてのインターマージ候補をオブジェクトとして冗長検査を実行してもよい。代替的に、インター運動情報リストに記憶されるインターマージ候補のうちのインデックスが閾値以上又は閾値以下であるインターマージ候補をオブジェクトとして冗長検査を実行してもよい。
【0297】
現在ブロックの運動情報と同じ運動情報を有するインターマージ候補を含まない場合、現在ブロックに基づいて導き出したインターマージ候補をインター運動情報リストに追加してもよい(S2508)。インターマージ候補の運動情報(例えば、運動ベクトル及び/又は参照ピクチャインデックス等)が同じであるかどうかによって、インターマージ候補が同じであるかどうかを決定してもよい。
【0298】
このとき、インター運動情報リストに最大数のインターマージ候補が記憶される場合(S2506)、最初のインターマージ候補を削除し(S2507)、且つ現在ブロックに基づいて導き出したインターマージ候補をインター運動情報リストに追加してもよい(S2508)。
【0299】
各インデックスに基づいて複数のインターマージ候補を識別してもよい。現在ブロックから導き出したインターマージ候補をインター運動情報リストに追加するとき、前記インターマージ候補に最小のインデックス(例えば、0)を割り当て、且つ記憶されるインターマージ候補のインデックスにそれぞれ1を増加させてもよい。このような場合、インター運動情報リストに最大数のインターマージ候補が記憶される場合、インデックスの最も大きいインターマージ候補を取り除く。
【0300】
代替的に、現在ブロックから導き出したインターマージ候補をインター運動情報リストに追加するとき、前記インターマージ候補に最大のインデックスを割り当ててもよい。例えば、インター運動情報リストに記憶されるインターマージ候補の数が最大値より小さい場合、値が記憶されるインターマージ候補の数と同じであるインデックスを前記インターマージ候補に割り当ててもよい。代替的に、インター運動情報リストに記憶されるインターマージ候補の数が最大値に等しい場合、最大値から1を引いたインデックスを前記インターマージ候補に割り当ててもよい。また、インデックスの最も小さいインターマージ候補を取り除いて、残りの記憶される複数のインターマージ候補のインデックスからそれぞれ1を引く。
【0301】
図26はインターマージ候補リストを更新する実施例を示す図である。
【0302】
現在ブロックから導き出したインターマージ候補をインターマージ候補リストに追加して、前記インターマージ候補に最大のインデックスを割り当てると仮定する。また、インターマージ候補リストに最大数のインターマージ候補が記憶されると仮定する。
【0303】
現在ブロックから導き出したインターマージ候補HmvpCand[n+1]をインターマージ候補リストHmvpCandListに追加するとき、記憶されるインターマージ候補からインデックスの最も小さいインターマージ候補HmvpCand[0]を削除して、それぞれ複数の残りのインターマージ候補のインデックスから1を引く。また、現在ブロックから導き出したインターマージ候補HmvpCand[n+1]のインデックスを最大値(図26に示される例では、n)として設定してもよい。
【0304】
現在ブロックに基づいて導き出したインターマージ候補と同じインターマージ候補が記憶される場合(S2505)、現在ブロックに基づいて導き出したインターマージ候補をインター運動情報リストに追加しない可能性がある(S2509)。
【0305】
代替的に、現在ブロックに基づいて導き出したインターマージ候補をインター運動情報リストに追加するにつれて、更に前記インターマージ候補と同じである記憶されるインターマージ候補を取り除いてもよい。このような場合、記憶されるインターマージ候補のインデックスが更新された効果を引き起こすこととなる。
【0306】
図27は予め記憶されるインターマージ候補のインデックスが更新された例を示す図である。
【0307】
現在ブロックに基づいて導き出したインターマージ候補mvCandと同じである記憶されるインターマージ候補のインデックスがhIdxである場合、前記記憶されるインターマージ候補を削除し、インデックスがhIdxより大きいインターマージ候補のインデックスからそれぞれ1を引いてもよい。例えば、図27に示される例には、mvCandと同じHmvpCand[2]がインター運動情報リストHvmpCandListから削除され、HmvpCand[3]~HmvpCand[n]のインデックスからそれぞれ1を引くことを示す。
【0308】
また、現在ブロックに基づいて導き出したインターマージ候補mvCandをインター運動情報リストの最後に追加してもよい。
【0309】
代替的に、現在ブロックに基づいて導き出したインターマージ候補と同じである記憶されるインターマージ候補に割り当てられたインデックスを更新してもよい。例えば、記憶されるインターマージ候補のインデックスを最小値又は最大値に変更してもよい。
【0310】
所定領域に含まれるブロックの運動情報がインター運動情報リストに追加できないように設定してもよい。例えば、マージ処理領域に含まれるブロックの運動情報に基づいて導き出したインターマージ候補をインター運動情報リストに追加できない。マージ処理領域に含まれるブロックの符号化/復号順序が定義されないため、これらのブロックのうちのいずれか1つの運動情報を他のブロックのインター予測に使用することは不適である。従って、マージ処理領域に含まれるブロックに基づいて導き出したインターマージ候補をインター運動情報リストに追加しなくてもよい。
【0311】
サブブロックに基づいて運動補償予測を実行する場合、現在ブロックに含まれる複数のサブブロックのうちの代表的なサブブロックの運動情報に基づいてインターマージ候補を導き出してもよい。例えば、現在ブロックに対してサブブロックマージ候補を使用する場合、サブブロックのうちの代表的なサブブロックの運動情報に基づいてインターマージ候補を導き出してもよい。
【0312】
サブブロックの運動ベクトルは以下の順序に従って導き出されてもよい。まず、現在ブロックのマージ候補リストに含まれるマージ候補のうちのいずれか1つを選択してもよく、且つ選択されたマージ候補の運動ベクトルに基づいて初期シフトベクトル(shVector)を導き出してもよい。また、符号化ブロックの各サブブロックの参照サンプル(例えば、左上サンプル又は中間位置サンプル)の位置(xSb,ySb)に初期シフトベクトルを加えることにより、参照サンプルの位置(xColSb,yColSb)のシフトサブブロックを導き出してもよい。下記等式20にはシフトサブブロックを導き出す等式を示す。
【0313】
等式20
【数20】
【0314】
次に、(xColSb,yColSb)を含むサブブロックの中心位置に対応するコロケーテッドブロックの運動ベクトルを、(xSb,ySb)を含むサブブロックの運動ベクトルとして設定する。
【0315】
代表的なサブブロックとは現在ブロックの左上サンプル又は中心サンプルを含むサブブロックを意味してもよい。
【0316】
図28は代表的なサブブロックの位置を示す図である。
【0317】
図28(a)には現在ブロックの左上に位置するサブブロックが代表的なサブブロックとして設定される例を示し、図28(b)には現在ブロックの中心に位置するサブブロックが代表的なサブブロックとして設定される例を示す。サブブロック単位で運動補償予測を実行する場合、現在ブロックの左上サンプルを含むサブブロック又は現在ブロックの中心サンプルを含むサブブロックの運動ベクトルに基づいて、現在ブロックのインターマージ候補を導き出してもよい。
【0318】
更に現在ブロックのインター予測モードに基づいて、現在ブロックをインターマージ候補として使用するかどうかを決定してもよい。例えば、アフィン運動モデルに基づいて符号化/復号されたブロックがインターマージ候補として使用できないように設定してもよい。従って、現在ブロックがインター予測により符号化/復号されても、現在ブロックのインター予測モードがアフィン予測モードである場合、現在ブロックに基づいてインター予測運動情報リストを更新することがない。
【0319】
代替的に、更にアフィン運動モデルに基づいて符号化/復号されたブロックに含まれるサブブロックのうちの少なくとも1つのサブブロックベクトルに基づいてインターマージ候補を導き出してもよい。例えば、現在ブロックの左上に位置するサブブロック、中心に位置するサブブロック又は右上に位置するサブブロックを使用してインターマージ候補を導き出してもよい。代替的に、更に複数のサブブロックのサブブロックベクトルの平均値をインターマージ候補の運動ベクトルとして設定してもよい。
【0320】
代替的に、更にアフィン運動モデルに基づいて符号化/復号されたブロックのアフィンシードベクトルの平均値に基づいてインターマージ候補を導き出してもよい。例えば、現在ブロックの第1アフィンシードベクトル、第2アフィンシードベクトル又は第3アフィンシードベクトルのうちの少なくとも1つの平均値をインターマージ候補の運動ベクトルとして設定してもよい。
【0321】
代替的に、異なるインター予測モードに対してインター運動情報リストを設定してもよい。例えば、イントラブロックコピーにより符号化/復号されるためのブロックのインター運動情報リスト、並進運動モデルに基づいて符号化/復号するためのブロックのインター運動情報リスト又はアフィン運動モデルに基づいて符号化/復号するためのブロックのインター運動情報リストのうちの少なくとも1つを定義してもよい。現在ブロックのインター予測モードに基づいて、複数のインター運動情報リストのうちのいずれか1つを選択してもよい。
【0322】
図29には異なるインター予測モードに対してインター運動情報リストを生成する例を示す。
【0323】
非アフィン運動モデルに基づいてブロックを符号化/復号する場合、前記ブロックに基づいて導き出したインターマージ候補mvCandをインター非アフィン運動情報リストHmvpCandListに追加してもよい。一方、アフィン運動モデルに基づいてブロックを符号化/復号する場合、前記ブロックに基づいて導き出したインターマージ候補mvAfCandをインターアフィン運動情報リストHmvpAfCandListに追加してもよい。
【0324】
ブロックのアフィンシードベクトルはアフィン運動モデルに基づいて符号化/復号されたブロックから導き出したインターマージ候補に記憶されてもよい。従って、前記インターマージ候補は現在ブロックのアフィンシードベクトルを導き出すためのマージ候補として使用されてもよい。
【0325】
説明されるインター運動情報リスト以外に、更に他のインター運動情報リストを定義してもよい。説明されるインター運動情報リスト(以下、第1インター運動情報リストと称される)以外に、更に長期運動情報リスト(以下、第2インター運動情報リストと称される)を定義してもよい。長期運動情報リストは長期マージ候補を含む。
【0326】
第1インター運動情報リスト及び第2インター運動情報リストがいずれも空状態にある場合、まず、インターマージ候補を第2インター運動情報リストに追加してもよい。第2インター運動情報リストにおける利用可能なインターマージ候補の数が最大数に達した後、第1インター運動情報リストにインターマージ候補を追加できる。
【0327】
代替的に、更に1つのインターマージ候補を第2インター運動情報リスト及び第1インター運動情報リストの両方に追加してもよい。
【0328】
このような場合、設定された第2インター運動情報リストを再び更新しない可能性がある。代替的に、復号領域がスライスの所定比率以上である場合、第2インター運動情報リストを更新してもよい。代替的に、N個の符号化木ユニット行おきに第2インター運動情報リストを更新してもよい。
【0329】
一方、インター予測により符号化/復号されたブロックが発生するたびに、第1インター運動情報リストを更新してもよい。しかしながら、更に第2インター運動情報リストに追加したインターマージ候補は第1インター運動情報リストの更新に使用しないように設定してもよい。
【0330】
ビットストリームを介して信号によって第1インター運動情報リスト又は第2インター運動情報リストのうちのいずれか1つを選択するための情報を送信してもよい。マージ候補リストに含まれるマージ候補の数が閾値より小さい場合、前記情報で示されるインター運動情報リストに含まれるマージ候補をマージ候補リストに追加してもよい。
【0331】
代替的に、更に現在ブロックのサイズ、形状、インター予測モード、双方向予測を行うかどうか、運動ベクトルが細分化されるかどうか又は三角形分割を行うかどうかによってインター運動情報リストを選択してもよい。
【0332】
代替的に、第1インター運動情報リストに含まれるインターマージ候補を追加しても、マージ候補リストに含まれるマージ候補の数も最大マージ数より小さい場合、第2インター運動情報リストに含まれるインターマージ候補をマージ候補リストに追加してもよい。
【0333】
図30は長期運動情報リストに含まれるインターマージ候補をマージ候補リストに追加する例を示す図である。
【0334】
マージ候補リストに含まれるマージ候補の数が最大数より小さい場合、第1インター運動情報リストHmvpCandListに含まれるインターマージ候補をマージ候補リストに追加してもよい。第1インター運動情報リストに含まれるインターマージ候補をマージ候補リストに追加しても、マージ候補リストに含まれるマージ候補の数も最大数より小さい場合、長期運動情報リストHmvpLTCandListに含まれるインターマージ候補をマージ候補リストに追加してもよい。
【0335】
表1には長期運動情報リストに含まれるインターマージ候補をマージ候補リストに追加する過程を示す。
【0336】
【表1】
【0337】
インターマージ候補は運動情報以外に、追加情報を更に含むように設定してもよい。例えば、インターマージ候補に記憶ブロックのサイズ、形状又はブロックの分割情報を追加してもよい。現在ブロックのマージ候補リストを構築する場合、インターマージ候補においてサイズ、形状又は分割情報が現在ブロックと同じ又は類似のインターマージ候補のみを使用し、又は、サイズ、形状又は分割情報が現在ブロックと同じ又は類似のインターマージ候補をマージ候補リストに優先的に追加してもよい。
【0338】
代替的に、異なるブロックサイズ、形状又は分割情報に対してインター運動情報リストを生成してもよい。複数のインター運動情報リストのうちの現在ブロックの形状、サイズ又は分割情報に対応するインター運動情報リストを使用して現在ブロックのマージ候補リストを生成してもよい。
【0339】
現在ブロックのマージ候補リストに含まれるマージ候補の数が閾値より小さい場合、インター運動情報リストに含まれるインターマージ候補をマージ候補リストに追加してもよい。前記追加過程はインデックスの昇順又は降順で実行される。例えば、インデックスの最も大きいインターマージ候補をマージ候補リストに追加してもよい。
【0340】
インター運動情報リストに含まれるインターマージ候補をマージ候補リストに追加しようとするとき、インターマージ候補及びマージ候補リストに記憶される複数のマージ候補の冗長検査を実行してもよい。
【0341】
例えば、表2にはインターマージ候補をマージ候補リストに追加する過程を示す。
【0342】
【表2】
【0343】
更にインター運動情報リストに含まれるインターマージ候補のうちのいくつかのマージ候補のみに対して冗長検査を実行してもよい。例えば、インデックスが閾値以上又は閾値以下であるインターマージ候補のみに対して冗長検査を実行してもよい。代替的に、インデックスの最も大きいN個のマージ候補又はインデックスの最も小さいN個のマージ候補のみに対して冗長検査を実行してもよい。
【0344】
代替的に、マージ候補リストに記憶されるマージ候補のうちのいくつかのみに対して冗長検査を実行してもよい。例えば、インデックスが閾値以上又は閾値以下であるマージ候補又は特定位置のブロックから導き出したマージ候補のみに対して冗長検査を実行してもよい。特定位置は現在ブロックの左側隣接ブロック、上側隣接ブロック、右上隣接ブロック又は左下隣接ブロックのうちの少なくとも1つを含んでもよい。
【0345】
図31はマージ候補のうちのいくつかのマージ候補のみに対して冗長検査を行う例を示す図である。
【0346】
インターマージ候補HmvpCand[j]をマージ候補リストに追加しようとするとき、インターマージ候補並びにインデックスの最も大きい2つのマージ候補mergeCandList[NumMerge-2]及びmergeCandList[NumMerge-1]の冗長検査を実行してもよい。NumMergeが利用可能な空間マージ候補及び時間マージ候補の数を示してもよい。
【0347】
図示の例と異なることは、インターマージ候補HmvpCand[j]をマージ候補リストに追加しようとするとき、更にインターマージ候補及びインデックスの最も小さい2つのマージ候補の冗長検査を実行してもよい。例えば、mergeCandList[0]とmergeCandList[1]がHmvpCand[j]と同じであるかどうかを確認することができる。代替的に、特定位置から導き出したマージ候補のみに対して冗長検査を実行してもよい。例えば、現在ブロックの左側に位置する隣接ブロックから導き出したマージ候補又は現在ブロックの上方に位置する隣接ブロックから導き出したマージ候補のうちの少なくとも1つのみに対して冗長検査を実行してもよい。マージ候補リストには特定位置から導き出したマージ候補がない場合、冗長検査を行わずにインターマージ候補をマージ候補リストに追加してもよい。
【0348】
第1インターマージ候補と同じマージ候補を発見する場合、第2インターマージ候補に対して冗長検査を実行するとき、前記第1インターマージ候補と同じマージ候補の冗長検査は省略してもよい。
【0349】
図32は特定のマージ候補の冗長検査を省略する例を示す図である。
【0350】
インデックスiのインターマージ候補HmvpCand[i]をマージ候補リストに追加しようとするとき、前記インターマージ候補及びマージ候補リストに記憶されるマージ候補の冗長検査を実行してもよい。このような場合、インターマージ候補HmvpCand[i]と同じマージ候補mergeCandList[j]を発見する場合、インターマージ候補HmvpCand[i]がマージ候補リストに追加されず、且つインデックスi-1のインターマージ候補HmvpCand[i-1]及びマージ候補の冗長検査を実行してもよい。このような場合、インターマージ候補HmvpCand[i-1]及びマージ候補mergeCandList[j]の冗長検査は省略してもよい。
【0351】
例えば、図32に示される例では、HmvpCand[i]がmergeCandList[2]と同じであることを決定する。従って、HmvpCand[i]がマージ候補リストに追加されず、且つHmvpCand[i-1]に対して冗長検査を実行してもよい。このような場合、HvmpCand[i-1]及びmergeCandList[2]の冗長検査は省略してもよい。
【0352】
現在ブロックのマージ候補リストに含まれるマージ候補の数が閾値より小さい場合、インターマージ候補以外に、対になったマージ候補又はゼロマージ候補のうちの少なくとも1つを更に含んでもよい。対になったマージ候補は2つ以上のマージ候補の運動ベクトルの平均値を運動ベクトルとするマージ候補を指し、ゼロマージ候補は運動ベクトル0のマージ候補を指す。
【0353】
現在ブロックのマージ候補リストは、
空間マージ候補-時間マージ候補-インターマージ候補-(インターアフィンマージ候補)-対になったマージ候補-ゼロマージ候補の順序に従ってマージ候補に追加されてもよい。
【0354】
空間マージ候補は隣接ブロック又は非隣接ブロックのうちの少なくとも1つから導き出したマージ候補を指し、時間マージ候補は前の参照ピクチャから導き出したマージ候補を指す。インターアフィンマージ候補リストはアフィン運動モデルにより符号化/復号されたブロックから導き出したインターマージ候補を指す。
【0355】
高度動きベクトル予測モードにおいて、インター運動情報リストを使用してもよい。例えば、現在ブロックの運動ベクトル予測候補リストに含まれる運動ベクトル予測候補の数が閾値より小さい場合、インター運動情報リストに含まれるインターマージ候補を現在ブロックに関連する運動ベクトル予測候補として設定する。具体的に、インターマージ候補の運動ベクトルを運動ベクトル予測候補として設定する。
【0356】
現在ブロックの運動ベクトル予測候補リストに含まれる運動ベクトル予測候補のうちのいずれか1つを選択した場合、選択された候補を現在ブロックの運動ベクトル予測値として設定する。その後、現在ブロックの運動ベクトル残余値を復号した後、運動ベクトル予測値と運動ベクトル残余値を加えることにより、現在ブロックの運動ベクトルを取得してもよい。
【0357】
現在ブロックの運動ベクトル予測候補リストは、
空間運動ベクトル予測候補-時間運動ベクトル予測候補-インター復号領域マージ候補-(インター復号領域アフィンマージ候補)-ゼロ運動ベクトル予測候補の順序に従って構築されてもよい。
【0358】
空間運動ベクトル予測候補は隣接ブロック又は非隣接ブロックのうちの少なくとも1つから導き出した運動ベクトル予測候補を指し、時間運動ベクトル予測候補は前の参照ピクチャから導き出した運動ベクトル予測候補を指す。インターアフィンマージ候補リストにはアフィン運動モデルにより符号化/復号されたブロックから導き出したインター運動ベクトル予測候補を示す。ゼロ運動ベクトル予測候補は運動ベクトルの値が0である候補を示す。
【0359】
符号化ブロックを複数の予測ユニットに分割してもよく、且つそれぞれ分割された予測ユニットに対して予測を実行してもよい。予測ユニットは予測のための基本ユニットを示す。
【0360】
垂直線、水平線、斜線又は対角線のうちの少なくとも1つを使用して符号化ブロックを分割してもよい。ビットストリームを介して信号によって符号化ブロックを分割する線の数、角度又は位置のうちの少なくとも1つを決定するための情報を送信してもよい。例えば、ビットストリームを介して信号によって符号化ブロックの分割タイプ候補のうちのいずれか1つを示す情報を送信してもよく、又は、ビットストリームを介して信号によって符号化ブロックを分割する複数の線候補のうちのいずれか1つを指定する情報を送信してもよい。代替的に、ビットストリームを介して信号によって符号化ブロックを分割する線候補の数又はタイプを決定するための情報を送信してもよい。例えば、1ビットフラグを使用して、角度が対角線より大きい斜線及び/又は角度が対角線より小さい斜線は線候補として使用できるかどうかを決定してもよい。
【0361】
代替的に、符号化ブロックのイントラ予測モード、インター予測モード、使用できるマージ候補の位置又は隣接ブロックの分割タイプのうちの少なくとも1つに基づいて、符号化ブロックを分割する線の数、角度又は位置のうちの少なくとも1つを適応的に決定してもよい。
【0362】
符号化ブロックが複数の予測ユニットに分割される場合、分割された各予測ユニットに対してイントラ予測又はインター予測を実行してもよい。
【0363】
図33は対角線を使用して符号化ブロックを複数の予測ユニットに分割する例を示す図である。
【0364】
図33(a)部分及び(b)部分に示される例では、対角線を使用して符号化ブロックを2つの三角形状の予測ユニットに分割してもよい。
【0365】
図33(a)部分及び(b)部分には、符号化ブロックの2つの頂点を接続する対角線を使用して符号化ブロックを2つの予測ユニットに分割することを示す。しかしながら、線の少なくとも1つの末端が符号化ブロックの頂点を通らない斜線を使用して符号化ブロックを2つの予測ユニットに分割してもよい。
【0366】
図34は符号化ブロックを2つの予測ユニットに分割する例を示す図である。
【0367】
図34(a)部分及び(b)部分に示される例では、両端がそれぞれ符号化ブロックの上境界及び下境界に接触する斜線を使用して符号化ブロックを2つの予測ユニットに分割してもよい。
【0368】
代替的に、図34(c)部分及び(d)部分に示される例では、両端がそれぞれ符号化ブロックの左側境界及び右側境界に接触する斜線を使用して符号化ブロックを2つの予測ユニットに分割してもよい。
【0369】
代替的に、符号化ブロックを異なるサイズの2つの予測ブロックに分割してもよい。例えば、符号化ブロックを分割する斜線が1つの頂点を形成する2つの境界面に接触するように設定することにより、符号化ブロックをサイズの異なる2つの予測ユニットに分割してもよい。
【0370】
図35は符号化ブロックを異なるサイズの複数の予測ブロックに分割する例を示す図である。
【0371】
図35(a)及び図35(b)に示される例では、符号化ブロックの左上角又は右下角で接続される対角線を、符号化ブロックの左上角又は右下角を通ることなく、符号化ブロックの左境界、右境界、上境界又は下境界を通るように設定することにより、符号化ブロックを異なるサイズの2つの予測ユニットに分割することができる。
【0372】
代替的に、図35(c)及び図35(d)に示される例では、符号化ブロックの右上角又は左下角で接続される対角線を、符号化ブロックの左上角又は右下角を通ることなく、符号化ブロックの左境界、右境界、上境界又は下境界を通るように設定することにより、符号化ブロックを異なるサイズの2つの予測ユニットに分割することができる。
【0373】
符号化ブロックを分割することにより生成された各予測ユニットは「第N予測ユニット」と称される。例えば、図33図35に示される例では、PU1は第1予測ユニットとして定義されてもよく、PU2は第2予測ユニットとして定義されてもよい。第1予測ユニットは符号化ブロックにおける左下のサンプル又は左上のサンプルを含む予測ユニットを指してもよく、第2予測ユニットは符号化ブロックにおける右上のサンプル又は右下のサンプルを含む予測ユニットを指してもよい。
【0374】
上記とは逆に、符号化ブロックにおける右上のサンプル又は右下のサンプルを含む予測ユニットは第1予測ユニットとして定義されてもよく、符号化ブロックにおける左下のサンプル又は左上のサンプルを含む予測ユニットは第2予測ユニットとして定義されてもよい。
【0375】
以下に記載される実施例は主に対角線を使用する分割例を説明する。特に、対角線を使用して符号化ブロックを2つの予測ユニットに分割する過程は対角線分割又は三角形分割と称され、対角線分割により生成された予測ユニットは三角形予測ユニットと称される。しかしながら、無論、以下に記載される実施例において垂直線、水平線又は対角線と異なる角度の斜線による分割例を使用してもよい。
【0376】
スライスタイプ、マージ候補リストに含まれ得るマージ候補の最大数、符号化ブロックのサイズ、符号化ブロックの形状、符号化ブロックの予測符号化モード又は親ノードの分割タイプのうちの少なくとも1つに基づいて、符号化ブロックに対して対角線分割を応用するかどうかを決定してもよい。
【0377】
例えば、現在スライスがBタイプであるかどうかによって、符号化ブロックに対して対角線分割を応用するかどうかを決定してもよい。現在スライスがBタイプである場合のみ、対角線分割が許容され得る。
【0378】
代替的に、マージ候補リストに含まれるマージ候補の最大数が2つ以上であるかどうかによって、符号化ブロックに対して対角線分割を応用するかどうかを決定してもよい。マージ候補リストに含まれるマージ候補の最大数が2つ以上である場合のみ、対角線分割が許容され得る。
【0379】
代替的に、ハードウェアの幅又は高さのうちの少なくとも1つが64より大きい場合、64×64サイズのデータ処理ユニットが冗長的にアクセスされてしまうこととなる。従って、符号化ブロックの幅又は高さのうちの少なくとも1つが閾値より大きい場合、符号化ブロックを複数の予測ブロックに分割することが許容されない可能性がある。例えば、符号化ブロックの高さ及び幅のうちの少なくとも1つが64より大きい場合、対角線分割を使用しない可能性がある。
【0380】
代替的に、符号化ブロックに含まれるサンプル数が第1閾値以下であるかどうか、又は符号化ブロックに含まれるサンプル数が第2閾値以上であるかどうかのうちの少なくとも1つによって、符号化ブロックに対して対角線分割を応用するかどうかを決定してもよい。例えば、符号化ブロックに含まれるサンプル数が第1閾値以下であり、又は符号化ブロックに含まれるサンプル数が第2閾値以上である場合、符号化ブロックに対して対角線分割を応用しないように設定する。代替的に、符号化ブロックの幅と高さの比が第1閾値より小さいかどうか、又は符号化ブロックの幅と高さの比が第2閾値より大きいかどうかによって、符号化ブロックに対して対角線分割を応用するかどうかを決定してもよい。符号化ブロックの幅と高さの比whRatioを符号化ブロックの幅CbWと高さCbHの比率として決定してもよく、下記等式21に示される。
【0381】
等式21
【数21】
【0382】
第2閾値は第1閾値の逆数であってもよい。例えば、第1閾値がkである場合、第2閾値は1/kであってもよい。
【0383】
符号化ブロックの幅と高さの比が第1閾値と第2閾値との間にある場合のみ、符号化ブロックに対して対角線分割を応用できる。
【0384】
代替的に、符号化ブロックの幅と高さの比が第1閾値より小さく又は第2閾値より大きい場合のみ、三角形分割を使用できる。例えば、第1閾値が16である場合、64×4又は4×64サイズの符号化ブロックに対して、対角線分割が許容されない可能性がある。
【0385】
代替的に、親ノードの分割タイプに基づいて、対角線分割が許容されるかどうかを決定してもよい。例えば、親ノードとしての符号化ブロックが4分木分割を行う場合、葉ノードとしての符号化ブロックに対して対角線分割を応用できる。一方、親ノードとしての符号化ブロックが2分木又は3分木分割によって分割される場合、葉ノードとしての符号化ブロックは対角線分割が許容されないように設定されてもよい。
【0386】
代替的に、符号化ブロックの予測符号化モードに基づいて、対角線分割が許容されるかどうかを決定してもよい。例えば、符号化ブロックがイントラ予測によって符号化される場合、符号化ブロックがインター予測によって符号化される場合又は符号化ブロックが予め定義されたインター予測モードで符号化される場合のみ、対角線分割が許容され得る。予め定義されたインター予測モードはマージモード、高度動きベクトル予測モード、アフィンマージモード又はアフィン運動ベクトル予測モードのうちの少なくとも1つを示してもよい。
【0387】
代替的に、並列処理領域のサイズに基づいて、対角線分割が許容されるかどうかを決定してもよい。例えば、符号化ブロックのサイズが並列処理領域のサイズより大きい場合、対角線分割を使用しない可能性がある。
【0388】
更に前記列挙した条件のうちの2つ以上の条件を考慮した上で、符号化ブロックに対して対角線分割を応用するかどうかを決定してもよい。
【0389】
更に、ビットストリームを介して信号によって対角線分割が許容されるかどうかを示す情報を送信してもよい。前記情報はシーケンスレベル、ピクチャレベル、スライスレベル又はブロックレベルで信号によって送信されてもよい。前記情報は対角線分割が許容されることを示し且つ前記列挙した条件のうちの少なくとも1つを満足する場合のみ、符号化ブロックに対して対角線分割を応用できる。
【0390】
符号化ブロックに対して対角線分割を応用しようとすることを決定する場合、ビットストリームを介して信号によって符号化ブロックを分割する線の数又は線の位置を示す情報を送信してもよい。
【0391】
例えば、符号化ブロックが対角線により分割される場合、ビットストリームを介して信号によって符号化ブロックを分割する対角線の方向を示す情報を送信してもよい。例えば、ビットストリームを介して信号によって対角線の方向を示すフラグtriangle_partition_type_flagを送信してもよい。前記フラグは左上と右下を接続する対角線で符号化ブロックを分割するか、それとも右上と左下を接続する対角線で符号化ブロックを分割するかを示す。左上と右下を接続する対角線で符号化ブロックを分割することは左三角形分割タイプと称されてもよいが、右上と左下を接続する対角線で符号化ブロックを分割することは右三角形分割タイプと称されてもよい。例えば、前記フラグの値が0である場合、符号化ブロックの分割タイプが左三角形分割タイプであることを示し、前記フラグの値が1である場合、符号化ブロックの分割タイプが右三角形分割タイプであることを示す。
【0392】
符号化ブロックの分割タイプを示す情報は符号化ブロックレベルで信号によって送信されてもよい。従って、対角線分割を応用する異なる符号化ブロックに対して分割タイプを決定してもよい。
【0393】
他の例として、シーケンス、ピクチャ、スライス、セグメント又は符号化木ユニットに対して、信号によって分割タイプを示す情報を送信してもよい。このような場合、対角線分割を応用する符号化ブロックの分割タイプはシーケンス、ピクチャ、スライス、セグメント又は符号化木ユニットにおいて同じであるように設定してもよい。
【0394】
代替的に、符号化木ユニットにおける対角線分割を応用する第1符号化ユニットに対して、分割タイプを決定するための情報を符号化して信号によって送信し、対角線分割を応用する2番目以後の符号化ユニットは1番目の符号化ユニットと同じ分割タイプを使用するように設定される。
【0395】
他の例として、隣接ブロックの分割タイプに基づいて、符号化ブロックの分割タイプを決定してもよい。隣接ブロックは符号化ブロックの左上角に隣接する隣接ブロック、右上角に隣接する隣接ブロック、左下角に隣接する隣接ブロック、上方に位置する隣接ブロック又は左側に位置する隣接ブロックのうちの少なくとも1つを含んでもよい。例えば、現在ブロックの分割タイプは隣接ブロックの分割タイプと同じであるように設定してもよい。代替的に、左上隣接ブロックが左三角形分割タイプを応用するかどうか、右上隣接ブロック又は左下隣接ブロックが右三角形分割タイプを応用するかどうかによって、現在ブロックの分割タイプを決定してもよい。
【0396】
第1三角形予測ユニット及び第2三角形予測ユニットに対して運動予測補償を実行するために、第1三角形予測ユニット及び第2三角形予測ユニットそれぞれの運動情報を導き出してもよい。このような場合、マージ候補リストに含まれるマージ候補から第1三角形予測ユニット及び第2三角形予測ユニットの運動情報を導き出してもよい。一般的なマージ候補リストと三角形予測ユニットの運動情報を導き出す際に使用されるマージ候補リストとを区別するために、三角形予測ユニットの運動情報を導き出すためのマージ候補リストは三角形マージ候補リストと称され、三角形マージ候補リストに含まれるマージ候補は三角形マージ候補と称される。しかしながら、上記マージ候補導き出し方法及びマージ候補リスト構築方法を三角形マージ候補及び三角形マージ候補に用いるリスト構築方法も本発明の主旨に含まれる。
【0397】
ビットストリームを介して信号によって三角形マージ候補リストに含まれ得る最大三角形マージ候補の数を決定するための情報を送信してもよい。前記情報はマージ候補リストに含まれ得るマージ候補の最大数と三角形マージ候補リストに含まれ得る最大三角形マージ候補の数との差を示してもよい。
【0398】
符号化ブロックの空間隣接ブロック及び時間隣接ブロックから三角形マージ候補を導き出してもよい。
【0399】
図36は三角形マージ候補を導き出すための隣接ブロックを示す図である。
【0400】
符号化ブロックの上方に位置する隣接ブロック、符号化ブロックの左側に位置する隣接ブロック、又は符号化ブロックと異なるピクチャに含まれるコロケーテッドブロックのうちの少なくとも1つを使用して、三角形マージ候補を導き出してもよい。上側隣接ブロックは、符号化ブロックの上方に位置するサンプル(xCb+CbW-1,yCb-1)を含むブロック、符号化ブロックの上方に位置するサンプル(xCb+CbW,yCb-1)を含むブロック、又は符号化ブロックの上方に位置するサンプル(xCb-1,yCb-1)を含むブロックのうちの少なくとも1つであってもよい。左側隣接ブロックは、符号化ブロックの左側に位置するサンプル(xCb-1,yCb+CbH-1)を含むブロック、又は符号化ブロックの左側に位置するサンプル(xCb-1,yCb+CbH)を含むブロックのうちの少なくとも1つであってもよい。コロケーテッドブロックはコロケーテッドピクチャにおける符号化ブロックの右上角に隣接するサンプル(xCb+CbW,yCb+CbH)を含むブロック、又は符号化ブロックの中心に位置するサンプル(xCb/2,yCb/2)を含むブロックのうちのいずれか1つとして決定されてもよい。
【0401】
予め定義された順序に従って隣接ブロックを検索してもよく、予め定義された順序に従って三角形マージ候補を三角形マージ候補リストに構築してもよい。例えば、B1、A1、B0、A0、C0、B2及びC1の順序に従って三角形マージ候補を検索して三角形マージ候補リストを構築してもよい。
【0402】
三角形予測ユニットの運動情報は前記三角形マージ候補リストに基づいて導き出されてもよい。即ち、三角形予測ユニットは1つの三角形マージ候補リストを共有してもよい。
【0403】
三角形マージユニットの運動情報を導き出すために、ビットストリームを介して信号によって三角形マージ候補リストに含まれる三角形マージ候補を指定するための情報のうちの少なくとも1つを送信してもよい。例えば、ビットストリームを介して信号によって三角形マージ候補を指定するためのインデックス情報merge_triangle_idxのうちの少なくとも1つを送信してもよい。
【0404】
インデックス情報は第1三角形予測ユニットのマージ候補と第2三角形予測ユニットのマージ候補との組み合わせを指定することができる。例えば、下記表3にはインデックス情報merge_triangle_idxに基づくマージ候補の組み合わせの例を示す。
【0405】
【表3】
【0406】
インデックス情報merge_triangle_idxの値が1である場合、第1三角形予測ユニットの運動情報がインデックス1のマージ候補から導き出され、第2三角形予測ユニットの運動情報がインデックス0のマージ候補から導き出されることを示す。インデックス情報merge_triangle_idxによって、第1三角形予測ユニットの運動情報を導き出すための三角形マージ候補と、第2三角形予測ユニットの運動情報を導き出すための三角形マージ候補とを決定してもよい。
【0407】
更にインデックス情報に基づいて対角線分割を応用する符号化ブロックの分割タイプを決定してもよい。即ち、インデックス情報は第1三角形予測ユニットのマージ候補、第2三角形予測ユニットのマージ候補及び符号化ブロックの分割方向の組み合わせを指定することができる。インデックス情報に基づいて符号化ブロックの分割タイプを決定する場合、符号化ブロックを分割する対角線の方向を示す情報triangle_partition_type_flagを符号化しなくてもよい。表4にはインデックス情報merge_triangle_idxに関して符号化ブロックの分割タイプを示す。
【0408】
【表4】
【0409】
変数TriangleDirが0である場合、符号化ブロックが左三角形分割タイプを応用することを示し、変数TriangleDirが1である場合、符号化ブロックが右三角形分割タイプを応用することを示す。表3と表4を組み合わせることにより、インデックス情報merge_triangle_idxに基づいて第1三角形予測ユニットのマージ候補、第2三角形予測ユニットのマージ候補及び符号化ブロックの分割方向の組み合わせを指定するように設定してもよい。
【0410】
他の例として、信号によって第1三角形予測ユニット及び第2三角形予測ユニットのうちのいずれか一方のみに使用されるインデックス情報を送信してもよく、前記インデックス情報に基づいて第1三角形予測ユニット及び第2三角形予測ユニットのうちの他方に使用される三角形マージ候補のインデックスを決定してもよい。例えば、三角形マージ候補のうちのいずれか1つのインデックスを示すインデックス情報merge_triangle_idxに基づいて第1三角形予測ユニットの三角形マージ候補を決定してもよい。また、前記merge_triangle_idxに基づいて第2三角形予測ユニットの三角形マージ候補を指定してもよい。例えば、前記インデックス情報merge_triangle_idxにオフセット量を加え、又は前記インデックス情報merge_triangle_idxからオフセット量を引くことにより、第2三角形予測ユニットの三角形マージ候補を導き出すことができる。オフセット量は1又は2等の整数であってもよい。例えば、第2三角形予測ユニットの三角形マージ候補を、merge_traingle_idxに1を加えた値をインデックスとする三角形マージ候補として決定してもよい。merge_triangle_idxが三角形マージ候補のうちのインデックス値の最も大きい三角形マージ候補を示す場合、インデックス0の三角形マージ候補又はmerge_triangle_idxから1を引いた値をインデックスとする三角形マージ候補から第2三角形予測ユニットの運動情報を導き出してもよい。
【0411】
代替的に、インデックス情報に基づいて指定された第1三角形予測ユニットの三角形マージ候補と同じ参照ピクチャを有する三角形マージ候補から第2三角形予測ユニットの運動情報を導き出してもよい。第1三角形予測ユニットの三角形マージ候補と同じ参照ピクチャを有する三角形マージ候補は第1三角形予測ユニットの三角形マージ候補と同じ三角形マージ候補を有するL0参照ピクチャ又はL1参照ピクチャのうちの少なくとも1つを示してもよい。参照ピクチャ及び第1三角形予測ユニットの三角形マージ候補と同じ三角形マージ候補が複数ある場合、マージ候補が双方向運動情報又はマージ候補のインデックスとインデックス情報との差分のうちの少なくとも1つを含むかどうかによって、いずれか1つを選択してもよい。
【0412】
他の例として、第1三角形予測ユニット及び第2三角形予測ユニットに対して、それぞれ信号によってインデックス情報を送信してもよい。例えば、ビットストリームを介して信号によって第1三角形予測ユニットの三角形マージ候補を決定するための第1インデックス情報1st_merge_idx及び第2三角形予測ユニットの三角形マージ候補を決定するための第2インデックス情報2nd_merge_idxを送信してもよい。第1インデックス情報1st_merge_idxに基づいて決定された三角形マージ候補から第1三角形予測ユニットの運動情報を導き出してもよく、第2インデックス情報2nd_merge_idxに基づいて決定された三角形マージ候補から第2三角形予測ユニットの運動情報を導き出してもよい。
【0413】
第1インデックス情報1st_merge_idxは三角形マージ候補リストに含まれる三角形マージ候補のうちのいずれか1つのインデックスを示してもよい。第1三角形予測ユニットの三角形マージ候補は第1インデックス情報1st_merge_idxが指す三角形マージ候補として決定されてもよい。
【0414】
第1インデックス情報1st_merge_idxが指す三角形マージ候補は第2三角形予測ユニットの三角形マージ候補として使用できないように設定されてもよい。従って、第2三角形予測ユニットの第2インデックス情報2nd_merge_idxは第1インデックス情報が指す三角形マージ候補以外の残りの三角形マージ候補のうちのいずれか1つのインデックスを示してもよい。第2インデックス情報2nd_merge_idxの値が第1インデックス情報1st_merge_idxの値より小さい場合、第2三角形予測ユニットの三角形マージ候補は第2インデックス情報2nd_merge_idxで示されるインデックス情報を有する三角形マージ候補として決定されてもよい。一方、第2インデックス情報2nd_merge_idxの値が同じであり又は第1インデックス情報1st_merge_idxの値より大きい場合、第2三角形予測ユニットの三角形マージ候補は第2インデックス情報2nd_merge_idxの値に1を加えた値をインデックスとする三角形マージ候補として決定されてもよい。
【0415】
代替的に、三角形マージ候補リストに含まれる三角形マージ候補の数に基づいて、信号によって第2インデックス情報を送信するかどうかを決定してもよい。例えば、三角形マージ候補リストに含まれ得る三角形マージ候補の最大数が2以下である場合、信号によって第2インデックス情報を送信することは省略してもよい。当省略用信号送信第2インデックス情報、信号によって第2インデックス情報を送信することは省略する場合、第1インデックス情報にオフセット量を加え、又は第1インデックス情報からオフセット量を引くことにより第2三角形マージ候補を導き出すことができる。例えば、三角形マージ候補リストに含まれ得る三角形マージ候補の最大数が2であり且つ第1インデックス情報がインデックス0である場合、第1インデックス情報に1を加えることにより第2三角形マージ候補を導き出すことができる。代替的に、三角形マージ候補リストに含まれ得る三角形マージ候補の最大数が2であり且つ第1インデックス情報が1である場合、第1インデックス情報から1を引くことにより第2三角形マージ候補を導き出すことができる。
【0416】
代替的に、信号によって第2インデックス情報を送信することは省略する場合、第2インデックス情報をデフォルト値として設定してもよい。デフォルト値は0であってもよい。第1インデックス情報と第2インデックス情報とを比較することにより、第2三角形マージ候補を導き出すことができる。例えば、第2インデックス情報が第1インデックス情報より小さい場合、インデックス0のマージ候補を第2三角形マージ候補として設定し、第2インデックス情報が同じであり又は第1インデックス情報より大きい場合、インデックス1のマージ候補を第2三角形マージ候補として設定する。
【0417】
三角形マージ候補が単方向運動情報を有する場合、三角形マージ候補の単方向運動情報を三角形予測ユニットの運動情報として設定する。一方、三角形マージ候補が双方向運動情報を有する場合、L0運動情報又はL1運動情報のうちのいずれか1つのみを三角形予測ユニットの運動情報として設定する。三角形マージ候補のインデックス又は他の三角形予測ユニットの運動情報に基づいてL0運動情報又はL1運動情報のうちのどれを取得するかを決定してもよい。
【0418】
例えば、三角形マージ候補のインデックスが偶数である場合、三角形予測ユニットのL0運動情報を0として設定し、三角形マージ候補のL1運動情報を三角形予測ユニットのL1運動情報として設定する。一方、三角形マージ候補のインデックスが奇数である場合、三角形予測ユニットのL1運動情報を0として設定し、三角形マージ候補のL0運動情報を0として設定する。上記とは逆に、三角形マージ候補のインデックスが偶数である場合、三角形マージ候補のL0運動情報を三角形予測ユニットのL0運動情報として設定してもよく、三角形マージ候補のインデックスが奇数である場合、三角形マージ候補のL1運動情報を三角形予測ユニットのL1運動情報として設定してもよい。代替的に、第1三角形予測ユニットに対して、三角形マージ候補が偶数である場合、三角形マージ候補のL0運動情報を第1三角形予測ユニットのL0運動情報として設定してもよい一方、第2三角形予測ユニットに対して、三角形マージ候補が奇数である場合、三角形マージ候補のL1運動情報を第2三角形予測ユニットのL1運動情報として設定してもよい。
【0419】
代替的に、第1三角形予測ユニットがL0運動情報を有する場合、第2三角形予測ユニットのL0運動情報を0として設定してもよく、三角形マージ候補のL1運動情報を第2三角形予測ユニットのL1情報として設定してもよい。一方、第1三角形予測ユニットがL1運動情報を有する場合、第2三角形予測ユニットのL1運動情報を0として設定してもよく、三角形マージ候補のL0運動情報を第2三角形予測ユニットのL0運動信号として設定してもよい。
【0420】
更に、第1三角形予測ユニットの運動情報を導き出すための三角形マージ候補リストと第2三角形予測ユニットの運動情報を導き出すための三角形マージ候補リストとが異なるように設定してもよい。
【0421】
例えば、第1三角形予測ユニットに関連するインデックス情報に基づいて三角形マージ候補リストにおける第1三角形予測ユニットの運動情報を導き出すための三角形マージ候補を指定する場合、前記インデックス情報が指す三角形マージ候補以外の残りの三角形マージ候補を含む三角形マージリストを使用して、第2三角形予測ユニットの運動情報を導き出してもよい。具体的に、残りの三角形マージ候補のうちのいずれか1つから第2三角形予測ユニットの運動情報を導き出してもよい。
【0422】
従って、第1三角形予測ユニットの三角形マージ候補リストに含まれる最大三角形マージ候補の数と第2三角形予測ユニットの三角形マージ候補リストに含まれる最大三角形マージ候補の数とが異なる。例えば、第1三角形予測ユニットの三角形マージ候補リストはM個のマージ候補を含む場合、第2三角形予測ユニットの三角形マージ候補リストは第1三角形予測ユニットのインデックス情報が指す三角形マージ候補以外のM-1個のマージ候補を含んでもよい。
【0423】
他の例として、符号化ブロックに隣接する隣接ブロックに基づいて各三角形予測ユニットのマージ候補を導き出してもよく、三角形予測ユニットの形状又は位置を考慮した上で隣接ブロックの利用可能性を決定してもよい。
【0424】
図37は各三角形予測ユニットの隣接ブロックの利用可能性を決定する例を説明するための図である。
【0425】
第1三角形予測ユニットに隣接しない隣接ブロックを第1三角形予測ユニットに利用不可能な隣接ブロックとして設定してもよく、第2三角形予測ユニットに隣接しない隣接ブロックを第2三角形予測ユニットに利用不可能な隣接ブロックとして設定してもよい。
【0426】
例えば、図37(a)に示される例では、左三角形分割タイプを符号化ブロックに応用する場合、符号化ブロックに隣接する隣接ブロックのうちの第1三角形予測ユニットに隣接するブロックA1、A0及びA2が第1三角形予測ユニットに使用できるが、ブロックB0及びB1が第1三角形予測ユニットに使用できないことを決定できる。従って、第1三角形予測ユニットに関連する三角形マージ候補リストはブロックA1、A0及びA2から導き出した三角形マージ候補を含むが、ブロックB0及びB1から導き出した三角形マージ候補を含まない。
【0427】
図37(b)に示される例では、左三角形分割タイプを符号化ブロックに応用する場合、第2三角形予測ユニットに隣接するブロックB0及びB1が第2三角形予測ユニットに使用できるが、ブロックA1、A0及びA2が第2三角形予測ユニットに使用できないことを決定できる。従って、第2三角形予測ユニットに関連する三角形マージ候補リストはブロックB0及びB1から導き出した三角形マージ候補を含むが、ブロックA1、A0及びA2から導き出した三角形マージ候補を含まない。
【0428】
従って、三角形予測ユニットの位置又は符号化ブロックの分割タイプのうちの少なくとも1つに基づいて、三角形予測ユニットが使用できる三角形マージ候補の数又は三角形マージ候補の範囲を決定してもよい。
【0429】
他の例として、マージモードのみを第1三角形予測ユニット及び第2三角形予測ユニットのうちのいずれか一方に応用できる。また、第1三角形予測ユニット及び第2三角形予測ユニットにおける他方の運動情報が前記マージモードを応用する三角形予測ユニットの運動情報と同じであるように設定してもよく、又は前記マージモードを応用する三角形予測ユニットの運動情報を細分化して導き出してもよい。
【0430】
例えば、三角形マージ候補に基づいて第1三角形予測ユニットの運動ベクトル及び参照ピクチャインデックスを導き出してもよく、第1三角形予測ユニットの運動ベクトルを細分化して第2三角形予測ユニットの運動ベクトルを導き出してもよい。例えば、第1三角形予測ユニットの運動ベクトル{mvD1LXx,mvD1LXy}に微細運動ベクトル{Rx,Ry}を加え、又は第1三角形予測ユニットの運動ベクトル{mvD1LXx,mvD1LXy}から微細運動ベクトル{Rx,Ry}を引くことにより、第2三角形予測ユニットの運動ベクトルを導き出すことができる。第2三角形予測ユニットの参照ピクチャインデックスが第1三角形予測ユニットの参照ピクチャインデックスと同じであるように設定してもよい。
【0431】
ビットストリームを介して信号によって第1三角形予測ユニットの運動ベクトルと第2三角形予測ユニットの運動ベクトルとの差分を示す微細運動ベクトルを決定するための情報を送信してもよい。前記情報は微細運動ベクトルのサイズを示す情報又は微細運動ベクトルのシンボルを示す情報のうちの少なくとも1つを含んでもよい。
【0432】
代替的に、三角形予測ユニットの位置、インデックス又は符号化ブロックに応用される分割タイプのうちの少なくとも1つに基づいて微細運動ベクトルのシンボルを導き出してもよい。
【0433】
他の例として、信号によって第1三角形予測ユニット及び第2三角形予測ユニットのうちのいずれか一方の運動ベクトル及び参照ピクチャインデックスを送信してもよい。信号により送信された前記運動ベクトルを細分化することにより、第1三角形予測ユニット及び第2三角形予測ユニットのうちの他方の運動ベクトルを導き出すことができる。
【0434】
例えば、ビットストリームから信号により送信された情報に基づいて、第1三角形予測ユニットの運動ベクトル及び参照ピクチャインデックスを決定してもよい。また、第1三角形予測ユニットの運動ベクトルを細分化することにより、第2三角形予測ユニットの運動ベクトルを導き出すことができる。例えば、第1三角形予測ユニットの運動ベクトル{mvD1LXx,mvD1LXy}に微細運動ベクトル{Rx,Ry}を加え、又は第1三角形予測ユニットの運動ベクトル{mvD1LXx,mvD1LXy}から微細運動ベクトル{Rx,Ry}を引くことにより、第2三角形予測ユニットの運動ベクトルを導き出すことができる。第2三角形予測ユニットの参照ピクチャインデックスが第1三角形予測ユニットの参照ピクチャインデックスと同じであるように設定してもよい。
【0435】
第1三角形予測ユニットの運動情報及び第2三角形予測ユニットの運動情報に基づいてそれぞれ符号化ブロックに対して運動予測・補償予測を実行してもよい。このような場合、第1三角形予測ユニット及び第2三角形予測ユニットの境界部分に画質劣化が生じる恐れがある。例えば、第1三角形予測ユニット及び第2三角形予測ユニットの境界上のエッジ(Edge)近傍に画質が連続的に悪くなることとなる。境界部分の画質劣化を減少するために、平滑化(Smoothing)フィルタリング又は重み付け予測によって予測サンプルを導き出してもよい。
【0436】
第1三角形予測ユニットの運動情報に基づいて取得した第1予測サンプル及び第2三角形予測ユニットの運動情報に基づいて取得した第2予測サンプルの重み付け及び演算によって符号化ブロックにおける対角線分割を応用する予測サンプルを導き出してもよい。代替的に、第1三角形予測ユニットの運動情報に基づいて決定した第1予測ブロックから第1三角形予測ユニットの予測サンプルを導き出し、第2三角形予測ユニットの運動情報に基づいて決定した第2予測ブロックから第2三角形予測ユニットの予測サンプルを導き出し、且つ、第1予測ブロックに含まれる第1予測サンプル及び第2予測ブロックに含まれる第2予測サンプルの重み付け及び演算によって、第1三角形予測ユニット及び第2三角形予測ユニットの境界領域に位置する予測サンプルを導き出してもよい。例えば、下記等式22には第1三角形予測ユニット及び第2三角形予測ユニットの予測サンプルを導き出す例を示す。
【0437】
等式22
【数22】
【0438】
等式22では、P1が第1予測サンプルを示し、P2が第2予測サンプルを示す。w1が第1予測サンプルに応用される重み付け値を示し、(1-w1)が第2予測サンプルに応用される重み付け値を示す。等式22に示される例では、定数から第1予測サンプルに応用される重み付け値を引くことにより、第2予測サンプルに応用される重み付け値を導き出すことができる。
【0439】
符号化ブロックに対して左三角形分割タイプを応用する場合、境界領域は同じx軸座標及びy軸座標を有する予測サンプルを含んでもよい。一方、符号化ブロックに対して右三角形分割タイプを応用する場合、境界領域はx軸座標とy軸座標との和が第1閾値以上且つ第2閾値以下である予測サンプルを含んでもよい。
【0440】
符号化ブロックのサイズ、符号化ブロックの形状、三角形予測ユニットの運動情報、三角形予測ユニットの運動ベクトル差分、参照ピクチャの出力順序又は対角境界上の第1予測サンプルと第2予測サンプルとの差分のうちの少なくとも1つに基づいて、境界領域のサイズを決定してもよい。
【0441】
図38及び図39は第1予測サンプル及び第2予測サンプルの重み付け及び演算によって予測サンプルを導き出す例を示す図である。図38には符号化ブロックが左三角形分割タイプを応用する場合を示し、図39には符号化ブロックが右三角形分割タイプを応用する場合を示す。また、図38(a)及び図39(a)は輝度成分に関連する予測状態を示す図であり、図38(b)及び図39(b)は色度成分に関連する予測状態を示す図である。
【0442】
図面では、第1予測ユニット及び第2予測ユニットの境界近傍で予測サンプルに書き込まれた数字は第1予測サンプルに応用される重み付け値を示す。例えば、予測サンプルに書き込まれた数字がNである場合、第1予測サンプルに対してN/8の重み付け値を応用し、第2予測サンプルに対して(1-(N/8))の重み付け値を応用することにより、前記予測サンプルを導き出すことができる。
【0443】
非境界領域において、第1予測サンプル又は第2予測サンプルは予測サンプルとして決定されてもよい。図38の例では、x軸座標とy軸座標との差の絶対値が閾値より大きい領域のうちの第1三角形予測ユニットに属する領域において、第1三角形予測ユニットの運動情報に基づいて導き出した第1予測サンプルを予測サンプルとして決定してもよい。一方、x軸座標とy軸座標との差分が閾値より大きい領域のうちの第2三角形予測ユニットに属する領域において、第2三角形予測ユニットの運動情報に基づいて導き出した第2予測サンプルを予測サンプルとして決定してもよい。
【0444】
図39の例では、x軸座標とy軸座標との和が第1閾値より小さい領域において、第1三角形予測ユニットの運動情報に基づいて導き出した第1予測サンプルを予測サンプルとして決定してもよい。一方、x軸座標とy軸座標との和が第2閾値より大きい領域において、第2三角形予測ユニットの運動情報に基づいて導き出した第2予測サンプルを予測サンプルとして決定してもよい。
【0445】
符号化ブロックのサイズ、符号化ブロックの形状又は色成分のうちの少なくとも1つに基づいて、非境界領域を決定するための閾値を決定してもよい。例えば、輝度成分に関連する閾値がNとして設定される場合、色度成分に関連する閾値をN/2として設定してもよい。
【0446】
第1予測サンプル及び第2予測サンプルの重み付け及び演算によって境界領域に含まれる予測サンプルを導き出してもよい。このような場合、予測サンプルの位置、符号化ブロックのサイズ、符号化ブロックの形状又は色成分のうちの少なくとも1つに基づいて、第1予測サンプル及び第2予測サンプルに応用される重み付け値を決定してもよい。
【0447】
例えば、図38(a)に示される例では、同じ重み付け値を第1予測サンプル及び第2予測サンプルに応用することにより、同じx軸座標及びy軸座標を有する位置上の予測サンプルを導き出すことができる。第1予測サンプル及び第2予測サンプルに応用される重み付け値比率を(3:1)又は(1:3)として設定することにより、x軸座標とy軸座標との差分の絶対値が1である予測サンプルを導き出すことができる。また、第1予測サンプル及び第2予測サンプルに応用される重み付け値比率を(7:1)又は(1:7)として設定することにより、x軸座標とy軸座標との差分の絶対値が2である予測サンプルを導き出すことができる。
【0448】
代替的に、図38(b)に示される例では、同じ重み付け値を第1予測サンプル及び第2予測サンプルに応用することにより、同じx軸座標及びy軸座標を有する位置上の予測サンプルを導き出すことができるのであり、第1予測サンプル及び第2予測サンプルに応用される重み付け値比率を(7:1)又は(1:7)として設定することにより、x軸座標とy軸座標との差の絶対値が1である予測サンプルを導き出すことができる。
【0449】
例えば、図39(a)に示される例では、同じ重み付け値を第1予測サンプル及び第2予測サンプルに応用することにより、x軸座標とy軸座標との和が符号化ブロックの幅又は高さより1小さい予測サンプルを導き出すことができる。第1予測サンプル及び第2予測サンプルに応用される重み付け値比率を(3:1)又は(1:3)として設定することにより、x軸座標とy軸座標との和が符号化ブロックの幅又は高さと同じであり又は符号化ブロックの幅又は高さより2小さい予測サンプルを導き出すことができる。第1予測サンプル及び第2予測サンプルに応用される重み付け値比率を(7:1)又は(1:7)として設定することにより、x軸座標とy軸座標との和が符号化ブロックの幅又は高さより1大きく又は符号化ブロックの幅又は高さより3小さい予測サンプルを導き出すことができる。
【0450】
代替的に、図39(b)に示される例では、同じ重み付け値を第1予測サンプル及び第2予測サンプルに応用することにより、x軸座標とy軸座標との和が符号化ブロックの幅又は高さより1小さい予測サンプルを導き出すことができる。第1予測サンプル及び第2予測サンプルに応用される重み付け値比率を(7:1)又は(1:7)として設定することにより、x軸座標とy軸座標との和が符号化ブロックの幅又は高さと同じであり又は符号化ブロックの幅又は高さより2小さい予測サンプルを導き出すことができる。
【0451】
他の例として、予測サンプルの位置又は符号化ブロックの形状を考慮した上で重み付け値を決定してもよい。等式23~等式25には符号化ブロックに対して左三角形分割タイプを応用する場合に重み付け値を導き出す例を示す。等式23には符号化ブロックが正方形である場合に第1予測サンプルに応用される重み付け値を導き出す例を示す。
【0452】
等式23
【数23】
【0453】
等式23では、xとyが予測サンプルの位置を示す。符号化ブロックが非正方形である場合、等式24又は25に示すように第1予測サンプルに応用される重み付け値を導き出してもよい。等式24には符号化ブロックの幅が高さより大きい場合を示し、等式25には符号化ブロックの幅が高さより小さい場合を示す。
【0454】
等式24
【数24】
【0455】
等式25
【数25】
【0456】
右三角形分割タイプを符号化ブロックに応用する場合、等式26~28に示すように第1予測サンプルに応用される重み付け値を決定してもよい。等式26には符号化ブロックが正方形である場合に第1予測サンプルに応用される重み付け値を導き出す例を示す。
【0457】
等式26
【数26】
【0458】
等式26では、CbWが符号化ブロックの幅を示す。符号化ブロックが非正方形である場合、等式27又は28に示すように第1予測サンプルに応用される重み付け値を導き出してもよい。等式27には符号化ブロックの幅が高さより大きい場合を示し、等式28には符号化ブロックの幅が高さより小さい場合を示す。
【0459】
等式27
【数27】
【0460】
等式28
【数28】
【0461】
等式27では、CbHが符号化ブロックの高さを示す。
【0462】
図示の例では、境界領域における予測サンプルに対して、第1予測サンプルに第2予測サンプルより大きい重み付け値を与えることにより第1三角形予測ユニットに含まれるサンプルを導き出すことができるのであり、第2予測サンプルに第1予測サンプルより大きい重み付け値を与えることにより第2三角形予測ユニットに含まれるサンプルを導き出すことができる。
【0463】
符号化ブロックに対して対角線分割を応用する場合、符号化ブロックはイントラ予測モードとマージモードを組み合わせる組合せ予測モードを応用しないように設定されてもよい。
【0464】
イントラ予測は現在ブロック周辺の符号化/復号後の復元サンプルを使用して現在ブロックを予測する。このような場合、現在ブロックのイントラ予測はループ内フィルタを応用する前の復元サンプルを使用してもよい。
【0465】
イントラ予測技術は行列(Matrix)に基づくイントラ予測及び周辺復元サンプルの指向性を考慮した一般的なイントラ予測を含む。ビットストリームを介して信号によって現在ブロックのイントラ予測技術を示す情報を送信してもよい。前記情報は1ビットフラグであってもよい。代替的に、現在ブロックの位置、サイズ、形状又は隣接ブロックのイントラ予測技術のうちの少なくとも1つに基づいて、現在ブロックのイントラ予測技術を決定してもよい。例えば、現在ブロックがピクチャ境界を跨いで存在する場合、現在ブロックは行列に基づくイントラ予測を応用しないように設定されてもよい。
【0466】
行列に基づくイントラ予測はエンコーダ及びデコーダに記憶される行列と現在ブロック周辺の復元サンプルとの行列乗算によって現在ブロックの予測ブロックを取得する方法である。ビットストリームを介して信号によって記憶される複数の行列のうちのいずれか1つを指定するための情報を送信してもよい。デコーダは前記情報及び現在ブロックのサイズに基づいて現在ブロックのイントラ予測のための行列を決定してもよい。
【0467】
一般的なイントラ予測は非角度イントラ予測モード又は角度イントラ予測モードに基づいて現在ブロックに関連する予測ブロックを取得する方法である。以下、図面を参照しながら、一般的なイントラ予測に基づいてイントラ予測を実行する過程をより詳しく説明する。
【0468】
図40は本発明の実施例に係るイントラ予測方法を示すフローチャートである。
【0469】
現在ブロックの参照サンプルラインを決定してもよい(S4001)。参照サンプルラインは現在ブロックの上方及び/又は左側からのK番目の線に含まれる参照サンプルのセットを指す。現在ブロック周辺の符号化/復号後の復元サンプルから参照サンプルを導き出してもよい。
【0470】
ビットストリームを介して信号によって複数の参照サンプルラインのうちの現在ブロックの参照サンプルラインを示すインデックス情報を送信してもよい。例えば、ビットストリームを介して信号によって現在ブロックの参照サンプルラインを指定するためのインデックス情報intra_luma_ref_idxを送信してもよい。符号化ブロック単位で、信号によって前記インデックス情報を送信してもよい。
【0471】
複数の参照サンプルラインは現在ブロックの上方及び/又は左側に位置する第1線、第2線、第3線又は第4線のうちの少なくとも1つを含んでもよい。複数の参照サンプルラインのうちの現在ブロックの上方に隣接する行と現在ブロックの左側に隣接する列とからなる参照サンプルラインは隣接参照サンプルラインと称されてもよく、それ以外の参照サンプルラインは更に非隣接参照サンプルラインと称されてもよい。
【0472】
複数の参照サンプルラインのうちのいくつかは現在ブロックの参照サンプルラインとして選択されてもよい。例えば、複数の参照サンプルラインのうちの第3非隣接参照サンプルライン以外の残りの参照サンプルラインは候補参照サンプルラインとして設定されてもよい。表5にはそれぞれ各候補参照サンプルラインに割り当てられたインデックスを示す。
【0473】
【表5】
【0474】
説明されるサンプルラインより多い候補参照サンプルラインを設定してもよく、又はより少ない候補参照サンプルラインを設定してもよい。また、候補参照サンプルラインとして設定される非隣接参照サンプルラインの数又は位置は説明される例に限らない。例えば、第1非隣接参照サンプルライン及び第3非隣接参照サンプルラインを候補参照サンプルラインとして設定してもよく、又は第2非隣接参照サンプルライン及び第3非隣接参照サンプルラインを候補参照サンプルラインとして設定してもよい。代替的に、更に第1非隣接参照サンプルライン、第2非隣接参照サンプルライン及び第3非隣接参照サンプルラインをいずれも候補参照サンプルラインとして設定してもよい。
【0475】
現在ブロックのサイズ、形状、位置、サブブロックが分割されたかどうか又はイントラ予測モードのうちの少なくとも1つに基づいて、候補参照サンプルラインの数又はタイプを決定してもよい。
【0476】
更に現在ブロックの位置、サイズ、形状又は隣接ブロックの予測符号化モードのうちの少なくとも1つに基づいて、現在ブロックの参照サンプルラインを決定してもよい。例えば、現在ブロックがピクチャ、セグメント、スライス又は符号化木ユニットの境界に接触する場合、1番目の参照サンプルラインを現在ブロックの参照サンプルラインとして決定してもよい。
【0477】
代替的に、現在ブロックが非正方形である場合、隣接参照サンプルラインを現在ブロックの参照サンプルラインとして設定してもよい。代替的に、現在ブロックの幅と高さの比が閾値以上又は閾値以下である場合、隣接参照サンプルラインを現在ブロックの参照サンプルラインとして決定してもよい。
【0478】
参照サンプルラインは現在ブロックの上方に位置する上方参照サンプル及び現在ブロックの左側に位置する左側参照サンプルを含んでもよい。現在ブロック周辺の復元サンプルから上方参照サンプル及び左側参照サンプルを導き出してもよい。前記復元サンプルはループ内フィルタを応用する前の状態にあってもよい。
【0479】
次に、現在ブロックのイントラ予測モードを決定してもよい(S4002)。現在ブロックのイントラ予測モードに対して、非角度イントラ予測モード又は角度イントラ予測モードのうちの少なくとも1つを現在ブロックのイントラ予測モードとして決定してもよい。非角度イントラ予測モードはプレーナ(Planer)及びDCを含み、角度イントラ予測モードは左下対角線方向から右上対角線方向までの33個又は65個のモードを含む。
【0480】
図41はイントラ予測モードを示す図である。
【0481】
図41(a)には35個のイントラ予測モードを示し、図41(b)には67個のイントラ予測モードを示す。
【0482】
更に図41に示されるものより多く又は少ない数のイントラ予測モードを定義してもよい。
【0483】
現在ブロックに隣接する隣接ブロックのイントラ予測モードに基づいて最確モード(MPM、Most Probable Mode)を設定してもよい。隣接ブロックは現在ブロックの左側に隣接する左側隣接ブロックと、現在ブロックの上方に隣接する上側隣接ブロックとを含んでもよい。
【0484】
エンコーダ及びデコーダにおいてMPMリストに含まれるMPMの数を予め定義してもよい。例えば、MPMの数は3つ、4つ、5つ又は6つであってもよい。代替的に、ビットストリームを介して信号によってMPMの数を示す情報を送信してもよい。代替的に、隣接ブロックの予測符号化モード、現在ブロックのサイズ又は形状のうちの少なくとも1つに基づいてMPMの数を決定してもよい。例えば、隣接参照サンプルラインを現在ブロックの参照サンプルラインとして決定する場合、N個のMPMを使用するが、非隣接参照サンプルラインを現在ブロックの参照サンプルラインとして決定する場合、M個のMPMを使用してもよい。MはNより小さい整数であり、例えば、Nは6であってもよく、Mは5、4又は3であってもよい。従って、現在ブロックの参照サンプルラインのインデックスが0であり且つMPMフラグが真である場合、現在ブロックのイントラ予測モードを6つの候補イントラ予測モードのうちのいずれか1つとして決定してもよいが、現在ブロックの参照サンプルラインのインデックスが0より大きく且つMPMフラグが真である場合、現在ブロックのイントラ予測モードを5つの候補イントラ予測モードのうちのいずれか1つとして決定してもよい。
【0485】
代替的に、現在ブロックの参照サンプルラインのインデックスにかかわらず、更に固定数(例えば、6つ又は5つ)のMPM候補を使用してもよい。
【0486】
複数のMPMを含むMPMリストを生成してもよく、ビットストリームを介して信号によって現在ブロックのイントラ予測モードと同じMPMがMPMリストに含まれるかどうかを示す情報を送信してもよい。前記情報は1ビットフラグであり、MPMフラグと称されてもよい。MPMフラグは現在ブロックと同じMPMがMPMリストに含まれることを示す場合、ビットストリームを介して信号によってMPMのうちの1つを示すインデックス情報を送信してもよい。例えば、ビットストリームを介して信号によって複数のMPMのうちのいずれか1つを指定するインデックス情報mpm_idxを送信してもよい。前記インデックス情報により指定されたMPMを現在ブロックのイントラ予測モードとして設定してもよい。MPMフラグは現在ブロックと同じMPMがMPMリストに含まれないことを示す場合、ビットストリームを介して信号によってMPM以外の残りのイントラ予測モードのうちのいずれか1つを示す残りのモード情報を送信してもよい。残りのモード情報はMPM以外の残りのイントラ予測モードにインデックスを改めて割り当てる場合に現在ブロックのイントラ予測モードに対応するインデックス値を示す。デコーダは昇順でMPMを配列して、残りのモード情報とMPMとを比較して現在ブロックのイントラ予測モードを決定してもよい。例えば、残りのモード情報がMPMと同じであり又はMPMより小さい場合、残りのモード情報に1を加えて現在ブロックのイントラ予測モードを導き出してもよい。
【0487】
現在ブロックのイントラ予測モードを導き出す場合、MPMの一部と残りのモード情報との比較は省略してもよい。例えば、非角度イントラ予測モードのMPMを比較オブジェクトから排除してもよい。非角度イントラ予測モードがMPMとして設定される場合、残りのモード情報は角度イントラ予測モードを明確に示すため、非角度イントラ予測モード以外の残りのMPMと残りのモード情報との比較によって現在ブロックのイントラ予測モードを導き出してもよい。非角度イントラ予測モードを比較オブジェクトから排除する代わりに、残りのモード情報に非角度イントラ予測モードの数を加えた結果値とMPMとを比較してもよい。
【0488】
デフォルトモードをMPMとして設定する代わりに、ビットストリームを介して信号によって現在ブロックのイントラ予測モードがデフォルトモードであるかどうかを示す情報を送信してもよい。前記情報は1ビットフラグであり、前記フラグはデフォルトモードフラグと称されてもよい。MPMフラグは現在ブロックと同じMPMがMPMリストに含まれることを示す場合のみ、信号によってデフォルトモードフラグを送信することができる。以上のように、デフォルトモードはプレーナ、DC、垂直方向モード又は水平方向モードのうちの少なくとも1つを含んでもよい。例えば、プレーナがデフォルトモードとして設定される場合、デフォルトモードフラグは現在ブロックのイントラ予測モードがプレーナであるかどうかを示してもよい。デフォルトモードフラグは現在ブロックのイントラ予測モードがデフォルトモードではないことを示す場合、インデックス情報で示されるMPMのうちの1つを現在ブロックのイントラ予測モードとして設定してもよい。
【0489】
デフォルトモードフラグを使用する場合、デフォルトモードと同じイントラ予測モードはMPMとして設定されなくてもよい。例えば、デフォルトモードフラグは現在ブロックのイントラ予測モードがプレーナであるかどうかを示す場合、プレーナに相当するMPM以外の5つのMPMを使用して現在ブロックのイントラ予測モードを導き出してもよい。
【0490】
複数のイントラ予測モードをデフォルトモードとして設定する場合、更に信号によってデフォルトモードのうちのいずれか1つを示すインデックス情報を送信してもよい。現在ブロックのイントラ予測モードを前記インデックス情報が指すデフォルトモードとして設定してもよい。
【0491】
現在ブロックの参照サンプルラインのインデックスが0ではない場合、デフォルトモードを使用しないように設定する。例えば、非隣接参照サンプルラインが現在ブロックの参照サンプルラインとして決定される場合、DCモード又はプレーナモード等の非角度イントラ予測モードを使用しないように設定してもよい。従って、参照サンプルラインのインデックスが0ではない場合、信号によってデフォルトモードフラグを送信せず、前記デフォルトモードフラグの値を予め定義された値(即ち、偽)として設定してもよい。
【0492】
現在ブロックのイントラ予測モードを決定する場合、決定されたイントラ予測モードに基づいて現在ブロックに関連する予測サンプルを取得してもよい(S4003)。
【0493】
DCモードを選択するとき、参照サンプルの平均値に基づいて現在ブロックに関連する予測サンプルを生成してもよい。具体的に、参照サンプルの平均値に基づいて予測ブロックのすべてのサンプルの値を生成してもよい。現在ブロックの上方に位置する上方参照サンプル及び現在ブロックの左側に位置する左側参照サンプルのうちの少なくとも1つを使用して平均値を導き出してもよい。
【0494】
平均値を導き出すための参照サンプルの数又は範囲は現在ブロックの形状によって異なる可能性がある。例えば、現在ブロックは幅が高さより大きい非正方形ブロックである場合、上方参照サンプルのみを使用して平均値を計算してもよい。一方、現在ブロックは幅が高さより小さい非正方形ブロックである場合、左側参照サンプルのみを使用して平均値を計算してもよい。即ち、現在ブロックの幅及び高さが異なる場合、長さの一層長い片側に隣接する参照サンプルのみを使用して平均値を計算してもよい。代替的に、現在ブロックの幅と高さの比率に基づいて、上方参照サンプルのみを使用して平均値を計算するかどうか、又は左側参照サンプルのみを使用して平均値を計算するかどうかを決定してもよい。
【0495】
プレーナモードを選択する場合、水平方向予測サンプル及び垂直方向予測サンプルを使用して予測サンプルを取得してもよい。予測サンプルと同じ水平線に位置する左側参照サンプル及び右側参照サンプルに基づいて水平方向予測サンプルを取得し、予測サンプルと同じ垂直線に位置する上方参照サンプル及び下方参照サンプルに基づいて垂直方向予測サンプルを取得する。現在ブロックの右上角に隣接する参照サンプルをコピーすることにより右側参照サンプルを生成することができ、現在ブロックの左下角に隣接する参照サンプルをコピーすることにより下方参照サンプルを生成することができる。左側参照サンプル及び右側参照サンプルの重み付け及び演算によって水平方向予測サンプルを取得することができ、上方参照サンプル及び下方参照サンプルの重み付け及び演算によって垂直方向予測サンプルを取得することができる。このような場合、予測サンプルの位置に基づいて各参照サンプルに与えられた重み付け値を決定してもよい。水平方向予測サンプル及び垂直方向予測サンプルの平均演算又は重み付け及び演算によって予測サンプルを取得してもよい。重み付け及び演算を実行する場合、予測サンプルの位置に基づいて水平方向予測サンプル及び垂直方向予測サンプルに与えられた重み付け値を決定してもよい。
【0496】
角度予測モードを選択する場合、選択された角度予測モードの予測方向(又は、予測角度)を示すパラメータを決定してもよい。下記表6には各イントラ予測モードのイントラ予測パラメータintraPredAngを示す。
【0497】
【表6】
【0498】
表6には35個のイントラ予測モードを定義した場合に2~34のうちのいずれか1つのインデックスを有する各イントラ予測モードのイントラ方向パラメータを示す。33個以上の角度イントラ予測モードを定義した場合、表6は更に各角度イントラ予測モードのイントラ方向パラメータを設定するように細分される。
【0499】
現在ブロックの上方参照サンプル及び左側参照サンプルを1列に配列した後、イントラ方向パラメータの値に基づいて予測サンプルを取得してもよい。このような場合、イントラ方向パラメータの値が負数である場合、左側参照サンプルと上方参照サンプルを1列に配列してもよい。
【0500】
図42及び図43は参照サンプルを1行に配列する一次元配列の例を示す図である。
【0501】
図42には垂直方向において参照サンプルを配列する垂直方向一次元配列の例を示し、図43には水平方向において参照サンプルを配列する水平方向一次元配列の例を示す。35個のイントラ予測モードを定義すると仮定した上で、図42及び図43の実施例を説明する。
【0502】
イントラ予測モードインデックスが11~18のうちのいずれか1つである場合、上方参照サンプルを逆時計回りに回転させる水平方向一次元配列を応用してもよく、イントラ予測モードインデックスが19~25のうちのいずれか1つである場合、左側参照サンプルを時計回りに回転させる垂直方向一次元配列を応用してもよい。参照サンプルを1列に配列する場合、イントラ予測モード角度を考慮してもよい。
【0503】
イントラ方向パラメータに基づいて参照サンプル決定パラメータを決定してもよい。参照サンプル決定パラメータは参照サンプルを指定するための参照サンプルインデックスと、参照サンプルに応用される重み付け値を決定するための重み付け値パラメータとを含んでもよい。
【0504】
参照サンプルインデックスiIdx及び重み付け値パラメータifactはそれぞれ下記等式30及び等式31により取得されてもよい。
【0505】
等式30
【数29】
【0506】
等式31
【数30】
【0507】
等式30及び31では、Pangがイントラ方向パラメータを示す。参照サンプルインデックスiIdxに基づいて指定した参照サンプルは整数画素(Integer pel)に相当する。
【0508】
予測サンプルを導き出すために、1つ以上の参照サンプルを指定してもよい。具体的に、予測モードの傾斜度を考慮した上で、予測サンプルを導き出すための参照サンプルの位置を指定してもよい。例えば、参照サンプルインデックスiIdxを使用して、予測サンプルを導き出すための参照サンプルを指定してもよい。
【0509】
このような場合、イントラ予測モードの傾斜度が1つの参照サンプルで示されない場合、複数の参照サンプルを補間することにより予測サンプルを生成することができる。例えば、イントラ予測モードの傾斜度が予測サンプルと第1参照サンプルとの間の傾斜度及び予測サンプルと第2参照サンプルとの間の傾斜度との間の値である場合、第1参照サンプル及び第2参照サンプルを補間して予測サンプルを取得してもよい。即ち、イントラ予測角度に従う角線(Angular Line)は整数画素に位置する参照サンプルを通らない場合、前記角線が通る位置の左右又は上下に隣接する参照サンプルを補間して予測サンプルを取得してもよい。
【0510】
下記等式32には参照サンプルに基づいて予測サンプルを取得する例を示す。
【0511】
等式32
【数31】
【0512】
等式32では、Pが予測サンプルを示し、Ref_1Dが一次元配列の参照サンプルのうちのいずれか1つを示す。このような場合、予測サンプルの位置(x,y)及び参照サンプルインデックスiIdxに基づいて参照サンプルの位置を決定してもよい。
【0513】
イントラ予測モードの傾斜度が1つの参照サンプルとして示されてもよい場合、重み付け値パラメータifactを0として設定してもよい。従って、等式32は下記等式33に簡略化されてもよい。
【0514】
等式33
【数32】
【0515】
更に複数のイントラ予測モードに基づいて現在ブロックに対してイントラ予測を実行してもよい。例えば、異なる予測サンプルに対してイントラ予測モードを導き出してもよく、各予測サンプルに割り当てられたイントラ予測モードに基づいて予測サンプルを導き出してもよい。
【0516】
代替的に、異なる領域に対してイントラ予測モードを導き出してもよく、各領域に割り当てられたイントラ予測モードに基づいて各領域に対してイントラ予測を実行してもよい。前記領域は少なくとも1つのサンプルを含んでもよい。現在ブロックのサイズ、形状又はイントラ予測モードのうちの少なくとも1つに基づいて前記領域のサイズ又は形状のうちの少なくとも1つを適応的に決定してもよい。代替的に、エンコーダ及びデコーダにおいて、現在ブロックのサイズ又は形状にかかわらず、領域のサイズ又は形状のうちの少なくとも1つを予め定義してもよい。
【0517】
代替的に、それぞれ複数のイントラ予測に基づいてイントラ予測を実行してもよく、複数回のイントラ予測により取得された複数の予測サンプルの平均演算又は重み付け及び演算によって最終的な予測サンプルを導き出してもよい。例えば、第1イントラ予測モードに基づいてイントラ予測を実行して第1予測サンプルを取得してもよく、第2イントラ予測モードに基づいてイントラ予測を実行して第2予測サンプルを取得してもよい。その後、第1予測サンプル及び第2予測サンプルの平均演算又は重み付け及び演算によって最終的な予測サンプルを取得してもよい。このような場合、第1イントラ予測モードが非角度/角度予測モードであるかどうか、第2イントラ予測モードが非角度/角度予測モード又は隣接ブロックのイントラ予測モードのうちの少なくとも1つであるかどうかを考慮した上で、それぞれ第1予測サンプル及び第2予測サンプルに割り当てられた重み付け値を決定してもよい。
【0518】
複数のイントラ予測モードは非角度イントラ予測モードと角度予測モードとの組み合わせ、角度予測モードの組み合わせ又は非角度予測モードの組み合わせであってもよい。
【0519】
図44は角度イントラ予測モードとx軸に平行する直線とがなす角度を示す図である。
【0520】
図44に示される例では、角度予測モードは左下対角線方向と右上対角線方向との間に存在してもよい。x軸と角度予測モードとがなす角度として説明される場合、角度予測モードは45度(左下対角方向)~-135度(右側上方対角方向)之間に存在してもよい。
【0521】
現在ブロックが非正方形形状である場合、現在ブロックのイントラ予測モードに基づいて、予測サンプルに接近する参照サンプルではなく、イントラ予測角度に従う角線に位置する参照サンプルのうちの予測サンプルを離れる参照サンプルを使用して予測サンプルを導き出す。
【0522】
図45は現在ブロックが非正方形である場合に予測サンプルを取得する例を示す図である。
【0523】
例えば、図45(a)に示される例では、現在ブロックは幅が高さより大きい非正方形であり、現在ブロックのイントラ予測モードは角度が0度~45度である角度イントラ予測モードであると仮定する。このような場合、現在ブロックの右側列近傍の予測サンプルAを導き出すとき、前記角度に位置する角度モードにおける参照サンプルのうちの前記予測サンプルを離れる左側参照サンプルLで前記予測サンプルに接近する上方参照サンプルTを代替する状況が発生することとなる。
【0524】
他の例として、図45(b)に示される例では、現在ブロックは高さが幅より大きい非正方形であり、現在ブロックのイントラ予測モードは角度が-90度~-135度である角度イントラ予測モードであると仮定する。上記の場合、現在ブロックの下方行近傍の予測サンプルAを導き出すとき、前記角度に位置する角度モードにおける参照サンプルのうちの前記予測サンプルを離れる上方参照サンプルTで前記予測サンプルに接近する左側参照サンプルLを代替する状況が発生することとなる。
【0525】
上記問題を解決するために、現在ブロックが非正方形である場合、現在ブロックのイントラ予測モードを反方向のイントラ予測モードに置換してもよい。従って、非正方形のブロックに対して、図41に示される角度予測モードの角度より大きく又は小さい角度を有する角度予測モードを使用してもよい。このような角度イントラ予測モードは広角イントラ予測モードとして定義されてもよい。広角イントラ予測モードは45度~-135度範囲を超える角度イントラ予測モードを示す。
【0526】
図46は広角イントラ予測モードを示す図である。
【0527】
図46に示される例では、インデックス-1~-14のイントラ予測モード及びインデックス67~80のイントラ予測モードは広角イントラ予測モードを示す。
【0528】
図46には45度より大きい角度を有する14個の広角イントラ予測モード(-1~-14)及び-135度より小さい角度を有する14個の広角イントラ予測モード(67~80)を示すが、より多く又はより少ない数の広角イントラ予測モードを定義してもよい。
【0529】
広角イントラ予測モードを使用する場合、上方参照サンプルの長さは2W+1として設定され、左側参照サンプルの長さは2H+1として設定される。
【0530】
広角イントラ予測モードを使用する場合、参照サンプルTを使用して図45(a)に示されるサンプルAを予測してもよく、参照サンプルLを使用して図45(b)に示されるサンプルAを予測してもよい。
【0531】
既存のイントラ予測モードとN個の広角イントラ予測モードとを加えることにより、全部で67+N個のイントラ予測モードを使用可能である。例えば、表7には20個の広角イントラ予測モードを定義した場合のイントラ予測モードのイントラ方向パラメータを示す。
【0532】
【表7】
【0533】
現在ブロックが非正方形であり且つステップS4002における取得された現在ブロックのイントラ予測モードが変換範囲内にある場合、現在ブロックのイントラ予測モードを広角イントラ予測モードに変換してもよい。現在ブロックのサイズ、形状又は比率のうちの少なくとも1つに基づいて前記変換範囲を決定してもよい。前記比率は現在ブロックの幅と高さの比率を示してもよい。
【0534】
現在ブロックは幅が高さより大きい非正方形である場合、変換範囲を右側上方対角方向のイントラ予測モードインデックス(例えば、66)~(右側上方対角方向のイントラ予測モードのインデックス-N)に設定してもよい。Nは現在ブロックの比率に基づいて決定されてもよい。現在ブロックのイントラ予測モードが変換範囲内にある場合、前記イントラ予測モードを広角イントラ予測モードに変換してもよい。前記イントラ予測モードから予め定義された値を引くことにより前記変換を実行してもよく、前記予め定義された値は広角イントラ予測モード以外のイントラ予測モードの総数(例えば、67)であってもよい。
【0535】
前記実施例に基づいて、66番目~53番目のイントラ予測モードをそれぞれ-1番目~-14番目の広角イントラ予測モードに変換してもよい。
【0536】
現在ブロックは高さが幅より大きい非正方形である場合、変換範囲を左下対角方向のイントラ予測モードインデックス(例えば、2)~(左下対角方向のイントラ予測モードのインデックス+M)に設定してもよい。Mは現在ブロックの比率に基づいて決定されてもよい。現在ブロックのイントラ予測モードが変換範囲内にある場合、前記イントラ予測モードを広角イントラ予測モードに変換してもよい。前記イントラ予測モードに予め定義された値を加えることにより前記変換を実行してもよく、予め定義された値は広角イントラ予測モード以外の角度イントラ予測モードの総数(例えば、65)であってもよい。
【0537】
前記実施例に基づいて、2番目~15番目のイントラ予測モードをそれぞれ67番目~80番目の広角イントラ予測モードに変換してもよい。
【0538】
以下、変換範囲内にあるイントラ予測モードは広角イントラ置換予測モードと称される。
【0539】
変換範囲は現在ブロックの比率に基づいて決定されてもよい。例えば、表8及び表9のそれぞれには広角イントラ予測モード以外の35個のイントラ予測モード及び67個のイントラ予測モードを定義した場合の変換範囲を示す。
【0540】
【表8】
【0541】
【表9】
【0542】
表8及び表9に示される例では、変換範囲内にある広角イントラ置換予測モードの数は現在ブロックの比率によって異なってもよい。
【0543】
現在ブロックの比率を細分することにより、表10に示すように変換範囲を設定することができる。
【0544】
【表10】
【0545】
非隣接参照サンプルラインを現在ブロックの参照サンプルラインとして決定し、又は複数の参照サンプルラインのうちのいずれか1つを選択するための複数線イントラ予測符号化方法を使用する場合、広角イントラ予測モードを使用しないように設定してもよい。即ち、現在ブロックが非正方形であり且つ現在ブロックのイントラ予測モードが変換範囲内にある場合にも、現在ブロックのイントラ予測モードを広角イントラ予測モードに変換しない可能性がある。
【0546】
代替的に、現在ブロックのイントラ予測モードを広角イントラ予測モードとして決定する場合、非隣接参照サンプルラインが現在ブロックの参照サンプルラインとして使用できないように設定してもよく、又は複数の参照サンプルラインのうちのいずれか1つを選択するための複数線イントラ予測符号化方法を使用しないように設定してもよい。複数線イントラ予測符号化方法を使用しない場合、隣接参照サンプルラインを現在ブロックの参照サンプルラインとして設定してもよい。
【0547】
広角イントラ予測モードを使用しない場合、refW及びrefHをnTbWとnTbHとの和として設定する。従って、左上参照サンプル以外に、現在ブロックとの距離がiである非隣接参照サンプルは(nTbW+nTbH+offsetX[i])個の上方参照サンプル及び(nTbW+nTbH+offsetY[i])個の左側参照サンプルを含んでもよい。即ち、現在ブロックとの距離がiである非隣接参照サンプルは(2nTbW+2nTbH+offsetX[i]+offsetY[i]+1)個の参照サンプルを含んでもよい。例えば、whRatioの値が1より大きい場合、offsetXの値をoffsetYの値より大きく設定する。例えば、offsetXの値が1として設定され、offsetYの値が0として設定される。一方、whRatioの値が1より小さい場合、offsetYの値をoffsetXの値より大きく設定する。例えば、offsetXの値を0として設定し、offsetYの値を1として設定する。
【0548】
既存のイントラ予測モード以外に広角イントラ予測モードを使用するにつれて、広角イントラ予測モードを符号化するために必要なリソースが増加することとなり、従って、符号化効率を低下させる恐れがある。従って、広角イントラ予測モードを直接符号化する代わりに、広角イントラ予測モードに関連する置換イントラ予測モードを符号化することにより、符号化効率を向上させる。
【0549】
例えば、67番目の広角イントラ予測モードを使用して現在ブロックを符号化する場合、67番目の広角置換イントラ予測モードとしての番号2を現在ブロックのイントラ予測モードに符号化してもよい。また、-1番目の広角イントラ予測モードを使用して現在ブロックを符号化する場合、-1番目の広角置換イントラ予測モードとしての番号66を現在ブロックのイントラ予測モードに符号化してもよい。
【0550】
デコーダは現在ブロックのイントラ予測モードを復号して、復号されたイントラ予測モードが変換範囲に含まれるかどうかを決定してもよい。復号されたイントラ予測モードが広角置換イントラ予測モードである場合、イントラ予測モードを広角イントラ予測モードに変換してもよい。
【0551】
代替的に、広角イントラ予測モードで現在ブロックを符号化する場合、更に広角イントラ予測モードを直接符号化してもよい。
【0552】
イントラ予測モードの符号化は前記MPMリストに基づいて実現されてもよい。具体的に、広角イントラ予測モードで隣接ブロックを符号化する場合、広角イントラ予測モードに対応する広角置換イントラ予測モードに基づいてMPMを設定してもよい。
【0553】
オリジナルピクチャから予測ピクチャを引くことにより導き出した残余ピクチャを導き出してもよい。このような場合、残余ピクチャを周波数領域に変更する場合、周波数成分における高周波数成分を取り除いても、ビデオの主観的画質が大幅に低下することもない。従って、高周波数成分の値を比較的小さい値に変換し又は高周波数成分の値を0として設定すれば、顕著な視覚的歪みを生じさせずに圧縮効率を向上させる効果を有する。以上の特性を反映するために、現在ブロックを変換して残余ピクチャを2次元周波数成分に分解してもよい。離散コサイン変換(DCT、Discrete Cosine Transform)又は離散サイン変換(DST、Discrete Sine Transform)等の変換技術で前記変換を実行してもよい。
【0554】
DCTはコサイン変換を使用して残余ピクチャを2次元周波数成分に分解(又は、変換)するが、DSTはサイン変換を使用して残余ピクチャを2次元周波数成分に分解(又は、変換)する。残余ピクチャの変換結果として、周波数成分は基本ピクチャとして示されてもよい。例えば、サイズN×Nのブロックに対してDCT変換を実行するとき、N個の基本パターン成分を取得してもよい。変換によってサイズN×Nのブロックに含まれる各基本パターン成分のサイズを取得してもよい。使用した変換技術に基づいて、基本パターン成分のサイズはDCT係数又はDST係数と称されてもよい。
【0555】
変換技術DCTは主に非0の低周波数成分の分布がより多いピクチャを変換することに用いられる。変換技術DSTは主に高周波数成分の分布がより多いピクチャに使用される。
【0556】
更にDCT又はDST以外の変換技術を使用して残余ピクチャを変換してもよい。
【0557】
以下、残余ピクチャを2次元周波数成分に変換する過程は2次元ピクチャ変換と称される。また、変換結果により取得された基本パターン成分のサイズは変換係数と称される。例えば、変換係数はDCT係数又はDST係数を指してもよい。以後に説明しようとする主変換及び二次変換を同時に応用するとき、変換係数は二次変換の結果により生成された基本パターン成分のサイズを示してもよい。
【0558】
ブロック単位で変換技術を決定してもよい。現在ブロックの予測符号化モード、現在ブロックのサイズ又は現在ブロックの形状のうちの少なくとも1つに基づいて変換技術を決定してもよい。例えば、イントラ予測モードで現在ブロックを符号化し且つ現在ブロックのサイズがN×Nより小さい場合、変換技術DSTを使用して変換を実行してもよい。一方、前記条件を満足できない場合、変換技術DCTを使用して変換を実行してもよい。
【0559】
残余ピクチャにおいて、更に一部のブロックに対して2次元ピクチャ変換を実行しなくてもよい。2次元ピクチャ変換を実行しないことは変換スキップ(Transform Skip)と称されてもよい。変換スキップを応用する場合、量子化を、変換を実行しない残余値に応用してもよい。
【0560】
DCT又はDSTを使用して現在ブロックを変換した後、変換された現在ブロックを再び変換してもよい。このような場合、DCT又はDSTに基づく変換は主変換として定義されてもよく、主変換を応用するブロックを再び変換する過程は二次変換と称される。
【0561】
主変換は複数の変換コア候補のうちのいずれか1つを使用して実行されてもよい。例えば、DCT2、DCT8又はDCT7のうちのいずれか1つを使用して主変換を実行してもよい。
【0562】
水平方向及び垂直方向に対して、更に異なる変換コアを使用してもよい。更に、ビットストリームを介して信号によって水平方向の変換コアと垂直方向の変換コアとの組み合わせを示す情報を送信してもよい。
【0563】
主変換及び二次変換の実行ユニットが異なる。例えば、8×8ブロックに対して主変換を実行してもよく、変換された8×8ブロックにおけるサイズ4×4のサブブロックに対して二次変換を実行してもよい。このような場合、更に二次変換を実行しない予備領域の変換係数を0として設定してもよい。
【0564】
代替的に、4×4ブロックに対して主変換を実行してもよく、変換された4×4ブロックを含むサイズ8×8の領域に対して二次変換を実行してもよい。
【0565】
ビットストリームを介して信号によって二次変換を実行するかどうかを示す情報を送信してもよい。
【0566】
デコーダにおいて二次変換の逆変換(第2逆変換)を実行してもよく、その結果に対して主変換の逆変換(第1逆変換)を実行してもよい。第2逆変換及び第1逆変換の実行結果として、現在ブロックの残余信号を取得してもよい。
【0567】
量子化はブロックのエネルギーを低減することに用いられ、且つ量子化過程は変換係数を特定定数で割る過程を含む。前記定数は量子化パラメータにより導き出されてもよく、且つ量子化パラメータは1~63の間の値として定義されてもよい。
【0568】
エンコーダにおいて変換及び量子化を実行すれば、デコーダは逆量子化及び逆変換によって残余ブロックを取得してもよい。デコーダにおいて予測ブロックと残余ブロックとを加えて、現在ブロックの復元ブロックを取得してもよい。
【0569】
現在ブロックの復元ブロックを取得した場合、ループ内フィルタリング(In-loop filtering)によって量子化及び符号化過程に発生した情報紛失を減少させることができる。ループ内フィルタはデブロッキングフィルタ(Deblocking filter)、サンプル適応型オフセットフィルタ(SAO、Sample Adaptive Offset filter)又は適応型ループフィルタ(ALF、Adaptive Loop Filter)のうちの少なくとも1つを含んでもよい。以下、ループ内フィルタを応用する前の復元ブロックは第1復元ブロックと称され、ループ内フィルタを応用した後の復元ブロックは第2復元ブロックと称される。
【0570】
第1復元ブロックに対してデブロッキングフィルタ、SAO又はALFのうちの少なくとも1つを応用して第2復元ブロックを取得してもよい。このような場合、デブロッキングフィルタを応用した後にSAO又はALFを応用してもよい。
【0571】
デブロッキングフィルタはブロック単位で量子化を実行する際にブロックの境界で発生した画質劣化(ブロック歪み、Blocking Artifact)を低減することに用いられる。デブロッキングフィルタを応用するために、第1復元ブロックと隣接復元ブロックとの間のブロック化強度(BS、Blocking Strength)を決定してもよい。
【0572】
図47はブロック化強度の決定過程を示すフローチャートである。
【0573】
図47に示される例では、Pが第1復元ブロックを示し、Qが隣接復元ブロックを示す。隣接復元ブロックは現在ブロックの左側又は上方に隣接してもよい。
【0574】
図47に示される例には、PとQを考慮した予測符号化モード、非ゼロ変換係数を含むかどうか、同じ参照ピクチャを使用してインター予測を実行するかどうか、及び運動ベクトルの差分が閾値以上であるかどうかによってブロック化強度を決定することを示す。
【0575】
ブロック化強度に基づいて、デブロッキングフィルタを応用するかどうかを決定してもよい。例えば、ブロック化強度が0である場合、フィルタリングを実行しない可能性がある。
【0576】
SAOは周波数領域において量子化を実行する際に発生したリンギングアーティファクト(Ringing Artifact)を低減することに用いられる。第1復元ピクチャのパターンを考慮して決定したオフセット量を加え又は引くことにより、SAOを実行することができる。オフセット量の決定方法はエッジオフセット(EO、Edge Offset)又はバンドオフセット(Band Offset)を含む。EOは周辺画素のパターンに基づいて現在サンプルのオフセットを決定する方法を示す。BOは領域における類似の輝度値を有する画素セットに対して同じオフセットを応用する方法を示す。具体的に、画素輝度を32個の同じ区間に区別してもよく、類似の輝度値を有する画素を1つのセットとして設定してもよい。例えば、32個のバンドのうちの隣接する4つのバンドを1組に設定してもよく、4つのバンドの属するサンプルに対して同じオフセット量を応用してもよい。
【0577】
ALFは第1復元ピクチャ又はデブロッキングフィルタを応用する復元ピクチャに対して予め定義されたサイズ/形状のフィルタを応用して第2復元ピクチャを生成する方法である。下記等式34にはALFを応用する例を示す。
【0578】
等式34
【数33】
【0579】
ピクチャ、符号化木ユニット、符号化ブロック、予測ブロック又は変換ブロック単位で予め定義されたフィルタ候補のうちのいずれか1つを選択してもよい。各フィルタ候補のサイズ又は形状のうちのいずれか1つが異なってもよい。
【0580】
図48は予め定義されたフィルタ候補を示す図である。
【0581】
図48に示される例では、5×5、7×7及び9×9菱形のうちの少なくとも1つを選択してもよい。
【0582】
色度成分に対してサイズ5×5の菱形しか使用できない。
【0583】
復号過程又は符号化過程を中心として説明する実施例を符号化過程又は復号過程に用いることも本発明の範囲に含まれる。説明される順序と異なる順序で所定順序に従って説明される複数の実施例を変更することも本発明の範囲に含まれる。
【0584】
一連のステップ又はフローチャートに基づいて実施例を説明したが、前記実施例は本発明の時間シーケンス順序を制限するものではなく、且つ必要に応じて同時に実行され又は他の順序に従って実行されてもよい。また、上記実施例では、ブロック図を構成する構造要素(例えば、ユニット、モジュール等)は更にそれぞれハードウェア装置又はソフトウェアとして実現されてもよく、且つ複数の構造要素は単一のハードウェア装置又はソフトウェアとして組み合わせて実施されてもよい。前記実施例はプログラム命令の形式で実施されてもよく、前記プログラム命令は様々なコンピュータ部材により実行され、コンピュータ可読記録媒体に記録されてもよい。前記コンピュータ可読記録媒体はプログラム命令、データファイル、データ構造等を独立して含み、又はプログラム命令、データファイル、データ構造等を組み合わせて含んでもよい。コンピュータ可読記録媒体の例はハードディスク、フロッピーディスク及び磁気テープ等の磁性媒体、CD-ROM、DVD等の光学記録媒体、フロプティカルディスク(floptical disk)の磁気-光媒体(magneto-optical media)、及びROM、RAM、フラッシュメモリ等のプログラム命令を記憶して該命令を実行するために特に設定されたハードウェア装置を含んでもよい。前記ハードウェア装置は1つ又は複数のソフトウェアモジュールとして操作して本発明に係る処理を実行するように設定されてもよく、逆も同様である。
【産業上の利用可能性】
【0585】
本発明はビデオを符号化/復号する電子装置に応用されてもよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20a
図20b
図21a
図21b
図22
図23
図24
図25
図26
図27
図28a
図28b
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41a
図41b
図42
図43
図44
図45a
図45b
図46
図47
図48