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

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

▶ シャープ株式会社の特許一覧

特開2024-92612動画像復号装置および動画像符号化装置
<>
  • 特開-動画像復号装置および動画像符号化装置 図1
  • 特開-動画像復号装置および動画像符号化装置 図2
  • 特開-動画像復号装置および動画像符号化装置 図3
  • 特開-動画像復号装置および動画像符号化装置 図4
  • 特開-動画像復号装置および動画像符号化装置 図5
  • 特開-動画像復号装置および動画像符号化装置 図6
  • 特開-動画像復号装置および動画像符号化装置 図7
  • 特開-動画像復号装置および動画像符号化装置 図8
  • 特開-動画像復号装置および動画像符号化装置 図9
  • 特開-動画像復号装置および動画像符号化装置 図10
  • 特開-動画像復号装置および動画像符号化装置 図11
  • 特開-動画像復号装置および動画像符号化装置 図12
  • 特開-動画像復号装置および動画像符号化装置 図13
  • 特開-動画像復号装置および動画像符号化装置 図14
  • 特開-動画像復号装置および動画像符号化装置 図15
  • 特開-動画像復号装置および動画像符号化装置 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024092612
(43)【公開日】2024-07-08
(54)【発明の名称】動画像復号装置および動画像符号化装置
(51)【国際特許分類】
   H04N 19/593 20140101AFI20240701BHJP
   H04N 19/70 20140101ALI20240701BHJP
