(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023179758
(43)【公開日】2023-12-19
(54)【発明の名称】ビデオ信号符号化/復号方法及びその機器
(51)【国際特許分類】
H04N 19/105 20140101AFI20231212BHJP
H04N 19/176 20140101ALI20231212BHJP
H04N 19/70 20140101ALI20231212BHJP
H04N 19/136 20140101ALI20231212BHJP
【FI】
H04N19/105
H04N19/176
H04N19/70
H04N19/136
【審査請求】有
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023180938
(22)【出願日】2023-10-20
(62)【分割の表示】P 2021523491の分割
【原出願日】2019-11-08
(31)【優先権主張番号】10-2018-0136249
(32)【優先日】2018-11-08
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2018-0136306
(32)【優先日】2018-11-08
(33)【優先権主張国・地域又は機関】KR
(71)【出願人】
【識別番号】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
【弁理士】
【氏名又は名称】出口 智也
(72)【発明者】
【氏名】リー、ベグン
(57)【要約】 (修正有)
【課題】インター予測効率を向上させる符号化ブロックを複数の予測ブロックに分割して複数の予測のうちの各予測ブロックの動き情報を導出するビデオ信号符号化/復号方法及びその機器を提供する。
【解決手段】復号方法は、符号化ブロックを第1予測ユニットPU1及び第2予測ユニットPU2に分割するステップと、前記符号化ブロックのマージ候補リストを導出するステップと、前記マージ候補リストを用いて前記第1予測ユニットの第1動き情報及び前記第2予測ユニットの第2動き情報を導出するステップと、前記第1動き情報及び前記第2動き情報に基づいて、前記符号化ブロックにおける予測サンプルを得るステップと、を含む。
【選択図】
図23
【特許請求の範囲】
【請求項1】
ビデオ復号方法であって、
符号化ブロックのマージ候補リストを導出するステップと、
前記マージ候補リストを用いて第1動き情報及び第2動き情報を導出するステップと、
前記第1動き情報及び前記第2動き情報に基づいて、前記符号化ブロックにおける予測サンプルを得るステップと、を含み、
前記第1動き情報は、前記マージ候補リストにおける第1マージ候補から導出されたものであり、前記第2動き情報は、前記第1マージ候補と異なる第2マージ候補から導出されたものであり、
前記第1マージ候補を決定するための第1インデックス情報及び前記第2マージ候補を決定するための第2インデックス情報は、ビットストリームからの復号によって得られ、前記第2インデックス情報の値が前記第1インデックス情報の値以上である場合、前記第2インデックス情報の値は、前記第2インデックス情報の値に1を加算することで得られる、ビデオ復号方法。
【請求項2】
前記符号化ブロックに従って第1予測ユニット及び第2予測ユニットを取得するステップをさらに含み、前記第1動き情報は前記第1予測ユニットに対応し、前記第2動き情報は前記第2予測ユニットに対応する、請求項1に記載のビデオ復号方法。
【請求項3】
前記符号化ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、前記符号化ブロックに従って前記第1予測ユニット及び前記第2予測ユニットを取得することが許可されない、請求項2に記載のビデオ復号方法。
【請求項4】
前記符号化ブロックの幅と高さの比が第1閾値より高い場合、前記符号化ブロックに従って前記第1予測ユニット及び前記第2予測ユニットを取得することが許可されない、請求項2に記載のビデオ復号方法。
【請求項5】
前記マージ候補リストに含まれるマージ候補の最大数は、前記第1予測ユニットおよび前記第2予測ユニットが得られるか否かに基づいて決定される、請求項2に記載のビデオ復号方法。
【請求項6】
前記符号化ブロックに従って第1予測ユニット及び第2予測ユニットを取得するステップは、
前記符号化ブロックに分割を適用して、前記第1予測ユニットと前記第2予測ユニットを取得するステップを含む、請求項2に記載のビデオ復号方法。
【請求項7】
ビデオ符号化方法であって、
符号化ブロックのマージ候補リストを導出するステップと、
前記マージ候補リストを用いて第1動き情報及び第2動き情報を導出するステップと、
前記第1動き情報及び前記第2動き情報に基づいて、前記符号化ブロックにおける予測サンプルを得るステップと、を含み、
前記第1動き情報は、前記マージ候補リストにおける第1マージ候補から導出されたものであり、前記第2動き情報は、前記第1マージ候補と異なる第2マージ候補から導出されたものであり、
前記第1マージ候補を決定するための第1インデックス情報及び前記第2マージ候補を決定するための第2インデックス情報を符号化するステップをさらに含み、
前記第2インデックス情報の値が前記第1インデックス情報の値以上である場合、前記第2インデックス情報は、前記第2マージ候補のインデックスに1を加算することによって得られた値を使用して符号化される、ビデオ符号化方法。
【請求項8】
前記符号化ブロックに従って第1予測ユニット及び第2予測ユニットを取得するステップをさらに含み、前記第1動き情報は前記第1予測ユニットに対応し、前記第2動き情報は前記第2予測ユニットに対応する、請求項7に記載のビデオ符号化方法。
【請求項9】
前記符号化ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、前記符号化ブロックに従って前記第1予測ユニット及び前記第2予測ユニットを取得することが許可されない、請求項8に記載のビデオ符号化方法。
【請求項10】
前記符号化ブロックの幅と高さの比が第1閾値より高い場合、前記符号化ブロックに従って前記第1予測ユニット及び前記第2予測ユニットを取得することが許可されない、請求項8に記載のビデオ符号化方法。
【請求項11】
前記マージ候補リストに含まれるマージ候補の最大数は、前記第1予測ユニットおよび前記第2予測ユニットが得られるか否かに基づいて決定される、請求項8に記載のビデオ符号化方法。
【請求項12】
前記符号化ブロックに従って第1予測ユニット及び第2予測ユニットを取得するステップは、
前記符号化ブロックに分割を適用して、前記第1予測ユニットと前記第2予測ユニットを取得するステップを含む、請求項8に記載のビデオ符号化方法。
【請求項13】
ビデオ復号機器であって、
請求項1から6のいずれかに記載のビデオ復号方法を実行するように構成されたイントラ予測部を備える、ビデオ復号機器。
【請求項14】
ビデオ符号化機器であって、
請求項7から12のいずれかに記載のビデオ符号化方法を実行するように構成されたイントラ予測部を備える、ビデオ符号化機器。
【請求項15】
コンピュータ読み取り可能な記憶媒体であって、
コンピュータに、請求項1から6のいずれかに記載のビデオ復号方法を実行させるか、又は、請求項7から12のいずれかに記載のビデオ符号化方法を実行させるコンピュータプログラムを記憶した、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ビデオ信号符号化/復号方法及びその機器に関する。
【背景技術】
【0002】
表示パネルがますます大きくなっていることにつれて、画質がより高いビデオサービスは必要になっている。高精細度ビデオサービスの最大の問題は、データ量の大幅な増加である。このような問題を解決するために、ビデオ圧縮率の向上に関する検討を積極的に進行している。代表的な例として、2009年に、動画像専門家グループ(Motion Picture Experts Group:MPEG)及び国際電気通信連合-電気通信(International Telecommunication Union-Telecommunication:ITU-T)傘下のビデオ符号化専門家グループ(Video Coding Experts Group:VCEG)は、ビデオ符号化共同チーム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マージ候補から導出されたものであり、前記第2予測ユニットの前記第2動き情報は、前記第1マージ候補と異なる第2マージ候補から導出されたものである。
【0008】
本発明によるビデオ信号復号/符号化方法において、前記符号化ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、符号化ブロックを分割することは許可されない可能性がある。
【0009】
本発明によるビデオ信号復号/符号化方法において、前記方法は、ビットストリームから、前記第1マージ候補を指定するための第1インデックス情報及び前記第2マージ候補を指定するための第2インデックス情報を復号するステップことであって、前記第2インデックス情報の値が前記第1インデックス情報の値以上である場合、前記第2マージ候補は、前記第2インデックス情報の値に1を加算することで得られた値をインデックスとして有する、ステップを更に含む。
【0010】
本発明のビデオ信号符号化/復号方法において、前記予測サンプルが前記第1予測ユニットと前記第2予測ユニットとの境界領域に含まれる場合、前記予測サンプルは、前記第1動き情報に基づいて導出された第1予測サンプル及び前記第2動き情報に基づいて導出された第2予測サンプルの加重和演算に基づいて導出されることができる。
【0011】
本発明のビデオ信号符号化/復号方法において、前記第1予測サンプルに適用される第1加重値は、前記予測サンプルのx軸座標及びy軸座標に基づいて決定されることができる。
【0012】
本発明のビデオ信号符号化/復号方法において、前記第2予測サンプルに適用される第2加重値は、定数から前記第1加重値を減算することによって導出されることができる。
【0013】
本発明によるビデオ信号復号/符号化方法において、前記マージ候補リストに含まれるマージ候補の最大数は、前記符号化ブロックが前記第1予測ユニット及び前記第2予測ユニットに分割されるかどうかに基づいて決定されることができる。
【0014】
本発明の上記簡単な要約の特徴は、下記説明される本発明の詳細な記載の例示的な実施形態だけであり、本発明の範囲を限定するものではない。
【発明の効果】
【0015】
本発明によれば、符号化ブロックを複数の予測ブロックに分割して複数の予測のうちの各予測ブロックの動き情報を導出する方法を提供することで、インター予測効率を向上させることができる。
【0016】
本発明によれば、インター動き情報リストを用いてマージ候補を導出する方法を提供することで、インター予測効率を向上させることができる。
【0017】
本発明で取得可能な効果は、上記効果に限定されず、本発明が属する技術分野において通常の知識を有する者は、下記記述により、言及されていない他の効果を明瞭に理解する。
【図面の簡単な説明】
【0018】
【
図1】本発明の実施例によるビデオエンコーダ(encoder)を示すブロック図である。
【
図2】本発明の実施例によるビデオデコーダ(decoder)を示すブロック図である。
【
図3】本発明の実施例による基本符号化ツリーユニットを示す図である。
【
図4】符号化ブロックの複数の分割タイプを示す図である。
【
図5】符号化ツリーユニットの分割モードを示す図である。
【
図6】本発明の実施例によるインター予測方法を示すフローチャートである。
【
図8】本発明の実施例によるアフィン動きに基づくインター予測方法を示すフローチャートである。
【
図9】各アフィン動きモデルのアフィンシードベクトルの例を示す図である。
【
図10】4パラメータ動きモデルにおけるサブブロックのアフィンベクトルの例を示す図である。
【
図11】マージモードで現在ブロックの動き情報を導出するプロセスを示すフローチャートである。
【
図12】マージ候補を導出するための候補ブロックの例を示す図である。
【
図14】マージ候補を導出するための候補ブロックの例を示す図である。
【
図15】インター動き情報リストの更新状態を示すフローチャートである。
【
図16】インターマージ候補リストの更新の実施例を示す図である。
【
図17】記憶されたインターマージ候補のインデックスが更新された例を示す図である。
【
図18】代表的なサブブロックの位置を示す図である。
【
図19】異なるインター予測モードに対してインター動き情報リストを生成する例を示す図である。
【
図20】長期動き情報リストに含まれるインターマージ候補をマージ候補リストに追加する例を示す図である。
【
図21】一部のマージ候補のみに対して冗長検出を実行する例を示す図である。
【
図22】特定のマージ候補に対する冗長検出をスキップする例を示す図である。
【
図23】対角線を用いて符号化ブロックを複数の予測ユニットに分割する例を示す図である。
【
図24】符号化ブロックを2つの予測ユニットに分割する例を示す図である。
【
図25】符号化ブロックを、異なる大きさを有する複数の予測ブロックに分割する例を示す図である。
【
図26】三角形マージ候補を導出するための隣接ブロックを示す図である。
【
図27】各三角形予測ユニットの隣接ブロックの利用可能性を決定するための例を示す図である。
【
図28】第1予測サンプル及び第2予測サンプルの加重和演算に基づいて予測サンプルを導出する例を示す図である。
【
図29】第1予測サンプル及び第2予測サンプルの加重和演算に基づいて予測サンプルを導出する例を示す図である。
【発明を実施するための形態】
【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つの処理ユニットに分割することができる。この場合、処理ユニットは、予測ユニット(Prediction Unit:PU)であってもよく、変換ユニット(Transform Unit:TU)であってもよく、更に符号化ユニット(Coding Unit:CU)であってもよい。画像分割部110は、1つの画像を複数の符号化ユニット、予測ユニット及び変換ユニットの組み合わせに分割する。所定の基準(例えば、コスト関数)に基づいて符号化ユニット、予測ユニット及び変換ユニットの組み合わせを選択して画像を符号化することができる。
【0028】
例えば、1つの画像を複数の符号化ユニットに分割することができる。画像を符号化ユニットに分割するために、四分木構造(Quad Tree Structure)のような再帰的ツリー構造を用いて、1つのビデオ又は最大符号化ユニット(largest coding unit)をルート(root)として符号化ユニットを他の符号化ユニットに分割することができる。前記他の符号化ユニットは、分割された符号化ユニットの数と同じである数の子ノードを有してもよい。幾つかの制限によって分割されない符号化ユニットは、リーフノードとなる。つまり、1つの符号化ユニットが正方形分割だけを実現できると仮定する場合、1つの符号化ユニットを最大限4つの他の符号化ユニットに分割することができる。
【0029】
以下、本発明の実施例において、符号化ユニットは、符号化を実行するユニットを指してもよく、復号を実行するユニットを指してもよい。
【0030】
1つの符号化ユニットにおける予測ユニットを大きさが同じである正方形又は矩形のうちの少なくとも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つを含み、DSTcは、DST7を含む。残差ブロックを変換するためにDCTを適用するかそれともDSTを適用するかについて、残差ブロックを生成するための予測ユニットのイントラ予測モード情報に基づいて決定することができる。残差ブロックに対する変換をスキップすることもできる。残差ブロックに対する変換をスキップするかどうかを表すフラグを符号化することができる。大きさが閾値以下である残差ブロック、輝度成分又は色度成分(4:4:4フォーマット以下)について、変換をスキップすることを許容できる。
【0042】
量子化部135は、変換部130で周波数領域に変換された値を量子化することができる。量子化係数は、ブロック又は画像の重要度によって変わってもよい。量子化部135で算出された値は、逆量子化部140及び再配列部160に提供できる。
【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つのフィルタを決定することで、各グループに対してフィルタリングを差別的に実行することができる。適応的ループフィルタリングを適用するかどうかに関わる情報及び輝度情報を符号化ユニット(Coding Unit:CU)に応じて伝送することができる。適用される適応的ループフィルタの形状及びフィルタ係数は、各ブロックによって異なる。なお、適用されるブロックの特性に関わらず、同一タイプ(一定のタイプ)の適応的ループフィルタを適用することもできる。
【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つの画像は、複数の符号化ツリーユニット(符号化ツリーユニットは、大きさがCoding Tree Unit:CTU)に分割されてもよい。最も大きい符号化ユニットであり、最大符号化ユニット(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:インター予測)、現在画像参照(Current Picture Referencing:CPR)、イントラブロック複製(Intra Block Copy:IBC))又は組み合わせ予測(Combined Prediction)を含み得る。符号化ブロックについて、イントラ予測、インター予測、現在画像参照又は組み合わせ予測のうちの少なくとも1つの予測符号化モードを用いて、符号化ブロックに関わる予測ブロックを生成することができる。
【0078】
ビットストリームを介して、信号で、現在ブロックの予測符号化モードを表す情報を送信することができる。例えば、前記情報は、予測符号化モードがイントラモードであるかそれともインターモードであるかを示す1ビットフラグであってもよい。現在ブロックの予測符号化モードがインターモードであると決定された場合のみ、現在画像参照又は組み合わせ予測を用いることができる。
【0079】
現在画像参照は、現在画像を参照画像とし、現在画像における符号化/復号された領域から現在ブロックの予測ブロックを取得するために用いられる。ここで、現在画像は、現在ブロックを含む画像を意味する。ビットストリームを介して、信号で、現在ブロックに対して現在画像参照を適用するかどうかを表す情報を送信することができる。例えば、前記情報は、1ビットフラグであってもよい。前記フラグが真である場合、現在ブロックの予測符号化モードを現在画像参照と決定することができる。前記フラグが偽である場合、現在ブロックの予測モードをインター予測と決定することができる。
【0080】
代替的には、参照画像インデックスに基づいて、現在ブロックの予測符号化モードを決定することができる。例えば、参照画像インデックスが現在画像を指し示す場合、現在ブロックの予測符号化モードを現在画像参照と決定することができる。参照画像インデックスが現在の画像ではない他の画像を指し示す場合、現在ブロックの予測符号化モードをインター予測と決定することができる。つまり、現在画像参照は、現在画像における符号化/復号された領域の情報を用いる予測方法であり、また、インター予測は、符号化/復号された他の画像の情報を用いる予測方法である。
【0081】
組み合わせ予測は、イントラ予測、インター予測及び現在画像参照のうちの2つ以上を組み合わせることで形成された符号化モードである。例えば、組み合わせ予測を適用する場合、イントラ予測、インター予測又は現在画像参照のうちの1つに基づいて、第1予測ブロックを生成することができ、また、もう1つに基づいて、第2予測ブロックを生成することができる。第1予測ブロック及び第2予測ブロックを生成する場合、第1予測ブロック及び第2予測ブロックの平均演算及び加重和演算により最終的予測ブロックを生成することができる。ビットストリームを介して、信号で、組み合わせ予測を適用するかどうかを表す情報を送信することができる。前記情報は、1ビットフラグであってもよい。
【0082】
図4は、符号化ブロックの複数の分割タイプを示す図である。
【0083】
四分木分割、二分木分割又は三分木分割に基づいて、符号化ブロックを複数の符号化ブロックに分割することができる。また、四分木分割、二分木分割又は三分木分割に基づいて、分割された符号化ブロックを更に複数の符号化ブロックに分割することもできる。
【0084】
四分木分割は、現在ブロックを4つのブロックに分割する分割技術である。四分木分割の結果として、現在ブロックを4つの正方形パーティション(
図4の(a)における「SPLIT_QT」を参照する)に分割することができる。
【0085】
二分木分割は、現在ブロックを2つのブロックに分割する分割技術である。垂直方向に沿って(即ち、現在ブロックを横断する垂直線を用いる)、現在ブロックを2つのブロックに分割する過程を垂直方向二分木分割と呼び、また、水平方向に沿って(即ち、現在ブロックを横断する水平線を用いる)、現在ブロックを2つのブロックに分割する過程を水平方向二分木分割と呼ぶことができる。二分木分割を行った後に、現在ブロックを2つの非正方形パーティションに分割することができる。
図4の(b)における「SPLIT_BT_VER」は、垂直方向二分木分割結果を表し、また、
図4(c)における「SPLIT_BT_HOR」は、水平方向二分木分割結果を表す。
【0086】
三分木分割は、現在ブロックを3つのブロックに分割する分割技術である。垂直方向に沿って(即ち、現在ブロックを横断する2本の垂直線を用いる)、現在ブロックを3つのブロックに分割する過程を垂直方向三分木分割と呼び、また、水平方向に沿って(即ち、現在ブロックを横断する2本の水平線)、現在ブロックを3つのブロックに分割する過程を水平方向三分木分割と呼ぶことができる。三分木分割を行った後、現在ブロックを3つの非正方形パーティションに分割することができる。この場合、現在ブロックの中心に位置するパーティションの幅/高さは、他のパーティションの幅/高さの2倍であってもよい。
図4(d)における「SPLIT_TT_VER」は、垂直方向三分木分割結果を表し、また、
図4(e)における「SPLIT_TT_HOR」は、水平方向三分木分割結果を表す。
【0087】
符号化ツリーユニットの分割回数を分割深度(Partitioning Depth)と定義することができる。シーケンス又は画像レベルで、符号化ツリーユニットの最大分割深度を決定することができる。従って、符号化ツリーユニットの最大分割深度は、シーケンス又は画像によって異なってもよい。
【0088】
代替的には、複数の分割技術のそれぞれに対して最大分割深度を単独で決定することができる。例えば、四分木分割を許容する最大分割深度は、二分木分割及び/又は三分木分割を許容する最大分割深度と異なってもよい。
【0089】
エンコーダは、ビットストリームを介して、信号で、現在ブロックの分割形状又は分割深度のうちの少なくとも1つを表す情報を送信することができる。デコーダは、ビットストリームから解析された情報に基づいて、符号化ツリーユニットの分割形状及び分割深度を決定することができる。
【0090】
図5は、符号化ツリーユニットの分割例を示す図である。
【0091】
四分木分割、二分木分割及び/又は三分木分割などの分割技術で符号化ブロックを分割する過程を多分木分割(Multi Tree Partitioning)と呼ぶことができる。
【0092】
符号化ブロックに対して多分木分割を適用することで生成された符号化ブロックを複数の下流符号化ブロックと呼ぶことができる。符号化ブロックの分割深度がkである場合、複数の下流符号化ブロックの分割深度をk+1とする。
【0093】
一方で、分割深度がk+1である複数の符号化ブロックについて、分割深度がkである符号化ブロックを上流符号化ブロックと呼ぶことができる。
【0094】
上流符号化ブロックの分割形状又は隣接符号化ブロックの分割タイプのうちの少なくとも1つに基づいて、現在符号化ブロックの分割タイプを決定することができる。ここで、隣接符号化ブロックは、現在符号化ブロックに隣接し、それは、現在符号化ブロックの上隣接ブロック、左隣接ブロック又は左上隅に隣接する隣接ブロックのうちの少なくとも1つを含み得る。ここで、分割タイプは、四分木分割を行うかどうか、二分木分割を行うかどうか、二分木分割方向、三分木分割を行うかどうか又は三分木分割方向のうちの少なくとも1つを含み得る。
【0095】
符号化ブロックの分割形状を決定するために、ビットストリームを介して、信号で、符号化ブロックが分割されたかどうかを表す情報を送信することができる。前記情報は、1ビットフラグ「split_cu_flag」であり、前記フラグが真である場合、多分木分割技術で符号化ブロックを分割することを示す。
【0096】
「split_cu_flag」が真である場合、ビットストリームを介して、信号で、符号化ブロックが四分木分割されたかどうかを表す情報を送信することができる。前記情報は、1ビットフラグ「split_qt_flag」であり、前記フラグが真である場合、符号化ブロックは、4つのブロックに分割されてもよい。
【0097】
例えば、
図5に示す例において、符号化ツリーユニットが四分木分割されたことにより、分割深度が1である4つの符号化ブロックを生成することが図示される。なお、四分木分割結果として生成された4つの符号化ブロックのうちの1番目の符号化ブロック及び4番目の符号化ブロックに対して再び四分木分割を適用することを図示する。最終的に、分割深度が2である4つの符号化ブロックを生成することができる。
【0098】
なお、分割深度が2である符号化ブロックに対して再び四分木分割を適用することで分割深度が3である符号化ブロックを生成することができる。
【0099】
符号化ブロックに対して四分木分割を適用していない場合、符号化ブロックの大きさ、符号化ブロックが画像の境界に位置するかどうか、最大分割深度又は隣接ブロックの分割形状のうちの少なくとも1つを考慮することで、前記符号化ブロックに対して二分木分割を実行するかそれとも三分木分割を実行するかを決定することができる。前記符号化ブロックに対して二分木分割又は三分木分割を実行すると決定した場合、ビットストリームを介して、信号で、分割方向を表す情報を送信することができる。前記情報は、1ビットフラグ「mtt_split_cu_vertical_flag」であってもよい。前記フラグに基づいて、分割方向が垂直方向であるかそれとも水平方向であるかを決定することができる。なお、ビットストリームを介して、信号で、前記符号化ブロックに対して二分木分割又は三分木分割のうちのどちらを適用するかを表す情報を送信することができる。前記情報は、1ビットフラグ「mtt_split_cu_binary_flag」であってもよい。前記フラグに基づいて、前記符号化ブロックに対して二分木分割を適用するかそれとも三分木分割を適用するかを決定することができる。
【0100】
例えば、
図5に示す例において、分割深度が1である符号化ブロックに対して垂直方向二分木分割を適用することを図示する。前記分割結果として生成された符号化ブロックのうちの左側符号化ブロックに対して垂直方向三分木分割を適用し、右側符号化ブロックに対して垂直方向二分木分割を適用する。
【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】
【0111】
ビデオ内の対象の動きは、非線形動きである可能性がある。例えば、
図7に示す例のように、カメラ拡大(Zoom-in)、縮小(Zoom-out)、回転(Rotation)又はアフィン変換などの対象の非線形動きを発生する可能性がある。対象の非線形動きを発生した場合、並進動きベクトルにより対象の動きを有効に表すことができない。従って、対象の非線形動きを発生した部分において、並進動きの代わりに、アフィン動きを用いることで、符号化効率を向上させることができる。
【0112】
図8は、本発明の実施例によるアフィン動きに基づくインター予測方法を示すフローチャートである。
【0113】
ビットストリームから解析された情報に基づいて、現在ブロックに対してアフィン動きに基づくインター予測技術を適用するかどうかを決定することができる。具体的には、現在ブロックに対してアフィンマージモードを適用するかどうかを示すフラグ又は現在ブロックに対してアフィン動きベクトル予測モードを適用するかどうかを示すフラグのうちの少なくとも1つに基づいて、現在ブロックに対してアフィン動きに基づくインター予測技術を適用するかどうかを決定することができる。
【0114】
アフィン動きに基づくインター予測技術を現在ブロックに適用する場合、現在ブロックのアフィン動きモデルを決定することができる(S1101)。アフィン動きモデルは、6パラメータアフィン動きモデル又は4パラメータアフィン動きモデルのうちの少なくとも1つにより決定されてもよい。6パラメータアフィン動きモデルは、6つのパラメータでアフィン動きを表し、また、4パラメータアフィン動きモデルは、4つのパラメータでアフィン動きを表す。
【0115】
式1は、6つのパラメータでアフィン動きを表す場合である。アフィン動きは、アフィンシードベクトルにより決定された所定領域の並進動きを表す。
【数1】
【0116】
6つのパラメータでアフィン動きを表す場合、複雑な動きを表すことができるが、各パラメータに対して符号化を行う場合に必要なビット数は増加するため、符号化効率を低下させる。従って、4つのパラメータで、アフィン動きを表すこともできる。式2は、4つのパラメータで、アフィン動きを表す場合である。
【数2】
【0117】
現在ブロックのアフィン動きモデルを決定するための情報に対して符号化を行い、ビットストリームを介して、信号で送信することができる。例えば、前記情報は、1ビットフラグ「affine_type_flag」であってもよい。前記フラグの値が0である場合、4パラメータアフィン動きモデルを適用することを表す。前記フラグの値が1である場合、6パラメータアフィン動きモデルを適用することを表す。前記フラグは、スライス(slice)、タイル(tile)又はブロック(例えば、符号化ブロック又は符号化ツリーユニット)を単位として符号化を行うことができる。スライスレベルで、信号を用いてフラグを送信する場合、前記スライスに属する全てのブロックに対して、前記スライスレベルで決定されたアフィン動きモデルを適用することができる。
【0118】
代替的には、現在ブロックのアフィンインター予測モードに基づいて、現在ブロックのアフィン動きモデルを決定することができる。例えば、アフィンマージモードを適用する場合、現在ブロックのアフィン動きモデルを4パラメータ動きモデルと決定することができる。一方で、アフィン動きベクトル予測モードを適用する場合、現在ブロックのアフィン動きモデルを決定するための情報に対して符号化を行い、ビットストリームを介して信号で送信することができる。例えば、現在ブロックに対してアフィン動きベクトル予測モードを適用する場合、1ビットフラグ「affine_type_flag」に基づいて、現在ブロックのアフィン動きモデルを決定することができる。
【0119】
次に、現在ブロックのアフィンシードベクトルを導出することができる(S1102)。4パラメータアフィン動きモデルを選択した場合、現在ブロックの2つの制御点での動きベクトルを導出することができる。なお、6パラメータアフィン動きモデルを選択した場合、現在ブロックの3つの制御点での動きベクトルを導出することができる。制御点での動きベクトルをアフィンシードベクトルと呼ぶことができる。制御点は、現在ブロックの左上隅、右上隅又は左下隅のうちの少なくとも1つを含み得る。
【0120】
図9は、各アフィン動きモデルのアフィンシードベクトルの例を示す図である。
【0121】
4パラメータアフィン動きモデルにおいて、左上隅、右上隅又は左下隅のうちの2つに関わるアフィンシードベクトルを導出することができる。例えば、
図9の(a)に示す例のように、4パラメータアフィン動きモデルを選択した場合、現在ブロックの左上隅(例えば、左上サンプル(x0,y0))に関わるアフィンシードベクトルsv
0及び現在ブロックの右上隅(例えば、右上サンプル(x1,y1))に関わるアフィンシードベクトルsv
1を用いてアフィンベクトルを導出することができる。また、左上隅に関わるアフィンシードベクトルの代わりに、左下隅に関わるアフィンシードベクトルを用いることもできる。又は、右上隅に関わるアフィンシードベクトルの代わりに、左下隅に関わるアフィンシードベクトルを用いることもできる。
【0122】
6パラメータアフィン動きモデルにおいて、左上隅、右上隅及び左下隅に関わるアフィンシードベクトルを導出することができる。例えば、
図9の(b)に示す例のように、6パラメータアフィン動きモデルを選択し場合、現在ブロックの左上隅(例えば、左上サンプル(x0,y0))に関わるアフィンシードベクトルsv
0、現在ブロックの右上隅(例えば、右上サンプル(x1,y1))に関わるアフィンシードベクトルsv
1及び現在ブロックの左上隅(例えば、左上サンプル(x2,y2))に関わるアフィンシードベクトルsv
2を用いてアフィンベクトルを導出することができる。
【0123】
後述する実施例において、4パラメータアフィン動きモデルで、左上制御点及び右上制御点のアフィンシードベクトルをそれぞれ第1アフィンシードベクトル及び第2アフィンシードベクトルと呼ぶ。後述する、第1アフィンシードベクトル及び第2アフィンシードベクトルを用いる実施例において、第1アフィンシードベクトル及び第2アフィンシードベクトルのうちの少なくとも1つを左下制御点のアフィンシードベクトル(第3アフィンシードベクトル)又は右下制御点のアフィンシードベクトル(第4アフィンシードベクトル)に置き換えることができる。
【0124】
なお、6パラメータアフィン動きモデルで、左上制御点、右上制御点及び左下制御点のアフィンシードベクトルをそれぞれ第1アフィンシードベクトル、第2アフィンシードベクトル及び第3アフィンシードベクトルと呼ぶ。後述する、第1アフィンシードベクトル、第2アフィンシードベクトル及び第3アフィンシードベクトルを用いる実施例において、第1アフィンシードベクトル、第2アフィンシードベクトル及び第3アフィンシードベクトルのうちの少なくとも1つを右下制御点のアフィンシードベクトル(第4アフィンシードベクトル)に置き換えることができる。
【0125】
アフィンシードベクトルを用いて、異なるサブブロックに応じて、アフィンベクトルを導出することができる(S803)。ここで、アフィンベクトルは、アフィンシードベクトルに基づいて導出された並進動きベクトルを表す。サブブロックのアフィンベクトルをアフィンサブブロック動きベクトル又はサブブロック動きベクトルと呼ぶことができる。
【0126】
図10は、4パラメータ動きモデルにおけるサブブロックのアフィンベクトルの例を示す図である。
【0127】
制御点の位置、サブブロックの位置及びアフィンシードベクトルに基づいてサブブロックのアフィンベクトルを導出することができる。例えば、式3は、アフィンサブブロックベクトルの導出例を示す。
【数3】
【0128】
前記式3において、(x,y)は、サブブロックの位置を表す。ここで、サブブロックの位置は、サブブロックに含まれる参照サンプルの位置を表す。参照サンプルは、サブブロックの左上隅に位置するサンプルであってもよく、又はx軸又はy軸座標における少なくとも1つの、中心位置に位置するサンプルであってもよい。(x0,y0)は、第1制御点の位置を表し、また、(sv0x,sv0y)は、第1アフィンシードベクトルを表す。なお、(x1,y1)は、第2制御点の位置を表し、また、(sv1x,sv1y)は、第2アフィンシードベクトルを表す。
【0129】
第1制御点及び第2制御点はそれぞれ現在ブロックの左上隅及び右上隅に対応する場合、x1-x0を現在ブロックの幅と同じである値と設定することができる。
【0130】
続いて、各サブブロックのアフィンベクトルを用いて各サブブロックに対して動き補償予測を実行することができる(S1104)。動き補償予測を実行した後、各サブブロックに関わる予測ブロックを生成することができる。サブブロックの予測ブロックを現在ブロックの予測ブロックと設定することができる。
【0131】
続いて、並進動き情報を用いたインター予測方法を詳しく説明する。
【0132】
現在ブロックの他のブロックの動き情報から現在ブロックの動き情報を導出することができる。ここで、他のブロックは、現在ブロックよりも優先してインター予測で符号化/復号を行うブロックであてもよい。現在ブロックの動き情報を他のブロックの動き情報と同じくする場合をマージモードと定義することができる。また、他のブロックの動きベクトルを現在ブロックの動きベクトルの予測値と設定する場合を動きベクトル予測モードと定義することができる。
【0133】
図11は、マージモードで現在ブロックの動き情報を導出するプロセスを示すフローチャートである。
【0134】
現在ブロックのマージ候補を導出することができる(S1101)。現在ブロックのマージ候補は、現在ブロックの前の、インター予測で符号化/復号されたブロックから導出される。
【0135】
図12は、マージ候補を導出するための候補ブロックの例を示す図である。
【0136】
候補ブロックは、現在ブロックに隣接するサンプルを含む隣接ブロック又は現在ブロックに隣接しないサンプルを含む非隣接ブロックのうちの少なくとも1つを含み得る。以下に、候補ブロックを決定するためのサンプルを参照サンプルと指定する。なお、現在ブロックに隣接する参照サンプルを隣接参照サンプルと呼び、現在ブロックに隣接しない参照サンプルを非隣接参照サンプルと呼ぶ。
【0137】
隣接参照サンプルは、現在ブロックの最左側列の隣接列、又は現在ブロックの最上行の隣接行に含まれてもよい。例えば、現在ブロックの左上サンプの座標が(0,0)であると、(-1,H-1)位置での参照サンプルを含むブロック、(W-1,-1)位置での参照サンプルを含むブロック、(W,-1)位置での参照サンプルを含むブロック、(-1,H)位置での参照サンプルを含むブロック又は(-1,-1)位置での参照サンプルを含むブロックのうちの1つは、候補ブロックとして用いられてもよい。図面に示すように、インデックスが0から4である隣接ブロックを候補ブロックとして用いることができる。
【0138】
非隣接参照サンプルは、現在ブロックに隣接する参照サンプルとのx軸距離又はy軸距離のうちの少なくとも1つが事前定義された値を有するサンプルを表す。例えば、左側参照サンプルとのx軸距離が事前定義された値である参照サンプルを含むブロック、上参照サンプルとのy軸距離が事前定義された値である非隣接サンプルを含むブロック、又は左上参照サンプルとのx軸距離及びy軸距離が事前定義された値である非隣接サンプルを含むブロックのうちの1つを候補ブロックとして用いることができる。事前定義された値は、4、8、12、16等の整数であってもよい。図面に示すように、インデックスが5から26であるブロックのうちの少なくとも1つを候補ブロックとして用いることができる。
【0139】
隣接参照サンプルと同一の垂直線、水平線又は対角線に位置しないサンプルを非隣接参照サンプルとすることができる。
【0140】
【0141】
図13に示す例のように、上非隣接参照サンプルのx座標を上隣接参照サンプルのx座標と異なるように設定することができる。例えば、上隣接参照サンプルの位置が(W-1,-1)である場合、y軸に沿って上隣接参照サンプルからNだけ離れる上非隣接参照サンプルの位置を((W/2)-1,-1-N)とし、また、y軸に沿って上隣接参照サンプルから2Nだけ離れる上非隣接参照サンプルの位置を(0,-1-2N)とすることができる。つまり、非隣接参照サンプルの位置は、隣接参照サンプルの位置及び隣接参照サンプルとの距離に基づいて決定されてもよい。
【0142】
以下、候補ブロックのうちの、隣接参照サンプルを含む候補ブロックを隣接ブロックと呼び、非隣接参照サンプルを含むブロックを非隣接ブロックと呼ぶ。
【0143】
現在ブロックと候補ブロックとの距離が閾値以上である場合、前記候補ブロックを、マージ候補として利用不可能であるものと設定することができる。前記閾値は、符号化ツリーユニットの大きさによって決まってもよい。例えば、前記閾値を符号化ツリーユニットの高さ(ctu_height)とするか又は符号化ツリーユニットの高さに対してオフセット値を加算又は減算することで得られた値(例えば、ctu_height ± N)とすることができる。オフセット値Nは、エンコーダ及びデコーダで事前定義された値であり、4、8、16、32又はctu_heightとしてもよい。
【0144】
現在ブロックのy軸座標と候補ブロックに含まれるサンプルのy軸座標との差分値が閾値より大きい場合、候補ブロックを、マージ候補として利用不可能であるものと決定することができる。
【0145】
代替的には、現在ブロックと同一の符号化ツリーユニットに属しない候補ブロックを、マージ候補として利用不可能であるものと設定することができる。例えば、参照サンプルは現在ブロックが属する符号化ツリーユニットの上境界を越えた場合、参照サンプルを含む候補ブロックを、マージ候補として利用不可能であるものと設定することができる。
【0146】
現在ブロックの上境界が符号化ツリーユニットの上境界に隣接する場合、複数の候補ブロックを、マージ候補として利用不可能であるものと設定すれば、現在ブロックの符号化/復号効率を低下させる。上記問題を解決するために、候補ブロックを設定することで、現在ブロックの上方に位置する候補ブロックの数を現在ブロックの左側に位置する候補ブロックの数より多くすることができる。
【0147】
図14は、マージ候補を導出するための候補ブロックの例を示す図である。
【0148】
図14に示す例のように、現在ブロックの上方のN個のブロック列に属する上ブロック及び現在ブロックの左側のM個のブロック列に属する左側ブロックを候補ブロックとすることができる。この場合、MをNより大きいものとすることで、左側候補ブロックの数を上候補ブロックの数より大きいものとすることができる。
【0149】
例えば、現在ブロック内の参照サンプルのy軸座標と候補ブロックとして利用可能である上ブロックのy軸座標との差分値を現在ブロックの高さのN倍以下にすることができる。なお、現在ブロック内の参照サンプルのx軸座標と候補ブロックとして利用可能である左側ブロックのx軸座標との差分値を現在ブロックの幅のM倍以下にすることができる。
【0150】
例えば、
図14に示す例において、現在ブロックの上方の2つのブロック列に属するブロック及び現在ブロックの左側の5つのブロック列に属するブロックを候補ブロックとすることを図示する。
【0151】
現在ブロックと異なる画像に含まれる時間的隣接ブロックからマージ候補を導出することもできる。例えば、コロケーテッド画像に含まれるコロケーテッドブロックからマージ候補を導出することができる。
【0152】
マージ候補の動き情報を候補ブロックの動き情報と同じであるように設定することができる。例えば、候補ブロックの動きベクトル、参照画像インデックス、予測方向又は双方向加重値インデックスのうちの少なくとも1つをマージ候補の動き情報とすることができる。
【0153】
マージ候補を含むマージ候補リストを生成することができる(S1102)。前記マージ候補は、現在ブロックに隣接する隣接ブロックから導出された隣接マージ候補、及び非隣接ブロックから導出された非隣接マージ候補に分類されてもよい。
【0154】
所定の順番に応じて、マージ候補リスト内の複数のマージ候補のインデックスを割り当てることができる。例えば、隣接マージ候補に割り当てられるインデックスは、非隣接マージ候補に割り当てられるインデックスよりも小さい値を有してもよい。代替的には、
図12又は
図14に示す各ブロックのインデックスに基づいて、インデックスを各マージ候補に割り当てることができる。
【0155】
マージ候補リストに複数のマージ候補が含まれる場合、前記複数のマージ候補のうちの少なくとも1つを選択することができる(S1103)。この場合、ビットストリームを介して、信号で、現在ブロックの動き情報が隣接マージ候補から導出されたものであるかどうかを示す情報を送信することができる。前記情報は、1ビットフラグであってもよい。例えば、ビットストリームを介して、信号で、現在ブロックの動き情報が隣接マージ候補から導出されたものであるかどうかを示すシンタックス要素isAdjancentMergeFlagを送信することができる。シンタックス要素isAdjancentMergeFlagの値が1である場合、現在ブロックの動き情報は、隣接マージ候補に基づいて導出されてもよい。一方で、シンタックス要素isAdjancentMergeFlagの値が0である場合、現在ブロックの動き情報は、非隣接マージ候補に基づいて導出されてもよい。
【0156】
ビットストリームを介して、信号で、複数のマージ候補のうちのいずれかを指定するための情報を送信することができる。例えば、ビットストリームを介して、信号で、マージ候補リストに含まれるマージ候補のうちのいずれか1つのインデックスを示す情報を送信することができる。
【0157】
isAdjacentMergeflagが1である場合、信号を用いて、隣接マージ候補のうちのいずれか1つを決定するためのシンタックス要素merge_idxを送信することができる。シンタックス要素merge_idxの最大値を隣接マージ候補の数との差分値が1である値とすることができる。
【0158】
isAdjacentMergeflagが0である場合、信号を用いて、非隣接マージ候補のうちのいずれか1つを決定するためのシンタックス要素NA_merge_idxを送信することができる。シンタックス要素NA_merge_idxは、非隣接マージ候補のインデックスと隣接マージ候補の数との差を求めることで得られた値を示す。デコーダは、NA_merge_idxに基づいてインデックスに隣接マージ候補の数を加算することで、非隣接マージ候補を選択することができる。
【0159】
マージ候補リストに含まれるマージ候補の数が閾値未満である場合、インター動き情報リストに含まれるマージ候補をマージ候補リストに追加することができる。ここで、閾値は、マージ候補リストに含まれる最大マージ候補数又は最大マージ候補数からオフセット値を減算した値であってもよい。オフセット値は、1又は2等の整数であってもよい。インター動き情報リストは、現在ブロックの前に符号化/復号されたブロックに基づいて導出されたマージ候補を含み得る。
【0160】
インター動き情報リストは、現在画像におけるインター予測に基づいて符号化/復号されたブロックから導出されたマージ候補を含む。例えば、インター動き情報リストに含まれるマージ候補の動き情報を、インター予測に基づいて符号化/復号されたブロックの動き情報に等しいように設定することができる。ここで、動き情報は、動きベクトル、参照画像インデックス、予測方向又は双方向加重値インデックスのうちの少なくとも1つを含み得る。
【0161】
解釈の便宜上、インター動き情報リストに含まれるマージ候補をインターマージ候補と呼ぶ。
【0162】
エンコーダ及びデコーダにより、インター動き情報リストに含まれることが可能であるマージ候補の最大数を事前定義することができる。例えば、インター動き情報リストに含まれることが可能であるマージ候補の最大数は、1、2、3、4、5、6、7、8又はそれ以上(例えば、16)であってもよい。
【0163】
代替的には、ビットストリームを介して、信号で、インター動き情報リストに含まれることが可能であるマージ候補の最大数を示す情報を送信することができる。前記情報は、シーケンスレベル、画像レベル又はスライスレベルで、信号により送信される。
【0164】
代替的には、画像の大きさ、スライスの大きさ又は符号化ツリーユニットの大きさによってインター動き情報リストに含まれるマージ候補の最大数を決定することができる。
【0165】
画像、スライス(slice)、タイル(tile)、ブリック(brick)、符号化ツリーユニット、又は符号化ツリーユニットライン(行又は列)を単位としてインター動き情報リストを初期化することができる。例えば、スライスが初期化されると、インター動き情報リストも初期化され、且つ、インター動き情報リストに如何なるマージ候補も含まれない可能性がある。
【0166】
代替的には、ビットストリームを介して、信号で、インター動き情報リストを初期化するかどうかを示す情報を送信することができる。前記情報は、スライスレベル、タイルレベル、ブリックレベル又はブロックレベルで、信号により送信されてもよい。前記情報がインター動き情報リストの初期化を示す前に、配置されたインター動き情報リストを用いることができる。
【0167】
代替的には、画像パラメータ集合又はスライスヘッダ(slice header)を介して、信号で、インターマージ候補に関わる情報を送信することができる。スライスが初期化されても、インター動き情報リストに初期インターマージ候補が含まれてもよい。従って、インターマージ候補は、スライスにおける一番先に符号化/復号されるブロックに用いられる。
【0168】
ブロックは、符号化/復号順番に応じて符号化/復号される。また、インター予測に基づいて符号化/復号されたブロックは、符号化/復号の順番に応じて予測領域マージ候補と設定されてもよい。
【0169】
図15は、インター動き情報リストの更新情報を示すフローチャートである。
【0170】
現在ブロックに対してインター予測を実行する場合(S1501)、現在ブロックに基づいて、インターマージ候補を導出することができる(S1502)。インターマージ候補の動き情報を現在ブロックの動き情報に等しいように設定することができる。
【0171】
インター動き情報リストが空である場合(S1503)、現在ブロックに基づいて導出されたインターマージ候補をインター動き情報リストに追加することができる(S1504)。
【0172】
インター動き情報リストに前記インターマージ候補が含まれている場合(S1503)、現在ブロックの動き情報(又は現在ブロックに基づいて導出されたインターマージ候補)に対して冗長検出を行うことができる(S1505)。冗長検出は、インター動き情報リストに記憶されているインターマージ候補の動き情報が現在ブロックの動き情報と同じであるかどうかを決定するために用いられる。インター動き情報リストに記憶されている全てのインターマージ候補を対象として冗長検出を実行することができる。代替的には、インター動き情報リストに記憶されているインターマージ候補のうちのインデックスが閾値より大きいか又は閾値より小さいインターマージ候補に対して、冗長検出を行うことができる。
【0173】
現在ブロックの動き情報と同じである動き情報を有するインターマージ候補を含まない場合、現在ブロックに基づいて導出されたインターマージ候補をインター動き情報リストに追加することができる(S1508)。インターマージ候補の動き情報(例えば、動きベクトル及び/又は参照画像インデックス等)が同じであるかどうかに基づいて、インターマージ候補が同じであるかどうかを決定することができる。
【0174】
この場合、インター動き情報リストに最大数のインターマージ候補が記憶された場合(S1506)、最も古いインターマージ候補を削除し(S1507)、また、現在ブロックに基づいて導出されたインターマージ候補をインター動き情報リストに追加することができる(S1508)。
【0175】
複数のインターマージ候補はいずれも、各インデックスにより標識されてもよい。現在ブロックから導出されたインターマージ候補をインター動き情報リストに追加する場合、最も小さいインデックス(例えば、0)を前記インターマージ候補に割り当て、また、記憶されたインターマージ候補のインデックスを1だけ増加させることができる。この場合、インター動き情報リストに最大数のインター予測マージ候補が記憶された場合、インデックスが最も大きいインターマージ候補を削除する。
【0176】
代替的には、現在ブロックから導出されたインターマージ候補をインター動き情報リストに追加する場合、最も大きいインデックスを前記インターマージ候補に割り当てることができる。例えば、インター動き情報リストに記憶されたインターマージ候補の数が最大値未満である場合、値が記憶されたインターマージ候補の数と同じであるインデックスを前記インターマージ候補に割り当てることができる。代替的には、インター動き情報リストに記憶されたインターマージ候補の数が最大値と同じである場合、最大値から1を減算することで得られたインデックスを前記インターマージ候補に割り当てることができる。なお、インデックスが最も小さいインターマージ候補を削除する。また、残りの記憶されたインターマージ候補のインデックスを1だけ減少させることができる。
【0177】
図16は、インターマージ候補リストを更新する実施例を示す図である。
【0178】
現在ブロックから導出されたインターマージ候補をインターマージ候補リストに追加し、最も大きいインデックスを前記インターマージ候補に割り当てると仮定する。また、インターマージ候補リストに最大数のインターマージ候補が記憶されていると仮定する。
【0179】
現在ブロックから導出されたインターマージ候補HmvpCand[n+1]を予測領域マージ候補リストHmvpCandListに追加する場合、記憶されたインターマージ候補のうちのインデックスが最も小さいインターマージ候補HmvpCand[0]を削除する。また、複数の残りのインターマージ候補のインデックスを1だけ減少させることができる。なお、現在ブロックから導出されたインターマージ候補HmvpCand[n+1]のインデックスを最大値(
図16に示す例においてnである)とすることができる。
【0180】
現在ブロックに基づいて導出されたインターマージ候補と同じであるインターマージ候補が記憶された場合(S1505)、現在ブロックに基づいて導出されたインターマージ候補をインター動き情報リストに追加しなくてもよい(S1509)。
【0181】
代替的には、現在ブロックに基づいて導出されたインターマージ候補をインター動き情報リストに追加する場合、記憶された、前記インターマージ候補と同じであるインターマージ候補を削除することができる。この場合、記憶されたインターマージ候補のインデックスの更新と同様な効果を得る。
【0182】
図17は、記憶されたインターマージ候補のインデックスの更新の例を示す図である。
【0183】
記憶された、現在ブロックに基づいて導出されたインターマージ候補mvCandと同じであるインター予測マージ候補のインデックスがhIdxである場合、前記記憶されたインターマージ候補のインデックスを削除する。また、インデックスがhIdxより大きいインターマージ候補のインデックスを1だけ減少させることができる。例えば、
図17に示す例において、mvCandと同じであるHmvpCand[2]をインター動き情報リストHvmpCandリストから削除し、且つ、HmvpCand[3]からHmvpCand[n]のインデックスをそれぞれ1だけ減少させることが図示されている。
【0184】
なお、現在ブロックから導出されたインターマージ候補mvCandをインター動き情報リストの末尾に追加することができる。
【0185】
代替的には、記憶された、現在ブロックに基づいて導出されたインターマージ候補と同じであるインターマージ候補に割り当てられたインデックスを更新することができる。例えば、記憶されたインターマージ候補のインデックスを最小値又は最大値に変更することができる。
【0186】
所定の領域に含まれるブロックの動き情報をインター動き情報リストに追加しないように設定されてもよい。例えば、マージ処理領域に含まれるブロックの動き情報に基づいて導出されたインターマージ候補をインター動き情報リストに追加することができない。マージ処理領域に含まれるブロックの符号化/復号順番が定義されていないため、これらのブロックのうちのいずれか1つの動き情報を他のブロックのインター予測に用いることは、不適切である。従って、マージ処理領域に含まれるブロックに基づいて導出されたインターマージ候補をインター動き情報リストに追加しない可能性がある。
【0187】
サブブロックを単位として動き補償予測を実行する場合、現在ブロックに含まれる複数のサブブロックのうちの代表的なサブブロックの動き情報に基づいてインターマージ候補を導出することができる。例えば、サブブロックマージ候補を現在ブロックに用いる場合、サブブロックのうちの代表的なサブブロックの動き情報に基づいてインターマージ候補を導出することができる。
【0188】
サブブロックの動きベクトルは、下記順番に応じて導出されてもよい。まず、現在ブロックのマージ候補リストに含まれるマージ候補のうちのいずれか1つを選択し、且つ、選択されたマージ候補の動きベクトルに基づいて、初期シフトベクトル(shVector)を導出することができる。また、符号化ブロックにおける各サブブロックの参照サンプル(例えば、左上サンプル又は中間位置サンプル)の位置(xSb,ySb)に初期シフトベクトルを加算することで、参照サンプルの位置が(xColSb,yColSb)であるシフトサブブロックを導出することができる。下記式4は、シフトサブブロックの導出するための式を示す。
【数4】
【0189】
続いて、(xColSb,yColSb)を含むサブブロック中心位置に対応するコロケーテッドブロックの動きベクトルを、(xSb,ySb)を含むサブブロックの動きベクトルと設定する。
【0190】
代表的なサブブロックは、現在ブロックの左上サンプル又は中心サンプルを含むサブブロックを意味してもよい。
【0191】
図18は、代表的なサブブロックの位置を示す図である。
【0192】
図20(a)は、現在ブロックの左上に位置するサブブロックを代表的なサブブロックとする例を示す。
図20(b)は、現在ブロックの中心に位置するサブブロックを代表的なサブブロックとする例を示す。サブブロックを単位として動き補償予測を行う場合、現在ブロックの左上サンプルを含むサブブロック又は現在ブロックの中心サンプルを含むサブブロックの動きベクトルに基づいて、現在ブロックのインターマージ候補を導出することができる。
【0193】
現在ブロックのインター予測モードに基づいて、現在ブロックをインターマージ候補として用いるかどうかを決定することができる。例えば、アフィン動きモデルに基づいて符号化/復号されたブロックを、インターマージ候補として利用不可能であるものと設定することができる。これにより、現在ブロックがインター予測により符号化/復号されても、現在ブロックのインター予測モードがアフィン予測モードである場合、現在ブロックに基づいてインター予測動き情報リストを更新することがない。
【0194】
代替的には、アフィン動きモデルに基づいて符号化/復号されたブロックに含まれるサブブロックのうちの少なくとも1つのサブブロックベクトルに基づいて、インターマージ候補を導出することができる。例えば、現在ブロックの左上に位置するサブブロック、現在ブロックの中心に位置するサブブロック又は現在ブロックの右上に位置するサブブロックを用いて、インターマージ候補を導出することができる。代替的には、複数のサブブロックのサブブロックベクトルの平均値をインターマージ候補の動きベクトルと設定することができる。
【0195】
代替的には、アフィン動きモデルに基づいて符号化/復号されたブロックのアフィンシードベクトルの平均値により、インターマージ候補を導出することができる。例えば、現在ブロックの第1アフィンシードベクトル、第2アフィンシードベクトル及び第3アフィンシードベクトルのうちの少なくとも1つの平均値をインターマージ候補の動きベクトルと設定することができる。
【0196】
代替的には、異なるインター予測モードに対して、インター動き情報リストを配置することができる。例えば、イントラブロック複製により符号化/復号されたブロックに対するインター動き情報リスト、並進動きモデルに基づいて符号化/復号されたブロックに対するインター動き情報リスト、アフィン動きモデルに基づいて符号化/復号されたブロックに対するインター動き情報リストのうちの少なくとも1つを定義することができる。現在ブロックのインター予測モードに基づいて、複数のインター動き情報リストのうちのいずれか1つを選択することができる。
【0197】
図19は、異なるインター予測モードに対してインター動き情報リストを生成する例を示す図である。
【0198】
非アフィン動きモデルに基づいてブロックを符号化/復号する場合、前記ブロックに基づいて導出されたインターマージ候補mvCandをインター非アフィン動き情報リストHmvpCandListに追加することができる。一方で、アフィン動きモデルに基づいてブロックを符号化/復号する場合、前記ブロックに基づいて導出されたインターマージ候補mvAfCandをインターアフィン動き情報リストHmvpAfCandListに追加することができる。
【0199】
ブロックのアフィンシードベクトルを、アフィン動きモデルに基づいて符号化/復号されたブロックから導出されたインターマージ候補に記憶することができる。従って、前記インターマージ候補を、現在ブロックのアフィンシードベクトルを導出するためのマージ候補として用いることができる。
【0200】
説明されたインター動き情報リストに加えて、別のインター動き情報リストを定義することもできる。上記インター動き情報リスト(以下、第1インター動き情報リストと呼ばれる)に加えて、長期動き情報リスト(以下、第2インター動き情報リストと呼ばれる)を定義することもできる。ここで、長期動き情報リストは、長期マージ候補を含む。
【0201】
第1インター動き情報リスト及び第2インター動き情報リストという両者はいずれも空である場合、まず、インターマージ候補を第2インター動き情報リストに追加することができる。第2インター動き情報リストにおける利用可能なインターマージ候補の数が最大数に達した後だけ、インターマージ候補を第1インター動き情報リストに追加することができる。
【0202】
代替的には、1つのインターマージ候補を第2インター動き情報リスト及び第1インター動き情報リストという両者に追加することができる。
【0203】
この場合、配置が完了した第2インター動き情報リストを更新しなくてもよい。代替的には、復号領域がスライスの所定の比率以上である場合、第2インター動き情報リストを更新することができる。代替的には、N個の符号化ツリーユニットラインおきに、第2インター動き情報リストを更新することができる。
【0204】
一方で、インター予測により符号化/復号されたブロックを生成するたびに、第1インター動き情報リストを更新することができる。しかしながら、第2インター動き情報リストに追加されたインターマージ候補を、第1インター動き情報リストの更新に用いないように設定してもよい。
【0205】
ビットストリームを介して、信号で、第1インター動き情報リスト及び第2インター動き情報リストのうちのいずれか1つを選択するための情報を送信することができる。マージ候補リストに含まれるマージ候補の数が閾値未満である場合、前記情報により指示されるインター動き情報リストに含まれるマージ候補をマージ候補リストに追加することができる。
【0206】
代替的には、現在ブロックの大きさ及び形状、インター予測モード、双方向予測を有効化したかどうか、動きベクトル改良を有効化したかどうか、又は、三角形分割を有効化したかどうかに基づいて、インター動き情報リストを選択することができる。
【0207】
代替的には、第1インター動き情報リストに含まれるインターマージ候補が追加されても、マージ候補リストに含まれるマージ候補の数がマージ候補の最大数未満であると、第2インター動き情報リストに含まれるインターマージ候補をマージ候補リストに追加することができる。
【0208】
図20は、長期動き情報リストに含まれるインターマージ候補をマージ候補リストに追加する例を示す図である。
【0209】
マージ候補リストに含まれるマージ候補の数が最大数未満である場合、第1インター動き情報リストHmvpCandListに含まれるインターマージ候補をマージ候補リストに追加することができる。第1インター動き情報リストに含まれるインターマージ候補をマージ候補リストに追加しても、マージ候補リストに含まれるマージ候補の数も最大数未満であると、長期動き情報リストHmvpLTCandリストに含まれるインターマージ候補をマージ候補リストに追加することができる。
【0210】
インターマージ候補は、動き情報に加えて付加情報を更に含むように設定されてもよい。例えば、インターマージ候補にブロックの大きさ、形状又はブロックの分割情報を追加して記憶することができる。現在ブロックのマージ候補リストを構築する場合、インターマージ候補のうち、大きさ、形状、又は分割情報が現在ブロックと同様又は類似したインターマージ候補のみを用いる。又は、大きさ、形状又は分割情報が現在ブロックと同様又は類似したインターマージ候補を優先的にマージ候補リストに追加することができる。
【0211】
代替的には、ブロックの大きさ、形状又は分割情報のそれぞれに対して、インター動き情報リストを生成することができる。複数のインター動き情報リストのうち、現在ブロックの形状、大きさ又は分割情報に対応するインター動き情報リストを用いることで、現在ブロックのマージ候補リストを生成することができる。
【0212】
現在ブロックのマージ候補リストに含まれるマージ候補の数が閾値未満である場合、インター動き情報リストに含まれるインターマージ候補をマージ候補リストに追加することができる。前記追加プロセスは、インデックスの昇順又は降順に応じて実行される。例えば、まず、インデックスが最も大きいインターマージ候補をマージ候補リストに追加することができる。
【0213】
インター動き情報リストに含まれるインターマージ候補をマージ候補リストに追加することが望まれる時、インターマージ候補とマージ候補リストに記憶された複数のマージ候補との間で冗長検出を実行することができる。
【0214】
インター動き情報リストに含まれる一部のインターマージ候補のみに対して冗長検出を実行することができる。例えば、インデックスが閾値以上であるインターマージ候補のみに対して冗長検出を実行することができる。代替的には、インデックスが最も大きいN個のマージ候補又はインデックスが最も小さいN個のマージ候補のみに対して冗長検出を実行することができる。
【0215】
代替的には、マージ候補リストに記憶されたマージ候補のうちの一部のみに対して冗長検出を実行することができる。例えば、インデックスが閾値以上又は閾値以下であるマージ候補又は特定の位置のブロックから導出されたマージ候補のみに対して冗長検出を実行することができる。ここで、特定の位置は、現在ブロックの左隣接ブロック、上隣接ブロック、右上隣接ブロック又は左下隣接ブロックのうちの少なくとも1つを含み得る。
【0216】
図21は、一部のマージ候補のみに対して冗長検出を実行する例を示す図である。
【0217】
インターマージ候補HmvpCand[j]をマージ候補リストに追加することが望まれる時、インターマージ候補と最大インデックスを有する2つのマージ候補mergeCandList[NumMerge-2]及びmergeCandList[NumMerge-1]とに対して、冗長検出を実行することができる。ここで、NumMergeは、利用可能な空間的マージ候補及び時間的マージ候補の数を表すことができる。
【0218】
図示される例と異なっており、インターマージ候補HmvpCand[j]をマージ候補リストに追加することが望まれる時、インターマージ候補と最小インデックスを有する2つのマージ候補に対して冗長検出を実行することができる。例えば、mergeCandList[0]及びmergeCandList[1]がHmvpCand[j]と同じであるかどうかを確認することができる。代替的には、特定の位置から導出されたマージ候補のみに対して冗長検出を実行することができる。例えば、現在ブロックの左側に位置する隣接ブロックから導出されたマージ候補又は現在ブロックの上方に位置する隣接ブロックから導出されたマージ候補のうちの少なくとも1つのみに対して冗長検出を実行することができる。マージ候補リストに、特定の位置から導出されたマージ候補が存在しない場合、冗長検出を実行することなく、インターマージ候補をマージ候補リストに追加することができる。
【0219】
第1インターマージ候補と同じであるマージ候補を見付けて、且つ第2インターマージ候補に対して冗長検出を実行する場合、第1インターマージ候補と同じであるマージ候補の冗長検出をスキップすることができる。
【0220】
図22は、特定のマージ候補に対する冗長検出をスキップする例を示す図である。
【0221】
インデックスiを有するインターマージ候補HmvpCand[i]をマージ候補リストに追加することが望まれる時、インターマージ候補とマージ候補リストに記憶されたマージ候補との間で冗長検出を実行する。この場合、インターマージ候補HmvpCand[i]と同じであるマージ候補mergeCandリスト[j]を見付けた場合、インターマージ候補HmvpCand[i]をマージ候補リストに追加することなく、インデックスがi-1であるインターマージ候補HmvpCand[i-1]とマージ候補との間で冗長検出を実行することができる。この場合、インターマージ候補HmvpCand[i-1]とマージ候補mergeCandList[j]との間での冗長検出をスキップすることができる。
【0222】
例えば、
図22に示す例において、HmvpCand[i]とmergeCandList[2]が同じであると決定する。これにより、HmvpCand[i]をマージ候補リストに追加せず、HmvpCand[i-1]に対して冗長検出を実行することができる。この場合、HvmpCand[i-1]とmergeCandList[2]との間での冗長検出をスキップすることができる。
【0223】
現在ブロックのマージ候補リストに含まれるマージ候補の数が閾値未満である場合、インターマージ候補に加えて、対をなすマージ候補及びゼロマージ候補のうちの少なくとも1つを更に含み得る。対をなすマージ候補は、2つ以上のマージ候補の動きベクトルの平均値を動きベクトルとしたマージ候補であり、ゼロマージ候補は、動きベクトルが0であるマージ候補である。
【0224】
現在ブロックのマージ候補リストに下記順番に応じてマージ候補を追加することができる。
【0225】
空間的マージ候補-時間的マージ候補-インターマージ候補-(インターアフィンマージ候補)-対をなすマージ候補-ゼロマージ候補
空間的マージ候補は、隣接ブロック又は非隣接ブロックのうちの少なくとも1つから導出されたマージ候補であり、時間的マージ候補は、直前の参照画像から導出されたマージ候補である。予測領域アフィンマージ候補は、アフィン動きモデルにより符号化/復号されたブロックから導出された予測領域マージ候補を表 す。
【0226】
インター動き情報リストは、動きベクトル予測モードで用いられてもよい。例えば、現在ブロックの動きベクトル予測候補リストに含まれる動きベクトル予測候補の数が閾値未満である場合、インター動き情報リストに含まれるインターマージ候補を現在ブロックに関わる動きベクトル予測候補と設定することができる。具体的には、インターマージ候補の動きベクトルを動きベクトル予測候補と設定することができる。
【0227】
現在ブロックの動きベクトル予測候補リストに含まれる動きベクトル予測候補のうちのいずれか1つを選択すると、選択された候補を現在ブロックの動きベクトル予測値と設定する。続いて、現在ブロックの動きベクトル残差値に対して復号を行った後、動きベクトル予測値と動きベクトル残差値を加算することで現在ブロックの動きベクトルを得ることができる。
【0228】
現在ブロックの動きベクトル予測候補リストを下記順番に応じて構築することができる。
【0229】
空間的動きベクトル予測候補-時間的動きベクトル予測候補-インター復号領域マージ候補-(インター復号領域アフィンマージ候補)-ゼロ動きベクトル予測候補
空間的動きベクトル予測候補は、隣接ブロック又は非隣接ブロックのうちの少なくとも1つから導出された動きベクトル予測候補であり、時間的動きベクトル予測候補は、直前の参照画像から導出された動きベクトル予測候補である。インターアフィンマージ候補は、アフィン動きモデルにより符号化/復号されたブロックから導出されたインター動きベクトル予測候補を表す。ゼロ動きベクトル予測候補は、動きベクトルの値が0である候補を表す。
【0230】
符号化ブロックを複数の予測ユニットに分割し、分割された予測ユニットに対してそれぞれ予測を実行することができる。ここで、予測ユニットは、予測のための基本ユニットを表す。
【0231】
符号化ブロックは、垂直線、水平線、斜線又は対角線のうちの少なくとも1つで分割されてもよい。ビットストリームを介して、信号で、符号化ブロックを分割する線の数、角度又は位置のうちの少なくとも1つを決定するための情報を送信することができる。例えば、ビットストリームを介して、信号で、符号化ブロックの分割タイプ候補のうちのいずれか1つを表す情報を送信することができ、又は、ビットストリームを介して、信号で、符号化ブロックを分割する複数の線候補のうちのいずれか1つを指定する情報を送信することができる。代替的には、ビットストリームを介して、信号で、符号化ブロックを分割する線候補の数又はタイプを決定するための情報を送信することができる。例えば、1ビットフラグを用いて、角度が対角線より大きい斜線及び/又は角度が対角線より小さい斜線が線候補として利用されることが可能であるかどうかを決定することができる。
【0232】
代替的には、符号化ブロックのイントラ予測モード、インター予測モード、利用可能なマージ候補の位置又は隣接ブロックの分割タイプのうちの少なくとも1つに基づいて、符号化ブロックを分割する線の数、角度又は位置のうちの少なくとも1つを適応的に決定することができる。
【0233】
符号化ブロックが複数の予測ユニットに分割される場合、分割された複数の予測ユニットに対して、イントラ予測又はインター予測を実行することができる。
【0234】
図23は、対角線を用いて符号化ブロックを複数の予測ユニットに分割する例を示す図である。
【0235】
図23(a)及び
図23(b)に示す例において、対角線を用いて符号化ブロックを2つの三角形予測ユニットに分割することができる。
【0236】
図23(a)及び
図23(b)において、符号化ブロックの2つの頂点を接続する対角線を用いて符号化ブロックを2つの予測ユニットに分割することが図示される。しかしながら、少なくとも1つの末端が符号化ブロックの頂点を通過しない斜線を用いて、符号化ブロックを2つの予測ユニットに分割することができる。
【0237】
図24は、符号化ブロックを2つの予測ユニットに分割する例を示す図である。
【0238】
例えば、
図24(a)及び
図24(b)に示す例において、両端がそれぞれ符号化ブロックの上境界及び下境界に接触する斜線を用いて符号化ブロックを2つの予測ユニットに分割することができる。
【0239】
代替的には、
図24(c)及び
図24(d)に示す例において、両端がそれぞれ符号化ブロックの左境界及び右境界に接触する斜線を用いて符号化ブロックを2つの予測ユニットに分割することができる。
【0240】
代替的には、符号化ブロックを、大きさが異なる2つの予測ブロックに分割することができる。例えば、符号化ブロックを分割する斜線を、1つの頂点を形成する2つの境界面に接触するように設定する。これにより、符号化ブロックを、大きさが異なる2つの予測ユニットに分割することができる。
【0241】
図25は、符号化ブロックを、異なる大きさを有する複数の予測ブロックに分割する例を示す図である。
【0242】
例えば、
図25(a)及び
図25(b)に示す例において、符号化ブロックの左上隅又は右下隅で接続される対角線を、符号化ブロックの左上隅又は右下隅を通過することなく、符号化ブロックの左境界、右境界、上境界又は下境界を通過するように設定することで、符号化ブロックを、異なる大きさを有する2つの予測ユニットに分割することができる。
【0243】
代替的には、
図25(c)及び
図25(d)に示す例において、符号化ブロックの右上隅又は左下隅で接続される対角線を、符号化ブロックの左上隅又は右下隅を通過することなく、符号化ブロックの左境界、右境界、上境界又は下境界を通過するように設定することで、符号化ブロックを、異なる大きさを有する2つの予測ユニットに分割することができる。
【0244】
符号化の分割により生成された各予測ユニットは、「第N予測ユニット」と呼ばれる。例えば、
図23から
図25に示す例において、PU1は、第1予測ユニットと定義されてもよく、また、PU2は、第2予測ユニットと定義されてもよい。第1予測ユニットは、符号化ブロックにおける左下に位置するサンプル又は左上に位置するサンプルを含む予測ユニットであってもよく、第2予測ユニットは、符号化ブロックにおける右上に位置するサンプル又は右下に位置するサンプルを含む予測ユニットであってもよい。
【0245】
上述とは逆に、符号化ブロックにおける右上に位置するサンプル又は右下に位置するサンプルを含む予測ユニットを第1予測ユニットと定義し、符号化ブロックにおける左下に位置するサンプル又は左上に位置するサンプルを含む予測ユニットを第2予測ユニットと定義することができる。
【0246】
下記実施例において、主に、対角線を用いた分割の例を説明する。特に、対角線を用いて符号化ブロックを2つの予測ユニットに分割するプロセスを対角線分割又は三角形分割と呼び、また、対角線分割に基づいて生成された予測ユニットを三角形予測ユニットと呼ぶ。しかしながら、下記実施例において、角度が垂直線、水平線又は対角線の角度と異なる斜線を用いて分割を行うこともできる。
【0247】
スライスタイプ、マージ候補リストに含まれることが可能であるマージ候補の最大数、符号化ブロックの大きさ、符号化ブロックの形状、符号化ブロックの予測符号化モード又は親ノードの分割タイプのうちの少なくとも1つに基づいて、符号化ブロックに対して対角線分割を適用するかどうかを決定することができる。
【0248】
例えば、現在スライスがタイプBであるかどうかに基づいて、符号化ブロックに対して対角線分割を適用するかどうかを決定することができる。現在スライスがタイプBである場合のみに、対角線分割を許容できる。
【0249】
代替的には、マージ候補リストに含まれるマージ候補の最大数が2個以上であるかどうかに基づいて、符号化ブロックに対して対角線分割を適用するかどうかを決定することができる。マージ候補リストに含まれるマージ候補の最大数が2個以上である場合のみに、対角線分割を許容できる。
【0250】
代替的には、ハードウェアの幅又は高さのうちの少なくとも1つが64より大きい場合、大きさが64×64であるデータ処理ユニットが冗長的にアクセスされるという欠点が存在する。従って、符号化ブロックの幅又は高さのうちの少なくとも1つが閾値より大きい場合、符号化ブロックを複数の予測ブロックに分割しない可能性がある。例えば、符号化ブロックの高さ及び幅のうちの少なくとも1つが64より大きい場合(例えば、幅及び高さのうちの少なくとも1つが128である場合)、対角線分割を使用しなくてもよい。
【0251】
代替的には、ハードウェア実施形態における同時に処理されるサンプルの最大数を考慮して、サンプル数が閾値より大きい符号化ブロックに対して、対角線分割を使用しない可能性がある。例えば、サンプル数が4096より大きい符号化ツリーブロックに対して、対角線分割を許容しない可能性がある。
【0252】
代替的には、符号化ブロックに含まれるサンプルの数が閾値未満である符号化ブロックに対して、対角線分割を許容しない可能性がある。例えば、符号化ブロックに含まれるサンプルの数が64未満である場合、対角線分割を符号化ブロックに適用しないように設定することができる。
【0253】
代替的には、符号化ブロックの幅と高さとの比が第1閾値未満であるかどうか、又は符号化ブロックの幅と高さとの比が第2閾値より大きいかどうかに基づいて、符号化ブロックに対して対角線分割を適用するかどうかを決定することができる。ここで、符号化ブロックの幅と高さとの比whRatioは、符号化ブロックの幅CbWと高さCbHとの比と決定されてもよい。例えば、下記式5に示すとおりである。
【数5】
【0254】
第2閾値は、第1閾値の逆数であってもよい。例えば、第1閾値がkである場合、第2閾値は、1/kであってもよい。
【0255】
符号化ブロックの幅と高さとの比が第1閾値と第2閾値との間にある場合のみに、符号化に対して対角線分割を適用することができる。
【0256】
代替的には、符号化ブロックの幅と高さとの比が第1閾値未満であるか又は第2閾値より大きい場合のみに、三角形分割を用いることができる。例えば、第1閾値が16である場合、大きさが64×4又は4×64である符号化ブロックに対して、対角線分割を許容しなくてもよい。
【0257】
代替的には、親ノードの分割タイプに基づいて、対角線分割を許容するかどうかを決定することができる。例えば、親ノードとした符号化ブロックが四分木分割に基づいて分割された場合、リーフノードとした符号化ブロックに対して対角線分割を適用することができる。一方で、親ノードとした符号化ブロックが四分木分割又は三分木分割に基づいて分割された場合、リーフノードとした符号化ブロックは、対角線分割を許容しないように設定される。
【0258】
代替的には、符号化ブロックの予測符号化モードに基づいて、対角線分割を許容するかどうかを決定することができる。例えば、符号化ブロックがイントラ予測モードで符号化される場合、符号化ブロックがイントラ予測モードで符号化される場合又は符号化ブロックが事前定義されたインター予測モードで符号化される場合のみに、対角線分割を許容できる。ここで、事前定義されたインター予測モードは、マージモード、アドバンスド動きベクトル予測モード、アフィンマージモード又はアフィン動きベクトル予測モードのうちの少なくとも1つを表すことができる。
【0259】
代替的には、並行処理領域の大きさに基づいて、対角線分割を許容するかどうかを決定することができる。例えば、符号化ブロックの大きさが並行処理領域の大きさより大きい場合、対角線分割を使用しない可能性がある。
【0260】
前記列挙した条件のうちの2つ以上の条件を考慮して、符号化ブロックに対して対角線分割を適用するかどうかを決定することもできる。
【0261】
もう1つの例として、ビットストリームを介して、信号で、対角線分割を符号化ブロックに適用するかどうかを示す情報を送信することができる。前記情報は、シーケンスレベル、画像レベル、スライスレベル又はブロックレベルで、信号により送信されてもよい。例えば、符号化ブロックレベルで、信号により、符号化ブロックに対して三角形分割を適用したかどうかを示すフラグtriangle_partition_flagを送信することができる。
【0262】
符号化ブロックに対して対角線分割を適用すると決定した場合、ビットストリームを介して、信号で、符号化ブロックを分割する線の数又は線の位置を表す情報を送信することができる。
【0263】
例えば、符号化ブロックが対角線で分割される時、ビットストリームを介して、信号で、符号化ブロックを分割する対角線の方向を表す情報を送信することができる。例えば、ビットストリームを介して、信号で、対角線の方向を表すフラグtriangle_partition_type_flagを送信することができる。前記フラグは、符号化ブロックが、左上と右下を接続する対角線で分割されるかどうか又は右上と左下を接続する対角線で分割されるかどうかを指示する。
【0264】
左上と右下を接続する対角線で符号化ブロックを分割する場合、左三角形分割タイプと呼ばれてもよい。右上と左下を接続する対角線で符号化ブロックを分割する場合、右三角形分割タイプと呼ばれてもよい。例えば、前記フラグの値が0である場合、符号化ブロックの分割タイプが左三角形分割タイプであることを示し、前記フラグの値が1である場合、符号ブロックの分割タイプが右三角形分割タイプであることを示す。
【0265】
なお、ビットストリームを介して、信号で、予測ユニットの大きさ同じであるかどうかを示す情報又は符号化ブロックを分割するための対角線の位置を示す情報を送信することができる。例えば、予測ユニットの大きさを示す情報は、予測ユニットの大きさが同じであることを示すと、対角線の位置を示す情報に対する符号化をスキップし、また、符号化ブロックの2つの頂点を通過する対角線を用いて、符号化ブロックを2つの予測ユニットに分割することができる。一方で、予測ユニットの大きさを示す情報は、予測ユニットの大きさが異なることを示すと、対角線の位置を示す情報に基づいて、符号化ブロックを分割するための対角線の位置を決定することができる。例えば、左三角形分割タイプを符号化ブロックに適用する場合、位置情報は、対角線が符号化ブロックの左境界及び下境界又は上境界及び右境界に接触するかどうかを示すことができる。代替的には、右三角形分割タイプを符号化ブロックに適用する場合、位置情報は、対角線が符号化ブロックの右境界及び下境界又は上境界及び左境界に接触するかどうかを示すことができる。
【0266】
符号化ブロックの分割タイプを表す情報は、符号化ブロックレベルで、信号により送信されてもよい。これにより、対角線分割を適用する異なる符号化ブロックに対して分割タイプを決定することができる。
【0267】
もう1つの例として、シーケンス、画像、スライス、タイル又は符号化ツリーユニットに対して、信号で、分割タイプを表す情報を送信することができる。この場合、対角線分割が適用される符号化ブロックの分割タイプを、シーケンス、画像、スライス、タイル又は符号化ツリーユニットにおいて同じくように設定することができる。
【0268】
代替的には、符号化ツリーユニットにおける対角線分割を適用する第1符号化ユニットに対して、分割タイプを決定するための情報を符号化して、信号で送信する。対角線分割を適用する2番目以降の符号化ユニットを、1番目の符号化ユニットと同一の分割タイプを用いるように設定する。
【0269】
もう1つの例として、隣接ブロックの分割タイプに基づいて、符号化ブロックの分割タイプを決定することができる。ここで、隣接ブロックは、符号化ブロックの左上隅に隣接する隣接ブロック、右上隅に隣接する隣接ブロック、左下隅に隣接する隣接ブロック、上方に位置する隣接ブロック又は左側に位置する隣接ブロックのうちの少なくとも1つを含み得る。例えば、現在ブロックの分割タイプを、隣接ブロックの分割タイプと同じであるように設定することができる。代替的には、左上隣接ブロックに対して左三角形分割タイプを適用するかどうか、右上隣接ブロック又は左下隣接ブロックに対して右三角形分割タイプを適用するかどうかに基づいて、現在ブロックの分割タイプを決定することができる。
【0270】
第1三角形予測ユニット及び第2三角形予測ユニットに対して動き予測補償を実行するために、第1三角形予測ユニット及び第2三角形予測ユニットのそれぞれの動き情報を導出することができる。この場合、マージ候補リストに含まれるマージ候補から、第1三角形予測ユニット及び第2三角形予測ユニットの動き情報を導出することができる。一般的なマージ候補リストと三角形予測ユニットの動き情報を導出する時に用いられるマージ候補リストを区分するために、三角形予測ユニットの動き情報を導出するためのマージ候補リストを三角形マージ候補リストと呼び、三角形マージ候補リストに含まれるマージ候補を三角形マージ候補と呼ぶ。しかしながら、前記マージ候補導出方法及びマージ候補リスト構築方法を三角形マージ候補及び三角形マージ候補リスト構築方向に用いることも、本発明の主旨に含まれる。
【0271】
ビットストリームを介して、信号で、三角形マージ候補リストに含まれることが可能である三角形マージ候補の最大数を決定するための情報を送信することができる。前記情報は、マージ候補リストに含まれることが可能であるマージ候補の最大数と三角形マージ候補リストに含まれることが可能である三角形マージ候補の最大数との差を表すことができる。
【0272】
符号化ブロックの空間的隣接ブロック及び時間的隣接ブロックから三角形マージ候補を導出することができる。
【0273】
図26は、三角形マージ候補を導出するための隣接ブロックを示す図である。
【0274】
符号化ブロックの上方に位置する隣接ブロック、符号化ブロックの左側に位置する隣接ブロック又は符号化ブロックと異なる画像に含まれるコロケーテッドブロックのうちの少なくとも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つと決定されてもよい。
【0275】
事前定義された順番に応じて隣接ブロックを検索することができる。また、事前定義された順番に応じて、三角形マージ候補で、三角形マージ候補リストを構成することができる。例えば、B1、A1、B0、A0、C0、B2及C1の順番に応じて三角形マージ候補を検索して、三角形マージ候補リストを構成することができる。
【0276】
三角形予測ユニットの動き情報は、前記三角形マージ候補リストに基づいて導出されてもよい。つまり、三角形予測ユニットは、1つの三角形マージ候補リストを共有することができる。
【0277】
三角形マージユニットの動き情報を導出するために、ビットストリームを介して、信号で、三角形マージ候補リストに含まれる三角形マージ候補のうちの少なくとも1つを指定するための情報を送信することができる。例えば、ビットストリームを介して、信号で、三角形マージ候補のうちの少なくとも1つを指定するためのインデックス情報merge_triangle_idxを送信することができる。
【0278】
インデックス情報は、第1三角形予測ユニットのマージ候補及び第2三角形予測ユニットのマージ候補の組み合わせを指定することができる。例えば、下記表1は、インデックス情報merge_triangle_idxに基づいたマージ候補の組み合わせの例を示す。
【表1】
【0279】
インデックス情報merge_triangle_idxの値が1である場合、第1三角形予測ユニットの動き情報がインデックス1のマージ候補から導出されたものであり、第2三角形予測ユニットの動き情報がインデックス0のマージ候補から導出されたものであることを示す。インデックス情報merge_triangle_idxにより、第1三角形予測ユニットの動き情報を導出するための三角形マージ候補及び第2三角形予測ユニットの動き情報を導出するための三角形マージ候補を決定することができる。
【0280】
インデックス情報に基づいて、対角線分割を適用する符号化ブロックの分割タイプを決定することもできる。つまり、インデックス情報は、第1三角形予測ユニットのマージ候補、第2三角形予測ユニットのマージ候補及び符号化ブロックの分割方向の組み合わせを指定することができる。インデックス情報に基づいて符号化ブロックの分割タイプを決定する場合、符号化ブロックを分割する対角線の方向を示す情報triangle_partition_type_flagに対して符号化を行わなくてもよい。表2は、インデックス情報merge_triangle_idxに関わる符号化ブロックの分割タイプを示す。
【表2】
【0281】
変数TriangleDirが0である場合、符号化ブロックに対して左三角形分割タイプを適用することを表す。変数TriangleDirが1である場合、符号化ブロックに対して右三角形分割タイプを適用することを表す。表1と表2を組み合わせることで、インデックス情報merge_triangle_idxに基づいて、第1三角形予測ユニットのマージ候補、第2三角形予測ユニットのマージ候補、及び符号化ブロックの分割方向の組み合わせを指定するように設定されてもよい。
【0282】
もう1つの例として、信号で、第1三角形予測ユニット及び第2三角形予測ユニットのうちのいずれか1つのみに用いられるインデックス情報を送信することができる。また、前記インデックス情報に基づいて、第1三角形予測ユニット及び第2三角形予測ユニットのうちのもう1つの三角形マージ候補に用いられるインデックスを決定することができる。例えば、三角形マージ候補のうちのいずれか1つのインデックスを表すインデックス情報merge_triangle_idxに基づいて、第1三角形予測ユニットの三角形マージ候補を決定することができる。また、前記merge_triangle_idxに基づいて、第2三角形予測ユニットの三角形マージ候補を指定することができる。例えば、前記インデックス情報merge_triangle_idxに対してオフセット値を加算又は減算することで第2三角形予測ユニットの三角形マージ候補を導出することができる。オフセット値は、1又は2などの整数であってもよい。例えば、第2三角形予測ユニットの三角形マージ候補を、merge_traingle_idxに対して1を加算した値をインデックスとして有する三角形マージ候補と決定することができる。merge_triangle_idxは、三角形マージ候補におけるインデックス値が最も大きい三角形マージ候補を指示する場合、インデックス0の三角形マージ候補又はmerge_triangle_idxに対して1を減算することで得られた値をインデックスとした三角形マージ候補から、第2三角形予測ユニットの動き情報を導出することができる。
【0283】
代替的には、インデックス情報により指定された第1三角形予測ユニットの三角形マージ候補と同じである参照画像を有する三角形マージ候補から第2三角形予測ユニットの動き情報を導出することができる。ここで、第1三角形予測ユニットの三角形マージ候補と同じである参照画像を有する三角形マージ候補は、第1三角形予測ユニットの三角形マージ候補と同じである三角形マージ候補を有するL0参照画像又はL1参照画像のうちの少なくとも1つを表すことができる。参照画像が第1三角形予測ユニットの三角形マージ候補と同じである三角形マージ候補が複数存在する場合、マージ候補に双方向動き情報又はマージ候補のインデックスとインデックス情報との差分値のうちの少なくとも1つが含まれるかどうかに基づいて、いずれか1つを選択することができる。
【0284】
もう1つの例として、第1三角形予測ユニット及び第2三角形予測ユニットに対して、それぞれ信号でインデックス情報を送信することができる。例えば、ビットストリームを介して、信号で、第1三角形予測ユニットの三角形マージ候補を決定するための第1インデックス情報1st_merge_idx及び第2三角形予測ユニットの三角形マージ候補を決定するための第2インデックス情報2nd_merge_idxを送信することができる。第1三角形予測ユニットの動き情報は、第1インデックス情報1st_merge_idxに基づいて決定された三角形マージ候補から導出され、第2三角形予測ユニットの動き情報は、第2インデックス情報2nd_merge_idxに基づいて決定された三角形マージ候補から導出される。
【0285】
第1インデックス情報1st_merge_idxは、三角形マージ候補リストに含まれる三角形マージ候補のうちのいずれか1つのインデックスを表すことができる。第1三角形予測ユニットの三角形マージ候補は、第1インデックス情報1st_merge_idxで示される三角形マージ候補と決定されてもよい。
【0286】
第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を加算することで得られた値をインデックスとして有する三角形マージ候補と決定されてもよい。
【0287】
代替的には、三角形マージ候補リストに含まれる三角形マージ候補の数に基づいて、信号で第2インデックス情報を送信するかどうかを決定することができる。例えば、三角形マージ候補リストに含まれる三角形マージの最大数が2以下である場合、信号で第2インデックス情報を送信することをスキップすることができる。信号で第2インデックス情報を送信することをスキップする場合、第1インデックス情報に対してオフセット値を加算又は減算することで第2三角形マージ候補を導出することができる。例えば、三角形マージ候補リストに含まれる三角形マージ候補の最大数が2であって且つ第1インデックス情報がインデックス0である場合、第1インデックス情報に1を加算することで第2三角形マージ候補を導出することができる。代替的には、三角形マージ候補リストに含まれる三角形マージ候補の最大数が2であって且つ第1インデックス情報が1である場合、第1インデックス情報から1を減算することで第2三角形マージ候補を導出することができる。
【0288】
代替的には、信号で第2インデックス情報を送信することをスキップする場合、第2インデックス情報をデフォルト値とすることができる。ここで、デフォルト値は、0であってもよい。第1インデックス情報と第2インデックス情報を比較することで、第2三角形マージ候補を導出することができる。例えば、第2インデックス情報が第1インデックス情報より小さい時、インデックス0であるマージ候補を第2三角形マージ候補とし、第2インデックス情報が第1インデックス情報以上である場合、インデックス1であるマージ候補を第2三角形マージ候補とする。
【0289】
三角形マージ候補が一方向動き情報を有する場合、三角形マージ候補の一方向動き情報を三角形予測ユニットの動き情報とする。一方で、三角形マージ候補が双方向動き情報を有する場合、L0動き情報又はL1動き情報のうちのいずれか1つのみを三角形予測ユニットの動き情報とする。三角形マージ候補のインデックス又はもう1つの三角形予測ユニットの動き情報に基づいて、L0動き情報又はL1動き情報のうちのどちらかを取得するかを決定することができる。
【0290】
例えば、三角形マージ候補のインデックスが偶数である場合、三角形予測ユニットのL0動き情報を0とし、三角形マージ候補のL1動き情報を三角形予測ユニットのL1動き情報とする。一方で、三角形マージ候補のインデックスが奇数である場合、三角形予測ユニットのL1動き情報を0とし、三角形マージ候補のL0動き情報を0とする。上記とは逆に、三角形マージ候補のインデックスが偶数である場合、三角形マージ候補のL0動き情報を三角形予測ユニットのL0動き情報とし、三角形マージ候補のインデックスが奇数である場合、三角形マージ候補のL1動き情報を三角形予測ユニットのL1動き情報とすることもできる。代替的には、第1三角形予測ユニットについて言えば、三角形マージ候補が偶数である場合、三角形マージ候補のL0動き情報を第1三角形予測ユニットのL0動き情報とする。一方で、第2三角形予測ユニットについて言えば、三角形マージ候補が奇数である場合、三角形マージ候補のL1動き情報を第2三角形予測ユニットのL1動き情報とする。
【0291】
代替的には、第1三角形予測ユニットがL0動き情報を有する場合、第2三角形予測ユニットのL0動き情報を0とし、三角形マージ候補のL1動き情報を第2三角形予測ユニットのL1情報とする。一方で、第1三角形予測ユニットがL1動き情報を有する場合、第2三角形予測ユニットのL1動き情報を0とし、三角形マージ候補のL0動き情報を第2三角形予測ユニットのL0動き信号とする。
【0292】
第1三角形予測ユニットの動き情報を導出するための三角形マージ候補リスト及び第2三角形予測ユニットの動き情報を導出するための三角形マージ候補リストを、異なるように設定することもできる。
【0293】
例えば、第1三角形予測ユニットに関わるインデックス情報に基づいて、三角形マージ候補リストにおける第1三角形予測ユニットの動き情報を導出するための三角形マージ候補を指定する場合、前記インデックス情報で示される三角形マージ候補以外の残りの三角形マージ候補を含む三角形マージ候補リストを用いて、第2三角形予測ユニットの動き情報を導出することができる。具体的には、残りの三角形マージ候補のうちのいずれか1つから、第2三角形予測ユニットの動き情報を導出することができる。
【0294】
これにより、第1三角形予測ユニットの三角形マージ候補リストに含まれる三角形マージ候補の最大数と第2三角形予測ユニットの三角形マージ候補リストに含まれる三角形マージ候補の最大数が異なる。例えば、第1三角形予測ユニットの三角形マージ候補リストにM個のマージ候補が含まれる場合、第2三角形予測ユニットの三角形マージ候補リストは、第1三角形予測ユニットのインデックス情報で示される三角形マージ候補以外のM-1個のマージ候補を含み得る。
【0295】
もう1つの例として、符号化ブロックに隣接する隣接ブロックから、各三角形予測ユニットのマージ候補を導出することができ、また、三角形予測ユニットの形状又は位置を考慮することで、隣接ブロックの利用可能性を決定することができる。
【0296】
図27は、各三角形予測ユニットの隣接ブロックの利用可能性を決定するための例を示す図である。
【0297】
第1三角形予測ユニットに隣接しない隣接ブロックを、第1三角形予測ユニットに対して利用不可能である隣接ブロックと設定することができ、第2三角形予測ユニットに隣接しない隣接ブロックを、第2三角形予測ユニットに対して利用不可能である隣接ブロックと設定することができる。
【0298】
例えば、
図27(a)に示す例において、左三角形分割タイプを符号化ブロックに適用する場合、符号化ブロックに隣接する隣接ブロックのうち、第1三角形予測ユニットに隣接するブロックA1、A0及びA2を第1三角形予測ユニットに用いることができると決定し、ブロックB0及びB1を第1三角形予測ユニットに用いることができないと決定することができる。これにより、第1三角形予測ユニットに関わる三角形マージ候補リストは、ブロックA1、A0及びA2から導出された三角形マージ候補を含み、ブロックB0及びB1から導出された角形マージ候補を含まない。
【0299】
図27(b)に示す例において、左三角形分割タイプを符号化ブロックに適用する場合、第2三角形予測ユニットに隣接するブロックB0及びB1を第2三角形予測ユニットに用いることができると決定し、ブロックA1、A0及びA2を第2三角形予測ユニットに用いることができないと決定することができる。これにより、第2三角形予測ユニットに関わる三角形マージ候補リストは、ブロックB0及びB1から導出された三角形マージ候補を含み、ブロックA1、A0及びA2から導出された三角形マージ候補を含まない。
【0300】
これにより、三角形予測ユニットの位置又は符号化ブロックの分割タイプのうちの少なくとも1つに基づいて、三角形予測ユニットに利用可能な三角形マージ候補の数又は三角形マージ候補の範囲を決定することができる。
【0301】
もう1つの例として、マージモードを第1三角形予測ユニット及び第2三角形予測ユニットのうちのいずれか1つのみに適用することができる。また、第1三角形予測ユニット及び第2三角形予測ユニットのうちのもう1つの動き情報を、前記マージモードを適用する三角形予測ユニットの動き情報と同じであるように設定し、又は、前記マージ候補を適用する三角形予測ユニットの動き情報を詳細化することで導出することができる。
【0302】
例えば、三角形マージ候補に基づいて、第1三角形予測ユニットの動きベクトル及び参照画像インデックスを導出することができる。第1三角形予測ユニットの動き情報に対して詳細化を行うことで、第2三角形予測ユニットの動きベクトルを導出することができる。例えば、第1三角形予測ユニットの動きベクトル{mvD1LXx,mvD1LXy}に対して精細動きベクトル{Rx,Ry}を加算又は減算することで第2三角形予測ユニットの動きベクトルを導出することができる。第2三角形予測ユニットの参照画像インデックスを第1三角形予測ユニットの参照画像インデックスと同じであるように設定することができる。
【0303】
ビットストリームを介して、信号で、第1三角形予測ユニットの動きベクトルと第2三角形予測ユニットの動きベクトルとの差分値を表す精細動きベクトルを決定するための情報を送信することができる。前記情報は、精細動きベクトルの大きさを表す情報又は精細動きベクトルのシンボルを表す情報のうちの少なくとも1つを含む。
【0304】
代替的には、三角形予測ユニットの位置、インデックス又は符号化ブロックに適用される分割タイプのうちの少なくとも1つに基づいて、精細動きベクトルのシンボルを導出することができる。
【0305】
もう1つの例として、信号で、第1三角形予測ユニット及び第2三角形予測ユニットのうちのいずれか1つの動きベクトル及び参照画像インデックスを送信することができる。信号で送信される前記動きベクトルに対して詳細化を行うことで、第1三角形予測ユニット及び第2三角形予測ユニットのうちのもう1つの動きベクトルを導出することができる。
【0306】
例えば、ビットストリームにおける信号で送信された情報に基づいて、第1三角形予測ユニットの動きベクトル及び参照画像インデックスを決定することができる。また、第1三角形予測ユニットの動きベクトルに対して詳細化を行うことで、第2三角形予測ユニットの動きベクトルを導出することができる。例えば、第1三角形予測ユニットの動きベクトル{mvD1LXx,mvD1LXy}に対して精細動きベクトル{Rx,Ry}を加算又は減算することで、第2三角形予測ユニットの動きベクトルを導出することができる。第2三角形予測ユニットの参照画像インデックスを、第1三角形予測ユニットの参照画像インデックスと同じであるように設定することができる。
【0307】
第1三角形予測ユニットの動き情報及び第2三角形予測ユニットの動き情報に基づいて、符号化ブロックに対してそれぞれ動き予測補償予測を実行することができる。この場合、第1三角形予測ユニット及び第2三角形予測ユニットの境界部に画質劣化が発生する可能性がある。例えば、第1三角形予測ユニット及び第2三角形予測ユニットの境界にあるエッジ(Edge)の近傍で、画質が連続的に悪くなる。境界部の画質劣化を減少させるために、平滑化(Smoothing)フィルタリング又は加重予測により、予測サンプルを導出することができる。
【0308】
第1三角形予測ユニットの動き情報に基づいて得られた第1予測サンプルと第2三角形予測ユニットの動き情報に基づいて得られた第2予測サンプルとの加重和演算に基づいて符号化ブロックにおける対角線分割を適用する予測サンプルを導出することができる。代替的には、第1三角形予測ユニットの動き情報に基づいて決定された第1予測ブロックから、第1三角形予測ユニットの予測サンプルを導出し、第2三角形予測ユニットの動き情報に基づいて決定された第2予測ブロックから、第2三角形予測ユニットの予測サンプルを導出し、また、第1予測ブロックに含まれる第1予測サンプルと第2予測ブロックに含まれる第2予測サンプルの加重和演算に基づいて、第1三角形予測ユニット及び第2三角形予測ユニットの境界領域に位置する予測サンプルを導出することができる。例えば、下記式6は、第1三角形予測ユニット及び第2三角形予測ユニットの予測サンプルを導出する例を示す。
【数6】
【0309】
式6において、P1は、第1予測サンプルを表し、P2は、第2予測サンプルを表す。w1は、第1予測サンプルに適用される加重値を表し、(1-w1)は、第2予測サンプルに適用される加重値を表す。式6に示す例において、定数から、第1予測サンプルに適用される加重値を減算することで、第2予測サンプルに適用される加重値を導出することができる。
【0310】
符号化ブロックに対して左三角形分割タイプを適用する場合、境界領域は、同一のx軸座標及びy軸座標を有する予測サンプルを含み得る。一方で、符号化ブロックに対して右三角形分割タイプを適用する場合、境界領域は、x軸座標とy軸座標の和が第1閾値以上であって第2閾値以下である予測サンプルを含み得る。
【0311】
符号化ブロックの大きさ、符号化ブロックの形状、三角形予測ユニットの動き情報、三角形予測ユニットの動きベクトル差分値、参照画像の出力順又は対角境界における第1予測サンプルと第2予測サンプルとの差分値のうちの少なくとも1つに基づいて、境界領域の大きさを決定することができる。
【0312】
図28は、第1予測サンプル及び第2予測サンプルの加重和演算に基づいて予測サンプルを導出する例を示す図である。
図28は、左三角形分割タイプを符号化ブロックに適用する例を示し、
図29は、右三角形分割タイプを符号化ブロックに適用する例を示す。なお、
図28(a)及び
図29(a)是示は、輝度成分の予測パターンを示す図であり、
図28(b)及び
図29(b)は、色度成分の予測パターンを示す図である。
【0313】
図面において、第1予測ユニット及び第2予測ユニットの境界近傍で予測サンプルに書かれた数字は、第1予測サンプルに適用される加重値を表す。例えば、予測サンプルに書かれた数字がNである場合、第1予測サンプルにN/8の加重値を適用し、第2予測サンプルに(1-(N/8))の加重値を適用する。これにより、前記予測サンプルを導出することができる。
【0314】
非境界領域において、第1予測サンプル又は第2予測サンプルは、予測サンプルと決定されてもよい。
図28に示す例を参照すると、x軸座標とy座標との差の絶対値が閾値より大きい領域における、第1三角形予測ユニットに属する領域において、第1三角形予測ユニットの動き情報に基づいて導出された第1予測サンプルを予測サンプルと決定することができる。一方で、x軸座標とy軸座標との差が閾値より大きい領域における、第2三角形予測ユニットに属する領域において、第2三角形予測ユニットの動き情報に基づいて導出された第2予測サンプルを予測サンプルと決定することができる。
【0315】
図29に示す例を参照すると、x軸座標とy軸座標の和が第1閾値未満である領域において、第1三角形予測ユニットの動き情報に基づいて導出された第1予測サンプルを予測サンプルと決定することができる。一方で、x軸座標とy軸座標の和が第2閾値より大きい領域において、第2三角形予測ユニットの動き情報に基づいて導出された第2予測サンプルを予測サンプルと決定することができる。
【0316】
符号化ブロックの大きさ、符号化ブロックの形状又は色成分のうちの少なくとも1つに基づいて、非境界領域を決定するための閾値を決定することができる。例えば、輝度成分に関わる閾値をNとする場合、色度成分に関わる閾値をN/2とすることができる。
【0317】
第1予測サンプルと第2予測サンプルの加重和演算に基づいて、境界領域に含まれる予測サンプルを導出することができる。この場合、予測サンプルの位置、符号化ブロックの大きさ、符号化ブロックの形状又は色成分のうちの少なくとも1つに基づいて、第1予測サンプル及び第2予測サンプルに適用される加重値を決定することができる。
【0318】
例えば、
図28(a)に示す例において、同一の加重値を第1予測サンプル及び第2予測サンプルに適用することで、同一のx軸座標及びy軸座標を有する位置での予測サンプルを導出することができる。第1予測サンプル及び第2予測サンプルに適用される加重値の比を(3:1)又は(1:3)に適用することで、x軸座標とy軸座標との差の絶対値が1である予測サンプルを導出することができる。また、第1予測サンプル及び第2予測サンプルに適用される加重値の比を(7:1)又は(1:7)とすることで、x軸座標とy軸座標との差の絶対値が2である予測サンプルを導出することができる。
【0319】
代替的には、
図28(b)に示す例において、同一の加重値を第1予測サンプル及び第2予測サンプルに適用することで、同一のx軸座標及びy軸座標を有する位置での予測サンプルを導出することができ、また、第1予測サンプル及び第2予測サンプルに適用される加重値の比を(7:1)又は(1:7)とすることで、x軸座標とy座標との差の絶対値が1である予測サンプルを導出することができる。
【0320】
例えば、
図29(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だけ小さい予測サンプルを導出することができる。
【0321】
代替的には、
図29(b)に示す例において、同一の加重値を第1予測サンプル及び第2予測サンプルに適用することで、x軸座標とy軸座標の和が符号化ブロックの幅又は高さよりも1だけ小さい予測サンプルを導出することができる。第1予測サンプル及び第2予測サンプルに適用される加重値の比を(7:1)又は(1:7)とすることで、x軸座標とy軸座標の和が符号化ブロックの幅又は高さと同じであるか又は符号化ブロックの幅又は高さよりも2だけ小さい予測サンプルを導出することができる。
【0322】
もう1つの例として、予測サンプルの位置又は符号化ブロックの形状を考慮することで、加重値を決定することができる。式7から式9は、左三角形分割タイプを符号化ブロックに適用する場合に加重値を導出する例を示す。式7は、符号化ブロックが正方形形状である場合に、第1予測サンプルに適用される加重値を導出する例を示す。
【数7】
【0323】
式7において、x及びyは、予測サンプルの位置を表す。符号化ブロックが非正方形形状である場合、式8又は9に示すように、第1予測サンプルに適用される加重値を導出することができる。式8は、符号化ブロックの幅が高さより大きい場合を示し、式9は、符号化ブロックの幅が高さより小さい場合を示す。
【数8】
【数9】
【0324】
右三角形分割タイプを符号化ブロックに適用する場合、式10から12に示すように、第1予測サンプルに適用される加重値を決定することができる。式10は、符号化ブロックが正方形形状である場合に、第1予測サンプルに適用される加重値を導出する例を示す。
【数10】
【0325】
式10において、CbWは、符号化ブロックの幅を表す。符号化ブロックが非正方形形状である場合、式11又は12に示すように、第1予測サンプルに適用される加重値を導出することができる。式11は、符号化ブロックの幅が高さより大きい場合を示し、式12は、符号化ブロックの幅が高さより小さい場合を示す。
【数11】
【数12】
【0326】
式11において、CbHは、符号化ブロックの高さを表す。
【0327】
上記例に示すように、境界領域内の予測サンプルに対して、第1予測サンプルに対して、第2予測サンプルより大きい加重値を付与することで、第1三角形予測ユニットに含まれるサンプルを導出することができる。また、第2予測サンプルに対して、第1予測サンプルより大きい加重値を付与することで、第2三角形予測ユニットに含まれるサンプルを導出することができる。
【0328】
符号化ブロックに対して対角線分割を適用する場合、符号化ブロックを、イントラ予測モードとマージモードの組み合わせである組み合わせ予測モードを適用しないように設定することができる。
【0329】
イントラ予測は、現在ブロックの周辺の符号化/復号された再構成サンプルを用いて現在ブロックを予測することである。この場合、現在ブロックのイントラ予測は、インループフィルタを適用する前の再構成サンプルを用いることができる。
【0330】
イントラ予測技術は、マトリックス(Matrix)に基づくイントラ予測及び周辺の再構成サンプルとの方向性を考慮した一般的なイントラ予測を含む。ビットストリームを介して、信号で、現在ブロックのイントラ予測技術を示す情報を送信することができる。前記情報は、1ビットフラグであってもよい。代替的には、現在ブロックの位置、大きさ、形状又は隣接ブロックのイントラ予測技術のうちの少なくとも1つに基づいて、現在ブロックのイントラ予測技術を決定することができる。例えば、現在ブロックが画像の境界に跨って存在する場合、現在ブロックを、マトリックスに基づくイントラ予測を適用しないように設定する。
【0331】
マトリックスに基づくイントラ予測は、エンコーダ及びデコーダに記憶されたマトリックスと現在ブロックの周辺の再構成サンプルとのマトリックス乗算に基づいて現在ブロックの予測ブロックを得る方法である。ビットストリームを介して、信号で、記憶された複数のマトリックスのうちのいずれか1つを示すための情報を送信することができる。デコーダは、前記情報及び現在ブロックの大きさに基づいて、現在ブロックのイントラ予測に用いられるマトリックスを決定することができる。
【0332】
一般的なイントラ予測は、非角度イントラ予測モード又は角度イントラ予測モードに基づいて現在ブロックに関わる予測ブロックを得る方法である。
【0333】
オリジナル画像と予測画像を減算することで、導出される残差画像を導出することができる。この場合、残差画像を周波数領域に変更する場合、周波数成分のうちの高周波数成分を除去しても、ビデオの主観画質を大幅に低下させることがない。従って、高周波数成分の値を小さくするか又は高周波数成分の値を0とすると、明らかな視覚的歪みを引き起こすことなく、圧縮効率を向上させるという効果を有する。上記特性を反映するために、現在ブロックを変換することで残差画像を2次元周波数成分に分解することができる。離散コサイン変換(DCT:Discrete Cosine Transform)又は離散サイン変換(DST:Discrete Sine Transform)等の変換技術を用いて前記変換を実行することができる。
【0334】
残差画像において、一部のブロックに対して2次元画像変換を実行しなくてもよい。2次元画像変換を実行しないことは、変換スキップ(Transform Skip)と呼ばれてもよい。変換スキップを適用する場合、量子化を変換が実行されていない残差値に適用することができる。
【0335】
DCT又はDSTを用いて現在ブロックを変換した後、変換された現在ブロックに対して再び変換を行うことができる。この場合、DCT又はDSTに基づく変換を主変換と定義し、また、主変換を適用するブロックに対して再び変換を行うプロセスを二次変換と呼ぶ。
【0336】
主変換は、複数の変換カーネル候補のうちのいずれか1つを用いて実行することができる。例えば、DCT2、DCT8又はDCT7のうちのいずれか1つを用いて主変換を実行することができる。
【0337】
水平方向及び垂直方向に対して、異なる変換カーネルを用いることもできる。ビットストリームを介して、信号で、水平方向の変換カーネルと垂直方向の変換カーネルの組み合わせを表す情報を送信することもできる。
【0338】
主変換及び二次変換の実行ユニットは、異なる。例えば、8×8ブロックに対して主変換を実行し、また、変換された8×8ブロックにおける大きさが4×4であるサブブロックに対して二次変換を実行することができる。この場合、二次変換を実行しない余剰領域の変換係数を0とすることもできる。
【0339】
代替的には、4×4ブロックに対して主変換を実行し、また、変換された4×4ブロックを含む大きさが8×8である領域に対して二次変換を実行することができる。
【0340】
ビットストリームを介して、信号で、二次変換を実行するかどうかを表す情報を送信することができる。
【0341】
代替的には、水平方向の変換カーネルと垂直方向の変換カーネルが同じであるかどうかに基づいて、二次変換を実行するかどうかを決定することができる。例えば、水平方向の変換カーネルと垂直方向の変換カーネルが同じである場合のみに、二次変換を実行することができる。代替的には、水平方向の変換カーネルと垂直方向の変換カーネルが異なる場合のみに、二次変換を実行することができる。
【0342】
代替的には、水平方向の変換及び垂直方向の変換が事前定義された変換カーネルを適用する場合のみに、二次変換を実行することができる。例えば、水平方向の変換及び垂直方向の変換がDCT2変換カーネルを用いる場合のみに、二次変換を許容する。
【0343】
代替的には、現在ブロックの非ゼロ変換係数の数に基づいて、二次変換を実行するかどうかを決定することができる。例えば、現在ブロックの非ゼロ係数が閾値以下である場合、二次変換を使用しないように設定されてもよい。現在ブロックの非ゼロ変換係数が閾値より大きい場合、二次変換を使用するように設定されてもよい。現在ブロックがイントラ予測で符号化される場合のみに、二次変換を用いるように設定されてもよい。
【0344】
デコーダにおいて、第2変換の逆変換(第2逆変換)を実行し、また、その結果に対して第1変換の逆変換(第1逆変換)を実行することができる。第2逆変換及び第1逆変換の実行結果として、現在ブロックの残差信号を得ることができる。
【0345】
エンコーダにおいて変換及び量子化を実行すると、デコーダは、逆量子化及び逆変換により、残差ブロックを得ることができる。デコーダにおいて、予測ブロックと残差ブロックを加算することで、現在ブロックの再構成ブロックを得ることができる。
【0346】
現在ブロックの再構成ブロックを得ると、インループフィルタリング(In-loop filtering)により、量子化及び符号化プロセスにおいて発生した情報紛失を減少させることができる。インループフィルタは、デブロッキングフィルタ(Deblocking filter)、サンプル適応型オフセットフィルタ(Sample Adaptive Offset filter:SAO)又は適応型ループフィルタ(Adaptive Loop Filter:ALF)のうちの少なくとも1つを含み得る。
【0347】
復号プロセス又は符号化プロセスに重点を置いて説明する実施例を符号化プロセス又は復号プロセスに用いるものも本発明の範囲内に含まれる。説明された順番と異なる順番で、所定の順番で説明された複数の実施例を変更したものも本発明の範囲内に含まれる。
【0348】
一連のステップ又はフローチャートに基づいて実施例を説明したが、これは、発明の時間的順番を限定しない。また、必要に応じて、同時に実行してもよいか又は他の順番に応じて実行してもよい。なお、上記実施例において、ブロック図を構成する構成要素(例えば、ユニット、モジュール等)は、それぞれ、ハードウェア機器又はソフトウェアとして実現されてもよい。また、複数の構成要素を組み合わせて単一のハードウェア機器又はソフトウェアとして実行されてもよい。前記実施例は、プログラム命令の形態で実行してもよい。前記プログラム命令は、種々のコンピュータ部材により実行されてコンピュータ可読記憶媒体に記録されてもよい。前記コンピュータ可読記憶媒体は、プログラム命令、データファイル、データ構造などを単独で含み得るか又はその組み合わせを含み得る。コンピュータ可読記憶媒体の例として、ハードディスク、フレキシブルディスク及び磁気テープなどの磁気媒体、CD-ROM、DVD等の光学記録媒体、フロップティーカールディスク(floptical disk)のような磁気-光学媒体(magneto-optical media)及びROM、RAM、フラッシュメモリ等のような、プログラム命令を記憶して該命令を実行する方式で特に配置されたハードウェア機器を含み得る。前記ハードウェア機器は、1つ又は複数のソフトウェアモジュールとして操作を行い、本発明による処理を実行するように構成されてもよく、その逆も同様である。
【産業上の利用可能性】
【0349】
本発明は、ビデオに対して符号化/復号を行う電子機器に適用可能である。