(第1の実施形態)
以下、図面を参照しながら本発明の実施形態について説明する。
図77は、本実施形態に係る画像伝送システム1の構成を示す概略図である。
画像伝送システム1は、符号化対象画像を符号化した符号を伝送し、伝送された符号を復号し画像を表示するシステムである。画像伝送システム1は、画像符号化装置(動画像符号化装置)11、ネットワーク21、画像復号装置(動画像復号装置)31及び画像表示装置41を含んで構成される。
画像符号化装置11には、単一レイヤもしくは複数レイヤの画像を示す画像Tが入力される。レイヤとは、ある時間を構成するピクチャが1つ以上ある場合に、複数のピクチャを区別するために用いられる概念である。たとえば、同一ピクチャを、画質や解像度の異なる複数のレイヤで符号化するとスケーラブル符号化になり、異なる視点のピクチャを複数のレイヤで符号化するとビュースケーラブル符号化となる。複数のレイヤのピクチャ間で予測(インターレイヤ予測、インタービュー予測)を行う場合には、符号化効率が大きく向上する。また予測を行わない場合(サイマルキャスト)の場合にも、符号化データをまとめることができる。
ネットワーク21は、画像符号化装置11が生成した符号化ストリームTeを画像復号装置31に伝送する。ネットワーク21は、インターネット(internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)またはこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であっても良い。また、ネットワーク21は、DVD(Digital Versatile Disc)、BD(Blue-ray Disc)等の符号化ストリームTeを記録した記憶媒体で代替されても良い。
画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、それぞれ復号した1または複数の復号画像Tdを生成する。
画像表示装置41は、画像復号装置31が生成した1または複数の復号画像Tdの全部または一部を表示する。画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。また、空間スケーラブル符号化、SNRスケーラブル符号化では、画像復号装置31が高い処理能力を有する場合には、画質の高い拡張レイヤ画像を表示する。画像復号装置31がより低い処理能力しか有しない場合には、拡張レイヤほど高い処理能力、表示能力を必要としないベースレイヤ画像を表示する。
<演算子>
本明細書で用いる演算子を以下に記載する。
>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR、|=は別の条件との和演算(OR)である。
x ? y : zは、xが真(0以外)の場合にy、xが偽(0)の場合にzをとる3項演算子である。
Clip3(a, b, c) は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返し、c>bの場合にはbを返し、その他の場合にはcを返す関数である(ただし、a<=b)。
<符号化ストリームTeの構造>
本実施形態に係る画像符号化装置11および画像復号装置31の詳細な説明に先立って、画像符号化装置11によって生成され、画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
図1は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図1の(a)~(f)は、それぞれ、シーケンスSEQを既定する符号化ビデオシーケンス、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スライスデータを規定する符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニット(Coding Unit;CU)を示す図である。
(符号化ビデオシーケンス)
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために画像復号装置31が参照するデータの集合が規定されている。シーケンスSEQは、図1の(a)に示すように、ビデオパラメータセット(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値はレイヤIDを示す。図1では、#0と#1すなわちレイヤ0とレイヤ1の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれによらない。
ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れかを選択する。
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
(符号化ピクチャ)
符号化ピクチャでは、処理対象のピクチャPICTを復号するために画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図1の(b)に示すように、スライスS0~SNS-1を含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS0~SNS-1のそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
(符号化スライス)
符号化スライスでは、処理対象のスライスSを復号するために画像復号装置31が参照するデータの集合が規定されている。スライスSは、図1の(c)に示すように、スライスヘッダSH、および、スライスデータSDATAを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。
なお、スライスヘッダSHには、上記符号化ビデオシーケンスに含まれる、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいても良い。
(符号化スライスデータ)
符号化スライスデータでは、処理対象のスライスデータSDATAを復号するために画像復号装置31が参照するデータの集合が規定されている。スライスデータSDATAは、図1の(d)に示すように、符号化ツリーユニット(CTU:Coding Tree Unit)を含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
(符号化ツリーユニット)
図1の(e)に示すように、処理対象の符号化ツリーユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な4分木分割により分割される。再帰的な4分木分割により得られる木構造のノードのことを符号化ノード(CN:Coding Node)と称する。4分木の中間ノードは、符号化ノードであり、符号化ツリーユニット自身も最上位の符号化ノードとして規定される。CTUは、分割フラグ(cu_split_flag)を含み、cu_split_flagが1の場合には、4つの符号化ノードCNに分割される。cu_split_flagが0の場合には、符号化ノードCNは分割されず、1つの符号化ユニット(CU:Coding Unit)をノードとして持つ。符号化ユニットCUは符号化ノードの末端ノードであり、これ以上分割されない。符号化ユニットCUは、符号化処理の基本的な単位となる。
また、符号化ツリーユニットCTUのサイズが64x64画素の場合には、符号化ユニットのサイズは、64x64画素、32x32画素、16x16画素、および、8x8画素の何れかをとり得る。
(符号化ユニット)
図1の(f)に示すように、処理対象の符号化ユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。具体的には、符号化ユニットは、予測ツリー、変換ツリー、CUヘッダCUHから構成される。CUヘッダでは予測モード、分割方法(PU分割モード)等が規定される。
予測ツリーでは、符号化ユニットを1または複数に分割した各予測ユニット(PU)の予測情報(参照ピクチャインデックス、動きベクトル等)が規定される。別の表現でいえば、予測ユニットは、符号化ユニットを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ユニットを含む。なお、以下では、予測ユニットをさらに分割した予測単位を「サブブロック」と呼ぶ。サブブロックは、複数の画素によって構成されている。予測ユニットとサブブロックのサイズが等しい場合には、予測ユニット中のサブブロックは1つである。予測ユニットがサブブロックのサイズよりも大きい場合には、予測ユニットは、サブブロックに分割される。たとえば予測ユニットが8x8、サブブロックが4x4の場合には、予測ユニットは水平に2分割、垂直に2分割からなる、4つのサブブロックに分割される。
予測処理は、この予測ユニット(サブブロック)ごとに行ってもよい。
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。イントラ予測とは、同一ピクチャ内の予測であり、インター予測とは、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
イントラ予測の場合、分割方法は、2Nx2N(符号化ユニットと同一サイズ)と、NxNとがある。
また、インター予測の場合、分割方法は、符号化データのPU分割モード(part_mode)により符号化され、2Nx2N(符号化ユニットと同一サイズ)、2NxN、2NxnU、2NxnD、Nx2N、nLx2N、nRx2N、および、NxNなどがある。なお、2NxN、Nx2Nは1:1の対称分割を示し、
2NxnU、2NxnDおよびnLx2N、nRx2Nは、1:3、3:1の非対称分割を示す。CUに含まれるPUを順にPU0、PU1、PU2、PU3と表現する。
図2の(a)~(h)に、それぞれのPU分割モードにおけるパーティションの形状(PU分割の境界の位置)を具体的に図示している。図2の(a)は、2Nx2Nのパーティションを示し、(b)、(c)、(d)は、それぞれ、2NxN、2NxnU、および、2NxnDのパーティション(横長パーティション)を示す。(e)、(f)、(g)は、それぞれ、Nx2N、nLx2N、nRx2Nである場合のパーティション(縦長パーティション)を示し、(h)は、NxNのパーティションを示す。なお、横長パーティションと縦長パーティションを総称して長方形パーティション、2Nx2N、NxNを総称して正方形パーティションと呼ぶ。
また、変換ツリーにおいては、符号化ユニットが1または複数の変換ユニットに分割され、各変換ユニットの位置とサイズとが規定される。別の表現でいえば、変換ユニットは、符号化ユニットを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ユニットを含む。
変換ツリーにおける分割には、符号化ユニットと同一のサイズの領域を変換ユニットとして割り付けるものと、上述したCUの分割と同様、再帰的な4分木分割によるものがある。
変換処理は、この変換ユニットごとに行われる。
(画像復号装置の構成)
次に、本実施形態に係る画像復号装置31の構成について説明する。図5は、本実施形態に係る画像復号装置31の構成を示す概略図である。画像復号装置31は、エントロピー復号部301、予測パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆DCT部311、及び加算部312を含んで構成される。
また、予測パラメータ復号部302は、インター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロピー復号を行って、個々の符号(シンタックス要素)を分離し復号する。分離された符号には、予測画像を生成するための予測情報および、差分画像を生成するための残差情報などがある。
エントロピー復号部301は、分離した符号の一部を予測パラメータ復号部302に出力する。分離した符号の一部とは、例えば、予測モードpredMode、PU分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXである。どの符号を復号するかの制御は、予測パラメータ復号部302の指示に基づいて行われる。エントロピー復号部301は、量子化係数を逆量子化・逆DCT部311に出力する。この量子化係数は、符号化処理において、残差信号に対してDCT(Discrete Cosine Transform、離散コサイン変換)を行い量子化して得られる係数である。
インター予測パラメータ復号部303は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してインター予測パラメータを復号する。
インター予測パラメータ復号部303は、復号したインター予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。インター予測パラメータ復号部303の詳細については後述する。
イントラ予測パラメータ復号部304は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してイントラ予測パラメータを復号する。イントラ予測パラメータとは、CUを1つのピクチャ内で予測する処理で用いるパラメータ、例えば、イントラ予測モードIntraPredModeである。イントラ予測パラメータ復号部304は、復号したイントラ予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。
イントラ予測パラメータ復号部304は、輝度と色差で異なるイントラ予測モードを導出しても良い。この場合、イントラ予測パラメータ復号部304は、輝度の予測パラメータとして輝度予測モードIntraPredModeY、色差の予測パラメータとして、色差予測モードIntraPredModeCを復号する。輝度予測モードIntraPredModeYは、35モードであり、プレーナ予測(0)、DC予測(1)、方向予測(2~34)が対応する。色差予測モードIntraPredModeCは、プレーナ予測(0)、DC予測(1)、方向予測(2~34)、LMモード(35)の何れかを用いるものである。イントラ予測パラメータ復号部304は、IntraPredModeCは輝度モードと同じモードであるか否かを示すフラグを復号し、フラグが輝度モードと同じモードであることを示せば、IntraPredModeCにIntraPredModeYを割り当て、フラグが輝度モードと異なるモードであることを示せば、IntraPredModeCとして、プレーナ予測(0)、DC予測(1)、方向予測(2~34)、LMモード(35)を復号しても良い。
ループフィルタ305は、加算部312が生成したCUの復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適応ループフィルタ(ALF)等のフィルタを施す。
参照ピクチャメモリ306は、加算部312が生成したCUの復号画像を、復号対象のピクチャ及びCU毎に予め定めた位置に記憶する。
予測パラメータメモリ307は、予測パラメータを、復号対象のピクチャ及び予測ユニット(もしくはサブブロック、固定サイズブロック、ピクセル)毎に予め定めた位置に記憶する。具体的には、予測パラメータメモリ307は、インター予測パラメータ復号部303が復号したインター予測パラメータ、イントラ予測パラメータ復号部304が復号したイントラ予測パラメータ及びエントロピー復号部301が分離した予測モードpredModeを記憶する。記憶されるインター予測パラメータには、例えば、予測リスト利用フラグpredFlagLX(インター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXがある。
予測画像生成部308には、エントロピー復号部301から入力された予測モードpredModeが入力され、また予測パラメータ復号部302から予測パラメータが入力される。また、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、入力された予測パラメータと読み出した参照ピクチャを用いてPUの予測画像を生成する。
ここで、予測モードpredModeがインター予測モードを示す場合、インター予測画像生成部309は、インター予測パラメータ復号部303から入力されたインター予測パラメータと読み出した参照ピクチャを用いてインター予測によりPUの予測画像を生成する。
インター予測画像生成部309は、予測リスト利用フラグpredFlagLXが1である参照ピクチャリスト(L0リスト、もしくはL1リスト)に対し、参照ピクチャインデックスrefIdxLXで示される参照ピクチャから、復号対象PUを基準として動きベクトルmvLXが示す位置にある参照ピクチャブロックを参照ピクチャメモリ306から読み出す。インター予測画像生成部309は、読み出した参照ピクチャブロックをもとに予測を行ってPUの予測画像を生成する。インター予測画像生成部309は、生成したPUの予測画像を加算部312に出力する。
予測モードpredModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ復号部304から入力されたイントラ予測パラメータと読み出した参照ピクチャを用いてイントラ予測を行う。具体的には、イントラ予測画像生成部310は、復号対象のピクチャであって、既に復号されたPUのうち、復号対象PUから予め定めた範囲にある隣接PUを参照ピクチャメモリ306から読み出す。予め定めた範囲とは、復号対象PUがいわゆるラスタースキャンの順序で順次移動する場合、例えば、左、左上、上、右上の隣接PUのうちのいずれかであり、イントラ予測モードによって異なる。ラスタースキャンの順序とは、各ピクチャにおいて、上端から下端まで各行について、順次左端から右端まで移動させる順序である。
イントラ予測画像生成部310は、読み出した隣接PUについてイントラ予測モードIntraPredModeが示す予測モードで予測を行ってPUの予測画像を生成する。イントラ予測画像生成部310は、生成したPUの予測画像を加算部312に出力する。
イントラ予測パラメータ復号部304において、輝度と色差で異なるイントラ予測モードを導出する場合、イントラ予測画像生成部310は、輝度予測モードIntraPredModeYに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2~34)の何れかによって輝度のPUの予測画像を生成し、色差予測モードIntraPredModeCに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2~34)、LMモード(35)の何れかによって色差のPUの予測画像を生成する。
逆量子化・逆DCT部311は、エントロピー復号部301から入力された量子化係数を逆量子化してDCT係数を求める。逆量子化・逆DCT部311は、求めたDCT係数について逆DCT(Inverse Discrete Cosine Transform、逆離散コサイン変換)を行い、残差信号を算出する。逆量子化・逆DCT部311は、算出した残差信号を加算部312に出力する。
加算部312は、インター予測画像生成部309またはイントラ予測画像生成部310から入力されたPUの予測画像と逆量子化・逆DCT部311から入力された残差信号を画素毎に加算して、PUの復号画像を生成する。加算部312は、生成したPUの復号画像を参照ピクチャメモリ306に記憶し、生成したPUの復号画像をピクチャ毎に統合した復号画像Tdを外部に出力する。
(画像符号化装置の構成)
次に、本実施形態に係る画像符号化装置11の構成について説明する。図4は、本実施形態に係る画像符号化装置11の構成を示すブロック図である。画像符号化装置11は、予測画像生成部101、減算部102、DCT・量子化部103、エントロピー符号化部104、逆量子化・逆DCT部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。
予測画像生成部101は画像Tの各ピクチャについて、そのピクチャを分割した領域である符号化ユニットCU毎に予測ユニットPUの予測画像Pを生成する。ここで、予測画像生成部101は、予測パラメータ符号化部111から入力された予測パラメータに基づいて参照ピクチャメモリ109から復号済のブロックを読み出す。予測パラメータ符号化部111から入力された予測パラメータとは、例えばインター予測の場合、動きベクトルである。予測画像生成部101は、対象PUを起点として動きベクトルが示す参照画像上の位置にあるブロックを読み出す。またイントラ予測の場合、予測パラメータとは例えばイントラ予測モードである。イントラ予測モードで使用する隣接PUの画素値を参照ピクチャメモリ109から読み出し、PUの予測画像Pを生成する。予測画像生成部101は、読み出した参照ピクチャブロックについて複数の予測方式のうちの1つの予測方式を用いてPUの予測画像Pを生成する。予測画像生成部101は、生成したPUの予測画像Pを減算部102に出力する。
なお、予測画像生成部101は、既に説明した予測画像生成部308と同じ動作である。例えば、図6は、予測画像生成部101に含まれるインター予測画像生成部1011の構成を示す概略図である。インター予測画像生成部1011は、動き補償部10111、重み予測部10112を含んで構成される。動き補償部10111および重み予測部10112については、上述の動き補償部3091、重み予測部3094のそれぞれと同様の構成であるためここでの説明を省略する。
予測画像生成部101は、予測パラメータ符号化部から入力されたパラメータを用いて、参照ピクチャメモリから読み出した参照ブロックの画素値をもとにPUの予測画像Pを生成する。予測画像生成部101で生成した予測画像は減算部102、加算部106に出力される。
減算部102は、予測画像生成部101から入力されたPUの予測画像Pの信号値を、画像Tの対応するPUの画素値から減算して、残差信号を生成する。減算部102は、生成した残差信号をDCT・量子化部103に出力する。
DCT・量子化部103は、減算部102から入力された残差信号についてDCTを行い、DCT係数を算出する。DCT・量子化部103は、算出したDCT係数を量子化して量子化係数を求める。DCT・量子化部103は、求めた量子化係数をエントロピー符号化部104及び逆量子化・逆DCT部105に出力する。
エントロピー符号化部104には、DCT・量子化部103から量子化係数が入力され、予測パラメータ符号化部111から符号化パラメータが入力される。入力される符号化パラメータには、例えば、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX、予測モードpredMode、及びマージインデックスmerge_idx等の符号がある。
エントロピー符号化部104は、入力された量子化係数と符号化パラメータをエントロピー符号化して符号化ストリームTeを生成し、生成した符号化ストリームTeを外部に出力する。
逆量子化・逆DCT部105は、DCT・量子化部103から入力された量子化係数を逆量子化してDCT係数を求める。逆量子化・逆DCT部105は、求めたDCT係数について逆DCTを行い、残差信号を算出する。逆量子化・逆DCT部105は、算出した残差信号を加算部106に出力する。
加算部106は、予測画像生成部101から入力されたPUの予測画像Pの信号値と逆量子化・逆DCT部105から入力された残差信号の信号値を画素毎に加算して、復号画像を生成する。加算部106は、生成した復号画像を参照ピクチャメモリ109に記憶する。
ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適応ループフィルタ(ALF)を施す。
予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、符号化対象のピクチャ及びCU毎に予め定めた位置に記憶する。
参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を、符号化対象のピクチャ及びCU毎に予め定めた位置に記憶する。
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述した予測パラメータやこの予測パラメータに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータのセットの各々を用いてPUの予測画像Pを生成する。
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すコスト値を算出する。コスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化誤差と符号化パラメータをエントロピー符号化して得られる符号化ストリームTeの情報量である。二乗誤差は、減算部102において算出された残差信号の残差値の二乗値についての画素間の総和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして外部に出力し、選択されなかった符号化パラメータのセットを出力しない。符号化パラメータ決定部110は決定した符号化パラメータを予測パラメータメモリ108に記憶する。
予測パラメータ符号化部111は、符号化パラメータ決定部110から入力されたパラメータから、符号化するための形式を導出し、エントロピー符号化部104に出力する。符号化するための形式の導出とは、例えば動きベクトルと予測ベクトルから差分ベクトルを導出することである。また予測パラメータ符号化部111は、符号化パラメータ決定部110から入力されたパラメータから予測画像を生成するために必要なパラメータを導出し、予測画像生成部101に出力する。予測画像を生成するために必要なパラメータとは、例えばサブブロック単位の動きベクトルである。
インター予測パラメータ符号化部112は、符号化パラメータ決定部110から入力された予測パラメータに基づいて、差分ベクトルのようなインター予測パラメータを導出する。インター予測パラメータ符号化部112は、予測画像生成部101に出力する予測画像の生成に必要なパラメータを導出する構成として、インター予測パラメータ復号部303(図5等、参照)がインター予測パラメータを導出する構成と一部同一の構成を含む。インター予測パラメータ符号化部112の構成については、後述する。
イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力されたイントラ予測モードIntraPredModeから、符号化するための形式(例えばMPM_idx、rem_intra_luma_pred_mode等)を導出する。
(第2の実施形態)
(ブロック分割の種類)
はじめに、本実施形態に係る符号化ノード(CN:Coding Node)の分割について説明する。図7は、画像復号装置31における符号化ノード(CN、ブロック)の分割を示す図である。本実施形態においては、画像復号装置31は、符号化ツリーユニットまたはCNを4分木分割(QT分割)、2分木分割(BT分割)または3分木分割(TT分割)によって分割し、符号化処理の基本的な単位である符号化ユニット(CU:Coding Unit)に分割する。図7の(a)は、ブロックのQT分割を示している。また、図7の(b)は、ブロックを水平方向(HOR)にBT分割する例を示している。また、図7の(c)は、ブロックを垂直方向(VER)にBT分割する例を示している。図7の(b)および(c)に示すように、BT分割はブロックの分割される辺を1対1に分割する。また、図7の(d)は、ブロックを分割しない例を示している。図7の(e)は、ブロックを水平方向(HOR)にTT分割する例を示している。図7の(f)は、ブロックを垂直方向(VER)にTT分割する例を示している。TT分割はブロックの分割される辺を1対2対1に分割する。
なお、本明細書では、分割に関して、「水平」および「垂直」という用語は、分割線の方向を指すものとする。したがって、「水平分割」「水平方向(HOR)の分割」「水平に分割する」とは、水平な境界線による分割、すなわち、上と下の2つのブロックに分割することを意味する。また、「垂直分割」「垂直方向(VER)の分割」「垂直に分割する」とは、垂直な境界線による分割、すなわち、左と右の2つのブロックに分割することを意味する。
なお、本明細書では例示していないが別の用語法も存在する。すなわち、本明細書の水平分割を、あるブロックが垂直方向に並ぶ2つ以上のブロックに分割されるため、垂直に分割(split vertically)と呼ぶこともある。また、本明細書の垂直分割を、あるブロックが水平方向に並ぶ2つ以上のブロックに分割されるため水平に分割(split horizontally)と呼ぶこともある。上記、別の用語法における、垂直分割の記載が本明細書の水平分割を意味する(又はその逆)ことがあるので注意が必要である。この場合には、当該用語が意味するところにおいて適宜読み替える。
図8は、画像復号装置31が行う分木タイプのシグナリングを示す図である。図8に示すように、画像復号装置31は、CTUまたはCNに対して4分木(Quad-tree)分割を繰り返すことによってRT(region-tree)分割を行う。その後、画像復号装置31はPT(Partition Tree)分割(BT分割またはTT分割)のフラグがあると、ブロックを水平に分割するか、あるいは、垂直に分割するかを判断する。その後、画像復号装置31は当該分割がBT分割であるか、あるいは、TT分割であるかを判断し、ブロックを分割する。
図53及び図54は、画像復号装置31における符号化ノード(CN、ブロック)の分割の他の例を示す図である。本実施形態においては、画像復号装置31は、符号化ツリーユニットまたはCNを、一例として、マルチ9分木分割(Multi Nine Tree分割(MNT分割))、マルチ5分木分割(Multi Five Tree分割(MFT分割))、方向性4分木分割(Derectional Quad Tree分割(DQT分割))、方向性5分木分割(Directional Five Tree分割(DFT分割))、又は、方向性非対称4分木分割(Directional Asymmetric Quad Tree(DAQT分割))によって分割することにより、符号化処理の基本的な単位である符号化ユニット(CU:Coding Unit)に分割する。
図53の(a)は、ブロックに対するMNT分割を示している。また、図53の(b)は、ブロックに対するMFT分割の一例、図53の(c)はブロックに対するMFT分割の他の例を示している。また、図53の(d)は、ブロックに対するDQT分割の一例、図53の(e)は、ブロックに対するDQT分割の他の例を示している。また、図53の(f)は、ブロックに対するDFT分割の一例、図53の(g)は、ブロックに対するDFT分割の他の例を示している。
図54の(a)はブロックに対するDAQT分割の第1の例、図54の(b)はブロックに対するDAQT分割の第2の例、図54の(c)はブロックに対するDAQT分割の第3の例、図54の(d)はブロックに対するDAQT分割の第4の例を示している。
(MT分割モード群とPT分割モード群)
本実施形態では、上述した種々の分割モードを、MT分割モード群(MT分割)とPT分割モード群(PT分割)とに分類する。
ここで、MT分割にはQT分割が少なくとも含まれ、PT分割にはBT分割が少なくとも含まれる。
本実施形態では、パーティション数が4以上となる分割を、MT分割に分類し、パーティション数が3以下となる分割をPT分割に分類する。
より具体的には、本実施形態では、MT分割が、QT分割に加えて、
MNT分割、MFT分割、DQT分割、DFT分割、及び、DAQT分割
の少なくとも何れかを含んでおり、PT分割が、BT分割を含んでいる。またPT分割はTT分割を含んでいてよい。
すなわち、本実施形態では、パーティション数が4以上の分割を2つ以上備えること、さらに、上記パーティション数が4つ以上の分割の一つはQT分割である構成である。
言い換えると、本発明の一態様に係る画像復号装置は、ピクチャを符号化ツリーユニット毎に復号する画像復号装置において、上記符号化ツリーユニットの符号化ノードを分割する分割部を備え、上記分割部は、対象ノードを、4つ以上のノードに分割する分割方法として、(対象ノードが正方形である場合に)、正方形のノードに分割する分割モードと、長方形のノードを含むノードに分割する分割モードを含む。また、上記分割部は、対象ノードを、長方形のノードを含む4つ以上のノードに分割する。
なお、上記正方形のノードに分割するとは、直上位のノードが正方形である場合に、正方形のみのノードに分割されることである。例えばQT分割がこの場合になる。また、正方形には方向性がないので、QT分割を方向性を持たない分割と呼ぶことがある。上記長方形のノードを含むノードに分割するとは、直上位のノードが正方形である場合に、長方形のノードを含むノードに分割されることである。分割されたノードに、長方形のノードが含まれていれば、正方形のノードが含まれていても構わない。例えば、MNT分割、MFT分割、DQT分割、DFT分割、及び、DAQT分割がこの例である。また、DQT分割、DFT分割、DAQT分割は長方形の長辺の向きがすべて等しいので、方向性を持つ分割と呼ぶ。
画像復号装置31は、MT分割を示すMT情報、及びPT分割を示すPT情報を復号することによって、分割対象のCNに対して、何れの分割モードを適用すべきであるのかを特定する。
(冗長な分割の例)
本実施形態のように、TT分割が可能な構成においては、分割の組合せによって得られるブロックの分割パターンが増加する。そのため、画像符号化装置11における、ブロックの分割パターンの決定に要する時間が増加する。例えば、同じ分割パターンを得るために、複数の分割過程が生じ得る。図9は、異なる分割過程によって同じ分割パターンが得られる例を示している(冗長な分割の例)。図9に示すように、ブロック(例えば、CTU)を水平方向にTT分割し、さらに、該TT分割により得られた中央ブロックを水平方向にBT分割して得られる分割パターンと、ブロックを水平方向にBT分割し、さらに、該BT分割により得られた2つのブロックを水平方向にBT分割して得られる分割パターンとは同じ分割パターンになる。
本実施形態に係る、画像符号化装置11および画像復号装置31はブロックの冗長な分割を制限する。上記の構成によれば、画像符号化装置11は同じ分割パターンを複数回評価する必要が無くなる。また、冗長な分割が禁止されるため、該分割に係るフラグなどの符号化データは不要となる。そのため、画像符号化装置11の符号化効率が向上する。
(画像復号装置の構成)
図10に、本実施形態に係る画像復号装置31の構成を示すブロック図を示す。本図では、図を簡略化するために、図10に示したブロック図に含まれる一部の部材の図示を省略している。また、説明の便宜上、図5に示した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
図10に示すように、画像復号装置31は、復号モジュール9、CN情報復号部10(分割情報復号部、分割部)、予測画像生成部308、逆量子化・逆DCT部311、参照ピクチャメモリ306、加算部312、ループフィルタ305、ヘッダ復号部19、及びCU復号部20を備えている。CU復号部20は、さらにPU情報復号部12及びTT(Transform Tree)情報復号部13を備えており、TT情報復号部13は、さらにTU復号部22を備えている。
(復号モジュール)
以下、各モジュールの概略動作を説明する。復号モジュール9は、バイナリデータからシンタックス値を復号する復号処理を行う。復号モジュール9は、より具体的には、供給元から供給される符号化データ及びシンタックス種別に基づいて、CABAC等のエントロピー符号化方式により符号化されているシンタックス値を復号し、復号したシンタックス値を供給元に返す。
以下に示す例では、符号化データ及びシンタックス種別の供給元は、CN情報復号部10、CU復号部20(PU情報復号部12及びTT情報復号部13)である。
(ヘッダ復号部)
ヘッダ復号部19は、画像符号化装置11から入力された符号化データのVPS(video parameter set)、SPS、PPS、スライスヘッダを復号する。
(CN情報復号部)
CN情報復号部10は、復号モジュール9を用いて、画像符号化装置11から入力された符号化データについて、符号化ツリーユニット(符号化ツリーユニット毎)及び符号化ノードの復号処理を行う。CN情報復号部10は、具体的には、以下の手順により符号化データから、CTU情報及びCN情報を復号する。
まず、CN情報復号部10は、復号モジュール9を用いて、CTUに含まれるCTU情報からツリーユニットヘッダCTUHを復号する。次に、CN情報復号部10は、CNに含まれるCN情報から、対象CNをQT分割するか否かを示すQT分割フラグ、対象CNをBT分割またはTT分割するか否かを示すPT分割フラグ、BT分割またはTT分割の分割方向を示す分割方向フラグ、PT分割の分割方法(BT分割またはTT分割)を示す分割モード選択フラグを復号し、QT分割フラグ及びPT分割フラグがさらなる分割を通知しなくなるまで対象CNを再帰的に分割し復号する。あるいは、QT分割フラグの代わりに、対象CNをMT分割するか否かを示すMT分割フラグ、対象CNをPT分割するか否かを示すPT分割フラグ、MT分割またはPT分割の分割方向を示す分割方向フラグ、を復号し、MT分割フラグ及びPT分割フラグがさらなる分割を通知しなくなるまで対象CNを再帰的に分割し復号する。最後に、CTU情報からツリーユニットフッタCTUFを復号する。
ツリーユニットヘッダCTUH及びツリーユニットフッタCTUFには、対象符号化ツリーユニットの復号方法を決定するために画像復号装置31が参照する符号化パラメータが含まれる。また、CN情報には、QT分割フラグ、PT分割フラグ、分割方向フラグ及びPT分割の分割方法(BT分割またはTT分割)を示す分割モード選択フラグ、MT分割の分割方法を示すMT分割モード選択フラグの他、対象CN及び下位または上位の符号化ノードで適用されるパラメータを含んでいてもよい。
(CU復号部)
CU復号部20は、PU情報復号部12及びTT情報復号部13から構成され、最下位の符号化ノードCN(すなわちCU)のPUI情報及びTTI情報を復号する。
(PU情報復号部)
PU情報復号部12では各PUのPU情報(マージフラグ(merge_flag)、マージインデックス(merge_idx)、予測動きベクトルインデックス(mvp_idx)、参照画像インデックス(ref_idx)、インター予測識別子(inter_pred_flag)、及び差分ベクトル(mvd)等)を、復号モジュール9を用いて復号する。
(TT情報復号部)
TT情報復号部13は、各TTI(TU分割フラグSP_TU(split_transform_flag)、CU残差フラグCBP_TU(cbf_cb、cbf_cr、cbf_luma)等、及びTU)を、復号モジュール9を用いて復号する。
また、TT情報復号部13は、TU復号部22を備えている。TU復号部22は、TUに残差が含まれている場合に、QP更新情報(量子化補正値)を復号する。なお、QP更新情報は、量子化パラメータQPの予測値である量子化パラメータ予測値qPpredからの差分値を示す値である。またTU復号部22は、量子化予測残差(residual_coding)を復号する。
(QT情報復号処理)
CN情報復号部10によるCN情報復号の動作について、図11および図12を参照して説明する。図11は、本発明の一実施形態に係るCN情報復号部10のQT情報復号処理を説明するフローチャートである。また、図12は、本発明の一実施形態に係るQT情報のシンタックス表の構成例を示す図である。
CN情報復号部10によるCN情報復号S1400では、QT情報復号と、BT情報またはTT情報(BT/TT情報)復号とを行う。以下では、CN情報復号部10によるQT情報復号について順に説明する。
まず、CN情報復号部10は、符号化データからCN情報を復号し、再帰的に符号化ノード(CN:Coding Node)を復号する。具体的には、CN情報復号部10は、QT情報を復号し、対象符号化ツリーcoding_quadtree(x0, y0, log2CbSize, cqtDepth)を復号する。なお、x0, y0は、対象符号化ノードの左上座標、log2CbSizeは符号化ノードのサイズであるCNサイズの2を底とした対数である対数CNサイズ(例えば、CNサイズが64, 128, 256であれば6, 7, 8)である。サイズXの2を底とした対数を「対数Xサイズ」と呼ぶ。cqtDepthは符号化ノードの階層を示すCN階層(QT深度)である。
(S1411)CN情報復号部10は、復号したCN情報にQT分割フラグがあるか否かを判定する。具体的には、CN情報復号部10は、対数CNサイズlog2CbSizeが所定の最小CNサイズの対数値MinCbLog2SizeYより大きいか否かを判定する。対数CNサイズlog2CbSizeがMinCbLog2SizeYより大きい場合には、QT分割フラグがあると判定し、S1421に遷移する。それ以外の場合には、S1422に遷移する。
(S1421)CN情報復号部10は、対数CNサイズlog2CbSizeがMinCbLog2SizeYより大きいと判定された場合には、シンタックス要素であるQT分割フラグ(split_cu_flag)を復号する。
(S1422)CN情報復号部10は、それ以外の場合(対数CNサイズlog2CbSizeがMinCbLog2SizeY以下)、つまり、符号化データにQT分割フラグsplit_cu_flagが現れない場合には、符号化データからのQT分割フラグsplit_cu_flagの復号を省略し、QT分割フラグsplit_cu_flagを0として導出する。
(S1431)CN情報復号部10は、QT分割フラグsplit_cu_flagが0以外(=1)である場合には、後述の(S1441)を実施し、一階層下に移行して(S1411)以降の処理を繰り返す。それ以外の場合(QT分割フラグsplit_cu_flagが0の場合)には、BT/TT情報復号処理に遷移する。
(S1441)CN情報復号部10は、QT分割を行う。具体的には、CN情報復号部10は、CN階層cqtDepth + 1の位置(x0, y0)、(x1, y0)、(x0, y1)、(x1, y1)で、対数CNサイズlog2CbSize - 1の4つの符号化ノードCNを復号する。
coding_quadtree(x0, y0, log2CbSize - 1, cqtDepth + 1 )
coding_quadtree(x1, y0, log2CbSize - 1, cqtDepth + 1 )
coding_quadtree(x0, y1, log2CbSize - 1, cqtDepth + 1 )
coding_quadtree(x1, y1, log2CbSize - 1, cqtDepth + 1 )
ここで、x0, y0は、対象符号化ノードの左上座標、x1, y1は、以下の式のように、(x0,y0)に、CNサイズ(1 <<log2CbSize)の1/2を加えて導出される。
x1 = x0 + (1<<( log2CbSize - 1 ) )
y1 = y0 + (1<<( log2CbSize -1 ) )
なお、<<は左シフトを示す。1<<Nは2のN乗と同値である(以下同様)。同様に>>は右シフトを示す。
そして、CN情報復号部10は、符号化ノードの階層を示すCN階層cqtDepthに1を加算し、符号化ユニットサイズの対数値である対数CNサイズlog2CbSizeを1だけ減算(CNサイズを1/2)して更新する。
cqtDepth = cqtDepth + 1
log2CbSize = log2CbSize - 1
CN情報復号部10は、下位の符号化ノードにおいても、更新された左上座標、対数CNサイズ、CN階層を用いて、S1411から開始されるQT情報復号を継続する。
(制限されている分割パターンの例)
ここで、本実施形態に係るCN情報復号部10が制限するCNの分割パターンの例について、図13~図15を用いて説明する。
CN情報復号部10は、対象ノードの分割の仕方を、当該対象ノードよりも一世代上位のノードである直上位ノードの分割の仕方を参照して制限する。
なお、以降の説明において、分割対象となるブロック(CN)を分割対象ブロックまたは対象ブロックとよび、分割対象ブロックの直上位ブロックを上位ブロックとよぶ。また、下記の説明においては、上位ブロックを参照し、分割対象となるブロックの分割パターンを制限する例を示すが、CN情報復号部10は分割対象ブロックを参照し、直下の下位ブロックの分割パターンを制限してもよい。図13~図15は、CN情報復号部10が制限している分割パターンの一例を示している。なお、図13~図15における実線は上位の符号化ノードまたは符号化ツリーユニット(上位ブロック)を分割することによって生じた符号化ノード(ブロック)の境界を示している。また、〇印は、分割対象ブロックにおいて点線の直線が示す分割が可能であることを示している。また、×印は、分割対象ブロックにおいて点線の直線が示す分割が制限(禁止)されていることを示している。
(制限されている分割パターン:A-a1)
図13の(a)および(b)に示す例では、CN情報復号部10は上位ブロックをTT分割することによって生じた中央の分割対象ブロックを、上位ブロックの分割方向と同じ方向にBT分割することを制限(禁止)する。
換言すると、対象ブロックが、上位ブロックに対する三分木分割により得られた3つのブロックのうち中央のブロックである場合に、CN情報復号部10は、対象ブロックを、上位ブロックに対する三分木分割と同じ方向に二分木分割することを制限する。
(制限されている分割パターン:A-a2)
また、図13の(c)および(d)に示す例では、CN情報復号部10は上位ブロックをBT分割することによって生じたブロックの両方を、上位ブロックの分割方向と同じ方向にBT分割することを制限(禁止)する。換言すると、上位ブロックの分割によって生じたブロックの一方に限っては、上位ブロックの分割方向と同じ方向にBT分割することが可能である。
先に処理するブロックの処理の時点では上記制限が適用されることはない。そのため、CN情報復号部10は、後に処理するブロックの処理の時点にて、先に処理されたブロックの分割方向を参照し、後に処理するブロックの分割が制限されているか否かを判定する。
上記の制限について、次のように表現することもできる。対象ブロックが、上位対象ブロックに対する二分木分割により得られた2つのブロックの1つである場合であって、当該2つのブロックのうちの他のブロックが、上位ブロックに対する二分木分割と同じ方向に二分木分割された場合に、CN情報復号部10は、対象ブロックを、上位ブロックに対する二分木分割と同じ方向に二分木分割することを制限する。
(制限されている分割パターン:A-a2’)
また、図13の(e)および(f)に示す例では、CN情報復号部10は上位ブロックをBT分割することによって生じたブロックの何れか1つを、上位ブロックの分割方向と同じ方向にBT分割することを制限(禁止)する。分割の制限を受けるブロックは、例えば、上位ブロックの分割によって生じた2つのブロックのうち、後に分割処理されるブロックとしてもよいが、特に限定はされない。
換言すると、対象ブロックが、上位ブロックに対する二分木分割により得られた2つのブロックの1つである場合に、CN情報復号部10は、対象ブロックを、上位ブロックに対する二分木分割と同じ方向に二分木分割することを制限する。
(制限されている分割パターン:A-b1)
また、図14の(a)および(b)に示す例では、CN情報復号部10は上位ブロックをTT分割することによって生じたブロックの全てを、上位ブロックと異なる方向にBT分割することを制限(禁止)する。換言すると、上位ブロックの分割によって生じた3つのブロックのうち、2つのブロックについては、上位ブロックの分割方向と異なる方向にBT分割することができる。本例においては、最後に分割処理される上位ブロックの分割によって生じたブロックの分割処理の時点にて、他の上位ブロックの分割によって生じたブロックの分割方向を参照し、最後に分割処理されるブロックの分割が制限されているか否かを判定する。
本制限については、以下のように表現することもできる。対象ブロックが、上位ブロックに対する三分木分割により得られた3つのブロックの1つである場合であって、当該3つのブロックのうちの他の2つのブロックが、上位ブロックに対する三分木分割と異なる方向に二分木分割された場合に、CN情報復号部10は、対象ブロックを、上位ブロックに対する三分木分割と異なる方向に二分木分割することを制限する。
(制限されている分割パターン:A-b1’)
また、図14の(c)および(d)に示す例では、CN情報復号部10は上位ブロックをTT分割することによって生じたブロックの何れか1つのブロックを、上位ブロックの分割方向と異なる方向にBT分割することを制限(禁止)する。分割の制限を受けるブロックは、例えば、上位ブロックの分割によって生じたブロックのうち最後に分割処理されるブロックとしてもよいが、特に限定はされない。
換言すると、対象ブロックが、上位ブロックに対する三分木分割により得られた3つのブロックの1つである場合に、CN情報復号部10は、対象ブロックを、上位ブロックに対する三分木分割と異なる方向に二分木分割することを制限する。
また、図14の(e)および(f)に示す例では、CN情報復号部10は上位ブロックをBT分割することによって生じたブロックの両方を、上位ブロックの分割方向と異なる方向にTT分割することを制限(禁止)する。換言すると、上位ブロックの分割によって生じた一方のブロックに限っては、上位ブロックの分割方向と異なる方向にTT分割することが可能である。
本制限は以下のように表現することもできる。対象ブロックが、上位ブロックに対する二分木分割により得られた2つのブロックの1つである場合であって、当該2つのブロックのうちの他のブロックが、上位ブロックに対する二分木分割と異なる方向に三分木分割された場合に、CN情報復号部10は、対象ブロックを、上位ブロックに対する二分木分割と異なる方向に三分木分割することを制限する。
(制限される分割パターン:A-b2’)
また、図14の(g)および(h)に示す例では、CN情報復号部10は上位ブロックをBT分割することによって生じたブロックの何れか1つを、上位ブロックの分割方向と異なる方向にTT分割することを制限(禁止)する。分割の制限を受けるブロックは、例えば、上位ブロックの分割によって生じた2つのブロックのうち、後に分割処理されるブロックとしてもよいが、特に限定はされない。
換言すると、対象ブロックが、上位ブロックに対する二分木分割により得られた2つのブロックの1つである場合に、CN情報復号部10は、対象ブロックを、上位ブロックに対する二分木分割と異なる方向に三分木分割することを制限する。
(制限される分割パターン:A-c)
また、図15の(a)および(b)に示す例では、CN情報復号部10は上位ブロックをTT分割することによって生じたブロックの全てを、上位ブロックの分割方向と異なる方向にTT分割することを制限(禁止)する。換言すると、上位ブロックの分割によって生じた3つのブロックのうち、2つのブロックについては、上位ブロックの分割方向と異なる方向にTT分割することができる。
なお、本例において、上位ブロックの分割によって生じたブロックの水平方向および垂直方向の両方のTT分割を制限(禁止)すると、9分割の分割パターンが作れなくなる。そのため、CN情報復号部10は水平方向または垂直方向のいずれかのみで該分割を制限(禁止)してもよい。
本制限は以下のように表現することもできる。対象ブロックが、上位ブロックに対する三分木分割により得られた3つのブロックの1つである場合であって、当該3つのブロックのうちの他の2つのブロックが、上位ブロックに対する三分木分割と異なる方向に三分木分割された場合に、CN情報復号部10は、対象ブロックを、上位ブロックに対する三分木分割と異なる方向に三分木分割することを制限する。
(制限される分割パターン:A-c’)
また、図15の(c)および(d)に示す例では、CN情報復号部10は上位ブロックをTT分割することによって生じたブロックの何れか1つのブロックを上位ブロックの分割方向と異なる方向にTT分割することを制限(禁止)する。分割の制限を受けるブロックは、例えば、上位ブロックの分割によって生じたブロックのうち、最後に分割処理されるブロックとしてもよいが、特に限定はされない。
換言すると、対象ブロックが、上位ブロックに対する三分木分割により得られた3つのブロックの1つである場合に、CN情報復号部10はは、対象ブロックを、上位ブロックに対する三分木分割と異なる方向に三分木分割することを制限する。
(BT/TT情報復号処理の流れの概要)
次に、CN情報復号部10によるBT/TT情報復号処理の概要について、図16を参照して説明する。図16は、CN情報復号部10のBT/TT情報復号処理の流れの一例の概要を示すフローチャートである。
上述のS1431にて、QT分割フラグsplit_cu_flagが0の場合に、CN情報復号部10は対象ブロックがPT分割できるか否かを対象ブロックのサイズ等から判定し、PT分割フラグの復号の要否を判定する(S1501:PT分割フラグ判定)。PT分割フラグの復号が「要」である場合(S1501でYES)、CN情報復号部10はPT分割フラグを復号する(S1502)。続いて、CN情報復号部10は復号したPT分割フラグが0であるか否かを判定する(S1503)。PT分割フラグが0である場合(S1503でNO)、処理は終了する。PT分割フラグが0以外である場合(S1503でYES)、CN情報復号部10は、分割対象ブロックの分割方向が設定されているブロックの分割の制限等によって一意で決まるか否かなどを判定し、分割方向フラグの復号の要否の判定を行う(S1504:分割方向フラグ判定)。分割方向フラグの復号が「要」である場合(分割方向が一意に決まらない場合等)(S1504でYES)、CN情報復号部10は分割方向フラグを復号し(S1505)、分割方向を決定し、処理はS1506に続く。分割方向フラグの復号が「不要」である場合(分割方向が一意で決まる場合等)(S1504でNO)、CN情報復号部10は分割方向フラグを復号せずに、処理はS1506に続く。S1506にて、CN情報復号部10は、分割対象ブロックの分割モード(TT分割、BT分割)が設定されているブロックの分割の制限等によって分割モードが一意で決まるか否かなどを判定し、分割モード選択フラグの復号の要否の判定を行う(S1506:分割モード選択フラグ判定)。分割モード選択フラグの復号が「要」である場合(分割モードが一意で決まらない場合等)(S1506でYES)、CN情報復号部10は分割モード選択フラグを復号し(S1507)、分割モードを決定し、処理はS1508に続く。分割モード選択フラグの復号が「不要」である場合(分割モードが一意で決まる場合等)(S1506でNO)、CN情報復号部10は分割モード選択フラグを復号せずに、処理はS1508に続く。続いて、S1508にて、CN情報復号部10は分割対象ブロックを決定した方向と決定した分割モードとによって分割する(S1508)。続いて、当該分割によって生じたブロックに対してBT/TT情報復号処理を繰り返し行うループ処理を行う(S1509、S1510、S1511)。当該ループ処理が終了すると処理は終了する。
(BT/TT情報復号処理の詳細)
次に、BT/TT情報復号処理に含まれる各処理の詳細について、図17から図39を用いて説明する。
(PT分割フラグ判定、PT分割フラグの復号、PT分割フラグによる分割の要否判定)
初めに、図17を用いて、PT分割フラグ判定処理の詳細について説明する。図17の(a)は、PT分割フラグ判定処理を示す疑似コードの一例を示す図であり、(b)はPT分割フラグの復号処理を示す疑似コードの一例を示す図である。図17の(a)に示すように、CN情報復号部10は、BT分割またはTT分割のいずれかで分割可能であれば、PT分割可能と判定し、PT分割フラグsplit_pt_flagの復号を「要」と判断する(TRUE)。続いて、図17の(b)に示すように、CN情報復号部10は、PT分割フラグsplit_pt_flagを復号し、split_pt_flagからPT分割の要否を判断する。また、BT分割またはTT分割のいずれにおいても分割可能でなければ、CN情報復号部10は、PT分割フラグsplit_pt_flagの復号は「不要」と判断する(FALSE)。BT分割可能判定およびTT分割可能判定については、詳細を後述する。なお、本処理において、設定されるBTAvailableおよびTTAvailableは、BT/TT分割情報復号処理における、他のサブルーチンからも呼び出され、参照可能としてもよい。
(BT分割可能判定)
次に、図17(a)のBT分割可能判定処理の詳細について、図18を用いて説明する。図18の(a)は、上述した制限されている分割パターンがない場合における、BT分割可能判定処理を示す疑似コードの一例を示す図である。図18の(a)に示すようにCN情報復号部10は、CUのサイズの最小値を示すminPTSize(単位サイズ)を導出する。CN情報復号部10は、以下の条件1から条件3を用いて、BT分割可能判定を行う。
条件1:分割の対象となるブロックの高さがminPTSize×2以上、または、分割の対象となるブロックの幅がminPTSize×2以上である(height >= minPTSize*2||width >= minPTSize*2)。
条件2:分割対象ブロックの幅および高さがCUのサイズの最大値を示すmaxPTSize以下である(width <= maxPTSize && height <= maxPTSize)。
条件3:分割対象ブロックの階層を示すcptDepthがmaxPTDepthより小さい(cptDepth<maxPTDepth)。なお、各ブロックにおけるDepthの値は、ブロックの面積比にもとづいてd = log2( (maxPTSize^2)/(width*height) )としてもよい。あるいは別の方法として、上位ブロックのDepthの値に1を加えたものでもよい。
上記条件1~3の全てを満たす場合、CN情報復号部10はBT分割可能(TRUE)と判定する。また、上記条件1~3の全てが満たされない場合、CN情報復号部10は、BT分割はできない(FALSE)と判定する。
次に、上述した制限されている分割パターンがある場合のBT分割可能判定処理について説明する。図18の(b)は、上述した制限されている分割パターンがある場合における、BT分割可能判定処理を示す疑似コードの一例を示す図である。図18の(b)の示すように、制限されている分割パターンがある場合、上記条件1~3に加えて、BT分割可能判定_追加条件が満たされた場合、CN情報復号部10はBT分割可能(TRUE)と判定する。BT分割可能判定_追加条件は、制限されている分割パターンによって異なる。BT分割可能判定_追加条件の詳細については後述する。
(TT分割可能判定)
次に、TT分割可能判定処理の詳細について、図19を用いて説明する。図19の(a)は、上述した制限されている分割パターンがない場合における、TT分割可能判定処理を示す疑似コードの一例を示す図である。CN情報復号部10は、CUのサイズの最小値を示すminPTSize(単位サイズ)を導出する。CN情報復号部10は、以下の条件1から条件3を用いて、TT分割可能判定を行う。
条件1:TT分割は分割対象ブロックの辺を1:2:1に分割する。そのため、分割の対象となるブロックの高さがminPTSize×4以上、または、分割の対象となるブロックの幅がminPTSize×4以上である((height >= minPTSize*4||width >= minPTSize*4)。
条件2:分割の対象となるブロックの幅および高さがCUのサイズの最大値を示すmaxPTSize以下である(width <= maxPTSize && height <= maxPTSize)。
条件3:分割の対象となるブロックの階層を示すcptDepthがmaxPTDepthより小さい(cptDepth < maxPTDepth)。
上記条件1~3の全てを満たす場合、CN情報復号部10はTT分割可能(TRUE)と判定する。また、上記条件1~3の全てが満たされない場合、CN情報復号部10は、TT分割はできない(FALSE)と判定する。
次に、上述した制限されている分割パターンがある場合のTT分割可能判定処理について説明する。図19の(b)は、上述した制限されている分割パターンがある場合における、TT分割可能判定処理を示す疑似コードの一例を示す図である。図19の(b)の示すように、制限されている分割パターンがある場合、上記条件1~3に加えて、TT分割可能判定_追加条件が満たされた場合、CN情報復号部10はTT分割可能(TRUE)と判定する。TT分割可能判定_追加条件とは、制限されている分割パターンによって異なる。BT分割可能判定_追加条件の詳細については後述する。
なお、CN情報復号部10は、BT分割可能か否かの判定に用いた最小サイズ(=minPTSize*2)の値の2倍の値をminPTSize*4として用いて、TT分割可能か否かを判定してもよい。
換言すると、CN情報復号部10は対象ブロックを二分木分割することが可能か否かを判定するために参照した最小サイズの2倍のサイズを参照して、当該対象ブロックが三分木分割可能か否かを判定する。
上記の構成によれば、TT分割によってできるブロックが、予測または変換が可能でないサイズになる場合、すなわちTT分割を使うことができない場合に、PT分割フラグや分割モード選択フラグの符号量を減少させることができる。そのため、符号化効率が向上する。さらにTT分割の判定において、BT分割の判定に用いた値の2倍のサイズを用いることにより、分割後のブロックの最小サイズをBT分割とTT分割とで同じサイズとすることができる。そのため、BT分割とTT分割とにおいて処理を共通化できる。
(cptDepthの導出方法の例1)
また、上述のように、CN情報復号部10は、BT分割可能判定およびTT分割可能判定にて、共通のデプス変数cptDepth(一時変数)を用いて、分割可能となるブロックの階層を制限する構成である。すなわち、CN情報復号部10は、PT(BTまたはTT)分割可能か否かの判定に、共通デプスが閾値maxPTDepth未満であるか否かを用いて判定する。
換言すると、CN情報復号部10は対象ブロックの分割を、二分木分割及び三分木分割に共通のデプス変数を参照して制限する。上記構成によれば、分割可能となるブロックの階層を制限することにより、BT分割とTT分割の組み合わせを減少させることができる。そのため、符号化、復号の複雑度を低減することができる。すなわち、BT分割とTT分割との膨大な組合せのために、符号化、復号が複雑になるという問題点を解決することができる。cptDepthは、BT分割の分割デプスbtDepthとTT分割の分割デプスttDepthとの和で導出してもよい。すなわち、
cptDepth = btDepth + ttDepth
となる。
cptDepthの導出としては、例えば、cptDepthの初期値を0に設定し、ブロックをBT分割またはTT分割した時に、上位ブロックの分割によって生じるブロックのcptDepthの値を{上位ブロックのcptDepthの値}+1としてもよい。そして、再帰的に一つ下の階層のブロックのCU情報復号処理を継続してもよい。
BT分割の分割デプスbtDepthとTT分割の分割デプスttDepthとを導出する場合においても、同様に、btDepthの初期値を0に設定し、ブロックをBT分割した時に、上位ブロックの分割によって生じるブロックのbtDepthの値を{上位ブロックのbtDepthの値}+1としてもよい。また、ttDepthの初期値を0に設定し、ブロックをTT分割した時に、上位ブロックの分割によって生じるブロックのttDepthの値を{上位ブロックのbtDepthの値}+1としてもよい。
(cptDepthの導出方法の例2)
他のcptDepthの導出方法について説明する。例えば、デプスcptDepthの初期値を0に設定し、ブロックをBT分割した時に、該分割によって生じるブロックのcptDepthの値をcptDepth+1とする。また、ブロックをTT分割した時に、該分割によって生じるブロックがTT分割の中央部であれば(partIdx==1)、cptDepthの値を{上位ブロックのcptDepthの値}+1とする。また、ブロックをTT分割した時に、該分割によって生じるブロックがTT分割の中央部以外であれば(partIdx==0 or partIdx==2)、cptDepthの値を{上位ブロックのcptDepthの値}+2としてもよい。そして、再帰的に一つ下の階層のブロックのCU情報復号処理を継続してもよい。
BT分割の分割デプスbtDepthとTT分割の分割デプスttDepthとを導出する場合においても、同様に、btDepthの初期値を0に設定し、ブロックをBT分割した時に、上位ブロックの分割によって生じるブロックのbtDepthの値を{上位ブロックのbtDepthの値}+1としてもよい。また、ttDepthの初期値を0に設定し、ブロックをTT分割した時に、該分割によって生じるブロックがTT分割の中央部であれば(partIdx==1)、ttDepthの値を{上位ブロックのtttDepthの値}+1とする。また、ブロックをTT分割した時に、該分割によって生じるブロックがTT分割の中央部以外であれば(partIdx==0 or partIdx==2)、ttDepthの値を{上位ブロックのttDepthの値}+2としてもよい。
(BT/TT分割可能判定(A-a1の追加条件))
次に、図13の(a)および(b)に示した、制限されている分割パターン(A-a1:CN情報復号部10は上位ブロックをTT分割することによって生じた中央のブロックを、上位ブロックの分割方向と同じ方向にBT分割することを制限(禁止)する)に対するBT分割可能判定の追加条件について、図20を用いて説明する。
図20から図25はBT/TT分割可能判定の追加条件の例を示す図である。図20に示すように、上位ブロックの分割モードがTT分割でない、または、分割対象ブロックがTT分割の中央ブロックでない(parentSplitMode != MODE_TT || partIdx != 1)場合、CN情報復号部10はBT分割は可能(TRUE)と判定する。例えば、MODE_TT=1, MODE_BT=0としてもよい。
また、上位ブロックの分割方向が水平かつ分割対象ブロックの幅がminPTSize×2よりも小さい(parentSplitDir == 0 && width < minPTSize*2)場合、または、上位ブロックの分割方向が垂直かつ分割対象ブロックの高さがminPTSize×2よりも小さい(parentSplitDir == 1 && height < minPTSize*2)場合、CN情報復号部10はBT分割できないと判定する(FALSE)。
なお、制限されている分割パターン(A-a1)においては、TT分割可能判定_追加条件()のサブルーチンは不要である。そのため、CN情報復号部10はTT分割可能判定_追加条件を呼び出さない、または、TT分割可能判定_追加条件に対して、常にTRUEを返す構成としてもよい。
(BT/TT分割可能判定(A-a2の追加条件))
次に、図13の(c)および(f)に示した、制限されている分割パターン(A-a2:CN情報復号部10は上位ブロックをBT分割することによって生じたブロックの両方を、上位ブロックの分割方向と同じ方向にBT分割することを制限(禁止)する(BT分割の最後に処理するブロックを上位ブロックの分割方向と同じ方向にBT分割することを禁止する))に対するBT分割可能判定の追加条件について、図21を用いて説明する。
図21に示すように、上位ブロックの分割モードがBT分割でない、または、対象ブロックのpartIdxが1でない(parentSplitMode != MODE_BT || partIdx != 1)場合、CN情報復号部10はBT分割は可能(TRUE)と判定する。
また、分割対象ブロックに対する分割モードがBT分割であり、かつ、分割対象ブロックのpartIdxが1である(MODE_BT && partIdx == 1)場合は以下の通りである。
上位ブロックの分割方向が水平方向の場合(parentSplitDir == 0)、CN情報復号部10は同一の上位ブロックから分割されて生じたブロックにおいて、水平方向のBT分割が使われた回数を示すsiblingHorBTCountを導出する。上位ブロックから分割されて生じた他ブロックを水平方向にBT分割しており、かつ、分割対象ブロックの幅がminPTSize×2よりも小さい(siblingHorBTCount == 1 && width < minPTSize*2))場合、CN情報復号部10は分割対象ブロックをBT分割できないと判定する(FALSE)。
また、上位ブロックの分割方向が垂直方向の場合(parentSplitDir == 1)、CN情報復号部10は同一の上位ブロックから分割されて生じたブロックにおいて、垂直方向のBT分割が使われた回数を示すsiblingVerBTCountを導出する。上位ブロックから分割されて生じた他ブロックを垂直方向にBT分割しており、かつ、分割対象ブロックの高さがminPTSize×2よりも小さい(siblingVerBTCount == 1 && height < minPTSize*2)場合、CN情報復号部10は分割対象ブロックをBT分割できないと判定する(FALSE)。
CN情報復号部10は、分割対象ブロックが上述のBT分割できない条件を満たさない場合、BT分割できる(TRUE)と判定する。なお、制限されている分割パターン(A-a2)においては、TT分割可能判定_追加条件()のサブルーチンは不要である。
また、制限されている分割パターン(A-a2’:CN情報復号部10は上位ブロックをBT分割することによって生じたブロックの何れか1つを、上位ブロックの分割方向と同じ方向にBT分割することを制限(禁止)する)におけるBT分割可能判定_追加条件は、制限されている分割パターン(A-a2)のBT分割可能判定_追加条件の一部を変更することで実現される。具体的には、CN情報復号部10はsiblingHorBTCount/siblingVerBTCountを導出しない。また、CN情報復号部10はsiblingHorBTCount/siblingVerBTCountを用いる条件について判定しない(TRUEとする)。また、分割が制限されるブロックを分割処理が最後となるブロック以外とする場合は、追加条件におけるpartIdxの値を制限の対象となるブロックを表す値に変更することによって実現することができる。
(BT/TT分割可能判定(A-b1の追加条件))
次に、図14の(a)から(d)に示した、制限されている分割パターン(A-b1:CN情報復号部10は上位ブロックをTT分割することによって生じたブロックの全てを、上位ブロックと異なる方向にBT分割することを制限(禁止)する)に対するBT分割可能判定の追加条件について、図22を用いて説明する。本制限においては、CN情報復号部10はTT分割することによって生じたブロックのうち、最後に分割処理されるブロックに対して制限を行う。
図22に示すように、上位ブロックの分割モードがTT分割でない、または、対象ブロックのpartIdxが2でない(parentSplitMode != MODE_TT || partIdx != 2)場合、CN情報復号部10はBT分割は可能(TRUE)と判定する。
また、上位ブロックの分割モードがTT分割であり、かつ、分割対象ブロックのpartIdxが2である(MODE_TT && partIdx == 2)場合は以下の通りである。
上位ブロックの分割方向が水平方向の場合(parentSplitDir == 0)、CN情報復号部10はsiblingVerBTCountを導出する。上位ブロックから分割されて生じた他2つのブロックを垂直方向にBT分割しており(つまり、垂直方向のBT分割は制限されて不可能である)、かつ、分割対象ブロックの高さがminPTSize×2よりも小さい(siblingVerBTCount == 2 && height < minPTSize*2)ために水平方向のBT分割も不可能である場合、CN情報復号部10は分割対象ブロックをBT分割できないと判定する(FALSE)。
また、上位ブロックの分割方向が垂直方向の場合(parentSplitDir == 1)、CN情報復号部10はsiblingHorBTCountを導出する。上位ブロックから分割されて生じた他2つのブロックを水平方向にBT分割しており(つまり、水平方向のBT分割は制限されて不可能である)、かつ、分割対象ブロックの幅がminPTSize×2よりも小さい(siblingHorBTCount == 2 && width < minPTSize*2)ために垂直方向のBT分割も不可能である場合、CN情報復号部10は分割対象ブロックをBT分割できないと判定する(FALSE)。
CN情報復号部10は、分割対象ブロックが上述のBT分割できない条件を満たさない場合、BT分割できる(TRUE)と判定する。なお、制限されている分割パターン(A-b1)においては、TT分割可能判定_追加条件()のサブルーチンは不要である。
また、制限されている分割パターン(A-b1’:CN情報復号部10は上位ブロックをTT分割することによって生じたブロックの何れか1つのブロックを、上位ブロックの分割方向と異なる方向にBT分割することを制限(禁止)する)におけるBT分割可能判定_追加条件は、制限されている分割パターン(A-b1)のBT分割可能判定_追加条件の一部を変更することで実現される。具体的には、CN情報復号部10はsiblingHorBTCount/siblingVerBTCountを導出しない。また、CN情報復号部10はsiblingHorBTCount/siblingVerBTCountを用いる条件について判定しない(TRUEとする)。また、分割が制限されるブロックを分割処理が最後となるブロック以外とする場合は、追加条件におけるpartIdxの値を変更することによって実現することができる。
(BT/TT分割可能判定(A-b2の追加条件))
次に、図14の(e)から(h)に示した、制限されている分割パターン(A-b2:CN情報復号部10は上位ブロックをBT分割することによって生じたブロックの両方を、上位ブロックの分割方向と異なる方向にTT分割することを制限(禁止)する)に対するTT分割可能判定の追加条件について、図24を用いて説明する。本制限においては、CN情報復号部10はBT分割することによって生じたブロックのうち、最後に分割処理されるブロックに対して制限を行う。
図24に示すように、上位ブロックの分割モードがBT分割でない、または、対象ブロックのpartIdxが1でない場合、(parentSplitMode != MODE_BT || partIdx != 1)場合、CN情報復号部10はTT分割は可能(TRUE)と判定する。
また、上位ブロックの分割モードがBT分割であり、かつ、分割対象ブロックのpartIdxが1である(MODE_BT && partIdx == 1)場合は以下の通りである。
上位ブロックの分割方向が水平方向の場合(parentSplitDir == 0)、CN情報復号部10は同一の上位ブロックから分割されて生じたブロックにおいて、垂直方向のTT分割が使われた回数を示すsiblingVerTTCountを導出する。上位ブロックの分割により生じた他のブロックを垂直方向にTT分割しており(つまり、分割対象ブロックにおける垂直方向のTT分割は制約されて不可能である)、かつ、分割対象ブロックの高さがminPTSize×4よりも小さい(siblingVerTTCount == 1 && height < minPTSize*4)ために水平方向のTT分割も不可能である場合、CN情報復号部10は分割対象ブロックをTT分割できないと判定する(FALSE)。
また、上位ブロックの分割方向が垂直方向の場合(parentSplitDir == 1)、CN情報復号部10は同一の上位ブロックから分割されて生じたブロックにおいて、水平方向のTT分割が使われた回数を示すsiblingHorTTCountを導出する。上位ブロックの分割により生じた他のブロックを水平方向にTT分割しており(つまり、分割対象ブロックにおける水平方向のTT分割は制約されて不可能である)、かつ、分割対象ブロックの幅がminPTSize×4よりも小さい(siblingHorTTCount == 1 && width < minPTSize*4)ために垂直方向のTT分割も不可能である場合、CN情報復号部10は分割対象ブロックをTT分割できないと判定する(FALSE)。
CN情報復号部10は、分割対象ブロックが上述のTT分割できない条件を満たさない場合、TT分割できる(TRUE)と判定する。なお、制限されている分割パターン(A-b2)においては、BT分割可能判定_追加条件()のサブルーチンは不要である。
また、制限されている分割パターン(A-b2’:CN情報復号部10は上位ブロックをBT分割することによって生じたブロックの何れか1つを、上位ブロックの分割方向と異なる方向にTT分割することを制限(禁止)する。)におけるTT分割可能判定_追加条件は、制限されている分割パターン(A-b2)のTT分割可能判定_追加条件の一部を変更することで実現される。具体的には、CN情報復号部10はsiblingHorBTCount/siblingVerBTCountを導出しない。また、CN情報復号部10はsiblingHorBTCount/siblingVerBTCountを用いる条件について判定しない(TRUEとする)。また、分割が制限されるブロックを分割処理が最後となるブロック以外とする場合は、追加条件におけるpartIdxの値を制約の対象となるブロックを表す値に変更することによって実現することができる。
(BT/TT分割可能判定(A-cの追加条件))
次に、図15の(a)から(d)に示した、制限されている分割パターン(A-c:CN情報復号部10は上位ブロックをTT分割することによって生じたブロックの全てを、上位ブロックの分割方向と異なる方向にTT分割することを制限(禁止)する。)に対するTT分割可能判定の追加条件について、図25を用いて説明する。本制限においては、CN情報復号部10は上位ブロックをTT分割することによって生じたブロックのうち、最後に分割処理されるブロックに対して制限を行う。
図25に示すように、上位ブロックの分割モードがTT分割でない、上位ブロックの分割方向が水平方向でない、または、partIdxが2でない(parentSplitMode != MODE_TT || parentSplitDir != 0 || partIdx != 2)場合、CN情報復号部10はTT分割は可能(TRUE)と判定する。
また、上位ブロックの分割モードがTT分割であり、該分割の方向が水平方向であり、かつ、分割対象ブロックのpartIdxが2である場合は以下の通りである。
CN情報復号部10はsiblingVerTTCountを導出する。上位ブロックの分割により生じた他の2つのブロックを垂直方向にTT分割しており(つまり、分割対象ブロックにおける垂直方向のTT分割は制約により不可能である)、かつ、分割対象ブロックの高さがminPTSize×4よりも小さい(siblingVerTTCount == 2 && height < minPTSize*4)ために水平方向のTT分割も不可能である場合、CN情報復号部10は分割対象ブロックをTT分割できないと判定する(FALSE)。
なお、前述のように、この場合は、上位ブロックの分割モードがTT分割であり、該分割の方向が垂直方向である場合については制限しないようにすれば、TT分割を2階層用いて9分割となる分割のパターンを利用できる。
CN情報復号部10は、分割対象ブロックが上述のTT分割できない条件を満たさない場合、TT分割できる(TRUE)と判定する。なお、制限されている分割パターン(A-c)においては、BT分割可能判定_追加条件()のサブルーチンは不要である。
また、制限されている分割パターン(A-c’:CN情報復号部10は上位ブロックをTT分割することによって生じたブロックの何れか1つのブロックを上位ブロックの分割方向と異なる方向にTT分割することを制限(禁止)する。)におけるTT分割可能判定_追加条件は、制限されている分割パターン(A-c)のTT分割可能判定_追加条件の一部を変更することで実現される。具体的には、CN情報復号部10はsiblingVerBTCountを導出しない。また、CN情報復号部10はsiblingVerBTCountを用いる条件について判定しない(TRUEとする)。また、分割が制限されるブロックを分割処理が最後となるブロック以外とする場合は、追加条件におけるpartIdxの値を制約の対象となるブロックを表す値に変更することによって実現することができる。
図23は、CN情報復号部10によるTT分割可能判定処理を示す、別の疑似コードである。
図23に示すように、上位ブロックの分割モードparentSplitModeがTT分割でない、または、対象ブロックの分割インデックスpartIdxが2でない場合(if(parentSplitMode != MODE_TT || partIdx != 2))、CN情報復号部10はTT分割は可能(TRUE)と判定する。
また、分割対象ブロックに対する分割モードがTT分割であり、かつ、分割対象ブロックのpartIdxが2である(MODE_TT && partIdx == 2)場合は以下の通りである。
上位ブロックの分割方向parentSplitDirが水平方向の場合(if(parentSplitDir == HOR))、CN情報復号部10は同一の上位ブロックから分割されて生じたブロックにおいて、垂直方向のTT分割が使われた回数を示すsiblingVerTTCountを導出する。上位ブロックの分割により生じた他の2つのブロックを垂直方向にTT分割しており、かつ、分割対象ブロックの高さがminPTSize×4よりも小さい(siblingVerTTCount == 2 && height < minPTSize*4)場合、CN情報復号部10は分割対象ブロックをTT分割できないと判定する(FALSE)。
換言すると、上位ブロックが水平方向にTT分割されている場合、分割対象の最初の2つのブロック(partIdx=0, 1のブロック)がともに垂直方向にTT分割されていると、最後のブロック(partIdx=2のブロック)は垂直方向にTT分割することを制限する。この時、さらに水平方向にTT分割可能な高さもない場合には、TT分割自体ができないと判定する。
また、上位ブロックの分割方向が垂直方向の場合(if(parentSplitDir == VER))、CN情報復号部10は同一の上位ブロックから分割されて生じたブロックにおいて、水平方向のTT分割が使われた回数を示すsiblingHorTTCountを導出する。上位ブロックの分割により生じた他の2つのブロックを水平方向にTT分割しており、かつ、分割対象ブロックの高さがminPTSize×4よりも小さい(siblingHorTTCount == 2 && width < minPTSize*4)場合、CN情報復号部10は分割対象ブロックをTT分割できないと判定する(FALSE)。
換言すると、上位ブロックが垂直方向にTT分割されている場合、分割対象の他の2つのブロックがともに水平方向にTT分割されていると、partIdx=2のブロックは水平方向にTT分割することを制限する。さらに、垂直方向にTT分割可能な幅もない場合には、TT分割できないと判定する。
なお、FALSEの条件に該当しない場合は、TRUEを返す。
続いて、図26を参照して、CN情報復号部10によるブロック分割の制限の他の例について説明する。図26の例では、CN情報復号部10は、上位ブロックの分割モードがTT分割である場合で、対象ブロックが中央のブロック(partIdx == 1)の場合に、上位のブロックと異なる方向のTT分割で分割することを制限する。還元するとTT分割によって、MFT分割と同じ分割が生じることを禁止する。つまり、MT情報復号処理例2においてCN情報復号部10は、対象ノードが、対象ノードよりも一世代上位のノードである直上位ノードに対するTT分割により得られた3つのノードの1つである場合であって、当該3つのノードのうちの中央のノード(partIdx == 1)は、対象ノードを、直上位ノードに対するTT分割と異なる方向にTT分割することを制限する。例えば、TT分割後のTT分割を禁止し、特にTT分割の中央ブロックにおけるTT分割を禁止する。
図26に示すように、CN情報復号部10は、上位ブロックの分割モードがTT分割でない、または、対象ブロックのpartIdxが1でない場合(if(parentSplitMode != MODE_TT || partIdx != 1))、CN情報復号部10はTT分割は可能(TRUE)と判定する。
そうでない場合、つまり、分割対象ブロックに対する分割モードがTT分割であり、かつ、分割対象ブロックのpartIdxが1である(MODE_TT && partIdx == 1)場合は以下の通りである。
CN情報復号部10は、上位ブロックの分割方向が水平方向(HOR)、かつ分割の対象となるブロックの高さがminPTSize×4よりも小さい、または上位ブロックの分割方向parentSplitDirが垂直方向(VER)、かつ分割の対象となるブロックの幅がminPTSize×4よりも小さい(parentSplitDir == HOR && height < minPTSize*4) || (parentSplitDir == VER && width < minPTSize*4)場合、CN情報復号部10は分割対象ブロックをTT分割できないと判定する(FALSE)。
換言すると、CN情報復号部10は、TT分割を禁止されない方の辺がTT分割できる長さ未満の場合、TT分割できないと判定する。
なお、FALSEの条件に該当しない場合は、TRUEを返す。
(分割方向フラグ判定)
次に、分割方向フラグ判定処理の詳細について、図27を用いて説明する。図27の(a)は、上述した制限されている分割パターンがない場合における分割方向フラグ判定処理を示す疑似コードの一例を示す図である。図27の(a)に示すように、CN情報復号部10は、CUのサイズの最小値を示すminPTSize(単位サイズ)を導出する。分割対象ブロックの幅が最小サイズである(width == minPTSize)場合、当該ブロックを垂直分割することはできない。そのため、分割対象ブロックの分割方向が水平方向であることを示すsplit_dir_flag[x0][y0]を設定する(split_dir_flag[x0][y0] = 0)。そして、分割方向フラグの復号は不要と判定する(FALSE)。ここで、(x0,y0)は分割対象ブロックの左上座標とする。
また、分割対象ブロックの高さが最小サイズである(height == minPTSize)場合、当該ブロックを水平分割することはできない。そのため、CN情報復号部10は、分割方向が垂直方向であることを示すsplit_dir_flag[x0][y0]を設定する。(split_dir_flag[x0][y0] = 1)。そして、CN情報復号部10は、分割方向フラグの復号は不要と判定する(FALSE)。
また、分割対象ブロックの幅および高さの両方が最小サイズではない場合、水平と垂直とのいずれの方向にも分割が可能であるため、CN情報復号部10は、分割方向フラグの復号が必要と判定する(TRUE)。
次に、上述した制限されている分割パターンがある場合の分割方向フラグ判定処理について説明する。図27の(b)は、上述した制限されている分割パターンがある場合における、分割方向フラグ判定処理を示す疑似コードの一例を示す図である。図27の(b)に示すように、上述した制限されている分割パターンによって異なる追加条件によって、CN情報復号部10は分割方向が確定する、あるいは、分割方向フラグの復号が必要であると判定する。分割パターンによって異なる追加条件については、図28から図31を用いて、後述する。
CN情報復号部10は分割方向フラグの復号が必要であると判定すると、分割方向フラグを復号する。図27の(c)は分割方向フラグの復号処理を示す疑似コードの一例を示す図である。
次に、分割方向フラグ判定処理の詳細について、説明する。図28から図31は、制限されている分割パターンに対する分割方向フラグ判定の追加条件を示す疑似コードの一例を示す図である。
(分割方向フラグ判定(A-a1の追加条件))
初めに、図13の(a)および(b)に示した、制限されている分割パターン(A-a1:CN情報復号部10は上位ブロックをTT分割することによって生じた中央のブロックを、上位ブロックの分割方向と同じ方向にBT分割することを制限(禁止)する)に対する分割方向フラグ判定の追加条件について、図28を用いて説明する。
図28に示すように、CN情報復号部10はhorSplitAvailableおよびverSplitAvailableの初期値をTRUEにセットする。
上位ブロックの分割がTT分割ではない、または、分割対象ブロックがTT分割により生じた中央ブロックではない(parentSplitMode != MODE_TT || partIdx != 1)場合、CN情報復号部10は分割方向フラグの復号が必要であると判定する。
上位ブロックの分割がTT分割であり、かつ、分割対象ブロックがTT分割により生じた中央ブロック(parentSplitMode == MODE_TT && partIdx == 1)の場合、(A-a1)の制限により、分割対象ブロックの水平方向におけるBT分割は禁止される。かつ、分割対象ブロックの高さがminPTSize*4よりも小さい(height < minPTSize*4)場合、水平方向のTT分割も不可能であるため、水平方向については、BT分割およびTT分割がともに使用できない。したがって、分割対象ブロックの水平方向の分割は不可(horSplitAvailable = FALSE)と判定する。
同様に、上位ブロックが垂直方向にTT分割の場合、分割対象ブロックの垂直方向におけるBT分割は禁止される。かつ、分割ブロックの幅がminPTSize*4よりも小さい(width < minPTSize*4)場合は垂直方向のTT分割も不可能であるため、垂直方向については、BT分割およびTT分割がともに使用できない。したがって、分割対象ブロックの垂直分割は不可となる(verSplitAvailable = FALSE)。
(後処理)
CN情報復号部10はhorSplitAvailableかつverSplitAvailableである場合、分割方向フラグsplit_dir_flagの復号が必要と判定する。horSplitAvailableおよびverSplitAvailableのうち、一方がTRUEの場合、CN情報復号部10はsplit_dir_flagを設定し、split_dir_flagの復号が不要(FALSE)と判定する。
(分割方向フラグ判定(A-a2の追加条件))
次に、図13の(c)および(d)に示した、制限されている分割パターン(A-a2:CN情報復号部10は上位ブロックをBT分割することによって生じたブロックの両方を、上位ブロックの分割方向と同じ方向にBT分割することを制限(禁止)する)に対する分割方向フラグ判定の追加条件について、図29を用いて説明する。
図29に示すように、CN情報復号部10はhorSplitAvailableおよびverSplitAvailableの初期値をTRUEにセットする。
上位ブロックの分割がBT分割ではない、または、分割対象ブロックが上位ブロックの分割により生じたブロックのうちの最後に分割処理されるブロックではない(parentSplitMode != MODE_BT || partIdx != 1)場合、CN情報復号部10は分割方向フラグの復号が必要であると判定する。
上位ブロックの分割が水平方向のBT分割であり、かつ、分割対象ブロックのpartIdx == 1(parentSplitMode == MODE_BT && partIdx == 1 && parentSplitDir == 0)の場合、CN情報復号部10は、siblingHorBTCountを導出する。partIdx=0に対応するブロックが水平方向のBT分割によって分割された場合、分割対象ブロックの水平方向のBT分割は禁止される。かつ、分割対象ブロックの高さがminPTSize*4よりも小さい(siblingVerBTCount == 1 && height < minPTSize*4)場合、水平方向のTT分割も不可能となるため、水平方向についてはBT分割とTT分割のいずれも不可能である。したがって、分割対象ブロックの水平方向の分割は不可(horSplitAvailable = FALSE)と判定する。
上位ブロックの分割が垂直方向のBT分割であり、かつ、分割対象ブロックのpartIDx == 1(parentSplitMode == MODE_BT && partIdx == 1 && parentSplitDir == 1)場合、CN情報復号部10は、siblingVerBTCountを導出する。partIdx=0に対応するブロックが垂直方向のBT分割によって分割された場合、分割対象ブロックの垂直方向のBT分割は禁止される。かつ、分割ブロックの幅がminPTSize*4よりも小さい(siblingVerBTCount == 1 && width < minPTSize*4)場合、垂直方向のTT分割も不可能となるため、垂直方向についてはBT分割とTT分割のいずれも不可能である。したがって、分割対象ブロックの垂直分割は不可となる(verSplitAvailable = FALSE)。その後のCN情報復号部10の処理は、上述の(後処理)と同様であるため、ここでの説明を省略する。
復号部10の処理は、上述の(後処理)と同様であるため、ここでの説明を省略する。
(分割方向フラグ判定(A-b1の追加条件))
次に、図14の(a)から(d)に示した、制限されている分割パターン(A-b1:CN情報復号部10は上位ブロックをTT分割することによって生じたブロックの全てを、上位ブロックと異なる方向にBT分割することを制限(禁止)する)に対する分割方向フラグ判定の追加条件について、図30を用いて説明する。
図30に示すように、CN情報復号部10はhorSplitAvailableおよびverSplitAvailableの初期値をTRUEにセットする。
上位ブロックの分割がTT分割ではない、または、分割対象ブロックが上位ブロックの分割により生じたブロックのうちの最後に分割処理されるブロックではない(parentSplitMode != MODE_TT || partIdx != 2)場合、CN情報復号部10は分割方向フラグの復号が必要であると判定する。
上位ブロックの分割が水平方向のTT分割であり、かつ、分割対象ブロックのpartIdx == 2(parentSplitMode == MODE_TT && partIdx == 2 && parentSplitDir == 0)の場合、CN情報復号部10は、siblingVerBTCountを導出する。上位ブロックの分割により生じた他の2つのブロックが垂直方向のBT分割によって分割された場合、分割対象ブロックの垂直方向のBT分割は禁止される。かつ、分割対象ブロックの幅がminPTSize*4よりも小さい(siblingVerBTCount == 2 && width < minPTSize*4)場合、分割対象ブロックの垂直方向の分割は不可(verSplitAvailable = FALSE)と判定する。
上位ブロックの分割が垂直方向のTT分割であり、かつ、分割対象ブロックのpartIdx == 2(parentSplitMode == MODE_TT && partIdx == 2 && parentSplitDir == 1)の場合、CN情報復号部10は、siblingHorBTCountを導出する。上位ブロックの分割により生じた他の2つのブロックが水平方向のBT分割によって分割された場合、分割対象ブロックの水平方向のBT分割は禁止される。かつ、分割ブロックの高さがminPTSize*4よりも小さいtAvailable = FALSE)。その後のCN情報復号部10の処(siblingHorBTCount == 2 && height < minPTSize*4))場合、CN情報復号部10は、分割対象ブロックの水平分割は不可とする(horSpli理は、上述の(後処理)と同様であるため、ここでの説明を省略する。
(分割方向フラグ判定(A-b2およびA-cの追加条件))
図14の(e)から(h)に示した、制限されている分割パターン(A-b2:CN情報復号部10は上位ブロックをBT分割することによって生じたブロックの両方を、上位ブロックの分割方向と異なる方向にTT分割することを制限(禁止)する。)、および、図15の(a)から(d)に示した、制限されている分割パターン(A-c:CN情報復号部10は上位ブロックをTT分割することによって生じたブロックの全てを、上位ブロックの分割方向と異なる方向にTT分割することを制限(禁止)する。)に対するTT分割可能判定の追加条件においては、CN情報復号部10は、図31に示すように何もせずTRUEを返す。このサブルーチンが呼ばれるのは、分割対象ブロックの幅および高さの両方がともにminPTSizeでない場合である。したがって、分割対象ブロックのTT分割が制限されたとしても、BT分割は依然として可能であるため、分割方向の選択肢が狭まることはない。なお、A-b2’およびA-c’における分割方向フラグ判定の追加条件も同様である。
図32に、分割方向フラグ判定処理を示す別の疑似コードの一例を示す。
TT分割の中央のブロックでない場合は、分割方向の制約の対象外である。上位ブロックの分割モードがTT分割でない、またはpartIdxが1でない場合(if(parentSplitMode != MODE_TT || partIdx != 1))、CN情報復号部10はTT分割は可能(TRUE)と判定する。
TT分割の中央のブロックである場合は、上位ブロックと同じ方向にしか分割できないように制限する。具体的には、CN情報復号部10は、TT分割の中央のブロックの分割方向は上位ブロックと同じ方向である。上位ブロックの分割モードがTT分割であり、かつpartIdxが1である場合(if(parentSplitMode == MODE_TT && partIdx == 1))、CN情報復号部10は分割対象ブロックの分割方向を、上位ブロックの分割方向と同じ方向に設定する(split_dir_flag[x0][y0] = parentSplitDir)。
(分割モード選択フラグ判定)
次に、分割モード選択フラグ判定処理の詳細について、図33を用いて説明する。図33の(a)は、分割モード選択フラグ処理を示す疑似コードの一例を示す図である。図33に示すように、CN情報復号部10は、BTAvailableおよびTTAvailableを導出する。BTAvailableおよびTTAvailableは、PT分割フラグ判定処理において、導出されているため、本処理においてはそれらを参照して再利用してもよい。また、BTAvailableおよびTTAvailableの値をこのサブルーチン以降で変更することは、PT分割フラグ判定の結果に影響を及ぼすため、許されない。
BTAvailableかつTTAvailableの場合、CN情報復号部10は、分割モード選択フラグ判定_追加条件にて、分割モード選択フラグの復号の要否の判定を行う。BT分割およびTT分割のいずれか一方だけが可能な場合、CN情報復号部10は、分割モード選択フラグの値を設定して、復号は不要と判定する。
なお、分割モード選択フラグ判定処理および分割モード選択フラグ復号処理は、PT分割フラグ判定処理にのみ依存する。そのため、PT分割フラグの値が真でYES側に分岐した後、分割方向フラグ判定処理の前に分割モード選択フラグ判定処理および分割モード選択フラグ復号処理を実行してもよい。
また、CN情報復号部10は、TT分割可能の判定において、所定の閾値Th_TT( =minPTSize*4 )によって最小値判定して導出されるTT分割可能と、BT分割可能の判定において、所定の閾値Th_BT ( =minPTSize*2)によって最小値判定して導出されるBT分割可能とのいずれかが真の場合(PT分割フラグ判定)、BT分割とTT分割とを示すPT分割フラグ(共通フラグ)を復号する。
また、CN情報復号部10は、BT分割可能およびTT分割可能の両者が真の場合(分割モード選択フラグ判定)に、BT分割およびTT分割のいずれかを示す分割モード選択フラグを復号する。CN情報復号部10は、分割モード選択フラグがpresentでない場合には、TT分割可能を分割モード選択フラグの値にする。
換言すると、CN情報復号部10は、対象ブロックに対する二分木分割、及び対象ブロックに対する三分木分割の何れか一方が可能であると判定した場合に、二分木分割と三分木分割とを示す共通のフラグを復号する。
また、CN情報復号部10は、対象ブロックに対する二分木分割、及び対象ブロックに対する三分木分割の双方が可能であると判定した場合に、二分木分割と三分木分割との何れかを示す分割モード選択フラグを復号する。
上記の構成によれば、TT分割によってできるブロックが、予測または変換が可能でないサイズになる場合、すなわちTT分割を使うことができない場合に、PT分割フラグや分割モード選択フラグを復号しないため、それらのフラグの符号量を減少させることができる。
(第4の実施形態)
上述した図18および図19では、CN情報復号部10は、対象ブロックの分割を、二分木分割及び三分木分割に共通のデプス変数を参照して制限したが、二分木分割の分割デプス変数btDepth及び三分木分割の分割デプス変数ttDepthを個別に導出し、対象ブロックの分割を制限してもよい。
(BT/TT情報復号処理の詳細)
BT/TT情報復号処理に含まれる各処理の詳細について、図34から図38を用いて説明する。
まず、二分木分割の分割デプス変数btDepth及び三分木分割の分割デプス変数ttDepthを個別に制限する場合の各処理の詳細について、図34~35を用いて説明する。
(判定例1)
(PT分割フラグ判定)
初めに、図34の(a)を用いて、PT分割フラグ判定処理の詳細について説明する。図34の(a)は、PT分割フラグ判定処理を示す疑似コードの一例を示す図である。図34の(a)に示すように、CN情報復号部10は、BT分割またはTT分割のいずれかで分割可能であれば、PT分割可能と判定し、PT分割フラグsplit_pt_flagの復号を「要」と判断する(TRUE)。
(BT分割可能判定)
次に、BT分割可能判定処理の詳細について、図34の(b)を用いて説明する。図34の(b)は、上記で図13~図15を用いて説明した制限されている分割パターンがない場合における、BT分割可能判定処理を示す疑似コードの一例を示す図である。CN情報復号部10は、以下の条件1から条件3を用いて、BT分割可能判定を行う。
条件1:分割の対象となるブロックの高さがCUのサイズの最小値を示すminPTSize(単位サイズ)×2以上、または、分割の対象となるブロックの幅がminPTSize×2以上である(height >= minPTSize*2 || width >= minPTSize*2)。
条件2:分割対象ブロックの幅および高さがCUのサイズの最大値を示すmaxPTSize以下である(width <= maxPTSize && height <= maxPTSize)。
条件3:分割対象ブロックの階層を示すbtDepthがmaxBTDepthより小さい(btDepth<maxBTDepth)。
上記条件1~3の全てを満たす場合、CN情報復号部10はBT分割可能(TRUE)と判定する。また、上記条件1~3の全てが満たされない場合、CN情報復号部10は、BT分割はできない(FALSE)と判定する。
(TT分割可能判定)
次に、TT分割可能判定処理の詳細について、図34の(c)を用いて説明する。図34の(c)は、上記で図13~図15を用いて説明した制限されている分割パターンがない場合における、TT分割可能判定処理を示す疑似コードの一例を示す図である。CN情報復号部10は、以下の条件1から条件3を用いて、TT分割可能判定を行う。
条件1:分割の対象となるブロックの高さがCUのサイズの最小値を示すminPTSize(単位サイズ)×4以上、または、分割の対象となるブロックの幅がminPTSize×4以上である(height >= minPTSize*4 || width >= minPTSize*4)。
条件2:分割対象ブロックの幅および高さがCUのサイズの最大値を示すmaxPTSize以下である(width <= maxPTSize && height <= maxPTSize)。
条件3:分割対象ブロックの階層を示すttDepthがmaxTTDepthより小さい(ttDepth<maxTTDepth)。
上記条件1~3の全てを満たす場合、CN情報復号部10はTT分割可能(TRUE)と判定する。また、上記条件1~3の全てが満たされない場合、CN情報復号部10は、TT分割はできない(FALSE)と判定する。
図34の(d)に示す判定は、図34の(a)~(c)に示す判定と同じである。図34の(a)~(c)に示す3個の判定をまとめると、図34の(d)に示す判定になる。
(分割モード選択フラグ判定)
次に、分割モード選択フラグ判定処理の詳細について、図35を用いて説明する。図35の(a)は、分割モード選択フラグ判定処理を示す疑似コードの一例を示す図である。BTAvailableおよびTTAvailableは、PT分割フラグ判定処理において、導出されているため、本処理においてはそれらを参照して再利用してもよい。また、BTAvailableおよびTTAvailableの値をこのサブルーチン以降で変更することは、PT分割フラグ判定の結果に影響を及ぼすため、許されない。
BTAvailableかつTTAvailableの場合、CN情報復号部10は、TRUEと判定する。
また、図35の(b)は、PT分割モード選択フラグ判定処理を示す疑似コードの一例を示す図である。CN情報復号部10は、以下の条件1から条件3を用いて、PT分割モード選択フラグ判定を行う。
条件1:分割の対象となるブロックの高さがCUのサイズの最小値を示すminPTSize(単位サイズ)×4以上、または、分割の対象となるブロックの幅がminPTSize×4以上である(height >= minPTSize*4 || width >= minPTSize*4)。
条件2:分割対象ブロックの幅および高さがCUのサイズの最大値を示すmaxPTSize以下である(width <= maxPTSize && height <= maxPTSize)。
条件3:分割対象ブロックの階層を示すbtDepthがmaxBTDepthより小さく、分割対象ブロックの階層を示すttDepthがmaxTTDepthより小さい(btDepth < maxBTDepth && ttDepth < maxTTDepth)。
上記条件1~3の全てを満たす場合、CN情報復号部10はTRUEと判定する。また、上記条件1~3の全てが満たされない場合、CN情報復号部10は、FALSEと判定する。
さらに、二分木分割の分割デプス変数btDepth及び三分木分割の分割デプス変数ttDepthを個別に制限する場合において、最大分割デプスmaxBTDepth、maxTTDepthの設定を以下のように設定してもよい。最大分割デプスの制限例を3種類挙げる。
(最大分割デプスの制限例a)
最大二分木分割デプスmaxBTDepthおよび最大三分木分割デプスmaxTTDepthに所定の値(上限回数)を設定することにより、二分木分割の回数、三分木分割の回数を独立して制限することができる、。例えば、二分木分割の回数を2回に制限する場合にはmaxBTDepthに2を設定すればよい。また、三分木分割の回数を1回に制限する場合にはmaxTTDepthに1を設定すればよい。つまり、
maxBTDepth = 2, maxTTDepth = 1
とする。
また、以下のように他の上限回数を設定してもよい。
maxBTDepth = 4, maxTTDepth = 2
二分木分割と三分木分割を比較すると同じ処理時間をかけた場合の効率に差がある。上記のように各最大分割デプスを個別に設定することにより、二分木分割を深くして三分木分割を浅くするような効率の高い場合を用いることができる。
(最大分割デプスの制限例b)
最大二分木分割デプスmaxBTDepthおよび最大三分木分割デプスmaxTTDepthの関係を設定することにより、二分木分割の回数と三分木分割の回数との関係を保つことができる。例えば、三分木分割の回数を二分木分割の回数よりも少なくしたい場合には、maxBTDepth > maxTTDepthと設定すればよい。
なお、maxBTDepth >= maxTTDepthと設定してもよいし、maxBTDepth >= maxTTDepth*2と設定してもよい。
二分木分割と三分木分割を比較すると、二分木分割を深くして三分木分割を浅くしたほうが符号化効率が高い。上記によれば、二分木分割に関わる最大二分木分割デプスmaxBTDepthが小さく、三分木分割に関わる最大三分木分割デプスmaxTTDepthが大きくなるような不効率な場合を避けることができる。
(最大分割デプスの制限例c)
最大二分木分割デプスmaxBTDepthと最大三分木分割デプスmaxTTDepthの和の上限を設定することにより、三分木分割を有効にするか(有効にする場合には、どの程度の最大三分木デプスまで有効にするのか)に応じて二分木分割の上限回数を制限することができる。
maxBTDepth + maxTTDepth < sumMaxPTDepth
例えば、最大二分木分割デプスと最大三分木分割デプスの和を3以下(sumMaxPTDepth = 3)に制限する(maxBTDepth + maxTTDepth <= 3)と、三分木分割が有効ではない場合(maxTTDepth = 0)には、二分木分割の上限回数maxTTDepthを3に設定し、三分木分割が有効ではある場合(maxTTDepth > 0)には、二分木分割の上限回数maxTTDepthを3よりも小さな値に設定することができる。つまり
maxBTDepth = 3、maxTTDepth = 0 (三分木分割が有効ではない場合)
maxBTDepth = 2、maxTTDepth = 2 (三分木分割が有効である場合)
と設定することができる。この場合、最大の二分木分割デプスが2以下に制限されるので、三分木分割が存在する場合には、二分木分割が3回連続することを禁止することができる。三分木分割を有効にする場合に、さらに二分木分割の上限回数を小さく設定することができるので、二分木分割と三分木分割の両者が数多く使われるような複雑度の高い組み合わせを避けることができるので、二分木分割が続くことを禁止することは、動画像の符号化/復号の複雑度の低減に繋がる。一方、三分木分割がない場合には、maxBTDepth = 3、maxTTDepth = 0と設定することができ、二分木分割を3回連続させることができる。
TT分割フラグは発生頻度が高い。判定例1は、二分木分割の分割デプス変数btDepth及び三分木分割の分割デプス変数ttDepthを個別に制限することにより、TT分割フラグの発生を抑制し、TT分割フラグの符号化を抑制することができる。
(判定例2)
次に、二分木分割の分割デプス変数btDepthと三分木分割の分割デプス変数ttDepthとを合わせた変数を制限する場合の各処理の詳細について説明する。
判定例2のPT分割フラグ判定は、上記判定例1と同じ判定を行う。
判定例2のBT分割可能判定は、上記判定例1と条件3が異なる。判定例2では以下の条件3を用いてBT分割可能判定を行う。
BT分割可能判定の条件3:分割対象ブロックの階層を示す(btDepth + ttDepth)がmaxPTDepthより小さい((btDepth + ttDepth) < maxPTDepth)。
判定例2のTT分割可能判定は、上記判定例1と条件3が異なる。判定例2では以下の条件3を用いてTT分割可能判定を行う。
TT分割可能判定の条件3:分割対象ブロックの階層を示す(btDepth + ttDepth)がmaxPTDepthより小さい((btDepth + ttDepth) < maxPTDepth)。
判定例2の分割モード選択フラグ判定は、上記判定例1と条件3が異なる。判定例2では以下の条件3を用いて分割モード選択フラグ判定を行う。
分割モード選択フラグ判定の条件3:分割対象ブロックの階層を示す(btDepth+ttDepth)がmaxPTDepthより小さい(btDepth+ttDepth)<maxPTDepth。
なお、cptDepthの導出方法の例1、cptDepthの導出方法の例2ですでに説明したように、btDepth + ttDepthを一つの一時変数cptDepthで表現してもよい。
(判定例3)
次に、二分木分割の分割デプス変数btDepth及び三分木分割の分割デプス変数ttDepthを個別に制限し、かつ、二分木分割の分割デプス変数btDepthと三分木分割の分割デプス変数ttDepthとを合わせた変数を制限する場合の各処理の詳細について、図36~37を用いて説明する。
なお判定例3においても、cptDepthの導出方法の例1、cptDepthの導出方法の例2ですでに説明したように、btDepth + ttDepthを一つの一時変数cptDepthで表現してもよい。
判定例3のPT分割フラグ判定は、図36に(a)に示すように、上記判定例1と同様BT分割可能判定と、TT分割可能判定の和(OR)から導出することができる。BT分割可能判定とTT分割可能判定は、図36に(b)および(c)のとおりであり、その和であるPT分割フラグ判定は、図36(d)の通りに記載することができる。すなわち、(分割対象ブロックの階層を示すbtDepthがmaxBTDepthより小さい、もしくは、ttDepthがmaxTTDepth)かつ、(btDepth + ttDepth) < maxPTDepthの場合に、PT分割フラグが存在する(TRUE)と判定し、BT分割もしくはTT分割を行うか否かを示すフラグであるPT分割フラグを復号する。なお、図36(d)に示すように、階層に関する制限のほか、対象ブロックのwidthとheightに関する制限がさらに加わっていてもよい。
判定例3のBT分割可能判定は、図36の(b)に示すように、上記判定例1と条件3が異なる。判定例3では以下の条件3を用いてBT分割可能判定を行う。
BT分割可能判定の条件3:分割対象ブロックの階層を示すbtDepthがmaxBTDepthより小さく、分割対象ブロックの階層を示す(btDepth + ttDepth)がmaxPTDepthより小さい(btDepth < maxBTDepth && (btDepth + ttDepth) < maxPTDepth)。
判定例3のTT分割可能判定は、図36の(c)に示すように、上記判定例1と条件3が異なる。判定例3では以下の条件3を用いてTT分割可能判定を行う。
TT分割可能判定の条件3:分割対象ブロックの階層を示すttDepthがmaxTTDepthより小さく、分割対象ブロックの階層を示す(btDepth + ttDepth)がmaxPTDepthより小さい(ttDepth < maxTTDepth && (btDepth + ttDepth) < maxPTDepth)。
さらに図37の(a)に示すように、判定例3の分割モード選択フラグ判定は、上記判定例1と同様BT分割可能判定と、TT分割可能判定の積(AND)から導出することができる。BT分割可能判定とTT分割可能判定は、図36の(b)および(c)のとおりであり、その積である分割モード選択フラグ判定は、図37の(b)の通りに記載することができる。すなわち、分割対象ブロックの階層を示すbtDepthがmaxBTDepthより小さい、かつ、ttDepthがmaxTTDepth、かつ、(btDepth + ttDepth) < maxPTDepthの場合に、分割モード選択フラグが存在する(TRUE)と判定し、BT分割のTT分割のいずれかを示すフラグである分割モード選択フラグを復号する。なお、図37の(b)に示すように、階層に関する制限のほか、対象ブロックのwidthとheightに関する制限がさらに加わっていてもよい。
さらに説明すると、判定例3の分割モード選択フラグ判定は、上記判定例1の条件に対し条件4が異なる。判定例3では以下の条件4を用いて分割モード選択フラグ判定を行う。
分割モード選択フラグ判定の条件4:分割対象ブロックの階層を示す(btDepth + ttDepth)がmaxPTDepthより小さい((btDepth + ttDepth) < maxPTDepth)。
判定例1の条件1~3および上記条件4の全てを満たす場合、CN情報復号部10はTRUEと判定する。また、上記条件1~4の全てが満たされない場合、CN情報復号部10は、FALSEと判定する。
例えば、二分木分割も三分木分割も3回以下に制限し(それぞれbtDepth < 3、ttDepth < 3であれば分割できる)、さらに二分木分割と三分木分割とを足した回数も3回以下に制限する((btDepth + ttDepth) < 3であれば足りる)ことができる。また、二分木分割と三分木分割とを足した回数は3回以下に制限し(btDepth+ttDepth < 3であれば分割できる)、三分木分割は2回以下に制限する(BT分割とTT分割はそれぞれbtDepth < 3、ttDepth < 2であれば使用できる)こともできる。
判定例3は、二分木分割の分割デプス変数btDepth及び三分木分割の分割デプス変数ttDepthを個別に制限し、かつ、二分木分割の分割デプス変数btDepthと三分木分割の分割デプス変数ttDepthとを合わせた変数を制限することにより、冗長制御することができ、特に三分木分割するときに必要以上に二分木分割が増えることを抑制することができる。
(判定例4)
次に、三分木分割の後の二分木分割を制限する分割モード選択フラグ判定処理の詳細について説明する。図38の(a)は、三分木分割の後の二分木分割を制限する分割モード選択フラグ判定処理を示す疑似コードの一例を示す図である。図38の(a)に示すように、CN情報復号部10は、すでにTT分割を行っていれば、BT分割できないと判定する。すなわち、TT分割の分割デプスttDepthが0より大きい(0以外)の場合には、BT分割できないと判定する。またCN情報復号部10は、分割モード選択フラグ判定において、BT分割およびTT分割が分割可能であれば、分割モード選択フラグを復号すると判定する(TRUE)。
(判定例5)
次に、二分木分割の後の三分木分割を制限する分割モード選択フラグ判定処理の詳細について説明する。図38の(b)は、二分木分割の後の三分木分割を制限する分割モード選択フラグ判定処理を示す疑似コードの一例を示す図である。図38の(b)に示すように、CN情報復号部10は、BT分割であれば、TT分割できないと判定する。すなわち、BT分割の分割デプスbtDepthが0より大きい(0以外)の場合には、TT分割できないと判定する。またCN情報復号部10は、分割モード選択フラグ判定において、BT分割およびTT分割が分割可能であれば、分割モード選択フラグを復号すると判定する(TRUE)。
上記判定例4および判定例5は、制御が簡単でありながら、動画像の符号化/復号の複雑度の低減の効果が明らかである。
(BB/TT分割処理)
次に、CN情報復号部10のBB/TT分割処理について、図39を用いて説明する。図39の(a)および(b)は、BB/TT分割処理を示す疑似コードの一例を示す図である。図39の(a)および(b)に示すように、CN情報復号部10は、分割方向フラグと分割モード選択フラグとに基づいて、分割対象ブロックを分割する。また、CN情報復号部10は分割対象のブロックが、上位ブロックのどのような分割でできたかという情報(parent…)も設定する。partIdxはブロックのインデクスであり、ループする毎に設定される。parent…の代わりに、各ブロックについて制限の有無あるいは制限適用の可否などの情報を呼び出し側で予め導出して設定する。
(第3の実施形態)
(利用機会の少ない分割パターン)
本実施形態に係る画像復号装置31は、特に限定がない場合は、第2の実施形態と同様の構成である。よって、画像復号装置31は第2の実施形態の画像復号装置31と同様に、TT分割が可能な構成である。そのため、分割の組合せによって得られるブロックの分割パターンが増加する。よって、画像符号化装置11における、ブロックの分割パターンの決定に要する時間が増加する。本実施形態に係る画像復号装置31は、利用機会の少ない分割パターンを制限(禁止)する。例えば、特定の分割パターンと同一ではないが類似する分割パターンにおいて、当該類似する分割パターンの符号化効率と特定の分割パターンの符号化効率とに大きな違いがないと考えられる場合、当該類似する分割パターンを禁止する。
利用機会の少ない分割パターンの例について、図40を用いて説明する。図40は、利用機会の少ない分割パターンの例を示す図である。図40には、ブロック(CN)を水平方向にTT分割し、さらに、該TT分割により得られたブロックを水平方向にTT分割して得られる分割パターン1と、ブロックを水平方向にTT分割し、さらに、該TT分割により得られたブロックを水平方向にBT分割して得られる分割パターン2とが示されている。分割パターン1における、2回のTT分割によって生じたブロックは細長過ぎる形状であり、利用機会が少ない。したがって、画像復号装置31は分割パターン1を制限(禁止)する。
上記の構成によれば、画像符号化装置11は利用機会の少ない分割パターンを評価する必要が無くなる。また、利用機会が少ない分割パターンが禁止されるため、該分割に係るフラグなどの符号化データは不要となる。そのため、画像符号化装置11の符号化効率が向上する。
(制限されている分割パターン)
ここで、本実施形態に係るCN情報復号部10が制限するCNの分割パターンの例について、図41を用いて説明する。図41の(a)から(c)は、CN情報復号部10が制限している分割パターンの一例を示している。図41の(a)から(c)における実線は上位の符号化ノードまたは符号化ツリーユニット(上位ブロック)を分割することによって生じた符号化ノード(ブロック)の境界を示している。また、〇印は、分割対象ブロックにおいて点線で示す分割が可能であることを示している。また、×印は、分割対象ブロックにおいて点線で示す分割が制限(禁止)されていることを示している。
(制限されている分割パターン:B-d)
例えば、CN情報復号部10は上位ブロックをTT分割することによって生じた分割対象ブロックを、上位ブロックの分割方向と同じ方向に分割することを制限(禁止)する。
換言すると、対象ブロックが、上位ブロックに対する三分木分割により得られた3つのブロックの1つである場合に、CN情報復号部10は、上記対象ブロックを、上位ブロックに対する三分木分割と同じ方向に分割することを制限する。
(制限されている分割パターン:B-d1)
また、図41の(a)に示す例では、CN情報復号部10は上位ブロックをTT分割することによって生じたブロックのうちの中央ブロックを、上位ブロックの分割方向と同じ方向に分割することを制限(禁止)する。
換言すると、対象ブロックが、上位ブロックに対する三分木分割により得られた3つのノードのうち中央のブロックである場合に、CN情報復号部10は、対象ブロックを、上位ブロックに対する三分木分割と同じ方向に分割することを制限する。
(制限されている分割パターン:B-d1’)
また、図41の(b)に示す例では、CN情報復号部10は上位ブロックをTT分割することによって生じたブロックのうちの中央ブロックを、上位ブロックの分割方向と異なる方向のTT分割以外で分割することを制限(禁止)する。
換言すると、対象ブロックが、上位ブロックに対する三分木分割により得られた3つのブロックのうち中央のブロックである場合に、CN情報復号部10は、対象ブロックを、上位ブロックに対する三分木分割と異なる方向の三分木分割以外で分割することを制限する。
(制限されている分割パターン:B-d2)
また、図41の(c)に示す例では、CN情報復号部10は上位ブロックをTT分割することによって生じたブロックのうちの中央ブロック以外のブロックを、上位ブロックと同じ方向に分割することを制限(禁止)する。
換言すると、対象ブロックが、上位ブロックに対する三分木分割により得られた3つのブロックのうち中央のブロック以外のブロックである場合に、CN情報復号部10は、上記対象ブロックを、上位ブロックに対する三分木分割と同じ方向に分割することを制限する。
(制限されている分割パターン:B-d3)
また、図示しない別の例としては、CN情報復号部10は上位ブロックをTT分割することによって生じたブロックを、上位ブロックの分割方向と同じ方向にTT分割することを制限(禁止)する。
また、上記対象ノードが、上記直上位ノードに対する三分木分割により得られた3つのノードの1つである場合に、上記分割部は、上記対象ノードを、上記直上位ノードに対する三分木分割と同じ方向に三分木分割することを制限する。
(BT/TT情報復号処理の詳細)
次に、本実施形態に係る制限されている分割パターンに対する分割方向フラグ判定の追加条件について、図42から図46を用いて説明する。図42から図46は、制限されている分割パターンにおける分割方向フラグ判定の追加条件を示す疑似コードの一例を示す図である。
(分割方向フラグ判定)
(分割方向フラグ判定(B-dの追加条件))
制限されている分割パターン(B-d:CN情報復号部10は上位ブロックをTT分割することによって生じた分割対象ブロックを、上位ブロックの分割方向と同じ方向に分割することを制限(禁止)する)に対する分割方向フラグ判定の追加条件について、図42を用いて説明する。
図42に示すように、上位ブロックがTT分割されている場合(parentSplitMode == MODE_TT)、CN情報復号部10は、分割対象ブロックを上位ブロックの分割方向と同じ方向に分割する禁止する。そのため、分割対象ブロックの分割方向を、上位ブロックの分割方向と異なる方向に設定し、分割方向フラグの復号を不要と判断する(FALSE)。
上位ブロックの分割方向(parentSplitDir)は0または1である。そのため、図42に示すように、1からparentSplitDirを引くことにより、上位ブロックとは異なる方向を導出することができる。
なお、本制限されている分割パターンにおいては、第2の実施形態で説明した「BT/TT分割可能判定」における追加条件は、特にない。以下に記載の制限されている分割パターンにおいては、特に追加条件の記載がないものに関しては、追加条件は、特に設定されていないものとする。
(分割方向フラグ判定(B-d1の追加条件))
次に、制限されている分割パターン(B-d1:CN情報復号部10は上位ブロックをTT分割することによって生じたブロックのうちの中央ブロックを、上位ブロックの分割方向と同じ方向に分割することを制限(禁止)する)に対する分割方向フラグ判定の追加条件について、図43を用いて説明する。上位ブロックがTT分割され、かつ、分割対象ブロックが当該TT分割により生じたブロックのうち、中央ブロックである(parentSplitMode == MODE_TT && partIdx == 1)場合、分割対象ブロックの分割方向を、上位ブロックの分割方向と異なる方向に設定し、分割方向フラグの復号を不要と判断する(FALSE)。
(分割方向フラグ判定(B-d2の追加条件))
次に、制限されている分割パターン(B-d2:CN情報復号部10は上位ブロックをTT分割することによって生じたブロックのうちの中央ブロック以外のブロックを、上位ブロックと同じ方向に分割することを制限(禁止)する)に対する分割方向フラグ判定の追加条件について、図44を用いて説明する。上位ブロックがTT分割され、かつ、分割対象ブロックが当該TT分割により生じたブロックのうち、中央ブロック以外のブロックである(parentSplitMode == MODE_TT && partIdx!= 1)場合、分割対象ブロックの分割方向を、上位ブロックの分割方向と異なる方向に設定し、分割方向フラグの復号を不要と判断する(FALSE)。
(分割方向フラグ判定(B-d1’の追加条件))
次に、制限されている分割パターン(B-d1’:CN情報復号部10は上位ブロックをTT分割することによって生じたブロックのうちの中央ブロックを、上位ブロックの分割方向と異なる方向のTT分割以外で分割することを制限(禁止)する)に対する分割方向フラグ判定の追加条件について、図45を用いて説明する。図45の(a)に示すように、ブロックがTT分割され、かつ、分割対象ブロックが当該TT分割により生じたブロックのうち、中央ブロックである(parentSplitMode == MODE_TT && partIdx== 1)場合、分割対象ブロックの分割方向を、上位ブロックの分割方向と異なる方向に設定し、分割方向フラグの復号を不要と判断する(FALSE)。
なお、本制限されている分割パターンにおいては、第2の実施形態で説明した「BT/TT分割可能判定」における追加条件がある。該追加条件について、図45の(b)を用いて説明する。図45の(b)は、上述した制限されている分割パターンがある場合における、BT分割可能判定処理を示す疑似コードの一例を示す図である。
図45の(b)に示すように、上位ブロックの分割モードがTT分割であり、かつ、対象ブロックがTT分割により生じたブロックの中央ブロックである(parentSplitMode == MODE_TT && partIdx == 1)場合、CN情報復号部10はBT分割を不可(FALSE)と判定する。図45の(c)は、本制限における可能な分割を示す図である。図45の(c)に示すように、CN情報復号部10はTT分割により生じた中央ブロックのBT分割を制限する。また、当該ブロックの分割方向を上位ブロックの分割方向と同じ方向を制限する。
(分割方向フラグ判定(B-d3の追加条件))
次に、制限されている分割パターン(B-d3:CN情報復号部10は上位ブロックをTT分割することによって生じたブロックを、上位ブロックの分割方向と同じ方向にTT分割することを制限(禁止)する)に対するCN情報復号部10の処理の流れについて、説明する。
図50は、本制限を行うCN情報復号部10の処理の流れの一例の概要を示す図である。図50に示すように、第2の実施形態で説明したCN情報復号部10の処理の流れの一例(図16を参照)と本処理の流れとにおいて異なる点は、本処理においては、分割モードの決定(分割モード選択フラグ判定S1506、分割モード選択フラグ判定S1507)を、分割方向の決定(分割方向フラグ判定S1504、分割方向フラグ復号S1505)よりも先に行う点である。
次に、分割方向フラグ判定の追加条件について、図46を用いて説明する。図46の(a)に示すように、上位ブロックがTT分割され、かつ、分割対象ブロックをTT分割する(parentSplitMode == MODE_TT && split_sel_flag[x0][y0] == MODE_TT)場合、分割対象ブロックの分割方向を、上位ブロックの分割方向と異なる方向に設定し、分割方向フラグの復号を不要と判断する(FALSE)。
図46の(b)は、本制限における可能な分割を示す図である。図46の(b)に示すように、CN情報復号部10は対象ブロックの分割がTT分割に選択されたときのみ、分割方向は上位ブロックの分割方向と異なる方向のみに限定される。
(他の制限されている分割パターン)
次に、本実施形態に係るCN情報復号部10が制限するCNの分割パターンの他の例について、図47を用いて説明する。図47の(a)から(l)は、CN情報復号部10が制限している分割パターンの一例を示している。
(制限されている分割パターン:B-e)
図47の(a)から(d)、(g)から(l)に示す例では、CN情報復号部10は上位ブロックをTT分割することによって生じたブロックのうち、(a)から(d)に示すような長方形の分割対象ブロックを、図中の点線のように、上位ブロックの分割方向と同じ方向に分割することを制限(禁止)する。
換言すると、分割対象ブロックの形状が(g)から(l)に示すような正方形である場合、CN情報復号部10は、対象ブロックの分割の仕方を制限しない。
なお、図47の(e)および(f)に示すように、分割対象のブロックが正方形であっても、第2の実施形態にて説明した冗長な分割パターンの分割をCN情報復号部10は制限(禁止)してもよい。
(分割方向フラグ判定(B-eの追加条件))
次に、制限されている分割パターン(B-e)に対する分割方向フラグ判定の追加条件について、図48を用いて説明する。図48は、制限されている分割パターン(B-e)に対する分割方向フラグ判定の追加条件を示す疑似コードの一例を示す図である。
図48に示すように、上位ブロックがTT分割され、かつ、分割対象ブロックの幅と高さとが異なる(parentSplitMode == MODE_TT && width != height)場合、CN情報復号部10は分割対象ブロックの分割方向を、上位ブロックの分割方向と異なる方向に設定し(split_dir_flag[x0][y0] = 1 - parentSplitDir)、分割方向フラグの復号を不要と判断する(FALSE)。
(他の制限されている分割パターン:アスペクト比TT分割制限)
次に、本実施形態に係るCN情報復号部10が制限するCNの分割パターンのさらに他の例について、図49を用いて説明する。図49の(a)および(b)は、CN情報復号部10が制限している分割パターンの一例を示している。
図49の(a)および(b)に示す例では、対象ブロックが、アスペクト比が所定の値以上となるような矩形状である場合に、CN情報復号部10は、対象ブロックを、対象ブロックの長手方向に沿って境界が生じる3分木分割にて分割することを制限する。
本明細書における、ブロックのアスペクト比とは、該ブロックの幅と高さとがwidth、heightである場合に幅と高さとの比の最大値を意味する。すなわち、max(width/height, height/width)である。アスペクト比TT分割制限とは、TT分割によって、widthとheightの比が所定の値以上、例えば、1:8(4×32、8×64)、8:1(32×4、64×8)になることを禁止する。言い換えると、対象ブロックがある程度以上横長の場合には水平分割することを禁止し、対象ブロックがある程度以上縦長の場合には垂直分割することを禁止する。
例えば、図49の(a)においては、対象ブロックが横長のために、CN情報復号部10が水平分割を禁止する例を示している。また、図49の(b)においては、対象ブロックが縦長のために、CN情報復号部10が垂直分割を禁止する例を示している。
(分割モード選択フラグ判定(アスペクト比TT分割制限の追加条件))
次に、分割モード選択フラグ判定(アスペクト比TT分割制限)の追加条件について、図51を用いて説明する。図51は、制限されている分割パターンにおける分割方向フラグ判定の追加条件を示す疑似コードの一例を示す図である。図51に示すように、分割対象ブロックの幅の値が分割対象ブロックの高さの値のM倍よりも大きく、かつ、分割対象ブロックの分割方向が水平方向である(width > M*height && split_dir_flag[x0][y0] == 0)場合、分割対象ブロックの分割をBT分割に設定し(split_sel_flag[x0][y0] = MODE_BT)、分割モード選択フラグの復号を不要と判断する(FALSE)。
また、分割対象ブロックの高さの値が分割対象ブロックの幅の値のM倍よりも大きく、かつ、分割対象ブロックの分割方向が垂直方向である( height > M*width && split_dir_flag[x0][y0] == 1)場合、分割対象ブロックの分割をBT分割に設定し(split_sel_flag[x0][y0] = MODE_BT)、分割モード選択フラグの復号を不要と判断する(FALSE)。
なお、TT分割が制限されるケースがあるが、ここでは、PT分割フラグ判定の結果に影響を与えないため、TTAVailableの値は設定しない。また、TTAvailableの値が変わることもない。このサブルーチンはBTAVailable/TTAVailableともにTRUEの場合のみ呼ばれ、上記の条件に該当して短辺方向がBT分割のみに制限される場合でも、長辺方向では依然としてTT分割が可能である。そのため、TTAvailableの値には影響しない。
(分割方向フラグ判定(アスペクト比TT分割制限の追加条件))
また、本制限されている分割パターン(アスペクト比TT分割制限)に対するCN情報復号部10の処理の流れは、図50に示す制限されている分割パターン(B-d3)と同様としてもよい。図50に示す処理の流れについては上述したため、ここでの説明を省略する。図50に示す処理の流れにおける、分割方向フラグ判定(アスペクト比TT分割制限)の追加条件について、図52を用いて説明する。図52は、制限されている分割パターンにおける分割方向フラグ判定の追加条件を示す疑似コードの一例を示す図である。図52に示すように、分割対象ブロックの幅の値が分割対象ブロックの高さの値のM倍よりも大きく、かつ、分割対象ブロックの分割がTT分割である(width > M*height && split_sel_flag[x0][y0] == MODE_TT)場合、分割対象ブロックの分割方向を垂直方向に設定し(split_dir_flag[x0][y0] = 1)、分割方向フラグの復号を不要と判断する(FALSE)。
また、分割対象ブロックの高さの値が分割対象ブロックの幅の値のM倍よりも大きく、かつ、分割対象ブロックの分割がTT分割である(height > M*width && split_sel_flag[x0][y0] == MODE_TT)場合、分割対象ブロックのの分割方向を水平方向に設定し(split_dir_flag[x0][y0] = 0)、分割方向フラグの復号を不要と判断する(FALSE)。
(MT情報復号処理)
CN情報復号部10によるCN情報復号の各動作例について、図55~図66を参照して説明する。
(MT情報復号処理例1)
図55は、本発明の一実施形態に係るCN情報復号部10のMT情報復号処理の第1の例を説明するフローチャートである。図55は、MT分割が、MNT分割及びQT分割を含んでいる場合のMT復号処理を説明するフローチャートである。
(S1101)
CN情報復号部10は、まず、S1101において、MT分割フラグを復号するのか否かを判定する(MT分割フラグ判定)。CN情報復号部10が、MT分割フラグを復号すると判定した場合(MT分割フラグ判定がY/TRUE)、ステップS1102に進み、MT分割フラグを復号しないと判定した場合(MT分割フラグ判定がN/FALSE)、MT情報復号処理を終了する。
(S1102)
S1102において、CN情報復号部10は、MT分割フラグmt_split_flagの復号を行う。ここで、mt_split_flag=0は、対象ブロックを分割しないことを示し、mt_split_flag=1は、対象ブロックを分割することを示す。
(S1103)
続いて、CN情報復号部10は、MT分割フラグmt_split_flagに関する判別式
MT分割フラグ != 0 (式1101)
の真偽を判定する。(式1101)が真である場合、ステップS1104に進み、(式1101)が偽である場合、MT情報復号処理を終了する。
(S1104)
S1104において、CN情報復号部10は、MT分割モード選択フラグを復号するのか否かを判定する(MT分割モード選択フラグ判定)。CN情報復号部10が、MT分割モード選択フラグを復号すると判定した場合(MT分割モード選択フラグ判定がYES/TRUE)、ステップS1105に進む。CN情報復号部10が、MT分割モード選択フラグを復号しないと判定した場合(MT分割分割モード選択フラグ判定がNO/FALSE)、mt_sel_flag = 0 にセットして、ステップS1106に進む。
(S1105)
S1105において、CN情報復号部10は、MT分割モード選択フラグmt_sel_flagを復号する。ここで、mt_sel_flag=0は、対象ブロックをQT分割することを示し、mt_sel_flag=1は、対象ブロックをMNT分割することを示す。
(S1106)
S1106において、CN情報復号部10は、分割対象ブロックを、MT分割モード選択フラグmt_sel_flagの示す分割モードによって分割する。
より具体的には、MT分割モード選択フラグmt_sel_flagがMNT分割を示す場合、CN情報復号部10は、図53(a)に示すように、対象ブロック(対象ノード)を、水平方向に1:2:1、垂直方向に1:2:1に分割することによって、9つのノード(ブロック)に分割する。すなわち、対象ノードを、第1の方向に1:2:1、上記第1の方向に垂直な(直交する)第2の方向に1:2:1に分割することによって、9つのノードに分割する。
一方、MT分割モード選択フラグmt_sel_flagがQT分割を示す場合、CN情報復号部10は、図7(a)に示すように、対象ブロックを4分木分割する。
なお、MNT分割が示す分割の仕方は、互いに分割方向が直行する2回のTT分割を、連続して対象ノードに適用することによっても実現され得る。しかしながら、上記の例では、mt_sel_flagがMNT分割を示す場合、CN情報復号部10は一回の分割処理によって、対象ノードを4つ以上(ここでは9つ)のノードに分割している。したがって、分割深度(分割回数)の増大を抑えつつ、複雑な分割を実現することができる。
(S1107~S1109)
続いて、当該分割によって生じたブロックに対してMT情報復号処理を繰り返し行うループ処理を行う(S1107、S1108、S1109)。当該ループ処理が終了すると処理は終了する。
図56を用いて、MT分割フラグ判定、MT分割モード選択フラグ判定の詳細について説明する。図56の(a)は、MT分割フラグ判定処理を示す疑似コードの一例を示す図であり、図56の(b)は、MT分割モード選択フラグ判定処理を示す疑似コードの一例を示す図である。
(MT分割フラグ判定)
CN情報復号部10は、以下の条件1から条件3を用いて、MT分割フラグ判定を行う。
条件1:分割の対象となるブロックの高さheightがminPTSize×2以上、または、分割の対象となるブロックの幅widthがminPTSize×2以上(height >= minPTSize*2 || width >= minPTSize*2)。ここでminPTSizeはPT分割時のブロックサイズの最小値である。
条件2:分割対象ブロックの幅および高さがブロックサイズの最大値を示すmaxMTSize以下(width <= maxMTSize && height <= maxMTSize)。ここでmaxMTSizeはMT分割時のブロックサイズの最大値である。
条件3:分割対象ブロックの階層を示すqtDepthがmaxQTDepthより小さい、または分割対象ブロックの階層を示すmntDepthがmaxMNTDepthより小さい(qtDepth < maxQTDepth || mntDepth < maxMNTDepth)。ここでmaxQTSizeはQT分割時の深度(階層)の最大値であり、maxMNTSizeはMNT分割時の深度(階層)の最大値である。
上記条件1~3の全てを満たす場合、CN情報復号部10はMT分割可能(TRUE)と判定する。また、上記条件1~3のいずれかが満たされない場合、CN情報復号部10は、MT分割はできない(FALSE)と判定する。
(MT分割モード選択フラグ判定)
CN情報復号部10は、以下の条件1から条件3を用いて、MT分割モード選択フラグ判定を行う。
条件1:分割の対象となるブロックの高さおよび幅がminPTSize×4以上(height >= minPTSize*4 && width >= minPTSize*4)。
条件2:分割対象ブロックの幅および高さがブロックサイズの最大値を示すmaxMTSize以下(width <= maxPTSize && height <= maxPTSize)。
条件3:分割の対象となるブロックの階層を示すqtDepthがmaxQTDepthより小さく、かつ分割の対象となるブロックの階層を示すmntDepthがmaxMNTDepthより小さい(qtDepth < maxQTDepth && mntDepth < maxMNTDepth)。
上記条件1~3の全てを満たす場合、CN情報復号部10は、MT分割モード選択フラグの復号は必要(TRUE)と判定する。また、上記条件1~3のいずれかが満たされない場合、CN情報復号部10は、MT分割モード選択フラグの復号は不要(FALSE)と判定する。
(MT情報復号処理例2)
図57は、本発明の一実施形態に係るCN情報復号部10のMT情報復号処理の第2の例を説明するフローチャートである。本例では、MT分割する場合に、分割方向が水平方向か垂直方向かを識別するフラグ(MT分割方向フラグmt_dir_flag)の復号処理をする点で、上記MT情報復号処理例1と異なる。
S1401~S1405は、上記MT情報復号処理例1のS1101~S1105に対応し、S1409~S1411は、上記MT情報復号処理例1のS1107~S1109に対応する。
S1404において、CN情報復号部10が、MT分割モード選択フラグを復号しないと判定した場合、またはS1405に続きS1406に進む。
(S1406)
CN情報復号部10は、S1406において、MT分割方向フラグを復号するのか否かを判定する。CN情報復号部10が、MT分割方向フラグを復号すると判定した場合、S1407に進み、MT分割方向フラグを復号しないと判定した場合、S1408に進む。
(S1407)
S1407において、CN情報復号部10は、MT分割方向フラグmt_dir_flagの復号を行う。ここで、mt_dir_flag = 0は、対象ブロック(対象ノード)の分割方向が水平方向であることを示し、mt_dir_flag = 1は、対象ブロック(対象ノード)の分割方向が垂直方向であることを示す。
なお、MT分割モード選択フラグmt_sel_flagの復号処理(S1404およびS1405)とMT分割方向フラグmt_dir_flagの復号処理(S1406およびS1407)との順番は逆でもよい。
(S1408)
S1408において、CN情報復号部10は、分割対象ブロックを、MT分割方向フラグmt_dir_flagとMT分割モード選択フラグmt_sel_flagに基づいて分割する。
より具体的には、CN情報復号部10は、MT分割方向フラグが0(mt_dir_flag = 0)であり、MT分割モード選択フラグが1(mt_sel_flag = 1)である場合には、図53の(b)に示すように、対象ブロック(対象ノード)を、水平方向に1:2:1の3つのノードに分割し、当該3つのノードのうち中央のノードを、垂直方向に1:2:1に分割することによって、5つのノード(ブロック)に分割する。
また、CN情報復号部10は、MT分割方向フラグが1(mt_dir_flag = 1)であり、MT分割モード選択フラグが1(mt_sel_flag = 1)である場合には、図53(c)に示すように、対象ブロック(対象ノード)を、垂直方向に1:2:1の3つのノードに分割し、当該3つのノードのうち中央のノードを、水平方向に1:2:1に分割することによって、5つのノード(ブロック)に分割する。
続いて、図58を用いて、MT情報復号処理例2のMT分割フラグ判定、MT分割モード選択フラグ判定、MT分割方向フラグ判定の詳細について説明する。図58の(a)は、MT分割フラグ判定処理を示す疑似コードの一例を示す図であり、図58の(b)は、MT分割モード選択フラグ判定処理を示す疑似コードの一例を示す図であり、図58の(c)は、MT分割方向フラグ判定処理を示す疑似コードの一例を示す図である。
(MT分割フラグ判定)
MT情報復号処理例2のMT分割フラグ判定は、条件3がMT情報復号処理例1と異なる。MT情報復号処理例2のMT分割フラグ判定の条件3は以下の通りである。
条件3:分割対象ブロックの階層を示すqtDepthがmaxQTDepthより小さい、または分割対象ブロックの階層を示すmftDepthがmaxMFTDepthより小さい(qtDepth < maxQTDepth || mftDepth < maxMFTDepth)。ここでmaxMFTDepthはMFT分割時の深度(階層)の最大値である。
(MT分割モード選択フラグ判定)
MT情報復号処理例2のMT分割モード選択フラグ判定は、条件3がMT情報復号処理例1と異なる。MT情報復号処理例2のMT分割モード選択フラグ判定の条件3は以下の通りである。
条件3:分割の対象となるブロックの階層を示すqtDepthがmaxQTDepthより小さく、かつ分割の対象となるブロックの階層を示すmftDepthがmaxMFTDepthより小さい(qtDepth < maxQTDepth && mftDepth < maxMFTDepth)。
(MT分割方向フラグ判定)
CN情報復号部10は、以下の条件1から条件4を用いて、MT分割方向フラグ判定を行う。
条件1:MT分割モード選択フラグがMFT分割を示す(mt_sel_flag == MODE_MFT)。
条件2:分割の対象となるブロックの高さおよび幅がminPTSize×4以上(height >= minPTSize*4 && width >= minPTSize*4)。
条件3:分割対象ブロックの幅および高さがブロックサイズの最大値を示すmaxMTSize以下(width <= maxPTSize && height <= maxPTSize)。
条件4:分割の対象となるブロックの階層を示すqtDepthがmaxQTDepthより小さく、かつ分割の対象となるブロックの階層を示すmftDepthがmaxMFTDepthより小さい(qtDepth < maxQTDepth && mftDepth < maxMFTDepth)。
上記条件1~4の全てを満たす場合、CN情報復号部10は、MT分割方向フラグの復号は必要(TRUE)と判定する。また、上記条件1~4のいずれが満たされない場合、CN情報復号部10は、MT分割方向フラグの復号は不要(FALSE)と判定する。
また、MT情報復号処理例2においてCN情報復号部10は、対象ノードよりも上位のノードに対して、BT分割およびTT分割の少なくとも何れかによりノードの分割を行った場合、対象ノードに対して、5つのノードに分割する分割タイプ(MFT)とQT分割とを含む第1の分割タイプ群での分割を行わない。例えば、一度PT分割(BT分割、TT分割)を行った後は、MT分割(QT分割、MFT分割)を行わない。
図59は、MT分割フラグmt_split_flag、MT分割モード選択フラグmt_sel_flag、およびMT分割方向フラグmt_dir_flagの各々の値と形状の関係を示す表である。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグが0である(mt_sel_flag == 0)場合、CN情報復号部10は、図7の(a)に示すQTとなるよう分割する。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグがMT分割を示す1であり(mt_sel_flag == 1)、MT分割方向フラグが0である(mt_dir_flag == 0)場合、CN情報復号部10は、図53の(b)に示すMFT HOR(図59では「MFTH」と略記)となるよう分割する。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグがMT分割を示す1であり(mt_sel_flag == 1)、MT分割方向フラグが1である(mt_dir_flag == 1)場合、CN情報復号部10は、図53の(c)に示すMFT VER(図59では「MFTV」と略記)となるよう分割する。
つまり、MT分割フラグが、5つのノードに分割する分割タイプ(MFT)とQT分割とを含む第1の分割タイプ群での分割を行うことを示しており(mt_split_flag == 1)、かつ、MT分割モード選択フラグが、5つのノードに分割する分割タイプでの分割(MFT)を行うことを示している(mt_sel_flag == 1)場合に、CN情報復号部10は、MT分割方向フラグmt_dir_flagが示す方向を第1の方向として、対象ノードを5つのノードに分割する。
(MT情報復号処理例3)
MT情報復号処理例3のCN情報復号部10のMT情報復号処理のフローは、MT情報復号処理例2と同様である。
図60を用いて、MT情報復号処理例3のMT分割フラグ判定、MT分割モード選択フラグ判定、MT分割方向フラグ判定の詳細について説明する。図60の(a)は、MT分割フラグ判定処理を示す疑似コードの一例を示す図であり、図60の(b)は、MT分割モード選択フラグ判定処理を示す疑似コードの一例を示す図であり、図60の(c)は、MT分割方向フラグ判定処理を示す疑似コードの一例を示す図である。
(MT分割フラグ判定)
MT情報復号処理例3のMT分割フラグ判定は、条件3がMT情報復号処理例1と異なる。MT情報復号処理例3のMT分割フラグ判定の条件3は以下の通りである。
条件3:分割対象ブロックの階層を示すqtDepthがmaxQTDepthより小さい、または分割対象ブロックの階層を示すdqtDepthがmaxDQTDepthより小さい(qtDepth < maxQTDepth || dqtDepth < maxDQTDepth)。
(MT分割モード選択フラグ判定)
MT情報復号処理例3のMT分割モード選択フラグ判定は、条件3がMT情報復号処理例1と異なる。MT情報復号処理例3のMT分割モード選択フラグ判定の条件3は以下の通りである。
条件3:分割の対象となるブロックの階層を示すqtDepthがmaxQTDepthより小さく、かつ分割の対象となるブロックの階層を示すdqtDepthがmaxDQTDepthより小さい(qtDepth < maxQTDepth && dqtDepth < maxDQTDepth)。ここでmaxDQTDepthはDQT分割時の深度(階層)の最大値である。
(MT分割方向フラグ判定)
MT情報復号処理例3のMT分割方向フラグ判定は、条件1,2,4がMT情報復号処理例2と異なる。MT情報復号処理例3のMT分割方向フラグ判定の条件1,2,4は以下の通りである。
条件1:MT分割モード選択フラグがDQT分割を示す(mt_sel_flag == MODE_DQT)。
条件2:分割の対象となるブロックの高さがminPTSize×4以上、または分割の対象となるブロックの幅がminPTSize×4以上(height >= minPTSize*4 || width >= minPTSize*4)。
条件4:分割の対象となるブロックの階層を示すqtDepthがmaxQTDepthより小さく、かつ分割の対象となるブロックの階層を示すdqtDepthがmaxDQTDepthより小さい(qtDepth < maxQTDepth && dqtDepth < maxDQTDepth)。
また、MT情報復号処理例3においては、CN情報復号部10は、対象ノードよりも上位のノードに対して、4つのノードに分割する分割タイプ(DQT)によりノードの分割を行った場合、対象ノードに対して、長方形のノードを含む4つ以上のノードに分割する分割タイプでの分割を行わない。例えば、一回でもDQT分割を行った後は、MT分割(QT分割)を行わない。
図61は、MT分割フラグmt_split_flag、MT分割モード選択フラグmt_sel_flag、およびMT分割方向フラグmt_dir_flagの各々の値と形状の関係を示す表である。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグが0である(mt_sel_flag == 0)場合、CN情報復号部10は、図7の(a)に示すQTとなるよう分割する。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグがDQT分割を示す1であり(mt_sel_flag == 1)、MT分割方向フラグが0である(mt_dir_flag == 0)場合、CN情報復号部10は、図53の(e)に示すDQT HOR(図61では「DQTH」と略記)となるよう分割する。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグがDQT分割を示す1であり(mt_sel_flag == 1)、MT分割方向フラグが1である(mt_dir_flag == 1)場合、CN情報復号部10は、図53の(d)に示すDQT VER(図61では「DQTV」と略記)となるよう分割する。
つまり、MT分割フラグが、4つのノードに分割する分割タイプ(DQT)とQT分割とを含む第1の分割タイプ群での分割を行うことを示しており(mt_split_flag == 1)、かつ、MT分割モード選択フラグが、4つのノードに分割する分割タイプ(DQT)での分割を行うことを示している場合に、CN情報復号部10は、MT分割方向フラグが示す方向を第1の方向として、対象ノードを4つのノードに分割する。
(MT情報復号処理例4)
MT情報復号処理例4のCN情報復号部10のMT情報復号処理のフローは、MT情報復号処理例2と同様である。
図62を用いて、MT情報復号処理例4のMT分割フラグ判定、MT分割モード選択フラグ判定、MT分割方向フラグ判定の詳細について説明する。図62の(a)は、MT分割フラグ判定処理を示す疑似コードの一例を示す図であり、図62の(b)は、MT分割モード選択フラグ判定処理を示す疑似コードの一例を示す図であり、図62の(c)は、MT分割方向フラグ判定処理を示す疑似コードの一例を示す図である。
(MT分割フラグ判定)
MT情報復号処理例4のMT分割フラグ判定は、条件3がMT情報復号処理例1と異なる。MT情報復号処理例4のMT分割フラグ判定の条件3は以下の通りである。
条件3:分割対象ブロックの階層を示すqtDepthがmaxQTDepthより小さい、または分割対象ブロックの階層を示すdftDepthがmaxDFTDepthより小さい(qtDepth < maxQTDepth || dftDepth < maxDFTDepth)。ここでmaxDFTDepthはDFT分割時の深度(階層)の最大値である。
(MT分割モード選択フラグ判定)
MT情報復号処理例4のMT分割モード選択フラグ判定は、条件1,3がMT情報復号処理例1と異なる。MT情報復号処理例4のMT分割モード選択フラグ判定の条件1,3は以下の通りである。
条件1:分割の対象となるブロックの高さがminPTSize×8以上、または分割の対象となるブロックの幅がminPTSize×8以上(height >= minPTSize*8 && width >= minPTSize*8)。
条件3:分割の対象となるブロックの階層を示すqtDepthがmaxQTDepthより小さく、かつ分割の対象となるブロックの階層を示すdftDepthがmaxDFTDepthより小さい(qtDepth < maxQTDepth && dftDepth < maxDFTDepth)。
(MT分割方向フラグ判定)
MT情報復号処理例4のMT分割方向フラグ判定は、条件2,4がMT情報復号処理例3と異なる。MT情報復号処理例4のMT分割方向フラグ判定の条件2,4は以下の通りである。
条件2:分割の対象となるブロックの高さがminPTSize×8以上、または分割の対象となるブロックの幅がminPTSize×8以上(height >= minPTSize*8 || width >= minPTSize*8)。
条件4:分割の対象となるブロックの階層を示すqtDepthがmaxQTDepthより小さく、かつ分割の対象となるブロックの階層を示すdftDepthがmaxDFTDepthより小さい(qtDepth < maxQTDepth && dftDepth < maxDFTDepth)。
また、MT情報復号処理例4においてCN情報復号部10は、対象ノードよりも上位のノードに対して、5つのノードに分割する分割タイプ(DFT)によりノードの分割を行った場合、対象ノードに対して、長方形のノードを含む4つ以上のノードに分割する分割タイプでの分割を行わない。例えば、一度PT分割(DFT分割)を行った後は、MT分割(QT分割)を行わない。
図63は、MT分割フラグmt_split_flag、MT分割モード選択フラグmt_sel_flag、およびMT分割方向フラグmt_dir_flagの各々の値と形状の関係を示す表である。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグが0である(mt_sel_flag == 0)場合、CN情報復号部10は、図7の(a)に示すQTとなるよう分割する。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグがDQT分割を示す1であり(mt_sel_flag == 1)、MT分割方向フラグが0である(mt_dir_flag == 0)場合、CN情報復号部10は、図53の(g)に示すDFT HOR(図63では「DFTH」と略記)となるよう分割する。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグがDQT分割を示す1であり(mt_sel_flag == 1)、MT分割方向フラグが1である(mt_dir_flag == 1)場合、CN情報復号部10は、図53の(f)に示すDFT VER(図63では「DFTV」と略記)となるよう分割する。
つまり、MT分割フラグが、5つのノードに分割する分割タイプ(DFT)とQT分割とを含む第1の分割タイプ群での分割を行うことを示しており(mt_split_flag == 1)、かつ、MT分割モード選択フラグが、5つのノードに分割する分割タイプ(DFT)での分割を行うことを示している(mt_sel_flag == 1)場合に、CN情報復号部10は、MT分割方向フラグが示す方向を第1の方向として、対象ノードを5つのノードに分割する。
(MT情報復号処理例5)
図64は、本発明の一実施形態に係るCN情報復号部10のMT情報復号処理を説明するフローチャートである。本実施形態では、MT分割する場合に、非対称のパターンを識別するフラグ(MT非対称フラグmt_amt_flag)の復号処理をする点で、上記MT情報復号処理例2と異なる。
S2201~S1407は、上記MT情報復号処理例2のS1401~S1407に対応し、S2211~S2013は、上記MT情報復号処理例2のS1409~S1411に対応する。
S2206において、CN情報復号部10が、MT分割方向フラグを復号すると判定した場合、またはS2207に続きS2208に進む。
(S2208)
CN情報復号部10は、S2208において、MT非対称フラグを復号するのか否かを判定する。CN情報復号部10が、MT非対称フラグを復号すると判定した場合、S2209に進み、MT分割MMTフラグを復号しないと判定した場合、S2210に進む。
(S2209)
S2209において、CN情報復号部10は、MT非対称フラグmt_amt_flagの復号を行う。ここで、mt_amt_flag=0は、対象ブロック(対象ノード)の分割方向が水平方向である場合には上から順に1:4:2:1になるように分割し、対象ブロック(対象ノード)の分割方向が垂直方向である場合には左から順に1:4:2:1になるように分割することを示し、mt_amt_flag=1は、対象ブロック(対象ノード)の分割方向が水平方向である場合には上から順に1:2:4:1になるように分割し、対象ブロック(対象ノード)の分割方向が垂直方向である場合には左から順に1:2:4:1になるように分割することを示す。
(S2210)
S2210において、CN情報復号部10は、分割対象ブロックを、MT分割モード選択フラグmt_sel_flag、MT分割方向フラグmt_dir_flag、およびMT非対称フラグmt_amt_flagに基づいて分割を行う。
続いて、図65を用いて、MT情報復号処理例5のMT分割フラグ判定、MT分割モード選択フラグ判定、MT分割方向フラグ判定の詳細について説明する。図65の(a)は、MT分割フラグ判定処理を示す疑似コードの一例を示す図であり、図65の(b)は、MT分割モード選択フラグ判定処理を示す疑似コードの一例を示す図であり、図65の(c)は、MT分割方向フラグ判定処理を示す疑似コードの一例を示す図である。
(MT分割フラグ判定)
MT情報復号処理例5のMT分割フラグ判定は、条件3がMT情報復号処理例1と異なる。MT情報復号処理例5のMT分割フラグ判定の条件3は以下の通りである。
条件3:分割対象ブロックの階層を示すqtDepthがmaxQTDepthより小さい、または分割対象ブロックの階層を示すdaqtDepthがmaxDAQTDepthより小さい(qtDepth < maxQTDepth || daqtDepth < maxDAQTDepth)。ここでmaxDAQTDepthはDAQT分割時の深度(階層)の最大値である。
(MT分割モード選択フラグ判定)
MT情報復号処理例5のMT分割モード選択フラグ判定は、条件3がMT情報復号処理例4と異なる。MT情報復号処理例5のMT分割モード選択フラグ判定の条件3は以下の通りである。
条件3:分割の対象となるブロックの階層を示すqtDepthがmaxQTDepthより小さく、かつ分割の対象となるブロックの階層を示すdaqtDepthがmaxDAQTDepthより小さい(qtDepth < maxQTDepth && daqtDepth < maxDAQTDepth)。
(MT分割方向フラグ判定)
MT情報復号処理例5のMT分割方向フラグ判定は、条件1と4がMT情報復号処理例4と異なる。MT情報復号処理例5のMT分割方向フラグ判定の条件4は以下の通りである。
条件4:分割の対象となるブロックの階層を示すqtDepthがmaxQTDepthより小さく、かつ分割の対象となるブロックの階層を示すdaqtDepthがmaxDAQTDepthより小さい(qtDepth < maxQTDepth && daqtDepth < maxDAQTDepth)。
また、MT情報復号処理例5においてCN情報復号部10は、対象ノードよりも上位のノードに対して、4つのノードに分割する分割タイプ(DAQT)によりノードの分割を行った場合、対象ノードに対して、長方形のノードを含む4つ以上のノードに分割する分割タイプでの分割を行わない。例えば、一回でもDAQT分割を行った後は、MT分割(QT分割)を行わない。
図66は、MT分割フラグmt_split_flag、MT分割モード選択フラグmt_sel_flag、MT分割方向フラグmt_dir_flag、およびMT非対称フラグmt_amt_flagの各々の値と形状の関係を示す表である。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグが0である(mt_sel_flag == 0)場合、CN情報復号部10は、図7の(a)に示すQTとなるよう分割する。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグがMT分割を示す1であり(mt_sel_flag == 1)、MT分割方向フラグが0であり(mt_dir_flag == 0)、MT非対称フラグが0である(mt_amt_flag == 0)場合、CN情報復号部10は、図54の(c)に示すDAQT HOR 0(図66では「DAQTH0」と略記)となるよう分割する。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグがMT分割を示す1であり(mt_sel_flag == 1)、MT分割方向フラグが0であり(mt_dir_flag == 0)、MT非対称フラグが1である(mt_amt_flag == 1)場合、CN情報復号部10は、図54の(d)に示すDAQT HOR 1(図66では「DAQTH1」と略記)となるよう分割する。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグがMT分割を示す1であり(mt_sel_flag == 1)、MT分割方向フラグが1であり(mt_dir_flag == 1)、MT非対称フラグが0である(mt_amt_flag == 0)場合、CN情報復号部10は、図54の(a)に示すDAQT VER 0(図66では「DAQTV0」と略記)となるよう分割する。
MT分割フラグが1であり(mt_split_flag == 1)、MT分割モード選択フラグがMT分割を示す1であり(mt_sel_flag == 1)、MT分割方向フラグが1であり(mt_dir_flag == 1)、MT非対称フラグが1である(mt_amt_flag == 1)場合、CN情報復号部10は、図54の(b)に示すDAQT VER 1(図66では「DAQTV1」と略記)となるよう分割する。
つまり、MT分割フラグが、非対称かつ方向性を持つ4つのノードに分割する分割タイプ(DAQT)と、方向性を持たない4つのノードに分割するQT分割とを含む第1の分割タイプ群での分割を行うことを示しており(mt_sel_flag == 1)、かつ、非対象かつ方向性を持つ分割を行うことを示している(mt_sel_flag == 1)場合に、CN情報復号部10は、MT分割方向フラグが示す方向を第1の方向とし、MT非対称フラグmt_amt_flag(上記第4のフラグ)が示す1:4:2:1の比、または1:2:4:1の比に従い、対象ノードを4つのノードに分割する。
(第3の実施形態)
(MT分割モード群とPT分割モード群)
本実施形態においても、上述した種々の分割モードを、MT分割モード群(MT分割)とPT分割モード群(PT分割)とに分類する。ここで、MT分割にはQT分割が少なくとも含まれ、PT分割にはBT分割が少なくとも含まれる。
本実施形態では、方向性を持たない分割を、MT分割に分類し、方向性を持つ分割をPT分割に分類する。
より具体的には、本実施形態では、MT分割は、QT分割を備え、PT分割が、BT分割に加えて、
DQT分割、DFT分割、及び、DAQT分割
を含んでいる。またPT分割はTT分割を含んでいてよい。
第3の実施形態は、分割モード群として、第1のモード群(MT分割)と第2のモード群(PT分割)を有し、第2のモード群として、(直上位のノードが正方形である場合において)、少なくとも、長方形の2つのノードに分割するBT分割と長方形のノードを含む4つ以上のノードに分割する分割を含む。
(PT情報復号処理)
(PT情報復号処理例1)
図67は、本発明の一実施形態に係るCN情報復号部10のPT情報復号処理を説明するフローチャートである。PT分割が、BT分割、TT分割、およびDQT分割を含んでいる場合のPT情報復号処理を説明するフローチャートである。PT復号処理は、MT情報復号処理の後段で行われる。
(S2701)
CN情報復号部10は、まず、S2701において、PT分割フラグを復号するのか否かを判定する。CN情報復号部10が、PT分割フラグを復号すると判定した場合、ステップS2702に進み、PT分割フラグを復号しないと判定した場合、PT情報復号処理を終了する。
(S2702)
S2702において、CN情報復号部10は、PT分割フラグpt_split_flagの復号を行う。ここで、pt_split_flag = 0は、対象ブロック分割しないことを示し、pt_split_flag = 1は、対象ブロック分割することを示す。
(S2703)
続いて、CN情報復号部10は、PT分割フラグpt_split_flagに関する判別式
PT分割フラグ != 0 (式2701)
の真偽を判定する。(式2701)が真である場合、ステップS2704に進み、(式2701)が偽である場合、PT情報復号処理を終了する。
(S2704)
S2704において、CN情報復号部10は、PT分割方向フラグを復号するのか否かを判定する(PT分割フラグ判定)。CN情報復号部10が、PT分割方向フラグを復号すると判定した場合(PT分割フラグ判定がY/TRUE)、ステップS2705に進み、PT分割方向フラグを復号しないと判定した場合(PT分割フラグ判定がN/FALSE)、ステップS2706に進む。
(S2705)
S2705において、CN情報復号部10は、PT分割方向フラグpt_dir_flagを復号する。ここで、pt_dir_flag = 0は、対象ブロックを水平方向に分割することを示し、pt_dir_flag = 1は、対象ブロックを垂直方向に分割することを示す。
(S2706)
S2706において、CN情報復号部10は、PT分割モード選択フラグを復号するのか否かを判定する(PT分割モード選択フラグ判定)。CN情報復号部10が、PT分割モード選択フラグを復号すると判定した場合(PT分割モード選択フラグ判定がY/TRUE)、ステップS2707に進み、PT分割モード選択フラグを復号しないと判定した場合(PT分割モード選択フラグ判定がN/FALSE)、ステップS2708に進む。
(S2707)
S2707において、CN情報復号部10は、PT分割モード選択フラグpt_sel_flagを復号する。ここで、pt_sel_flag = 0は、対象ブロックをBT分割することを示し、pt_sel_flag = 1は、対象ブロックをTT分割することを示す。
(S2708)
S2708において、CN情報復号部10は、分割対象ブロックを、PT分割方向フラグpt_dir_flagの示す分割方向、およびPT分割モード選択フラグpt_sel_flagの示す分割モードによって分割する。
(S2709~S2711)
続いて、当該分割によって生じたブロックに対してPT情報復号処理を繰り返し行うループ処理を行う(S2709、S2710、S2711)。当該ループ処理が終了すると処理は終了する。
図68を用いて、PT情報復号処理例1のPT分割フラグ判定、PT分割モード選択フラグ判定、PT分割方向フラグ判定の詳細について説明する。図68の(a)は、PT分割フラグ判定処理を示す疑似コードの一例を示す図であり、図68の(b)は、PT分割モード選択フラグ判定処理を示す疑似コードの一例を示す図であり、図68の(c)は、PT分割方向フラグ判定処理を示す疑似コードの一例を示す図である。
(PT分割フラグ判定)
CN情報復号部10は、以下の条件1から条件3を用いて、PT分割フラグ判定を行う。
条件1:分割の対象となるブロックの高さがminPTSize×2以上、または、分割の対象となるブロックの幅がminPTSize×2以上(height >= minPTSize*2 || width >= minPTSize*2)。
条件2:分割対象ブロックの幅および高さがPTサイズの最大値を示すmaxMTSize以下(width <= maxPTSize && height <= maxPTSize)。
条件3:分割対象ブロックの階層を示すptDepthがmaxPTDepthより小さい、または分割対象ブロックの階層を示すdqtDepthがmaxDQTDepthより小さい(ptDepth < maxPTDepth || dqtDepth < maxDQTDepth)。
上記条件1~3の全てを満たす場合、CN情報復号部10はPT分割フラグが存在する(TRUE)と判定する。また、上記条件1~3のいずれかが満たされない場合、CN情報復号部10は、PT分割はできない(FALSE)と判定する。
(PT分割モード選択フラグ判定)
CN情報復号部10は、以下の条件1から条件3を用いて、PT分割モード選択フラグ判定を行う。
条件1:分割の対象となるブロックの高さがminPTSize×4以上、または分割の対象となるブロックの幅がminPTSize×4以上(height >= minPTSize*4 || width >= minPTSize*4)。
条件2:分割対象ブロックの幅および高さがMTサイズの最大値を示すmaxMTSize以下(width <= maxMTSize && height <= maxMTSize)。
条件3:分割の対象となるブロックの階層を示すptDepthがmaxPTDepthより小さく、かつ分割の対象となるブロックの階層を示すdqtDepthがmaxDQTDepthより小さい(ptDepth < maxPTDepth && dqtDepth < maxDQTDepth)。
上記条件1~3の全てを満たす場合、CN情報復号部10は、PT分割モード選択フラグの復号は必要(TRUE)と判定する。また、上記条件1~3の全てが満たされない場合、CN情報復号部10は、PT分割モード選択フラグの復号は不要(FALSE)と判定する。
(PT分割方向フラグ判定)
CN情報復号部10は、以下の条件1から条件4を用いて、PT分割方向フラグ判定を行う。
条件1:PT分割モード選択フラグがDQT分割を示す(pt_sel_flag == MODE_DQT)。
条件2:分割の対象となるブロックの高さがminPTSize×4以上、または分割の対象となるブロックの幅がminPTSize×4以上(height >= minPTSize*4 || width >= minPTSize*4)。
条件3:分割対象ブロックの幅および高さがMTサイズの最大値を示すmaxMTSize以下(width <= maxMTSize && height <= maxMTSize)。
条件4:分割の対象となるブロックの階層を示すptDepthがmaxPTDepthより小さく、かつ分割の対象となるブロックの階層を示すdqtDepthがmaxDQTDepthより小さい(ptDepth < maxPTDepth && dqtDepth < maxDQTDepth)。
上記条件1~4の全てを満たす場合、CN情報復号部10は、PT分割方向フラグの復号は必要(TRUE)と判定する。また、上記条件1~4のいずれかが満たされない場合、CN情報復号部10は、PT分割方向フラグの復号は不要(FALSE)と判定する。
PT情報復号処理例1においては、一回でもPT分割(DQT分割)を行った後は、MT分割(QT分割)を制限(禁止)する。また、TT分割の中心ブロックのBT分割を制限(禁止)する。また、BT分割のブロックでの同じ方向のBT分割を制限(禁止)する。
図69は、PT分割フラグpt_split_flag、PT分割方向フラグpt_dir_flag、およびPT分割モード選択フラグpt_sel_flagの各々の値と形状の関係を示す表である。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが0であり(pt_dir_flag == 0)、PT分割モード選択フラグが0である(pt_sel_flag == 0)場合、CN情報復号部10は、図7の(b)に示すBT HOR(図69では「BTH」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが0であり(pt_dir_flag == 0)、PT分割モード選択フラグが1である(pt_sel_flag == 1)場合、CN情報復号部10は、図7の(e)に示すTT HOR(図69では「TTH」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが0であり(pt_dir_flag == 0)、PT分割モード選択フラグが2である(pt_sel_flag == 2)場合、CN情報復号部10は、図53の(e)に示すDQT HOR(図69では「DQTH」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが1であり(pt_dir_flag == 1)、PT分割モード選択フラグが0である(pt_sel_flag == 0)場合、CN情報復号部10は、図7の(c)に示すBT VER(図69では「BTV」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが1であり(pt_dir_flag == 0)、PT分割モード選択フラグが1である(pt_sel_flag == 1)場合、CN情報復号部10は、図7の(f)に示すTT VER(図69では「TTV」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが1であり(pt_dir_flag == 0)、PT分割モード選択フラグが2である(pt_sel_flag == 2)場合、CN情報復号部10は、図53の(d)に示すDQT VER(図69では「DQTV」と略記)となるよう分割する。
(PT情報復号処理例2)
図70を用いて、PT分割フラグ判定、PT分割モード選択フラグ判定、PT分割方向フラグ判定の詳細について説明する。図70の(a)は、PT分割フラグ判定処理を示す疑似コードの一例を示す図であり、図70の(b)は、PT分割モード選択フラグ判定処理を示す疑似コードの一例を示す図であり、図70の(c)は、PT分割方向フラグ判定処理を示す疑似コードの一例を示す図である。
(PT分割フラグ判定)
PT情報復号処理例2のPT分割フラグ判定は、条件3がPT情報復号処理例1と異なる。PT情報復号処理例2のPT分割フラグ判定の条件3は以下の通りである。
条件3:分割対象ブロックの階層を示すptDepthがmaxPTDepthより小さい、または分割対象ブロックの階層を示すdftDepthがmaxDFTDepthより小さい(ptDepth < maxPTDepth || dftDepth < maxDFTDepth)。
(PT分割モード選択フラグ判定)
PT情報復号処理例2のPT分割モード選択フラグ判定は、条件1,3がPT情報復号処理例1と異なる。PT情報復号処理例2のPT分割モード選択フラグ判定の条件1,3は以下の通りである。
条件1:分割の対象となるブロックの高さがminPTSize×8以上、または分割の対象となるブロックの幅がminPTSize×8以上(height >= minPTSize*8 || width >= minPTSize*8)。
条件3:分割の対象となるブロックの階層を示すptDepthがmaxPTDepthより小さく、かつ分割の対象となるブロックの階層を示すdftDepthがmaxDFTDepthより小さい(ptDepth < maxPTDepth && dftDepth < maxDFTDepth)。
(PT分割方向フラグ判定)
PT情報復号処理例2のPT分割方向フラグ判定は、条件1,2,4がPT情報復号処理例1と異なる。PT情報復号処理例2のPT分割方向フラグ判定の条件1,2,4は以下の通りである。
条件1:PT分割モード選択フラグがDFT分割を示す(pt_sel_flag == MODE_DFT)。
条件2:分割の対象となるブロックの高さがminPTSize×8以上、または分割の対象となるブロックの幅がminPTSize×8以上(height >= minPTSize*8 || width >= minPTSize*8)。
条件4:分割の対象となるブロックの階層を示すptDepthがmaxPTDepthより小さく、かつ分割の対象となるブロックの階層を示すdftDepthがmaxDFTDepthより小さい(ptDepth < maxPTDepth && dftDepth < maxDFTDepth)。
PT情報復号処理例2においては、一回でもPT分割(DFT分割)を行った後は、MT分割(QT分割)を制限(禁止)する。
図71は、PT分割フラグpt_split_flag、PT分割方向フラグpt_dir_flag、およびPT分割モード選択フラグpt_sel_flagの各々の値と形状の関係を示す表である。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが0であり(pt_dir_flag == 0)、PT分割モード選択フラグが0である(pt_sel_flag == 0)場合、CN情報復号部10は、図7の(b)に示すBT HOR(図71では「BTH」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが0であり(pt_dir_flag == 0)、PT分割モード選択フラグが1である(pt_sel_flag == 1)場合、CN情報復号部10は、図7の(e)に示すTT HOR(図71では「TTH」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが0であり(pt_dir_flag == 0)、PT分割モード選択フラグが2である(pt_sel_flag == 2)場合、CN情報復号部10は、図53の(g)に示すDFT HOR(図71では「DFTH」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが1であり(pt_dir_flag == 1)、PT分割モード選択フラグが0である(pt_sel_flag == 0)場合、CN情報復号部10は、図7の(c)に示すBT VER(図71では「BTV」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが1であり(pt_dir_flag == 0)、PT分割モード選択フラグが1である(pt_sel_flag == 1)場合、CN情報復号部10は、図7の(f)に示すTT VER(図71では「TTV」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが1であり(pt_dir_flag == 0)、PT分割モード選択フラグが2である(pt_sel_flag == 2)場合、CN情報復号部10は、図53の(f)に示すDFT VER(図71では「DFTV」と略記)となるよう分割する。
(PT情報復号処理例3)
図72は、本発明の一実施形態に係るCN情報復号部10のPT情報復号処理を説明するフローチャートである。本実施形態では、PT分割である場合に、非対称のパターンを識別するフラグ(PT非対称フラグpt_amt_flag)の復号処理をする点で、上記PT情報復号処理例1と異なる。
S3201~S3207は、上記PT情報復号処理例1のS2701~S2707に対応し、S3210~S3213は、上記PT情報復号処理例1のS2708~S2711に対応する。
S3206において、CN情報復号部10が、PT分割モード選択フラグを復号すると判定した場合、またはS3207に続きS3208に進む。
(S3208)
CN情報復号部10は、S3208において、PT非対称フラグを復号するのか否かを判定する。CN情報復号部10が、PT非対称フラグを復号すると判定した場合、S3209に進み、PT非対称フラグを復号しないと判定した場合、S3210に進む。
(S3209)
S3209において、CN情報復号部10は、PT非対称フラグpt_amt_flagの復号を行う。ここで、pt_amt_flag=0は、対象ブロック(対象ノード)の分割方向が水平方向である場合には上から順に1:4:2:1になるように分割し、対象ブロック(対象ノード)の分割方向が垂直方向である場合には左から順に1:4:2:1になるように分割することを示し、mt_amt_flag=1は、対象ブロック(対象ノード)の分割方向が水平方向である場合には上から順に1:2:4:1になるように分割し、対象ブロック(対象ノード)の分割方向が垂直方向である場合には左から順に1:2:4:1になるように分割することを示す。
図73を用いて、PT分割フラグ判定、PT分割モード選択フラグ判定、PT分割方向フラグ判定の詳細について説明する。図73の(a)は、PT分割フラグ判定処理を示す疑似コードの一例を示す図であり、図73の(b)は、PT分割モード選択フラグ判定処理を示す疑似コードの一例を示す図であり、図73の(c)は、PT分割方向フラグ判定処理を示す疑似コードの一例を示す図である。
(PT分割フラグ判定)
PT情報復号処理例3のPT分割フラグ判定は、条件3がPT情報復号処理例1と異なる。PT情報復号処理例3のPT分割フラグ判定の条件3は以下の通りである。
条件3:分割対象ブロックの階層を示すptDepthがmaxPTDepthより小さい、または分割対象ブロックの階層を示すdaptDepthがmaxDAQTDepthより小さい(ptDepth < maxPTDepth || daqtDepth < maxDAQTDepth)。
(PT分割モード選択フラグ判定)
PT情報復号処理例3のPT分割モード選択フラグ判定は、条件3がPT情報復号処理例2と異なる。PT情報復号処理例3のPT分割モード選択フラグ判定の条件3は以下の通りである。
条件3:分割の対象となるブロックの階層を示すptDepthがmaxPTDepthより小さく、かつ分割の対象となるブロックの階層を示すdaqtDepthがmaxDAQTDepthより小さい(ptDepth < maxPTDepth && daqtDepth < maxDAQTDepth)。
(PT分割方向フラグ判定)
PT情報復号処理例3のPT分割方向フラグ判定は、条件1,4がPT情報復号処理例2と異なる。PT情報復号処理例3のPT分割方向フラグ判定の条件1,4は以下の通りである。
条件1:PT分割モード選択フラグがDAQT分割を示す(pt_sel_flag == MODE_DAQT)。
条件4:分割の対象となるブロックの階層を示すptDepthがmaxPTDepthより小さく、かつ分割の対象となるブロックの階層を示すdftDepthがmaxDFTDepthより小さい(ptDepth < maxPTDepth && daqtDepth < maxDAQTDepth)。
PT情報復号処理例3においては、一回でもPT分割(DAQT分割)を行った後は、MT分割(QT分割)を制限(禁止)する。
図74は、PT分割フラグpt_split_flag、PT分割方向フラグpt_dir_flag、PT分割モード選択フラグpt_sel_flag、およびPT非対称フラグpt_amt_flagの各々の値と形状の関係を示す表である。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが0であり(pt_dir_flag == 0)、PT分割モード選択フラグが0である(pt_sel_flag == 0)場合、CN情報復号部10は、図7の(b)に示すBT HOR(図74では「BTH」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが0であり(pt_dir_flag == 0)、PT分割モード選択フラグが1である(pt_sel_flag == 1)場合、CN情報復号部10は、図7の(e)に示すTT HOR(図74では「TTH」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが0であり(pt_dir_flag == 0)、PT分割モード選択フラグが2であり(pt_sel_flag == 2)、PT非対称フラグが0である(pt_amt_flag == 0)場合、CN情報復号部10は、図54の(c)に示すDAQT HOR 0(図74では「DAQTH0」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが0であり(pt_dir_flag == 0)、PT分割モード選択フラグが2であり(pt_sel_flag == 2)、PT非対称フラグが1である(pt_amt_flag == 1)場合、CN情報復号部10は、図54の(d)に示すDAQT HOR 1(図74では「DAQTH1」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが1であり(pt_dir_flag == 1)、PT分割モード選択フラグが0である(pt_sel_flag == 0)場合、CN情報復号部10は、図7の(c)に示すBT VER(図74では「BTV」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが1であり(pt_dir_flag == 1)、PT分割モード選択フラグが1である(pt_sel_flag == 1)場合、CN情報復号部10は、図7の(f)に示すTT VER(図74では「TTV」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが1であり(pt_dir_flag == 1)、PT分割モード選択フラグが2であり(pt_sel_flag == 2)、PT非対称フラグが0である(pt_amt_flag == 0)場合、CN情報復号部10は、図54の(a)に示すDAQT VER 0(図74では「DAQTV0」と略記)となるよう分割する。
PT分割フラグが1であり(pt_split_flag == 1)、PT分割方向フラグが1であり(pt_dir_flag == 1)、PT分割モード選択フラグが2であり(pt_sel_flag == 2)、PT非対称フラグが1である(pt_amt_flag == 1)場合、CN情報復号部10は、図54の(b)に示すDAQT VER 1(図74では「DAQTV1」と略記)となるよう分割する。
(ソフトウェアによる実現例)
なお、上述した実施形態における画像符号化装置11、画像復号装置31の一部、例えば、エントロピー復号部301、予測パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆DCT部311、加算部312、予測画像生成部101、減算部102、DCT・量子化部103、エントロピー符号化部104、逆量子化・逆DCT部105、ループフィルタ107、符号化パラメータ決定部110、予測パラメータ符号化部111をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、画像符号化装置11、画像復号装置31のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
また、上述した実施形態における画像符号化装置11、画像復号装置31の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。画像符号化装置11、画像復号装置31の各機能ブロックは個別にプロセッサ化しても良いし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
〔応用例〕
上述した画像符号化装置11及び画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
まず、上述した画像符号化装置11及び画像復号装置31を、動画像の送信及び受信に利用できることを、図75を参照して説明する。
図75の(a)は、画像符号化装置11を搭載した送信装置PROD_Aの構成を示したブロック図である。図75の(a)に示すように、送信装置PROD_Aは、動画像を符号化することによって符号化データを得る符号化部PROD_A1と、符号化部PROD_A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部PROD_A2と、変調部PROD_A2が得た変調信号を送信する送信部PROD_A3と、を備えている。上述した画像符号化装置11は、この符号化部PROD_A1として利用される。
送信装置PROD_Aは、符号化部PROD_A1に入力する動画像の供給源として、動画像を撮像するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成または加工する画像処理部A7を更に備えていてもよい。図75の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
図75の(b)は、画像復号装置31を搭載した受信装置PROD_Bの構成を示したブロック図である。図75の(b)に示すように、受信装置PROD_Bは、変調信号を受信する受信部PROD_B1と、受信部PROD_B1が受信した変調信号を復調することによって符号化データを得る復調部PROD_B2と、復調部PROD_B2が得た符号化データを復号することによって動画像を得る復号部PROD_B3と、を備えている。上述した画像復号装置31は、この復号部PROD_B3として利用される。
受信装置PROD_Bは、復号部PROD_B3が出力する動画像の供給先として、動画像を表示するディスプレイPROD_B4、動画像を記録するための記録媒体PROD_B5、及び、動画像を外部に出力するための出力端子PROD_B6を更に備えていてもよい。図75の(b)においては、これら全てを受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_B5は、符号化されていない動画像を記録するためのものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部PROD_B3と記録媒体PROD_B5との間に、復号部PROD_B3から取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、及び有線通信の何れによって実現してもよい。
例えば、地上デジタル放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を無線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。また、ケーブルテレビ放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を有線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。
また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービスなどのサーバ(ワークステーションなど)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォンなど)は、変調信号を通信で送受信する送信装置PROD_A/受信装置PROD_Bの一例である(通常、LANにおいては伝送媒体として無線または有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、及びタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置PROD_A及び受信装置PROD_Bの双方として機能する。
次に、上述した画像符号化装置11及び画像復号装置31を、動画像の記録及び再生に利用できることを、図76を参照して説明する。
図76の(a)は、上述した画像符号化装置11を搭載した記録装置PROD_Cの構成を示したブロック図である。図76の(a)に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した画像符号化装置11は、この符号化部PROD_C1として利用される。
なお、記録媒体PROD_Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)などのように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリなどのように、記録装置PROD_Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc)やBD(Blu-ray Disc:登録商標)などのように、記録装置PROD_Cに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成または加工する画像処理部PROD_C6を更に備えていてもよい。図76の(a)においては、これら全てを記録装置PROD_Cが備えた構成を例示しているが、一部を省略しても構わない。
なお、受信部PROD_C5は、符号化されていない動画像を受信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部PROD_C5と符号化部PROD_C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
このような記録装置PROD_Cとしては、例えば、DVDレコーダ、BDレコーダ、HDD(Hard Disk Drive)レコーダなどが挙げられる(この場合、入力端子PROD_C4または受信部PROD_C5が動画像の主な供給源となる)。また、カムコーダ(この場合、カメラPROD_C3が動画像の主な供給源となる)、パーソナルコンピュータ(この場合、受信部PROD_C5または画像処理部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラPROD_C3または受信部PROD_C5が動画像の主な供給源となる)なども、このような記録装置PROD_Cの一例である。
図76の(b)は、上述した画像復号装置31を搭載した再生装置PROD_Dの構成を示したブロック図である。図76の(b)に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述した画像復号装置31は、この復号部PROD_D2として利用される。
なお、記録媒体PROD_Mは、(1)HDDやSSDなどのように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリなどのように、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBDなどのように、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図76の(b)においては、これら全てを再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
なお、送信部PROD_D5は、符号化されていない動画像を送信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部PROD_D2と送信部PROD_D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
このような再生装置PROD_Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤなどが挙げられる(この場合、テレビジョン受像機等が接続される出力端子PROD_D4が動画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイPROD_D3が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称され、ディスプレイPROD_D3または送信部PROD_D5が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子PROD_D4または送信部PROD_D5が動画像の主な供給先となる)、ラップトップ型またはタブレット型PC(この場合、ディスプレイPROD_D3または送信部PROD_D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイPROD_D3または送信部PROD_D5が動画像の主な供給先となる)なども、このような再生装置PROD_Dの一例である。
(ハードウェア的実現およびソフトウェア的実現)
また、上述した画像復号装置31および画像符号化装置11の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
後者の場合、上記各装置は、各機能を実現するプログラムの命令を実行するCPU、上記プログラムを格納したROM(Read Only Memory)、上記プログラムを展開するRAM(Random Access Memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の実施形態の目的は、上述した機能を実現するソフトウェアである上記各装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記各装置に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD-ROM(Compact Disc Read-Only Memory)/MOディスク(Magneto-Optical disc)/MD(Mini Disc)/DVD(Digital Versatile Disc)/CD-R(CD Recordable)/ブルーレイディスク(Blu-ray Disc:登録商標)等の光ディスクを含むディスク類、ICカード(メモリカードを含む)/光カード等のカード類、マスクROM/EPROM(Erasable Programmable Read-Only Memory)/EEPROM(Electrically Erasable and Programmable Read-Only Memory:登録商標)/フラッシュROM等の半導体メモリ類、あるいはPLD(Programmable logic device)やFPGA(Field Programmable Gate Array)等の論理回路類などを用いることができる。
また、上記各装置を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、LAN(Local Area Network)、ISDN(Integrated Services Digital Network)、VAN(Value-Added Network)、CATV(Community Antenna television/Cable Television)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、IEEE(Institute of Electrical and Electronic Engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric Digital Subscriber Line)回線等の有線でも、IrDA(Infrared Data Association)やリモコンのような赤外線、BlueTooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(Digital Living Network Alliance:登録商標)、携帯電話網、衛星回線、地上デジタル放送網等の無線でも利用可能である。なお、本発明の実施形態は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
〔付記事項〕
本発明の一態様に係る画像復号装置は、上記の課題を解決するために、ピクチャを符号化ツリーユニット毎に復号する画像復号装置において、上記符号化ツリーユニットの符号化ノードを、二分木分割及び三分木分割の少なくとも何れかにより階層的に分割する分割部を備え、上記分割部は、対象ノードの分割の仕方を、当該対象ノードよりも一世代上位のノードである直上位ノードの分割の仕方を参照して制限する。
また、本発明の一態様に係る画像復号装置は、ピクチャを符号化ツリーユニット毎に復号する画像復号装置において、上記符号化ツリーユニットの符号化ノードを階層的に分割する分割部を備え、対象ノードが、アスペクト比が所定の値以上となるような矩形状である場合に、上記分割部は、当該対象ノードを、当該対象ノードの長手方向に沿って境界が生じる3分木分割にて分割することを制限する。
また、本発明の一態様に係る画像復号装置は、ピクチャを符号化ツリーユニット毎に復号する画像復号装置において、上記符号化ツリーユニットの符号化ノードを、二分木分割及び三分木分割の少なくとも何れかにより階層的に分割する分割部を備え、上記分割部は、対象ノードの分割を、二分木分割及び三分木分割に共通のデプス変数を参照して制限する。
また、本発明の一態様に係る画像符号化装置は、ピクチャを符号化ツリーユニットに分割して符号化する画像符号化装置において、上記符号化ツリーユニットの符号化ノードを、二分木分割及び三分木分割の少なくとも何れかにより階層的に分割する分割部を備え、上記分割部は、対象ノードの分割の仕方を、当該対象ノードよりも一世代上位のノードである直上位ノードの分割の仕方を参照して制限する。
また、本発明の一態様に係る画像符号化装置は、ピクチャを符号化ツリーユニットに分割して符号化する画像符号化装置において、上記符号化ツリーユニットの符号化ノードを階層的に分割する分割部を備え、対象ノードが、アスペクト比が所定の値以上となるような矩形状である場合に、上記分割部は、当該対象ノードを、当該対象ノードの長手方向に沿って境界が生じる3分木分割にて分割することを制限する。
また、本発明の一態様に係る画像符号化装置は、ピクチャを符号化ツリーユニットに分割して符号化する画像符号化装置において、上記符号化ツリーユニットの符号化ノードを、二分木分割及び三分木分割の少なくとも何れかにより階層的に分割する分割部を備え、上記分割部は、対象ノードの分割を、二分木分割及び三分木分割に共通のデプス変数を参照して制限する。
また、本発明の一態様に係る画像符号化装置は、ピクチャを符号化ツリーユニット毎に復号する画像復号装置において、上記符号化ツリーユニットの符号化ノードを分割する分割部を備え、上記分割部は、第1のフラグ、第2のフラグ、第3のフラグを参照するものであり、上記第1のフラグが、対象ノードを、第1の方向に1:1:1:1のノードに分割することによって4つのノードに分割する分割タイプと4分木分割とを含む第1の分割タイプ群での分割を行うことを示しており、かつ、上記第2のフラグが、上記4つのノードに分割する分割タイプでの分割を行うことを示している場合に、上記分割部は、上記第3のフラグが示す方向を上記第1の方向として、上記対象ノードを上記4つのノードに分割する。
また、本発明の一態様に係る画像復号装置は、ピクチャを符号化ツリーユニット毎に復号する画像復号装置において、対象ブロックの幅、対象ブロックの高さ、符号化単位の最小サイズ、符号化単位の最大サイズ、および対象ブロックの階層に基づいてBT分割可能判定を行い、上記対象ブロックの幅、上記対象ブロックの高さ、符号化単位の最小サイズ、符号化単位の最大サイズ、および上記対象ブロックの階層に基づいてTT分割可能判定を行い、上記対象ブロックを2分木分割(BT分割)または3分木分割(TT分割)するか否かを示すPT分割フラグの復号要否を判定して、復号要であればPT分割フラグを復号し、上記PT分割フラグが、上記対象ブロックを2分木分割または3分木分割することを示す場合、上記対象ブロックの分割方向を示す分割方向フラグの復号要否を判定して、復号要であれば上記分割方向フラグを復号し、2分木分割または3分木分割を示す分割モード選択フラグの復号要否を判定して、復号要であれば上記分割モード選択フラグを復号し、上記分割方向フラグおよび上記分割モード選択フラグに基づいて上記対象ブロックを2分木分割または3分木分割するCN情報復号部を備え、上記CN情報復号部は、上記BT分割可能判定の追加の条件を判定して、上記対象ブロックが直上位ブロックに対する3分木分割により得られた3つのブロックのうちの中央ブロックである場合、上記直上位ブロックに対する3分木分割と同じ方向に上記対象ブロックを2分木分割することを禁止し、上記対象ブロックの2分木分割が禁止されている場合、上記分割モード選択フラグを復号せずに上記分割モード選択フラグに3分木分割を示す値を設定する。
(関連出願の相互参照)
本出願は、2016年12月16日に出願された日本国特許出願:特願2016-2016-244902および2016年12月22日に出願された日本国特許出願:特願2016-2016-249778に対して優先権の利益を主張するものであり、それを参照することにより、その内容の全てが本書に含まれる。