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

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

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

特開2024-138541ビデオ信号の符号化/復号化方法及び前記方法のための装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024138541
(43)【公開日】2024-10-08
(54)【発明の名称】ビデオ信号の符号化/復号化方法及び前記方法のための装置
(51)【国際特許分類】
   H04N 19/105 20140101AFI20241001BHJP
   H04N 19/136 20140101ALI20241001BHJP
   H04N 19/176 20140101ALI20241001BHJP
   H04N 19/50 20140101ALI20241001BHJP
【FI】
H04N19/105
H04N19/136
H04N19/176
H04N19/50
【審査請求】有
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2024115826
(22)【出願日】2024-07-19
(62)【分割の表示】P 2022185275の分割
【原出願日】2019-11-07
(31)【優先権主張番号】10-2018-0136256
(32)【優先日】2018-11-08
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2018-0148948
(32)【優先日】2018-11-27
(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
【弁理士】
【氏名又は名称】出口 智也
(74)【代理人】
【識別番号】100120385
【弁理士】
【氏名又は名称】鈴木 健之
(72)【発明者】
【氏名】リー、ベグン
(57)【要約】      (修正有)
【課題】ビデオ信号を符号化/復号化する際に複数の予測方法を組み合わせる組合せ予測方法及び該方法を実行する装置を提供する。
【解決手段】ビデオ信号復号化/符号化方法は、組合せ予測モードを現在ブロックに適用するかどうかを決定することと、前記組合せ予測モードを前記現在ブロックに適用する場合、前記現在ブロックの第1予測ブロック及び第2予測ブロックを取得することと、前記第1予測ブロックと前記第2予測ブロックの加重和演算によって前記現在ブロックの第3予測ブロックを取得することと、を含む。このような場合、前記現在ブロックのマージ候補の運動情報に基づいて前記第1予測ブロックを取得し、前記現在ブロックのイントラ予測モードに基づいて前記第2予測ブロックを取得することができる。
【選択図】図1
【特許請求の範囲】
【請求項1】
ビデオ復号化方法であって、
組合せ予測モードを現在ブロックに適用するかどうかを決定することと、
前記組合せ予測モードを前記現在ブロックに適用する場合、前記現在ブロックの第1予測ブロック及び第2予測ブロックを取得し、前記現在ブロックのマージ候補の運動情報に基づいて前記第1予測ブロックを取得して、前記現在ブロックのイントラ予測モードに基づいて前記第2予測ブロックを取得することであって、前記現在ブロックのイントラ予測モードはプレーナモードである、ことと、
前記第1予測ブロックと前記第2予測ブロックの加重和演算によって前記現在ブロックの第3予測ブロックを取得することと、を含み、
組合せ予測モードを現在ブロックに適用するかどうかを決定することは、前記現在ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、前記組合せ予測モードを前記現在ブロックに適用しないことを含み、
前記第2予測ブロックは隣接する参照サンプルラインに含まれる参照サンプルラインに基づいて取得される、
ビデオ復号化方法。
【請求項2】
前記加重和演算を実行するとき、前記現在ブロックに隣接する隣接ブロックの予測符号化モードに基づいて、前記第1予測ブロック及び前記第2予測ブロックに適用される重み付け値を決定する請求項1に記載のビデオ復号化方法。
【請求項3】
ビデオ符号化方法であって、
組合せ予測モードを現在ブロックに適用するかどうかを決定することと、
前記組合せ予測モードを前記現在ブロックに適用する場合、前記現在ブロックの第1予測ブロック及び第2予測ブロックを取得し、前記現在ブロックのマージ候補の運動情報に基づいて前記第1予測ブロックを取得して、前記現在ブロックのイントラ予測モードに基づいて前記第2予測ブロックを取得することであって、前記現在ブロックのイントラ予測モードはプレーナモードである、ことと、
前記第1予測ブロックと前記第2予測ブロックの加重和演算によって前記現在ブロックの第3予測ブロックを取得することと、を含み、
組合せ予測モードを現在ブロックに適用するかどうかを決定することは、前記現在ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、前記組合せ予測モードを前記現在ブロックに適用しないことを含み、
前記第2予測ブロックは隣接する参照サンプルラインに含まれる参照サンプルラインに基づいて取得される、
ビデオ符号化方法。
【請求項4】
前記加重和演算を実行するとき、前記現在ブロックに隣接する隣接ブロックの予測符号化モードに基づいて、前記第1予測ブロック及び前記第2予測ブロックに適用される重み付け値を決定する請求項3に記載のビデオ符号化方法。
【請求項5】
ビデオ復号化装置であって、予測部を備え、
前記予測部は、
組合せ予測モードを現在ブロックに適用するかどうかを決定することと、
前記組合せ予測モードを前記現在ブロックに適用する場合、前記現在ブロックの第1予測ブロック及び第2予測ブロックを取得することと、
前記第1予測ブロックと前記第2予測ブロックの加重和演算によって前記現在ブロックの第3予測ブロックを取得することと、を行うために用いられ、
前記現在ブロックのマージ候補の運動情報に基づいて前記第1予測ブロックを取得して、前記現在ブロックのイントラ予測モードに基づいて前記第2予測ブロックを取得し、前記現在ブロックのイントラ予測モードはプレーナモードであり、
組合せ予測モードを現在ブロックに適用するかどうかを決定することは、前記現在ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、前記組合せ予測モードを前記現在ブロックに適用しないことを含み、
前記第2予測ブロックは隣接する参照サンプルラインに含まれる参照サンプルラインに基づいて取得されるビデオ復号化装置。
【請求項6】
ビデオ復号化装置であって、予測部を備え、
前記予測部は、
組合せ予測モードを現在ブロックに適用するかどうかを決定することと、
前記組合せ予測モードを前記現在ブロックに適用する場合、前記現在ブロックの第1予測ブロック及び第2予測ブロックを取得することと、
前記第1予測ブロックと前記第2予測ブロックの加重和演算によって前記現在ブロックの第3予測ブロックを取得することと、を行うために用いられ、
前記現在ブロックのマージ候補の運動情報に基づいて前記第1予測ブロックを取得して、前記現在ブロックのイントラ予測モードに基づいて前記第2予測ブロックを取得し、前記現在ブロックのイントラ予測モードはプレーナモードであり、
組合せ予測モードを現在ブロックに適用するかどうかを決定することは、前記現在ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、前記組合せ予測モードを前記現在ブロックに適用しないことを含み、
前記第2予測ブロックは隣接する参照サンプルラインに含まれる参照サンプルラインに基づいて取得されるビデオ符号化装置。
【請求項7】
ビデオデコーダーであって、プロセッサと、前記プロセッサで実行できるコンピュータプログラムを記憶するように構成されるメモリを備え、
前記プロセッサは、
組合せ予測モードを現在ブロックに適用するかどうかを決定し、
前記組合せ予測モードを前記現在ブロックに適用する場合、前記現在ブロックの第1予測ブロック及び第2予測ブロックを取得し、
前記第1予測ブロックと前記第2予測ブロックの加重和演算によって前記現在ブロックの第3予測ブロックを取得するように構成され、
前記現在ブロックのマージ候補の運動情報に基づいて前記第1予測ブロックを取得して、前記現在ブロックのイントラ予測モードに基づいて前記第2予測ブロックを取得し、前記現在ブロックのイントラ予測モードはプレーナモードであり、
組合せ予測モードを現在ブロックに適用するかどうかを決定することは、前記現在ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、前記組合せ予測モードを前記現在ブロックに適用しないことを含み、
前記第2予測ブロックは隣接する参照サンプルラインに含まれる参照サンプルラインに基づいて取得されるビデオデコーダー。
【請求項8】
ビデオエンコーダであって、プロセッサと、前記プロセッサで実行できるコンピュータプログラムを記憶するように構成されるメモリを備え、
前記プロセッサは、
組合せ予測モードを現在ブロックに適用するかどうかを決定し、
前記組合せ予測モードを前記現在ブロックに適用する場合、前記現在ブロックの第1予測ブロック及び第2予測ブロックを取得し、
前記第1予測ブロックと前記第2予測ブロックの加重和演算によって前記現在ブロックの第3予測ブロックを取得するように構成され、
前記現在ブロックのマージ候補の運動情報に基づいて前記第1予測ブロックを取得して、前記現在ブロックのイントラ予測モードに基づいて前記第2予測ブロックを取得し、前記現在ブロックのイントラ予測モードはプレーナモードであり、
組合せ予測モードを現在ブロックに適用するかどうかを決定することは、前記現在ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、前記組合せ予測モードを前記現在ブロックに適用しないことを含み、
前記第2予測ブロックは隣接する参照サンプルラインに含まれる参照サンプルラインに基づいて取得されるビデオエンコーダ。
【請求項9】
記憶媒体であって、実行可能なプログラムが記憶され、前記実行可能なプログラムがプロセッサによって実行されるとき、請求項1~4のいずれか1項に記載の方法を実行する記憶媒体。
【発明の詳細な説明】
【技術分野】
【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】
本発明に係るビデオ信号復号化/符号化方法は、組合せ予測モードを現在ブロックに適用するかどうかを決定することと、前記組合せ予測モードを前記現在ブロックに適用する場合、前記現在ブロックの第1予測ブロック及び第2予測ブロックを取得することと、前記第1予測ブロックと前記第2予測ブロックの加重和演算によって前記現在ブロックの第3予測ブロックを取得することと、を含む。このような場合、前記現在ブロックのマージ候補の運動情報に基づいて前記第1予測ブロックを取得し、前記現在ブロックのイントラ予測モードに基づいて前記第2予測ブロックを取得することができる。
【0007】
本発明に係るビデオ信号復号化/符号化方法では、前記組合せ予測モードを前記現在ブロックに適用する場合、前記現在ブロックに対して三角形分割を適用しないように設定してもよい。
【0008】
本発明に係るビデオ信号復号化/符号化方法では、前記現在ブロックのイントラ予測モードをプレーナモードとして設定してもよい。
【0009】
本発明に係るビデオ信号復号化/符号化方法では、隣接参照サンプルラインに含まれる参照サンプルラインに基づいて前記第2予測ブロックを取得してもよい。
【0010】
本発明に係るビデオ信号復号化/符号化方法では、前記加重和演算を実行するとき、前記現在ブロックに隣接する隣接ブロックの予測符号化モードに基づいて、前記第1予測ブロック及び前記第2予測ブロックに適用される重み付け値を決定してもよい。
【0011】
本発明に係るビデオ信号復号化/符号化方法では、前記現在ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、前記組合せ予測モードを前記現在ブロックに適用しなくてもよい。
【0012】
本発明に係るビデオ信号復号化/符号化方法では、マージモードを前記現在ブロックに適用することを示すフラグが真である場合、前記組合せ予測モードを前記現在ブロックに適用できるように設定してもよい。
【0013】
上記の本発明の簡明な特徴は、以下に説明される本発明の詳しい説明の例示的な実施形態であって、本発明の範囲を制限するものではない。
【発明の効果】
【0014】
本発明によれば、複数の予測方法を組み合わせる組合せ予測方法を提供することにより、インター予測効率を向上させることができる。
【0015】
本発明によれば、符号化ブロックを複数の予測ブロックに分割して複数の予測ブロックのうちの各予測ブロックの運動情報を導き出す方法を提供することにより、インター予測効率を向上させることができる。
【0016】
本発明に実現できる効果は上記効果に限らず、当業者は以下の説明から、言及しない他の効果を明確に理解することができる。
【図面の簡単な説明】
【0017】
図1図1は本発明の実施例のビデオエンコーダ(encoder)のブロック図である。
図2図2は本発明の実施例のビデオデコーダ(decoder)のブロック図である。
図3図3は本発明の実施例の基本符号化ツリーユニットを示す図である。
図4図4は符号化ブロックの複数の分割タイプを示す図である。
図5図5は符号化ツリーユニットの分割例を示す図である。
図6図6は基本データユニットの形状を示す図である。
図7図7は符号化ブロックを複数のサブブロックに分割する例を示す図である。
図8図8は符号化ブロックを複数のサブブロックに分割する例を示す図である。
図9図9は本発明の実施例に係るインター予測方法のフローチャートである。
図10図10はマージモードにおいて現在ブロックの運動情報を導き出す過程のフローチャートである。
図11図11はマージ候補を導き出すための候補ブロックの例を示す図である。
図12図12は対角線を使用して符号化ブロックを複数の予測ユニットに分割する例を示す図である。
図13図13は符号化ブロックを2つの予測ユニットに分割する例を示す図である。
図14図14は符号化ブロックを様々なサイズの複数の予測ブロックに分割する例を示す図である。
図15図15は対角線による分割を変換ユニットに適用する例を示す図である。
図16図16は三角形マージ候補を導き出すための隣接ブロックを示す図である。
図17図17は各三角形予測ユニットの隣接ブロックの利用可能性を決定する例を説明するための図である。
図18図18及び図19は第1予測サンプル及び第2予測サンプルの加重和演算によって予測サンプルを導き出す例を示す図である。
図19図19は第1予測サンプル及び第2予測サンプルの加重和演算によって予測サンプルを導き出す例を示す図である。
図20図20は本発明の実施例に係るイントラ予測方法を示すフローチャートである。
図21図21はイントラ予測モードを示す図である。
図22図22は参照サンプルを1行に配列する一次元配列の例を示す図である。
図23図23は参照サンプルを1行に配列する一次元配列の例を示す図である。
図24図24は角度イントラ予測モードとx軸に平行する直線がなす角度を示す図である。
図25図25は現在ブロックが非正方形である場合に予測サンプルを取得する実施例を示す図である。
図26図26は広角イントラ予測モードを示す図である。
図27図27はPDPCを適用する実施例を示す図である。
図28図28は重み付け値を適用する実施例を示す図である。
図29図29はマージ候補が双方向運動情報を有するかどうかによって、異なる重み付け値をサブブロックに割り当てる例を示す図である。
図30図30は現在ブロックのイントラ予測モードに基づいて、異なる重み付け値をサブブロックに割り当てる例を示す図である。
図31図31は候補ブロックの検索順序を考慮して第2マージ候補を指定する例を示す図である。
図32図32は非隣接ブロックから導き出したマージ候補から第1マージ候補及び第2マージ候補を選択する例を示す図である。
図33図33は第2マージ候補を決定する例を説明するための図である。
図34図34は候補ブロックの形状に基づいて、予測ブロックに適用される重み付け値を決定する例を示す図である。
図35図35は置換されたマージ候補の例を示す図である。
図36図36は二次変換を実行するサブブロックを示す図である。
図37図37は二次変換を実行するサブブロックを示す図である。
図38図38は現在ブロックの変換タイプを決定する例を説明するための図である。
図39図39はブロック強度の決定過程を示すフローチャートである。
図40図40は予め定義されたフィルタ候補を示す図である。
【発明を実施するための形態】
【0018】
以下、図面を参照しながら本発明の実施例を詳しく説明する。
【0019】
ビデオの符号化及び復号化はブロック単位で実行される。例えば、符号化ブロック、変換ブロック又は予測ブロックに対して、変換、量子化、予測、ループ内フィルタリング又は再構築等の符号化/復号化処理を実行することができる。
【0020】
以下、符号化/復号化されようとするブロックは「現在ブロック」と称される。例えば、現在符号化/復号化処理ステップによって、現在ブロックは符号化ブロック、変換ブロック又は予測ブロックを示してもよい。
【0021】
また、本明細書に使用される用語「ユニット」は特定の符号化/復号化過程を実行するための基本ユニットを示し、「ブロック」は所定サイズのサンプル配列を示すと理解されてもよい。特に断りがない限り、「ブロック」と「ユニット」は交換可能に使用される。
例えば、以下に説明される実施例では、符号化ブロックと符号化ユニットは同じ意味を有すると理解されてもよい。
【0022】
図1は本発明の実施例のビデオエンコーダ(encoder)のブロック図である。
【0023】
図1に示すように、ビデオ符号化装置100はピクチャ分割部110、予測部120、125、変換部130、量子化部135、並べ替え部160、エントロピー符号化部165、逆量子化部140、逆変換部145、フィルタ部150及びメモリ155を備えてもよい。
【0024】
図1に示される各部材は独立して示され、これは各部材が分離したハードウェア又は単一のソフトウェアコンポーネントからなることを示さず、ビデオ符号化装置の様々な特徴的機能を示す。即ち、各部材については、説明の都合上、各部材の配列方式で各部材のうちの少なくとも2つの部材を1つの部材に組み合わせ、又は1つの部材を複数の部材に分割し、これにより機能を実行する。本発明の本質から逸脱しない限り、このような各部材を組み合わせる実施例及び各部材を分離する実施例も本発明の権限範囲に属する。
【0025】
そして、一部の構造要素は本発明において本質的機能を実行するために必要な構造要素ではなく、性能の向上のみに用いられる選択可能な構造要素である。本発明は性能の向上のみに用いられる構造要素以外の、本発明の本質を実現するために必要な部材のみを含むことによって実施されてもよく、且つ、性能の向上のみに用いられる選択可能な構造要素以外の必要な構造要素のみを含む構造も本発明の権限範囲に属する。
【0026】
ピクチャ分割部110は入力されたピクチャを少なくとも1つの処理ユニットに分割することができる。このような場合、処理ユニットは予測ユニット(PU、Prediction Unit)であってもよく、変換ユニット(TU、Transform Unit)であってもよく、符号化ユニット(CU、Coding Unit)であってもよい。ピクチャ分割部110は1つのピクチャを複数の符号化ユニット、予測ユニット及び変換ユニットの組み合わせに分割し、所定規格(例えば、コスト関数)に基づいて1つの符号化ユニット、予測ユニット及び変換ユニットの組み合わせを選択してピクチャを符号化することができる。
【0027】
例えば、1つのピクチャを複数の符号化ユニットに分割してもよい。ピクチャを符号化ユニットに分割するために、例えば4分木構造(Quad Tree Structure)の再帰型ツリー構造を使用してもよく、1つのビデオ又は最大符号化ユニット(largest coding unit)をルート(root)とするが、符号化ユニットを、分割された符号化ユニット数に相当する子ノードを有し得る他の符号化ユニットに分割することができる。何らかの制限によって、再び分割されない符号化ユニットは葉ノードとなる。即ち、1つの符号化ユニットが正方形分割しか実現できないと仮定すれば、1つの符号化ユニットは多くとも4つの他の符号化ユニットに分割され得る。
【0028】
以下、本発明の実施例では、符号化ユニットとは符号化を実行するユニットを意味してもよく、更に復号化を実行するユニットを意味してもよい。
【0029】
1つの符号化ユニットにおける予測ユニットを同じサイズの正方形又は矩形のうちの少なくとも1つの形状に分割してもよく、1つの符号化ユニットにおける1つの予測ユニットを他の予測ユニットと異なる形状及び/又はサイズに分割してもよい。
【0030】
符号化ユニットによりイントラ予測を実行する予測ユニットは最小符号化ユニットではない場合、複数の予測ユニットN×Nに分割せずにイントラ予測を実行してもよい。
【0031】
予測部120、125はインター予測を実行するインター予測部120、及びイントラ予測を実行するイントラ予測部125を含んでもよい。予測ユニットに対してインター予測を使用するかそれともイントラ予測を実行するかを決定して、各予測方法に基づいて具体的な情報(例えば、イントラ予測モード、運動ベクトル、参照ピクチャ等)を決定してもよい。このような場合、予測を実行する処理ユニットは予測方法及び具体的な内容を決定する処理ユニットと異なる可能性がある。例えば、予測ユニットによって予測方法及び予測モード等を決定してもよく、変換ユニットによって予測を実行してもよい。生成された予測ブロックと原ブロックとの残余値(残余ブロック)は変換部130に入力され得る。且つ、予測のための予測モード情報、運動ベクトル情報等を残余値とともにエントロピー符号化部165において符号化して、デコーダに伝送してもよい。特定の符号化モードを使用する場合、予測部120、125により予測ブロックを生成せずに、原ブロックを直接に符号化してデコーダに伝送してもよい。
【0032】
インター予測部120は現ピクチャの前のピクチャ又は後のピクチャのうちの少なくとも1つのピクチャの情報に基づいて予測ユニットを予測してもよい。いくつかの場合、更に現ピクチャにおける符号化された一部の領域の情報に基づいて予測ユニットを予測してもよい。インター予測部120は参照ピクチャ補間部、運動予測部、運動補償部を含んでもよい。
【0033】
参照ピクチャ補間部はメモリ155から参照ピクチャ情報を受信して、参照ピクチャに基づいて整数画素又は分数画素の画素情報を生成することができる。輝度画素については、1/4画素単位で分数画素の画素情報を生成するために、フィルタ係数の異なるDCTベース8タップ補間フィルタ(DCT-based Interpolation Filter)を使用してもよい。色度信号については、1/8画素単位で分数画素の画素情報を生成するために、フィルタ係数の異なるDCTベース4タップ補間フィルタ(DCT-based Interpolation Filter)を使用してもよい。
【0034】
運動予測部は参照ピクチャ補間部により補間された参照ピクチャに基づいて運動予測を実行することができる。運動ベクトルの計算方法はフルサーチブロックマッチングアルゴリズム(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)方法等の複数の方法を使用してもよい。
【0035】
イントラ予測部125は現ピクチャにおける画素情報としての現在ブロック周辺の参照画素情報に基づいて予測ユニットを生成することができる。現在予測ユニットの隣接ブロックがインター予測を実行したブロックであり且つ参照画素がインター予測を実行した画素である場合、インター予測を実行したブロックに含まれる参照画素を、周辺のイントラ予測を実行したブロックの参照画素情報として使用してもよい。即ち、参照画素が利用不可能である場合、利用可能な参照画素のうちの少なくとも1つの参照画素で利用不可能な参照画素情報を代替してもよい。
【0036】
イントラ予測において、予測モードは予測方向に基づいて参照画素情報を使用する角度予測モード、及び予測を実行する際に方向情報を使用しない非角度モードを有してもよい。輝度情報の予測モードと色度情報の予測モードは異なってもよく、色度情報を予測するために、輝度情報を予測するために使用するイントラ予測モード情報又は予測された輝度信号情報を適用してもよい。
【0037】
イントラ予測を実行するとき、予測ユニットのサイズが変換ユニットのサイズと同じである場合、予測ユニットの左側に存在する画素、左上に存在する画素、上方に存在する画素に基づいて予測ユニットに対してイントラ予測を実行してもよい。しかしながら、イントラ予測を実行するとき、予測ユニットのサイズが変換ユニットのサイズと異なる場合、変換ユニットに基づく参照画素を使用してイントラ予測を実行してもよい。且つ、最小符号化ユニットのみに対してN×N分割を用いるイントラ予測を適用してもよい。
【0038】
イントラ予測方法は予測モードに基づいて参照画素に対して適応型画面内平滑化(AIS、Adaptive Intra Smoothing)フィルタを適用した後、予測ブロックを生成してもよい。参照画素のための適応型画面内平滑化フィルタのタイプは異なる可能性がある。イントラ予測方法を実行するために、現在予測ユニットの周辺に存在する予測ユニットのイントラ予測モードによって現在予測ユニットのイントラ予測モードを予測してもよい。周辺予測ユニットにより予測されたモード情報を使用して現在予測ユニットの予測モードを予測する場合、現在予測ユニット及び周辺予測ユニットのイントラ予測モードが同じであれば、所定のフラグ情報を使用して、現在予測ユニット及び周辺予測ユニットの予測モードが同じであることを示す情報を伝送してもよく、現在予測ユニット及び周辺予測ユニットの予測モードが異なれば、エントロピー符号化を実行することにより現在ブロックの予測モード情報を符号化してもよい。
【0039】
且つ、残余情報を含む残余ブロックを生成することができる。前記残余情報は予測部120、125において生成された予測ユニットにより予測を実行する予測ユニットと予測ユニットの原ブロックとの差分である。生成された残余ブロックを変換部130に入力することができる。
【0040】
変換部130において、離散コサイン変換(DCT、Discrete Cosine Transform)又は離散サイン変換(DST、Discrete Sine Transform)等の変換方法を使用して残余ブロックを変換してもよい。前記残余ブロックは原ブロックと予測部120、125により生成された予測ユニットとの残余値(residual)情報を含む。DCT変換コアはDCT2又はDCT8のうちの少なくとも1つを含み、DST変換コアはDST7を含む。残余ブロックを生成するために使用する予測ユニットのイントラ予測モード情報に基づいて、DCTを適用して残余ブロックを変換するかそれともDSTを適用して残余ブロックを変換するかを決定してもよい。更に残余ブロックの変換をスキップしてもよい。残余ブロックの変換をスキップするかどうかを示すフラグを符号化してもよい。サイズが閾値以下である残余ブロック、輝度成分又は色度成分(4:4:4フォーマット以下)については、変換をスキップすることが許容されてもよい。
【0041】
量子化部135は変換部130において周波数領域に変換された値を量子化することができる。量子化係数はブロック又はビデオの重要性によって変化してもよい。逆量子化部140及び並べ替え部160に量子化部135において計算された値を提供することができる。
【0042】
並べ替え部160は量子化された残余値に対して係数値の並べ替えを実行することができる。
【0043】
並べ替え部160は係数スキャニング(Coefficient Scanning)方法によって2次元のブロック形状係数を1次元のベクトル形式に変更することができる。例えば、並べ替え部160はジグザグスキャン(Zig-Zag Scan)方法を使用してDC係数乃至高周波数領域の係数を走査して、1次元ベクトル形式に変更することができる。変換ユニットのサイズ及びイントラ予測モードに基づいて、ジグザグスキャンの代わりに、更に列方向に沿って2次元ブロック形状係数を走査する垂直走査、及び行方向に沿って2次元ブロック形状係数を走査する水平走査を使用してもよい。即ち、変換ユニットのサイズ及びイントラ予測モードに基づいて、ジグザグスキャン、垂直方向走査及び水平方向走査のうちのどの走査方法を使用するかを決定してもよい。
【0044】
エントロピー符号化部165は並べ替え部160により計算された値に基づいてエントロピー符号化を実行することができる。例えば、エントロピー符号化は指数ゴロム(Exponential Golomb)、コンテキスト適応型可変長符号化(CAVLC、Context-Adaptive Variable Length Coding)、コンテキスト適応型バイナリ算術符号化(CABAC、Context-Adaptive Binary Arithmetic Coding)等の複数の符号化方法を使用してもよい。
【0045】
エントロピー符号化部165は並べ替え部160及び予測部120、125からの符号化ユニットの残余値係数情報及びブロックタイプ情報、予測モード情報、分割ユニット情報、予測ユニット情報及び伝送ユニット情報、運動ベクトル情報、参照フレーム情報、ブロックの補間情報、フィルタリング情報等の複数の情報を符号化することができる。
【0046】
エントロピー符号化部165において並べ替え部160から入力された符号化ユニットの係数値に対してエントロピー符号化を行ってもよい。
【0047】
逆量子化部140及び逆変換部145は量子化部135により量子化された複数の値を逆量子化して、変換部130により変換された値を逆変換する。逆量子化部140及び逆変換部145において生成された残余値は予測部120、125に含まれる運動予測部、運動補償部及びイントラ予測部により予測された予測ユニットとマージすることにより、再構築ブロック(Reconstructed Block)を生成することができる。
【0048】
フィルタ部150はデブロッキングフィルタ、オフセット補正部、適応型ループフィルタ(ALF、Adaptive Loop Filter)のうちの少なくとも1つを含んでもよい。
【0049】
デブロッキングフィルタはブロック間の境界により再構築されたピクチャにおいて生成されたブロック歪みを除去することができる。デブロッキングを実行するかどうかを判断するために、ブロックに含まれるいくつかの列又は行に含まれる画素に基づいて、現在ブロックに対してデブロッキングフィルタを適用するかどうかを判断することができる。ブロックに対してデブロッキングフィルタを適用する場合、必要なデブロッキングフィルタリング強度に基づいてストロングフィルタ(Strong Filter)又はウィークフィルタ(Weak Filter)を適用してもよい。且つ、デブロッキングフィルタの使用過程において、垂直フィルタリング及び水平フィルタリングを実行するとき、水平方向フィルタリング及び垂直方向フィルタリングを同期処理してもよい。
【0050】
オフセット補正部は画素単位でデブロッキングを実行するビデオにおける原ビデオとの間のオフセットを補正することができる。指定されたピクチャをオフセット補正するために、ビデオに含まれる画素を所定数の領域に分割した後、オフセットを実行しようとする領域を決定して、対応の領域に対してオフセットを適用し、又は各画素のエッジ情報を考慮した上でオフセットを適用するという方法を使用してもよい。
【0051】
適応型ループフィルタリング(ALF、Adaptive Loop Filtering)はフィルタリング後の再構築ピクチャと原ビデオとを比較した値に基づいて実行されてもよい。ビデオに含まれる画素を所定組に分割した後、対応の組に使用されようとする1つのフィルタを決定することにより、各組に対してフィルタリングを区別的に実行することができる。適応型ループフィルタリングを適用するかどうかに関連する情報及び輝度信号は符号化ユニット(CU、Coding Unit)により伝送されてもよく、適用されようとする適応型ループフィルタの形状及びフィルタ係数は各ブロックによって異なる。且つ、適用されるブロックの特性にかかわらず、同じタイプ(固定タイプ)の適応型ループフィルタを適用することもできる。
【0052】
メモリ155はフィルタ部150により計算された再構築ブロック又はピクチャを記憶することができ、インター予測を実行する際に記憶される再構築ブロック又はピクチャを予測部120、125に提供することができる。
【0053】
図2は本発明の実施例のビデオデコーダ(decoder)のブロック図である。
【0054】
図2に示すように、ビデオデコーダ200はエントロピー復号化部210、並べ替え部215、逆量子化部220、逆変換部225、予測部230、予測部235、フィルタ部240、メモリ245を備えてもよい。
【0055】
ビデオエンコーダからビデオストリームを入力するとき、ビデオエンコーダと反対のステップに応じて、入力されたストリームを復号化してもよい。
【0056】
エントロピー復号化部210はビデオエンコーダのエントロピー符号化部においてエントロピー符号化を実行するステップと反対のステップに応じてエントロピー復号化してもよい。例えば、ビデオエンコーダにおいて実行される方法に対応して、指数ゴロム(Exponential Golomb)、コンテキスト適応型可変長符号化(CAVLC、Context-Adaptive Variable Length Coding)、コンテキスト適応型バイナリ算術符号化(CABAC、Context-Adaptive Binary Arithmetic Coding)等の複数の方法を適用してもよい。
【0057】
エントロピー復号化部210はエンコーダにより実行されるイントラ予測及びインター予測に関連する情報を復号化することができる。
【0058】
並べ替え部215は符号化部においてエントロピー復号化部210によりエントロピー復号化されたストリームを並べ替える方法に基づいて並べ替えを実行することができる。
1次元ベクトル形式で示される複数の係数を2次元のブロック形状の係数に再構築して並べ替えてもよい。並べ替え部215は符号化部において実行される係数スキャニングに関連する情報を受信し、対応の符号化部において実行される走査順序に従って逆方向走査を行う方法によって並べ替えを実行してもよい。
【0059】
逆量子化部220はエンコーダの提供する量子化パラメータ及び並べ替えられるブロックの係数値に基づいて逆量子化を実行してもよい。
【0060】
逆変換部225はビデオエンコーダにより実行される量子化結果に対して逆離散コサイン変換、逆離散サイン変換を実行することができる。前記逆離散コサイン変換、逆離散サイン変換は変換部において実行される変換の逆変換、即ち離散コサイン変換、離散サイン変換の逆変換に属する。DCT変換コアはDCT2又はDCT8のうちの少なくとも1つを含んでもよく、DST変換コアはDST7を含んでもよい。代替的に、ビデオエンコーダにおいて変換をスキップすれば、逆変換部225において逆変換を実行しなくてもよい。逆変換はビデオエンコーダにより決定された伝送ユニットにより実行されてもよい。ビデオデコーダの逆変換部225において、予測方法、現在ブロックのサイズ及び予測方向等の複数の情報に基づいて変換方法(例えば、DCT又はDST)を選択的に実行してもよい。
【0061】
予測部230、235はエントロピー復号化部210の提供する予測ブロックの生成に関連する情報及びメモリ245の提供する以前に復号化されたブロック又はピクチャ情報に基づいて予測ブロックを生成することができる。
【0062】
以上のように、ビデオエンコーダにおける操作と同じ方式でイントラ予測を実行するとき、予測ユニットのサイズが変換ユニットのサイズと同じである場合、予測ユニットの左側に存在する画素、左上に存在する画素、上方に存在する画素に基づいて予測ユニットに対してイントラ予測を実行し、イントラ予測を実行する際の予測ユニットのサイズが変換ユニットのサイズと異なる場合、変換ユニットに基づく参照画素を使用してイントラ予測を実行してもよい。且つ、更に最小符号化ユニットのみに対してN×N分割を用いるイントラ予測を適用してもよい。
【0063】
予測部230、235は予測ユニット判定部、インター予測部及びイントラ予測部を含んでもよい。予測ユニット判定部はエントロピー復号化部210から入力された予測ユニット情報、イントラ予測方法の予測モード情報、インター予測方法の運動予測関連情報等の複数種類の情報を受信し、現在符号化ユニットに基づいて予測ユニットを分類し、予測ユニットがインター予測を実行しているかそれともイントラ予測を実行しているかを決定できる。インター予測部230はビデオエンコーダの提供する現在予測ユニットのインター予測に必要な情報を使用して、現在予測ユニットの属する現ピクチャの前のピクチャ又は後のピクチャのうちの少なくとも1つのピクチャに含まれる情報に基づいて現在予測ユニットに対してインター予測を実行してもよい。代替的に、更に現在予測ユニットの属する現ピクチャにおける再構築された一部の領域の情報に基づいてインター予測を実行してもよい。
【0064】
インター予測を実行するために、符号化ユニットによって対応の符号化ユニットに含まれる予測ユニットの運動予測方法がスキップモード(Skip Mode)、マージモード(Merge Mode)、高度動きベクトル予測モード(AMVP Mode)、イントラブロックコピーモードのうちのどのモードであるかを判断することができる。
【0065】
イントラ予測部235は現ピクチャにおける画素情報に基づいて予測ブロックを生成することができる。予測ユニットがイントラ予測を実行した予測ユニットである場合、ビデオエンコーダの提供する予測ユニットのイントラ予測モード情報に基づいてイントラ予測を実行することができる。イントラ予測部235は適応型画面内平滑化(AIS、Adaptive Intra Smoothing)フィルタ、参照画素補間部、DCフィルタを含んでもよい。適応型画面内平滑化フィルタは現在ブロックの参照画素に対してフィルタリングを実行する部分であり、現在予測ユニットの予測モードに基づいてフィルタを適用するかどうかを決定することができる。ビデオエンコーダの提供する予測ユニットの予測モード及び適応型画面内平滑化フィルタ情報を使用して現在ブロックの参照画素に対して適応型画面内平滑化フィルタリングを実行してもよい。現在ブロックの予測モードが適応型画面内平滑化フィルタリングを実行しないモードである場合、適応型画面内平滑化フィルタを適用しなくてもよい。
【0066】
参照画素補間部については、予測ユニットの予測モードが参照画素を補間する画素値に基づいてイントラ予測を実行する予測ユニットである場合、参照画素を補間することにより整数値又は分数値の画素単位の参照画素を生成することができる。現在予測ユニットの予測モードが参照画素を補間しない方式で予測ブロックを生成する予測モードである場合、参照画素を補間しなくてもよい。現在ブロックの予測モードがDCモードである場合、DCフィルタはフィルタリングによって予測ブロックを生成することができる。
【0067】
再構築されたブロック又はピクチャをフィルタ部240に提供してもよい。フィルタ部240はデブロッキングフィルタ、オフセット補正部、ALFを含んでもよい。
【0068】
ビデオエンコーダから、対応のブロック又はピクチャに対してデブロッキングフィルタを適用するかどうかに関連する情報、及びデブロッキングフィルタを適用する際にストロングフィルタを適用するかそれともウィークフィルタを適用するかに関連する情報を受信することができる。ビデオデコーダのデブロッキングフィルタから、ビデオエンコーダの提供するデブロッキングフィルタに関連する情報を受信し、且つ、ビデオデコーダにおいて対応ブロックに対してデブロッキングフィルタリングを実行することができる。
【0069】
オフセット補正部は符号化時にビデオをオフセット補正するためのタイプ及びオフセット量情報等に基づいて、再構築されたビデオに対してオフセット補正を実行することができる。
【0070】
エンコーダの提供するALFを適用するかどうかに関連する情報、ALF係数情報等に基づいて、ALFを符号化ユニットに適用することができる。このようなALF情報は特定のパラメータセットに含まれることで提供され得る。
【0071】
メモリ245は再構築されたピクチャ又はブロックを記憶し、それにより前記ピクチャ又はブロックが参照ピクチャ又は参照ブロックとして利用でき、且つ再構築されたピクチャを出力部に提供することができる。
【0072】
図3は本発明の実施例の基本符号化ツリーユニットを示す図である。
【0073】
最大サイズの符号化ブロックを符号化ツリーブロックとして定義してもよい。1つのピクチャは複数の符号化ツリーユニット(CTU、Coding Tree Unit)に分割されてもよい。符号化ツリーユニットは最大サイズの符号化ユニットであり、更に最大符号化ユニット(LCU、Largest Coding Unit)と称されてもよい。図3には1つのピクチャを複数の符号化ツリーユニットに分割する例を示す。
【0074】
符号化ツリーユニットのサイズはピクチャレベル又はシーケンスレベルで定義されてもよい。このため、ピクチャパラメータセット又はシーケンスパラメータセットによって、信号を利用して、符号化ツリーユニットのサイズを示す情報を送信してもよい。
【0075】
例えば、シーケンスにおけるピクチャ全体の符号化ツリーユニットのサイズは128×128として設定されてもよい。代替的に、ピクチャレベルの128×128又は256×256のうちのいずれか1つを符号化ツリーユニットのサイズとして決定してもよい。
例えば、第1ピクチャにおける符号化ツリーユニットのサイズを128×128として設定してもよく、第2ピクチャにおける符号化ツリーユニットのサイズを256×256として設定してもよい。
【0076】
符号化ツリーユニットを分割することにより符号化ブロックを生成することができる。
符号化ブロックは符号化/復号化処理を行うための基本ユニットを示す。例えば、異なる符号化ブロックによって予測又は変換を実行してもよく、又は異なる符号化ブロックによって予測符号化モードを決定してもよい。予測符号化モードは予測ピクチャの生成方法を示す。例えば、予測符号化モードは画面内予測(Intra Prediction、イントラ予測)、画面間予測(Inter Prediction、インター予測)、現ピクチャ参照(CPR、Current Picture Referencing)、又はイントラブロックコピー(IBC、Intra Block Copy))又は組合せ予測(Combined Prediction)を含んでもよい。符号化ブロックに対して、イントラ予測、インター予測、現ピクチャ参照又は組合せ予測のうちの少なくとも1つの予測符号化モードを使用して符号化ブロックに関連する予測ブロックを生成してもよい。
【0077】
ストリームを介して信号によって、現在ブロックの予測符号化モードを示す情報を送信してもよい。例えば、前記情報は予測符号化モードがイントラモードであるかそれともインターモードであるかを示す1ビットフラグであってもよい。現在ブロックの予測符号化モードがインターモードであることを決定する場合のみ、現ピクチャ参照又は組合せ予測を使用してもよい。
【0078】
現ピクチャ参照は現ピクチャを参照ピクチャとして設定して、現ピクチャにおける符号化/復号化後の領域から現在ブロックの予測ブロックを取得することに用いられる。現ピクチャとは現在ブロックを含むピクチャを意味する。ストリームを介して信号によって、現在ブロックに対して現ピクチャ参照を適用するかどうかを示す情報を送信してもよい。
例えば、前記情報は1ビットフラグであってもよい。前記フラグが真である場合、現在ブロックの予測符号化モードを現ピクチャ参照として決定してもよく、前記フラグが偽である場合、現在ブロックの予測モードをインター予測として決定してもよい。
【0079】
代替的に、参照ピクチャインデックスに基づいて現在ブロックの予測符号化モードを決定してもよい。例えば、参照ピクチャインデックスが現ピクチャを指す場合、現在ブロックの予測符号化モードを現ピクチャ参照として決定してもよい。参照ピクチャインデックスが現ピクチャではなく他のピクチャを指す場合、現在ブロックの予測符号化モードをインター予測として決定してもよい。即ち、現ピクチャ参照は現ピクチャにおける符号化/復号化後の領域の情報を使用する予測方法であり、インター予測は符号化/復号化後の他のピクチャの情報を使用する予測方法である。
【0080】
組合せ予測はイントラ予測、インター予測及び現ピクチャ参照のうちの2つ以上が組み合わせられてなる符号化モードを示す。例えば、組合せ予測を適用する場合、イントラ予測、インター予測又は現ピクチャ参照のうちの1つによって第1予測ブロックを生成してもよく、イントラ予測、インター予測又は現ピクチャ参照のうちのもう1つによって第2予測ブロックを生成してもよい。第1予測ブロック及び第2予測ブロックを生成する場合、第1予測ブロック及び第2予測ブロックの平均演算又は加重和演算によって最終的な予測ブロックを生成してもよい。ストリームを介して信号によって、組合せ予測を適用するかどうかを示す情報を送信してもよい。前記情報は1ビットフラグであってもよい。
【0081】
図4は符号化ブロックの複数の分割タイプを示す図である。
【0082】
4分木分割、2分木分割又は3分木分割によって符号化ブロックを複数の符号化ブロックに分割してもよい。そして4分木分割、2分木分割又は3分木分割によって、分割された符号化ブロックを複数の符号化ブロックに再び分割してもよい。
【0083】
4分木分割とは現在ブロックを4つのブロックに分割する分割技術を指す。4分木分割の結果として、現在ブロックを4つの正方形セグメントに分割してもよい(図4(a)部分における「SPLIT_QT」を参照)。
【0084】
2分木分割とは現在ブロックを2つのブロックに分割する分割技術を指す。垂直方向に沿って(即ち、現在ブロックを横切る垂直線を使用して)現在ブロックを2つのブロックに分割する過程は垂直方向2分木分割と称されてもよく、水平方向に沿って(即ち、現在ブロックを横切る水平線を使用して)現在ブロックを2つのブロックに分割する過程は水平方向2分木分割と称されてもよい。2分木分割の後で現在ブロックを2つの非正方形セグメントに分割してもよい。図4(b)部分における「SPLIT_BT_VER」は垂直方向2分木分割結果を示し、図4(c)部分における「SPLIT_BT_HOR」は水平方向2分木分割結果を示す。
【0085】
3分木分割とは現在ブロックを3つのブロックに分割する分割技術を指す。垂直方向に沿って(即ち、現在ブロックを横切る2つの垂直線を使用して)現在ブロックを3つのブロックに分割する過程は垂直方向3分木分割と称されてもよく、水平方向に沿って(即ち、現在ブロックを横切る2つの水平線を使用して)現在ブロックを3つのブロックに分割する過程は水平方向3分木分割と称されてもよい。3分木分割の後で現在ブロックを3つの非正方形セグメントに分割してもよい。このような場合、現在ブロックの中心に位置するセグメントの幅/高さは他のセグメントの幅/高さの2倍であってもよい。図4(d)部分における「SPLIT_TT_VER」は垂直方向3分木分割結果を示し、図4(e)部分における「SPLIT_TT_HOR」は水平方向3分木分割結果を示す。
【0086】
符号化ツリーユニットの分割回数を分割深度(Partitioning Depth)として定義してもよい。シーケンス又はピクチャレベルで符号化ツリーユニットの最大分割深度を決定してもよい。これにより、符号化ツリーユニットの最大分割深度は様々なシーケンス又はピクチャによって異なってもよい。
【0087】
代替的に、複数の分割技術のそれぞれに対する最大分割深度を独立して決定してもよい。例えば、4分木分割が許容される最大分割深度は2分木分割及び/又は3分木分割が許容される最大分割深度と異なってもよい。
【0088】
エンコーダはストリームを介して信号によって、現在ブロックの分割形状又は分割深度のうちの少なくとも1つを示す情報を送信してもよい。デコーダはストリームから解析された情報に基づいて符号化ツリーユニットの分割形状及び分割深度を決定してもよい。
【0089】
図5は符号化ツリーユニットの分割例を示す図である。
【0090】
4分木分割、2分木分割及び/又は3分木分割等の分割技術を使用して符号化ブロックを分割する過程はマルチツリー分割(Multi Tree Partitioning)と称されてもよい。
【0091】
符号化ブロックに対してマルチツリー分割を適用して生成した符号化ブロックは複数の下流符号化ブロックと称されてもよい。符号化ブロックの分割深度がkである場合、複数の下流符号化ブロックの分割深度がk+1として設定される。
【0092】
一方、分割深度k+1の複数の符号化ブロックに対して、分割深度kの符号化ブロックは上流符号化ブロックと称されてもよい。
【0093】
上流符号化ブロックの分割形状又は隣接符号化ブロックの分割タイプのうちの少なくとも1つに基づいて現在符号化ブロックの分割タイプを決定してもよい。隣接符号化ブロックは現在符号化ブロックに隣接し、現在符号化ブロックの上側隣接ブロック、左側隣接ブロック又は左上角に隣接する隣接ブロックのうちの少なくとも1つを含んでもよい。分割タイプは4分木に分割されるかどうか、2分木に分割されるかどうか、2分木の分割方向、3分木に分割されるかどうか又は3分木の分割方向のうちの少なくとも1つを含んでもよい。
【0094】
符号化ブロックの分割形状を決定するために、ストリームを介して信号によって、符号化ブロックが分割されたかどうかを示す情報を送信してもよい。前記情報は1ビットフラグ「split_cu_flag」であり、前記フラグが真である場合、マルチツリー分割技術によって符号化ブロックを分割することを示す。
【0095】
「split_cu_flag」が真である場合、ストリームを介して信号によって、符号化ブロックが4分木分割されたかどうかを示す情報を送信してもよい。前記情報は1ビットフラグ「split_qt_flag」であり、前記フラグが真である場合、符号化ブロックは4つのブロックに分割され得る。
【0096】
例えば、図5に示される例には符号化木ユニットが4分木分割されるにつれて分割深度1の4つの符号化ブロックを生成することを示す。且つ、4分木分割の結果として生成された4つの符号化ブロックのうちの1番目の符号化ブロック及び4番目の符号化ブロックに対して4分木分割を再び適用することを示す。最終的に、分割深度2の4つの符号化ブロックを生成することができる。
【0097】
且つ、分割深度2の符号化ブロックに対して4分木分割を再び適用して分割深度3の符号化ブロックを生成してもよい。
【0098】
符号化ブロックに対して4分木分割を適用しない場合、符号化ブロックのサイズ、符号化ブロックがピクチャ境界に位置するかどうか、最大分割深度又は隣接ブロックの分割形状のうちの少なくとも1つを考慮した上で、前記符号化ブロックに対して2分木分割を実行するかそれとも3分木分割を実行するかを決定してもよい。前記符号化ブロックに対して2分木分割又は3分木分割を実行することを決定する場合、ストリームを介して信号によって、分割方向を示す情報を送信してもよい。前記情報は1ビットフラグ「mtt_split_cu_vertical_flag」であってもよい。前記フラグに基づいて、分割方向が垂直方向であるかそれとも水平方向であるかを決定してもよい。また、ストリームを介して信号によって、前記符号化ブロックに対して2分木分割又は3分木分割のうちのどの分割を適用するかを示す情報を送信してもよい。前記情報は1ビットフラグ「mtt_split_cu_binary_flag」であってもよい。前記フラグに基づいて、前記符号化ブロックに対して2分木分割を適用するかそれとも3分木分割を適用するかを決定してもよい。
【0099】
例えば、図5に示される例には、分割深度1の符号化ブロックに対して垂直方向2分木分割を適用し、前記分割結果として生成された符号化ブロックのうちの左側符号化ブロックに対して垂直方向3分木分割を適用し、右側符号化ブロックに対して垂直方向2分木分割を適用することを示す。
【0100】
ビデオの符号化又は復号化装置を実施するとき、閾値を超える領域を処理することがハードウェア性能により困難であるという問題がある。例えば、ハードウェア性能は多くとも4096個のサンプルを同時に処理することを許容する場合、サイズ64×64のデータユニットが冗長的にアクセス・処理されるべきであり、4096個より多くのサンプルの領域におけるデータが同時に処理できないという問題がある恐れがある。以上のように、データ処理の基本ユニットはパイプラインに基づく基本データユニット(仮想処理データユニット、VPDU、以下に基本データユニットと称される)として定義されてもよい。
【0101】
基本データユニットは正方形、非正方形又は非矩形タイプに分けられてもよい。
【0102】
図6は基本データユニットの形状を示す図である。
【0103】
基本データユニットは同時に処理できる最大サンプル数以下のサンプルを含んでもよい。例えば、図6(a)に示される例では、64×64サイズの正方形ブロックを基本データユニットとして設定してもよい。代替的に、非正方形ブロックを基本データユニットとして設定してもよい。例えば、図6(b)又は図6(c)に示される例では、32×128サイズのブロック又は64×32サイズのブロックを基本データユニットとして設定してもよい。
【0104】
図示しないが、三角形、L字形又は多角形の基本データユニットを定義してもよい。
【0105】
ストリームを介して信号によって、基本データユニットを決定するための情報を送信してもよい。前記情報は基本データユニットのサイズ又は形状のうちの少なくとも1つを決定することに用いられてもよい。前記情報に基づいて、非正方形基本データユニットが許容されるか、それとも非矩形基本データユニットが許容されるかを決定してもよい。
【0106】
代替的に、エンコーダ及びデコーダにおいて基本データユニットのサイズ又は形状のうちの少なくとも1つを予め定義してもよい。
【0107】
基本データユニットのサイズを考慮した上で、符号化ブロックの分割タイプが許容されるかどうかを決定してもよい。例えば、符号化ブロックの分割結果として生成された符号化ブロックが基本データユニットより大きい場合、このような分割が許容されない可能性がある。代替的に、符号化ブロックの分割結果として生成された非正方形符号化ブロックが基本データユニットより大きい場合、このような分割が許容されない可能性がある。例えば、符号化ブロックの幅又は高さが閾値より大きく又は符号化ブロックに含まれるサンプル数が閾値より大きい場合、2分木又は3分木分割が許容されない可能性がある。従って、2分木又は3分木分割に関連する情報の符号化は省略してもよい。
【0108】
代替的に、基本データユニットより大きい符号化ブロックを分割しなければならないように設定してもよい。代替的に、基本データユニットより大きい符号化ブロックに対して2分木分割又は3分木分割を実行しなければならないように設定してもよい。従って、基本データユニットより大きい符号化ブロックに対して、符号化ブロックが分割されたかどうかを示すフラグsplit_flagを符号化しないが、該フラグの値を1として導き出してもよい。
【0109】
他の例として、基本データユニットより大きい符号化ブロックは複数のサブブロックに分割されてもよい。ここで、サブブロックを、予測のための基本ユニットとしての予測ユニット、又は変換及び/又は量子化のための基本ユニットとしての変換ユニットとして設定してもよい。このような場合、符号化ブロックを複数の予測ユニットに分割することはVPDU予測ユニット分割として定義されてもよく、符号化ブロックを複数の変換ユニットに分割することはVPDU変換ユニット分割として定義されてもよい。
【0110】
VPDU予測ユニット分割及びVPDU変換ユニット分割のうちの少なくとも1つを符号化ブロックに適用してもよい。VPDU予測ユニット分割を適用する符号化ブロックの分割タイプを、VPDU変換ユニット分割を適用する符号化ブロックの分割タイプと同じであるように設定してもよい。
【0111】
VPDU予測ユニット分割のみを符号化ブロックに適用する場合、各サブブロックに対して予測を実行するが、符号化ブロックに対して変換及び/又は量子化を実行してもよい。このような場合、符号化ブロックに対して予測符号化モード、イントラ予測モード又はインター予測モード等のような予測モードを決定してもよい。
【0112】
VPDU変換ユニット分割のみを符号化ブロックに適用する場合、サブブロックに対して予測を実行するが、各サブブロックに対して変換及び/又は量子化を実行してもよい。
【0113】
図7及び図8は符号化ブロックを複数のサブブロックに分割する例を示す図である。
【0114】
図7は正方形基本データユニットしか許容されない場合の分割モードを示す図であり、図8は正方形基本データユニットと非正方形基本データユニットが許容される場合の分割モードを示す図である。
【0115】
正方形基本データユニットしか許容されないと仮定すれば、図7(a)及び図7(b)では、CU0とCU2は2つの異なるVPDUとして定義され、CU1は4つの異なるVPDUとして定義される。従って、CU0とCU2は2つのサブブロックに分割されてもよく、CU1は4つのサブブロックに分割されてもよい。
【0116】
正方形基本データユニットと非正方形基本データユニットが許容されると仮定すれば、図8(a)及び図8(b)では、CU0とCU2は1つのVPDUとして定義されてもよく、CU1は2つの異なるVPDUとして定義されてもよい。従って、CU0とCU2はサブブロックに分割されないが、CU1は2つのサブブロックに分割されてもよい。
【0117】
このような場合、CU1は正方形サブブロック又は非正方形サブブロックに分割されてもよい。例えば、CU1を上下分割する水平線に基づいて、CU1は2つの正方形サブブロックに分割されてもよい。代替的に、CU1を左右分割する垂直線に基づいて、CU1は2つの非正方形サブブロックに分割されてもよい。
【0118】
符号化ブロックに適用される分割タイプ候補が複数ある場合、ストリームを介して信号によって、複数の分割タイプ候補のうちのいずれか1つの情報を送信してもよい。例えば、前記情報は符号化ブロックが正方形サブブロックに分割されたかどうか、又は符号化ブロックが非正方形サブブロックに分割されたかどうかを示してもよい。
【0119】
代替的に、符号化ブロックを正方形サブブロックに分割することは、符号化ブロックを非正方形サブブロックに分割する優先度より高い優先度を有するように設定されてもよい。例えば、符号化ブロックが正方形サブブロックに分割できない場合、符号化ブロックを非正方形サブブロックに分割することが許容され得る。
【0120】
代替的に、父ノードとしての符号化ブロックの分割タイプに基づいて符号化ブロックの分割タイプを決定してもよい。例えば、3分木によって父ノード符号化ブロックを分割する場合、該符号化ブロックを正方形サブブロックに分割するように設定してもよい。一方、2分木又は3分木によって父ノード符号化ブロックを分割する場合、符号化ブロックを非正方形サブブロックに分割するように設定してもよい。
【0121】
インター予測とは前のピクチャの情報を使用して現在ブロックの予測符号化モードを予測することを指す。例えば、前のピクチャにおける現在ブロックと同じ位置のブロック(以下にコロケーテッドブロック(Collocated block)と称される)を現在ブロックの予測ブロックとして設定してもよい。以下、位置が現在ブロックと同じであるブロックに基づいて生成された予測ブロックはコロケーテッド予測ブロック(Collocated Prediction Block)と称される。
【0122】
一方、前のピクチャに存在するオブジェクトは既に現ピクチャにおける他の位置に移動した場合、オブジェクトの運動によって現在ブロックを効果的に予測してもよい。例えば、前のピクチャと現ピクチャとを比較することによりオブジェクトの移動方向及びサイズを把握できる場合、オブジェクトの運動情報を考慮した上で現在ブロックの予測ブロック(又は予測ピクチャ)を生成してもよい。以下、運動情報により生成された予測ブロックは運動予測ブロックと称されてもよい。
【0123】
現在ブロックから予測ブロックを除去することにより残余ブロック(residual block)を生成することができる。このような場合、オブジェクトが運動する場合、運動予測ブロックでコロケーテッド予測ブロックを代替してもよい。これにより、残余ブロックのエネルギーを減少させ、残余ブロックの圧縮性能を向上させることができる。
【0124】
以上のように、運動情報により予測ブロックを生成する過程は運動補償予測と称されてもよい。大部分のインター予測において、運動補償予測によって予測ブロックを生成してもよい。
【0125】
運動情報は運動ベクトル、参照ピクチャインデックス、予測方向又は双方向重み付け値インデックスのうちの少なくとも1つを含んでもよい。運動ベクトルはオブジェクトの移動方向及びサイズを示す。参照ピクチャインデックスは参照ピクチャリストに含まれる複数の参照ピクチャのうちの現在ブロックの参照ピクチャを指定する。予測方向とは単方向L0予測、単方向L1予測又は双方向予測(L0予測及びL1予測)のうちのいずれか1つを指す。現在ブロックの予測方向に基づいてL0方向の運動情報又はL1方向の運動情報のうちの少なくとも1つを使用してもよい。双方向重み付け値インデックスはL0予測ブロックのための重み付け値及びL1予測ブロックに適用される重み付け値を指定する。
【0126】
図9は本発明の実施例に係るインター予測方法のフローチャートである。
【0127】
図9に示すように、インター予測方法は、現在ブロックのインター予測モードを決定すること(S901)と、決定されたインター予測モードに基づいて現在ブロックの運動情報を取得すること(S902)と、取得された運動情報に基づいて現在ブロックの運動補償予測を実行すること(S903)と、を含む。
【0128】
インター予測モードは現在ブロックの運動情報を決定するための複数の技術を示し、並進(Translation)運動情報を使用するインター予測モード、及びアフィン(Affine)運動情報を使用するインター予測モードを含んでもよい。例えば、並進運動情報を使用するインター予測モードはマージモード及び高度動きベクトル予測モードを含んでもよく、アフィン運動情報を使用するインター予測モードはアフィンマージモード及びアフィン運動ベクトル予測モードを含んでもよい。インター予測モードに応じて、現在ブロックに隣接する隣接ブロック又はストリームから解析された情報に基づいて現在ブロックの運動情報を決定してもよい。
【0129】
現在ブロックの他のブロックの運動情報から現在ブロックの運動情報を導き出してもよい。他のブロックは現在ブロックより優先的にインター予測で符号化/復号化を行うブロックであってもよい。現在ブロックの運動情報が他のブロックの運動情報と同じであるように設定される場合はマージモードとして定義されてもよい。且つ、他のブロックの運動ベクトルが現在ブロックの運動ベクトルの予測値として設定される場合は運動ベクトル予測モードとして定義されてもよい。
【0130】
図10はマージモードにおいて現在ブロックの運動情報を導き出す過程のフローチャートである。
【0131】
現在ブロックのマージ候補を導き出してもよい(S1001)。現在ブロックのマージ候補は現在ブロックの前にインター予測で符号化/復号化を行うブロックから導き出されてもよい。
【0132】
図11はマージ候補を導き出すための候補ブロックの例を示す図である。
【0133】
候補ブロックは現在ブロックに隣接するサンプルを含む隣接ブロック、又は現在ブロックに隣接しないサンプルを含む非隣接ブロックのうちの少なくとも1つを含んでもよい。
以下、候補ブロックを決定するためのサンプルは参照サンプルとして指定される。また、現在ブロックに隣接する参照サンプルは隣接参照サンプルと称され、現在ブロックに隣接しない参照サンプルは非隣接参照サンプルと称される。
【0134】
隣接参照サンプルは現在ブロックの最左側列の隣接列又は現在ブロックの最上方行の隣接行に含まれてもよい。例えば、現在ブロックの左上サンプルの座標が(0,0)である場合、(-1,H-1)位置での参照サンプルを含むブロック、(W-1,-1)位置での参照サンプルを含むブロック、(W,-1)位置での参照サンプルを含むブロック、(-1,H)位置での参照サンプルを含むブロック、又は(-1,-1)位置での参照サンプルを含むブロックのうちの少なくとも1つは候補ブロックとして使用されてもよい。図面を参照しながら、インデックス0~4の隣接ブロックは候補ブロックとして使用されてもよい。
【0135】
非隣接参照サンプルは現在ブロックに隣接する参照サンプルとのx軸距離又はy軸距離のうちの少なくとも1つが予め定義された値を有するサンプルを示す。例えば、左側参照サンプルとのx軸距離が予め定義された値である参照サンプルを含むブロック、上方参照サンプルとのy軸距離が予め定義された値である非隣接サンプルを含むブロック、又は左上参照サンプルとのx軸距離及びy軸距離が予め定義された値である非隣接サンプルを含むブロックのうちの少なくとも1つは候補ブロックとして使用されてもよい。予め定義された値は4、8、12、16等の整数であってもよい。図面を参照しながら、インデックス5~26のブロックのうちの少なくとも1つは候補ブロックとして使用されてもよい。
【0136】
代替的に、現在ブロックと同じ符号化ツリーユニットに属しない候補ブロックはマージ候補として使用できないように設定されてもよい。例えば、参照サンプルが現在ブロックの属する符号化ツリーユニットの上境界を超える場合、参照サンプルを含む候補ブロックはマージ候補として使用できないように設定されてもよい。
【0137】
更に現在ブロックと異なるピクチャに含まれる時間隣接ブロックからマージ候補を導き出してもよい。例えば、コロケーテッドピクチャに含まれるコロケーテッドブロックからマージ候補を導き出してもよい。参照ピクチャリストに含まれる複数の参照ピクチャのうちのいずれか1つはコロケーテッドピクチャとして設定されてもよい。ストリームを介して信号によって、複数の参照ピクチャのうちのコロケーテッドピクチャを示すためのインデックス情報を送信してもよい。代替的に、複数の参照ピクチャのうちの予め定義されたインデックスを有する参照ピクチャはコロケーテッドピクチャとして決定されてもよい。
【0138】
マージ候補の運動情報を候補ブロックの運動情報と同じであるように設定してもよい。
例えば、候補ブロックの運動ベクトル、参照ピクチャインデックス、予測方向又は双方向重み付け値インデックスのうちの少なくとも1つはマージ候補の運動情報として設定されてもよい。
【0139】
マージ候補を含むマージ候補リストを生成してもよい(S1002)。
【0140】
所定順序に従ってマージ候補リストにおける複数のマージ候補のインデックスを割り当ててもよい。例えば、左側隣接ブロックから導き出したマージ候補、上側隣接ブロックから導き出したマージ候補、右上隣接ブロックから導き出したマージ候補、左下隣接ブロックから導き出したマージ候補、左上隣接ブロックから導き出したマージ候補、及び時間隣接ブロックから導き出したマージ候補の順序に従って、インデックスを割り当ててもよい。
【0141】
マージ候補リストは複数のマージ候補を含む場合、前記複数のマージ候補のうちの少なくとも1つを選択してもよい(S1003)。具体的に、ストリームを介して信号によって、複数のマージ候補のうちのいずれか1つを指定するための情報を送信してもよい。例えば、ストリームを介して信号によって、マージ候補リストに含まれる複数のマージ候補のうちのいずれか1つを示すインデックスの情報merge_idxを送信してもよい。
【0142】
マージ候補リストに含まれるマージ候補の数が閾値より小さい場合、インター運動情報リストに含まれるマージ候補をマージ候補リストに追加してもよい。閾値はマージ候補リストに含まれ得る最大マージ候補の数又は最大マージ候補の数からオフセット量を引いた値であってもよい。オフセット量は1又は2等の整数であってもよい。インター運動情報リストは現在ブロックの前に符号化/復号化されるブロックに基づいて導き出したマージ候補を含んでもよい。
【0143】
インター運動情報リストは現ピクチャにおけるインター予測により符号化/復号化されたブロックから導き出したマージ候補を含む。例えば、インター運動情報リストに含まれるマージ候補の運動情報はインター予測により符号化/復号化されたブロックの運動情報と同じであるように設定されてもよい。運動情報は運動ベクトル、参照ピクチャインデックス、予測方向又は双方向重み付け値インデックスのうちの少なくとも1つを含んでもよい。
【0144】
符号化ブロックを複数の予測ユニットに分割してもよく、それぞれ分割された予測ユニットに対して予測を実行してもよい。予測ユニットは予測のための基本ユニットを示す。
【0145】
符号化ブロックは垂直線、水平線、斜線又は対角線のうちの少なくとも1つを使用して分割してもよい。ストリームを介して信号によって、符号化ブロックを分割する線の数、角度又は位置のうちの少なくとも1つを決定するための情報を送信してもよい。例えば、ストリームを介して信号によって、符号化ブロックの分割タイプ候補のうちのいずれか1つを示す情報を送信してもよく、又は、ストリームを介して信号によって、符号化ブロックを分割する複数の線候補のうちのいずれか1つを指定する情報を送信してもよい。代替的に、ストリームを介して信号によって、符号化ブロックを分割する線候補の数又はタイプを決定するための情報を送信してもよい。例えば、1ビットフラグを使用して、角度が対角線より大きい斜線及び/又は角度が対角線より小さい斜線が線候補として使用できるかどうかを決定してもよい。
【0146】
代替的に、符号化ブロックのイントラ予測モード、インター予測モード、使用可能なマージ候補の位置又は隣接ブロックの分割タイプのうちの少なくとも1つに基づいて、符号化ブロックを分割する線の数、角度又は位置のうちの少なくとも1つを適応的に決定してもよい。
【0147】
符号化ブロックが複数の予測ユニットに分割される場合、分割された各予測ユニットに対してイントラ予測又はインター予測を実行してもよい。
【0148】
図12は対角線を使用して符号化ブロックを複数の予測ユニットに分割する例を示す図である。
【0149】
図12(a)及び図12(b)に示される例では、対角線を使用して符号化ブロックを2つの三角形予測ユニットに分割してもよい。
【0150】
図12(a)及び図12(b)には、符号化ブロックの2つの頂点を接続する対角線を使用して符号化ブロックを2つの予測ユニットに分割することを示す。しかしながら、線の少なくとも1つの末端が符号化ブロックの頂点を通らない斜線を使用して、符号化ブロックを2つの予測ユニットに分割してもよい。
【0151】
図13は符号化ブロックを2つの予測ユニットに分割する例を示す図である。
【0152】
図13(a)及び図13(b)に示される例では、その両端がそれぞれ符号化ブロックの上境界及び下境界に接触する斜線を使用して符号化ブロックを2つの予測ユニットに分割してもよい。
【0153】
代替的に、図13(c)及び図13(d)に示される例では、その両端がそれぞれ符号化ブロックの左境界及び右境界に接触する斜線を使用して符号化ブロックを2つの予測ユニットに分割してもよい。
【0154】
代替的に、符号化ブロックを異なるサイズの2つの予測ブロックに分割してもよい。例えば、符号化ブロックを分割する斜線は1つの頂点を形成する2つの境界面に接触するように設定され、これにより、符号化ブロックを異なるサイズの2つの予測ユニットに分割することができる。
【0155】
図14は符号化ブロックを異なるサイズの複数の予測ブロックに分割する例を示す図である。
【0156】
図14(a)及び図14(b)に示される例では、符号化ブロックの左上角又は右下角で接続される対角線を、符号化ブロックの左上角又は右下角を通ることなく、符号化ブロックの左境界、右境界、上境界又は下境界を通るように設定することにより、符号化ブロックを異なるサイズの2つの予測ユニットに分割することができる。
【0157】
代替的に、図14(c)及び図14(d)に示される例では、符号化ブロックの右上角又は左下角で接続される対角線を、符号化ブロックの左上角又は右下角を通ることなく、符号化ブロックの左境界、右境界、上境界又は下境界を通るように設定することにより、符号化ブロックを異なるサイズの2つの予測ユニットに分割することができる。
【0158】
符号化ブロックを分割することにより生成された各予測ユニットは「第N予測ユニット」と称される。例えば、図12図14に示される例では、PU1は第1予測ユニットとして定義されてもよく、PU2は第2予測ユニットとして定義されてもよい。第1予測ユニットとは符号化ブロックにおける左下のサンプル又は左上のサンプルを含む予測ユニットを指してもよく、第2予測ユニットとは符号化ブロックにおける右上のサンプル又は右下のサンプルを含む予測ユニットを指してもよい。
【0159】
上記とは逆に、符号化ブロックにおける右上のサンプル又は右下のサンプルを含む予測ユニットは第1予測ユニットとして定義されてもよく、符号化ブロックにおける左下のサンプル又は左上のサンプルを含む予測ユニットは第2予測ユニットとして定義されてもよい。
【0160】
以下に記載される実施例は主に対角線を使用する分割例を説明する。特に、対角線を使用して符号化ブロックを2つの予測ユニットに分割する過程は対角線分割又は三角形分割と称され、対角線分割により生成された予測ユニットは三角形予測ユニットと称される。
しかしながら、無論、以下に記載される実施例において垂直線、水平線又は対角線と異なる角度の斜線による分割例を使用してもよい。
【0161】
スライスタイプ、マージ候補リストに含まれ得るマージ候補の最大数、符号化ブロックのサイズ、符号化ブロックの形状、符号化ブロックの予測符号化モード又は親ノードの分割タイプのうちの少なくとも1つに基づいて、符号化ブロックに対して対角線分割を適用するかどうかを決定してもよい。
【0162】
例えば、現在スライスがB-スライスであるかどうかによって、符号化ブロックに対して対角線分割を適用するかどうかを決定してもよい。現在スライスがB-スライスである場合のみ、対角線分割が許容され得る。
【0163】
代替的に、マージ候補リストに含まれるマージ候補の最大数が2つ以上であるかどうかによって、符号化ブロックに対して対角線分割を適用するかどうかを決定してもよい。マージ候補リストに含まれるマージ候補の最大数が2つ以上である場合のみ、対角線分割が許容され得る。
【0164】
代替的に、ハードウェアの幅及び高さのうちの少なくとも1つが64より大きい場合、64×64サイズのデータ処理ユニットが冗長的にアクセスされてしまうこととなる。これにより、符号化ブロックの幅及び高さのうちの少なくとも1つが閾値より大きい場合、符号化ブロックを複数の予測ブロックに分割することが許容されない可能性がある。例えば、符号化ブロックの高さ及び幅のうちの少なくとも1つが64より大きい場合(例えば、幅及び高さのうちの少なくとも1つが128である場合)、対角線分割を使用しなくてもよい。
【0165】
代替的に、ハードウェア実施形態において同時に処理できる最大サンプル数を考慮した上で、サンプル数が閾値より大きい符号化ブロックに対して、対角線分割が許容されない可能性がある。例えば、サンプル数が4096より大きい符号化ツリーブロックに対して、対角線分割が許容されない可能性がある。
【0166】
代替的に、符号化ブロックに含まれるサンプル数が閾値より小さい符号化ブロックに対して、対角線分割が許容されない可能性がある。例えば、符号化ブロックに含まれるサンプル数が64より小さい場合、対角線分割を符号化ブロックに適用しないように設定してもよい。
【0167】
代替的に、符号化ブロックの幅と高さの比が第1閾値より小さいかどうか、又は符号化ブロックの幅と高さの比が第2閾値より大きいかどうかによって、符号化ブロックに対して対角線分割を適用するかどうかを決定してもよい。ここで、符号化ブロックの幅と高さの比whRatioは符号化ブロックの幅CbWと高さCbHの比として決定されてもよく、下記等式1に示される。
【0168】
等式1
【0169】
第2閾値は第1閾値の逆数であってもよい。例えば、第1閾値がkである場合、第2閾値は1/kであってもよい。
【0170】
符号化ブロックの幅と高さの比が第1閾値と第2閾値との間にある場合のみ、符号化ブロックに対して対角線分割を適用できる。
【0171】
代替的に、符号化ブロックの幅と高さの比が第1閾値より小さく又は第2閾値より大きい場合のみ、三角形分割を使用できる。例えば、第1閾値が16である場合、64×4又は4×64サイズの符号化ブロックに対して対角線分割が許容できない。
【0172】
代替的に、親ノードの分割タイプに基づいて、対角線分割が許容されるかどうかを決定してもよい。例えば、親ノードとしての符号化ブロックが4分木分割を行う場合、葉ノードとしての符号化ブロックに対して対角線分割を適用できる。一方、親ノードとしての符号化ブロックが2分木又は3分木分割によって分割される場合、葉ノードとしての符号化ブロックは対角線分割が許容されないように設定される。
【0173】
代替的に、符号化ブロックの予測符号化モードに基づいて、対角線分割が許容されるかどうかを決定してもよい。例えば、符号化ブロックがイントラ予測によって符号化される場合、符号化ブロックがインター予測によって符号化される場合又は符号化ブロックが予め定義されたインター予測モードで符号化される場合のみ、対角線分割が許容され得る。
予め定義されたインター予測モードはマージモード、高度動きベクトル予測モード、アフィンマージモード又はアフィン運動ベクトル予測モードのうちの少なくとも1つを示してもよい。
【0174】
代替的に、並列処理領域のサイズに基づいて、対角線分割が許容されるかどうかを決定してもよい。例えば、符号化ブロックのサイズが並列処理領域のサイズより大きい場合、対角線分割を使用しない可能性がある。
【0175】
更に前記列挙した条件のうちの2つ以上の条件を考慮した上で、符号化ブロックに対して対角線分割を適用するかどうかを決定してもよい。
【0176】
他の例として、ストリームを介して信号によって、対角線分割を符号化ブロックに適用するかどうかを示す情報を送信してもよい。前記情報はシーケンスレベル、ピクチャレベル、スライスレベル又はブロックレベルで信号によって送信されてもよい。例えば、符号化ブロックレベルで信号によって、符号化ブロックに対して三角形分割を適用したかどうかを示すフラグtriangle_partition_flagを送信してもよい。
【0177】
符号化ブロックに対して対角線分割を適用することを決定する場合、ストリームを介して信号によって、符号化ブロックを分割する線の数又は線の位置を示す情報を送信してもよい。
【0178】
例えば、符号化ブロックが対角線により分割される場合、ストリームを介して信号によって、符号化ブロックを分割する対角線の方向を示す情報を送信してもよい。例えば、ストリームを介して信号によって、対角線の方向を示すフラグtriangle_partition_type_flagを送信してもよい。前記フラグは符号化ブロックが左上と右下を接続する対角線により分割されるかどうか、又は右上と左下を接続する対角線により分割されるかどうかを示す。左上と右下を接続する対角線で符号化ブロックを分割することは左三角形分割タイプと称されるが、右上と左下を接続する対角線で符号化ブロックを分割することは右三角形分割タイプと称される。例えば、前記フラグの値が0である場合、符号化ブロックの分割タイプが左三角形分割タイプであることを示し、前記フラグの値が1である場合、符号化ブロックの分割タイプが右三角形分割タイプであることを示す。
【0179】
また、ストリームを介して信号によって、予測ユニットが同じサイズを有するかどうかを示す情報、又は符号化ブロックを分割するための対角線の位置を示す情報を送信してもよい。例えば、予測ユニットのサイズを示す情報は予測ユニットのサイズが同じであることを示す場合、対角線位置を示す情報の符号化は省略し、符号化ブロックの2つの頂点を通る対角線を使用して符号化ブロックを2つの予測ユニットに分割してもよい。一方、予測ユニットのサイズを示す情報は予測ユニットのサイズが異なることを示す場合、対角線の位置を示す情報に基づいて、符号化ブロックを分割するための対角線の位置を決定してもよい。例えば、左三角形分割タイプを符号化ブロックに適用する場合、位置情報は対角線が符号化ブロックの左境界及び下境界又は上境界及び右境界に接触するかどうかを示してもよい。代替的に、右三角形分割タイプを符号化ブロックに適用する場合、位置情報は対角線が符号化ブロックの右境界及び下境界又は上境界及び左境界に接触するかどうかを示してもよい。
【0180】
符号化ブロックの分割タイプを示す情報は符号化ブロックレベルで信号によって送信されてもよい。これにより、対角線分割を適用する異なる符号化ブロックに対して分割タイプを決定してもよい。
【0181】
他の例として、シーケンス、ピクチャ、スライス、セグメント又は符号化ツリーユニットに対して、信号によって分割タイプを示す情報を送信してもよい。このような場合、対角線分割を適用する符号化ブロックの分割タイプはシーケンス、ピクチャ、スライス、セグメント又は符号化ツリーユニットにおいて同じであるように設定されてもよい。
【0182】
代替的に、符号化ツリーユニットにおける対角線分割を適用する第1符号化ユニットに対して、分割タイプを決定するための情報を符号化して信号によって送信し、対角線分割を適用する2番目及び以後の符号化ユニットは1番目の符号化ユニットと同じ分割タイプを使用するように設定される。
【0183】
他の例として、隣接ブロックの分割タイプに基づいて、符号化ブロックの分割タイプを決定してもよい。隣接ブロックは符号化ブロックの左上角に隣接する隣接ブロック、右上角に隣接する隣接ブロック、左下角に隣接する隣接ブロック、上方に位置する隣接ブロック又は左側に位置する隣接ブロックのうちの少なくとも1つを含んでもよい。例えば、現在ブロックの分割タイプは隣接ブロックの分割タイプと同じであるように設定されてもよい。代替的に、左上隣接ブロックが左三角形分割タイプを適用するかどうか、右上隣接ブロック又は左下隣接ブロックが右三角形分割タイプを適用するかどうかによって、現在ブロックの分割タイプを決定してもよい。
【0184】
予測ユニットのサイズを変換ユニットのサイズ以下に設定してもよい。また、1つの変換ユニットが1つの予測ユニットを含まなければならないように設定してもよい。従って、VPDU変換ユニット分割を符号化ブロックに適用する場合、対角線分割を符号化ブロックに適用する代わりに、対角線分割を変換ユニットに適用してもよい。
【0185】
図15は対角線分割を変換ユニットに適用する例を示す図である。
【0186】
図15に示される例では、符号化ブロックを複数の変換ユニットに分割する場合、各変換ユニットに対して対角線分割を適用するかどうかを決定してもよい。代替的に、サイズが変換ユニットのサイズより小さいブロックを単位として対角線分割を適用するかどうかを決定してもよい。
【0187】
代替的に、VPDU変換ユニット分割を符号化ブロックに適用する場合、対角線分割を符号化ブロックに適用するかどうかを決定し、且つ、符号化ブロックに含まれるすべての変換ユニットは前記決定に従うように設定されてもよい。例えば、対角線分割を符号化ブロックに適用することを決定する場合、符号化ブロックに含まれるすべての変換ユニットを2つの予測ユニットに分割してもよい。
【0188】
第1三角形予測ユニット及び第2三角形予測ユニットに対して運動予測補償を実行するために、第1三角形予測ユニット及び第2三角形予測ユニットそれぞれの運動情報を導き出してもよい。このような場合、マージ候補リストに含まれるマージ候補から第1三角形予測ユニット及び第2三角形予測ユニットの運動情報を導き出してもよい。一般的なマージ候補リストと三角形予測ユニットの運動情報を導き出す際に使用されるマージ候補リストとを区別するために、三角形予測ユニットの運動情報を導き出すためのマージ候補リストは三角形マージ候補リストと称され、三角形マージ候補リストに含まれるマージ候補は三角形マージ候補と称される。しかしながら、上記マージ候補導き出し方法及びマージ候補リスト構築方法を三角形マージ候補及び三角形マージ候補リスト構築方法に用いることも本発明の主旨に含まれる。
【0189】
ストリームを介して信号によって、三角形マージ候補リストに含まれ得る最大三角形マージ候補の数を決定するための情報を送信してもよい。前記情報はマージ候補リストに含まれ得る最大マージ候補の数と三角形マージ候補リストに含まれ得る最大三角形マージ候補の数との差を示してもよい。
【0190】
符号化ブロックの空間隣接ブロック及び時間隣接ブロックから三角形マージ候補を導き出してもよい。
【0191】
図16は三角形マージ候補を導き出すための隣接ブロックを示す図である。
【0192】
符号化ブロックの上方に位置する隣接ブロック、符号化ブロックの左側に位置する隣接ブロック、又は符号化ブロックと異なるピクチャに含まれるコロケーテッドブロックのうちの少なくとも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つとして決定されてもよい。
【0193】
予め定義された順序に従って隣接ブロックを検索してもよく、予め定義された順序に従って三角形マージ候補を三角形マージ候補リストに構築してもよい。例えば、B1、A1、B0、A0、C0、B2及びC1の順序に従って三角形マージ候補を検索して三角形マージ候補リストを構築してもよい。
【0194】
三角形予測ユニットの運動情報は前記三角形マージ候補リストに基づいて導き出されてもよい。即ち、三角形予測ユニットは1つの三角形マージ候補リストを共有してもよい。
【0195】
三角形マージユニットの運動情報を導き出すために、ストリームを介して信号によって、三角形マージ候補リストに含まれる三角形マージ候補のうちの少なくとも1つを指定するための情報を送信してもよい。例えば、ストリームを介して信号によって、三角形マージ候補のうちの少なくとも1つを指定するためのインデックス情報merge_triangle_idxを送信してもよい。
【0196】
インデックス情報は第1三角形予測ユニットのマージ候補と第2三角形予測ユニットのマージ候補との組み合わせを指定することができる。例えば、下記表1にはインデックス情報merge_triangle_idxに基づくマージ候補の組み合わせの例を示す。
【0197】
【表1】
【0198】
インデックス情報merge_triangle_idxの値が1である場合、第1三角形予測ユニットの運動情報がインデックス1のマージ候補から導き出され、第2三角形予測ユニットの運動情報がインデックス0のマージ候補から導き出されることを示す。インデックス情報merge_triangle_idxによって、第1三角形予測ユニットの運動情報を導き出すための三角形マージ候補、及び第2三角形予測ユニットの運動情報を導き出すための三角形マージ候補を決定してもよい。
【0199】
更にインデックス情報に基づいて対角線分割を適用する符号化ブロックの分割タイプを決定してもよい。即ち、インデックス情報は第1三角形予測ユニットのマージ候補、第2三角形予測ユニットのマージ候補及び符号化ブロックの分割方向の組み合わせを指定することができる。インデックス情報に基づいて符号化ブロックの分割タイプを決定する場合、符号化ブロックを分割する対角線の方向を示す情報triangle_partition_type_flagを符号化しなくてもよい。表2にはインデックス情報merge_triangle_idxに関して符号化ブロックの分割タイプを示す。
【0200】
【表2】
【0201】
変数TriangleDirが0である場合、符号化ブロックが左三角形分割タイプを適用することを示し、変数TriangleDirが1である場合、符号化ブロックが右三角形分割タイプを適用することを示す。表1と表2を組み合わせることにより、インデックス情報merge_triangle_idxに基づいて第1三角形予測ユニットのマージ候補、第2三角形予測ユニットのマージ候補及び符号化ブロックの分割方向の組み合わせを指定するように設定してもよい。
【0202】
他の例として、信号によって第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三角形予測ユニットの運動情報を導き出してもよい。
【0203】
代替的に、インデックス情報に基づいて指定された第1三角形予測ユニットの三角形マージ候補と同じ参照ピクチャを有する三角形マージ候補から第2三角形予測ユニットの運動情報を導き出してもよい。第1三角形予測ユニットの三角形マージ候補と同じ参照ピクチャを有する三角形マージ候補は、第1三角形予測ユニットの三角形マージ候補と同じ三角形マージ候補を有するL0参照ピクチャ又はL1参照ピクチャのうちの少なくとも1つを示してもよい。参照ピクチャが第1三角形予測ユニットの三角形マージ候補と同じである三角形マージ候補が複数ある場合、マージ候補が双方向運動情報を含むかどうか、又はマージ候補のインデックスとインデックス情報との差分のうちの少なくとも1つによって、いずれか1つを選択してもよい。
【0204】
他の例として、第1三角形予測ユニット及び第2三角形予測ユニットに対して、それぞれ信号によってインデックス情報を送信してもよい。例えば、ストリームを介して信号によって、第1三角形予測ユニットの三角形マージ候補を決定するための第1インデックス情報1st_merge_idx、及び第2三角形予測ユニットの三角形マージ候補を決定するための第2インデックス情報2nd_merge_idxを送信してもよい。第1三角形予測ユニットの運動情報は第1インデックス情報1st_merge_idxに基づいて決定した三角形マージ候補から導き出されてもよく、第2三角形予測ユニットの運動情報は第2インデックス情報2nd_merge_idxに基づいて決定した三角形マージ候補から導き出されてもよい。
【0205】
第1インデックス情報1st_merge_idxは三角形マージ候補リストに含まれる三角形マージ候補のうちのいずれか1つのインデックスを示してもよい。第1三角形予測ユニットの三角形マージ候補は第1インデックス情報1st_merge_idxが指す三角形マージ候補として決定されてもよい。
【0206】
第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を加えた値をインデックスとする三角形マージ候補として決定されてもよい。
【0207】
代替的に、三角形マージ候補リストに含まれる三角形マージ候補の数に基づいて、信号によって第2インデックス情報を送信するかどうかを決定してもよい。例えば、三角形マージ候補リストに含まれ得る三角形マージ候補の最大数が2以下である場合、信号によって第2インデックス情報を送信することは省略してもよい。信号によって第2インデックス情報を送信することは省略する場合、第1インデックス情報にオフセット量を加え、又は第1インデックス情報からオフセット量を引くことにより第2三角形マージ候補を導き出すことができる。例えば、三角形マージ候補リストに含まれ得る三角形マージ候補の最大数が2であり且つ第1インデックス情報がインデックス0である場合、第1インデックス情報に1を加えることにより第2三角形マージ候補を導き出すことができる。代替的に、三角形マージ候補リストに含まれ得る三角形マージ候補の最大数が2であり且つ第1インデックス情報が1である場合、第1インデックス情報から1を引くことにより第2三角形マージ候補を導き出すことができる。
【0208】
代替的に、信号によって第2インデックス情報を送信することは省略する場合、第2インデックス情報をデフォルト値として設定してもよい。デフォルト値は0であってもよい。第1インデックス情報と第2インデックス情報とを比較することにより、第2三角形マージ候補を導き出すことができる。例えば、第2インデックス情報が第1インデックス情報より小さい場合、インデックス0のマージ候補を第2三角形マージ候補として設定し、第2インデックス情報が同じであり又は第1インデックス情報より大きい場合、インデックス1のマージ候補を第2三角形マージ候補として設定する。
【0209】
三角形マージ候補が単方向運動情報を有する場合、三角形マージ候補の単方向運動情報を三角形予測ユニットの運動情報として設定する。一方、三角形マージ候補が双方向運動情報を有する場合、L0運動情報又はL1運動情報のうちのいずれか1つのみを三角形予測ユニットの運動情報として設定する。三角形マージ候補のインデックス又は他の三角形予測ユニットの運動情報に基づいてL0運動情報又はL1運動情報のうちのどれを取得するかを決定してもよい。
【0210】
例えば、三角形マージ候補のインデックスが偶数である場合、三角形予測ユニットのL0運動情報を0として設定し、三角形マージ候補のL1運動情報を三角形予測ユニットのL1運動情報として設定する。一方、三角形マージ候補のインデックスが奇数である場合、三角形予測ユニットのL1運動情報を0として設定し、三角形マージ候補のL0運動情報を0として設定する。上記とは逆に、三角形マージ候補のインデックスが偶数である場合、三角形マージ候補のL0運動情報を三角形予測ユニットのL0運動情報として設定し、三角形マージ候補のインデックスが奇数である場合、更に三角形マージ候補のL1運動情報を三角形予測ユニットのL1運動情報として設定してもよい。代替的に、第1三角形予測ユニットに対して、三角形マージ候補が偶数である場合、三角形マージ候補のL0運動情報を第1三角形予測ユニットのL0運動情報として設定する一方、第2三角形予測ユニットに対して、三角形マージ候補が奇数である場合、三角形マージ候補のL1運動情報を第2三角形予測ユニットのL1運動情報として設定する。
【0211】
代替的に、第1三角形予測ユニットがL0運動情報を有する場合、第2三角形予測ユニットのL0運動情報を0として設定し、三角形マージ候補のL1運動情報を第2三角形予測ユニットのL1情報として設定する。一方、第1三角形予測ユニットがL1運動情報を有する場合、第2三角形予測ユニットのL1運動情報を0として設定し、三角形マージ候補のL0運動情報を第2三角形予測ユニットのL0運動信号として設定する。
【0212】
更に、第1三角形予測ユニットの運動情報を導き出すための三角形マージ候補リストと第2三角形予測ユニットの運動情報を導き出すための三角形マージ候補リストが異なるように設定してもよい。
【0213】
例えば、第1三角形予測ユニットに関連するインデックス情報に基づいて三角形マージ候補リストにおける第1三角形予測ユニットの運動情報を導き出すための三角形マージ候補を指定する場合、前記インデックス情報が指す三角形マージ候補以外の残りの三角形マージ候補を含む三角形マージリストを使用して、第2三角形予測ユニットの運動情報を導き出してもよい。具体的に、残りの三角形マージ候補のうちのいずれか1つから第2三角形予測ユニットの運動情報を導き出してもよい。
【0214】
これにより、第1三角形予測ユニットの三角形マージ候補リストに含まれる最大三角形マージ候補の数と第2三角形予測ユニットの三角形マージ候補リストに含まれる最大三角形マージ候補の数は異なる。例えば、第1三角形予測ユニットの三角形マージ候補リストはM個のマージ候補を含む場合、第2三角形予測ユニットの三角形マージ候補リストは第1三角形予測ユニットのインデックス情報が指す三角形マージ候補以外のM-1個のマージ候補を含んでもよい。
【0215】
他の例として、符号化ブロックに隣接する隣接ブロックに基づいて各三角形予測ユニットのマージ候補を導き出してもよく、三角形予測ユニットの形状又は位置を考慮した上で隣接ブロックの利用可能性を決定してもよい。
【0216】
図17は各三角形予測ユニットの隣接ブロックの利用可能性を決定する例を説明するための図である。
【0217】
第1三角形予測ユニットに隣接しない隣接ブロックを第1三角形予測ユニットに利用不可能な隣接ブロックとして設定してもよく、第2三角形予測ユニットに隣接しない隣接ブロックを第2三角形予測ユニットに利用不可能な隣接ブロックとして設定してもよい。
【0218】
例えば、図17(a)に示される例では、左三角形分割タイプを符号化ブロックに適用する場合、符号化ブロックに隣接する隣接ブロックのうちの第1三角形予測ユニットに隣接するブロックA1、A0及びA2が第1三角形予測ユニットに使用できるが、ブロックB0及びB1が第1三角形予測ユニットに使用できないことを決定できる。これにより、第1三角形予測ユニットに関連する三角形マージ候補リストはブロックA1、A0及びA2から導き出した三角形マージ候補を含むが、ブロックB0及びB1から導き出した三角形マージ候補を含まない。
【0219】
図17(b)に示される例では、左三角形分割タイプを符号化ブロックに適用する場合、第2三角形予測ユニットに隣接するブロックB0及びB1が第2三角形予測ユニットに使用できるが、ブロックA1、A0及びA2が第2三角形予測ユニットに使用できないことを決定できる。これにより、第2三角形予測ユニットに関連する三角形マージ候補リストはブロックB0及びB1から導き出した三角形マージ候補を含むが、ブロックA1、A0及びA2から導き出した三角形マージ候補を含まない。
【0220】
これにより、三角形予測ユニットの位置又は符号化ブロックの分割タイプのうちの少なくとも1つに基づいて、三角形予測ユニットが使用できる三角形マージ候補の数又は三角形マージ候補の範囲を決定してもよい。
【0221】
他の例として、マージモードを第1三角形予測ユニット及び第2三角形予測ユニットのうちのいずれか一方のみに適用できる。且つ、第1三角形予測ユニット及び第2三角形予測ユニットにおける他方の運動情報を、前記マージモードを適用する三角形予測ユニットの運動情報と同じであるように設定し、又は前記マージモードを適用する三角形予測ユニットの運動情報を細分化して導き出してもよい。
【0222】
例えば、三角形マージ候補に基づいて第1三角形予測ユニットの運動ベクトル及び参照ピクチャインデックスを導き出してもよく、第1三角形予測ユニットの運動ベクトルを細分化して第2三角形予測ユニットの運動ベクトルを導き出してもよい。例えば、第1三角形予測ユニットの運動ベクトル{mvD1LXx,mvD1LXy}に微細運動ベクトル{Rx,Ry}を加え、又は第1三角形予測ユニットの運動ベクトル{mvD1LXx,mvD1LXy}から微細運動ベクトル{Rx,Ry}を引くことにより、第2三角形予測ユニットの運動ベクトルを導き出すことができる。第2三角形予測ユニットの参照ピクチャインデックスを第1三角形予測ユニットの参照ピクチャインデックスと同じであるように設定してもよい。
【0223】
ストリームを介して信号によって、第1三角形予測ユニットの運動ベクトルと第2三角形予測ユニットの運動ベクトルとの差分を示す微細運動ベクトルを決定するための情報を送信してもよい。前記情報は微細運動ベクトルのサイズを示す情報又は微細運動ベクトルのシンボルを示す情報のうちの少なくとも1つを含んでもよい。
【0224】
代替的に、三角形予測ユニットの位置、インデックス又は符号化ブロックに適用される分割タイプのうちの少なくとも1つに基づいて微細運動ベクトルのシンボルを導き出してもよい。
【0225】
他の例として、信号によって第1三角形予測ユニット及び第2三角形予測ユニットのうちのいずれか一方の運動ベクトル及び参照ピクチャインデックスを送信してもよい。信号により送信された前記運動ベクトルを細分化することにより、第1三角形予測ユニット及び第2三角形予測ユニットのうちの他方の運動ベクトルを導き出すことができる。
【0226】
例えば、ストリームから信号により送信された情報に基づいて、第1三角形予測ユニットの運動ベクトル及び参照ピクチャインデックスを決定してもよい。且つ、第1三角形予測ユニットの運動ベクトルを細分化することにより、第2三角形予測ユニットの運動ベクトルを導き出すことができる。例えば、第1三角形予測ユニットの運動ベクトル{mvD1LXx,mvD1LXy}に微細運動ベクトル{Rx,Ry}を加え、又は第1三角形予測ユニットの運動ベクトル{mvD1LXx,mvD1LXy}から微細運動ベクトル{Rx,Ry}を引くことにより、第2三角形予測ユニットの運動ベクトルを導き出すことができる。第2三角形予測ユニットの参照ピクチャインデックスを第1三角形予測ユニットの参照ピクチャインデックスと同じであるように設定してもよい。
【0227】
第1三角形予測ユニットの運動情報及び第2三角形予測ユニットの運動情報に基づいてそれぞれ符号化ブロックに対して運動予測・補償予測を実行してもよい。このような場合、第1三角形予測ユニット及び第2三角形予測ユニットの境界部分に画質劣化が生じる恐れがある。例えば、第1三角形予測ユニット及び第2三角形予測ユニットの境界上のエッジ(Edge)近傍に画質が連続的に悪くなることとなる。境界部分の画質劣化を減少するために、平滑化(Smoothing)フィルタリング又は重み付け予測によって予測サンプルを導き出してもよい。
【0228】
第1三角形予測ユニットの運動情報に基づいて取得した第1予測サンプル及び第2三角形予測ユニットの運動情報に基づいて取得した第2予測サンプルの加重和演算によって、符号化ブロックにおける対角線分割を適用する予測サンプルを導き出してもよい。代替的に、第1三角形予測ユニットの運動情報に基づいて決定した第1予測ブロックから第1三角形予測ユニットの予測サンプルを導き出し、第2三角形予測ユニットの運動情報に基づいて決定した第2予測ブロックから第2三角形予測ユニットの予測サンプルを導き出し、且つ、第1予測ブロックに含まれる第1予測サンプル及び第2予測ブロックに含まれる第2予測サンプルの加重和演算によって、第1三角形予測ユニット及び第2三角形予測ユニットの境界領域に位置する予測サンプルを導き出してもよい。例えば、下記等式2には第1三角形予測ユニット及び第2三角形予測ユニットの予測サンプルを導き出す例を示す。
【0229】
等式2
【0230】
等式2では、P1が第1予測サンプルを示し、P2が第2予測サンプルを示す。w1は第1予測サンプルに適用される重み付け値を示し、(1-w1)は第2予測サンプルに適用される重み付け値を示す。等式2に示される例では、定数から第1予測サンプルに適用される重み付け値を引くことにより、第2予測サンプルに適用される重み付け値を導き出すことができる。
【0231】
符号化ブロックに対して左三角形分割タイプを適用する場合、境界領域は同じx軸座標及びy軸座標を有する予測サンプルを含んでもよい。一方、符号化ブロックに対して右三角形分割タイプを適用する場合、境界領域はx軸座標とy軸座標との和が第1閾値以上且つ第2閾値以下である予測サンプルを含んでもよい。
【0232】
符号化ブロックのサイズ、符号化ブロックの形状、三角形予測ユニットの運動情報、三角形予測ユニットの運動ベクトル差分、参照ピクチャの出力順序又は対角境界での第1予測サンプルと第2予測サンプルとの差分のうちの少なくとも1つに基づいて、境界領域のサイズを決定してもよい。
【0233】
図18及び図19は第1予測サンプル及び第2予測サンプルの加重和演算によって予測サンプルを導き出す例を示す図である。図18には左三角形分割タイプを符号化ブロックに適用する例を示し、図19には右三角形分割タイプを符号化ブロックに適用する例を示す。また、図18(a)及び図19(a)は輝度成分の予測パターンを示す図であり、図18(b)及び図19(b)は色度成分の予測パターンを示す図である。
【0234】
図面では、第1予測ユニット及び第2予測ユニットの境界近傍で予測サンプルに書き込まれた数字は第1予測サンプルに適用される重み付け値を示す。例えば、予測サンプルに書き込まれた数字がNである場合、第1予測サンプルにN/8の重み付け値を適用し、第2予測サンプルに(1-(N/8))の重み付け値を適用し、これにより、前記予測サンプルを導き出すことができる。
【0235】
非境界領域において、第1予測サンプル又は第2予測サンプルは予測サンプルとして決定されてもよい。図18の例では、x軸座標とy軸座標との差の絶対値が閾値より大きい領域のうちの第1三角形予測ユニットに属する領域において、第1三角形予測ユニットの運動情報に基づいて導き出した第1予測サンプルを予測サンプルとして決定してもよい。
一方、x軸座標とy軸座標との差分が閾値より大きい領域のうちの第2三角形予測ユニットに属する領域において、第2三角形予測ユニットの運動情報に基づいて導き出した第2予測サンプルを予測サンプルとして決定してもよい。
【0236】
図19の例では、x軸座標とy軸座標との和が第1閾値より小さい領域において、第1三角形予測ユニットの運動情報に基づいて導き出した第1予測サンプルを予測サンプルとして決定してもよい。一方、x軸座標とy軸座標との和が第2閾値より大きい領域において、第2三角形予測ユニットの運動情報に基づいて導き出した第2予測サンプルを予測サンプルとして決定してもよい。
【0237】
符号化ブロックのサイズ、符号化ブロックの形状又は色成分のうちの少なくとも1つに基づいて、非境界領域を決定するための閾値を決定してもよい。例えば、輝度成分に関連する閾値がNとして設定される場合、色度成分に関連する閾値をN/2として設定してもよい。
【0238】
第1予測サンプル及び第2予測サンプルの加重和演算によって境界領域に含まれる予測サンプルを導き出してもよい。このような場合、予測サンプルの位置、符号化ブロックのサイズ、符号化ブロックの形状又は色成分のうちの少なくとも1つに基づいて、第1予測サンプル及び第2予測サンプルに適用される重み付け値を決定してもよい。
【0239】
例えば、図18(a)に示される例では、同じ重み付け値を第1予測サンプル及び第2予測サンプルに適用することにより、同じx軸座標及びy軸座標を有する位置での予測サンプルを導き出すことができる。第1予測サンプル及び第2予測サンプルに適用される重み付け値比率を(3:1)又は(1:3)として設定することにより、x軸座標とy軸座標との差分の絶対値が1である予測サンプルを導き出すことができる。且つ、第1予測サンプル及び第2予測サンプルに適用される重み付け値比率を(7:1)又は(1:7)として設定することにより、x軸座標とy軸座標との差分の絶対値が2である予測サンプルを導き出すことができる。
【0240】
代替的に、図18(b)に示される例では、同じ重み付け値を第1予測サンプル及び第2予測サンプルに適用することにより、同じx軸座標及びy軸座標を有する位置での予測サンプルを導き出すことができ、且つ、第1予測サンプル及び第2予測サンプルに適用される重み付け値比率を(7:1)又は(1:7)として設定することにより、x軸座標とy軸座標との差の絶対値が1である予測サンプルを導き出すことができる。
【0241】
例えば、図19(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小さい予測サンプルを導き出すことができる。
【0242】
代替的に、図19(b)に示される例では、同じ重み付け値を第1予測サンプル及び第2予測サンプルに適用することにより、x軸座標とy軸座標との和が符号化ブロックの幅又は高さより1小さい予測サンプルを導き出すことができる。第1予測サンプル及び第2予測サンプルに適用される重み付け値比率を(7:1)又は(1:7)として設定することにより、x軸座標とy軸座標との和が符号化ブロックの幅又は高さと同じであり又は符号化ブロックの幅又は高さより2小さい予測サンプルを導き出すことができる。
【0243】
他の例として、予測サンプルの位置又は符号化ブロックの形状を考慮した上で重み付け値を決定してもよい。等式3~5には左三角形分割タイプを符号化ブロックに適用する場合に重み付け値を導き出す例を示す。等式3には符号化ブロックが正方形である場合に第1予測サンプルに適用される重み付け値を導き出す例を示す。
【0244】
等式3
【0245】
等式3では、xとyが予測サンプルの位置を示す。符号化ブロックが非正方形である場合、等式4又は5に示すように第1予測サンプルに適用される重み付け値を導き出してもよい。等式4には符号化ブロックの幅が高さより大きい場合を示し、等式5には符号化ブロックの幅が高さより小さい場合を示す。
【0246】
等式4
【0247】
等式5
【0248】
右三角形分割タイプを符号化ブロックに適用する場合、等式6~8に示すように第1予測サンプルに適用される重み付け値を決定してもよい。等式6には符号化ブロックが正方形である場合に第1予測サンプルに適用される重み付け値を導き出す例を示す。
【0249】
等式6
【0250】
等式6では、CbWが符号化ブロックの幅を示す。符号化ブロックが非正方形である場合、等式7又は8に示すように第1予測サンプルに適用される重み付け値を導き出してもよい。等式7には符号化ブロックの幅が高さより大きい場合を示し、等式8には符号化ブロックの幅が高さより小さい場合を示す。
【0251】
等式7
【0252】
等式8
【0253】
等式7では、CbHが符号化ブロックの高さを示す。
【0254】
図示の例では、境界領域における予測サンプルに対して、第1予測サンプルに第2予測サンプルより大きい重み付け値を与えることにより、第1三角形予測ユニットに含まれるサンプルを導き出すことができ、第2予測サンプルに第1予測サンプルより大きい重み付け値を与えることにより、第2三角形予測ユニットに含まれるサンプルを導き出すことができる。
【0255】
符号化ブロックに対して対角線分割を適用する場合、符号化ブロックはイントラ予測モードとマージモードを組み合わせる組合せ予測モードを適用しないように設定されてもよい。
【0256】
イントラ予測は現在ブロック周辺の符号化/復号化後の再構築サンプルを使用して現在ブロックを予測することである。このような場合、現在ブロックのイントラ予測はループ内フィルタを適用する前の再構築サンプルを使用してもよい。
【0257】
イントラ予測技術は行列(Matrix)に基づくイントラ予測、及び周辺再構築サンプルの指向性を考慮した一般的なイントラ予測を含む。ストリームを介して信号によって、現在ブロックのイントラ予測技術を示す情報を送信してもよい。前記情報は1ビットフラグであってもよい。代替的に、現在ブロックの位置、サイズ、形状又は隣接ブロックのイントラ予測技術のうちの少なくとも1つに基づいて、現在ブロックのイントラ予測技術を決定してもよい。例えば、現在ブロックがピクチャ境界を跨いで存在する場合、現在ブロックは行列に基づくイントラ予測を適用しないように設定される。
【0258】
行列に基づくイントラ予測はエンコーダ及びデコーダに記憶される行列と現在ブロック周辺の再構築サンプルとの行列乗算によって現在ブロックの予測ブロックを取得する方法である。ストリームを介して信号によって、記憶される複数の行列のうちのいずれか1つを指定するための情報を送信してもよい。デコーダは前記情報及び現在ブロックのサイズに基づいて現在ブロックのイントラ予測のための行列を決定してもよい。
【0259】
一般的なイントラ予測は非角度イントラ予測モード又は角度イントラ予測モードに基づいて、現在ブロックに関連する予測ブロックを取得する方法である。以下、図面を参照しながら、一般的なイントラ予測に基づいてイントラ予測を実行する過程をより詳しく説明する。
【0260】
図20は本発明の実施例に係るイントラ予測方法を示すフローチャートである。
【0261】
現在ブロックの参照サンプルラインを決定してもよい(S2001)。参照サンプルラインとは現在ブロックの上方及び/又は左側からのK番目の行に含まれる参照サンプルのセットを指す。現在ブロック周辺の符号化/復号化後の再構築サンプルから参照サンプルを導き出してもよい。
【0262】
ストリームを介して信号によって、複数の参照サンプルラインのうちの現在ブロックの参照サンプルラインを示すインデックス情報を送信してもよい。例えば、ストリームを介して信号によって、現在ブロックの参照サンプルラインを指定するためのインデックス情報intra_luma_ref_idxを送信してもよい。符号化ブロックを単位として信号によって前記インデックス情報を送信してもよい。
【0263】
複数の参照サンプルラインは現在ブロックの上方及び/又は左側に位置する第1線、第2線、第3線又は第4線のうちの少なくとも1つを含んでもよい。複数の参照サンプルラインのうちの現在ブロックの上方に隣接する行と現在ブロックの左側に隣接する列とからなる参照サンプルラインは隣接参照サンプルラインと称されてもよく、それ以外の参照サンプルラインは更に非隣接参照サンプルラインと称されてもよい。
【0264】
複数の参照サンプルラインのうちのいくつかは現在ブロックの参照サンプルラインとして選択されてもよい。例えば、複数の参照サンプルラインのうちの第3非隣接参照サンプルライン以外の残りの参照サンプルラインは候補参照サンプルラインとして設定されてもよい。表3にはそれぞれ各候補参照サンプルラインに割り当てられたインデックスを示す。
【0265】
【表3】
【0266】
説明されるサンプルラインより多い候補参照サンプルラインを設定してもよく、又はより少ない候補参照サンプルラインを設定してもよい。且つ、候補参照サンプルラインとして設定される非隣接参照サンプルラインの数又は位置は説明される例に限らない。例えば、第1非隣接参照サンプルライン及び第3非隣接参照サンプルラインを候補参照サンプルラインとして設定してもよく、又は第2非隣接参照サンプルライン及び第3非隣接参照サンプルラインを候補参照サンプルラインとして設定してもよい。代替的に、更に第1非隣接参照サンプルライン、第2非隣接参照サンプルライン及び第3非隣接参照サンプルラインをいずれも候補参照サンプルラインとして設定してもよい。
【0267】
現在ブロックのサイズ、形状、位置、サブブロックが分割されるかどうか又はイントラ予測モードのうちの少なくとも1つに基づいて、候補参照サンプルラインの数又はタイプを決定してもよい。
【0268】
更に現在ブロックの位置、サイズ、形状又は隣接ブロックの予測符号化モードのうちの少なくとも1つに基づいて、現在ブロックの参照サンプルラインを決定してもよい。例えば、現在ブロックがピクチャ、セグメント、スライス又は符号化ツリーユニットの境界に接触する場合、1番目の参照サンプルラインを現在ブロックの参照サンプルラインとして決定してもよい。
【0269】
代替的に、現在ブロックが非正方形である場合、隣接参照サンプルラインを現在ブロックの参照サンプルラインとして設定してもよい。代替的に、現在ブロックの幅と高さの比が閾値以上又は閾値以下である場合、隣接参照サンプルラインを現在ブロックの参照サンプルラインとして決定してもよい。
【0270】
参照サンプルラインは現在ブロックの上方に位置する上方参照サンプル及び現在ブロックの左側に位置する左側参照サンプルを含んでもよい。現在ブロック周辺の再構築サンプルから上方参照サンプル及び左側参照サンプルを導き出してもよい。前記再構築サンプルはループ内フィルタを適用する前の状態にあってもよい。
【0271】
次に、現在ブロックのイントラ予測モードを決定してもよい(S2002)。現在ブロックのイントラ予測モードに対して、非角度イントラ予測モード又は角度イントラ予測モードのうちの少なくとも1つを現在ブロックのイントラ予測モードとして決定してもよい。非角度イントラ予測モードはプレーナ(planer)及びDCを含み、角度イントラ予測モードは左下対角線方向から右上対角線方向までの33個又は65個のモードを含む。
【0272】
図21はイントラ予測モードを示す図である。
【0273】
図21(a)には35個のイントラ予測モードを示し、図21(b)には67個のイントラ予測モードを示す。
【0274】
図21に示されるものより多く又は少ない数のイントラ予測モードを定義してもよい。
【0275】
現在ブロックに隣接する隣接ブロックのイントラ予測モードに基づいて最確モード(MPM、Most Probable Mode)を設定してもよい。隣接ブロックは現在ブロックの左側に隣接する左側隣接ブロック、及び現在ブロックの上方に隣接する上側隣接ブロックを含んでもよい。
【0276】
エンコーダ及びデコーダにおいて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つとして決定してもよい。
【0277】
代替的に、現在ブロックの参照サンプルラインのインデックスにかかわらず、固定数(例えば、6つ又は5つ)のMPM候補を使用してもよい。
【0278】
複数の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を加えることで現在ブロックのイントラ予測モードを導き出してもよい。
【0279】
現在ブロックのイントラ予測モードを導き出す場合、MPMの一部と残りのモード情報との比較は省略してもよい。例えば、非角度イントラ予測モードのMPMを比較オブジェクトから排除してもよい。非角度イントラ予測モードがMPMとして設定される場合、残りのモード情報は角度イントラ予測モードを明確に示すため、非角度イントラ予測モード以外の残りのMPMと残りのモード情報との比較によって現在ブロックのイントラ予測モードを導き出してもよい。非角度イントラ予測モードを比較オブジェクトから排除する代わりに、残りのモード情報に非角度イントラ予測モードの数を加えた結果値とMPMとを比較してもよい。
【0280】
デフォルトモードをMPMとして設定する代わりに、ストリームを介して信号によって、現在ブロックのイントラ予測モードがデフォルトモードであるかどうかを示す情報を送信してもよい。前記情報は1ビットフラグであり、前記フラグはデフォルトモードフラグと称されてもよい。MPMフラグは現在ブロックと同じMPMがMPMリストに含まれることを示す場合のみ、信号によってデフォルトモードフラグを送信してもよい。以上のように、デフォルトモードはプレーナ、DC、垂直方向モード又は水平方向モードのうちの少なくとも1つを含んでもよい。例えば、プレーナがデフォルトモードとして設定される場合、デフォルトモードフラグは現在ブロックのイントラ予測モードがプレーナであるかどうかを示してもよい。デフォルトモードフラグは現在ブロックのイントラ予測モードがデフォルトモードではないことを示す場合、インデックス情報で示されるMPMのうちの1つを現在ブロックのイントラ予測モードとして設定してもよい。
【0281】
デフォルトモードフラグを使用する場合、デフォルトモードと同じイントラ予測モードはMPMとして設定されなくてもよい。例えば、デフォルトモードフラグは現在ブロックのイントラ予測モードがプレーナであるかどうかを示す場合、プレーナに相当するMPM以外の5つのMPMを使用して現在ブロックのイントラ予測モードを導き出してもよい。
【0282】
複数のイントラ予測モードをデフォルトモードとして設定する場合、更に信号によって、デフォルトモードのうちのいずれか1つを示すインデックス情報を送信してもよい。現在ブロックのイントラ予測モードを前記インデックス情報が指すデフォルトモードとして設定してもよい。
【0283】
現在ブロックの参照サンプルラインのインデックスが0ではない場合、デフォルトモードを使用しないように設定する。例えば、非隣接参照サンプルラインが現在ブロックの参照サンプルラインとして決定される場合、DCモード又はプレーナモード等の非角度イントラ予測モードを使用しないように設定してもよい。これにより、参照サンプルラインのインデックスが0ではない場合、信号によってデフォルトモードフラグを送信せず、前記デフォルトモードフラグの値を予め定義された値(即ち、偽)として設定してもよい。
【0284】
現在ブロックのイントラ予測モードを決定する場合、決定されたイントラ予測モードに基づいて現在ブロックの予測サンプルを取得してもよい(S2003)。
【0285】
DCモードを選択するとき、参照サンプルの平均値に基づいて現在ブロックに関連する予測サンプルを生成してもよい。具体的に、参照サンプルの平均値に基づいて予測ブロックにおけるサンプル全体の値を生成してもよい。現在ブロックの上方に位置する上方参照サンプル及び現在ブロックの左側に位置する左側参照サンプルのうちの少なくとも1つを使用して平均値を導き出してもよい。
【0286】
現在ブロックの形状に基づいて平均値を導き出す際に使用される参照サンプルの数又は範囲は異なる。例えば、現在ブロックは幅が高さより大きい非正方形ブロックである場合、上方参照サンプルのみを使用して平均値を計算してもよい。一方、現在ブロックは幅が高さより小さい非正方形ブロックである場合、左側参照サンプルのみを使用して平均値を計算してもよい。即ち、現在ブロックの幅及び高さが異なる場合、長さの一層長い片側に隣接する参照サンプルのみを使用して平均値を計算してもよい。代替的に、現在ブロックの幅と高さの比率に基づいて、上方参照サンプルのみを使用して平均値を計算するかどうか、又は左側参照サンプルのみを使用して平均値を計算するかどうかを決定してもよい。
【0287】
プレーナモードを選択する場合、水平方向予測サンプル及び垂直方向予測サンプルを使用して予測サンプルを取得してもよい。予測サンプルと同じ水平線に位置する左側参照サンプル及び右側参照サンプルに基づいて水平方向予測サンプルを取得し、予測サンプルと同じ垂直線に位置する上方参照サンプル及び下方参照サンプルに基づいて垂直方向予測サンプルを取得する。現在ブロックの右上角に隣接する参照サンプルをコピーすることにより右側参照サンプルを生成することができ、現在ブロックの左下角に隣接する参照サンプルをコピーすることにより下方参照サンプルを生成することができる。左側参照サンプル及び右側参照サンプルの加重和演算によって水平方向予測サンプルを取得することができ、上方参照サンプル及び下方参照サンプルの加重和演算によって垂直方向予測サンプルを取得することができる。このような場合、予測サンプルの位置に基づいて各参照サンプルに与えられる重み付け値を決定してもよい。水平方向予測サンプル及び垂直方向予測サンプルの平均演算又は加重和演算によって予測サンプルを取得してもよい。加重和演算を実行する場合、予測サンプルの位置に基づいて水平方向予測サンプル及び垂直方向予測サンプルに与えられる重み付け値を決定してもよい。
【0288】
角度予測モードを選択する場合、選択された角度予測モードの予測方向(又は、予測角度)を示すパラメータを決定してもよい。下記表4には各イントラ予測モードのイントラ予測パラメータintraPredAngを示す。
【0289】
【表4】
【0290】
表4には35個のイントラ予測モードを定義した場合に2~34のうちのいずれか1つのインデックスを有する各イントラ予測モードのイントラ方向パラメータを示す。33個以上の角度イントラ予測モードを定義した場合、表4は更に各角度イントラ予測モードのイントラ方向パラメータを設定するように細分される。
【0291】
現在ブロックの上方参照サンプル及び左側参照サンプルを1列に配列した後、イントラ方向パラメータの値に基づいて予測サンプルを取得してもよい。このような場合、イントラ方向パラメータの値が負数である場合、左側参照サンプルと上方参照サンプルを1列に配列してもよい。
【0292】
図22及び図23は参照サンプルを1行に配列する一次元配列の例を示す図である。
【0293】
図22には垂直方向において参照サンプルを配列する垂直方向一次元配列の例を示し、図23には水平方向において参照サンプルを配列する水平方向一次元配列の例を示す。35個のイントラ予測モードを定義すると仮定した上で、図22及び図23の実施例を説明する。
【0294】
イントラ予測モードインデックスが11~18のうちのいずれか1つである場合、上方参照サンプルを逆時計回りに回転させる水平方向一次元配列を適用してもよい。イントラ予測モードインデックスが19~25のうちのいずれか1つである場合、左側参照サンプルを時計回りに回転させる垂直方向一次元配列を適用してもよい。参照サンプルを1列に配列する場合、イントラ予測モード角度を考慮してもよい。
【0295】
イントラ方向パラメータに基づいて参照サンプル決定パラメータを決定してもよい。参照サンプル決定パラメータは参照サンプルを指定するための参照サンプルインデックス、及び参照サンプルに適用される重み付け値を決定するための重み付け値パラメータを含んでもよい。
【0296】
参照サンプルインデックスiIdx及び重み付け値パラメータifactはそれぞれ下記等式9及び等式10により取得されてもよい。
【0297】
等式9
【0298】
等式10
【0299】
等式9及び10では、Pangがイントラ方向パラメータを示す。参照サンプルインデックスiIdxに基づいて指定した参照サンプルは整数画素(Integer pel)
に相当する。
【0300】
予測サンプルを導き出すために、1つ以上の参照サンプルを指定してもよい。具体的に、予測モードの傾斜度を考慮した上で、予測サンプルを導き出す際に使用される参照サンプルの位置を指定してもよい。例えば、参照サンプルインデックスiIdxを使用して、予測サンプルを導き出す際に使用される参照サンプルを指定してもよい。
【0301】
このような場合、イントラ予測モードの傾斜度が1つの参照サンプルで示されない場合、複数の参照サンプルを補間することにより予測サンプルを生成することができる。例えば、イントラ予測モードの傾斜度が予測サンプルと第1参照サンプルとの間の傾斜度及び予測サンプルと第2参照サンプルとの間の傾斜度との間の値である場合、第1参照サンプル及び第2参照サンプルを補間して予測サンプルを取得してもよい。即ち、イントラ予測角度に従う角線(Angular Line)は整数画素に位置する参照サンプルを通らない場合、前記角線が通る位置の左右又は上下に隣接する参照サンプルを補間して予測サンプルを取得してもよい。
【0302】
下記等式11には参照サンプルに基づいて予測サンプルを取得する例を示す。
【0303】
等式11
【0304】
等式11では、Pが予測サンプルを示し、Ref_1Dが一次元配列の参照サンプルのうちのいずれか1つを示す。このような場合、予測サンプルの位置(x,y)及び参照サンプルインデックスiIdxに基づいて参照サンプルの位置を決定してもよい。
【0305】
イントラ予測モードの傾斜度が1つの参照サンプルとして示されてもよい場合、重み付け値パラメータifactを0として設定してもよい。従って、等式11は下記等式12に簡略化されてもよい。
【0306】
等式12
【0307】
更に複数のイントラ予測モードに基づいて現在ブロックに対してイントラ予測を実行してもよい。例えば、異なる予測サンプルに対してイントラ予測モードを導き出してもよく、各予測サンプルに割り当てられたイントラ予測モードに基づいて予測サンプルを導き出してもよい。
【0308】
代替的に、異なる領域に対してイントラ予測モードを導き出してもよく、各領域に割り当てられたイントラ予測モードに基づいて各領域に対してイントラ予測を実行してもよい。前記領域は少なくとも1つのサンプルを含んでもよい。現在ブロックのサイズ、形状又はイントラ予測モードのうちの少なくとも1つに基づいて前記領域のサイズ又は形状のうちの少なくとも1つを適応的に決定してもよい。代替的に、エンコーダ及びデコーダにおいて、現在ブロックのサイズ又は形状にかかわらず、領域のサイズ又は形状のうちの少なくとも1つを予め定義する可能性がある。
【0309】
代替的に、それぞれ複数のイントラ予測に基づいてイントラ予測を実行してもよく、複数回のイントラ予測により取得された複数の予測サンプルの平均演算又は加重和演算によって最終的な予測サンプルを導き出してもよい。例えば、第1イントラ予測モードに基づいてイントラ予測を実行して第1予測サンプルを取得してもよく、第2イントラ予測モードに基づいてイントラ予測を実行して第2予測サンプルを取得してもよい。その後、第1予測サンプル及び第2予測サンプルの平均演算又は加重和演算によって最終的な予測サンプルを取得してもよい。このような場合、第1イントラ予測モードが非角度/角度予測モードであるかどうか、第2イントラ予測モードが非角度/角度予測モードであるかどうか、又は隣接ブロックのイントラ予測モードのうちの少なくとも1つを考慮した上で、それぞれ第1予測サンプル及び第2予測サンプルに割り当てられた重み付け値を決定してもよい。
【0310】
複数のイントラ予測モードは非角度イントラ予測モードと角度予測モードとの組み合わせ、角度予測モードの組み合わせ又は非角度予測モードの組み合わせであってもよい。
【0311】
図24は角度イントラ予測モードとx軸に平行する直線がなす角度を示す図である。
【0312】
図24に示される例では、角度予測モードは左下対角線方向と右上対角線方向との間に存在してもよい。x軸と角度予測モードがなす角度として説明される場合、角度予測モードは45度(左下対角線方向)~-135度(右上対角線方向)の間に存在してもよい。
【0313】
現在ブロックが非正方形形状である場合、現在ブロックのイントラ予測モードに基づいて、予測サンプルに接近する参照サンプルではなく、イントラ予測角度に従う角線に位置する参照サンプルのうちの予測サンプルから離れる参照サンプルを使用して予測サンプルを導き出す状況は発生することとなる。
【0314】
図25は現在ブロックが非正方形である場合に予測サンプルを取得する実施例を示す図である。
【0315】
例えば、図25(a)に示される例では、現在ブロックは幅が高さより大きい非正方形であり、現在ブロックのイントラ予測モードは角度が0度~45度である角度イントラ予測モードであると仮定する。このような場合、現在ブロックの右側列近傍の予測サンプルAを導き出すとき、前記角度に位置する角度モードにおける参照サンプルのうちの前記予測サンプルから離れる左側参照サンプルLで前記予測サンプルに接近する上方参照サンプルTを代替する状況は発生することとなる。
【0316】
他の例として、図25(b)に示される例では、現在ブロックは高さが幅より大きい非正方形であり、現在ブロックのイントラ予測モードは角度が-90度~-135度である角度イントラ予測モードであると仮定する。上記の場合、現在ブロックの下方行近傍の予測サンプルAを導き出すとき、前記角度に位置する角度モードにおける参照サンプルのうちの前記予測サンプルから離れる上方参照サンプルTで前記予測サンプルに接近する左側参照サンプルLを代替する状況は発生することとなる。
【0317】
上記問題を解決するために、現在ブロックが非正方形である場合、現在ブロックのイントラ予測モードを反方向のイントラ予測モードに置換してもよい。従って、非正方形のブロックに対して、図21に示される角度予測モードの角度より大きく又は小さい角度を有する角度予測モードを使用してもよい。このような角度イントラ予測モードは広角イントラ予測モードとして定義されてもよい。広角イントラ予測モードは45度~-135度範囲に位置しない角度イントラ予測モードを示す。
【0318】
図26は広角イントラ予測モードを示す図である。
【0319】
図26に示される例では、インデックス-1~-14のイントラ予測モード及びインデックス67~80のイントラ予測モードは広角イントラ予測モードを示す。
【0320】
図26には45度より大きい角度を有する14個の広角イントラ予測モード(-1~-14)及び-135度より小さい角度を有する14個の広角イントラ予測モード(67~80)を示すが、より多く又はより少ない数の広角イントラ予測モードを定義してもよい。
【0321】
広角イントラ予測モードを使用する場合、上方参照サンプルの長さは2W+1として設定され、左側参照サンプルの長さは2H+1として設定される。
【0322】
広角イントラ予測モードを使用する場合、参照サンプルTを使用して図25(a)に示されるサンプルAを予測してもよく、参照サンプルLを使用して図25(b)に示されるサンプルAを予測してもよい。
【0323】
既存のイントラ予測モードとN個の広角イントラ予測モードとを加えることにより、全部で67+N個のイントラ予測モードを使用可能である。例えば、表5には20個の広角イントラ予測モードを定義した場合のイントラ予測モードのイントラ方向パラメータを示す。
【0324】
【表5】
【0325】
現在ブロックが非正方形であり且つステップS2002における取得された現在ブロックのイントラ予測モードが変換範囲内にある場合、現在ブロックのイントラ予測モードを広角イントラ予測モードに変換してもよい。現在ブロックのサイズ、形状又は比率のうちの少なくとも1つに基づいて前記変換範囲を決定してもよい。前記比率は現在ブロックの幅と高さの比率を示してもよい。
【0326】
現在ブロックは幅が高さより大きい非正方形である場合、変換範囲を右上対角線方向のイントラ予測モードインデックス(例えば、66)~(右上対角線方向のイントラ予測モードのインデックス-N)に設定してもよい。Nは現在ブロックの比率に基づいて決定されてもよい。現在ブロックのイントラ予測モードが変換範囲内にある場合、前記イントラ予測モードを広角イントラ予測モードに変換してもよい。前記イントラ予測モードから予め定義された値を引くことにより前記変換を実行してもよく、前記予め定義された値は広角イントラ予測モード以外のイントラ予測モードの総数(例えば、67)であってもよい。
【0327】
前記実施例に基づいて、66番目~53番目の間のイントラ予測モードをそれぞれ-1番目~-14番目の間の広角イントラ予測モードに変換してもよい。
【0328】
現在ブロックは高さが幅より大きい非正方形である場合、変換範囲を左下対角線方向のイントラ予測モードインデックス(例えば、2)~(左下対角線方向のイントラ予測モードのインデックス+M)に設定してもよい。Mは現在ブロックの比率に基づいて決定されてもよい。現在ブロックのイントラ予測モードが変換範囲内にある場合、前記イントラ予測モードを広角イントラ予測モードに変換してもよい。前記イントラ予測モードに予め定義された値を加えることにより前記変換を実行してもよく、予め定義された値は広角イントラ予測モード以外の角度イントラ予測モードの総数(例えば、65)であってもよい。
【0329】
前記実施例に基づいて、2番目~15番目の間のイントラ予測モードをそれぞれ67番目~80番目の間の広角イントラ予測モードに変換する。
【0330】
以下、変換範囲内にあるイントラ予測モードは広角イントラ置換予測モードと称される。
【0331】
変換範囲は現在ブロックの比率に基づいて決定されてもよい。例えば、表6及び表7のそれぞれには広角イントラ予測モード以外の35個のイントラ予測モード及び67個のイントラ予測モードを定義した場合の変換範囲を示す。
【0332】
【表6】
【0333】
【表7】
【0334】
表6及び表7に示される例では、変換範囲内にある広角イントラ置換予測モードの数は現在ブロックの比率によって異なってもよい。
【0335】
現在ブロックの比率を細分することにより、表8に示すように変換範囲を設定することができる。
【0336】
【表8】
【0337】
非隣接参照サンプルラインを現在ブロックの参照サンプルラインとして決定し、又は複数の参照サンプルラインのうちのいずれか1つを選択するためのマルチラインイントラ予測符号化方法を使用する場合、広角イントラ予測モードを使用しないように設定してもよい。即ち、現在ブロックが非正方形であり且つ現在ブロックのイントラ予測モードが変換範囲内にある場合にも、現在ブロックのイントラ予測モードを広角イントラ予測モードに変換しない可能性がある。
【0338】
代替的に、現在ブロックのイントラ予測モードを広角イントラ予測モードとして決定する場合、非隣接参照サンプルラインは現在ブロックの参照サンプルラインとして使用できないように設定されてもよく、又は複数の参照サンプルラインのうちのいずれか1つを選択するためのマルチラインイントラ予測符号化方法を使用しないように設定されてもよい。マルチラインイントラ予測符号化方法を使用しない場合、隣接参照サンプルラインを現在ブロックの参照サンプルラインとして設定してもよい。
【0339】
広角イントラ予測モードを使用しない場合、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として設定する。
【0340】
既存のイントラ予測モード以外に広角イントラ予測モードを使用するにつれて、広角イントラ予測モードを符号化するために必要なリソースは増加することとなり、従って、符号化効率を低下させる恐れがある。これにより、広角イントラ予測モードを直接に符号化する代わりに、広角イントラ予測モードに関連する置換イントラ予測モードを符号化することにより、符号化効率を向上させることができる。
【0341】
例えば、67番目の広角イントラ予測モードを使用して現在ブロックを符号化する場合、67番目の広角置換イントラ予測モードとしての番号2を現在ブロックのイントラ予測モードに符号化してもよい。且つ、-1番目の広角イントラ予測モードを使用して現在ブロックを符号化する場合、-1番目の広角置換イントラ予測モードとしての番号66を現在ブロックのイントラ予測モードに符号化してもよい。
【0342】
デコーダは現在ブロックのイントラ予測モードを復号化して、復号化されたイントラ予測モードが変換範囲に含まれるかどうかを決定することができる。復号化されたイントラ予測モードが広角置換イントラ予測モードである場合、イントラ予測モードを広角イントラ予測モードに変換してもよい。
【0343】
代替的に、広角イントラ予測モードで現在ブロックを符号化する場合、更に広角イントラ予測モードを直接に符号化してもよい。
【0344】
イントラ予測モードの符号化は前記MPMリストに基づいて実現されてもよい。具体的に、広角イントラ予測モードで隣接ブロックを符号化する場合、広角イントラ予測モードに対応する広角置換イントラ予測モードに基づいてMPMを設定してもよい。
【0345】
イントラ予測実行結果によって予測ブロックを生成する場合、予測ブロックに含まれる各予測サンプルの位置に基づいて予測サンプルを更新してもよい。以上に説明される更新方法はサンプル位置に基づくイントラ重み付け予測方法(又は、位置依存型予測合成(PDPC、Position Dependent Prediction Combination))と称されてもよい。
【0346】
現在ブロックのイントラ予測モード、現在ブロックの参照サンプルライン、現在ブロックのサイズ又は色成分を考慮した上で、PDPCを使用するかどうかを決定してもよい。
例えば、現在ブロックのイントラ予測モードはプレーナモード、DCモード、垂直方向モード、水平方向モード、インデックス値が垂直方向より小さいモード、又はインデックス値が水平方向より大きいモードのうちの少なくとも1つである場合、PDPCを使用してもよい。代替的に、現在ブロックの幅及び高さのうちの少なくとも1つが4より大きい場合のみ、PDPCを使用してもよい。代替的に、現在ブロックの参照ピクチャ線のインデックスが0である場合のみ、PDPCを使用してもよい。代替的に、現在ブロックの参照ピクチャ線のインデックスが予め定義された値以上である場合のみ、PDPCを使用してもよい。代替的に、輝度成分のみに対してPDPCを使用してもよい。代替的に、前記列挙した条件のうちの2つ以上を満足するかどうかによって、PDPCを使用するかどうかを決定してもよい。
【0347】
他の例として、ストリームを介して信号によって、PDPCを適用するかどうかを示す情報を送信してもよい。
【0348】
イントラ予測サンプルによって予測サンプルを取得する場合、取得された予測サンプルの位置に基づいて、前記予測サンプルを補正するための参照サンプルを決定してもよい。
説明の都合上、後続の実施例では、予測サンプルを補正するための参照サンプルはPDPC参照サンプルと称される。そして、イントラ予測により取得された予測サンプルは第1予測サンプルと称され、第1予測サンプルを補正して取得した予測サンプルは第2予測サンプルと称される。
【0349】
図27はPDPCを適用する実施例を示す図である。
【0350】
少なくとも1つのPDPC参照サンプルを利用して、第1予測サンプルを補正することができる。PDPC参照サンプルは現在ブロックの左上角に隣接する参照サンプル、現在ブロックの上方に位置する上方参照サンプル、又は現在ブロックの左側に位置する左側参照サンプルのうちの少なくとも1つを含んでもよい。
【0351】
現在ブロックの参照サンプルラインに属する参照サンプルのうちの少なくとも1つをPDPC参照サンプルとして設定してもよい。代替的に、現在ブロックの参照サンプルラインにかかわらず、インデックス0の参照サンプルラインに属する参照サンプルのうちの少なくとも1つをPDPC参照サンプルとして設定してもよい。例えば、インデックス1又はインデックス2の参照サンプルラインに含まれる参照サンプルを利用して第1予測サンプルを取得しても、インデックス0の参照サンプルラインに含まれる参照サンプルを利用して第2予測サンプルを取得することができる。
【0352】
現在ブロックのイントラ予測モード、現在ブロックのサイズ、現在ブロックの形状又は第1予測サンプルの位置のうちの少なくとも1つを考慮した上で、第1予測サンプルを補正するためのPDPC参照サンプルの数又は位置を決定してもよい。
【0353】
例えば、現在ブロックのイントラ予測モードがプレーナモード又はDCモードである場合、上方参照サンプル及び左側参照サンプルを利用して第2予測サンプルを取得してもよい。このとき、上方参照サンプルは第1予測サンプルに垂直である参照サンプル(例えば、x座標が同じである参照サンプル)であってもよく、左側参照サンプルは第1予測サンプルに平行する参照サンプル(例えば、y座標が同じである参照サンプル)であってもよい。
【0354】
現在ブロックのイントラ予測モードが水平イントラ予測モードである場合、上方参照サンプルを利用して第2予測サンプルを取得してもよい。このとき、上方参照サンプルは第1予測サンプルに垂直である参照サンプルであってもよい。
【0355】
現在ブロックのイントラ予測モードが垂直イントラ予測モードである場合、左側参照サンプルを利用して第2予測サンプルを取得してもよい。このとき、左側参照サンプルは第1予測サンプルに平行する参照サンプルであってもよい。
【0356】
現在ブロックのイントラ予測モードが左下対角線イントラ予測モード又は右上対角線イントラ予測モードである場合、左上参照サンプル、上方参照サンプル及び左側参照サンプルに基づいて第2予測サンプルを取得してもよい。左上参照サンプルは現在ブロックの左上角に隣接する参照サンプル(例えば、(-1,-1)位置での参照サンプル)であってもよい。上方参照サンプルは第1予測サンプルの右上対角線方向に位置する参照サンプルであってもよく、左側参照サンプルは第1予測サンプルの左下対角線方向に位置する参照サンプルであってもよい。
【0357】
要するに、第1予測サンプルの位置が(x,y)である場合、R(-1,-1)を左上参照サンプルとして設定し、R(x+y+1,-1)又はR(x,-1)を上方参照サンプルとして設定してもよい。また、R(-1,x+y+1)又はR(-1,y)を左側参照サンプルとして設定してもよい。
【0358】
現在ブロックに対して1つの予測モードを複数回適用してもよく、又は現在ブロックに対して複数の予測モードを繰り返して適用してもよい。このように、同じ又は異なる予測モードを使用する予測方法は組合せ予測モード(又は、多仮説予測モード(Multi-hypothesis Prediction Mode))と称されてもよい。
【0359】
組合せ予測モードは、マージモードとマージモードを組み合わせるモード、インター予測とイントラ予測を組み合わせるモード、マージモードと高度動きベクトル予測モードを組み合わせるモード、及びマージモードとイントラ予測を組み合わせるモードのうちの少なくとも1つを含んでもよい。
【0360】
組合せ予測モードにおいて、第1予測モードに基づいて第1予測ブロックを生成してもよく、第2予測モードに基づいて第2予測ブロックを生成してもよい。その後、第1予測ブロックと第2予測ブロックの加重和演算によって第3予測ブロックを生成してもよい。
第3予測ブロックを現在ブロックの最終的な予測ブロックとして設定してもよい。
【0361】
現在ブロックのサイズ又は形状に基づいて、組合せ予測モードを使用するかどうかを決定してもよい。例えば、符号化ブロックのサイズ、符号化ブロックに含まれるサンプル数、符号化ブロックの幅及び符号化ブロックの高さのうちの少なくとも1つに基づいて、組合せ予測モードを使用するかどうかを決定してもよい。例えば、符号化ブロックの幅及び高さのうちの少なくとも1つが128以上であり又は符号化ブロックに含まれるサンプル数が64以下である場合、組合せ予測モードを符号化ブロックに適用しなくてもよい。
【0362】
また、ストリームを介して信号によって、現在ブロックに組合せ予測モードを適用したかどうかを示す情報を送信してもよい。例えば、前記情報は1ビットフラグであってもよい。例えば、ストリームを介して信号によって、マージモードとイントラ予測を組み合わせる組合せ予測モードを使用するかどうかを示すフラグmh_intra_flagを送信してもよい。mh_intra_flagが1である場合、マージモードとイントラ予測を組み合わせる組合せ予測モードを使用することを示し、mh_intra_flagが0である場合、マージモードとイントラ予測を組み合わせる組合せ予測モードを使用しないことを示す。
【0363】
現在ブロックの予測符号化モードがインター予測モードであり且つマージモードを現在ブロックに適用する場合のみ、マージモードとイントラ予測を組み合わせる組合せ予測モードを現在ブロックに適用してもよい。即ち、マージモードを現在ブロックに適用するかどうかを示すmerge_flagフラグの値が1である場合、信号によってmh_intra_flagを送信してもよい。
【0364】
マージモードとイントラ予測を組み合わせる組合せ予測モードにおいて、現在ブロックのイントラ予測モードを予め定義されたイントラ予測モードとして設定してもよい。例えば、組合せ予測モードを使用する場合、現在ブロックのイントラ予測モードをプレーナモードとして設定してもよい。
【0365】
他の例として、マージモードとイントラ予測を組み合わせる組合せ予測モードを使用する場合、候補イントラ予測モードのうちの1つを現在ブロックのイントラ予測モードとして決定してもよい。ここで、候補イントラ予測モードは非角度イントラ予測モード及び特定方向の角度イントラ予測モードのうちの少なくとも1つを含んでもよい。ここで、非角度イントラ予測モードはDCモード及びプレーナモードのうちの少なくとも1つを含み、角度イントラ予測モードは水平方向のイントラ予測モード、垂直方向のイントラ予測モード及び対角線方向のイントラ予測モードのうちの少なくとも1つを含む。例えば、組合せ予測モードを使用する場合、DCモード、プレーナモード、水平方向のイントラ予測モード又は垂直方向のイントラ予測モードのみを現在ブロックのイントラ予測モードとして設定してもよい。代替的に、組合せ予測モードを使用する場合、プレーナモード、水平方向のイントラ予測モード又は垂直方向のイントラ予測モードのみを現在ブロックのイントラ予測モードとして設定してもよい。代替的に、組合せ予測モードを使用する場合、DCモード、プレーナモード又は垂直方向のイントラ予測モードのみを現在ブロックのイントラ予測モードとして設定してもよい。代替的に、組合せ予測モードを使用する場合、DCモード、プレーナモード又は水平方向のイントラ予測モードのみを現在ブロックのイントラ予測モードとして設定してもよい。
【0366】
ストリームを介して信号によって、候補イントラ予測モードのうちのいずれか1つを指定するためのインデックス情報を送信してもよい。例えば、ストリームを介して信号によって、候補イントラ予測モードのうちのいずれか1つを指定するインデックスmh_intra_idxを送信してもよい。表9及び表10にはmh_intra_idxの値に基づくイントラ予測モードを示す。mh_intra_idxで示されるイントラ予測モードを現在ブロックのイントラ予測モードとして決定してもよい。
【0367】
【表9】
【0368】
【表10】
【0369】
エンコーダ及びデコーダにおいて、候補イントラ予測モードの数は固定値を有してもよい。代替的に、候補イントラ予測モードの数又はタイプは現在ブロックのサイズ、現在ブロックの形状、又はイントラ予測によって隣接ブロックを符号化するかどうかのうちの少なくとも1つによって異なる。
【0370】
他の例として、マージモードとイントラ予測を組み合わせる組合せ予測モードを適用する場合、MPMに基づいて現在ブロックのイントラ予測モードを決定してもよい。このような場合、一般的なイントラ予測を適用する場合、MPMリストに含まれるMPMの数は組合せ予測モードを適用する場合にMPMリストに含まれるMPMの数と異なってもよい。例えば、組合せ予測モードを適用しない場合、MPMリストは6つ又は5つのMPMを含んでもよいが、組合せ予測モードを適用する場合、MPMリストは4つ又は3つのMPMを含んでもよい。即ち、一般的なイントラ予測を実行する場合、N個のMPMを使用するが、組合せ予測モードを適用する場合、N個未満のMPMを使用してもよい。
【0371】
例えば、一般的なイントラ予測モードを適用する場合、現在ブロックに隣接する隣接ブロックのイントラ予測モードに基づいて導き出したMPMがプレーナモード、DCモード、INTRA_MODE32、INTRA_MODE31、INTRA_MODE33及びINTRA_MODE30であると仮定する。組合せ予測モードを現在ブロックに適用する場合、6つのMPMのうちのいくつかのみを使用して現在ブロックのイントラ予測モードを決定してもよい。例えば、MPMのうちの最小インデックスを有する3つのMPM(即ち、プレーナモード、DCモード及びINTRA_MODE32)を含むMPMリストを使用して現在ブロックのイントラ予測モードを決定してもよい。代替的に、MPMのうちの所定のインデックス値を有するいずれか1つを現在ブロックのイントラ予測モードとして決定してもよい。
【0372】
他の例として、一般的なイントラ予測を適用する場合に現在ブロックのイントラ予測モードを決定するためのMPMの数は、組合せ予測モードを適用する場合に現在ブロックのイントラ予測モードを決定するためのMPMの数と同じであるように設定されてもよい。
【0373】
組合せ予測モードを適用する場合、MPMフラグの符号化は省略してもよく、MPMフラグは真として見なされてもよい。即ち、組合せ予測モードを適用する場合、MPMのうちのいずれか1つを現在ブロックのイントラ予測モードとして決定してもよい。
【0374】
マージモードとイントラ予測を組み合わせる組合せ予測モードを現在ブロックに適用する場合、マルチラインイントラ予測符号化方法を使用しないように設定してもよい。マルチラインイントラ予測符号化方法を使用しない場合、隣接参照サンプルラインを現在ブロックのイントラ予測に使用してもよい。
【0375】
代替的に、マージモードとイントラ予測を組み合わせる組合せ予測モードを現在ブロックに適用する場合、マルチラインイントラ予測符号化方法を使用するように設定してもよい。ストリームを介して信号によって、複数の参照サンプルラインから現在ブロックの参照サンプルラインを決定するための情報を送信してもよい。代替的に、現在ブロックのサイズ、現在ブロックの形状、現在ブロックのイントラ予測モード又は隣接ブロックの参照サンプルラインのうちの少なくとも1つを考慮した上で、現在ブロックの参照サンプルラインを決定してもよい。
【0376】
現在ブロックの参照サンプルラインの相違によって利用可能な候補イントラ予測モードの数を設定してもよい。例えば、隣接参照サンプルラインを使用する場合、候補イントラ予測モードはプレーナモード、DCモード、水平方向のイントラ予測モード、垂直方向のイントラ予測モード、左下対角線方向のイントラ予測モード及び右上対角線方向のイントラ予測モードのうちの少なくとも1つを含んでもよい。一方、非隣接参照サンプルラインを使用する場合、候補イントラ予測モードは水平方向のイントラ予測モード、垂直方向のイントラ予測モード、左下対角線方向のイントラ予測モード及び右上対角線方向のイントラ予測モードのうちの少なくとも1つを含んでもよい。
【0377】
マージモードにおいて選択されたマージ候補を使用して第1予測ブロックを生成してもよく、イントラ予測モードを使用して第2予測ブロックを生成してもよい。このような場合、第1予測ブロックを生成する場合、三角形分割を現在ブロックに適用しないように設定してもよい。即ち、マージモードとイントラ予測を組み合わせる組合せ予測モードにおいて、三角形分割が許容されない可能性がある。また、第2予測ブロックを生成する場合、PDPCを現在ブロックに適用しないように設定してもよい。即ち、マージモードとイントラ予測を組み合わせる組合せ予測モードにおいて、PDPCが許容されない可能性がある。
【0378】
第1予測ブロックと第2予測ブロックの加重和演算によって第3予測ブロックを生成してもよい。例えば、等式13には第1予測ブロックと第2予測ブロックの加重和演算によって第3予測ブロックを生成する例の図を示す。
【0379】
等式13
【0380】
等式13では、Pmergeはマージモードに基づいて取得した第1予測ブロックを示し、Pintraはイントラ予測により取得した第2予測ブロックを示す。Pcomb
第1予測ブロックと第2予測ブロックを組み合わせて取得した第3予測ブロックを示す。
wは第1予測ブロックに適用される第1重み付け値を示す。定数Nから第1重み付け値wを引くことにより、第2予測ブロックに適用される第2重み付け値を導き出すことができる。ここで、Nはエンコーダ及びデコーダにより予め定義された値を有してもよい。例えば、Nが4又は8であってもよい。代替的に、現在ブロックのサイズ、形状及びイントラ予測モードのうちの少なくとも1つに基づいて定数Nを導き出してもよい。
【0381】
等式13に示される例と異なり、wを第2重み付け値として設定してもよく、所定の定数Nから第2重み付け値を引いた値を第1重み付け値として設定してもよい。
【0382】
現在ブロックのイントラ予測モード、及びマージモードが双方向運動情報を有するかどうかのうちの少なくとも1つによって、第1予測ブロック及び第2予測ブロックに適用される重み付け値を決定してもよい。例えば、現在ブロックのイントラ予測モードが角度予測モードである場合の第1重み付け値wは、現在ブロックのイントラ予測モードが非角度予測モードである場合の第1重み付け値wより大きくてもよい。代替的に、マージ候補により双方向予測を実行する場合の第1重み付け値wは、マージ候補により単方向予測を実行する場合の第1重み付け値wより大きくてもよい。
【0383】
他の例として、現在ブロックに隣接する隣接ブロックの予測符号化モードを考慮して重み付け値を決定してもよい。ここで、隣接ブロックは現在ブロックの上方に隣接する上側隣接ブロック、現在ブロックの左側に隣接する左側隣接ブロック、及び現在ブロックの左上角に隣接する左上隣接ブロックのうちの少なくとも1つを含んでもよい。現在ブロックに隣接する隣接ブロックのうちのイントラ予測により符号化された隣接ブロックの数に基づいて重み付け値を決定してもよい。例えば、現在ブロックに隣接する隣接ブロックのうちのイントラ予測により符号化された隣接ブロックの数が増加するにつれて、第1重み付け値は比較的小さい値を有してもよく、第2重み付け値は比較的大きい値を有してもよい。一方、現在ブロックに隣接する隣接ブロックのうちの非イントラ予測により符号化された隣接ブロックの数が減少するにつれて、第1重み付け値は比較的大きい値を有してもよく、第2重み付け値は比較的小さい値を有してもよい。例えば、左側隣接ブロック及び上側隣接ブロックがいずれもイントラ予測により符号化される場合、第2重み付け値はnとして設定されてもよい。左側隣接ブロック及び上側隣接ブロックのうちの1つのみがイントラ予測により符号化される場合、第2重み付け値はn/2として設定されてもよい。左側隣接ブロック及び上側隣接ブロックがいずれもイントラ予測により符号化されない場合、第2重み付け値はn/4として設定されてもよい。ここで、nはN以下の整数を示す。
【0384】
現在ブロックにおけるサンプル又はサブブロックを単位として重み付け値を決定してもよい。例えば、現在ブロックが複数のサブブロックに分割されてもよく、各サブブロックに適用される重み付け値を、異なる値を有するように設定してもよい。このような場合、エンコーダ及びデコーダにおいて、サブブロックの数は固定値を有してもよい。代替的に、現在ブロックのサイズ、現在ブロックの形状、現在ブロックのイントラ予測モード及び隣接ブロックの予測符号化モードのうちの少なくとも1つに基づいて、サブブロックの数を適応的に決定してもよい。
【0385】
図28は重み付け値を適用する実施例を示す図である。
【0386】
現在ブロックが複数のサブブロックに分割されてもよく、各サブブロックに適用される重み付け値を異なる値として設定してもよい。例えば、図28(a)及び図28(b)に示される例では、現在ブロックの左上角に位置するサンプルを含むサブブロックに対して、第2重み付け値は第1重み付け値より大きく設定される。一方、現在ブロックの右下角に位置するサンプルを含むサブブロックに対して、第1重み付け値は第2重み付け値より大きく設定されてもよい。
【0387】
サブブロックの第3予測サブブロックは該サブブロックに対応する第1予測サブブロック及び第2予測サブブロックに対して重み付け予測を行うことにより取得されてもよい。
このような場合、図28に示される例では、各サブブロックの相違によって重み付け予測のための重み付け値を設定してもよい。
【0388】
マージ候補が双方向運動情報を有するかどうかによって、サブブロックに割り当てられる重み付け値を個別に決定してもよい。
【0389】
図29はマージ候補が双方向運動情報を有するかどうかによって、異なる重み付け値をサブブロックに割り当てる例を示す図である。
【0390】
マージ候補が単方向運動情報を有する場合に比べて、マージ候補が双方向運動情報を有する場合、少なくとも1つのサブブロックに割り当てられる第1重み付け値wをより大きい値として設定してもよい。例えば、図29(a)及び図29(b)には、すべてのサブブロックに対して、双方向予測を適用する場合に適用される重み付け値wが、単方向予測を適用する場合に適用される重み付け値wより大きい値を有することを示す。
【0391】
代替的に、現在ブロックのイントラ予測モードに基づいて、サブブロックに適用される重み付け値を決定してもよい。
【0392】
図30は現在ブロックのイントラ予測モードに基づいて異なる重み付け値をサブブロックに割り当てる例を示す図である。
【0393】
現在ブロックのイントラ予測モードが垂直方向である場合、現在ブロックの上方に位置するサブブロックの第2重み付け値を、現在ブロックの下方に位置するサブブロックの第2重み付け値より大きく設定してもよい。
【0394】
例えば、現在ブロックの上方に位置するサブブロックに対して、第2重み付け値を第1重み付け値より大きく設定してもよいが、現在ブロックの下方に位置するサブブロックに対して、第1重み付け値と第2重み付け値を等しく設定してもよく、又は第1重み付け値を第2重み付け値より大きく設定してもよい。
【0395】
現在ブロックのイントラ予測モードが水平方向である場合、現在ブロックの左側に位置するサブブロックの第2重み付け値を、現在ブロックの右側に位置するサブブロックの第2重み付け値より大きく設定してもよい。
【0396】
例えば、現在ブロックの左側に位置するサブブロックに対して、第2重み付け値を第1重み付け値より大きく設定してもよいが、現在ブロックの右側に位置するサブブロックに対して、第1重み付け値と第2重み付け値を等しく設定してもよく、又は第1重み付け値を第2重み付け値より大きく設定してもよい。
【0397】
他の例として、現在ブロックのイントラ予測モードが垂直方向である場合、現在ブロックの上方に位置するサブブロックの第1重み付け値を、現在ブロックの下方に位置するサブブロックの第1重み付け値より大きく設定する。又は、ブロックのイントラ予測モードが水平方向である場合、現在ブロックの左側に位置するサブブロックの第1重み付け値を、現在ブロックの右側に位置するサブブロックの第1重み付け値より大きく設定してもよい。
【0398】
他の例として、現在ブロックに隣接する隣接ブロックの予測符号化モードに基づいて、各サブブロックに割り当てられる重み付け値を決定してもよい。例えば、現在ブロックの上側隣接ブロックがイントラ予測により符号化されるが現在ブロックの左側隣接ブロックがイントラ予測により符号化されない場合、現在ブロックの上方に位置するサブブロックの第2重み付け値を、現在ブロックの下方に位置するサブブロックの第2重み付け値より大きく設定してもよい。一方、現在ブロックの上側隣接ブロックがイントラ予測により符号化されないが現在ブロックの左側隣接ブロックがイントラ予測により符号化される場合、現在ブロックの左側に位置するサブブロックの第2重み付け値を、現在ブロックの右側に位置するサブブロックの第2重み付け値より大きく設定してもよい。
【0399】
複数のサブブロックのうちの少なくとも1つに対して、第1重み付け値又は第2重み付け値を0として設定してもよい。即ち、複数のサブブロックのうちの少なくとも1つに対して、第1予測サブブロック又は第2予測サブブロックを第3予測サブブロックとして設定してもよい。従って、複数のサブブロックのうちの少なくとも1つのサブブロックに対して組合せ予測を実行しなくてもよい。例えば、複数のサブブロックのうちの少なくとも1つに対して、第1重み付け値wは0として設定されてもよく、又は第1重み付け値wは定数Nとして設定されてもよい。
【0400】
マージモードとイントラ予測を組み合わせる組合せ予測モードを適用するブロックは、インター予測により符号化されるように見なされてもよい。従って、組合せ予測モードで符号化されたブロックのイントラ予測モードを、以後に符号化/復号化されようとするブロックを導き出すことに使用できないイントラ予測モードとして設定してもよい。MPMを導き出すとき、利用不可能ブロックのイントラ予測モードはプレーナモードとして見なされてもよい。
【0401】
一方、組合せ予測モードで符号化されたブロックの運動情報を、以後に符号化/復号化されようとするブロックを導き出すことに使用できる運動情報として設定してもよい。
【0402】
マージモードとマージモードを組み合わせるモードにおいて、複数のマージ候補を使用して運動補償予測を実行してもよい。具体的に、第1マージ候補を使用して第1予測ブロックを生成してもよく、第2マージ候補を使用して第2予測ブロックを生成してもよい。
第1予測ブロックと第2予測ブロックの加重和演算によって第3予測ブロックを生成してもよい。
【0403】
ストリームを介してそれぞれ信号によって、第1マージ候補及び第2マージ候補を指定するための情報を送信してもよい。例えば、ストリームを介して信号によって、第1マージ候補を指定するためのインデックス情報merge_idx、及び第2マージ候補を指定するためのインデックス情報merge_2nd_idxを送信してもよい。インデックス情報merge_2nd_idx及びインデックス情報merge_idxに基づいて第2マージ候補を決定してもよい。
【0404】
インデックス情報merge_idxはマージ候補リストに含まれるマージ候補のうちのいずれか1つを指定する。
【0405】
インデックス情報merge_2nd_idxはmerge_idxで指定されたマージ候補以外の残りのマージ候補のうちのいずれか1つを指定してもよい。従って、merge_2nd_idxの値がmerge_idxの値より小さい場合、インデックスmerge_2nd_idxの値のマージ候補を第2マージ候補として設定してもよい。merge_2nd_idxの値がmerge_idxの値以上である場合、インデックス値merge_2nd_idxの値に1を加えたマージ候補を第2マージ候補として設定してもよい。
【0406】
代替的に、候補ブロックの検索順序を考慮して第2マージ候補を指定してもよい。
【0407】
図31は候補ブロックの検索順序を考慮して第2マージ候補を指定する例を示す図である。
【0408】
図31に示される例では、隣接サンプル及び非隣接サンプルにマークしたインデックスは候補ブロックの検索順序を示す。例えば、A0位置からA14位置まで順に候補ブロックを検索してもよい。
【0409】
ブロックA4を第1マージ候補として選択する場合、検索順序がA4の後である候補ブロックから導き出したマージ候補を第2マージ候補として指定してもよい。例えば、A5から導き出したマージ候補を第2マージ候補として選択してもよい。位置A5での候補ブロックがマージ候補として使用できない場合、次の候補ブロックから導き出したマージ候補を第2マージ候補として選択してもよい。
【0410】
更に非隣接ブロックから導き出したマージ候補から第1マージ候補及び第2マージ候補を選択してもよい。
【0411】
図32は非隣接ブロックから導き出したマージ候補から第1マージ候補及び第2マージ候補を選択する例を示す図である。
【0412】
図32に示される例では、それぞれ現在ブロックに隣接しない第1候補ブロック及び第2候補ブロックから導き出したマージ候補を第1マージ候補及び第2マージ候補として選択してもよい。このような場合、第1候補ブロックの属するブロック行と第2候補ブロックの属するブロック行は異なってもよい。例えば、第1マージ候補はA5~A10のうちのいずれか1つの候補ブロックから導き出されてもよく、第2マージ候補はA11~A15のうちのいずれか1つの候補ブロックから導き出されてもよい。
【0413】
代替的に、第1候補ブロック及び第2候補ブロックが同じ行(line)(例えば、行又は列)に含まれないように設定してもよい。
【0414】
他の例として、第1マージ候補に基づいて第2マージ候補を指定してもよい。このような場合、第1マージ候補はストリームから信号により送信されたインデックス情報merge_idxにより指定されてもよい。例えば、第1マージ候補に隣接するマージ候補を第2マージ候補として指定してもよい。ここで、第1マージ候補に隣接するマージ候補とは第1マージ候補とのインデックス差分が1であるマージ候補を指してもよい。例えば、インデックス値merge_idx+1のマージ候補を第2マージ候補として設定してもよい。このような場合、merge_idx+1の値が最大インデックス値より大きい場合(又は、第1マージ候補のインデックス値が最大インデックスである場合)、インデックス値merge_idx-1のマージ候補又はインデックス値が予め定義された値(例えば、0)であるマージ候補を第2マージ候補として設定してもよい。
【0415】
代替的に、第1マージ候補に隣接するマージ候補とは第1マージ候補を導き出すための候補ブロックに空間的に隣接する候補ブロックから導き出したマージ候補を指してもよい。ここで、候補ブロックの隣接候補ブロックとは候補ブロックの左側、右側、上方、下方又は対角線方向における隣接ブロックを指してもよい。
【0416】
他の例として、第1マージ候補の運動情報に基づいて第2マージ候補を指定してもよい。例えば、第1マージ候補と同じ参照ピクチャを有するマージ候補を第2マージ候補として選択してもよい。第1マージ候補と同じ参照ピクチャを共有するマージ候補が複数ある場合、前記複数のマージ候補のうちのインデックスが最も小さいマージ候補、第1マージ候補とのインデックス差分が最も小さいマージ候補、又は第1マージ候補との運動ベクトル差分が最も小さいマージ候補を第2マージ候補として選択してもよい。代替的に、複数のマージ候補のうちのいずれか1つを指定するインデックス情報に基づいて第2マージ候補を選択してもよい。
【0417】
代替的に、第1マージ候補が第1方向の単方向予測である場合、第2方向における運動情報を含むマージ候補を第2マージ候補として設定してもよい。例えば、第1マージ候補が方向L0の運動情報を有する場合、方向L1の運動情報を有するマージ候補を第2マージ候補として設定してもよい。方向L1の運動情報を有するマージ候補が複数ある場合、前記複数のマージ候補のうちのインデックスが最も小さいマージ候補又は第1マージ候補とのインデックス差分が最も小さいマージ候補を第2マージ候補として設定する。代替的に、複数のマージ候補のうちのいずれか1つを指定するインデックス情報に基づいて第2マージ候補を選択してもよい。
【0418】
他の例として、現在ブロックに隣接する隣接ブロックから導き出したマージ候補のうちの1つを第1マージ候補として設定してもよく、現在ブロックに隣接しない非隣接ブロックから導き出したマージ候補のうちの1つを第2マージ候補として設定してもよい。
【0419】
他の例として、現在ブロックの上方に位置する候補ブロックから導き出したマージ候補のうちの1つを第1マージ候補として設定してもよく、左側に位置する候補ブロックから導き出したマージ候補のうちの1つを第2マージ候補として設定してもよい。
【0420】
上記マージモードとマージモードを組み合わせる組合せ予測モードにおいて、前記マージモードとは並進運動モデルに基づくマージモード(以下、並進マージモードと称される)又はアフィン運動モデルに基づくマージモード(以下、アフィンマージモードと称される)を指してもよい。即ち、並進マージモードと並進マージモードを組み合わせ、又はアフィンマージモードとアフィンマージモードを組み合わせることにより運動補償予測を実行してもよい。
【0421】
他の例として、アフィン運動情報に基づいて第1マージ候補を導き出すための隣接ブロックを符号化する場合、アフィン運動情報に基づいて符号化した隣接ブロックから導き出したマージ候補を第2マージ候補として設定してもよい。例えば、第1マージ候補がアフィンマージ候補であり、又は第1マージ候補がアフィン運動情報に基づいて符号化した符号化ブロックにおけるサブブロックの運動情報に基づいて導き出されたものである場合、アフィンマージ候補、又はアフィン運動情報に基づいて符号化を行う符号化ブロックにおけるサブブロックの運動情報に基づいて導き出したマージ候補を第2マージ候補として選択してもよい。ここで、第2マージ候補は以上の条件を満足するマージ候補のうちの、検索順序に従って第1マージ候補に最も近いマージ候補、第1マージ候補とのインデックス差分が最も小さいマージ候補、最小インデックスを有するマージ候補、及び第1マージ候補との運動ベクトル差分が最も小さいマージ候補のうちの少なくとも1つを含んでもよい。
【0422】
上記例とは逆に、並進運動情報(即ち、非アフィン運動情報)に基づいて第1マージ候補を導き出すための隣接ブロックを符号化する場合、並進運動情報に基づいて符号化した隣接ブロックから導き出したマージ候補を第2マージ候補として設定してもよい。例えば、第1マージ候補が非アフィンマージ候補である場合、非アフィンマージ候補を第2マージ候補として選択してもよい。ここで、第2マージ候補は非アフィンマージ候補のうちの、検索順序に従って第1マージ候補に最も近いマージ候補、第1マージ候補とのインデックス差分が最も小さいマージ候補、最小インデックスを有するマージ候補、及び第1マージ候補との運動ベクトル差分が最も小さいマージ候補のうちの少なくとも1つを含んでもよい。
【0423】
代替的に、第1マージ候補のインデックスにオフセット量を加え、又は第1マージ候補のインデックスからオフセット量を引くことにより、第2マージ候補を導き出し、且つ、第1マージ候補及び第2マージ候補を導き出すための隣接ブロックの符号化方法が異なる場合、第2マージ候補を他のマージ候補として改めて設定してもよい。
【0424】
図33は第2マージ候補を決定する例を説明するための図である。
【0425】
第1マージ候補を選択した場合、第1マージ候補のインデックスにオフセット量を加え、又は第1マージ候補のインデックスからオフセット量を引くことにより導き出したインデックスを有するマージ候補を第2マージ候補として選択してもよい。例えば、ストリームから信号により送信されたmerge_idxで示される値をインデックスとして有するマージ候補を第1マージ候補として選択してもよく、merge_idx+1をインデックスとして有するマージ候補を第2マージ候補として選択してもよい。
【0426】
このような場合、第1マージ候補がアフィンマージ候補、又はアフィン運動モデルにより符号化された符号化ブロックに属するサブブロックから導き出されたものである場合、アフィンマージ候補、又はアフィン運動モデルにより符号化された符号化ブロックに属するサブブロックから導き出したマージ候補を第2マージ候補として設定すべきである。merge_idx+1をインデックスとして有するマージ候補がアフィンマージ候補、又はアフィン運動モデルにより符号化された符号化ブロックに属するサブブロックから導き出されたものではない場合、他のマージ候補を第2マージ候補として設定してもよい。ここで、他のマージ候補は第1マージ候補又はアフィンマージ候補又はアフィン運動モデルにより符号化された符号化ブロックに属するサブブロックから導き出したマージ候補のうちのmerge_idx+1との差分が最も小さいマージ候補であってもよい。
【0427】
一方、第1マージ候補が非アフィンマージ候補である場合、非アフィンマージ候補を第2マージ候補として設定すべきである。merge_idx+1をインデックスとして有するマージ候補がアフィンマージ候補、又はアフィン運動モデルにより符号化された符号化ブロックに属するサブブロックから導き出されたものである場合、他のマージ候補を第2マージ候補として設定してもよい。ここで、他のマージ候補は第1マージ候補又は非アフィンマージ候補のうちのmerge_idx+1との差分が最も小さいマージ候補であってもよい。例えば、図33に示される例には、インデックスmerge_idx+2のマージ候補A3を第2マージ候補として設定することを示す。
【0428】
他の例として、並進マージモードとアフィンマージモードを組み合わせて運動補償予測を実行してもよい。即ち、第1マージ候補又は第2マージ候補のうちのいずれか一方はアフィンマージ候補であってもよく、他方は非アフィンマージ候補であってもよい。
【0429】
第1マージ候補から導き出した第1予測ブロックと第2マージ候補から導き出した第2予測ブロックの加重和演算によって組合せ予測ブロックを取得してもよい。このような場合、第1予測ブロックに適用される重み付け値を第2予測ブロックに適用される重み付け値より大きく設定してもよい。
【0430】
代替的に、第1マージ候補の運動情報及び第2マージ候補の運動情報に基づいて重み付け値を決定してもよい。例えば、参照ピクチャ及び現ピクチャの出力順序の相違によって、第1予測ブロック及び第2予測ブロックに適用される重み付け値を決定してもよい。具体的に、参照ピクチャ及び現ピクチャの出力順序の相違が大きければ大きいほど、予測ブロックに適用される重み付け値が小さく設定され得る。
【0431】
代替的に、第1マージ候補を導き出すための候補ブロック(以下、第1候補ブロックと称される)及び第2マージ候補を導き出すための候補ブロック(以下、第2候補ブロックと称される)のサイズ又は形状を考慮した上で、第1予測ブロック及び第2予測ブロックに適用される重み付け値を決定してもよい。例えば、第1候補ブロック又は第2候補ブロックのうちの形状が現在ブロックに類似する候補ブロックから導き出した予測ブロックに適用される重み付け値を比較的大きい値として設定してもよい。一方、第1候補ブロック又は第2候補ブロックのうちの形状が現在ブロックに類似しない候補ブロックから導き出した予測ブロックに適用される重み付け値を比較的小さい値として設定してもよい。
【0432】
図34は候補ブロックの形状に基づいて、予測ブロックに適用される重み付け値を決定する例を示す図である。
【0433】
現在ブロックは幅が高さより大きい非正方形であると仮定する。
【0434】
第1マージ候補及び第2マージ候補に基づいて第1予測ブロック及び第2予測ブロックを導き出してもよく、第1予測ブロックと第2予測ブロックの加重和演算によって組合せ予測ブロックを生成してもよい。このような場合、第1候補ブロック及び第2候補ブロックの形状に基づいて、第1予測ブロック及び第2予測ブロックに適用される重み付け値を決定してもよい。
【0435】
例えば、図34に示される例では、第1候補ブロックは正方形であり、第2候補ブロックは幅が高さより大きい非正方形である。第2候補ブロックの形状が現在ブロックと同じであるため、第2予測ブロックに適用される重み付け値を第1予測ブロックに適用される重み付け値より大きく設定してもよい。例えば、5/8の重み付け値を第2予測ブロックに適用してもよく、3/8の重み付け値を第1予測ブロックに適用してもよい。等式14には第1予測ブロックと第2予測ブロックの加重和演算によって組合せ予測ブロックを導き出す例を示す。
【0436】
等式14
【0437】
P(x,y)が組合せ予測ブロックを示し、P(x,y)が第1予測ブロックを示し、P(x,y)が第2予測ブロックを示す。
【0438】
他の例として、現在ブロックの形状に基づいて第1予測ブロック及び第2予測ブロックに適用される重み付け値を決定してもよい。例えば、現在ブロックは幅が高さより大きい非正方形である場合、第1マージ候補及び第2マージ候補のうちの現在ブロックの上方に位置する候補ブロックから導き出したマージ候補に基づいて生成した予測ブロックに一層大きい重み付け値を適用してもよい。第1マージ候補及び第2マージ候補がいずれも現在ブロックの上方に位置する候補ブロックから導き出されたものである場合、第1予測ブロック及び第2予測ブロックに適用される重み付け値を同じであるように設定してもよい。
一方、現在ブロックは高さが幅より大きい非正方形である場合、第1マージ候補及び第2マージ候補のうちの現在ブロックの左側に位置する候補ブロックから導き出したマージ候補に基づいて生成した予測ブロックに一層大きい重み付け値を適用してもよい。第1マージ候補及び第2マージ候補がいずれも現在ブロックの左側に位置する候補ブロックから導き出されたものである場合、第1予測ブロック及び第2予測ブロックに適用される重み付け値を同じであるように設定してもよい。現在ブロックが正方形である場合、第1予測ブロック及び第2予測ブロックに適用される重み付け値を同じであるように設定してもよい。
【0439】
他の例として、現在ブロックと候補ブロックとの距離に基づいて、各予測ブロックに適用される重み付け値を決定してもよい。ここで、距離は現在ブロックとのx軸座標差分、y軸座標差分又はそれらのうちの最小値に基づいて導き出されてもよい。現在ブロックとの距離が比較的小さいマージ候補から導き出した予測ブロックに適用される重み付け値を、現在ブロックとの距離が比較的大きいマージ候補から導き出した予測ブロックに適用される重み付け値より大きく設定してもよい。例えば、図31に示される例では、第1マージ候補は現在ブロックに隣接する隣接ブロックから導き出され、第2マージ候補は現在ブロックに隣接しない非隣接ブロックから導き出される。このような場合、第1候補ブロックと現在ブロックとのx軸距離が第2候補ブロックと現在ブロックとのx軸距離より小さいため、第1予測ブロックに適用される重み付け値を、第2予測ブロックに適用される重み付け値より大きく設定してもよい。
【0440】
代替的に、第1マージ候補及び第2マージ候補がいずれも非隣接ブロックから導き出される場合、前記非隣接ブロックのうちの現在ブロックとの距離が比較的小さい非隣接ブロックから導き出した予測ブロックに一層大きい重み付け値を割り当ててもよい。例えば、図32に示される例では、第1候補ブロックと現在ブロックとのy軸距離が第2候補ブロックと現在ブロックとのy軸距離より小さいため、第1予測ブロックに適用される重み付け値を、第2予測ブロックに適用される重み付け値より大きく設定してもよい。
【0441】
第1マージ候補及び第2マージ候補に基づいて整合後の運動情報を導き出してもよく、整合後の運動情報に基づいて現在ブロックに対して運動補償予測を実行してもよい。例えば、第1マージ候補の運動ベクトル及び第2マージ候補の運動ベクトルの平均演算又は加重和演算によって現在ブロックの運動ベクトルを導き出してもよい。このような場合、第1マージ候補に適用される運動ベクトルの重み付け値及び第2マージ候補に適用される運動ベクトルの重み付け値は上記実施例によって決定されてもよい。
【0442】
第1マージ候補が非アフィンマージ候補であり且つ第2アフィンマージ候補がアフィンマージ候補である場合、第2マージ候補の運動ベクトルを拡大縮小することにより現在ブロックの運動ベクトルを導き出すことができる。等式15には現在ブロックの運動ベクトルを導き出す例を示す。
【0443】
等式15
【0444】
等式15では、(mvX,mvY)が現在ブロックの運動ベクトルを示し、(mv0x,mv0y)が第1マージ候補の運動ベクトルを示し、(mv1x,mv1y)が第2マージ候補の運動ベクトルを示す。Mが拡大縮小パラメータを示す。Mがエンコーダ及びデコーダにおいて予め定義されてもよい。代替的に、現在ブロック又は候補ブロックのサイズに基づいて拡大縮小パラメータMの値を決定してもよい。例えば、第2候補ブロックの幅又は高さが32より大きい場合、Mを3として設定してもよく、そうでない場合、Mを2として設定してもよい。
【0445】
第1マージ候補又は第2マージ候補の運動情報は、マージモードとマージモードを組み合わせるマージ予測モードを適用するブロックの運動情報として記憶されてもよい。記憶される運動情報は以後に符号化/復号化されようとするブロックの運動情報を導き出すことに用いられてもよい。
【0446】
代替的に、前記ブロックを複数のサブブロックに分割してもよく、第1マージ候補の運動情報及び第2マージ候補の運動情報のうちの1つを各サブブロックの運動情報として記憶してもよい。このような場合、複数のサブブロックのうちのいくつかのサブブロックの運動情報を第1マージ候補の運動情報として設定してもよく、他のサブブロックの運動情報を第2マージ候補の運動情報として設定してもよい。
【0447】
代替的に、第1マージ候補及び第2マージ候補の運動情報に基づいて導き出した整合後の運動情報は、マージモードとマージモードを組み合わせるマージ予測モードを適用するブロックの運動情報として記憶されてもよい。
【0448】
マージモードと高度動きベクトル予測モードを組み合わせる予測モードにおいて、マージ候補から導き出した運動情報を使用して第1予測ブロックを生成してもよく、運動ベクトル予測候補から導き出した運動ベクトルを使用して第2予測ブロックを生成してもよい。
【0449】
高度動きベクトル予測モードにおいて、現在ブロックに隣接する隣接ブロック又はコロケーテッドピクチャにおけるコロケーテッドブロックから運動ベクトル予測候補を導き出してもよい。その後、複数の運動ベクトル予測候補のうちのいずれか1つを指定してもよく、指定された運動ベクトル予測候補を現在ブロックの運動ベクトル予測結果として設定してもよい。その後、現在ブロックの運動ベクトル予測結果と運動ベクトル差分とを加えて現在ブロックの運動ベクトルを導き出してもよい。
【0450】
マージモードと高度動きベクトル予測モードを組み合わせる予測モードにおいて、同一の候補ブロックからマージ候補及び運動ベクトル予測候補を導き出してもよい。例えば、merge_idxでマージ候補を指定する場合、指定されたマージ候補を導き出すための候補ブロックの運動ベクトルを運動ベクトル予測結果として設定してもよい。代替的に、mvp_flagで運動ベクトル予測候補を指定する場合、指定されたマージ候補を導き出すための候補ブロックから導き出したマージ候補を選択してもよい。
【0451】
代替的に、マージ候補を導き出すための候補ブロックと運動ベクトル予測候補を導き出すための候補ブロックは異なってもよい。例えば、現在ブロックの上方に位置する候補ブロックから導き出したマージ候補を選択した場合、現在ブロックの左側に位置する候補ブロックから導き出した運動ベクトル予測候補を選択するように設定してもよい。
【0452】
代替的に、インデックス情報により選択されたマージ候補とインデックス情報により選択された運動ベクトル予測候補が同一の候補ブロックから導き出される場合、前記候補ブロックに隣接する隣接候補ブロックから導き出した運動ベクトル予測候補で前記運動ベクトル予測候補を置換してもよく、又は前記候補ブロックに隣接する候補ブロックから導き出したマージ候補で前記マージ候補を置換してもよい。
【0453】
図35はマージ候補を置換する例を示す図である。
【0454】
図35(a)に示される例には、位置A2での候補ブロックから導き出したマージ候補及び運動ベクトル予測候補を選択することを示す。図示のように、マージ候補と運動ベクトル予測候補が同一の候補ブロックから導き出される場合、前記マージ候補又は前記運動ベクトル予測候補ではなく前記候補ブロックに隣接する候補ブロックから導き出したマージ候補又は運動ベクトル予測候補を使用してもよい。例えば、図35(b)に示すように、位置A2でのマージ候補ではなく位置A1でのマージ候補を使用してもよい。
【0455】
現在ブロックのマージ候補に基づいて第1予測ブロックを導き出してもよく、前記運動ベクトル予測候補に基づいて第2予測ブロックを導き出してもよい。その後、第1予測ブロックと第2予測ブロックの加重和演算によって組合せ予測ブロックを導き出してもよい。このような場合、高度動きベクトル予測モードで生成した第2予測ブロックに適用される重み付け値を、マージモードで生成した第1予測ブロックに適用される重み付け値より大きく設定してもよい。
【0456】
オリジナルピクチャと予測ピクチャとの減算により、導き出した残余ピクチャを導き出してもよい。このような場合、残余ピクチャを周波数領域に変更する場合、周波数成分における高周波数成分を取り除いても、ビデオの主観的画質が大幅に低下することもない。
これにより、高周波数成分の値を減少し又は高周波数成分の値を0として設定すれば、顕著な視覚的歪みを生じさせずに圧縮効率を向上させる効果を有する。以上の特性を反映するために、現在ブロックを変換して残余ピクチャを2次元周波数成分に分解してもよい。
離散コサイン変換(DCT、Discrete Cosine Transform)又は離散サイン変換(DST、Discrete Sine Transform)等の変換技術で前記変換を実行してもよい。
【0457】
DCTはコサイン変換を使用して残余ピクチャを2次元周波数成分に分解(又は変換)するが、DSTはサイン変換を使用して残余ピクチャを2次元周波数成分に分解(又は変換)する。残余ピクチャの変換結果として、周波数成分は基本ピクチャとして示されてもよい。例えば、サイズN×Nのブロックに対してDCT変換を実行するとき、N個の基本パターン成分を取得することができる。変換によってサイズN×Nのブロックに含まれる各基本パターン成分のサイズを取得することができる。使用する変換技術に基づいて、基本パターン成分のサイズはDCT係数又はDST係数と称されてもよい。
【0458】
変換技術DCTは主に非0の低周波数成分の分布が比較的多いピクチャを変換することに用いられる。変換技術DSTは主に高周波数成分の分布が比較的多いピクチャに使用される。
【0459】
更にDCT又はDST以外の変換技術を使用して残余ピクチャを変換してもよい。
【0460】
以下、残余ピクチャを2次元周波数成分に変換する過程は2次元ピクチャ変換と称される。そして、変換結果により取得された基本パターン成分のサイズは変換係数と称される。例えば、変換係数とはDCT係数又はDST係数を指してもよい。以後に説明する主変換及び二次変換を同時に適用するとき、変換係数は二次変換の結果により生成された基本パターン成分のサイズを示してもよい。
【0461】
ブロック単位で変換技術を決定してもよい。現在ブロックの予測符号化モード、現在ブロックのサイズ又は現在ブロックの形状のうちの少なくとも1つに基づいて変換技術を決定してもよい。例えば、イントラ予測モードで現在ブロックを符号化し且つ現在ブロックのサイズがN×Nより小さい場合、変換技術DSTを使用して変換を実行してもよい。一方、前記条件を満足できない場合、変換技術DCTを使用して変換を実行してもよい。
【0462】
残余ピクチャにおいて、更に一部のブロックに対して2次元ピクチャ変換を行わなくてもよい。2次元ピクチャ変換を実行しないことは変換スキップ(Transform Skip)と称されてもよい。変換スキップを適用する場合、変換を実行しない残余値に量子化を適用してもよい。
【0463】
DCT又はDSTを使用して現在ブロックを変換した後、変換された現在ブロックを再び変換してもよい。このような場合、DCT又はDSTに基づく変換は主変換として定義されてもよく、主変換を適用するブロックを再び変換する過程は二次変換と称されてもよい。
【0464】
主変換は複数の変換コア候補のうちのいずれか1つを使用して実行されてもよい。例えば、DCT2、DCT8又はDCT7のうちのいずれか1つを使用して主変換を実行してもよい。
【0465】
水平方向及び垂直方向に対して、異なる変換コアを使用してもよい。更に、ストリームを介して信号によって、水平方向の変換コアと垂直方向の変換コアとの組み合わせを示す情報を送信してもよい。
【0466】
主変換及び二次変換の実行ユニットが異なる。例えば、8×8ブロックに対して主変換を実行してもよく、変換された8×8ブロックにおけるサイズ4×4のサブブロックに対して二次変換を実行してもよい。このような場合、更に二次変換を実行しない残りの領域の変換係数を0として設定してもよい。
【0467】
代替的に、4×4ブロックに対して主変換を実行してもよく、変換された4×4ブロックを含むサイズ8×8の領域に対して二次変換を実行してもよい。
【0468】
ストリームを介して信号によって、二次変換を実行するかどうかを示す情報を送信してもよい。
【0469】
代替的に、水平方向変換コアと垂直方向変換コアが同じであるかどうかによって、二次変換を実行するかどうかを決定してもよい。例えば、水平方向変換コアと垂直方向変換コアが同じである場合のみ、二次変換を実行してもよい。代替的に、水平方向変換コアと垂直方向変換コアが異なる場合のみ、二次変換を実行してもよい。
【0470】
代替的に、水平方向の変換及び垂直方向の変換が予め定義された変換コアを利用する場合のみ、二次変換が許容される。例えば、水平方向の変換及び垂直方向の変換がDCT2変換コアを使用する場合、二次変換が許容されてもよい。
【0471】
代替的に、現在ブロックの非ゼロ変換係数の数に基づいて、二次変換を実行するかどうかを決定してもよい。例えば、現在ブロックの非ゼロ変換係数が閾値以下である場合、二次変換を使用しないように設定してもよく、現在ブロックの非ゼロ変換係数が閾値より大きい場合、二次変換を使用するように設定してもよい。更に、現在ブロックがイントラ予測により符号化される場合のみ、二次変換を使用するように設定してもよい。
【0472】
現在ブロックの形状に基づいて、二次変換を実行しようとするサブブロックのサイズ又は形状を決定してもよい。
【0473】
図36及び図37は二次変換を実行しようとするサブブロックを示す図である。
【0474】
現在ブロックが正方形である場合、主変換を実行した後、現在ブロックの左上のサイズN×Nのサブブロックに対して二次変換を実行してもよい。例えば、現在ブロックが8×8サイズの符号化ブロックである場合、現在ブロックに対して主変換を実行した後、現在ブロックの左上角の4×4サイズのサブブロックに対して二次変換を実行してもよい(図36参照)。
【0475】
現在ブロックは幅が高さより4倍以上大きい非正方形である場合、主変換を実行した後、現在ブロックの左上のサイズ(kN)×(4kN)のサブブロックに対して二次変換を実行してもよい。例えば、現在ブロックが16×4サイズの非正方形である場合、現在ブロックに対して主変換を実行した後、現在ブロックの左上角の2×8サイズのサブブロックに対して二次変換を実行してもよい(図37(a)参照)。
【0476】
現在ブロックは高さが幅より4倍以上大きい非正方形である場合、主変換を実行した後、現在ブロックの左上のサイズ(4kN)×(kN)のサブブロックに対して二次変換を実行してもよい。例えば、現在ブロックが16×4サイズの非正方形である場合、現在ブロックに対して主変換を実行した後、現在ブロックの左上角の2×8サイズのサブブロックに対して二次変換を実行してもよい(図37(b)参照)。
【0477】
デコーダにおいて二次変換の逆変換(第2逆変換)を実行してもよく、その結果に対して主変換の逆変換(第1逆変換)を実行してもよい。第2逆変換及び第1逆変換の実行結果として、現在ブロックの残余信号を取得することができる。
【0478】
ストリームを介して信号によって、現在ブロックの変換タイプを示す情報を送信してもよい。前記情報は水平方向の変換タイプと垂直方向の変換タイプとの組み合わせのうちの1つを示すインデックス情報tu_mts_idxであってもよい。
【0479】
インデックス情報tu_mts_idxに基づいて指定した変換タイプ候補によって、垂直方向の変換コア及び水平方向の変換コアを決定してもよい。表11及び表12にはtu_mts_idxに基づく変換タイプ組合せを示す。
【0480】
【表11】
【0481】
【表12】
【0482】
変換タイプをDCT2、DST7、DCT8又はスキップ変換のうちのいずれか1つとして決定してもよい。代替的に、変換スキップ以外に、変換コアのみを利用して変換タイプ組合せ候補を構成してもよい。
【0483】
表11を使用する場合、tu_mts_idxが0である場合、水平方向及び垂直方向において変換スキップを適用してもよい。tu_mts_idxが1である場合、水平方向及び垂直方向においてDCT2を適用してもよい。tu_mts_idxが3である場合、水平方向においてDCT8を適用し、垂直方向においてDCT7を適用してもよい。
【0484】
表12を使用する場合、tu_mts_idxが0である場合、水平方向及び垂直方向においてDCT2を適用してもよい。tu_mts_idxが1である場合、水平方向及び垂直方向において変換スキップを適用してもよい。tu_mts_idxが3である場合、水平方向においてDCT8を適用し、垂直方向においてDCT7を適用してもよい。
【0485】
現在ブロックのサイズ、形状又は非ゼロ係数の数のうちの少なくとも1つに基づいて、インデックス情報を符号化するかどうかを決定してもよい。例えば、非ゼロ係数の数が閾値以下である場合、信号によってインデックス情報を送信せず、デフォルト変換タイプを現在ブロックに適用してもよい。デフォルト変換タイプはDST7であってもよい。代替的に、デフォルトモードは現在ブロックのサイズ、形状又はイントラ予測モードによって異なる。
【0486】
現在ブロックのサイズ又は形状に基づいて閾値を決定してもよい。例えば、現在ブロックのサイズが32×32以下である場合、閾値を2として設定してもよく、現在ブロックが32×32より大きい場合(例えば、現在ブロックがサイズ32×64又は64×32の符号化ブロックである場合)、閾値を4として設定してもよい。
【0487】
複数のルックアップテーブルはエンコーダ/デコーダに予め記憶されてもよい。複数のルックアップテーブルにおいて、変換タイプ組合せ候補に割り当てられるインデックス値、変換タイプ組合せ候補の種類又は変換タイプ組合せ候補の数のうちの少なくとも1つは異なってもよい。
【0488】
現在ブロックのサイズ、形状、予測符号化モード、イントラ予測モード、2回目変換を適用するかどうか、又は変換スキップを隣接ブロックに適用するかどうかのうちの少なくとも1つに基づいて、現在ブロックのルックアップテーブルを選択してもよい。
【0489】
例えば、現在ブロックのサイズが4×4以下であり又はインター予測により現在ブロックを符号化する場合、表11におけるルックアップテーブルを使用してもよく、現在ブロックのサイズが4×4より大きく又はブロック内予測により現在ブロックを符号化する場合、表12におけるルックアップテーブルを使用してもよい。
【0490】
代替的に、ストリームを介して信号によって、複数のルックアップテーブルのうちのいずれか1つを示す情報を送信してもよい。デコーダは前記情報に基づいて現在ブロックのルックアップテーブルを選択してもよい。
【0491】
他の例として、現在ブロックのサイズ、形状、予測符号化モード、イントラ予測モード、2回目変換を行うかどうか、又は変換スキップを隣接ブロックに適用するかどうかのうちの少なくとも1つに基づいて、変換タイプ組合せ候補に割り当てられるインデックスを適応的に決定してもよい。例えば、現在ブロックのサイズが4×4である場合、変換スキップに割り当てられるインデックスは現在ブロックのサイズが4×4より大きい場合に変換スキップに割り当てられるインデックスより小さい値を有してもよい。具体的に、現在ブロックのサイズが4×4である場合、変換スキップにインデックス0を割り当ててもよく、現在ブロックが4×4より大きく且つ16×16以下である場合、変換スキップに0より大きいインデックス(例えば、インデックス1)を割り当ててもよい。現在ブロックが16×16より大きい場合、最大値(例えば、5)を変換スキップのインデックスとして割り当ててもよい。
【0492】
代替的に、現在ブロックがインター予測により符号化される場合、変換スキップにインデックス0を割り当ててもよい。現在ブロックがイントラ予測により符号化される場合、変換スキップに0より大きいインデックス(例えば、インデックス1)を割り当ててもよい。
【0493】
代替的に、現在ブロックはインター予測により符号化されるサイズ4×4のブロックである場合、変換スキップにインデックス0を割り当ててもよい。一方、現在ブロックがインター予測により符号化されず、又は現在ブロックが4×4より大きい場合、変換スキップに0より大きい値のインデックス(例えば、インデックス1)を割り当ててもよい。
【0494】
表11及び表12に列挙した変換タイプ組合せ候補と異なる変換タイプ組合せ候補を定義・使用してもよい。例えば、DCT7、DCT8又はDST2等のような変換コアが適用された変換タイプ組合せ候補を使用して、変換スキップを水平又は垂直変換及び他の変換に適用してもよい。このとき、現在ブロックのサイズ(例えば、幅及び/又は高さ)、形状、予測符号化モード又はイントラ予測モードのうちの少なくとも1つに基づいて、水平方向又は垂直方向の変換タイプ候補として変換スキップを使用するかどうかを決定してもよい。
【0495】
代替的に、ストリームを介して信号によって、指定された変換タイプ候補が利用可能であるかどうかを示す情報を送信してもよい。例えば、水平方向及び垂直方向に対して変換スキップを変換タイプ候補として使用できるかどうかを示すフラグを信号によって送信してもよい。前記フラグに基づいて、複数の変換タイプ組合せ候補に指定された変換タイプ組合せ候補が含まれるかどうかを決定してもよい。
【0496】
代替的に、ストリームを介して信号によって、変換タイプ候補を現在ブロックに適用するかどうかを指定することを示す情報を送信してもよい。例えば、DCT2を水平方向及び垂直方向に適用するかどうかを示すフラグcu_mts_flagを信号によって送信してもよい。cu_mts_flagの値が1である場合、DCT2を垂直方向及び水平方向の変換コアとして設定してもよい。cu_mts_flagの値が0である場合、DCT8又はDST7を垂直方向及び水平方向の変換コアとして設定してもよい。代替的に、cu_mts_flagの値が0である場合、複数の変換タイプ組合せ候補のうちのいずれか1つを指定する情報tu_mts_idxを信号によって送信してもよい。
【0497】
現在ブロックは幅が高さより大きい非正方形又は高さが幅より大きい非正方形である場合、更にcu_mts_flagの符号化を省略して、cu_mts_flagの値を0として見なしてもよい。
【0498】
現在ブロックのサイズ、形状又はイントラ予測モードに基づいて、利用可能な変換タイプ組合せ候補の数を異なるように設定してもよい。例えば、現在ブロックが正方形である場合、3つ以上の変換タイプ組合せ候補を使用可能であり、現在ブロックが非正方形である場合、2つの変換タイプ組合せ候補を使用可能である。代替的に、現在ブロックが正方形である場合、変換タイプ組合せ候補のうちの水平方向の変換タイプ及び垂直方向の変換タイプが異なる変換タイプ組合せ候補のみを利用可能である。
【0499】
現在ブロックが利用できる変換タイプ組合せ候補は3つ以上である場合、変換タイプ組合せ候補のうちの1つを示すインデックス情報tu_mts_idxを信号によって送信してもよい。一方、現在ブロックが利用できる変換タイプ組合せ候補は2つある場合、変換タイプ組合せ候補のうちのいずれか1つを示すフラグmts_flagを信号によって送信してもよい。以下の表13には現在ブロックの形状に基づいて変換タイプ組合せ候補を指定する情報を符号化する過程を示す。
【0500】
【表13】
【0501】
現在ブロックの形状に基づいて、変換タイプ組合せ候補のインデックスを並べ替える(又は、再整列する)。例えば、現在ブロックが正方形である場合に変換タイプ組合せ候補に割り当てられるインデックスは、現在ブロックが非正方形である場合に変換タイプ組合せ候補に割り当てられるインデックスと異なってもよい。例えば、現在ブロックが正方形である場合、以下の表14に基づいて変換タイプ組合せを選択してもよく、現在ブロックが非正方形である場合、以下の表15に基づいて変換タイプ組合せを選択してもよい。
【0502】
【表14】
【0503】
【表15】
【0504】
現在ブロックの水平方向非ゼロ係数の数又は垂直方向非ゼロ係数の数に基づいて変換タイプを決定してもよい。水平方向非ゼロ係数の数は1×N(Nが現在ブロックの幅である)に含まれる非ゼロ係数の数を示し、垂直方向非ゼロ係数の数はN×1(Nが現在ブロックの高さである)に含まれる非ゼロ係数の数を示す。水平方向非ゼロ係数の最大値が閾値以下である場合、水平方向において主変換タイプを適用してもよく、水平方向非ゼロ係数の最大値が閾値より大きい場合、水平方向において二次変換タイプを適用してもよい。垂直方向非ゼロ係数の最大値が閾値以下である場合、垂直方向において主変換タイプを適用してもよく、垂直方向非ゼロ係数の最大値が閾値より大きい場合、垂直方向において二次変換タイプを適用してもよい。
【0505】
図38は現在ブロックの変換タイプを決定する例を説明するための図である。
【0506】
例えば、イントラ予測により現在ブロックを符号化し且つ現在ブロックの水平方向非ゼロ係数の最大値が2以下である場合(図38(a)参照)、水平方向の変換タイプをDST7として決定してもよい。
【0507】
イントラ予測により現在ブロックを符号化し且つ現在ブロックの垂直方向非ゼロ係数の最大値が2より大きい場合(図38(b)参照)、垂直方向の変換タイプをDCT2又はDCT8として決定してもよい。
【0508】
ストリームを介して信号によって、ストリームから信号により送信された情報に基づいて現在ブロックの変換タイプを明示的に決定するかどうかを示す情報を送信してもよい。
例えば、シーケンスレベルで信号によって、イントラ予測により符号化されたブロックが明示的変換タイプ決定を許容するかどうかを示す情報sps_explicit_intra_mts_flag、及び/又はインター予測により符号化されたブロックが明示的変換タイプ決定を許容するかどうかを示す情報sps_explicit_inter_mts_flagを送信してもよい。
【0509】
明示的変換タイプ決定が許容される場合、ストリームから信号により送信されたインデックス情報tu_mts_idxに基づいて現在ブロックの変換タイプを決定してもよい。一方、明示的変換タイプ決定が許容されない場合、現在ブロックのサイズ、現在ブロックの形状、サブブロックユニットの変換が許容されるかどうか及び非ゼロ変換係数を含むサブブロックの位置のうちの少なくとも1つに基づいて変換タイプを決定してもよい。例えば、現在ブロックの幅に基づいて現在ブロックの水平方向変換タイプを決定してもよく、現在ブロックの高さに基づいて現在ブロックの垂直方向変換タイプを決定してもよい。
例えば、現在ブロックの幅が4より小さく又は16より大きい場合、水平方向の変換タイプをDCT2として決定してもよい。そうでない場合、水平方向の変換タイプをDST7として決定してもよい。現在ブロックの高さが4より小さく又は16より大きい場合、垂直方向の変換タイプをDCT2として決定してもよい。そうでない場合、垂直方向の変換タイプをDST7として決定してもよい。ここで、水平方向の変換タイプ及び垂直方向の変換タイプを決定するために、現在ブロックのサイズ、形状及びイントラ予測モードのうちの少なくとも1つに基づいて幅及び高さに比べる閾値を決定してもよい。
【0510】
代替的に、現在ブロックは高さと幅が同じである正方形である場合、水平方向変換タイプと垂直方向変換タイプが同じであるように設定するが、現在ブロックは高さと幅が異なる非正方形である場合、水平方向変換タイプと垂直方向変換タイプが異なるように設定してもよい。例えば、現在ブロックの幅が高さより大きい場合、水平方向変換タイプをDST7として決定し、垂直方向変換タイプをDCT2として決定してもよい。現在ブロックの高さが幅より大きい場合、垂直方向変換タイプをDST7として決定し、水平方向変換タイプをDCT2として決定してもよい。
【0511】
明示的変換タイプ決定が許容されるかどうかによって、変換タイプ候補の数及び/又はタイプ、あるいは変換タイプ組合せ候補の数及び/又はタイプは異なってもよい。例えば、明示的変換タイプ決定が許容される場合、DCT2、DST7及びDCT8は変換タイプ候補として使用されてもよい。従って、水平方向変換タイプ及び垂直方向変換タイプのうちのそれぞれをDCT2、DST8又はDCT8として設定してもよい。明示的変換タイプ決定が許容されない場合、DCT2及びDST7は変換タイプ候補のみとして使用される。従って、水平方向変換タイプ及び垂直方向変換タイプのうちのそれぞれをDCT2又はDST7として決定してもよい。
【0512】
エンコーダにおいて変換及び量子化を実行すれば、デコーダは逆量子化及び逆変換によって残余ブロックを取得することができる。デコーダにおいて予測ブロックと残余ブロックとを加えて、現在ブロックの再構築ブロックを取得することができる。
【0513】
現在ブロックの再構築ブロックを取得した場合、ループ内フィルタリング(In-loop filtering)によって量子化及び符号化過程に発生する情報紛失を減少させることができる。ループ内フィルタはデブロッキングフィルタ(Deblocking filter)、サンプル適応型オフセットフィルタ(SAO、Sample Adaptive Offset filter)又は適応型ループフィルタ(ALF、Adaptive Loop Filter)のうちの少なくとも1つを含んでもよい。以下、ループ内フィルタを適用する前の再構築ブロックは第1再構築ブロックと称され、ループ内フィルタを適用した後の再構築ブロックは第2再構築ブロックと称される。
【0514】
第1再構築ブロックに対してデブロッキングフィルタ、SAO又はALFのうちの少なくとも1つを適用して第2再構築ブロックを取得してもよい。このような場合、デブロッキングフィルタを適用した後にSAO又はALFを適用してもよい。
【0515】
デブロッキングフィルタはブロック単位で量子化を実行する際にブロックの境界で発生する画質劣化(ブロック歪み、Blocking Artifact)を低減することに用いられる。デブロッキングフィルタを適用するために、第1再構築ブロックと隣接再構築ブロックとの間のブロッキング強度(BS、Blocking Strength)を決定してもよい。
【0516】
図39はブロッキング強度の決定過程を示すフローチャートである。
【0517】
図39に示される例では、Pが第1再構築ブロックを示し、Qが隣接再構築ブロックを示す。隣接再構築ブロックは現在ブロックの左側又は上方に隣接してもよい。
【0518】
図39に示される例には、PとQの予測符号化モード、非ゼロ変換係数を含むかどうか、同じ参照ピクチャを使用してインター予測を実行するかどうか、及び運動ベクトルの差分が閾値以上であるかどうかを考慮してブロッキング強度を決定することを示す。
【0519】
ブロッキング強度に基づいて、デブロッキングフィルタを適用するかどうかを決定してもよい。例えば、ブロッキング強度が0である場合、フィルタリングを実行しない可能性がある。
【0520】
SAOは周波数領域において量子化を実行する際に発生するリンギングアーティファクト(Ringing Artifact)を低減することに用いられる。第1再構築ピクチャのパターンを考慮して決定したオフセット量を加え又は引くことにより、SAOを実行することができる。オフセット量の決定方法はエッジオフセット(EO、Edge Offset)又はバンドオフセット(Band Offset)を含む。EOは周辺画素のパターンに基づいて現在サンプルのオフセットを決定する方法を示す。BOは領域における類似の輝度値を有する画素セットに対して同じオフセットを適用する方法を示す。具体的に、画素輝度を32個の同じ区間に区別し、類似の輝度値を有する画素を1つのセットとして設定する。例えば、32個のバンドのうちの隣接する4つのバンドを1組に設定し、4つのバンドの属するサンプルは同じオフセット量を適用してもよい。
【0521】
ALFは第1再構築ピクチャ又はデブロッキングフィルタを適用する再構築ピクチャに対して予め定義されたサイズ/形状のフィルタを適用して第2再構築ピクチャを生成する方法である。下記等式16にはALFを適用する例を示す。
【0522】
等式16
【0523】
ピクチャ、符号化ツリーユニット、符号化ブロック、予測ブロック又は変換ブロックを単位として、予め定義されたフィルタ候補のうちのいずれか1つを選択してもよい。各フィルタ候補のサイズ又は形状のうちのいずれか1つは異なる。
【0524】
図40は予め定義されたフィルタ候補を示す図である。
【0525】
図40に示される例では、5×5、7×7及び9×9菱形のうちの少なくとも1つを選択してもよい。
【0526】
色度成分に対してサイズ5×5の菱形しか使用できない。
【0527】
復号化過程又は符号化過程を中心として説明する実施例を符号化過程又は復号化過程に用いることも本発明の範囲に含まれる。説明される順序と異なる順序で所定順序に従って説明される複数の実施例を変更することも本発明の範囲に含まれる。
【0528】
一連のステップ又はフローチャートに基づいて実施例を説明したが、発明の時間シーケンス順序は制限されず、且つ必要に応じて同時に実行され又は他の順序に従って実行されてもよい。且つ、上記実施例では、ブロック図を構成する構造要素(例えば、ユニット、モジュール等)は更にそれぞれハードウェア装置又はソフトウェアとして実現されてもよく、且つ複数の構造要素は単一のハードウェア装置又はソフトウェアとして組み合わせて実施されてもよい。前記実施例はプログラム命令の形式で実施されてもよく、前記プログラム命令は様々なコンピュータ部材により実行されて、コンピュータ可読記録媒体に記録されてもよい。前記コンピュータ可読記録媒体はプログラム命令、データファイル、データ構造等を独立して含み又は組み合わせて含んでもよい。コンピュータ可読記録媒体の例はハードディスク、フロッピーディスク及び磁気テープ等の磁性媒体、CD-ROM、DVD等の光学記録媒体、フロプティカルディスク(floptical disk)等の磁気-光媒体(magneto-optical media)、及びROM、RAM、フラッシュメモリ等のプログラム命令を記憶して該命令を実行するために特に設置されたハードウェア装置を含んでもよい。前記ハードウェア装置は1つ又は複数のソフトウェアモジュールとして操作して本発明に係る処理を実行するように設置されてもよく、逆も同様である。
【産業上の利用可能性】
【0529】
本発明はビデオを符号化/復号化する電子装置に適用されてもよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40