【FI】
H04N19/593
H04N19/70
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022208682
(22)【出願日】2022-12-26
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和4年度、国立研究開発法人情報通信研究機構、「Beyond 5G研究開発促進事業(一般型)/日米豪国際連携を通じた超カバレッジBeyond 5G無線通信・映像符号化標準化技術の研究開発」、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000005049
【氏名又は名称】シャープ株式会社
(74)【代理人】
【識別番号】100161207
【弁理士】
【氏名又は名称】西澤 和純
(74)【代理人】
【識別番号】100129115
【弁理士】
【氏名又は名称】三木 雅夫
(74)【代理人】
【識別番号】100133569
【弁理士】
【氏名又は名称】野村 進
(74)【代理人】
【識別番号】100131473
【弁理士】
【氏名又は名称】覚田 功二
(72)【発明者】
【氏名】八杉 将伸
(72)【発明者】
【氏名】青野 友子
(72)【発明者】
【氏名】猪飼 知宏
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA19
5C159RC11
5C159UA02
5C159UA05
5C159UA33
(57)【要約】      (修正有)
【課題】予測画像の精度を保ちながら、テンプレートベースイントラモード導出の複雑度を低減できる動画像復号装置および動画像符号化装置を提供する。
【解決手段】動画像復号装置のイントラ予測画像生成部において、TIMD(テンプレートベースイントラモード導出)予測部は、テンプレート領域とテンプレート参照領域の画像を用いて、テンプレート画像と所定のイントラ予測モード候補に対するテンプレート予測画像を生成し、テンプレート予測画像とテンプレート画像から導出したコストに基づいて、対象ブロックのイントラ予測モードを選択するTIMD予測において、テンプレートベースイントラモード導出フラグを参照して、テンプレート領域とテンプレート参照領域の位置を決定する。
【選択図】図5
【特許請求の範囲】
【請求項1】
符号化データからテンプレートベースイントラモード導出フラグおよびイントラサブブロックパーティショニングモード方向情報を復号するパラメータ復号部と、
対象ブロックに隣接するテンプレート領域の画像を用いて、テンプレート画像を生成するテンプレート導出部と、
前記対象ブロック近傍のテンプレート参照領域の画像を用いて、参照サンプルを生成する参照サンプル導出部と、
前記参照サンプルを用いて、所定のイントラ予測モード候補に対するテンプレート予測画像を生成するテンプレート予測画像生成部と、
前記テンプレート予測画像と前記テンプレート画像からコストを導出するテンプレートコスト導出部と、
前記コストに基づいて前記対象ブロックのイントラ予測モードを選択するイントラ予測モード選択部を備え、
前記テンプレート導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記テンプレート領域の位置を指定し、前記参照サンプル導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記参照サンプルを導出することを特徴とする動画像復号装置。
【請求項2】
前記パラメータ復号部は、前記対象ブロックの幅および高さ、あるいは幅の対数値および高さの対数値、あるいは面積が共に所定の閾値以上である場合に前記テンプレートベースイントラモード導出フラグを復号することを特徴とする請求項1に記載の動画像復号装置。
【請求項3】
前記パラメータ復号部は、前記対象ブロックの幅および高さ、あるいは幅の対数値および高さの対数値、あるいは面積が共に所定の閾値以下である場合に前記テンプレートベースイントラモード導出フラグを復号することを特徴とする請求項1に記載の動画像復号装置。
【請求項4】
前記パラメータ復号部は、前記対象ブロックの幅および高さ、あるいは幅の対数値および高さの対数値、あるいは面積が共に所定の第1の閾値以上かつ所定の第2の閾値以下である場合に前記テンプレートベースイントラモード導出フラグを復号することを特徴とする請求項1に記載の動画像復号装置。
【請求項5】
前記パラメータ復号部は、前記対象ブロックの左上座標のxおよびy座標値が所定の閾値よりも大きな値である場合にテンプレートベースイントラモード導出フラグを復号することを特徴とする請求項1に記載の動画像復号装置。
【請求項6】
前記パラメータ復号部は、前記対象ブロックにおいてテンプレートベースイントラモードが不使用であるかテンプレートベースイントラモード導出フラグが所定の値である場合に前記対象ブロックのイントラサブブロックパーティショニングモード方向情報を復号することを特徴とする請求項1に記載の動画像復号装置。
【請求項7】
対象ブロックに隣接するテンプレート領域の画像を用いて、テンプレート画像を生成するテンプレート導出部と、
前記対象ブロック近傍のテンプレート参照領域の画像を用いて、参照サンプルを生成する参照サンプル導出部と、
前記参照サンプルを用いて、所定のイントラ予測モード候補に対するテンプレート予測画像を生成するテンプレート予測画像生成部と、
前記テンプレート予測画像と前記テンプレート画像からコストを導出するテンプレートコスト導出部と、
前記コストに基づいて前記対象ブロックのイントラ予測モードを選択するイントラ予測モード選択部と、
テンプレートベースイントラモード導出フラグを符号化するパラメータ符号化部とを備え、
前記テンプレート導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記テンプレート領域の位置を指定し、前記参照サンプル導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記参照サンプルを導出することを特徴とする動画像符号化装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、動画像復号装置および動画像符号化装置に関する。
【背景技術】
【0002】
動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置が用いられている。
【0003】
具体的な動画像符号化方式としては、例えば、H.264/AVCやHEVC(High-Efficiency Video Coding)、VVC(Versatile Video Coding)方式などが挙げられる。
【0004】
このような動画像符号化方式においては、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる符号化ツリーユニット(CTU:Coding Tree Unit)、符号化ツリーユニットを分割することで得られる符号化単位(符号化ユニット(Coding Unit:CU)と呼ばれることもある)、及び、符号化単位を分割することより得られる変換ユニット(TU:Transform Unit)からなる階層構造により管理され、CU毎に符号化/復号される。
【0005】
また、このような動画像符号化方式においては、通常、入力画像を符号化/復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像を入力画像(原画像)から減算して得られる予測誤差(「差分画像」または「残差画像」と呼ぶこともある)が符号化される。予測画像の生成方法としては、画面間予測(インター予測)、および、画面内予測(イントラ予測)が挙げられる。
【0006】
また、近年の動画像符号化及び復号の技術として非特許文献1が挙げられる。非特許文献1には、デコーダが隣接領域の画素を用いてイントラ方向予測モード番号を導出することにより予測画像を生成するテンプレートベースイントラモード導出(Template based Intra Mode Derivation, TIMD)予測が開示されている。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】K. Cao, N. Hu, V. Seregin, M. Karczewicz, Y. Wang, K. Zhang, L. Zhang, “EE2-related: Fusion for template-based intra mode derivation”, JVET-W0123
【発明の概要】
【発明が解決しようとする課題】
【0008】
非特許文献1のようなテンプレートベースイントラモード導出では、対象ブロックの付近のテンプレート参照領域の画像を用いて、イントラ予測モード候補に対する対象ブロックの隣接画像(テンプレート画像)からテンプレート予測画像を生成する。そして、テンプレート画像とテンプレート予測画像のコストが小さくなるイントラ予測モード候補を、対象ブロックのイントラ予測モードとして選択する。しかしながら、複数のイントラ予測モード候補に対するテンプレート予測画像の導出とコスト計算が必要であり、非常に計算量が大きいという課題がある。一方、計算量を削減すると予測精度が低下するという課題がある。
【0009】
本発明は、予測画像の精度を保ちながら、テンプレートベースイントラモード導出の複雑度を低減することを目的とする。
【課題を解決するための手段】
【0010】
本実施例の動画像復号装置は、テンプレート領域とテンプレート参照領域の画像を用いて、テンプレート画像と所定のイントラ予測モード候補に対するテンプレート予測画像を生成し、テンプレート予測画像とテンプレート画像から導出したコストに基づいて、対象ブロックのイントラ予測モードを選択するTIMD予測において、テンプレートベースイントラモード導出フラグを参照して、テンプレート領域とテンプレート参照領域の位置を決定することを特徴とする。
【発明の効果】
【0011】
本発明の一態様によれば、予測画像の精度を保ちながら、テンプレートベースイントラモード導出の複雑度を低減することができる。
【図面の簡単な説明】
【0012】
図1】本実施形態に係る画像伝送システムの構成を示す概略図である。
図2】符号化ストリームのデータの階層構造を示す図である。
図3】イントラ予測モードの種類(モード番号)を示す概略図である。
図4】動画像復号装置の構成を示す概略図である。
図5】イントラ予測画像生成部の構成を示す図である。
図6】対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。
図7】TIMD予測部の詳細を示す図である。
図8】TIMD予測に関するシンタックスの例である。
図9】timd_ref_modeのコンテキストを示す図である。
図10】対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。
図11】対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。
図12】対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。
図13】対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。
図14】対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。
図15】動画像符号化装置の構成を示すブロック図である。
図16】ISPモードに関するシンタックスの例である。
【発明を実施するための形態】
【0013】
(第1の実施形態)
以下、図面を参照しながら本発明の実施形態について説明する。
【0014】
図1は、本実施形態に係る画像伝送システム1の構成を示す概略図である。
【0015】
画像伝送システム1は、符号化対象画像を符号化した符号化ストリームを伝送し、伝送された符号化ストリームを復号し画像を表示するシステムである。画像伝送システム1は、動画像符号化装置(画像符号化装置)11、ネットワーク21、動画像復号装置(画像復号装置)31、及び動画像表示装置(画像表示装置)41を含んで構成される。
【0016】
動画像符号化装置11には画像Tが入力される。
【0017】
ネットワーク21は、動画像符号化装置11が生成した符号化ストリームTeを動画像復号装置31に伝送する。ネットワーク21は、インターネット(Internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)またはこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であってもよい。また、ネットワーク21は、DVD(Digital Versatile Disc:登録商標)、BD(Blu-ray Disc:登録商標)等の符号化ストリームTeを記録した記憶媒体で代替されてもよい。
【0018】
動画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、復号した1または複数の復号画像Tdを生成する。
【0019】
動画像表示装置41は、動画像復号装置31が生成した1または複数の復号画像Tdの全部または一部を表示する。動画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。ディスプレイの形態としては、据え置き、モバイル、HMD等が挙げられる。また、動画像復号装置31が高い処理能力を有する場合には、画質の高い画像を表示し、より低い処理能力しか有しない場合には、高い処理能力、表示能力を必要としない画像を表示する。
【0020】
<演算子>
本明細書で用いる演算子を以下に記載する。
【0021】
>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR、^はビットワイズXOR、|=はOR代入演算子であり、!は論理否定(NOT)、&&は論理積(AND)、||は論理和(OR)を示す。
【0022】
x?y:zは、xが真(0以外)の場合にy、xが偽(0)の場合にzをとる3項演算子である。
【0023】
Clip3(a,b,c)は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返し、c>bの場合にはbを返し、その他の場合にはcを返す関数である(ただし、a<=b)。
【0024】
Clip1Y(c)は、Clip3(a,b,c)においてa=0、b=(1<<BitDepthY)-1に設定した演算子である。BitDepthYは輝度のビット深度である。
【0025】
abs(a)はaの絶対値を返す関数である。
【0026】
Int(a)はaの整数値を返す関数である。
【0027】
Floor(a)はa以下の最大の整数を返す関数である。
【0028】
Log2(a)は2を底とする対数を返す関数である。
【0029】
Ceil(a)はa以上の最小の整数を返す関数である。
【0030】
a/dはdによるaの除算(小数点以下切り捨て)を表す。
【0031】
Min(a,b)はaとbのうち小さい値を返す関数である。
【0032】
<符号化ストリームTeの構造>
本実施形態に係る動画像符号化装置11および動画像復号装置31の詳細な説明に先立って、動画像符号化装置11によって生成され、動画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
【0033】
図2は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図2には、それぞれ、シーケンスSEQを既定する符号化ビデオシーケンス、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スライスデータを規定する符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニットを示す図が示されている。
【0034】
(符号化ビデオシーケンス)
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために動画像復号装置31が参照するデータの集合が規定されている。シーケンスSEQは、図2の符号化ビデオシーケンスに示すように、ビデオパラメータセットVPS(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。
【0035】
ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
【0036】
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために動画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れかを選択する。
【0037】
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために動画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
【0038】
(符号化ピクチャ)
符号化ピクチャでは、処理対象のピクチャPICTを復号するために動画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図2の符号化ピクチャに示すように、スライス0~スライスNS-1を含む(NSはピクチャPICTに含まれるスライスの総数)。
【0039】
なお、以下、スライス0~スライスNS-1のそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
【0040】
(符号化スライス)
符号化スライスでは、処理対象のスライスSを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスは、図2の符号化スライスに示すように、スライスヘッダ、および、スライスデータを含んでいる。
【0041】
スライスヘッダには、対象スライスの復号方法を決定するために動画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダに含まれる符号化パラメータの一例である。
【0042】
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。なお、インター予測は、単予測、双予測に限定されず、より多くの参照ピクチャを用いて予測画像を生成してもよい。以下、P、Bスライスと呼ぶ場合には、インター予測を用いることができるブロックを含むスライスを指す。
【0043】
なお、スライスヘッダは、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいてもよい。
【0044】
(符号化スライスデータ)
符号化スライスデータでは、処理対象のスライスデータを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスデータは、図2の符号化スライスヘッダに示すように、CTUを含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
【0045】
(符号化ツリーユニット)
図2の符号化ツリーユニットには、処理対象のCTUを復号するために動画像復号装置31が参照するデータの集合が規定されている。CTUは、再帰的な4分木分割(QT(Quad Tree)分割)、2分木分割(BT(Binary Tree)分割)あるいは3分木分割(TT(Ternary Tree)分割)により符号化処理の基本的な単位である符号化ユニットCUに分割される。BT分割とTT分割を合わせてマルチツリー分割(MT(Multi Tree)分割)と呼ぶ。再帰的な4分木分割により得られる木構造のノードのことを符号化ノード(Coding Node)と称する。4分木、2分木、及び3分木の中間ノードは、符号化ノードであり、CTU自身も最上位の符号化ノードとして規定される。
【0046】
(符号化ユニット)
図2の符号化ユニットに示すように、処理対象の符号化ユニットを復号するために動画像復号装置31が参照するデータの集合が規定されている。具体的には、CUは、CUヘッダCUH、予測パラメータ、変換パラメータ、量子化変換係数等から構成される。CUヘッダでは予測モード等が規定される。
【0047】
予測処理は、CU単位で行われる場合と、CUをさらに分割したサブCU単位で行われる場合がある。CUとサブCUのサイズが等しい場合には、CU中のサブCUは1つである。CUがサブCUのサイズよりも大きい場合、CUは、サブCUに分割される。例えばCUが8x8、サブCUが4x4の場合、CUは水平2分割、垂直2分割からなる、4つのサブCUに分割される。
【0048】
予測の種類(予測モード)は、イントラ予測と、インター予測の2つがある。イントラ予測は、同一ピクチャ内の予測であり、インター予測は、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
【0049】
変換・量子化処理はCU単位で行われるが、量子化変換係数は4x4等のサブブロック単位でエントロピー符号化してもよい。
【0050】
(予測パラメータ)
予測画像は、ブロックに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測とインター予測の予測パラメータがある。
【0051】
以下、イントラ予測の予測パラメータについて説明する。イントラ予測パラメータは、輝度予測モードIntraPredModeY、色差予測モードIntraPredModeCから構成される。図3は、イントラ予測モードの種類(モード番号)を示す概略図である。図に示すように、イントラ予測モードは、例えば67種類(0~66)存在する。例えば、プレーナ予測(0)、DC予測(1)、Angular予測(2~66)である。この他、色成分間線形モデル(CCLM: Cross Component Linear Model)予測や、マルチモード線形モデル(MMLM: Multi Mode Linear Model)予測といったリニアモデル(LM: Linear Model)予測を用いてもよい。さらに、色差ではLMモードを追加してもよい。
【0052】
(動画像復号装置の構成)
本実施形態に係る動画像復号装置31(図4)の構成について説明する。
【0053】
動画像復号装置31は、エントロピー復号部301、パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312、予測パラメータ導出部320を含んで構成される。なお、後述の動画像符号化装置11に合わせ、動画像復号装置31にループフィルタ305が含まれない構成もある。
【0054】
パラメータ復号部302は、さらに、ヘッダ復号部3020、CT情報復号部3021、及びCU復号部3022(予測モード復号部)を備えており、CU復号部3022はさらにTU復号部3024を備えている。これらを総称して復号モジュールと呼んでもよい。ヘッダ復号部3020は、符号化データからVPS、SPS、PPS、APSなどのパラメータセット情報、スライスヘッダ(スライス情報)を復号する。CT情報復号部3021は、符号化データからCTを復号する。CU復号部3022は符号化データからCUを復号する。TU復号部3024は、TUに予測誤差が含まれている場合に、符号化データからQP更新情報(量子化補正値)と量子化予測誤差(residual_coding)を復号する。
【0055】
TU復号部3024は、スキップモード以外(skip_mode==0)の場合に、符号化データからQP更新情報と量子化予測誤差を復号する。より具体的には、TU復号部3024は、skip_mode==0の場合に、対象ブロックに量子化予測誤差が含まれているか否かを示すフラグcu_cbpを復号し、cu_cbpが1の場合に量子化予測誤差を復号する。cu_cbpが符号化データに存在しない場合は0と導出する。
【0056】
予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
【0057】
予測パラメータ導出部320は、インター予測パラメータ導出部303及びイントラ予測パラメータ導出部304を含んで構成される。
【0058】
また、以降では処理の単位としてCTU、CUを使用した例を記載するが、この例に限らず、サブCU単位で処理をしてもよい。あるいはCTU、CUをブロック、サブCUをサブブロックと読み替え、ブロックあるいはサブブロック単位の処理としてもよい。
【0059】
エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロピー復号を行って、個々の符号(シンタックス要素)を復号する。エントロピー符号化には、シンタックス要素の種類や周囲の状況に応じて適応的に選択したコンテキスト(確率モデル)を用いてシンタックス要素を可変長符号化する方式CABAC(Context Adaptive Binary Arithmetic Coding)と、あらかじめ定められた表、あるいは計算式を用いてシンタックス要素を可変長符号化する方式がある。エントロピー復号部301は、セグメント(タイル、CTU行、スライス)の先頭で全てのCABAC状態を初期化する。エントロピー復号部301は、シンタックス要素をバイナリ列(Bin String)に変換し、Bin Stringの各ビットを復号する。コンテキストを用いる場合には、シンタックス要素の各ビットに対してコンテキストインデックスctxIncを導出し、コンテキストを用いてビットを復号し、用いたコンテキストのCABAC状態を更新する。コンテキストを用いないビットは、等確率(EP, bypass)で復号され、ctxInc導出やCABAC状態は省略される。
【0060】
エントロピー復号部301は、復号した符号をパラメータ復号部302に出力する。どの符号を復号するかの制御は、パラメータ復号部302の指示に基づいて行われる。
【0061】
(イントラ予測パラメータ導出部304の構成)
イントラ予測パラメータ導出部304は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してイントラ予測パラメータ、例えば、イントラ予測モードIntraPredModeを復号する。イントラ予測パラメータ導出部304は、復号したイントラ予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。イントラ予測パラメータ導出部304は、輝度と色差で異なるイントラ予測モードを導出してもよい。
【0062】
ループフィルタ305は、符号化ループ内に設けたフィルタで、ブロック歪やリンギング歪を除去し、画質を改善するフィルタである。ループフィルタ305は、加算部312が生成したCUの復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適応ループフィルタ(ALF)等のフィルタを施す。
【0063】
参照ピクチャメモリ306は、加算部312が生成したCUの復号画像を、対象ピクチャ及び対象CU毎に予め定めた位置に記憶する。
【0064】
予測パラメータメモリ307は、復号対象のCTUあるいはCU毎に予め定めた位置に予測パラメータを記憶する。具体的には、予測パラメータメモリ307は、パラメータ復号部302が復号したパラメータ及びエントロピー復号部301が分離した予測モードpredMode等を記憶する。
【0065】
予測画像生成部308には、予測モードpredMode、予測パラメータ等が入力される。また、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、予測パラメータと読み出した参照ピクチャ(参照ピクチャブロック)を用いてブロックもしくはサブブロックの予測画像を生成する。ここで、参照ピクチャブロックとは、参照ピクチャ上の画素の集合(通常矩形であるのでブロックと呼ぶ)であり、予測画像を生成するために参照する領域である。
【0066】
(イントラ予測画像生成部310)
予測モードpredModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ導出部304から入力されたイントラ予測パラメータと参照ピクチャメモリ306から読み出した参照画素を用いてイントラ予測を行う。
【0067】
具体的には、イントラ予測画像生成部310は、対象ピクチャ上の、対象ブロックから予め定めた範囲にある隣接ブロックを参照ピクチャメモリ306から読み出す。予め定めた範囲とは、対象ブロックの左、左上、上、右上の隣接ブロックであり、イントラ予測モードによって参照する領域は異なる。
【0068】
イントラ予測画像生成部310は、読み出した復号画素値とIntraPredModeが示す予測モードを参照して、対象ブロックの予測画像を生成する。イントラ予測画像生成部310は生成したブロックの予測画像を加算部312に出力する。
【0069】
イントラ予測モードに基づく予測画像の生成について以下で説明する。Planar予測、DC予測、Angular予測では、予測対象ブロックに隣接(近接)する復号済みの周辺領域を参照領域Rとして設定する。そして、参照領域R上の画素を特定の方向に外挿することで予測画像を生成する。例えば、参照領域Rは、予測対象ブロックの左と上(あるいは、さらに、左上、右上、左下)を含むL字型の領域として設定してもよい。
【0070】
(予測画像生成部の詳細)
次に、図5を用いてイントラ予測画像生成部310の構成の詳細を説明する。イントラ予測画像生成部310は、参照サンプルフィルタ部3103(第2の参照画像設定部)、予測部3104、および、予測画像補正部3105(予測画像補正部、フィルタ切替部、重み係数変更部)を備える。
【0071】
予測部3104は、参照領域R上の各参照画素(参照画像)、参照画素フィルタ(第1のフィルタ)を適用して生成したフィルタ済参照画像、イントラ予測モードに基づいて、予測対象ブロックの予測画像(補正前予測画像)を生成し、予測画像補正部3105に出力する。予測画像補正部3105は、イントラ予測モードに応じて予測画像を修正し、予測画像(補正済予測画像)を生成し、出力する。
【0072】
以下、イントラ予測画像生成部310が備える各部について説明する。
【0073】
(参照サンプルフィルタ部3103)
参照サンプルフィルタ部3103は、参照画像を参照して参照領域R上の各位置(x,y)の参照サンプルrecSamples[x][y]を導出する。また、参照サンプルフィルタ部3103は、イントラ予測モードに応じて、参照サンプルrecSamples[x][y]に参照画素フィルタ(第1のフィルタ)を適用して、参照領域R上の各位置(x,y)の参照サンプルrecSamples[x][y]を更新する(フィルタ済参照画像recSamples[x][y]を導出する)。具体的には、位置(x,y)とその周辺の参照画像にローパスフィルタを適用し、フィルタ済参照画像を導出する。なお、必ずしも全イントラ予測モードにローパスフィルタを適用する必要はなく、一部のイントラ予測モードに対してローパスフィルタを適用してもよい。なお、参照サンプルフィルタ部3103において参照領域R上の参照画像に適用するフィルタを「参照画素フィルタ(第1のフィルタ)」と呼称するのに対し、後述の予測画像補正部3105において予測画像を補正するフィルタを「ポジション依存フィルタ(第2のフィルタ)」と呼称する。
【0074】
(予測部3104の構成)
予測部3104は、イントラ予測モードと、参照画像、フィルタ済参照画素値に基づいて予測対象ブロックの予測画像を生成し、予測画像補正部3105に出力する。予測部3104は、内部にPlanar予測部31041、DC予測部31042、Angular予測部31043、LM予測部31044、MIP(Matrix-based Intra Prediction)部31045、TIMD予測部31047(Template-based Intra Mode Derivation, TIMD)を備えている。予測部3104は、イントラ予測モードに応じて特定の予測部を選択して、参照画像、フィルタ済参照画像を入力する。イントラ予測モードと対応する予測部との関係は次の通りである。
・Planar予測 ・・・・Planar予測部31041
・DC予測 ・・・・DC予測部31042
・Angular予測 ・・・・Angular予測部31043
・LM予測 ・・・・LM予測部31044
・行列イントラ予測・・MIP部31045
・TIMD予測・・・・・・TIMD予測部3104
【0075】
(Planar予測)
Planar予測部31041は、予測対象画素位置と参照画素位置との距離に応じて参照サンプルrecSamples[x][y]を線形加算して予測画像を生成し、予測画像補正部3105に出力する。
【0076】
(DC予測)
DC予測部31042は、参照サンプルrecSamples[x][y]の平均値に相当するDC予測値を導出し、DC予測値を画素値とする予測画像predSamples[x][y]を出力する。
【0077】
(Angular予測)
Angular予測部31043は、イントラ予測モードの示す予測方向(参照方向)の参照サンプルrecSamples[x][y]を用いて予測画像predSamples[x][y]を生成し、予測画像補正部3105に出力する。
IntraPredMode >= DIRの場合
ref[x] = recSamples[-1-refIdx+x][-1-refIdx] (x=0..cbWidth+refIdx+1)
さらにx=0..cbWidth-1,y = 0..cbHeight-1に対して以下を行う
iIdx = (((y+1+refIdx) * intraPredAngle) >> 5) + refIdx
iFact = ((y + 1 + refIdx) * intraPredAngle) & 31
predSamples[x][y] = Clip1(((Σ(fT[i]*ref[x+iIdx+i])) + 32) >> 6)
それ以外の場合(IntraPredMode < DIR)
ref[x] = recSamples[-1-refIdx][-1-refIdx+x] (x=0..cbHeight+refIdx+1)
さらにx=0..cbWidth-1,y = 0..cbHeight-1に対して以下を行う
iIdx = (((x+1+refIdx) * intraPredAngle) >> 5) + refIdx
iFact = ((x + 1 + refIdx) * intraPredAngle) & 31
predSamples[x][y] = Clip1(((Σ(fT[i]*ref[y+iIdx+i])) + 32) >> 6)
DIR, refIdxは所定の定数、例えばDIR=34, 66など。refIdx=0, 1, 2など。refIdxは、通常のangular予測の場合には、符号化データのシンタックスを復号して設定してもよい。また、後述のTIMD予測の予測画像生成の場合にはrefIdx=0と固定としてもよい。またテンプレート予測画像の生成に用いる場合には、refIdx=2もしくは4を用いてもよい。
【0078】
(LM予測)
LM予測部31044は、輝度の画素値に基づいて色差の画素値を予測する。具体的には、復号した輝度画像をもとに、線形モデルを用いて、色差画像(Cb、Cr)の予測画像を生成する方式である。LM予測の1つとして、CCLM(Cross-Component Linear Model)予測がある。CCLM予測は、1つのブロックに対し、輝度から色差を予測するための線形モデルを使用する予測方式である。
【0079】
(行列イントラ予測)
MIP部31045は、隣接領域から導出した参照サンプルrecSamples[x][y]と重み行列の積和演算により予測画像predSamples[x][y]を生成し、予測画像補正部3105に出力する。
【0080】
(予測画像補正部3105の構成)
予測画像補正部3105は、イントラ予測モードに応じて、予測部3104から出力された予測画像を修正する。具体的には、予測画像補正部3105は、予測画像の各画素に対し、参照領域Rと対象予測画素の位置に応じて、ポジションに依存した重み係数を導出する。そして、参照サンプルrecSamples[][]と予測画像predSamples[x][y]を重み付け加算(加重平均)することで、予測画像を修正した予測画像(補正済予測画像)Pred[][]を導出する。なお、一部のイントラ予測モードでは、予測画像補正部3105で予測画像predSamples[x][y]を補正せずに予測画像としてセットしてもよい。
【0081】
(MPMの導出方法)
イントラ予測パラメータ導出部304は、以下のようにMost Probable Mode(MPM)リストcandModeListを導出する。対象ブロックの左上座標を(x0,y0)、ブロック幅をcbWidth、ブロック高さをcbHeightとする。
【0082】
イントラ予測パラメータ導出部304は、対象ブロックの左に隣接するブロックAのintraPredModeをintraPredModeA、上に隣接するブロックBのintraPredModeをintraPredModeBを以下で導出してもよい。ブロックA(以下A)は座標(x0-1, y0+cbHeight-1)を含むブロックである。ブロックB(以下B)は座標(x0+cbWidth-1, y0-1)を含むブロックである。
【0083】
candModePredModeA = (Aが利用可能ではない || AがMODE_INTRA以外) ? INTRA_PLANAR : intraPredModeA
candModePredModeB = (Bが利用可能ではない || BがMODE_INTRA以外 || Bの位置が対象ブロックの上側CTU境界より上) ? INTRA_PLANAR : intraPredModeB
なお、CTU境界より上は、y0-1 < ((y0>>CtbLog2SizeY)<<CtbLog2SizeY)が真か否かで判定できる。ここでCtbLog2SizeY=Log2(CTUサイズ)である。符号化データ中のシンタックス要素sps_log2_ctu_size_minus5を復号してCtbLog2SizeY=sps_log2_ctu_size_minus5+5で導出してもよい。またX=AもしくはBとしcandModePredModeXに関する値を導出してもよい。
【0084】
candModeList[0] = candIntraPredModeA
candModeList[1] = candIntraPredModeB
minAB = Min(candIntraPredModeA, candIntraPredModeB)
candModeList[2] = 2 + ((minAB + 61) % 64)
candModeList[3] = 2 + ((minAB - 1) % 64)
candModeList[4] = 2 + ((minAB + 60) % 64
【0085】
(TIMD予測)
TIMD予測は、明示的にシグナルされないイントラ予測モードを用いて予測画像を生成する予測方式である。TIMD予測では、TIMD予測部31047は、対象ブロックの隣接領域であるテンプレート領域の画像(テンプレート画像tempSamples)を導出する。次に、テンプレート領域の付近の参照領域(テンプレート参照領域)の画像を用いて、複数のイントラ予測モード候補に対するテンプレート予測画像tpredSamplesを生成する。そして、tempSamplesとtpredSamplesのコスト(例えば差分絶対値和)が最小となるtpredSamplesの導出に用いたイントラ予測モード候補を、対象ブロックのTIMDのイントラ予測モードとして選択する。TIMD予測部31047はこのTIMDのイントラ予測モードを用いて予測画像を生成する。
【0086】
(実施例1)
図8(a)は、TIMDに関する符号化データのシンタックス例を示している。パラメータ復号部302は、符号化データからブロック毎にTIMDを用いるかどうかを示すフラグtimd_flagを復号する。対象ブロックのtimd_flagが0の場合、パラメータ復号部302は、イントラ予測モードに関するシンタックス要素intra_luma_mpm_flagを復号し、intra_luma_mpm_flagが0の場合、さらにintra_luma_mpm_reminderを復号する。これらのシンタックス要素は図示しない。intra_luma_mpm_flagはイントラ予測候補リストcandModeList[]からイントラ予測モードを導出するか否かを示すフラグである。intra_luma_mpm_idxはcandModeList[]を利用する場合にイントラ予測候補を指定するインデックスである。intra_luma_mpm_reminderはcandModeList[]を利用しない場合、candModeList[]に含まれないイントラ予測候補を選択するインデックスである。対象ブロックのtimd_flagが1の場合、パラメータ復号部302は、イントラ予測モードに関するシンタックス要素(intra_luma_mpm_flag、intra_luma_mpm_idx、intra_luma_mpm_reminder)を符号化データから復号しなくてもよい。
【0087】
パラメータ復号部302は、さらに対象ブロックのtimd_ref_modeを復号する。timd_ref_modeは、TIMD予測でのイントラ予測モード導出に用いるテンプレート参照領域の位置を示す。timd_ref_modeの意味は以下であってもよい。
【0088】
timd_ref_mode = 0 TIMD_MODE_TOP_LEFT(対象ブロックの上側と左側を使う)
timd_ref_mode = 2 TIMD_MODE_LEFT(対象ブロックの左側を使う)
timd_ref_mode = 3 TIMD_MODE_TOP(対象ブロックの上側を使う
【0089】
(参照領域の選択)
図6は、TIMD予測で参照するテンプレート領域RTとテンプレート参照領域(テンプレート参照サンプル領域)RTRSを示す。テンプレート領域はテンプレート画像に対応する領域である。テンプレート参照領域RTRSはテンプレート画像の予測画像であるテンプレート予測画像を生成する時に参照する領域である。
【0090】
timd_flagが1の場合、TIMD予測部31047は、対象ブロック付近のテンプレート参照領域RTRSの画像を用いて、イントラ予測モード候補に対するテンプレート予測画像を生成し、対象ブロックの好適なイントラ予測モードを選択する。
【0091】
エントロピー復号部301は、例えば、図8のシンタックス表に示すシンタックス要素timd_ref_modeを以下のようにパースしてもよい。timd_ref_modeはTIMDのテンプレート領域を選択するシンタックス要素である。
【0092】
エントロピー復号部301は、timd_flagが1の場合、符号化データからtimd_ref_modeをパースする(syn1)。TIMDのテンプレート領域の位置を変更する構成において、timd_ref_modeは、TIMD_MODE_TOP_LEFTモード、TIMD_MODE_TOPモード、TIMD_MODE_LEFTのいずれかであり各々0、1、2であってもよい。TIMD_MODE_TOP_LEFTは対象ブロックの上側と左側の領域をテンプレート領域として用いる。TIMD_MODE_TOPモードは対象ブロックの上側の領域をテンプレート領域として用いる。TIMD_MODE_LEFTは対象ブロックの左側の領域をテンプレート領域として用いる。
【0093】
図9(a)はtimd_ref_modeのバイナリゼーションの例を示す図である。binIdxはシンタックス要素中のビットの位置を示す変数、Bin0(binIdx==0)、Bin1(binIdx==1)は先頭ビットと次のビットを指す。
【0094】
Bin0:TIMD_MODE_TOP_LEFTとそれ以外を選択するビット。0の場合、TIMD_MODE_TOP_LEFTであることを示し、1の場合、TIMD_MODE_TOP_LEFTモードでないことを示す。
【0095】
Bin1:TIMD_MODE_TOPとTIMD_MODE_LEFTを選択するビット。0の場合、TIMD_MODE_TOPであることを示し、1の場合、TIMD_MODE_LEFTであることを示す。
なお、Bin0、Bin1で一つのシンタックス要素を構成するのではなく、Bin0、Bin1に別々のシンタックス要素を割り当て、timd_ref_modeの代わりに2つのシンタックス要素をパースしてもよい。例えば、Bin0に割り当てられたシンタックス要素をtimd_mode_flag、Bin1に割り当てられたシンタックス要素をtimd_mode_dirと呼んでもよい。この場合、エントロピー復号部301は、timd_mode_flag、timd_mode_dirからtimd_ref_modeを以下の式で導出してもよい。timd_mode_flag==0の場合、timd_mode_dirを復号せず、0に設定する。
【0096】
timd_ref_mode = ((timd_mode_flag == 0) ? 0 : 1) + timd_mode_dir
あるいは以下であってもよい。
【0097】
timd_ref_mode = timd_mode_flag + timd_mode_dir
この例では、TIMD_MODE_TOP_LEFTに1bit(例えば"0")、TIMD_MODE_TOPとTIMD_MODE_LEFTでは1bit(例えば"1")の次にさらにTIMD_MODE_TOPとTIMD_MODE_LEFTを区別するための1bit(例えば"0"はTIMD_MODE_TOPで"1"はTIMD_MODE_LEFTを示す)を割り当てる。timd_ref_modeのバイナリゼーションにおいて、選択率の高いTIMD_MODE_TOP_LEFTを使う場合、TIMD_MODE_LEFTを使う場合とTIMD_MODE_TOPを使う場合よりも短いビットを割り当てることにより平均符号量を短くして符号化効率を向上させる効果を奏する。
【0098】
図9(b)~(f)はパースにおけるtimd_ref_modeのコンテキスト(ctxInc)の設定を示す図である。コンテキストとは、CABACの確率(状態)を保持するための変数領域であり、コンテキストインデックスctxIdxの値(0, 1, 2, …)によって識別される。また常に0と1が等確率、つまり0.5, 0.5の場合をEP(Equal Probability)もしくはbypassと呼ぶ。この場合、特定のシンタックス要素に対して状態を保持する必要がないのでコンテキストを用いない。ctxIdxはctxIncを参照して導出される。
【0099】
図9(b)に示すように、エントロピー復号部301は、先頭のBin0の復号に対してコンテキストを用い(ctxInc=0)、Bin1に対してbypassを用いてtimd_ref_modeをパースしてもよい。Bin0はTIMD_MODE_TOP_LEFTか否かを示すビット、Bin1はTIMD_MODE_LEFTかTIMD_MODE_TOPか否かを示すビットである。上記構成によれば、TIMD_MODE_LEFTとTIMD_MODE_TOPとの選択にコンテキストを用いないため、メモリを低減できる効果を奏する。
【0100】
図9(c)に示すように、エントロピー復号部301は、先頭のBin0の復号に対してコンテキストを用い(ctxInc=0)、Bin1に対して別のコンテキスト(ctxInc=1)を用いて、符号化データからtimd_ref_modeをパースしてもよい。上記構成によれば、全ての方向に対してコンテキストを用いるために適応的に符号化することが可能であり、性能が向上する効果を奏する。
【0101】
図9(d)に示すように、エントロピー復号部301は、対象ブロックの形状に応じて、Bin1に対して複数のコンテキスト(ctxInc=1,2,3)を用い、符号化データからtimd_ref_modeをパースしてもよい。例えば以下のように対象ブロックの幅cbWidthと高さcbHeightが等しい場合、横長の場合、縦長の場合に異なるコンテキストの値を割り当ててもよい。
【0102】
ctxInc = (cbWidth == cbHeight) ? 1 : (cbWidth < cbHeight) ? 2 : 3
なお式および値は上記に限定されず、判定の順序や値を変更してもよい。例えば以下であってもよい。
【0103】
ctxIdx = (cbWidth > cbHeight) ? 1 : (cbWidth < cbHeight) ? 2 : 3
上記構成によれば、ブロックの形状によって、例えば横長と縦長で、異なるコンテキストを用いるために適応的に符号化することが可能であり、性能が向上する効果を奏する。
【0104】
図9(e)に示すように、エントロピー復号部301は、対象ブロックの形状に応じて、Bin1に対して図9(d)とは異なるコンテキスト(ctxInc=1,2)を用いて符号化データからtimd_ref_modeをパースしてもよい。ブロックの形状が正方形の場合にはbypassを用いて、timd_ref_modeをパースしてもよい。
【0105】
ctxIdx = (cbWidth == cbHeight) ? bypass : (cbWidth < cbHeight) ? 1 : 2
なお式および値は上記に限定されず、判定の順序や値を変更してもよい。例えば以下であってもよい。
【0106】
ctxIdx = (cbWidth > cbHeight) ? 1 : (cbWidth < cbHeight) ? 2 : bypass
TIMDモード(timd_ref_mode)は、第1ビットと第2ビットから構成され、第1ビットはTIMDのテンプレート領域が対象ブロックの上側と左側の双方かどうか、第2ビットはTIMDのテンプレート領域が対象ブロックの左側もしくは上側かどうかを選択してもよい。
【0107】
図9(f)に示すように、エントロピー復号部301は、対象ブロックの形状に応じて、Bin1に対して図9(d)、(e)と異なるコンテキスト(ctxInc=1,2)を用い、符号化データからtimd_ref_modeをパースしてもよい。ブロックの形状が正方形の場合には所定のコンテキスト(例えば1)、それ以外の場合にブロック形状が正方形の場合とは異なるコンテキスト(例えば2)を用いて、timd_ref_modeをパースしてもよい。
【0108】
ctxIdx = (cbWidth == cbHeight) ? 1 : 2
このとき、ブロック形状が正方形ではない場合には、cbWidth>cbHeightであるのか、cbHeight<cbWidthに応じて、Bin1のバイナリの値をスワップ(1を0に、0を1にする。たとえば1-Bin1)した値を使いtimd_ref_modeを復号する。つまり以下のようにtimd_ref_modeを導出してもよい。
【0109】
timd_ref_mode = ((Bin0 == 0) ? 0 : 1) + ((cbWidth == cbHeight) ? Bin1 : 1-Bin1)
上述の2つのシンタックスを用いる場合には以下のようにtimd_ref_modeを導出する。
【0110】
timd_ref_mode = ((timd_mode_flag == 0) ? 0 : 1) + ((cbWidth == cbHeight) ? timd_mode_dir : 1-timd_mode_dir)
なお、上述のcbWidth==cbHeightは、cbWidth!=cbHeightとしてもよい。
【0111】
上記構成によれば、対象ブロックの形状によって、例えば対象ブロックが正方形か否か(もしくは/かつ横長か縦長か)で異なるコンテキストを用いるため、ブロックの特徴に合わせて適応的に短い符号で符号化することが可能であり、性能が向上する。また例えば正方形の場合、同時にコンテキストを用いない場合はメモリを低減する効果を奏する。
【0112】
なお、エントロピー復号部301は、テンプレート領域の左参照位置(x0-refIdxW-1, y0)、上参照位置(x0, y0-refIdxH-1)が画面端、タイルの端、スライスの端などテンプレート領域が利用できない場合、timd_ref_modeの復号を省略し、timd_ref_mode=TIMD_MODE_TOP、あるいは、timd_ref_mode=TIMD_MODE_LEFTと設定してもよい。なおx0, y0は対象ブロックの左上位置、refIdxW, refIdxHはテンプレート予測領域のライン数(幅または高さ)に係る変数である。refIdxW, refIdxHは図8(c)に示すようにintra_luma_ref_idxを用いて設定してもよい。intra_luma_ref_idxは参照サンプルの位置を示すシンタックスであり、パラメータ復号部302が符号化データから復号する。
【0113】
refIdxW = refIdxH = intra_luma_ref_idx
別の構成として、対象ブロックの上側隣接領域のみがテンプレート領域として利用できる場合はtimd_ref_mode=TIMD_MODE_TOPとし、対象ブロックの左側隣接領域のみがテンプレート領域として利用できる場合はtimd_ref_mode=TIMD_MODE_LEFTと設定してもよい。
【0114】
(timd_ref_modeの復号判定条件1)
エントロピー復号部301は、timd_ref_modeを図8(b)に示す条件を満たす場合に復号してもよい。timd_ref_modeはTIMDのテンプレート領域を選択するシンタックス要素である。対象ブロックの幅cbWidthと高さcbHeightの積が所定の閾値THSIZE以上の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの積がTHSIZE未満の場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZEは例えば、16,32,64など。
【0115】
if (cbWidth * cbHeight >= THSIZE) timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
上記と異なる条件式の例としては、対象ブロックの幅cbWidthと高さcbHeightの積が所定の閾値THSIZE4以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの積がTHSIZE4より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE4は、例えば、128,256,512など。
【0116】
if (cbWidth * cbHeight <= THSIZE4) timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
さらに、これらの条件を組み合わせた例としては、対象ブロックの幅cbWidthと高さcbHeightの積が所定の閾値THSIZE以上かつTHSIZE4以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの積がTHSIZE未満またはTHSIZE4より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。
【0117】
if (cbWidth * cbHeight >= THSIZE && cbWidth * cbHeight <= THSIZE4)
timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEF
【0118】
(timd_ref_modeの復号判定条件2)
上記の構成の代わりに以下でもよい。エントロピー復号部301は、cbWidthとcbHeightの和が所定の閾値THSIZE2以上の場合に、timd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの和がTHSIZE2未満の場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE2は例えば、8,12,16など。
【0119】
if (cbWidth + cbHeight >= THSIZE2) timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
上記と異なる条件式の例としては、対象ブロックの幅cbWidthと高さcbHeightの和が所定の閾値THSIZE5以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの和がTHSIZE5より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE5は、例えば、48,64,96など。
【0120】
if (cbWidth + cbHeight <= THSIZE5) timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
さらに、これらの条件を組み合わせた例としては、対象ブロックの幅cbWidthと高さcbHeightの和が所定の閾値THSIZE2以上かつTHSIZE5以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの和がTHSIZE2未満またはTHSIZE5より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。
【0121】
if (cbWidth + cbHeight >= THSIZE2 && cbWidth + cbHeight <= THSIZE5)
timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEF
【0122】
(timd_ref_modeの復号判定条件3)
以下のように対象ブロックの幅と高さの対数値をもとに条件判定してもよい。エントロピー復号部301は、Log2(cbWidth)とlog2(cbHeight)の和が所定の閾値THSIZE3以上の場合に、timd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(log2(cbWidth)とlog2(cbHeight)の和がTHSIZE3未満の場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE3は例えば、4,5,6など。
【0123】
if (log2(cbWidth) + log2(cbHeight) >= THSIZE3) timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
上記と異なる条件式の例としては、Log2(cbWidth)とLog2(cbHeight)の和が所定の閾値THSIZE6以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(Log2(cbWidth)とLog2(cbHeight)の和がTHSIZE6より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE6は、例えば、7,8,9など。
【0124】
if (log2(cbWidth) + log2(cbHeight) <= THSIZE6) timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
さらに、これらの条件を組み合わせた例としては、Log2(cbWidth)とLog2(cbHeight)の和が所定の閾値THSIZE3以上かつTHSIZE6以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(Log2(cbWidth)とLog2(cbHeight)の和がTHSIZE3未満またはTHSIZE6より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。
【0125】
if (log2(cbWidth) + log2(cbHeight) >= THSIZE3 && log2(cbWidth) + log2(cbHeight) <= THSIZE6)
timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEF
【0126】
(timd_ref_modeの復号判定条件4)
以下のように対象ブロックの幅と高さをもとに条件判定してもよい。エントロピー復号部301は、cbWidthとcbHeightがともに所定の閾値THSIZE7以上の場合に、timd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightのいずれかがTHSIZE7未満の場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE7は例えば、8,16,32など。
【0127】
if (cbWidth >= THSIZE7 && cbHeight >= THSIZE7) timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
上記と異なる条件式の例としては、対象ブロックの幅cbWidthと高さcbHeightがともに所定の閾値THSIZE8以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightのいずれかがTHSIZE8より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE8は例えば、32,48,64など。
【0128】
if (cbWidth <= THSIZE8 && cbHeight <= THSIZE8) timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
さらに、これらの条件を組み合わせた例としては、cbWidthとcbHeightがともに所定の閾値THSIZE7以上かつTHSIZE8以下の場合に、エントロピー復号部301はtimd_ref_modeを復号するようにしてもよい。例えばこの処理は以下のように表してもよい。
【0129】
if (cbWidth >= THSIZE7 && cbWidth <= THSIZE8 && cbHeight >= THSIZE7 && cbHeight <= THSIZE8)
timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEF
【0130】
(timd_ref_modeの復号判定条件5)
以下のように対象ブロックの座標をもとに条件判定してもよい。エントロピー復号部301は、対象ブロックの左上座標x0とy0がともに所定の閾値THSIZE9より大きい場合に、timd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(x0とy0のいずれかがTHSIZE8以下の場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE9は例えば、4,8,16など。
【0131】
if (x0 > THSIZE9 && y0 > THSIZE9) timd_ref_modeを復号
otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
つまり、画面(またはセグメント)の境界に近い場合には、十分な参照領域が得られないので、TIMDの導出方法を選択するtimd_ref_modeの復号を行わず、TIMD_MODE_TOP_LEFTを設定して固定的に処理をしてもよい。なお、(x0, y0)を画面内座標ではなく、セグメント(画面、スライス、タイル)内座標とし、セグメント境界からの距離で判定をしてもよい。
【0132】
以上のように、1つ以上の閾値を用いて長さや面積、または座標を制限することで、条件に該当する対象ブロックにおけるテンプレートベースイントラ予測の処理を低減することができ、処理速度を高速化する効果を奏する。
【0133】
(イントラサブブロックパーティショニングと併用する構成例)
動画像復号装置31がイントラサブブロックパーティショニング(Intra subblock partitioning, ISP)に対応している場合の、別の構成例を示す。
【0134】
パラメータ復号部302は、TIMDに関するシンタックス要素(timd_flag, timd_ref_mode
)を復号した後で、対象ブロック毎にISPを適用するかどうかを示すフラグisp_mode_flagを符号化データから復号する。対象ブロックのisp_mode_flagが0の場合、パラメータ復号部302は、ISPに関するシンタックス要素(isp_mode_dir、ISPモード方向情報)を符号化データから復号しなくてもよい。そしてisp_mode_flag=0に設定する。対象ブロックのisp_mode_flagが1の場合、パラメータ復号部302は、図16(a)のシンタックス例に示すように、timd_mode==0またはtimd_ref_mode==0の場合にのみ、ISPに関するシンタックス要素isp_mode_dirを復号する。isp_mode_dirは、ISP使用時のブロック分割の方向(境界線の向き)を示す。isp_mode_dirの意味は以下であってもよい。
【0135】
isp_mode_dir = 0 HOR_INTRA_PARTITIONS(水平分割)
isp_mode_dir = 1 VER_INTRA_PARTITIONS(垂直分割)
それ以外の場合、timd_mode==1かつtimd_ref_mode==1(TIMD_MODE_TOP)であればisp_mode_dir=0(HOR_INTRA_PARTITIONS、水平分割)とし、timd_mode==1かつtimd_ref_mode==2(TIMD_MODE_LEFT)であればtimd_mode_dir = 1(VER_INTRA_PARTITIONS、垂直分割)とする。すなわち、TIMD_MODE_TOPとTIMD_MODE_LEFTに対して選択可能なISP分割方向を、それぞれ、水平分割と垂直分割に限定してもよい。
【0136】
対象ブロックをISPで水平分割すれば、各サブブロック内の領域を、TIMD_MODE_TOPでテンプレート領域として用いることができる。これらの領域はISP分割をしない場合の対象ブロックの上側隣接領域とは異なるため、より精度の高い予測画像導出につながる可能性がある。一方、ISPの水平分割に対してTIMD_MODE_LEFTで用いられるテンプレート領域は、ISPを使わない場合の左隣接領域と同じであり、予測画像もISPを使わない場合と異なる可能性が低い、すなわち選択肢として冗長である。従って、timd_ref_modeの値に従ってisp_mode_dirを限定することにより符号化効率向上の効果を奏する。ISPの垂直分割についても同様のことが言える。
【0137】
エントロピー復号部301は、isp_mode_flagが1の場合、timd_modeが0またはtimd_ref_modeが0であれば、符号化データからisp_mode_dirをパースする。isp_mode_flagが1であっても、timd_mode!=0かつtimd_ref_mode==1の場合はisp_mode_dirをパースせずisp_mode_dir=0と推定する。timd_mode!=0かつtimd_ref_mode==2の場合はisp_mode_dirをパースせずisp_mode_dir=1と推定する。
【0138】
ISPを用いる構成において、isp_mode_dirは水平分割を示すHOR_INTRA_PARTIOTIONSまたは垂直分割を示すVER_INTRA_PARTITIONSのいずれかであり各々0,1であってもよい。シンタックス要素isp_mode_flagとisp_mode_dirをまとめて、一つのシンタックス要素isp_modeとしてもよい。isp_modeの値は、以下であってもよい。
【0139】
isp_mode = 0 ISPを用いない(ISP_NO_SPLIT)
isp_mode = 1 ISPを用いる(水平分割、ISP_HOR_SPLIT)
isp_mode = 2 ISPを用いる(垂直分割、ISP_VER_SPLIT)
一つのシンタックス要素isp_modeとして扱う場合には、isp_modeのBin0(binIdx=0)がisp_mode_flagに相当し、Bin0が1(ISPを用いる)の場合にのみBin1(binIdx=1)がisp_mode_dirに相当する。エントロピー復号部301は、isp_mode_flagおよびisp_mode_dirからisp_modeを以下の式で導出してもよい。
【0140】
isp_mode = ((isp_mode_flag == 0) ? 0 : 1) + isp_mode_dir
isp_mode = isp_mode_flag + isp_mode_dir なお、水平ISPおよび垂直ISPが指定された場合、イントラ予測画像生成部310は、対象ブロックをそれぞれ水平または垂直方向の境界によりサブブロックに分割(例えば4分割)し、対象ブロック内で共通のイントラ予測パラメータを用いて順に各サブブロックの予測画像を導出する。
【0141】
具体的には、isp_modeが0(ISP_NO_SPLIT)の場合、CUをこれ以上分割せずにイントラ予測を行う。isp_modeが1(ISP_HOR_SPLIT)の場合、CUを垂直方向に2から4つのサブブロックに分割して、サブブロック単位でイントラ予測と変換係数復号、逆量子化・逆変換を行う。isp_modeが2(ISP_VER_SPLIT)の場合、CUを水平方向に2から4つのサブブロックに分割して、サブブロック単位でイントラ予測と変換係数復号、逆量子化・逆変換を行う。サブブロックの分割数NumIntraSubPartは以下の式で導出する。
【0142】
NumIntraSubPart = (nTbW == 4 && nTbH == 8) || (nTbW == 8 && nTbH == 4) ? 2 : 4
サブブロックの幅nWと高さnHと、水平方向、垂直方向の分割数numPartsX, numPartYは以下で導出する。
【0143】
nW = (isp_mode == ISP_VER_SPLIT) ? nTbW / NumIntraSubPart : nTbW
nH = (isp_mode == ISP_HOR_SPLIT) ? nTbH / NumIntraSubPart : nTbH
numPartsX = (isp_mode == ISP_VER_SPLIT) ? NumIntraSubPart : 1
numPartsY = (isp_mode == ISP_HOR_SPLIT) ? NumIntraSubPart : 1
ここでnTbW, nTbHはCU(あるいはTU)の幅と高さである。
【0144】
パラメータ復号部302は、エントロピー復号部301にどのシンタックス要素をパースするかを通知する。また、エントロピー復号部301がパースしたシンタックス要素を予測パラメータ導出部320に出力する。
【0145】
上記の構成(条件1、条件2、条件3)によれば、テンプレート領域が小さい小ブロックにおいて、TIMD_MODE_TOP_LEFTを用いることにより、コスト計算に使用する画素数を多くして、予測精度を向上させることができる。また小ブロックではtimd_ref_modeを符号化しないので、符号化データのビット量を削減することもできる。
【0146】
上記構成により、適切なテンプレート領域をシグナルすることにより、予測効率が高まり、符号化効率を向上させることができる。また、不適切なテンプレート予測画像の生成、コスト計算を省略することができるため、計算量を削減することができる。
【0147】
図7は、本実施形態におけるTIMD予測部31047の構成を示している。TIMD予測部31047は、参照サンプル導出部4701、テンプレート導出部4702、イントラ予測部4703、イントラ予測モード候補導出部4711、テンプレート予測画像生成部4712、テンプレートコスト導出部4713と、イントラ予測モード選択部4714から構成される。なお、イントラ予測モード候補導出部4711、テンプレート予測画像生成部4712、テンプレートコスト導出部4713を総称してテンプレートイントラ予測モード導出装置4710と呼んでもよい。
【0148】
timd_flagが1の場合、TIMD予測部31047は、テンプレート領域の画像を精度よく予測するイントラ予測モードを用いて予測画像を生成する。具体的には、TIMD予測部31047は以下の手順を実行する。
(STEP1)所定のイントラ予測候補と指定されたテンプレート参照領域RTRSを用いてテンプレート領域の画像を予測する。所定の予測モードは、後述のMPMに含まれる予測モード、TIMD以外のデコード側イントラモード導出(DIMD、Decoder-side Intra Mode Derivation)により導出されたイントラ予測モードを含んでもよい。
(STEP2)導出されたテンプレート予測画像と、テンプレート参照領域の画像の差異の大きさを表すコスト値を導出する。
(STEP3)コスト値が小さい、すなわち予測精度が高いと判定されたイントラ予測モードを選択する。
(STEP4) (STEP3)で導出されたイントラ予測モードを用いて予測画像を生成する。
【0149】
上記構成によれば、適切なテンプレート参照領域RTRSをシンタックス要素によってシグナルすることにより、符号量を削減することができる。また、不適切なテンプレート参照領域の画素を用いたテンプレート予測画像の生成、コスト計算が不要になるので、処理量を削減することができる。
【0150】
以下では図7に示したTIMD予測部31047の各部における処理について、より詳細に説明する。
【0151】
(STEP1)テンプレート領域の画像を予測
イントラ予測モード候補導出部4711は、まず、対象ブロックの隣接ブロックのイントラ予測モードから、イントラ予測モード候補のリストtimdModeList[]を導出する。例えばtimdModeListとしてMPMリストcandModeList[]を用いてもよい。
【0152】
timdModeList[i] = candModeList[i] (i=0..candModeListの要素数-1)
テンプレート導出部4702は、対象ブロックのテンプレート画像tempSamplesを導出する。図6に示すように、対象ブロックに隣接するテンプレート領域RTから導出してもよい。ここでは、テンプレート領域RTは1画素幅のL字型の既復号画素recSamplesである。
【0153】
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1、および、i=-tW..-1, j=0..cbHeight-1)
tempSamples導出に用いるrecSamples上の領域をテンプレート領域RTと呼び、座標(i, j)の集合で表現する。tW、tHはテンプレート画像の幅と高さである。つまりRT={{i=0..cbWidth-1, j=-tH..-1}, {i=-tW..-1, j=0..cbHeight-1}}。図6では(tW,tH)=(1,1)である。またtempSamplesを用いずに、テンプレート領域に対応する復号画像の配列recSamplesをテンプレート画像として用いてもよい(この場合、tempSamplesの位置する領域をテンプレート領域と呼ぶ
【0154】
(テンプレート画像の例1:対象ブロックの左上の領域を含まない例)
図10図14は、図6とは異なるテンプレート領域RTとテンプレート参照領域RTRSの例を示す図である。
【0155】
テンプレート画像はL字型の形状以外であってもよい。
【0156】
図10(はL字型の形状(図の左側)以外に、テンプレート領域が対象ブロックの左側の領域RL(図の真ん中)、対象ブロックの上側の領域RT(図の右側)である例を示す。この場合、テンプレート画像は下式で設定される。
【0157】
RL:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=0..cbHeight-1)
RT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1
【0158】
(テンプレート画像の例2:対象ブロックの左上の領域を含む例)
図11はL字型の形状(図の左側)以外に、テンプレート領域が対象ブロックの左側と左上を含む領域RL(図の真ん中)、対象ブロックの上側と左上RTを含む領域(図の右側)である例を示す。この場合、テンプレート画像は下式で設定される。
【0159】
RL:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=-tH..cbHeight-1)
RT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..cbWidth-1, j=-tH..-1
【0160】
(テンプレート画像の例3:対象ブロックの左上の領域を含まず、左下、右上に拡張する例)
図12はL字型の形状(図の左側)以外に、テンプレート領域が対象ブロックの左側と左下を含む領域RL_EXT(図の真ん中)、対象ブロックの上側と右上を含む領域RT_EXT(図の右側)である例を示す。この場合、テンプレート画像は下式で設定される。
【0161】
RL_EXT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=0..cbHeight+tExtH-1)
RT_EXT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth+tExtW-1, j=-tH..-1)
tExtW、tExtHはテンプレート画像を右上に拡張した幅、左下に拡張した高さである。tExtWとtExtHは、例えば、(tExtW, tExtH)=(4, 4)などの定数値や(tExtW, tExtH)=(cbWidth, cbHeight)、(tExtW, tExtH)=(cbWidth<<1, cbHeight<<1)、あるいは、(tExtW, tExtH)=(cbWidth>>1, cbHeight>>1)などの対象ブロックサイズから導出する値であってもよい。
【0162】
(テンプレート画像の例4:対象ブロックの左上の領域を含み、左下、右上に拡張する例)
図13はL字型の形状(図の左側)以外に、テンプレート領域が対象ブロックの左側と左上と左下を含む領域RL_EXT(図の真ん中)、対象ブロックの上側と左上と右上を含む領域RT_EXT(図の右側)である例を示す。この場合、テンプレート画像は下式で設定される。
【0163】
RL_EXT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=-tH..cbHeight+tExtH-1)
RT_EXT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..cbWidth+tExtW-1, j=-tH..-1
【0164】
(テンプレート画像を選択する例)
テンプレート領域は1種類ではなく、timd_ref_modeを参照して複数のテンプレート領域から1つを選択してもよい。
【0165】
例えばtimd_ref_modeはTIMD_MODE_TOP_LEFT、TIMD_MODE_LEFT、TIMD_MODE_TOPのいずれかを示す場合を説明する。図10図11図12図13において、timd_ref_mode=TIMD_MODE_TOP_LEFTは、テンプレート領域が図の左端のように対象ブロックの左側と上側の領域を含むことを示す。同様に、timd_ref_mode=TIMD_MODE_LEFTは、テンプレート領域が図の真ん中のように対象ブロックの少なくとも左側の領域を含むことを示す。同様に、timd_ref_mode=TIMD_MODE_TOPは、テンプレート領域が図の左端のように対象ブロックの少なくとも上側の領域を含むことを示す。テンプレート領域またはその参照サンプルが画像領域内に設定できない場合、画像領域内にあるテンプレート領域およびその参照サンプルだけを用いるよう、TIMD予測部31047は、timd_ref_modeの値を変更してもよい。たとえば、対象ブロックの左上座標が(x0,y0)=(8,0)などy座標が0の場合には、上側のテンプレート領域が使用できないため、timd_ref_mode = TIMD_MODE_LEFTとするとよい。同様に対象ブロックの左上座標が(x0,y0)=(0,8)などx座標が0の場合には、左側のテンプレート領域が使用できないため、timd_ref_mode = TIMD_MODE_TOPとするとよい。
【0166】
テンプレート導出部4702は、timd_ref_modeを参照して3つのテンプレート領域のいずれかを選択し、テンプレート画像を生成する。
【0167】
例えば図10の場合、テンプレート導出部4702は、テンプレート画像を下式のように生成する。
【0168】
if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1、および、i=-tW..-1, j=0..cbHeight-1)
else if (timd_ref_mode==TIMD_MODE_LEFT)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=0..cbHeight-1)
else if (timd_ref_mode==TIMD_MODE_TOP)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1)
例えば図11の場合、テンプレート導出部4702は、テンプレート画像を下式のように生成する。
【0169】
if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1、および、i=-tW..-1, j=0..cbHeight-1)
else if (timd_ref_mode==TIMD_MODE_LEFT)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=-tH..cbHeight-1)
else if (timd_ref_mode==TIMD_MODE_TOP)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..cbWidth-1, j=-tH..-1)
例えば図12の場合、テンプレート導出部4702は、テンプレート画像を下式のように生成する。
【0170】
if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1、および、i=-tW..-1, j=0..cbHeight-1)
else if (timd_ref_mode==TIMD_MODE_LEFT)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=0..cbHeight+tExtH-1)
else if (timd_ref_mode==TIMD_MODE_TOP)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth+tExtW-1, j=-tH..-1)
例えば図13の場合、テンプレート導出部4702は、テンプレート画像を下式のように生成する。
【0171】
if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1、および、i=-tW..-1, j=0..cbHeight-1)
else if (timd_ref_mode==TIMD_MODE_LEFT)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=-tH..cbHeight+tExtH-1)
else if (timd_ref_mode==TIMD_MODE_TOP)
tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..cbWidth+tExtW-1, j=-tH..-1)
tExtW、tExtHはテンプレート画像を右上に拡張した幅、左下に拡張した高さである。
【0172】
参照サンプル導出部4701は、テンプレート参照領域RTRSから、参照サンプルrefUnitを導出する。なお、参照サンプル導出部4701の動作を参照サンプルフィルタ部3103が行う構成であってもよい。
【0173】
refUnit[x][y] = recSamples[x0+x][y0+y]
ここで、x=-tW-1, y=-1-tH..refH-1、および、x=-tW..refW-1, y=-1-tHの範囲をとる。tW、tHはテンプレート領域の幅、および、高さであり、図6では(tW,tH)=(1,1)である。refW=cbWidth*2、refH=cbHeight*2であるが、これに限らず、refW=cbWidth、refH=cbHeight、あるいはrefW=cbWidth*4、refH=cbHeight*4であってもよい。
【0174】
(テンプレート参照領域RTRSの例1:対象ブロックの左上を含まない例)
timd_ref_modeがTIMD_MODE_LEFTあるいはTIMD_MODE_TOPの場合、テンプレート参照領域RTRSは、テンプレート画像に従って変化する。
【0175】
図10(a)、図11(a)、図12(a)、図13(a)に示すように、timd_ref_modeがTIMD_MODE_LEFTの場合、テンプレート参照領域RTRSは対象ブロックの左側の領域だけである。timd_ref_modeがTIMD_MODE_TOPの場合、テンプレート参照領域RTRSは対象ブロックの上側の領域だけである。参照サンプル導出部4701はテンプレート参照領域を以下のように設定する。
【0176】
if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
else if (timd_ref_mode==TIMD_MODE_LEFT)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW-1, y=yRLTL..yRLTL+refH)
else if (timd_ref_mode==TIMD_MODE_TOP)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRTTL..xRTTL+refW, y=-tH-1)
(xRLTL,yRLTL)はテンプレート画像RLの左上座標、(xRTTL,yRTTL)はテンプレート画像RTの左上座標である。例えば、図10(a)では(xRLTL,yRLTL)=(-tW,0)、(xRTTL,yRTTL)=(0,-tH)である。図11(a)では(xRLTL,yRLTL)=(-tW,-tH)、(xRTTL,yRTTL)=(-tW,-tH)である。
あるいは参照サンプル導出4701は下式を用いてもよい。
【0177】
if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
else if (timd_ref_mode==TIMD_MODE_LEFT)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW-1, y=yRLETL..yRLETL+refH)
else if (timd_ref_mode==TIMD_MODE_TOP)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRTETL..xRTETL+refW, y=-tH-1)
(xRLETL,yRLETL)はテンプレート画像RL_EXTの左上座標であり、(xRTETL,yRTETL)はテンプレート画像RT_EXTの左上座標である。
例えば、図12(a)では(xRLETL,yRLETL)=(-tW,0)、(xRTETL,yRTETL)=(0,-tH)である。図13(a)では(xRLETL,yRLETL)=(-tW,-tH)、(xRTETL,yRTETL)=(-tW,-tH)である。
【0178】
上記構成により、テンプレート参照領域の利用可能性をチェックする必要がない。従って、計算量を抑制することができる。
【0179】
(テンプレート参照領域RTRSの例2:対象ブロックの左上を含む例)
図10(b)、図11(b)、図12(b)、図13(b)に示すように、テンプレート参照領域は対象ブロックの左側および上側の領域を含んでもよい。参照サンプル導出部4701はテンプレート参照領域を以下のように設定する。rWはtimd_ref_modeがTIMD_MODE_LEFTの場合のテンプレート参照領域の幅、rHはtimd_ref_modeがTIMD_MODE_TOPの場合のテンプレート参照領域の高さである。
【0180】
if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
else if (timd_ref_mode==TIMD_MODE_LEFT)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRLTL..xRLTL+rW, y=yRLTL-1、および、x=xRLTL-1, y=yRLTL-1..yRLTL-1+refH)
else if (timd_ref_mode==TIMD_MODE_TOP)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRTTL..xRTTL+refW, y=yRTTL-1、および、x=xRTTL-1, y=yRTTL-1..yRTTL-1+rH)
(xRLTL,yRLTL)はテンプレート画像RLの左上座標、(xRTTL,yRTTL)はテンプレート画像RTの左上座標である。例えば、図10(b)では(xRLTL,yRLTL)=(-tW,0)、(xRTTL,yRTTL)=(0,-tH)である。図11(b)では(xRLTL,yRLTL)=(-tW,-tH)、(xRTTL,yRTTL)=(-tW,-tH)である。あるいは参照サンプル導出部4701は下式を用いてもよい。
【0181】
if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
else if (timd_ref_mode==TIMD_MODE_LEFT)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRLETL..xRLETL+rW, y=yRLETL-1、および、x=xRLETL-1, y=yRLETL-1..yRLETL-1+refH)
else if (timd_ref_mode==TIMD_MODE_TOP)
refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRTETL..xRTETL+refW, y=yRTETL-1、および、x=xRTETL-1, y=yRTETL-1..yRTETL-1+rH)
(xRLETL,yRLETL)はテンプレート画像RL_EXTの左上座標であり、(xRTETL,yRTETL)はテンプレート画像RT_EXTの左上座標である。
例えば、図12(b)では(xRLETL,yRLETL)=(-tW,0)、(xRTETL,yRTETL)=(0,-tH)である。図13(b)では(xRLETL,yRLETL)=(-tW,-tH)、(xRTETL,yRTETL)=(-tW,-tH)である。
【0182】
rW=cbWidth>>1、rH=cbHeight>>2であるが、これに限らず、rW=cbWidth、rH=cbHeight、あるいはrefW=cbWidth*2、refH=cbHeight*2であってもよい。
【0183】
上記構成により、テンプレート予測画像の生成に用いるテンプレート参照領域を拡大することにより、特に左上方向からの予測精度が高まり、符号化効率が向上する。
【0184】
(テンプレート参照領域RTRSの例3:テンプレート画像に接しない例
【0185】
(テンプレート参照領域RTRSの例1)、(テンプレート参照領域RTRSの例2)ではテンプレート参照領域RTRSがテンプレート画像に接する例を説明した。(テンプレート参照領域RTRSの例3)では図14を用いて、テンプレート参照領域RTRSがテンプレート画像に接しない例を説明する。図14は、図11(b)においてテンプレート参照領域RTRSがテンプレート画像に接しないように適用した図である。従って、図11(b)以外の図10図13の各図に対しても、本例を適用することができる。
【0186】
参照サンプル導出部4701は、テンプレート画像から水平方向、垂直方向に各々refIdxW、refIdxHだけ離れた位置からテンプレート参照領域の画像refUnitを導出する。
【0187】
if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
else if (timd_ref_mode==TIMD_MODE_LEFT)
refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=xRLTL..xRLTL+rW, y=yRLTL-1、および、x=xRLTL-1, y=yRLTL-1..yRLTL-1+refH)
else if (timd_ref_mode==TIMD_MODE_TOP)
refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=xRTTL..xRTTL+refW, y=yRTTL-1、および、x=xRTTL-1, y=yRTTL-1..yRTTL-1+rH)
(xRLTL,yRLTL)はテンプレート画像RLの左上座標、(xRTTL,yRTTL)はテンプレート画像RTの左上座標である。あるいは下式で設定してもよい。図10(a)では(xRLTL,yRLTL)=(-tW,0)、(xRTTL,yRTTL)=(0,-tH)である。図11(a)では(xRLTL,yRLTL)=(-tW,-tH)、(xRTTL,yRTTL)=(-tW,-tH)である。図12(a)では(xRLETL,yRLETL)=(-tW,0)、(xRTETL,yRTETL)=(0,-tH)である。図13(a)では(xRLETL,yRLETL)=(-tW,-tH)、(xRTETL,yRTETL)=(-tW,-tH)である。
【0188】
if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
else if (timd_ref_mode==TIMD_MODE_LEFT)
refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=xRLETL..xRLETL+rW, y=yRLETL-1、および、x=xRLETL-1, y=yRLETL-1..yRLETL-1+refH)
else if (timd_ref_mode==TIMD_MODE_TOP)
refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=xRTETL..xRTETL+refW, y=yRTETL-1、および、x=xRTETL-1, y=yRTETL-1..yRTETL-1+rH)
(xRLETL,yRLETL)はテンプレート画像RL_EXTの左上座標であり、(xRTETL,yRTETL)はテンプレート画像RT_EXTの左上座標である。図10(b)では(xRLTL,yRLTL)=(-tW,0)、(xRTTL,yRTTL)=(0,-tH)である。図11(a)では(xRLTL,yRLTL)=(-tW,-tH)、(xRTTL,yRTTL)=(-tW,-tH)である。図12(a)では(xRLETL,yRLETL)=(-tW,0)、(xRTETL,yRTETL)=(0,-tH)である。図13(a)では(xRLETL,yRLETL)=(-tW,-tH)、(xRTETL,yRTETL)=(-tW,-tH)である。
【0189】
前記対象ブロック近傍のテンプレート参照領域の位置は、前記テンプレート領域が前記対象ブロックの左側だけに位置する場合、垂直方向の位置は前記テンプレート領域の垂直座標の最小値以上であり、前記テンプレート領域が前記対象ブロックの上側だけに位置する場合、水平方向の位置は前記テンプレート領域の水平座標の最小値以上である。
【0190】
別の例として、前記対象ブロック近傍のテンプレート参照領域の位置は、前記テンプレート領域が前記対象ブロックの左側だけに位置する場合であっても、隣接ブロックが利用可能であれば前記テンプレート領域の上側および左上側に位置する隣接画素を含む。同様に前記テンプレート領域が前記対象ブロックの上側だけに位置する場合であっても、隣接ブロックが利用可能であれば前記テンプレート領域の左側および左上側に位置する隣接画素を含む。つまり、テンプレート参照領域はテンプレート領域に対し8近傍の左上の画素位置を含む。
【0191】
テンプレート画像に接する領域を参照して予測することは、必ずしも符号化効率を向上させるものではない。上記構成により、テンプレート参照領域をテンプレート画像から適切な距離だけ離すことにより、予測効率を高め、符号化効率を向上させることができる。
【0192】
前記対象ブロック近傍のテンプレート参照領域の位置は、前記テンプレート領域から所定の距離だけ離れて位置する。
【0193】
さらに参照サンプル導出部4701は、参照サンプルrefUnit[x][y]にフィルタをかけて参照サンプルp[x][y]を導出してもよい。
【0194】
テンプレート予測画像生成部4712は、イントラ予測モードIntraPredModeの予測画像(テンプレート予測画像)をテンプレート参照領域から生成する。テンプレート予測画像生成部4712の予測画像導出の動作は予測部3104で行ってもよい。例えば、Planar予測部31041、DC予測部31042、Angular予測部31043は、テンプレート予測画像の導出と対象ブロックの予測画像の導出の両方を行ってもよい。
【0195】
具体的には、timdModeList[i]に含まれる各イントラモードintraPredModeの各々(tIntraPredMode=timdModeList[i])に対して、参照サンプルrefUnit[x][y]あるいはフィルタリング後の参照サンプルp[x][y]から、1次元の参照画素配列ref[]を生成する。そして、tIntraPredModeとref[]をイントラ予測部4703に伝送する。イントラ予測部4703はtIntraPredModeに対応するテンプレート予測画像tpredSamples[][]を生成し、テンプレート予測画像生成部4712に出力する。
【0196】
テンプレート予測画像生成部4712は、たとえば、以下の(式TIMD-ANGULAR-REF)のようにref[]を生成する。以下はp[][]からtpredSamples[][]を生成するが、p[][]の代わりにrefUnit[][]を用いてもよい
【0197】
(式TIMD-ANGULAR-REF)
tIntraPredMode>=DIRの場合
ref[x] = p[-1-refIdx+x][-1-refIdx] (x=0..cbWidth+refIdx+1)
それ以外の場合(tIntraPredMode<DIR)
ref[x] = p[-1-refIdx][-1-refIdx+x], (x=0..cbHeight+refIdx+1)
DIRは所定の定数、例えばDIR=34, 66など。ここでrefIdxは対象ブロックからの距離である。テンプレート領域の画像を予測に用いるテンプレート参照領域はrefIdx>0(例えば、refIdx=2, 4など)を用いてもよい。refIdxはブロックサイズによって変更してもよい。
【0198】
refIdx = (cbWidth >= 8) && (cbHeight >= 8) 4 : 2
テンプレート予測画像生成部4712(イントラ予測部4703)は、たとえば、以下の(式TIMD-ANGULAR-PRED)のようにtIntraPredModeに対応するテンプレート予測画像tpredSamples[][]を生成する。
tIntraPredMode>=DIRの場合 (式TIMD-ANGULAR-PRED)
iIdx = (((y + 1 + refIdx) * intraPredAngle) >> 5) + refIdx
iFact = ((y + 1 + refIdx) * intraPredAngle) & 31
tpredSamples[x][y] = Clip1((Σ(filt[i] * ref[x+iIdx+i]) + 32) >> 6)
それ以外の場合(tIntraPredMode<DIR)
iIdx = (((x + 1 + refIdx) * intraPredAngle) >> 5) + refIdx
iFact = ((x + 1 + refIdx) * intraPredAngle) & 31
tpredSamples[x][y] = Clip1((Σ(filt[i] * ref[y+iIdx+i]) + 32) >> 6)
x=-1..cbWidth-1,y=-1およびx=-1、y=-1..cbHeight-1。
【0199】
ここでΣはi=0..MTAP-1までの総和、filtはテンプレート予測画像用の補間フィルタ係数である。テンプレート予測画像の導出に用いる補間フィルタのタップ数MTAPは例えば4。
intraPredAngleは各イントラ予測モードの角度パラメータである。
filtは、以下のようにiFastから導出してもよい。filtG[phase][j]はテンプレート予測画像を生成するための補間フィルタの係数である。
【0200】
filt[j] = filtG[iFact][j]
(STEP2)コスト導出
テンプレートコスト導出部4713は、各イントラ予測モード候補のテンプレート予測画像tpredSamplesと対象ブロックのテンプレート画像tempSamplesの差分から、イントラ予測モード候補のコストtempCostを導出する。コストはSAD(Sum of Absolute Differnce)であってもよい。
【0201】
tempCost = Σabs(tpredSamples[i][j] - tempSamples[i][j])
(i, j)は例えば(i=-1..cbWidth-1, j=-tH..-1), (i=-tW..-1, j=-1..cbHeight-1))。tW、tHはテンプレート画像の幅と高さである。
【0202】
テンプレートコスト導出部4713は、tW=1、tH=1の場合、下式でtempCostを導出する。
【0203】
tempCost = Σabs(tpredSamples[i][j] - tempSamples[i][j])
(i, j)は例えば、(i=-1..cbWidth-1, j=-1), (i=-1, j=-1..cbHeight-1))。
コストはSADではなく、SATD(Sum of Absolute Transformed Differnce)であってもよい。
【0204】
(STEP3)モード選択
イントラ予測モード選択部4714は、tempCostの最小値に対応するイントラ予測モードを、TIMDモードのイントラ予測モードIntraPredModeとして導出する。
【0205】
(STEP4)TIMD予測画像導出
イントラ予測部4703は上記で導出されたIntraPredModeに対応するイントラ予測画像predSamples[][]を導出する。そして、対象ブロックのイントラ予測画像として出力する。なお、予測部3104で導出してもよい。
【0206】
if (intraPredMode >= DIR) (式INTRA-ANGULAR-PRED)
iIdx = (((y + 1) * intraPredAngle) >> 5)
iFact = ((y + 1) * intraPredAngle) & 31
predSamples[x][y] = Clip1((Σ(fT[i] * ref[x+iIdx+i]) + 32) >> 6)
else /* intraPredMode < DIR*/
iIdx = (((x + 1) * intraPredAngle) >> 5)
iFact = ((x + 1) * intraPredAngle) & 31
predSamples[x][y] = Clip1((Σ(fT[i] * ref[y+iIdx+i]) + 32) >> 6)
ここでref[]はテンプレート予測画像生成部で説明した通りである。
【0207】
ここでΣはi=0..NTAP-1までの和、fTはイントラ予測画像用の補間フィルタ係数である。イントラ予測画像の導出に用いる補間フィルタのタップ数NTAPは例えば6。
【0208】
fTは、以下のようにiFastから導出してもよい。fG[phase][j]はイントラ予測画像を生成するための補間フィルタの係数である。
fT[j] = fG[iFact][j]
本実施例の動画像復号装置は、符号化データからテンプレートベースイントラモード導出フラグを復号するパラメータ復号部と、対象ブロックに隣接するテンプレート領域の画像を用いて、テンプレート画像を生成するテンプレート導出部と、前記対象ブロック近傍のテンプレート参照領域の画像を用いて、参照サンプルを生成する参照サンプル導出部と、前記参照サンプルを用いて、所定のイントラ予測モード候補に対するテンプレート予測画像を生成するテンプレート予測画像生成部と、前記テンプレート予測画像と前記テンプレート画像からコストを導出するテンプレートコスト導出部と、前記コストに基づいて前記対象ブロックのイントラ予測モードを選択するイントラ予測モード選択部を備え、前記テンプレート導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記テンプレート領域の位置を指定し、前記参照サンプル導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記参照サンプルを導出する。
【0209】
そして、前記テンプレートベースイントラモード導出フラグは、前記テンプレート領域として、前記対象ブロックの上側と左側を使うか、前記対象ブロックの左側を使うか、前記対象ブロックの上側を使うか、を示す。
【0210】
前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックの垂直座標の最小値以上、最大値以下であり、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックの水平座標の最小値以上、最大値以下である。
【0211】
別の例として、前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックの垂直座標の最大値以下であり、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックの水平座標の最大値以下である、つまり、前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックの垂直座標の最小値以下の領域を含み、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックの水平座標の最小値以下の領域を含む。
【0212】
別の例として、前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックの垂直座標の最小値以上であり、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックの水平座標の最小値以上である、つまり、前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックの垂直座標の最大値以上の領域を含み、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックの水平座標の最大値以上の領域を含む。
【0213】
別の例として、前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックに対し制限を設けず、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックに対し制限を設けない。
【0214】
(ブロックサイズ別テンプレート参照領域)
別の構成として、参照サンプル導出部4701のテンプレート参照領域RTRSおよびテンプレート予測画像生成部4712のrefの導出において対象ブロックからの距離を水平方向、垂直方向でかえてもよい。
【0215】
refIdxW = (cbWidth >= 8) ? 4 : 2
refIdxH = (cbHeight >= 8) ? 4 : 2
tIntraPredMode>=DIRの場合
ref[x] = p[-1-refIdxW+x][-1-refIdxH], (x=0..cbWidth+refIdxW+1)
それ以外の場合(tIntraPredMode<DIR)
ref[x] = p[-1-refIdxW][-1-refIdxH+x], (x=0..cbHeight+refIdxH+1)
テンプレート予測画像生成部4712は以下を実行してもよい。
tIntraPredMode>=DIRの場合 (式TIMD-ANGULAR-PRED)
iIdx = (((y + 1 + refIdxH) * intraPredAngle) >> 5) + refIdxH
iFact = ((y + 1 + refIdxH) * intraPredAngle) & 31
tpredSamples[x][y] = Clip1((Σ(filt[i] * ref[x+iIdx+i]) + 32) >> 6)
それ以外の場合(tIntraPredMode < DIR)
iIdx = (((x + 1 + refIdxW) * intraPredAngle) >> 5) + refIdxW
iFact = ((x + 1 + refIdxW) * intraPredAngle) & 31
tpredSamples[x][y] = Clip1((Σ(filt[i] * ref[y+iIdx+i]) + 32) >> 6)
x=-1..cbWidth-1,y=-1およびx=-1、y=-1..cbHeight-1。
【0216】
上記構成によれば、対象ブロックのサイズに応じて、テンプレート予測画像で参照する領域を可変にするため、テンプレート予測画像の精度が向上し、TIMDのイントラ予測画像の精度が高まる効果を奏する。
【0217】
上述の構成によれば、対象ブロックに対して複数のイントラ予測候補を用いて繰り返しテンプレート予測画像(イントラ予測画像)の導出を行うTIMD予測において、テンプレート画像の予測画像導出の処理量を削減する効果を奏する。
【0218】
加算部312は、予測画像生成部308から入力されたブロックの予測画像と逆量子化・逆変換部311から入力された予測誤差を画素毎に加算して、ブロックの復号画像を生成する。加算部312はブロックの復号画像を参照ピクチャメモリ306に記憶し、また、ループフィルタ305に出力する。
【0219】
(動画像符号化装置の構成)
次に、本実施形態に係る動画像符号化装置11の構成について説明する。図15は、本実施形態に係る動画像符号化装置11の構成を示すブロック図である。動画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、パラメータ符号化部111、予測パラメータ導出部120、エントロピー符号化部104を含んで構成される。
【0220】
予測画像生成部101は画像Tの各ピクチャを分割した領域であるCU毎に予測画像を生成する。予測画像生成部101はイントラ予測画像生成部122とインター予測画像生成部123を含む。予測画像生成部101は既に説明した予測画像生成部308と同じ動作であり、説明を省略する。
【0221】
減算部102は、予測画像生成部101から入力されたブロックの予測画像の画素値を、画像Tの画素値から減算して予測誤差を生成する。減算部102は予測誤差を変換・量子化部103に出力する。
【0222】
変換・量子化部103は、減算部102から入力された予測誤差に対し、周波数変換によって変換係数を算出し、量子化によって量子化変換係数を導出する。変換・量子化部103は、量子化変換係数をパラメータ符号化部111及び逆量子化・逆変換部105に出力する。
【0223】
逆量子化・逆変換部105は、動画像復号装置31における逆量子化・逆変換部311(図4)と同じであり、説明を省略する。算出した予測誤差は加算部106に出力される。
【0224】
パラメータ符号化部111は、ヘッダ符号化部1110、CT情報符号化部1111、CU符号化部1112(予測モード符号化部)を備えている。CU符号化部1112はさらにTU符号化部1114を備えている。以下、各モジュールの概略動作を説明する。
【0225】
ヘッダ符号化部1110はヘッダ情報、分割情報、予測情報、量子化変換係数等のパラメータの符号化処理を行う。
【0226】
CT情報符号化部1111は、QT、MT(BT、TT)分割情報等を符号化する。
【0227】
CU符号化部1112はCU情報、予測情報、分割情報等を符号化する。
【0228】
TU符号化部1114は、TUに予測誤差が含まれている場合に、QP更新情報と量子化予測誤差を符号化する。
【0229】
CT情報符号化部1111、CU符号化部1112は、インター予測パラメータ、イントラ予測パラメータ、量子化変換係数等のシンタックス要素をパラメータ符号化部111に供給する。
【0230】
エントロピー符号化部104には、パラメータ符号化部111から量子化変換係数と符号化パラメータが入力される。エントロピー符号化部104は、これらをエントロピー符号化して符号化ストリームTeを生成し、出力する。
【0231】
予測パラメータ導出部120は、インター予測パラメータ符号化部112、イントラ予測パラメータ符号化部113を含む手段であり、符号化パラメータ決定部110から入力されたパラメータからイントラ予測パラメータ及びイントラ予測パラメータを導出する。導出されたイントラ予測パラメータ及びイントラ予測パラメータは、パラメータ符号化部111に出力される。
【0232】
(イントラ予測パラメータ符号化部113の構成)
イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力されたIntraPredMode等を符号化する。イントラ予測パラメータ符号化部113は、イントラ予測パラメータ導出部304がイントラ予測パラメータを導出する構成と、一部同一の構成を含む。
【0233】
加算部106は、予測画像生成部101から入力された予測ブロックの画素値と逆量子化・逆変換部105から入力された予測誤差を画素毎に加算して復号画像を生成する。加算部106は生成した復号画像を参照ピクチャメモリ109に記憶する。
【0234】
ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ、SAO、ALFを施す。なお、ループフィルタ107は、必ずしも上記3種類のフィルタを含まなくてもよく、例えばデブロッキングフィルタのみの構成であってもよい。
【0235】
予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、対象ピクチャ及びCU毎に予め定めた位置に記憶する。
【0236】
参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を対象ピクチャ及びCU毎に予め定めた位置に記憶する。
【0237】
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述したQT、BTあるいはTT分割情報、予測パラメータ、あるいはこれらに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータを用いて予測画像を生成する。
【0238】
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すRDコスト値を算出する。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして出力する。符号化パラメータ決定部110は決定した符号化パラメータを予測パラメータメモリ108に記憶する。
【0239】
本実施例の動画像復号装置は、対象ブロックに隣接するテンプレート領域の画像を用いて、テンプレート画像を生成するテンプレート導出部と、前記対象ブロック近傍のテンプレート参照領域の画像を用いて、参照サンプルを生成する参照サンプル導出部と、前記参照サンプルを用いて、所定のイントラ予測モード候補に対するテンプレート予測画像を生成するテンプレート予測画像生成部と、前記テンプレート予測画像と前記テンプレート画像からコストを導出するテンプレートコスト導出部と、前記コストに基づいて前記対象ブロックのイントラ予測モードを選択するイントラ予測モード選択部と、テンプレートベースイントラモード導出フラグを符号化するパラメータ符号化部とを備え、前記テンプレート導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記テンプレート領域の位置を指定し、前記参照サンプル導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記参照サンプルを導出する。
【0240】
なお、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、例えば、エントロピー復号部301、パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆変換部311、加算部312、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、パラメータ符号化部111をコンピュータで実現するようにしてもよい。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、動画像符号化装置11、動画像復号装置31のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0241】
また、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。動画像符号化装置11、動画像復号装置31の各機能ブロックは個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【0242】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【産業上の利用可能性】
【0243】
本発明の実施形態は、画像データが符号化された符号化データを復号する動画像復号装置、および、画像データが符号化された符号化データを生成する動画像符号化装置に好適に適用することができる。また、動画像符号化装置によって生成され、動画像復号装置によって参照される符号化データのデータ構造に好適に適用することができる。
【符号の説明】
【0244】
31 画像復号装置
301 エントロピー復号部
302 パラメータ復号部
308 予測画像生成部
310 イントラ予測画像生成部
31047 TIMD予測部
4701 参照サンプル導出部
4702 テンプレート導出部
4703 イントラ予測部
4711 イントラ予測モード候補導出部、
4712 テンプレート予測画像生成部
4713 テンプレートコスト導出部
4714 イントラ予測モード選択部
311 逆量子化・逆変換部
312 加算部
11 画像符号化装置
101 予測画像生成部
102 減算部
103 変換・量子化部
104 エントロピー符号化部
105 逆量子化・逆変換部
107 ループフィルタ
110 符号化パラメータ決定部
111 パラメータ符号化部
1110 ヘッダ符号化部
1111 CT情報符号化部
1112 CU符号化部(予測モード符号化部)
1114 TU符号化部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16