(57)【要約】【課題】タイルサイズがCTUサイズの整数倍に限定されない場合に、効率的な時間動きベクトル参照処理を提供する。マルチラインイントラ予測において、効率的な複数ライン参照処理およびMPM導出処理を提供する。【解決手段】  ピクチャ内座標とタイルサイズを用いてマルチツリー分割を行うCT分割部と、参照ブロックのピクチャ内座標と、対象ピクチャのピクチャ内座標から導出した仮想CTU座標を比較して、参照ブロックの参照可能性を判定し、時間動きベクトルを導出する時間動き予測部を備える。ピクチャ内座標とタイルサイズを用いてマルチツリー分割を行うCT分割部と、ピクチャ内座標からタイル内座標に変換してＣＴＵ境界の判定を行うイントラ予測部を備える。【選択図】図16
2020068461.tif 000002
【特許請求の範囲】
【請求項１】
タイル単位サイズの整数倍のタイルサイズを復号するヘッダ情報復号部と、ピクチャ内座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行うCT分割部と、参照ブロックのピクチャ内座標yColBrInPicと、対象ピクチャのピクチャ内座標から導出した仮想CTU座標yVirCtbBを比較して、参照ブロックの参照可能性を判定し、時間動きベクトルを導出する時間動き予測部を備えることを特徴とする動画像復号装置および動画像符号化装置。
【請求項２】
上記の時間動き予測部は、仮想CTU座標yVirCtbBの導出において、仮想CTU座標を、VBSizeの整数倍とするためにVBLog2Sizeによる右シフトと左シフトを行うことを特徴とする請求項１に記載の動画像復号装置および動画像符号化装置。
【請求項３】
タイル単位サイズの整数倍のタイルサイズを復号するヘッダ情報復号部と、タイル内座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行うCT分割部と、タイル内座標を用いてＣＴＵ境界の判定を行うイントラ予測部を備える動画像復号装置および動画像符号化装置。
【請求項４】
タイル単位サイズの整数倍のタイルサイズを復号するヘッダ情報復号部と、ピクチャ内座標とタイル左上座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行うCT分割部と、ピクチャ内座標からタイル内座標に変換してＣＴＵ境界の判定を行うイントラ予測部を備える動画像復号装置および動画像符号化装置。
【請求項５】
上記、動画像復号装置および動画像符号化装置は、タイル内座標を用いてＣＴＵ境界の判定を行って、対象ブロックがＣＴＵ境界に接している場合には、マルチラインイントラ予測の参照ラインインデックスを復号、符号化せずに０と導出することを特徴とする請求項３および４に記載の動画像復号装置および動画像符号化装置。
【請求項６】
上記、動画像復号装置および動画像符号化装置は、タイル内座標を用いてＣＴＵ境界の判定を行って、タイル内座標における隣接ブロックのＹ座標がＣＴＵ境界より上に存在する場合には、隣接ブロックのイントラ予測モードを参照せずに隣接イントラ予測モードを導出し、それ以外の場合に、隣接ブロックのイントラ予測モードを参照して隣接イントラ予測モードを導出することを特徴とする請求項３および４に記載の動画像復号装置および動画像符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、動画像復号装置、および動画像符号化装置に関する。
【背景技術】
【０００２】
動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置が用いられている。
【０００３】
具体的な動画像符号化方式としては、例えば、H.264/AVCやHEVC（High-Efficiency Video Coding）にて提案されている方式などが挙げられる。
【０００４】
このような動画像符号化方式においては、動画像を構成する画像（ピクチャ）は、画像を分割することにより得られるスライス、スライスを分割することにより得られる符号化ツリーユニット（CTU：Coding Tree Unit）、符号化ツリーユニットを分割することで得られる符号化単位（符号化ユニット（Coding Unit：CU）と呼ばれることもある）、及び、符号化単位を分割することより得られる変換ユニット（TU：Transform Unit）からなる階層構造により管理され、CU毎に符号化／復号される。
【０００５】
また、このような動画像符号化方式においては、通常、入力画像を符号化／復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像を入力画像（原画像）から減算して得られる予測誤差（「差分画像」または「残差画像」と呼ぶこともある）が符号化される。予測画像の生成方法としては、画面間予測（インター予測）、および、画面内予測（イントラ予測）が挙げられる。
【０００６】
また、画面を複数の単位に分割し並列処理を行う方法としては、スライス、ＣＴＵライン（ウェーブフロントセグメント）、タイルに分割する方法が知られている。タイルに分割する方法では従来ＣＴＵ単位での分割に限定されていた。
【０００７】
また、近年の動画像符号化及び復号の技術として非特許文献１が挙げられる。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】"Algorithm Description of Joint Exploration Test Model 7", JVET-G1001, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 2017-08-19
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記で説明したように、タイルサイズがCTUの整数倍という制限があり、ロードバランスのために同じサイズに分割することや、360度動画のフェース（face）サイズに合わせたタイルを構成することが難しいという課題がある。
【００１０】
また、タイルサイズが、CTUサイズの整数倍に限定されない場合、時間動きベクトル参照を行うために、参照ピクチャの動きベクトルを参照すると、CTU境界を越えて多くの位置から動きベクトルを参照する可能性があるという、課題がある。
【００１１】
また、タイルサイズが、CTUサイズの整数倍に限定されない場合、マルチラインイントラ予測において、CTU境界を越えて複数ラインを参照する可能性があるという課題がある。
【００１２】
そこで、本発明は、上記の課題に鑑みてなされたものであり、その目的は、CTUの整数倍の制限がないタイル分割と効率的な時間動きベクトル参照、マルチラインイントラ予測を提供することである。
【課題を解決するための手段】
【００１３】
本発明の一態様に係る動画像復号装置は、タイル単位サイズの整数倍のタイルサイズを復号するヘッダ情報復号部と、ピクチャ内座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行うCT分割部と、参照ブロックのピクチャ内座標yColBrInPicと、対象ピクチャのピクチャ内座標から導出した仮想CTU座標yVirCtbBを比較して、参照ブロックの参照可能性を判定し、時間動きベクトルを導出する時間動き予測部を備えることを特徴とする。また、タイル単位サイズの整数倍のタイルサイズを復号するヘッダ情報復号部と、ピクチャ内座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行うCT分割部と、ピクチャ内座標からタイル内座標に変換してＣＴＵ境界の判定を行うイントラ予測部を備えることを特徴とする。
【図面の簡単な説明】
【００１４】
【図１】符号化ストリームのデータの階層構造を示す図である。
【図２】CTUの分割例を示す図である。
【図３】タイルを説明する図である。
【図４】タイル情報等に関するシンタックス表である。
【図５】動画像復号装置の構成を示す概略図である。
【図６】動画像復号装置の概略的動作を説明するフローチャートである。
【図７】CT情報復号部の動作を説明するフローチャートである。
【図８】CTUおよびQT情報のシンタックス表の構成例を示す図である。
【図９】MT(Multi Tree)情報のシンタックス表の構成例を示す図である。
【図１０】MT(Multi Tree)情報のシンタックス表の構成例を示す図である。
【図１１】非CTUサイズでのタイル分割を説明する図である。
【図１２】非CTUサイズでのタイル分割を説明する図である。
【図１３】符号化スライスデータのシンタックス構成である。
【図１４】仮想CTUライン制限を行いながら参照ピクチャの動きベクトルを参照する場合の参照範囲を示す図である。
【図１５】仮想CTUライン制限を行いながら参照ピクチャの動きベクトルを参照する場合のフローチャートである。
【図１６】仮想CTUライン制限を行いながら参照ピクチャの動きベクトルを参照する場合の参照範囲を示す図である。
【図１７】仮想CTUライン制限を行いながら参照ピクチャの動きベクトルを参照する場合のフローチャートである。
【図１８】時間動き導出（時間動きベクトル導出）において、参照ピクチャの参照位置を示す図である。
【図１９】動画像符号化装置の構成を示すブロック図である。
【図２０】本実施形態に係る動画像符号化装置を搭載した送信装置、および、動画像復号装置を搭載した受信装置の構成について示した図である。(a)は動画像符号化装置を搭載した送信装置を示しており、(b)は動画像復号装置を搭載した受信装置を示している。
【図２１】本実施形態に係る動画像符号化装置を搭載した記録装置、および、動画像復号装置を搭載した再生装置の構成について示した図である。(a)は動画像符号化装置を搭載した記録装置を示しており、(b)は動画像復号装置を搭載した再生装置を示している。
【図２２】本実施形態に係る画像伝送システムの構成を示す概略図である。
【図２３】タイル情報等に関するシンタックス表の別の例である。
【図２４】タイル情報等に関するシンタックス表の別の例である。
【図２５】タイル情報等に関するシンタックス表の別の例である。
【図２６】タイル情報等に関するシンタックス表の別の例である。
【図２７】符号化スライスデータ、CTU情報のシンタックス構成例を示す図である。
【図２８】QT情報のシンタックス表の構成例を示す図である。
【図２９】MT情報のシンタックス表の構成例を示す図である。
【図３０】CTU情報のシンタックス構成例を示す図である。
【図３１】符号化タイルデータのシンタックス構成である。
【図３２】CTUおよびQT情報のシンタックス表の構成例を示す図である。
【図３３】MT(Multi Tree)情報のシンタックス表の構成例を示す図である。
【図３４】CTUおよびQT情報のシンタックス表の構成例を示す図である。
【図３５】マルチラインイントラ予測において、タイル内のCTU境界に応じて、イントラ参照ラインを定める動作を説明する図である。
【図３６】マルチラインイントラ予測において、タイル内のCTU境界に応じて、イントラ参照ラインを定める動作を説明するフローチャートである。
【図３７】マルチラインイントラ予測において、タイル内のCTU境界に応じて、イントラ参照ラインを定める動作を説明するフローチャートである。
【図３８】マージ予測パラメータ導出部の構成を示す概略図である。
【図３９】参照ピクチャ内の動きベクトルを時間動きベクトルとして参照する処理の例を示す図である。
【図４０】参照ピクチャと対象ピクチャが同じタイル分割である場合の対象ＣＴＵと動きベクトルを参照範囲の関係を示す図である。
【図４１】マルチラインイントラ予測における、シンタックス構成を示す図である。
【図４２】ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合における、MPM導出処理を示すフローチャートである
【図４３】ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合における、MPM導出処理を示すフローチャートである
【発明を実施するための形態】
【００１５】
（第１の実施形態）
以下、図面を参照しながら本発明の実施形態について説明する。
【００１６】
図22は、本実施形態に係る画像伝送システム１の構成を示す概略図である。
【００１７】
画像伝送システム１は、符号化対象画像を符号化した符号化ストリームを伝送し、伝送された符号化ストリームを復号し画像を表示するシステムである。画像伝送システム１は、動画像符号化装置（画像符号化装置）11、ネットワーク21、動画像復号装置（画像復号装置）31、及び動画像表示装置（画像表示装置）41を含んで構成される。
【００１８】
動画像符号化装置11には画像Tが入力される。
【００１９】
ネットワーク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のそれぞれを復号し、復号した１または複数の復号画像Tdを生成する。
【００２１】
動画像表示装置41は、動画像復号装置31が生成した１または複数の復号画像Tdの全部または一部を表示する。動画像表示装置41は、例えば、液晶ディスプレイ、有機ＥＬ（Electro-luminescence）ディスプレイ等の表示デバイスを備える。ディスプレイの形態としては、据え置き、モバイル、HMD等が挙げられる。また、動画像復号装置31が高い処理能力を有する場合には、画質の高い画像を表示し、より低い処理能力しか有しない場合には、高い処理能力、表示能力を必要としない画像を表示する。
【００２２】
＜演算子＞
本明細書で用いる演算子を以下に記載する。
【００２３】
>>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR、|=はOR代入演算子であり、||は論理和を示す。
【００２４】
x?y:zは、xが真（0以外）の場合にy、xが偽（0）の場合にzをとる３項演算子である。
【００２５】
!は０を１、０以外を０に変換する演算を示す。
【００２６】
Clip3(a,b,c)は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返し、c>bの場合にはbを返し、その他の場合にはcを返す関数である（ただし、a<=b）。
【００２７】
abs(a)はaの絶対値を返す関数である。
【００２８】
Int(a)はaの整数値を返す関数である。
【００２９】
floor(a)はa以下の最大の整数を返す関数である。
【００３０】
ceil(a)はa以上の最大の整数を返す関数である。
【００３１】
a/dはdによるaの除算（小数点以下切り捨て）を表す。
【００３２】
＜符号化ストリームTeの構造＞
本実施形態に係る動画像符号化装置11および動画像復号装置31の詳細な説明に先立って、動画像符号化装置11によって生成され、動画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
【００３３】
図1は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図1の(a)〜(f)は、それぞれ、シーケンスSEQを既定する符号化ビデオシーケンス、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スライスデータを規定する符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニットを示す図である。
【００３４】
（符号化ビデオシーケンス）
符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために動画像復号装置31が参照するデータの集合が規定されている。シーケンスSEQは、図1(a)に示すように、ビデオパラメータセット（Video Parameter Set）、シーケンスパラメータセットSPS
（Sequence Parameter Set）、ピクチャパラメータセットPPS（Picture Parameter Set）、ピクチャPICT、及び、付加拡張情報SEI（Supplemental Enhancement Information）を含んでいる。
【００３５】
ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
【００３６】
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために動画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れかを選択する。
【００３７】
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために動画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値（pic_init_qp_minus26）や重み付き予測の適用を示すフラグ（weighted_pred_flag）が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
【００３８】
（符号化ピクチャ）
符号化ピクチャでは、処理対象のピクチャPICTを復号するために動画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図1(b)に示すように、スライス0〜スライスNS-1を含む（NSはピクチャPICTに含まれるスライスの総数）。
【００３９】
なお、以下、スライス0〜スライスNS-1のそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
【００４０】
（符号化スライス）
符号化スライスでは、処理対象のスライスSを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスは、図1(c)に示すように、スライスヘッダ、および、スライスデータを含んでいる。
【００４１】
スライスヘッダには、対象スライスの復号方法を決定するために動画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報（slice_type）は、スライスヘッダに含まれる符号化パラメータの一例である。
【００４２】
スライスタイプ指定情報により指定可能なスライスタイプとしては、（１）符号化の際にイントラ予測のみを用いるＩスライス、（２）符号化の際に単方向予測、または、イントラ予測を用いるＰスライス、（３）符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるＢスライスなどが挙げられる。なお、インター予測は、単予測、双予測に限定されず、より多くの参照ピクチャを用いて予測画像を生成してもよい。以下、P、Bスライスと呼ぶ場合には、インター予測を用いることができるブロックを含むスライスを指す。
【００４３】
なお、スライスヘッダは、ピクチャパラメータセットPPSへの参照（pic_parameter_set_id）を含んでいても良い。
【００４４】
（符号化スライスデータ）
符号化スライスデータでは、処理対象のスライスデータを復号するために動画像復号装置
31が参照するデータの集合が規定されている。スライスデータは、図1(d)に示すように、CTUを含んでいる。CTUは、スライスを構成する固定サイズ（例えば128x128）のブロックであり、最大符号化単位（LCU:Largest Coding Unit）と呼ぶこともある。
【００４５】
（タイル）
図３(a)はピクチャをN個のタイル（実線の矩形、図はN=9の例）に分割した例を示す図である。タイルはさらに複数のCTU（破線の矩形）に分割される。図３(a)の中央に示すように、タイルの左上座標を(xTile,yTile)、幅をwTile、高さをhTileと記す。またピクチャの幅をwPict、高さをhPictと記す。なお、タイルの分割数やサイズに関する情報をタイル情報と呼び、詳細は後述する。xTile、yTile、wTile、hTile、wPict、hPictの単位は画素である。ピクチャの幅、高さは図４(a)に示すsequence_parameter_set_rbsp()（SPSと称す）で通知される、pic_width_in_luma_samples、pic_height_in_luma_samplesをセットする。
【００４６】
wPict = pic_width_in_luma_samples
hPict = pic_height_in_luma_samples
図３(b)はピクチャをタイルに分割した時の、CTUの符号化、復号順序を示す図である。各タイルに記載されている番号はTileId（ピクチャ内のタイルの識別子）であり、ピクチャ内のタイルに対し左上から右下にラスタスキャン順で番号TileIdを割り当ててもよい。また、CTUは各タイル内を左上から右下へラスタスキャン順に処理され、１つのタイル内での処理が終わると、次のタイル内のCTUが処理される。
【００４７】
図３(c)は時間方向に連続するタイルを示す図である。図３(c)に示されるように、ビデオシーケンスは、時間方向に連続する複数のピクチャから構成されている。タイルシーケンスは、時間方向に連続する１つ以上の時刻のタイルから構成されている。図中wのTile(n,tk)は、時刻tkにおけるTileId=nのタイルを表す。なお、図中のCVS(Coded Video Sequence)は、あるイントラピクチャから復号順で別のイントラピクチャの直前のピクチャまでのピクチャ群である。
【００４８】
図４は、タイル情報等に関するシンタックスの例である。
【００４９】
図４(b)に示すPPS（pic_parameter_set_rbsp()）で、タイルに関するパラメータtile_parameters()を通知する。以下、パラメータを通知するとは、パラメータを符号化データ（ビットストリーム）に含めることを意味し、動画像符号化装置では当該パラメータを符号化し、動画像復号装置では当該パラメータを復号する。tile_parameters()には、図４(c)に示すように、tileが存在するか否かを示すtile_enabled_flagが1の場合、タイル情報tile_info()を通知する。また、tile_enabled_flagが1の場合、タイルが時間的に連続する複数のピクチャにわたって独立に復号できるか否かを示すindependent_tiles_flag(independent_decoding_tile_flag)を通知する。independent_tiles_flagが0の場合、タイルは、参照ピクチャ中の隣接タイルを参照して復号する（独立に復号できない）。independent_tiles_flagが1の場合、参照ピクチャ中の隣接タイルを参照せずに復号する。タイルを用いる場合、independent_tiles_flagの値によらず、対象ピクチャ中の隣接タイルを参照せずに復号するため、複数のタイルを並列に復号することができる。このindependent_tiles_flagフラグは、タイルグループ単位やタイル単位など領域単位のフラグindependent_decoding_picture_region_flagであってもよい。なおindependent_tiles_flagは１の場合に独立（ピクチャ間参照なし）、０の場合に従属（ピクチャ間参照あり）であったが、０と１が逆のフラグでもよい。例えば、タイル時ピクチャ間参照可能フラグtile_inpicture_ref_enabled_flagという名前で０の時に独立、１の時に従属となるフラグでもよい。
図４(c)に示すように、independent_tiles_flagが0の場合に参照ピクチャにかけるタイル境界でのループフィルタのオンオフを示す、loop_filter_across_tiles_enable_flagを伝
送(present)する。independent_tiles_flagが1の場合において、loop_filter_across_tiles_enable_flagを伝送(present)せずに常に０としてもよい。
【００５０】
なお、シーケンスを通してタイルを独立に処理する場合、独立タイルフラグindependent_tiles_flagは図４(a)に示すようにSPSで通知してもよい。
【００５１】
タイル情報tile_info()は、例えば図４(d)に示すように、num_tile_columns_minus1、num_tile_rows_minus1、tile_unit_width_idc、tile_unit_height_idc、uniform_spacing_flag、column_width_in_unit_minus1[i]、row_height_in_unit_minus1[i]である。ここで、num_tile_columns_minus1、num_tile_rows_minus1は各々ピクチャ内の水平、垂直方向のタイル数M、Nから各々1を引いた値である。uniform_spacing_flagはピクチャが可能な限り均等にタイル分割されるか否かを示すフラグである。uniform_spacing_flagの値が1の場合、ピクチャの各タイルの幅、高さは所定のサイズを単位として可能な限り等しくなるよう、ピクチャ内の水平、垂直方向のタイル数と、タイルの最小単位を示す識別子（タイルユニット識別子）（tile_unit_width_idc、tile_unit_height_idc）から動画像符号化装置、動画像復号装置（ヘッダ復号部3020）において、タイルの幅、高さを導出する。
【００５２】
ヘッダ復号部3020は、タイルユニット識別子tile_unit_width_idc、tile_unit_height_idcからタイルの最小単位（タイルの単位サイズ）wUnitTile、hUnitTileを導出する（詳細は後述）。タイルの単位サイズをＣＴＵのサイズの整数倍に限定されないタイルを、以下、フレキシブルタイルと呼ぶ。
【００５３】
wUnitTile = 1<<(log2CbSize+tile_unit_width_idc)
hUnitTile = 1<<(log2CbSize+tile_unit_height_idc)
ヘッダ復号部3020は、ピクチャ内の水平、垂直方向のタイル数M、Nを以下で導出する。MはnumTileColumns、NはnumTileRowsである。
【００５４】
M = num_tile_columns_minus1+1
N = num_tile_rows_minus1+1
numTileColumns = M = num_tile_columns_minus1+1
numTileRows = N = num_tile_columns_minus1+1
ヘッダ復号部3020は、タイルの最小サイズ（最小単位）wUnitTile、hUnitTileの倍数となるように、タイルサイズを以下で導出する。ここで、wPictInUnitTileとhPictInUnitTileは、それぞれ、wPictおよびhPictをwUnitTileおよびhUnitTileを単位として表した値である。
【００５５】
wPictInUnitTile = ceil(wPict/wUnitTile)
hPictInUnitTile = ceil(hPict/hUnitTile)
wTile[m] = ceil(wPictInUnitTile/M)*wUnitTile  (0<=m<M)
hTile[n] = ceil(hPictInUnitTile/N)*hUnitTile  (0<=n<N)
あるいはヘッダ復号部3020は、下式で導出してもよい。
【００５６】
wTile[m] = floor(wPict/M/wUnitTile)*wUnitTile  (0<=m<M)
hTile[n] = floor(hPict/N/hUnitTile)*hUnitTile  (0<=n<N)
あるいはヘッダ復号部3020は、下式で導出してもよい。
【００５７】
for(m=0;m<M;m++)
wTile[m] = ((m+1)*wPictInUnitTile/M-m*wPictInUnitTile/M)*wUnitTile
for(n=0;n<N;n++)
hTile[n] = ((n+1)*hPictInUnitTile/N-n*hPictInUnitTile/N)*hUnitTile
uniform_spacing_flagの値が0の場合、ピクチャの各タイルの幅、高さは個別に設定される。動画像符号化装置では、各タイルの幅column_width_in_unit_minus1[i]（図３のwTileを、wUnitTileを単位として表現した値）、高さrow_height_in_unit_minus1[i]（図３のhTileを、hUnitTileを単位として表現した値）をタイル毎に符号化する。動画像復号装置のヘッダ復号部3020では、符号化された（column_width_in_unit_minus1[],row_width_in_unit_minus1[]）に基づいてタイル毎に、タイルサイズwTile[m]、hTile[n]を下記のように復号する。
【００５８】
wTile[m] = (column_width_in_unit_minus1[m]+1)*wUnitTile  (0<=m<M-1)
hTile[n] = (row_height_in_unit_minus1[m]+1)*hUnitTile    (0<=n<N-1)
wTile[M-1] = ceil((wPict-sum_m(wTile[m]))/wUnitTile)*wUnitTile
hTile[N-1] = ceil((hPict-sum_n(hTile[n]))/hUnitTile)*hUnitTile
ここで、sum_m(wTile[m])は、wTile(0<=m<M-1)の総和、sum_n(hTile[n])はhTile(0<=n<N-1)の総和を表す。
【００５９】
あるいは、画面端にあたるwTile[M-1]およびhTile[N-1]は、ピクチャサイズがタイルの最小単位の整数倍でない場合には、単に下記のようにしてもよい。
【００６０】
wTile[M-1] = wPict-sum_m(wTile[m])
hTile[N-1] = hPict-sum_n(hTile[n])
ただしこの場合は、処理単位がタイルの最小単位あるいは最小ＣＵサイズに合致するように、パディングやクロッピングなどにより画面端が適切に処理されることが望ましい。
【００６１】
なお、位置(m,n)のタイルは識別子TileIdでも表され、TileIdは下記で算出してもよい。
【００６２】
TileId = n*M+m
あるいは、TileIdが既知の場合、TileIdからタイルの位置を示す(m,n)を算出してもよい。
【００６３】
m = TileId%M
n = TileId/M
ヘッダ復号部3020は、タイルの大きさの単位を示すタイルユニット情報を復号する。タイルの幅と高さの最小単位をwUnitTile、hUnitTileとする場合、タイルの幅と高さは、各々wUnitTile、hUnitTileの整数倍に設定される。
【００６４】
例えば、ヘッダ復号部3020は、符号化データからタイルユニット識別子としてtile_unit_width_idcとtile_unit_height_idcを復号する。タイルの大きさの単位は符号化ユニットＣＵの最小サイズの定数倍（１を含む）としてもよい。CTUの幅と高さが等しい正方形であれば、tile_unit_size_idcのみ復号して、tile_unit_height_idc=tile_unit_width_idc=tile_unit_size_idcとし、タイルの大きさの単位を導出してもよい。このとき以下の明細書ではtile_unit_width_idc、tile_unit_height_idcをtile_unit_size_idcと読みかえてもよい（この場合常に、wUnitTile=hUnitTile=UnitTileSizeY）。
【００６５】
（設定方法１）
ヘッダ復号部3020は、タイルユニット識別子が０である場合には、タイルの大きさの単位をＣＴＵ単位として設定する。具体的には、tile_unit_width_idc=0の場合にwUnitTile=ctuWidth、tile_unit_width_idc=0の場合にhUnitTile=ctuHeightに設定する。ここで、ctuWidthはCTUの幅、ctuHeightはCTUの高さである。
【００６６】
さらにヘッダ復号部3020は、以下のように、タイルユニット識別子が０以外である場合には、タイルの大きさの単位を符号化ユニットＣＵの最小サイズの定数倍になるように設定しても良い。
【００６７】
wUnitTile = (tile_unit_width_idc==0) ? ctuWidth : 1<<(log2CbSize+tile_unit_width_idc-1)
hUnitTile = (tile_unit_height_idc==0) ? ctuHeight : 1<<(log2CbSize+tile_unit_height_idc-1)
ここで、log2CbSize=log2(minCU)、minCUは符号化ユニットCUの最小サイズである。
【００６８】
なおCTUサイズctuSize=ctuWidth=ctuHeightは、以下のように、最小CUサイズを定めるシンタックス要素log2_min_luma_coding_block_size_minus3と、CUサイズを最小CUサイズとの差分との対数で示すシンタックス要素log2_diff_max_min_luma_coding_block_sizeを復号して導出しても良い。
【００６９】
log2CbSize = log2_min_luma_coding_block_size_minus3+3
log2CtuSize = log2CbSize+log2_diff_max_min_luma_coding_block_size
minCU = 1 << log2CbSize
ctuSize = 1 << log2CtuSize
なお、タイルユニット識別子!=0の場合には、タイル単位を符号化ユニットCUの最小サイズの定数倍（２の指数乗）に設定しても良い。
【００７０】
wUnitTile = (tile_unit_width_idc==0) ? ctuWidth : 1<<(log2CbSize+ Log2DiffTileUnitSize)
hUnitTile = (tile_unit_height_idc==0) ? ctuHeight : 1<<(log2CbSize+ Log2DiffTileUnitSize)
ここでLog2DiffTileUnitSizeは、タイル単位を定める定数である。例えば1、2、3に設定することで、タイル単位が最小CUサイズの4、8、16倍に設定される。例えば、CUサイズが4の場合には、8、16、32に設定される。さらに最大値をCTUサイズとなるようにクリップしても良い。
【００７１】
（設定方法２）
タイル情報は０から所定の範囲の数のタイルユニット識別子tile_unit_width_idcであり、タイルの大きさの単位を１＜＜（log2(minCU)＋タイルユニット識別子）で設定してもよい。すなわち、ヘッダ復号部3020は、tile_unit_width_idc、tile_unit_height_idc（もしくはtile_unit_size_idc）を復号し、タイル単位を以下のように設定してもよい。
【００７２】
wUnitTile = 1<<(log2CbSize+tile_unit_width_idc)
hUnitTile = 1<<(log2CbSize+tile_unit_height_idc)
CTUの幅と高さが等しい正方形であれば、以上はtile_unit_size_idcを復号し以下のように設定することと同値である。以下、自明であるので、正方形のみの場合の説明は省略する。
【００７３】
wUnitTile = hUnitTile = ctuSize>>tile_unit_size_idc
なお、タイルユニット識別子を明示的に符号化せず、タイル単位を符号化ユニットCUの最小サイズの定数倍（２の指数乗）に設定しても良い。
【００７４】
wUnitTile = 1<<(log2CbSize+Log2DiffTileUnitSize)
hUnitTile = 1<<(log2CbSize+Log2DiffTileUnitSize)
ここでLog2DiffTileUnitSizeは、タイル単位を定める定数である。さらに最大値がCTU
サイズにクリップしても良い。
【００７５】
wUnitTile = min(ctuWidth,1<<(log2CbSize+Log2DiffTileUnitSize))
hUnitTile = min(ctuHeight1<<(log2CbSize+Log2DiffTileUnitSize))
（設定方法３）
タイル情報は、０から所定の範囲の数のタイルユニット識別子であり、タイルの大きさの単位をCTUサイズの２の指数乗分の１となるように、１＜＜（log2(ＣＴＵサイズ)−タイルユニット識別子）で設定することを特徴とする。すなわち、ヘッダ復号部3020は、tile_unit_width_idc、tile_unit_height_idc（もしくはtile_unit_size_idc）を復号し、タイル単位を以下のように設定してもよい。
【００７６】
wUnitTile = 1<<(log2CtuWidthY-tile_unit_width_idc)
hUnitTile = 1<<(log2CtuHeightY-tile_unit_height_idc)
ここで、log2CtuWidthY=log2(ctuWidth)、log2CtuHeightY=log2(ctuHeight)である。
【００７７】
なお、ＣＴＵサイズの幅と高さを同じ値に設定しても良い。
【００７８】
wUnitTile = 1<<(log2CtuSize-tile_unit_width_idc)
hUnitTile = 1<<(log2CtuSize-tile_unit_height_idc)
ここで、log2CtuSize=log2(ctuWidth)=log2(ctuHeight)である。
この場合、差分の対数での表現になるのでtile_unit_width_idcをlog2_diff_luma_tile_unit_sizeと呼ぶのも適当である。
【００７９】
なお、以下のようにタイル単位が8の倍数の最小サイズとなるようにクリップしても良い。
【００８０】
wUnitTile = max(8, ctuWidth>>tile_unit_width_idc)
hUnitTile = max(8, ctuHeight>>tile_unit_height_idc)
これによって、常にタイル幅が8の倍数となるため（設定方法５）に示す効果も奏する。
【００８１】
また、以下のように単位サイズをminCTUサイズとなるようにクリップしても良い。
【００８２】
wUnitTile = max(minCTU, ctuWidth>>tile_unit_width_idc)
hUnitTile = max(minCTU, ctuHeight>>tile_unit_height_idc)
これによって、常にタイル幅がCTUの最小サイズの倍数となるため（設定方法５）に示す効果も奏する。
【００８３】
さらに、tile_unit_width_idcの取り得る範囲を制限しても良い。例えば、ctuWidth>>tile_unit_width_idcの最小値をminCTUとする場合、
ctuWidth>>tile_unit_width_idc >= minCTU
ctuWidth >= minCTU<< tile_unit_width_idc
ctuWidth >= minCTU * (1<<tile_unit_width_idc)
(1<<tile_unit_width_idc) <= ctuWidth/minCTU
tile_unit_width_idc <= log2(ctuWidth)-log2(minCTU)
であるから、tile_unit_width_idcを0以上log2(ctuWidth)-log2(minCTU)以下に制限する。すなわち、動画像復号装置は、0以上log2(ctuWidth)-log2(minCTU)以下に制限された符号化データを復号することにより、minCTUの倍数であるタイル単位を用いることができる。
【００８４】
同様に、0以上log2(ctuWidth)-log2(8)=log2(ctuWidth)-3以下に制限された符号化デー
タを復号することにより8の倍数であるタイル単位を用いることができる。8の倍数でなく16、32の倍数の場合には、上記の3(log2(8))を4、5とすればよい。
【００８５】
（設定方法４）
タイル情報は、０から所定の範囲の数のタイルユニット識別子であり、タイルの大きさの単位をCTUサイズの２の指数乗分の１となるように、ＣＴＵサイズ＞＞タイルユニット識別子で設定することを特徴とする。すなわち、ヘッダ復号部3020は、tile_unit_width_idc、tile_unit_height_idc（もしくはtile_unit_size_idc）を復号し、タイル単位を以下のように設定してもよい。
【００８６】
wUnitTile = ctuWidth>>tile_unit_width_idc
hUnitTile = ctuHeight>>tile_unit_height_idc
設定方法３と設定方法４は同値であるから、tile_unit_width_idc、tile_unit_height_idc（もしくはtile_unit_size_idc）の制限は（設定方法３）で説明した方法が利用できる。
【００８７】
（設定方法５）
ヘッダ復号部3020は、タイルユニット識別子（tile_unit_width_idc、tile_unit_height_idc）を復号せず、所定の値TileUnitをwUnitTile、hUnitTileに設定する。所定の値TileUnitは8の倍数、特に8、16、32の何れかであることが好ましい。タイル情報tile_info()は図4(d)に替えて図23(d)のように通知され、ヘッダ復号部3020はこのタイル情報を復号する。
【００８８】
wUnitTile = TileUnit
hUnitTile = TileUnit
ここで、TileUnitは8あるいは16、32のように8の倍数とする。タイル単位を8の倍数とすれば、画素のbitDepthが10bitなど8の倍数でない場合にも、タイル幅の画素データは8の倍数とすることができる。これによりメモリ配置する場合にもタイル境界が常にバイト(8bit)境界となり、タイルをメモリに配置する場合において、タイル間にメモリのギャップが不要である。ギャップがなければ、ギャップ分のメモリは不要で、連続的に転送可能であることから、メモリサイズを低減できるとともに高速転送が可能という効果を奏する。さらに16の倍数であれば、タイル幅のデータを常に128bitの倍数とすることができ（bitDepth=8bitの場合）、多くのメモリ（例えばDDR）のバーストアクセスで高速アクセスが可能となる。
【００８９】
さらに、16、32の場合には後述の最小CTUサイズと一致するという効果を奏する。
【００９０】
（設定方法６）
ヘッダ復号部3020は、タイルユニット識別子（tile_unit_width_idc、tile_unit_height_idc）を復号せず、所定の値TileUnitをwUnitTile、hUnitTileに設定する。所定の値TileUnitはCTUの最小サイズ（最小CTUサイズ）であることが好ましい。この場合、タイル情報tile_info()は図4(d)に替えて図23(d)のように通知され、ヘッダ復号部3020はこのタイル情報を復号する。
【００９１】
wUnitTile = TileUnit
hUnitTile = TileUnit
TileUnit = 1<<(log2_min_luma_coding_tree_block_size_minus4+4)
ここで、log2_min_luma_coding_block_size_minus4は、CTUの最小サイズの２のべき乗表現から4を引いた値である。例えば、0、1、2、3であれば各々最小CTUサイズは、16、32、64、128である。なお最小CTUサイズを定めるlog2_min_luma_coding_block_size_minus4は
シンタックス要素として符号化データで符号化しても良いし定数でもよい。例えば定数の場合には、通例最小CTUサイズは、16、32であるため（設定方法５）と一致する。
【００９２】
最小CTUサイズは、動画像復号装置の機能や能力を規定するプロファイルやレベルで設定しても良い。プロファイルやレベルは、機器間のネゴーシエ―ションに用いられるため比較的上位のパラメータセットやヘッダ、例えば、SPSのシンタックス要素profile_idc、level_idcで伝送される。
【００９３】
タイル単位を最小CTUサイズの倍数とする場合、タイル幅は常に最小CTUサイズの倍数となる。通例、ピクチャをメモリに格納する場合にはCTUサイズの取り得る範囲が限定的である（例えば、16、32、64）であることに基づいてメモリ配置を最適化する。タイル幅がＣＴＵサイズの整数倍（２の指数乗）であれば、ピクチャと同様の方法でタイルの場合もメモリ配置ができるので、画像を省メモリかつ高速アクセス可能となる効果を奏する。
【００９４】
（設定方法７）
タイル情報は、０から所定の範囲の数のタイルユニット識別子であり、タイルの大きさの単位を最小CTUサイズの整数倍（２の指数乗）となるように、1<<(log2(最小CTUサイズ)+タイルユニット識別子）で設定する。（設定方法７）では、タイルユニット識別子は最小CTUサイズの倍数を対数表現したものである。すなわち、ヘッダ復号部3020は、tile_unit_width_idcを復号し、タイル単位を以下のように設定してもよい。
【００９５】
wUnitTile = 1<<(log2CtuUnitSize+tile_unit_width_idc)
hUnitTile = 1<<(log2CtuUnitSize+tile_unit_height_idc)
ここで、CTUの最小サイズminCTU=ctuUnitSize=1<<(log2_min_luma_coding_tree_block_size_minus4+4)、log2CtuUnitSize=log2_min_luma_coding_tree_block_size_minus4+4であってもよい。
【００９６】
（設定方法８）
タイル情報は、０から所定の範囲の数のタイルユニット識別子であり、タイルの大きさの単位を最大CTUサイズ>>タイルユニット識別子で設定する。（設定方法８）では、タイルユニット識別子は最大CTUサイズの倍数（２のべき乗分の１倍）を対数表現したものである。すなわち、ヘッダ復号部3020は、tile_unit_width_idcを復号し、タイル単位を以下のように設定してもよい。
【００９７】
wUnitTile = ctuUnitSize>>tile_unit_width_idc
hUnitTile = ctuUnitSize>>tile_unit_height_idc
（設定方法９）
（設定方法９）では、図24(a)に示すように、tile_parameters()およびタイル情報tile_info()をPPSではなく、SPSで通知する。図24(c)に示すように、タイルの最小単位はlog2_min_unit_tile_size_minus3で通知される。ヘッダ復号部3020はこのタイル情報を復号し、タイルの最小単位（wUnitTile、hUnitTile）を導出する。
【００９８】
wUnitTile = 1<<(log2_min_unit_tile_size_minus3+3)
hUnitTile = 1<<(log2_min_unit_tile_size_minus3+3)
ここでlog2_min_unit_tile_size_minus3は、タイルの最小単位の最小値の２のべき乗表現から3を引いた値であり、0以上の整数である。従ってタイルの最小単位は8以上である。
【００９９】
また別の例として、図25(a)に示すように、タイル情報としてlog2_diff_curr_min_unit_tile_sizeのみを通知してもよい。log2_diff_curr_min_unit_tile_sizeは、当該SPSでのタイルサイズの最小単位と、CTUの最小サイズとの差分である。ヘッダ復号部3020はこの
タイル情報を復号し、タイルの最小単位（wUnitTile、hUnitTile）を導出する。
【０１００】
wUnitTile = 1<<( log2CtuSize + log2_diff_curr_min_unit_tile_size )
hUnitTile = 1<<( log2CtuSize + log2_diff_curr_min_unit_tile_size )
（設定方法１０）
（設定方法１０）では、（設定方法９）に対し、当該SPSでのタイルサイズの最小単位は当該SPSでのCTUサイズを超えない制約を設ける。従って、log2_diff_curr_min_unit_tile_sizeは下式を満たす値でなければならない。
【０１０１】
0<=log2_diff_curr_min_unit_tile_size<=log2_diff_max_min_luma_coding_block_sizeここで、log2_diff_max_min_luma_coding_block_sizeは、CTUの最大および最小サイズの２のべき乗表現の差分である。
【０１０２】
（設定方法１１）
（設定方法１１）では、図26に示すように、tile_parameters()およびタイル情報tile_info()をPPSで通知する。図26(a)および(d)に示すように、タイルの最小単位はSPSで通知されるCTUの最小サイズおよびPPSで通知されるタイル情報（log2_diff_curr_min_unit_tile_size）を用いて導出される。log2_diff_curr_min_unit_tile_sizeは、タイルサイズの最小単位とCTUの最小サイズとの差分である。ヘッダ復号部3020はこのタイル情報を復号し、wUnitTile、hUnitTileを導出する。
【０１０３】
wUnitTile = 1<<(log2CtuSize+log2_diff_curr_min_unit_tile_size)
hUnitTile = 1<<(log2CtuSize+log2_diff_curr_min_unit_tile_size)
（設定方法１２）
（設定方法１２）では、independent_tiles_flagを参照してTileUnitをwUnitTile、hUnitTileを導出する。independent_tiles_flag=1、すなわち各タイルを独立（他のタイルを参照せず）に処理できる場合は、そうでない場合よりもタイルのタイル単位（最小単位）を小さく設定する。例えば、（設定方法５）において、independent_tiles_flag=1の場合は所定の値TileUnitを8に設定し、independent_tiles_flag=0の場合は所定の値TileUnitを16に設定する。
【０１０４】
また別の例として、（設定方法６）において、independent_tiles_flag=1の場合は所定の値TileUnitをCTUの最小サイズ（最小CTUサイズ）以下の値に設定し、independent_tiles_flag=0の場合は所定の値TileUnitをCTUの最小サイズ（最小CTUサイズ）に設定する。
【０１０５】
また別の例として、（設定方法６）において、independent_tiles_flag=1の場合は所定の値TileUnitをCTUサイズ以下の値に設定し、independent_tiles_flag=0の場合は所定の値TileUnitをCTUサイズに設定する。例えば、independent_tiles_flag=1の場合は所定の値TileUnitを8、16、32の何れか、0の場合にはCTUサイズを用いる。
【０１０６】
あるいは、別の例として、（設定方法６）において、independent_tiles_flag=1の場合は所定の値TileUnitをCTUの最小サイズ（最小CTUサイズ）に設定し、independent_tiles_flag=0の場合は所定の値TileUnitをCTUサイズに設定する。
【０１０７】
independent_tiles_flagが１、すなわち、互いに参照することなく、独立に復号されるタイルでは、タイル同士を独立にメモリ配置できる（すなわち、タイル間にメモリ上のギャップが発生しても問題ない）ため、小さな値であってもメモリ配置に問題が生じない。これにより独立復号可能な領域の場合には、フレキシブルにタイルサイズを決定できるという効果を奏する。
【０１０８】
（設定方法１３）
（設定方法１３）では、所定の値TileUnitを他の処理の単位に合わせて設定する。例えば予測の単位（サブCU）を所定の値TileUnitとして設定する。あるいはTMVP用に動きベクトルを格納する単位を所定の値TileUnitとして設定する。例えば、TMVP用の動きベクトル格納単位が8x8の場合、TileUnit=8に設定する。あるいは量子化パラメータを更新する単位を所定の値TileUnitとして設定する。例えば、差分量子化パラメータを通知する単位が16x16の場合、TileUnit=16に設定する。
【０１０９】
（設定方法１４）
（設定方法１４）では、所定の値TileUnitを、タイルの水平方向については最小CTUサイズの整数倍ctuSize、垂直方向については8もしくは16に設定する。ヘッダ復号部3020はこのタイル情報を復号する。例えば下式でタイルの最小単位を設定する。
【０１１０】
wUnitTile = ctuSize
hUnitTile = 8
（タイル情報設定部）
タイル情報設定部は、タイルの最小単位wUnitTile、hUnitTileに基づいて、タイルの左上座標(xTile, yTile)を設定する。さらに、タイル情報設定部は、タイルのCTU単位の幅tileWidthInCtus(=TileWidthInCtbsY)と高さtileHeightInCtus(=TileHeightInCtbsY)を設定する。
【０１１１】
（ステップ１）
タイルの最小単位wUnitTile、hUnitTileと画面幅wPict、hPictから、タイル単位（wUnitTile, hUnitTile）での画面幅wPictInUnitTile, hPictInUnitTileを導出する。
【０１１２】
wPictInUnitTile = divRoundUp(wPict,wUnitTile)
hPictInUnitTile = divRoundUp(hPict,hUnitTile)
ここでdivRoundUp(x,y) = (x+y-1)/y
つまり、xをyで除算した値以上の最小の整数を返す。すなわち、ceil(x/y)としてもよい。
【０１１３】
（ステップ２）
タイル情報設定部は、タイル単位の位置(col, row)で示されるタイルのピクチャ内の左上座標(xTile, yTile)を導出する。以下、ピクチャ内の座標とは、ピクチャ左上を(0, 0)とするピクチャ座標系の座標であり、タイル内の座標とは、各タイルの左上を(0, 0)とするタイル座標系の座標を意味する。タイルのコラム位置colを0からタイルのコラム数numTileColumns-1までループし、最小単位wUnitTileを用いて、各colの各タイルのX座標tx[col]と幅tw[col]を導出する。同様に、タイルのrow位置rowを0からタイルのrow数numTileRows-1までループし、最小単位hUnitTileを用いて、各rowの各タイルのY座標ty[row]と高さth[row]を導出する。
【０１１４】
タイル情報設定部は、uniform_spacing_flagが１の場合には、画面をnumTileColumns x
numTileRows (= M x N)にタイル分割し、タイルサイズtw[col]、th[row]とタイルのX座標tx[col]、Y座標ty[row]を導出する。具体的には、以下の擬似コードのように、ピクチャの幅wPict、タイルのコラム数numTileColumnsを用いて、tx[col]、tw[col]を導出し、ピクチャの幅hPict、タイルのコラム数numTileRowsを用いて、ty[row]、th[row]を導出する。tyおよびtwは、前出のhTileおよびwTileとして先に求めておいた値を用いてもよい。なお、wPict-tx[col]とtw[col]についてmin()を適用しているのは、タイルが画面端を超える大きさにならないようにするためである。
【０１１５】
for(col=0; col < numTileColumns; col++)
{
tx[col] = wUnitTile*(col*wPictInUnitTile/numTileColumns)
tw[col] = wUnitTile*((col+1)*wPictInUnitTile/numTileColumns)-tx[col]
tw[col] = min(wPict-tx[col],tw[col]) 
}
for(row=0; row < numTileRows; row++)
{
ty[row] = hUnitTile*(row*hPictInUnitTile/numTileRows)
th[row] = hUnitTile*((row+1)*hPictInUnitTile/numTileRows)-ty[row]
th[row] = min(hPict-ty[row],th[row])
}
タイル情報設定部は、uniform_spacing_flagが０の場合には、タイルサイズwTile(col), hTile(row)を用いて画面を分割しタイルのX座標tx[col]、Y座標ty[row]を導出する。
具体的には、以下の擬似コードのように、ピクチャの幅wPictとタイルのコラム幅wTile[col]を用いて、tx[col]を導出し、ピクチャの高さhPict、タイルのロウ高さhTile[row]を用いて、ty[row]を導出する。
【０１１６】
for(col=0;col<numTileColumns-1;col++)
{
tw[col] = wTile[col] = (column_width_in_unit_minus1[col]+1)*wUnitTile
tx[col+1] = tx[col]+tw[col]
}
tw[numTileColumns-1] = wPict-tx[numTileColumns-1]
for(row=0;row<numTileRows-1;row++)
{
th[row] = hTile[row] = (column_height_in_unit_minus1[row]+1)*hUnitTile
ty[row+1] = ty[row]+th[row]
}
th[numTileRows-1] = hPict-ty[numTileRows-1]
タイル情報設定部は、導出されたタイルのX座標tx[col]、Y座標ty[row]とタイルサイズtw[col]、th[row]を、タイルIDで示されるタイルのピクチャ内左上座標xTile[TileId]、yTile[TileId]、タイルサイズwTile[TileId]、hTile[TileId]に格納する。
【０１１７】
for(row=0;row<numTileRows;row++)
{
for(col=0;col<numTileColumns;col++)
{
TileId = row*numTileColumns+col
xTile[TileId] = tx[col]
yTile[TileId] = ty[row]
wTile[TileId] = tw[col]
hTile[TileId] = th[row]
tileWidthInCtus[TileId] = divRoundUp(tw[col],ctuWidth)
tileHeightInCtus[TileId] = divRoundUp(th[row],ctuHeight)
}
}
for(PicWidthInCtbsY=0,i=0;i<=num_tile_columns_minus1;i++)
PicWidthInCtbsY += tileWidthInCtus[i]
for(PicHeightInCtbsY=0,j=0;j<=num_tile_rows_minus1;j++)
PicHeightInCtbsY += tileHeightInCtus[j)]
なお、以下の表現でも一時変数は異なるが同じ動作であるのでタイル情報設定部は、以下の動作を行ってもよい。
【０１１８】
if (uniform_spacing_flag) {
for (i=0; i<= num_tile_columns_minus1;i++)
colWidth[i] = ((i+1)*wPictInUnitTile)/(num_tile_columns_minus1+1)-(i*hPictInUnitTile)/(num_tile_columns_minus1+1))
for (j=0; j<= num_tile_rows_minus1;j++)
rowHeight[j] = ((j+1)*hPictInUnitTile)/(num_tile_rows_minus1+1)-(j*hPictInUnitTile)/(num_tile_rows_minus1+1))
else {
colWidth[num_tile_columns_minus1] = wPictInUnitTile
for (i=0; i<= num_tile_columns_minus1;i++) {
colWidth[i] = column_width_minus1[i]+1
colWidth[num_tile_columns_minus1]-=colWidth[i]
}
rowHeight [num_tile_rows_minus1] = hPictInUnitTile
for (j=0; j<= num_tile_rows_minus1;j++) {
rowHeight[j] = row_height_minus1[j]+1
rowHeight[num_tile_rows_minus1]-=rowHeight[j]
}
}
}
for (colX[0]=0,i=0; i <= num_tile_columns_minus1; i++)
colX[i+1] = colX[i]+colWidth[i]*wUnitTile
for (colY[0]=0,j=0; j <= num_tile_rows_minus1; j++)
colY[j+1] = colY[j]+colRow[j]*hUnitTile
for (colBd[0]=0,i=0; i <= num_tile_columns_minus1; i++)
colBd[i+1] = colBd[i]+Ceil(colWidth[i]*wUnitTile÷ctuWidth)
for (rowBd[0]=0,j=0; j <= num_tile_rows_minus1;j++)
rowBd[j+1] = rowBd[j]+Ceil(rowHeight[j]*hUnitTile÷ctuHeight)
for(PicWidthInCtbsY=0,i=0;i<=num_tile_columns_minus1; i++)
PicWidthInCtbsY += Ceil(colWidth[i]*TileUnitSizeY÷ctuSize)
for(PicHeightInCtbsY=0,j=0;j<=num_tile_rows_minus1; j++)
PicHeightInCtbsY +=  Ceil(rowHeight[j]*TileUnitSizeY÷ctuSize)
なお、画面全体において以下のように導出しても良い。
【０１１９】
for(i = 0; i < NumTilesInPic; i++ ) {
col = i % ( num_tile_columns_minus1 + 1 )
row = i / ( num_tile_columns_minus1 + 1 )
TileWidth [ i ] = colWidth[ col ] * TileUnitSizeY
TileHeight [ i ] = rowHeight[ row ] * TileUnitSizeY
TileWidthInCtbsY[ i ] = Ceil( wTile [ i ] ÷ ctuSize )
TileHeightInCtbsY[ i ] = Ceil( hTile [ i ] ÷ ctuSize )
TileX[ i ] = TileColX[ col ]
TileY[ i ] = TileRowY[ row ]
TileXInCtbsY[ i ] = colBd[ col ]
TileYInCtbsY[ i ] = rowBd[ row ]
}
ここでTileUnitSizeY=wUnitTile=hUnitTile
上記により、スライスデータ（slice_segment_data()）では、図４(b)で示すPPSで通知したタイル情報を用いて、ピクチャ上の(xTile,yTile)の位置から始まるタイルの情報をCTU単位で通知する。具体的には、ピクチャ上の(xTile,yTile)から始まる各タイルの左上座標(0,0)として、タイルを、CTU（幅ctuWidth、高さctuHeight）に分割し、各CTUの符号化データcoding_quadtree()を通知してもよい。
【０１２０】
ヘッダ復号部3020は、外部から入力され、NAL（network abstraction layer）ユニット単位で符号化された符号化ストリームTeからヘッダ情報を復号する。また、ヘッダ復号部3020は、外部から入力された、ディスプレイ等に表示すべき画像領域を示す制御情報から、表示に必要なタイル（TileId）を導出する。また、ヘッダ復号部3020は、符号化ストリームTeから表示に必要な符号化タイルを抽出する。符号化タイルは、符号化データ中のシンタックスに従って、CT情報復号部3021によってＣＴＵに分割され処理される。タイル情報は、具体的には、num_tile_columns_minus1、num_tile_rows_minus1、uniform_spacing_flag、column_width_in_unit_minus1[i]、row_height_in_unit_minus1[i]等のシンタックスから算出した、タイルの水平方向の個数M、垂直方向の個数N、タイルの幅wTile[m]と高さhTile[n]等である。
【０１２１】
図11はCTUサイズの整数倍以外でタイルを分割する例である。図11(a)は、本実施形態の技術であって、1920x1080のHD画像を4x3のタイルに分割する図である。本実施形態では4x3のタイルに分割する時に、全タイルを等サイズに分割できる(480x360に分割される)ため、複数のプロセッサやハードウェアに等しくロードバランスできる効果を有する。タイルサイズはピクチャ境界にかかわらずCTUの整数倍以外のサイズをとることが可能である。図11(b)は各タイルのCTU分割を表す図である。CTUに分割する際、タイルサイズがCTUサイズの整数倍でない場合は、タイルの外側にクロップオフセット領域を設ける。特にTILE Bに示すように、CTUは各タイルの左上を基準として分割される。したがって、CTUの左上座標は、CTUサイズの整数倍に限定されない。
【０１２２】
図12は、さらに各タイルをCTU分割する場合を示す図である。図ではピクチャを2x2のタイルに分割するが、各タイルはさらにCTUに分割される。本実施形態では図に示す通り、各タイルをCTUに分割するにあたって、タイルの左上からCTUを開始するように分割を行う。したがってタイルは右側及び下側において、CTUサイズの整数倍以外の位置で終端することがあるが、タイルの左側および上側においてはCTU境界とタイル境界は一致する。
【０１２３】
（符号化ツリーユニット）
図1(e)には、処理対象のCTUを復号するために動画像復号装置31が参照するデータの集合が規定されている。CTUは、再帰的な４分木分割（QT（Quad Tree）分割）、２分木分割（BT（Binary Tree）分割）あるいは３分木分割（TT（Ternary Tree）分割）により符号化処理の基本的な単位である符号化ユニットCUに分割される。BT分割とTT分割を合わせてマルチツリー分割（MT（Multi Tree）分割）と呼ぶ。再帰的な４分木分割により得られる木構造のノードのことを符号化ノード（Coding Node）と称する。４分木、２分木、及び３分木の中間ノードは、符号化ノードであり、CTU自身も最上位の符号化ノードとして規定される。QT分割、BT分割、TT分割を合わせてCT分割と呼ぶ。
【０１２４】
CTは、CT情報として、QT分割を行うか否かを示すQT分割フラグ（cu_split_flag）、MT分割の分割方法を示すMT分割モード（split_mt_mode）、MT分割の分割方向を示すMT分割方向（split_mt_dir）、MT分割の分割タイプを示すMT分割タイプ（split_mt_type）を含む。cu_split_flag、split_mt_flag、split_mt_dir、split_mt_type は符号化ノード毎に伝送される。
【０１２５】
cu_split_flagが１の場合、符号化ノードは４つの符号化ノードに分割される（図2(b)）。cu_split_flagが０の時、split_mt_flagが０の場合に符号化ノードは分割されず１つのCUをノードとして持つ（図2(a)）。CUは符号化ノードの末端ノードであり、これ以上分割されない。CUは、符号化処理の基本的な単位となる。
【０１２６】
split_mt_flagが１の場合に符号化ノードは以下のようにMT分割される。split_mt_typeが０の時、split_mt_dirが１の場合に符号化ノードは２つの符号化ノードに水平分割され（図2(d)）、split_mt_dirが０の場合に符号化ノードは２つの符号化ノードに垂直分割される（図2(c)）。また、split_mt_typeが１の時、split_mt_dirが１の場合に符号化ノードは３つの符号化ノードに水平分割され（図2(f)）、split_mt_dirが０の場合に符号化ノードは３つの符号化ノードに垂直分割される（図2(e)）。
【０１２７】
また、CTUのサイズが64x64画素の場合には、CUのサイズは、64x64画素、64x32画素、32x64画素、32x32画素、64x16画素、16x64画素、32x16画素、16x32画素、16x16画素、64x8画素、8x64画素、32x8画素、8x32画素、16x8画素、8x16画素、8x8画素、64x4画素、4x64画素、32x4画素、4x32画素、16x4画素、4x16画素、8x4画素、4x8画素、及び、4x4画素の何れかをとり得る。
【０１２８】
（符号化ユニット）
図1(f)に示すように、処理対象の符号化ユニットを復号するために動画像復号装置31が参照するデータの集合が規定されている。具体的には、CUは、CUヘッダCUH、予測パラメータ、変換パラメータ、量子化変換係数等から構成される。CUヘッダでは予測モード等が規定される。
【０１２９】
予測処理は、CU単位で行われる場合と、CUをさらに分割したサブCU単位で行われる場合がある。CUとサブCUのサイズが等しい場合には、CU中のサブCUは１つである。CUがサブCUのサイズよりも大きい場合、CUは、サブCUに分割される。たとえばCUが8x8、サブCUが4x4の場合、CUは水平２分割、垂直２分割からなる、４つのサブCUに分割される。
【０１３０】
予測の種類（予測モード）は、イントラ予測と、インター予測の２つがある。イントラ予測は、同一ピクチャ内の予測であり、インター予測は、互いに異なるピクチャ間（例えば、表示時刻間、レイヤ画像間）で行われる予測処理を指す。
【０１３１】
変換・量子化処理はCU単位で行われるが、量子化変換係数は4x4等のサブブロック単位でエントロピー符号化してもよい。
【０１３２】
（予測パラメータ）
予測画像は、ブロックに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測とインター予測の予測パラメータがある。
【０１３３】
（動画像復号装置の構成）
本実施形態に係る動画像復号装置31（図5）の構成について説明する。
【０１３４】
動画像復号装置31は、パラメータ復号部（予測画像復号装置）302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部（予測画像生成装置）308、逆量子化・逆変換部311、及び加算部312を含んで構成される。なお、後述の動画像符号化装置11に合わせ、動画像復号装置31にループフィルタ305が含まれない構成もある。パラメータ復号部302は、さらに、エントロピー復号部301、ヘッダ復号部3020、CT情報復号部3021、及びCU復号部3022（予測モード復号部）を備えており、CU復号部3022はさらにTU復号部3024を備えている。
【０１３５】
（復号モジュール）
以下、各モジュールの概略動作を説明する。パラメータ復号部302はヘッダ情報、分割情報、予測情報、量子化変換係数等のパラメータの復号処理を行う。
【０１３６】
エントロピー復号部301は、バイナリデータからシンタックス要素を復号する。エントロピー復号部301は、より具体的には、供給元から供給されるシンタックス要素に基づいて、CABAC等のエントロピー符号化方式による符号化データから、シンタックス要素を復号して供給元に返す。以下に示す例では、シンタックス要素の供給元は、CT情報復号部3021、CU復号部3022である。
【０１３７】
（基本フロー）
図6は、動画像復号装置31の概略的動作を説明するフローチャートである。
【０１３８】
（S1100：パラメータセット情報復号）ヘッダ復号部3020は、符号化データからVPS、SPS、PPSなどのパラメータセット情報を復号する。
【０１３９】
（S1200：スライス情報復号）ヘッダ復号部3020は、符号化データからスライスヘッダ（スライス情報）を復号する。
【０１４０】
以下、動画像復号装置31は、対象ピクチャに含まれる各CTUについて、S1300からS5000の処理を繰り返すことにより各CTUの復号画像を導出する。
【０１４１】
（S1300：CTU情報復号）CT情報復号部3021は、符号化データからCTUを復号する。
【０１４２】
（S1400：CT情報復号）CT情報復号部3021は、符号化データからCTを復号する。
【０１４３】
（S1500：CU復号）CU復号部3022はS1510、S1520を実施して、符号化データからCUを復号する。
【０１４４】
（S1510：CU情報復号）CU復号部3022は、符号化データからCU情報、予測情報、TU分割フラグsplit_transform_flag、CU残差フラグcbf_cb、cbf_cr、cbf_luma等を復号する。
【０１４５】
（S1520：TU情報復号）TU復号部3024は、TUに予測誤差が含まれている場合に、符号化データからQP更新情報（量子化補正値）と量子化予測誤差（residual_coding）を復号する。なお、QP更新情報は、量子化パラメータQPの予測値である量子化パラメータ予測値qPpredからの差分値である。
【０１４６】
（S2000：予測画像生成）予測画像生成部308は、対象CUに含まれる各ブロックについて、予測情報に基づいて予測画像を生成する。
【０１４７】
（S3000：逆量子化・逆変換）逆量子化・逆変換部311は、対象CUに含まれる各TUについて、逆量子化・逆変換処理を実行する。
【０１４８】
（S4000：復号画像生成）加算器312は、予測画像生成部308より供給される予測画像と、逆量子化・逆変換部311より供給される予測誤差とを加算することによって、対象CUの復号画像を生成する。
【０１４９】
（S5000：ループフィルタ）ループフィルタ305は、復号画像にデブロッキングフィルタ、SAO、ALFなどのループフィルタをかけ、復号画像を生成する。
【０１５０】
（タイルの場合のCTUの復号）
図13は、符号化スライスデータを示す図である。パラメータ復号部302のCT情報復号部3021は、スライス（タイル）を構成するＣＴＵを順に処理する。さらに、CT情報復号部3021は、図示しない対象ＣＴＵ座標導出部を用いて、対象ＣＴＵのCTUラスタスキャンアドレスCtbAddrInRsから、CTUアドレステーブルCtbAddrToCtbX[]、CtbAddrToCtbY[]を参照して対象ＣＴＵの左上座標(xCtb, yCtb)を導出する。
【０１５１】
xCtb = CtbAddrToCtbX[CtbAddrInRs]
yCtb = CtbAddrToCtbY[CtbAddrInRs]
CT情報復号部3021は対象CTUをルートとする符号化ツリーcoding_quadtree(xCtb,yCtb,log2CbSize,cqtDepth)を符号化データから再帰処理により復号する。
【０１５２】
ここでCtbAddrToCtbX、CtbAddrToCtbYは、CTUアドレステーブル導出部で導出されるテーブルである。
パラメータ復号部302は、スライスセグメントの終端か否かを示すフラグend_of_slice_segment_flagを復号し、次のCTUの処理の準備のためにCTUアドレスCtbAddrInTsを１だけインクリメントし（CtbAddrInTs++）、後続CTUのアドレスを導出する。さらに後続CTUに対応するCTUラスタスキャンアドレスを導出する（CtbAddrInRs = CtbAddrTsToRs[CtbAddrInTs]）。ここでCtbAddrInTsは対象CTUのタイルスキャンアドレスである。
【０１５３】
パラメータ復号部302は、スライスセグメントの終端ではなく（!end_of_slice_segment_flag）、タイルが有効であり（tiles_enabled_flag）、後続CTUのタイルＩＤ（TileId[CtbAddrInTs]もしくはTildIdTbl[CtbAddrInTs]）と対象CTUのCTUのタイルID（[CtbAddrInTs-1]）が異なる場合、end_of_subset_one_bitを復号し、さらにバイトアライメント用のビット（byte_alignment()）を復号する。
【０１５４】
さらに、パラメータ復号部302は、タイルに加え、CTUライン単位に並列処理を行うウェーブフロントに対応し、ウェーブフロントフラグentropy_coding_sync_enabled_flagが１であり、後続CTUがCTUライン先頭の場合（CtbAddrInRs%PicWidthInCtbsY==0）、end_of_subset_one_bitを復号し、さらにバイトアライメント用のビット（byte_alignment()）を復号してもよい。
【０１５５】
なお、end_of_subset_one_bitとbyte_alignment()を復号する条件は、図27(a)に示す条件であってもよい。つまり、パラメータ復号部302は、スライスセグメントの終端ではなく（!end_of_slice_segment_flag）、タイルが有効である（tiles_enabled_flag）場合、end_of_subset_one_bitとbyte_alignment()を復号する。
【０１５６】
ここで、本実施形態では、CTUサイズの整数倍に限定されないサイズのタイルの場合のPicWidthInCtbsYの導出方法に特徴がある。PicWidthInCtbsYはピクチャの幅にＣＴＵが何個含まれるかを意味するが、本実施形態のようにタイルの有効領域の大きさがＣＴＵサイズの整数倍に限られない場合は、有効領域がＣＴＵサイズに満たないサイズのＣＴＵが複数個存在しうるため、PicWidthInCtbsYの値はceil(wPict/ctuWidth)に等しいとは限らない。上述のように、本実施形態のパラメータ復号部302は、PicWidthInCtbsYを、以下の方法で導出する。
【０１５７】
for(PicWidthInCtbsY=0,i=0;i<=num_tile_columns_minus1;i++)
PicWidthInCtbsY += tileWidthInCtus[i]
PicHeightInCtbsYについても同様であり、以下の方法で導出する。
【０１５８】
for(PicHeightInCtbsY=0,j=0;j<=num_tile_rows_minus1;j++)
PicHeightInCtbsY += tileHeightInCtus[j]
タイルがCTUサイズの整数倍に限定される場合には、以下の方法で導出しても良い。
【０１５９】
PicWidthInCtbsY = Ceil(wPict/ctuWidth)
PicHeightInCtbsY = Ceil(hPict/ctuHeight)
ここでの除算(/)は小数精度とする。
【０１６０】
（CTUアドレステーブル導出部）
CTUアドレステーブル導出部は、以下のステップにより、CTUラスタスキャンアドレス(CtbAddrInRs)からCTUの座標(xCtb, yCtb)を導出するCTUアドレステーブルCtbAddrToCtbX[]、CtbAddrToCtbY[]を導出する。
【０１６１】
（ステップ１）
対象CTUのCTUラスタスキャンアドレスCtbAddrInRsからタイルID(TileId)を導出する。
【０１６２】
TileId = CtbAddrRsToTileID[CtbAddrInRs]
ここでCtbAddrRsToTileIDは、タイルＩＤテーブル導出部で導出されるテーブルである。
【０１６３】
（ステップ２）
CTUアドレステーブル導出部は、対象CTUを含むタイルの先頭CTUラスタスキャンアドレスfirstCtbAddrInRs[TileId]を導出し、ピクチャの幅に含まれるCTUの個数PicWidthInCtbsYを用いて、CTUを単位としたタイル内座標(xCtbInCtus, yCtbInCtus)を以下の式で導出する
xCtbInCtus = (CtbAddrInRs-firstCtbAddrInRs[TileId])%PicWidthInCtbsY
yCtbInCtus = (CtbAddrInRs-firstCtbAddrInRs[TileId])/PicWidthInCtbsY
ここでfirstCtbAddrInRsは、タイルＩＤで示されるタイルの先頭CTUラスタスキャンアドレスを導出するテーブルであり、先頭タイルアドレス導出部で導出される。
【０１６４】
CTUアドレステーブル導出部は、CTUサイズ(ctuWidth, ctuHeight)をかけて、画素単位のタイル内座標(xCtbInTile, yCtbInTile)を以下の式で導出する。
【０１６５】
xCtbInTile = xCtbInCtus*ctuWidth
yCtbInTile = yCtbInCtus*ctuHeight
なお、CTUサイズの対数表示を用いて以下のように導出しても良い。
【０１６６】
xCtbInTile = xCtbInCtus<<CtbLog2SizeY
yCtbInTile = yCtbInCtus<<CtbLog2SizeY
（ステップ３）
CTUアドレステーブル導出部は、タイル内座標(xCtbInTile, yCtbInTile)とタイル左上のピクチャ内座標（xTile[TileId],yTile[TileId]）の和から、ピクチャ内におけるCTUの左上座標(xCtb, yCtb)を導出する。
【０１６７】
xCtb = xTile[TileId]+xCtbInTile
yCtb = yTile[TileId]+yCtbInTile
（ステップ４）
CTUアドレステーブル導出部は、最後に導出されたCtbAddrInRsに関するCTUの左上座標(xCtb, yCtb)をテーブルに格納する
CtbAddrToCtbX[CtbAddrInRs] = xCtb
CtbAddrToCtbY[CtbAddrInRs] = yCtb
上記の処理は、タイル左上CTUの位置(xTileInCtus, yTileInCtu)を用いて、以下のようにも表現できる。
【０１６８】
xTileInCtus = firstCtbAddrInRs[TileId] % PicWidthInCtbsY
yTileInCtus = firstCtbAddrInRs[TileId] / PicWidthInCtbsY
xCtb = (((CtbAddrInRs-xTileInCtus)%tileWidthInCtus[TileId])<<log2CtuWidthY)+xTile[TileId]
yCtb = (((CtbAddrInRs-yTileInCtus)/tileWidthInCtus[TileId])<<log2CtuHeightY)+yTile[TileId]
ここでlog2CtuWidthY=log2(ctuWidth)、log2CtuHeightY=log2(ctuHeight)である。タイル左上CTUの位置(xTileInCtus, yTileInCtu)やCTUの左上座標(xCtb,yCtb)はしばしば参照されるため、導出済みの値をテーブルに格納して用いてもよい。また、上記の導出を参照の都度行ってもよい。
【０１６９】
上記処理の全体を擬似コードで示すと以下になる。
【０１７０】
for (CtbAddrInRs=0;CtbAddrInRs<numCtusInFrame;CtbAddrInRs++)
{
TileId = CtbAddrRsToTileID[CtbAddrInRs]
xCtb = xTile[TileId]+((CtbAddrInRs-firstCtbAddrInRs[TileId])%PicWidthInCtbsY)* ctuUWidth
yCtb = yTile[TileId]+((CtbAddrInRs-firstCtbAddrInRs[TileId])/PicWidthInCtbsY) * ctuHeight
CtbAddrToCtbX[CtbAddrInRs] = xCtb
CtbAddrToCtbY[CtbAddrInRs] = yCtb
}
ここで、numCtusInFrameは１ピクチャ内のCTUの個数であり、numCtusInFrame=numTileColumns*numTileRowsである。
【０１７１】
（タイルの場合のCTUの復号・変形例）
上記で説明したタイルのCTUの復号の方法について、xCtbとyCtbの導出にCTUアドレステーブルCtbAddrToCtbX[]およびCtbAddrToCtbY[]を用いず、別の方法を用いてもよい。次にその例を示す。
【０１７２】
CT情報復号部3021は、図示しない対象ＣＴＵ座標導出部を用いて、対象ＣＴＵのCTUラスタスキャンアドレスCtbAddrInRsから、対象CTUのCTU単位のX座標(CTUのcol位置)およびCTU単位のY座標(CTUのrow位置)であるrxおよびryを導出し、CTU座標変換テーブルCtbColToCtbX[]、CtbRowToCtbY[]を参照して対象ＣＴＵの左上座標(xCtb, yCtb)を導出する。
【０１７３】
rx = CtbAddrInRs % PicWidthInCtbsY
ry = CtbAddrInRs / PicWidthInCtbsY
xCtb = CtbColToCtbX[rx]
yCtb = CtbRowToCtbY[ry]
図30(a)のcoding_tree_unit()は、この変形例の導出方法を用いたシンタックスの例である。対象CTの左上座標(xCtb,yCtb)を、CTU座標変換テーブルを用いて導出し、coding_quadtree()に左上座標(xCtb,yCtb)を渡す。図30(b)に示すように、タイルが利用可能な場合（tile_enabled_flagが真）と、そうでない場合とで、導出方法を変更してもよい。
【０１７４】
（CTU座標変換テーブル導出部）
CTU座標変換テーブル導出部は、以下のステップにより、CTU単位のX座標およびCTU単位
のY座標(rx, ry)からCTUの画素単位の座標(xCtb, yCtb)を導出するCTU座標変換テーブルCtbColToCtbX[]、CtbRowToCtbY[]を導出する。
【０１７５】
CTU座標変換テーブル導出部は、CTU単位のX座標rxを0からnum_tile_columns_minus1までループし、以下のステップを実行する。
【０１７６】
（ステップ１ｘ）
CTU座標変換テーブル導出部は、CTU単位のX座標rxから、タイルＩＤを導出する。このとき、すべてのY座標についてこのテーブルは同じであるため、CTU単位のY座標(CTUのrow位置)は0とする。したがって、
TileId = CtbAddrRsToTileID[rx]
ここでCtbAddrRsToTileIDは、タイルＩＤテーブル導出部で導出されるテーブルである。
【０１７７】
（ステップ２ｘ）
CTU座標変換テーブル導出部は、対象CTUを含むタイルの先頭CTUラスタスキャンアドレスfirstCtbAddrInRs[TileId]を導出し、CTUを単位としたタイル内座標xCtbInCtusを以下の式で導出する。
【０１７８】
xCtbInCtus = rx - firstCtbAddrInRs[TileId] % PicWidthInCtbsY
ここでfirstCtbAddrInRsは、タイルＩＤで示されるタイルの先頭CTUラスタスキャンアドレスを導出するテーブルであり、先頭タイルアドレス導出部で導出される。
【０１７９】
あるいは、タイルＩＤで示されるタイルの先頭CTBのCTU単位X座標(col位置)を導出するテーブルfirstCtbCol[]を用いて、次のように導出してもよい。
【０１８０】
xCtbInCtus = rx - firstCtbCol[TileId]
テーブルfirstCtbCol[]は、先頭タイルアドレス導出部で、次のように導出する。
【０１８１】
firstCtbCol[TileId] = firstCtbAddrInRs[TileId] % PicWidthInCtbsY
次に、CTU座標変換テーブル導出部は、xCtbInCtusにCTUサイズctuWidthをかけて、画素単位のタイル内座標xCtbInTileを以下の式で導出する。
【０１８２】
xCtbInTile = xCtbInCtus*ctuWidth
（ステップ３ｘ）
CTU座標変換テーブル導出部は、タイル内X座標xCtbInTileとタイル左上X座標のピクチャ内座標xTile[TileId]の和から、ピクチャ内におけるCTUの左上X座標xCtbを導出する。
【０１８３】
xCtb = xTile[TileId]+xCtbInTile
（ステップ４ｘ）
最後に、CTU座標変換テーブル導出部は、導出されたrxに関するCTUの左上X座標xCtbをテーブルに格納する。
【０１８４】
CtbColToCtbX[rx] = xCtb
上記の処理は、タイル左上CTUのX座標xTileInCtusを用いて、以下のようにも表現できる。
【０１８５】
xTileInCtus = firstCtbAddrInRs[TileId] % PicWidthInCtbsY
xCtb = ((rx-xTileInCtus)<<log2CtuWidthY)+xTile[TileId]
ここでlog2CtuWidthY=log2(ctuWidth)である。タイル左上CTUのX座標xTileInCtusやCTUの左上X座標xCtbはしばしば参照されるため、このように導出済みの値をテーブルに格納
して用いてもよいし、上記の導出を参照の都度行ってもよい。
【０１８６】
上記処理の全体を擬似コードで示すと以下になる。
【０１８７】
for ( col=0; col<=num_tile_columns_minus1; col++ )
{
TileId = CtbAddrRsToTileID[col]
xCtb = xTile[TileId]+((rx-firstCtbAddrInRs[TileId])%PicWidthInCtbsY)* ctuWidth
CtbColToCtbX[col] = xCtb
}
X座標に関するテーブルと同様に、CTU座標変換テーブル導出部は、CTU単位のY座標ryを0からnum_tile_rows_minus1までループし、以下のステップを実行する。
【０１８８】
（ステップ１ｙ）
CTU座標変換テーブル導出部は、CTU単位のY座標ryから、タイルＩＤを導出する。このとき、すべてのX座標についてこのテーブルは同じであるため、CTU単位のX座標(CTUのcol位置)は0とする。したがって、
TileId = CtbAddrRsToTileID[ry*PicWidthInCtbsY]
ここでCtbAddrRsToTileIDは、タイルＩＤテーブル導出部で導出されるテーブルである。
【０１８９】
（ステップ２ｙ）
CTU座標変換テーブル導出部は、対象CTUを含むタイルの先頭CTUラスタスキャンアドレスfirstCtbAddrInRs[TileId]を導出し、CTUを単位としたタイル内座標yCtbInCtusを以下の式で導出する。
【０１９０】
yCtbInCtus = ry - firstCtbAddrInRs[TileId] / PicWidthInCtbsY
ここでfirstCtbAddrInRsは、タイルＩＤで示されるタイルの先頭CTUラスタスキャンアドレスを導出するテーブルであり、先頭タイルアドレス導出部で導出される。
【０１９１】
あるいは、タイルＩＤで示されるタイルの先頭CTBのCTU単位Y座標(row位置)を導出するテーブルfirstCtbRow[]を用いて、次のように導出してもよい。
【０１９２】
yCtbInCtus = ry - firstCtbRow[TileId]
テーブルfirstCtbRow[]は、先頭タイルアドレス導出部で、次のように導出する。
【０１９３】
firstCtbRow[TileId] = firstCtbAddrInRs[TileId] / PicWidthInCtbsY
次に、CTU座標変換テーブル導出部は、yCtbInCtusにCTUサイズctuHeightをかけて、画素単位のタイル内座標yCtbInTileを以下の式で導出する。
【０１９４】
yCtbInTile = yCtbInCtus*ctuHeight
（ステップ３ｙ）
CTU座標変換テーブル導出部は、タイル内Y座標yCtbInTileとタイル左上Y座標のピクチャ内座標yTile[TileId]の和から、ピクチャ内におけるCTUの左上Y座標yCtbを導出する。
【０１９５】
yCtb = yTile[TileId]+yCtbInTile
（ステップ４ｙ）
最後に、CTU座標変換テーブル導出部は、導出されたryに関するCTUの左上Y座標yCtbをテーブルに格納する。
【０１９６】
CtbRowToCtbY[ry] = yCtb
上記の処理は、タイル左上CTUのy位置yTileInCtusを用いて、以下のようにも表現できる。
【０１９７】
yTileInCtus = firstCtbAddrInRs[TileId] / PicWidthInCtbsY
yCtb = ((ry-yTileInCtus)<<log2CtuHeightY)+yTile[TileId]
ここでlog2CtuHeightY=log2(ctuHeight)である。タイル左上CTUのY座標yTileInCtusやCTUの左上Y座標yCtbはしばしば参照されるため、このように導出済みの値をテーブルに格納して用いてもよいし、上記の導出を参照の都度行ってもよい。
【０１９８】
上記処理の全体を擬似コードで示すと以下になる。
【０１９９】
for ( row=0; row<=num_tile_rows_minus1; row++ )
{
TileId = CtbAddrRsToTileID[row*PicWidthInCtbsY]
yCtb = yTile[TileId]+((ry-firstCtbAddrInRs[TileId])/PicWidthInCtbsY)* ctuHeight
CtbRowToCtbY[row] = yCtb
}
なお、CtbAddrInTsとCtbAddrInRsは互いに変換可能であるため、上記実施例のうちラスタスキャン順CTU位置CtbAddrInRsを添字とするテーブルは、タイルスキャン順CTU位置CtbAddrInTsを添字として導出し、参照時の添字もタイルスキャン順CTU位置に変換したものを用いて構成することも可能である。同様に、タイルスキャン順CTU位置CtbAddrInTsを添字とするテーブルは、ラスタスキャン順CTU位置CtbAddrInRsを添字として導出し、参照時の添字もラスタスキャン順CTU位置に変換したものを用いて構成することも可能である。
【０２００】
ラスタスキャン順CTUアドレスからタイルスキャン順CTUアドレスを導出するテーブルCtbAddrRsToTs[]の導出例を以下に擬似コードで示す。CtbAddrRsToTileId[]は、タイルＩＤテーブル導出部によって導出された、ラスタスキャン順CTUアドレスからタイルＩＤを導出する、タイルＩＤテーブルである。
【０２０１】
for( ctbAddrRs = 0; ctbAddrRs < numCtusInFrame; ctbAddrRs++ ) {
tileId = CtbAddrRsToTileId[ ctbAddrRs ]
tbX = ctbAddrRs % PicWidthInCtbsY
tbY = ctbAddrRs / PicWidthInCtbsY
CtbAddrRsToTs[ ctbAddrRs ] = 0
for( t = 0; t < tileId; t++ ) {
CtbAddrRsToTs[ctbAddrRs] += TileWidthInCtbsY[tileId]*TileHeightInCtbsY[tileId]
}
CtbAddrRsToTs[ctbAddrRs] += (tbY-TileYInCtbsY[tileId])*TileWidthInCtbsY[tileId]+
tbX-TileXInCtbsY[tileId]
}
以上の構成により、画像をＣＴＵに分割し、ＣＴＵ単位に動画像を復号する動画像復号装置において、タイルをＣＴＵに分割して再帰的に分割するＣＴ情報復号部を備え、対象ＣＴＵのラスタスキャンアドレスから、１つ以上のタイルのサイズを参照して、対象ＣＴＵのピクチャ上の左上座標を導出するヘッダ復号部（対象ＣＴＵ座標導出部）を備え、上記ＣＴ情報復号部は、導出された対象ＣＴＵのピクチャ上の左上座標に基づいて、対象ＣＴＵを符号化ツリーに分割し、分割されたＣＴの右下位置のタイル内座標がタイルサイズ
以内である場合に、符号化ツリーを処理する手段を備える。
【０２０２】
画像をタイルに分割し、タイル単位に動画像を復号する動画像復号装置において、
対象ＣＴＵのラスタスキャンアドレスから、対象ＣＴＵの左上座標を導出するCTUアドレステーブルを参照するヘッダ復号部（対象ＣＴＵ座標導出部）を備え、上記CTUアドレステーブルを、１つ以上のタイルのサイズから導出するヘッダ復号部（CTUアドレステーブル導出部）を備える。
【０２０３】
（タイルＩＤテーブル導出部）
タイルＩＤテーブル導出部は以下のステップでタイルＩＤテーブルCtbAddrRsToTileID[]を導出する。
【０２０４】
（ステップ１）
画面内CTUアドレスCtbAddrInRsに対応するCTUのタイル座標(columnIdx,rowIdx)を導出する。
【０２０５】
（ステップ２）
タイル座標(columnIdx, rowIdx)から画面内タイルIDを導出する。
【０２０６】
TileId = rowIdx*numTileColumns+columnIdx
ここでnumTileColumnsはピクチャ内の水平方向のタイルの個数である。
【０２０７】
（ステップ３）
導出したタイルIDをタイルＩＤテーブルCtbAddrRsToTileID[]に格納する。
【０２０８】
CtbAddrRsToTileID[CtbAddrInRs] = TileId
上記の処理の擬似コードを以下に示す。
【０２０９】
for(CtbAddrInRs=0;CtbAddrInRs<numCtusInFrame;CtbAddrInRs++)
{
for(col=0;col<numTileColumns;col++)
{
if(CtbAddrInRs%PicWidthInCtbsY<=rightEdgePosInCtus[col])
{
columnIdx = col
break
}
}
for(row=0;row<numTileRows;row++)
{
if(CtbAddrInRs/PicWidthInCtbsY<=bottomEdgePosInCtus[row*numTileColumns])
{
rowIdx = row
break
}
}
CtbAddrRsToTileID[CtbAddrInRs] = rowIdx*numTileColumns+columnIdx
}
（先頭タイルアドレス導出部）
先頭タイルアドレス導出部は以下のステップで先頭タイルアドレステーブルfirstCtbAd
drInRs[]を導出する。
【０２１０】
（ステップ１）
タイル単位の座標で(col, row)に対応するTileIdについて、col列までの各タイルi(0<=i<col)のCTU単位の幅tileWidthInCtus[i]を参照して、TileIdの示すタイルのCTU単位の右端位置rightEdgePosInCtus[TileId]を導出する。同様に、row列までの各タイルj(0<=j<row)のCTU単位の高さtileHeightInCtus[j]を参照して、TileIdの示すタイルのCTU単位の下端位置bottomEdgePosInCtus[TileId]を導出する。
【０２１１】
（ステップ２）
TileIdで示すタイルのCTU単位の右端位置rightEdgePosInCtus[TileId]、および、TileIdで示すタイルのCTU単位の幅tileWidthInCtus[TileId]から、TileIdで示すタイルのCTU単位の左端位置xCtbInCtusを導出する。
【０２１２】
TileIdで示すタイルのCTU単位の下端位置bottomEdgePosInCtus[TileId]、および、TileIdで示すタイルのCTU単位の高さtileHeightInCtus[TileId]から、TileIdで示すタイルのCTU単位の上端位置yCtbInCtusを導出する。
【０２１３】
xCtbInCtus = rightEdgePosInCtus[TileId]-tileWidthInCtus[TileId]+1
yCtbInCtus = bottomEdgePosInCtus[TileId]-tileHeightInCtus[TileId]+1
TileIdで示すCTU単位のタイル左上画素の画面内位置(xCtbInCtus, yCtbInCtus)から、CTUラスタスキャンアドレスCtbAddrInRsを導出する。
【０２１４】
CtbAddrInRs = yCtbInCtus*PicWidthInCtbsY+xCtbInCtus
ここで、tileWidthInCtus[]、tileHeightInCtus[]はタイル情報設定部が導出する。
【０２１５】
（ステップ３）
導出したCTUアドレスを先頭タイルアドレステーブルfirstCtbAddrInRs[]に格納する
firstCtbAddrInRs[TileId] = CtbAddrInRs
上記の処理の擬似コードを以下に示す。
【０２１６】
for(row=0; row < numTileRows; row++)
{
for(col=0; col < numTileColumns; col++)
{
TileIdx = row*numTileColumns+col;
rightEdgePosInCTU = 0;
for(i=0; i <= col; i++)
{
rightEdgePosInCTU += tileWidthInCtus[row*numTileColumns+i]
}
rightEdgePosInCtus[TileId] = rightEdgePosInCTU-1
bottomEdgePosInCTU = 0;
for(i=0 ;i <= row; i++)
{
bottomEdgePosInCTU += tileHeightInCtus[i*numTileColumns+col]
}
bottomEdgePosInCtus[tileId] = bottomEdgePosInCTU-1
xCtbInCtus = rightEdgePosInCtus[TileId]-tileWidthInCtus[TileId]+1
yCtbInCtus = bottomEdgePosInCtus[TileId]-tileHeightInCtus[TileId]+1
CtbAddrInRs = yCtbInCtus*PicWidthInCtbsY+xCtbInCtus
firstCtbAddrInRs[TileId] = CtbAddrInRs
}
}
（CT情報復号の処理）
以下、CT情報復号の処理を、図7、図8、図9を参照して説明する。図7は、本発明の一実施形態に係るCT情報復号部3021の動作を説明するフローチャートである。また、図8は、本発明の一実施形態に係るCTUおよびQT情報のシンタックス表の構成例を示す図であり、図9は、本発明の一実施形態に係るMT分割情報のシンタックス表の構成例を示す図である。また図7〜図9の別の例を、図27〜図29に示す。
【０２１７】
図8(a)のcoding_tree_unit()のシンタックスの復号においてCT情報復号は、対象CTUの左上座標(xCtb,yCtb)を導出し、coding_quadtree()のシンタックスを再帰的に復号する。coding_quadtree()のCTの左上座標(xCb, yCb)の初期値には、CTUの左上座標(xCtb,yCtb)を用いる。(xCtb,yCtb)の別の導出方法として、図27(b)に示すように、タイルを利用する場合（tile_enabled_flagが真）と、そうでない場合とで、導出方法を変更してもよい。すなわち、タイルを利用する場合には、CTU左上座標(xCtb, yCtb)を、画面内のタイル左上座標(xTile[TileId], yTile[TileId])とタイル内のCTU左上座標の和から導出する。つまり、タイル内のCTU左上座標は、CTU単位のCTUの画面内座標(rx, ry)とCTU単位のタイルの画面内座標(TileXInCtbY, TileYInCtbY)の差分から、CTU単位のタイル内座標を導出し、CTUサイズをかける（CtbLog2SizeYで左シフトする）。
【０２１８】
CurrTileId = TileIdTbl[ CtbAddrInRs ]
xCtb = xTile[TileId]+(rx-TileXInCtbsY[CurrTileId]) <<CtbLog2SizeY
yCtb = yTile[TileId]+(ry-TileYInCtbsY[CurrTileId]) <<CtbLog2SizeY
逆に、タイルを利用しない場合には、CTU左上座標(xCtb, yCtb)を、CTU単位のCTUの画面内座標から導出する。つまり、タイル内のCTU左上座標は、CTU単位のCTUの画面内座標(rx, ry)にCTUサイズをかける（CtbLog2SizeYで左シフトする）。
【０２１９】
rx = CtbAddrInRs % PicWidthInCtbsY 
ry = CtbAddrInRs / PicWidthInCtbsY
xCtb = rx  <<  CtbLog2SizeY
yCtb = ry  <<  CtbLog2SizeY
また、タイルを利用しない場合も、画面全体が一つのタイルであるとして、タイルの利用する利用しないに限らずに処理をしてもよい。
【０２２０】
（CTU以下の復号）
（ピクチャ内座標系を用いたフレキシブルタイルのＣＴ分割）
CT情報復号部3021は符号化データからCT情報を復号し、再帰的に符号化ツリーCT（coding_quadtree）を復号する。具体的には、CT情報復号部3021はQT情報を復号し、対象CT coding_quadtree(x0,y0,log2CbSize,cqtDepth)を復号する。なお、(x0,y0)は対象CTの左上座標、log2CbSizeはCTのサイズであるCTサイズの２を底とした対数である対数CTサイズ、cqtDepthはCTの階層を示すCTデプス（QT深度）である。
【０２２１】
（S1411）CT情報復号部3021は復号したCT情報にQT分割フラグがあるか否かを判定する。QT分割フラグがある場合にはS1421に遷移し、それ以外の場合にはS1422に遷移する。
【０２２２】
（S1421）CT情報復号部3021は、対数CTサイズlog2CbSizeがMinCbLog2SizeYより大きいと判定された場合には、QT分割フラグ（split_cu_flag）を復号する。
ここで、下式のように、タイルを用いる場合にはCTUの左上座標(xCtb,yCtb)とタイルサイ
ズを考慮して、さらなる四分木分割を実施するか否かを示すsplit_cu_flagを通知する。
【０２２３】
if (x0+(1<<log2CbSize)-xTile<=wT && y0+(1<<log2CbSize)-yTile<=hT && log2CbSize>MinCbLog2SizeY)
split_cu_flag[x0][y0]
ここで、(x0,y0)はブロックの左上座標、(xTile,yTile)はタイルの左上座標、log2CbSizeはブロックサイズの対数値、wTとhTはタイル有効領域（もしくはタイル符号化領域）の幅と高さ、MinCbLog2SizeYはブロックの最小サイズの対数値である。
【０２２４】
ブロックの右端の座標x0+(1<<log2CbSize)、下端の座標y0+(1<<log2CbSize)が、タイル有効領域の右端の座標xTile+wTileと下端の座標yTile+hTileよりも小さい場合、対象ブロックはタイル有効領域内に存在する。ブロックがタイル内に存在し、ブロックサイズが最小値よりも大きい場合(log2CbSize>MinCbLog2SizeY)、ブロックをさらに分割するか否かを示すフラグsplit_cu_flagを通知する。ブロックをさらに四分木分割する場合、split_cu_flagを１にセットし、ブロックを四分木分割しない場合、split_cu_flagを０にセットする。
【０２２５】
（S1422）CT情報復号部3021は、それ以外の場合には、符号化データからのQT分割フラグsplit_cu_flagの復号を省略し、QT分割フラグsplit_cu_flagに０をセットする。
【０２２６】
（S1450）QT分割フラグsplit_cu_flagが０以外である場合にはS1451に遷移し、それ以外の場合にはS1471に遷移する。
【０２２７】
（S1451）CT情報復号部3021はQT分割を行う。具体的には、CT情報復号部3021は、CTデプスcqtDepth+1の位置(x0,y0)、(x1,y0)、(x0,y1)、(x1,y1)において、対数CTサイズlog2CbSize-1の４つのCTを復号する。タイル内での各CTの右下座標(xi-xTile[TileId], yi-yTile[TileId])がタイルサイズ(wTile[TileId], hTile[TileId])未満のCTを復号する。逆に、各CTの右下座標(xi-xTile[TileId], yi+yTile[TileId])の何れかがタイルサイズ(wTile[TileId], hTile[TileId])以上のCTは復号しない。すなわち、CT情報復号部3021は、対象ＣＴＵを再帰的に符号化ツリーに分割し、分割されたＣＴの左上座標(x1, y0), (x0, y1), (x1, y1)が対象タイル内である場合に、符号化ツリーを処理する。
【０２２８】
coding_quadtree(x0,y0,log2CbSize-1,cqtDepth+1)
if (x1-xTile[TileId] < wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
if (y1-yTile[TileId] < hTile[TileId])
coding_quadtree(x0,y1,log2CbSize-1,cqtDepth+1)
if (x1-xTile[TileId] < wTile[TileId] && y1-yTile[TileId] < hTile[TileId])
coding_quadtree(x1,y1,log2CbSize-1,cqtDepth+1)
上記に置いて、例えば、4分木分割で得られた、(x1,y0)に位置するブロックであるcoding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1,wTile,hTile,xTile,yTile)は、以下のようにx1がタイル内に位置する場合に符号化あるいは復号される。
【０２２９】
if (x1-xTile[TileId]<wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
ここで、(x0,y0)は対象CTの左上座標、(x1,y1)は以下の式のように(x0,y0)にCTサイズ（1<<log2CbSize）の1/2を加えて導出される。
【０２３０】
x1 = x0+(1<<(log2CbSize-1))
y1 = y0+(1<<(log2CbSize-1))
1<<Nは2のN乗と同値である（以下同様）。
【０２３１】
そして、CT情報復号部3021は、下式のように、CTの階層を示すCTデプスcqtDepthと対数CTサイズlog2CbSizeを更新する。
【０２３２】
cqtDepth = cqtDepth+１
log2CbSize = log2CbSize-１
CT情報復号部3021は、下位のCTにおいても、更新された左上座標、対数CTサイズ、CTデプスを用いて、S1411から開始されるQT情報復号を継続する。
【０２３３】
QT分割終了後、CT情報復号部3021は符号化データからCT情報を復号し、再帰的に符号化ツリーCT（MT、coding_multitree（図9）あるいはmulti_type_tree（図29））を復号する。具体的には、CT情報復号部3021は、MT分割情報を復号し、対象CT coding_multitree(x0,y0,log2CbWidth,log2CbHeight,cbtDepth)、あるいは、multi_type_tree(x0,y0,cbWidth,cbHeight,mttDepth,depthOffset,partIdx,treeType)を復号する。なお、log2CbWidthはCTの幅の対数値、log2CbHeightはCTの高さの対数値、cbtDepthはマルチツリーの階層を示すCTデプス（MT深度）である。以下では、coding_multitreeについて説明する。
【０２３４】
（S1471）CT情報復号部3021は、復号したCT情報にMT分割フラグ（分割情報）があるか否かを判定する。MT分割フラグがある場合にはS1481に遷移する。それ以外の場合にはS1482に遷移する。
【０２３５】
（S1481）CT情報復号部3021はMT分割フラグsplit_mt_flagを復号する。
【０２３６】
（S1482）CT情報復号部3021は符号化データからMT分割フラグsplit_mt_flagを復号せず、０に設定する。
【０２３７】
（S1490）CT情報復号部3021は、MT分割フラグsplit_mt_flagが０以外の場合には、S1491に遷移する。それ以外の場合には、CT情報復号部3021は対象CTを分割せず、処理を終了する（CUの復号に移行する）。
【０２３８】
（S1491）CT情報復号部3021はMT分割を行う。MT分割の方向を示すフラグsplit_mt_dirと、MT分割が２分木であるか３分木であるかを示すシンタックス要素split_mt_typeを復号する。CT情報復号部3021は、分割されたＣＴの左上座標が対象タイル内である場合に、符号化ツリーを処理する。ＣＴの左上座標は2分木では、(x0, y1)もしくは(x1, y0)、3分木では(x0, y1), (x0, y2)もしくは(x1, y0), (x2, y0)。である。ここで先頭CTの左上座標(x0, y0)がタイル外になる場合には分割自体されないため、(x0, y0)は常にタイル内であると仮定する。
【０２３９】
CT情報復号部3021は、MT分割タイプsplit_mt_typeが０（２分割）、かつ、MT分割方向split_dir_flagが１（水平分割）の場合は、以下の２つのCTを復号（BT分割情報復号）する。タイル内でのCT(x0, y1)の下座標y1-yTile[TileId]がタイルサイズhTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの下座標y1-yTile[TileId]がタイルサイズhTile[TileId]以上のCTは復号しない。
【０２４０】
coding_multitree(x0,y0,log2CbWidth,log2CbHeight-1,cbtDepth+1)
if (y1-yTile[TileId] < hTile[TileId])
coding_multitree(x0,y1,log2CbWidth,log2CbHeight-1,cbtDepth+1)
一方、MT分割方向split_dir_flagが０（垂直分割）の場合は、以下の２つのCTを復号（BT分割情報復号）する。タイル内でのCT(x1, y0)の右座標x1-xTile[TileId]がタイルサイ
ズwTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの右座標x1-xTile[TileId]がタイルサイズwTile[TileId]以上のCTは復号しない。
【０２４１】
coding_multitree(x0,y0,log2CbWidth-1,log2CbHeight,cbtDepth+1)
if (x1-xTile[TileId] < wTile[TileId])
coding_multitree(x1,y0,log2CbWidth-1,log2CbHeight,cbtDepth+1)
ここで、(x1,y1)は以下の式で導出される。
【０２４２】
x1 = x0+(1<<(log2CbWidth-1))
y1 = y0+(1<<(log2CbHeight-1))
さらに、log2CbWidth、または、log2CbHeightを下式のように更新する。
【０２４３】
log2CbWidth = log2CbWidth-１
log2CbHeight = log2CbHeight-１
CT情報復号部3021は、MT分割タイプsplit_mt_typeが１（３分割）を示す場合には、３つのCTを復号（TT分割情報復号）する。
【０２４４】
MT分割方向split_dir_flagが１（水平分割）の場合は、以下の３つのCTを復号する。タイル内でのi=0, 1の各CT(x0, yi)の下座標yi-yTile[TileId]がタイルサイズhTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの下座標yi-yTile[TileId]がタイルサイズhTile[TileId]以上のCTは復号しない。
【０２４５】
coding_multitree(x0,y0,log2CbWidth,log2CbHeight-2,cbtDepth+1)
if (y1-yTile[TileId] < hTile[TileId])
coding_multitree(x0,y1,log2CbWidth,log2CbHeight-1,cbtDepth+1)
if (y2-yTile[TileId] < hTile[TileId])
coding_multitree(x0,y2,log2CbWidth,log2CbHeight-2,cbtDepth+1)
一方、MT分割方向split_dir_flagが１（垂直分割）の場合は、以下の３つのCTを復号（TT分割情報復号）する。タイル内でのi=0, 1の各CT(xi, y0)の右座標xi-xTile[TileId]がタイルサイズwTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの右座標xi-xTile[TileId]がタイルサイズwTile[TileId]以上のCTは復号しない。
【０２４６】
coding_multitree(x0,y0,log2CbWidth-2,log2CbHeight,cbtDepth+1)
if (x1-xTile[TileId] < wTile[TileId])
coding_multitree(x1,y0,log2CbWidth-1,log2CbHeight,cbtDepth+1)
if (x2-xTile[TileId] < wTile[TileId])
coding_multitree(x2,y0,log2CbWidth-2,log2CbHeight,cbtDepth+1)
ここで、(x1,y1)、(x2,y2)は、以下の式のように、導出される。
【０２４７】
x1 = x0+(1<<(log2CbWidth-2))
y1 = y0+(1<<(log2CbHeight-2))
x2 = x0+(3<<(log2CbWidth-2))
y2 = y0+(3<<(log2CbHeight-2))
CT情報復号部3021は、下位のCTにおいても、更新された左上座標、CTの幅及び高さ、MT深度を用いて、S1471から開始されるBT分割情報復号、あるいは、TT分割情報復号を継続する。
【０２４８】
また、CT情報復号部3021は、MT分割フラグsplit_mt_flagが０の場合、すなわちQT分割もMT分割も行われない場合には、CU復号部3022でCU（coding_unit(x0,y0,log2CbSize, cqtDepth)）を復号する。
【０２４９】
以下、画面内座標系とは、対象画面の左上座標を基準とする対象ブロックの輝度左上座標を用いることであり、タイル内座標系とは、対象タイルの左上座標を基準とする対象ブロックの輝度左上座標をもちいることであってもよい。
【０２５０】
以上のように、画面内座標系で表現される各CUの左上座標(xi, yi)から、タイル左上座標(xTile, yTile)を引いて、タイル内座標系の左上座標を導出し、それをタイルサイズ(wTile, hTile)と比較することで、分割フラグを復号し、各CTを復号する。これによって、タイルサイズがCTUサイズの整数倍ではない場合においても、無駄な分割フラグ、無駄なCTを復号することなく、効率的にCU分割を行うことが可能であるという効果を奏する。
【０２５１】
（タイル分割の別の例）
図31のシンタックステーブルを用いてタイル分割の別の例を説明する。この例では、画面を矩形のタイルに分割し、タイルをグループとした単位を用いて符号化データを構成する。タイルの左上座標はxTile, yTile、タイルの幅、高さはwTile, hTileである。タイルの先頭位置を格納するテーブルFirstCtbAddrTsとタイルグループの位置tile_group_addressから、先頭タイルのCTUアドレスctbAddrInTsを導出する。0からnum_tiles_in_tile_group_minus1までのタイルを復号する。num_tiles_in_tile_group_minus1は、ピクチャ内のタイルの個数から１を引いた値である。TileIdで示される各タイルについて0からNumCtusInTile[tileIdx]までのCTUを復号する。タイルの終端でend_of_tile_one_bitとバイトアライン用ビットbyte_alignment()を復号する。またタイル内におけるＣＴＵ位置jをcoding_tree_unitの引数としてCTUを復号する。jは、CtbAddrInTileの値として設定される。
【０２５２】
図31（ｂ）は、タイル座標系におけるＣＴＵ位置CtbAddrInTileを用いて、各CTUを復号する例を示す。タイル内のCTU単位のラスタスキャン位置CtbAddrInTileと、タイルのCTU単位のサイズTileWidthInCtusから、タイル内のCTU単位の位置(rx,ry)とタイル内の画素単位の位置(xCtb,yCtb)を導出する。導出したタイル内座標系のCTU位置を用いて、以下のようにCTUを復号する。なお、タイル内のCTU単位のラスタ位置CtbAddrInTileは、画面単位のCTU位置CtbAddrInTsからタイルの先頭位置FirstCtbAddrTsを引いて導出してもよい。
【０２５３】
CtbAddrInTile = CtbAddrInTs - FirstCtbAddrTs[tile_group_id]
（CTU以下の復号）
（タイル内座標系を用いたフレキシブルタイルのＣＴ分割）
図7、図32、図33のシンタックステーブルを復号する場合のCT情報復号部3021の動作を説明する。本構成のタイル左上の座標を原点とするタイル内座標系を用いて、CTU座標(xCtb, yCtb)を導出し、そのCTU座標とタイルサイズ(wTile, hTile)に基づいて再帰的にCT情報及びMT分割情報を復号して、CT情報を復号する。
【０２５４】
まず、CT情報復号部3021は符号化データからCT情報を復号し、再帰的に符号化ツリーCT（coding_quadtree）を復号する。具体的には、CT情報復号部3021はQT情報を復号し、対象CT coding_quadtree(x0,y0,log2CbSize,cqtDepth,treeType)を復号する。
【０２５５】
（S1411）CT情報復号部3021は復号したCT情報にQT分割フラグがあるか否かを判定する。QT分割フラグがある場合にはS1421に遷移し、それ以外の場合にはS1422に遷移する。
【０２５６】
（S1421）CT情報復号部3021は、対数CTサイズlog2CbSizeがMinCbLog2SizeYより大きいと判定された場合には、QT分割フラグ（qt_split_cu_flag）を復号する。
ここで、下式のように、タイルを用いる場合にはタイル内座標系におけるCTの左上座標 (x0,y0)とタイルサイズを考慮して、さらなる四分木分割を実施するか否かを示すqt_split_cu_flagが通知される。
【０２５７】
if ((((x0+(1<<log2CbSize) <= wTile[TileId])?1:0)+
((y0+(1<<log2CbSize) <= hTile[TileId])?1:0)+  
(((1<<log2CbSize) <= MaxBtSizeY)?1:0)) >= 2 && 
log2CbSize > MinQtLog2SizeY)
qt_split_cu_flag[x0][y0]
つまり、ブロックの右端の座標x0+(1<<log2CbSize)、下端の座標y0+(1<<log2CbSize)の両方が、タイル幅wTileとタイル高さhTile以下の場合、
(x0+(1<<log2CbSize) <= wTile[TileId])?1:0)+
((y0+(1<<log2CbSize) <= hTile[TileId])?1:0)>=2
もしくは、ブロックの右端の座標x0+(1<<log2CbSize)がタイル幅wTile以下で、CTサイズが最大BTサイズMaxBtSizeY以上の場合、
(x0+(1<<log2CbSize) <= wTile[TileId])?1:0)+
(((1<<log2CbSize) <= MaxBtSizeY)?1:0)) >= 2
もしくは、ブロックの下端の座標y0+(1<<log2CbSize)がタイル高さhTile以下で、CTサイズが最大BTサイズMaxBtSizeY以上の場合、
(y0+(1<<log2CbSize) <= hTile[TileId])?1:0)+
(((1<<log2CbSize) <= MaxBtSizeY)?1:0)) >= 2
の場合に、QT分割フラグqt_split_cu_flagを符号化データから復号する。
【０２５８】
（S1422）CT情報復号部3021は、それ以外の場合には、符号化データからのQT分割フラグqt_split_cu_flagの復号を省略し、QT分割フラグqt_split_cu_flagを、タイルサイズ(wTile, hTile)を用いて以下のように導出する。
【０２５９】
以下の何れかが真の場合、qt_split_cu_flagに１を導出する。
【０２６０】
x0+(1<<log2CbSize) > wTile[TileId] && (1<<log2CbSize) > MaxBtSizeY
y0+(1<<log2CbSize) > hTile[TileId] && (1<<log2CbSize) > MaxBtSizeY
以下の全てが真の場合、qt_split_cu_flagに１を導出する。
【０２６１】
x0+(1<<log2CbSize) > wTile[TileId]
y0+(1<<log2CbSize) > hTile[TileId]
(1<<log2CbSize) > MinQtSizeY
上記以外の場合、qt_split_cu_flagに１を導出する。
【０２６２】
すなわち、ＣＴ右座標がタイルサイズ幅を超えており、かつ、CTサイズが最大BT分割サイズMaxBtSizeYを超えている場合には必ず分割する（qt_split_cu_flagに１を導出）。
【０２６３】
ＣＴ下座標がタイルサイズ高さを超えており、かつ、CTサイズが最大BT分割サイズMaxBtSizeYを超えている場合には必ず分割する（qt_split_cu_flagに１を導出）。
【０２６４】
ＣＴ右下座標がタイルサイズを超えている場合にも必ず分割する（qt_split_cu_flagに１を導出）。
【０２６５】
（S1450）QT分割フラグsplit_cu_flagが０以外である場合にはS1451に遷移し、それ以外の場合にはS1471に遷移する。
【０２６６】
（S1451）CT情報復号部3021はQT分割を行う。具体的には、CT情報復号部3021は、CTデプスcqtDepth+1の位置(x0,y0)、(x1,y0)、(x0,y1)、(x1,y1)において、対数CTサイズlog2CbSize-1の４つのCTを復号する。タイル内での各CTの右下座標(xi-xTile[TileId], yi+yT
ile[TileId])がタイルサイズ(wTile[TileId], hTile[TileId])以下のCTを復号する。逆に、各CTの右下座標(xi, yi)の何れかがタイルサイズ(wTile[TileId], hTile[TileId])より大きいCTは復号しない。すなわち、CT情報復号部3021は、対象ＣＴＵを再帰的に符号化ツリーに分割し、分割されたＣＴの左上座標(x1, y0)、(x0, y1)、(x1, y1)が対象タイル内である場合に、符号化ツリーを処理する。
【０２６７】
coding_quadtree(x0,y0,log2CbSize-1,cqtDepth+1)
if (x1 < wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
if (y1 < hTile[TileId])
coding_quadtree(x0,y1,log2CbSize-1,cqtDepth+1)
if (x1 < wTile[TileId] && y1 < hTile[TileId])
coding_quadtree(x1,y1,log2CbSize-1,cqtDepth+1)
上記において、例えば、4分木分割で得られた、(x1,y0)に位置するブロックであるcoding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)は、以下のようにx1がタイル内に位置する場合に符号化あるいは復号される。
【０２６８】
if (x1<wTile[TileId])
coding_quadtree(x1,y0,log2CbSize-1,cqtDepth+1)
ここで、(x0,y0)は対象CTの左上座標、(x1,y1)は以下の式のように(x0,y0)にCTサイズ（1<<log2CbSize）の1/2を加えて導出される。
【０２６９】
x1 = x0+(1<<(log2CbSize-1))
y1 = y0+(1<<(log2CbSize-1))
1<<Nは2のN乗と同値である（以下同様）。
【０２７０】
そして、CT情報復号部3021は、下式のように、CTの階層を示すCTデプスcqtDepthと対数CTサイズlog2CbSizeを更新する。
【０２７１】
cqtDepth = cqtDepth+１
log2CbSize = log2CbSize-１
CT情報復号部3021は、下位のCTにおいても、更新された左上座標、対数CTサイズ、CTデプスを用いて、S1411から開始されるQT情報復号を継続する。
【０２７２】
QT分割終了後、CT情報復号部3021は符号化データからCT情報を復号し、再帰的に符号化ツリーCT（MT、multi_type_tree）を復号する。具体的には、CT情報復号部3021は、タイル内座標とタイルサイズを用いて、MT分割情報を復号し、対象CT multi_type_tree (x0,y0,CbWidth,CbHeight,mttDepth,depthOffset,partIdx,treeType)を復号する。なお、CbWidthはCTの幅、CbHeightはCTの高さ、mttDepthはマルチツリーの階層を示すCTデプス（MT深度）である。
【０２７３】
（S1471）CT情報復号部3021は、復号したCT情報にMT分割フラグ（分割情報、すなわちmtt_split_cu_flag、mtt_split_cu_vertical_flag、mtt_split_cu_binary_flag）があるか否かを判定する。以下の判定により、MT分割フラグがある場合にはS1481に遷移する。それ以外の場合にはS1482に遷移する。
【０２７４】
(allowSplitBtVer || allowSplitBtHor || allowSplitTtVer || allowSplitTtHor) 
&& (x0+cbWidth<=wTile[TileId]) && (y0+cbHeight<=hTile[TileId])
ここで、allowSplitBtVer、allowSplitBtHorは以下の処理により導出する。
【０２７５】
以下の何れかが真の場合、allowBtSplitを偽（FALTH）とする。
・cbSize <= MinBtSizeY
・cbWidth > MaxBtSizeY
・cbHeight > MaxBtSizeY
・mttDepth >= MaxMttDepth + depthOffset
上記以外で以下の全てが真の場合、allowBtSplitを偽とする。
・btSplit = SPLIT_BT_VER
・y0 + cbHeight > hTile[TileId]
上記以外で以下の全てが真の場合、allowBtSplitを偽とする。
・btSplit = SPLIT_BT_HOR
・x0 + cbWidth > wTile[TileId]
上記以外で以下の全てが真の場合、allowBtSplitを偽とする。
・mttDepth > 0
・partIdx = 1
・MttSplitMode[ x0 ][ y0 ][ mttDepth - 1 ] = parallelTtSplit
上記以外の場合、allowBtSplitを真とする。
・allowBtSplit = TRUE
ここでcbSize、parallelTtSplitは、以下のように設定する。
【０２７６】
SPLIT_BT_VER(allowSplitBtVer)の場合、cbSize=cbWidth、parallelTtSplit= SPLIT_TT_VER
SPLIT_BT_HOR(allowSplitBtHor)の場合、cbSize=cbHeight、parallelTtSplit=SPLIT_TT_HOR
なお、allowSplitTtVer、allowSplitTtHorは以下の処理により導出する。
【０２７７】
以下の何れかが真の場合、allowTtSplit(allowTtSplirHor, allowTtSplirVer)を偽（FALTH）とする。
・cbSize <= 2 * MinTtSizeY
・cbWidth > MaxTtSizeY
・cbHeight > MaxTtSizeY
・mttDepth >= MaxMttDepth + depthOffset
・x0 + cbWidth > wTile[TileId]
・y0 + cbHeight > hTile[TileId]
上記以外の場合、allowTtSplit(allowTtSplirHor, allowTtSplirVer)を真とする。
・allowTtSplit = TRUE
ここでcbSizeは、以下のように設定する。
【０２７８】
SPLIT_TT_VER(allowSplitTtVer)の場合、cbSize=cbWidth
SPLIT_TT_HOR(allowSplitTtHor)の場合、cbSize=cbHeight
すなわち、CT右座標がタイルサイズ幅を超えるか、CT下座標がタイルサイズ高さを超えいるかに応じて、MT分割フラグを符号化するか否かを決定する。
【０２７９】
（S1481）CT情報復号部3021はMT分割フラグmtt_split_cu_flagを復号する。
【０２８０】
（S1482）CT情報復号部3021は符号化データからMT分割フラグmtt_split_cu_flagを復号せず、以下のように導出する。
【０２８１】
以下のいずれかが真の場合、mtt_split_cu_flagに１を導出する。
・x0 + cbWidth > wTile[TileId]
・x0 + cbHeight > hTile[TileId]
上記以外の場合、mtt_split_cu_flagに０を導出する。すなわち、タイル内座標におけるＣＴの右端および下端座標がタイルサイズを超える場合には、MT分割フラグを復号しない。
【０２８２】
すなわち、CT右座標がタイルサイズ幅を超えるか、CT下座標がタイルサイズ高さを超えいるかに応じて、TT分割フラグを符号化するか否かを決定する。
【０２８３】
（S1490）CT情報復号部3021は、MT分割フラグsplit_mt_flagが０以外の場合には、S1491に遷移する。それ以外の場合には、CT情報復号部3021は対象CTを分割せず、処理を終了する（CUの復号に移行する）。
【０２８４】
（S1491）CT情報復号部3021はMT分割を行う。BT分割もしくはTT分割が可能な場合（allowSplitBtHor || allowSplitTtHor ) || ( allowSplitBtVer || allowSplitTtVer )）、MT分割の方向を示すフラグmtt_split_cu_vertical_flagを復号する。復号した分割方法mtt_split_cu_vertical_flagにおいて、BT分割とTT分割の両者が可能な場合（( allowSplitBtVer  &&  allowSplitTtVer  &&  mtt_split_cu_vertical_flag ) || ( allowSplitBtHor
&&  allowSplitTtHor  &&  !mtt_split_cu_vertical_flag）には、MT分割が２分木であるか３分木であるかを示すシンタックス要素mtt_split_cu_binary_flagを復号する。CT情報復号部3021は、分割されたＣＴの左上座標が対象タイル内である場合に、符号化ツリーを処理する。ＣＴの左上座標は2分木では、(x0, y1)もしくは(x1, y0)、3分木では(x0, y1), (x0, y2)もしくは(x1, y0), (x2, y0)である。ここで先頭CTの左上座標(x0, y0)がタイル外にある場合には分割自体が行われないため、(x0, y0)は常にタイル内であると仮定する。
【０２８５】
CT情報復号部3021は、MT分割タイプsplit_mt_typeが０（２分割）、かつ、MT分割方向split_dir_flagが１（水平分割）の場合は、以下の２つのCTを復号（BT分割情報復号）する。タイル内でのCT(x0,y1)の下座標y1がタイルサイズhTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの下座標y1がタイルサイズhTile[TileId]以上のCTは復号しない。
【０２８６】
multi_type_tree(x0,y0,cbWidth,cbHeight/2,mttDepth,depthOffset,0,treeType)
if (y1 < hTile[TileId])
multi_type_tree(x0,y1,cbWidth,cbHeight/2,mttDepth+1,depthOffset,1,treeType)
一方、MT分割方向split_dir_flagが０（垂直分割）の場合は、以下の２つのCTを復号（BT分割情報復号）する。タイル内でのCT(x1,y0)の右座標x1がタイルサイズwTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの右座標x1がタイルサイズwTile[TileId]以上のCTは復号しない。
【０２８７】
multi_type_tree(x0,y0,cbWidth/2,cbHeight,mttDepth+1,depthOffset,0,treeType)
if (x1 < wTile[TileId])
multi_type_tree(x1,y0,cbWidth/2,cbHeightY,mttDepth+1,depthOffset,1,treeType)ここで、(x1,y1)は以下の式で導出される。
【０２８８】
x1 = x0+(cbWidth/2)
y1 = y0+(cbHeight/2)
さらに、log2CbWidth、または、log2CbHeightを下式のように更新する。
【０２８９】
CbWidth = CbWidth/2
CbHeight = CbHeight/2
CT情報復号部3021は、MT分割タイプsplit_mt_typeが１（３分割）を示す場合には、３
つのCTを復号（TT分割情報復号）する。
【０２９０】
MT分割方向split_dir_flagが１（水平分割）の場合は、以下の３つのCTを復号する。タイル内でのi=0, 1の各CT(x0, yi)の下座標yiがタイルサイズhTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの下座標yiがタイルサイズhTile[TileId]以上のCTは復号しない。
【０２９１】
multi_type_tree(x0,y0,cbWidth,cbHeight/4,mttDepth+1,depthOffset,0,treeType)
if (y1 < hTile[TileId])
multi_type_tree(x0,y1,cbWidth,cbHeight/2,mttDepth+1,depthOffset,1,treeType)
if (y2 < hTile[TileId])
multi_type_tree(x0,y2,cbWidth,cbHeight/4,mttDepth+1,depthOffset,2,treeType)
一方、MT分割方向split_dir_flagが１（垂直分割）の場合は、以下の３つのCTを復号（TT分割情報復号）する。タイル内でのi=0, 1の各CT(xi, y0)の右座標xiがタイルサイズwTile[TileId]未満のCTを復号する。逆に、タイル内での各CTの右座標xiがタイルサイズwTile[TileId]以上のCTは復号しない。
【０２９２】
multi_type_tree(x0,y0,cbWidth/4,cbHeight,mttDepth+1,depthOffset,0,treeType)
if (x1 < wTile[TileId])
multi_type_tree(x1,y0,cbWidth/2,cbHeight,mttDepth+1,depthOffset,1,treeType)
if (x2 < wTile[TileId])
multi_type_tree(x2,y0,cbWidth/4,cbHeight,mttDepth+1,depthOffset,2,treeType)
ここで、(x1,y1)、(x2,y2)は、以下の式のように、導出される。
【０２９３】
x1 = x0+(cbHeight/4)
y1 = y0+(3*cbHeight/4)
x2 = x0+(cbWidth/4)
y2 = y0+(3*cbWidth/4)
CT情報復号部3021は、下位のCTにおいても、更新された左上座標、CTの幅及び高さ、MT深度を用いて、S1471から開始されるBT分割情報復号、あるいは、TT分割情報復号を継続する。
【０２９４】
また、CT情報復号部3021は、MT分割フラグsplit_mt_flagが０の場合、すなわちQT分割もMT分割も行われない場合には、CU復号部3022でCU（coding_unit(x0,y0,cbWidth,cbHeight,treeType)）を復号する。
【０２９５】
以上のように、タイル内で表現される各CUの左上座標(xi, yi)をタイルサイズ(wTile, hTile)と比較することで、分割フラグを復号し、各CTを復号する。これによって、タイルサイズがCTUサイズの整数倍ではない場合においても、無駄な分割フラグ、無駄なCTを復号することなく、効率的にCU分割を行うことが可能であるという効果を奏する。また、タイル内座標系を用いて、CU分割を行うことにより、画面内座標系からタイル内座標系への変換を行うことなく、簡単な処理でCU分割を行うことが可能であるというさらなる効果を奏する。
【０２９６】
また、パラメータ復号部302は、図示しないインター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、図示しないインター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
【０２９７】
（フレキシブルタイルにおけるマルチラインイントラ予測）
図35はマルチラインイントラ予測を示す図である。イントラ予測パラメータ復号部304
及びイントラ予測パラメータ符号化部113は、マルチラインイントラ予測パラメータを復号もしくは符号化する。イントラ予測画像生成部310においては、シンタックス要素intra_luma_ref_idxに応じて、対象ブロック境界から隣接する参照画素のうち、どのラインを参照するかを選択する。例えば図35(a)のように、intra_luma_ref_idxが0, 1, 2の場合、参照ピクチャのラインを示すインデックスIntraLumaRefLineIdx(refIdx)を0, 1, 3に設定する。つまり、対象ブロックからみて近い順に0, 1, 3のラインを参照する。
【０２９８】
図35(b)は対象ブロックのY座標がCTU境界に接する場合を示す。この場合には、シンタックス要素intra_luma_ref_idxを復号せずに0を導出(infer)する。
【０２９９】
図36は、ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合における、マルチラインイントラ予測の処理を示すフローチャートである。図41（ａ）は、シンタックステーブル例である。
【０３００】
Ｓ４００１：ヘッダ復号部3020、ヘッダ符号化部1110は、ＣＴＵサイズ以下を単位とするタイルサイズ（ＣＴＵサイズの整数倍に限定しないタイルサイズ）を復号もしくは符号化する。例えば既に説明したように、tile_unit_size_idcを復号してタイル単位サイズwUnitTileあるいはhUnitTileを導出し、wUnitTileあるいはhUnitTileの倍数からなるタイルサイズを復号してもよい。
【０３０１】
Ｓ４００２：CT情報復号部3021、CT情報符号化部1111（ＣＴ分割部）は、タイル内座標系を用いて、CT分割を行う。例えば、既に説明したように図31〜図33に示すシンタックス構成を用いて、CT分割を行う。このとき、CTの左上座標(x0, y0)、つまりQT分割coding_quadtree(x0, y0, …)、MTT分割multi_type_tree(x0, y0, …)の引数である(x0, y0)はタイル左上座標を原点とする座標を用いる。また、分割シンタックスqt_split_cu_flag、mtt_split_cu_flagはタイル内座標(x0, y0)とタイルサイズwTile、hTileを参照して、復号あるいは符号化の有無を判定する。
【０３０２】
Ｓ４００４：イントラ予測パラメータ復号部304とイントラ予測パラメータ符号化部113は、タイル内座標系の対象ブロックの座標値(x0, y0)を用いて、対象ブロックがCTU境界より下であるか否かを判定する。(y0 % ctuSize) > 0の場合に、CTU境界より下と判定する。対象ブロックがCTU境界より下の場合には、Ｓ４００５に遷移して、イントラ参照ラインインデックスintra_luma_ref_idxを復号または符号化する。それ以外、対象ブロックがCTU境界と接している場合にはintra_luma_ref_idxを復号せずに0と導出(infer)する。
【０３０３】
Ｓ４００５：イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、イントラ参照ラインインデックスintra_luma_ref_idxを復号もしくは符号化する。
【０３０４】
なお、イントラ予測においては、イントラ参照ラインインデックスintra_luma_ref_idxの他に、推定イントラ予測モードMostProbableMode（MPM）の一つであるか否かを示すフラグintra_luma_mpm_flag、MPMを選択するインデックスintra_luma_mpm_idx、MPMでない場合のイントラ予測モードを示すインデックスintra_luma_mpm_remainderをさらに復号あるいは符号化してもよい。
【０３０５】
イントラ予測画像生成部310は、導出されたIntraLumaRefLineIdx(refIdx)を用いて、以下の範囲の参照ピクチャサンプルp[x][y]を導出する。
【０３０６】
p[x][y] with x = -1-refIdx, y = -1-refIdx..refH-1 and x = -refIdx..refW-1, y =
-1-refIdx
ここでrefW, refHは、以下の式で導出する。
【０３０７】
refW = (nTbH>nTbW) ? (nTbW+(nTbH>>whRatio)+Ceil(nTbH/32)) : (nTbW*2)
refH = (nTbW>nTbH) ? (nTbH+(nTbW>>whRatio)+Ceil(nTbW/32)) : (nTbH*2)
ここで、nTbW, nTbHは対象ブロックのサイズ、whRatioは、Min(Abs(Log2(nTbW/nTbH), 2)で導出される値で、対象ブロックのサイズの縦横比が大きくなるほど大きくなる値で、正方形の場合に0、nTbH:nTbWが1:2の場合に1, 1:4の場合に2となる値である。
【０３０８】
イントラ予測画像生成部310は、参照ピクチャサンプルp[x][y]を用いて予測画像predSamplesを生成する。例えばプレーナモードは以下の式で導出してもよい。
predV[x][y] = ((nTbH-1-y)*p[x][-1]+(y+1)*p[-1][nTbH])<<Log2(nTbW)
predH[x][y] = ((nTbW-1-x)*p[-1][y]+(x+1)*p[nTbW][-1])<<Log2(nTbH)
predSamples[x][y] = (predV[x][y]+predH[x][y]+nTbW*nTbH)>>(Log2(nTbW)+Log2(nTbH)+1)
以上の構成のイントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113によれば、タイル単位サイズの整数倍のタイルサイズを復号あるいは符号化し、タイル内座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行い、タイル内座標（対象タイルの左上座標を基準とする対象ブロックの左上座標）を用いてＣＴＵ境界の判定を行うことで、タイルサイズがＣＴＵの整数倍ではない場合においても、容易にＣＴＵ境界において追加のラインメモリを利用することなく、マルチラインイントラ予測が可能となる効果を奏する。
【０３０９】
図37は、ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合における、マルチラインイントラ予測の処理を示すフローチャートである。図41（ｂ）は、シンタックステーブル例である。
【０３１０】
Ｓ４１０１：ヘッダ復号部3020、ヘッダ符号化部1110は、ＣＴＵサイズ以下を単位とするタイルサイズ（ＣＴＵサイズの整数倍に限定しないタイルサイズ）を復号もしくは符号化する。例えば既に説明したように、tile_unit_size_idcを復号してタイル単位サイズwUnitTileあるいはhUnitTileを導出し、wUnitTileあるいはhUnitTileの倍数からなるタイルサイズを復号してもよい。
【０３１１】
Ｓ４１０２：CT情報復号部3021、CT情報符号化部1111（ＣＴ分割部）は、ピクチャ内座標系を用いて、CT分割を行う。例えば、既に説明したように図27〜図29に示すシンタックス構成を用いて、CT分割を行う。このとき、CTの左上座標(x0, y0)、つまりQT分割coding_quadtree(x0, y0, …)、MTT分割multi_type_tree(x0, y0, …)の引数である(x0, y0)はピクチャ左上座標を原点とする座標を用いる。また、分割シンタックスqt_split_cu_flag、mtt_split_cu_flagは、ピクチャ内座標(x0, y0)とタイル左上座標xTile, yTile、タイルサイズwTile、hTileを参照して判定する。例えば
if (x1-xTile[TileId] < wTile[TileId])
coding_quadtree( x1, y0, log2CbSize-1, cqtDepth+1, treeType)
if (y1-yTile[TileId] < hTile[TileId])
coding_quadtree( x0, y1, log2CbSize-1, cqtDepth+1, treeType)
このように、ピクチャ内座標からタイル左上座標を引くことで導出されたタイル内座標をもとに、CT分割を行ってもよい。
【０３１２】
Ｓ４１０３：イントラ予測パラメータ復号部304とイントラ予測パラメータ符号化部113は、ピクチャ内座標からタイル内座標に変換する。ピクチャ内座標(x0, y0)からピクチャ内座標におけるタイル左上座標(xTile, yTile)をひくことで、タイル内座標(x0-xTile, y0-yTile)を導出する。このとき、Ｙ座標のみ導出してもよい。
【０３１３】
Ｓ４１０４：イントラ予測パラメータ復号部304とイントラ予測パラメータ符号化部113は、タイル内座標系の対象ブロックの座標値(x0-xTile, y0-yTile)を用いて、対象ブロックがCTU境界より下であるか否かを判定する。((y0-yTile)%ctuSize)>0の場合に、CTU境界より下と判定される。CTU境界より下の場合には、Ｓ４１０５に遷移して、イントラ参照ラインインデックスintra_luma_ref_idxを復号あるいは符号化する。それ以外、対象ブロックがCTU境界と接している場合にはintra_luma_ref_idxを復号せず0として導出(infer)する。言い換えると、タイル内座標系の対象ブロックの座標値である対象タイルの左上座標に対する左上輝度ブロックの左上座標(xCb, yCb)を用いて、CTU境界判定を(yCb%ctuSize)>0で行ってもよい。
【０３１４】
Ｓ４１０５：イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、イントラ参照ラインインデックスintra_luma_ref_idxを復号もしくは符号化する。
【０３１５】
なお、イントラ予測においては、イントラ参照ラインインデックスintra_luma_ref_idxの他に、MPMであるか否かを示すフラグintra_luma_mpm_flag、MPMを選択するインデックスintra_luma_mpm_idx、MPMでない場合のイントラ予測モードを示すインデックスintra_luma_mpm_remainderをさらに復号あるいは符号化してもよい。つまり、タイル内座標系の対象ブロックの座標値である、対象タイルの左上座標に対する輝度ブロックの左上座標(xCb, yCb)を用いて、CTU境界判定を(yCb%ctuSize)>0で行ってもよい。
【０３１６】
イントラ予測画像生成部310は、IntraLumaRefLineIdx(refIdx)を用いて、参照ピクチャサンプルp[x][y]を導出し、導出した参照ピクチャサンプルp[x][y]から予測画像を導出する。
【０３１７】
以上の構成のイントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113によれば、タイル単位サイズの整数倍のタイルサイズを復号あるいは符号化し、ピクチャ内座標とタイル左上座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行い、ピクチャ内座標（対象ピクチャの左上座標を基準とする対象ブロックの左上座標）からタイル内座標（対象タイルの左上座標を基準とする対象ブロックの左上座標）に変換してＣＴＵ境界の判定を行うことで、タイルサイズがＣＴＵの整数倍ではない場合においても、正確にＣＴＵ境界判定が可能となり追加のラインメモリを利用することなく、マルチラインイントラ予測が可能となる効果を奏する。
【０３１８】
（MPM導出）
イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、左上座標(xCb, yCb)、サイズ（cbWidth, cbHeight）の対象ブロックの左と上に各々隣接する隣接ブロックA, Bの位置(xNbA, yNbA)、(xNbB, yNbB)を以下で導出する。
【０３１９】
(xNbA, yNbA) = (xCb-1, yCb+cbHeight-1)
(xNbA, yNbA) = (xCb+cbWidth-1, yCb-1)
イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、ブロックA, Bのイントラ予測モードである隣接イントラ予測モードcandIntraPredModeA、candIntraPredModeBを導出する。具体的には、X=AもしくはBにおいて、以下の条件が１つでも真の場合に、隣接イントラ予測モード（candIntraPredModeA, candIntraPredModeB）にプレーナモードを設定する。
・Xの位置(xNbX, yNbX)が画面外やタイル外であり利用可能（available）ではない。
・Xの位置(xNbX, yNbX)の予測モードCuPredModeがイントラ（MODE_INTRA）ではない。
・Xが上の隣接ブロックBであり、XのY座標(yCb)がCTU境界よりも上にある。
【０３２０】
上記以外の場合、Xの位置(xNbX, yNbX)のイントラ予測モードを隣接予測モードとして
設定する。なお、フレキシブルタイルの場合のCTU境界判定については後述する。
【０３２１】
candIntraPredModeX = IntraPredModeY[xNbX][yNbX]
イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、以下の式でMPMリストcandModeListを導出しても良い。
最初に以下の式で初期リストを導出する。
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = !candIntraPredModeA
candModeList[ 2 ] = INTRA_ANGULAR50
candModeList[ 3 ] = INTRA_ANGULAR18
candModeList[ 4 ] = INTRA_ANGULAR46
candModeList[ 5 ] = INTRA_ANGULAR54
もしcandIntraPredModeBとcandIntraPredModeAが等しい場合には、以下を行う。
【０３２２】
candIntraPredModeAが１より大きい場合、以下のようにリストを更新する。3, 4, 5のエントリには、candIntraPredModeAに対して-1, +1, -2のイントラ予測モードが格納される。
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = INTRA_PLANAR
candModeList[ 2 ] = INTRA_DC
candModeList[ 3 ] = 2+((candIntraPredModeA+62)%65)
candModeList[ 4 ] = 2+((candIntraPredModeA-1)%65)
candModeList[ 5 ] = 2+((candIntraPredModeA+61)%65)
上記以外（もしcandIntraPredModeBとcandIntraPredModeAが等しくない場合）、当該２つの隣接予測モードをエントリ0, 1に格納する。
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = candIntraPredModeB
biggerIdx = candModeList[0]>candModeList[1] ? 0 : 1
さらに、candIntraPredModeAとcandIntraPredModeBが両方とも１より大きい場合（２つの隣接予測モードが両方ともAngular予測（方向予測）の場合）、以下のようにリストを更新する。
candModeList[ 2 ] = INTRA_PLANAR
candModeList[ 3 ] = INTRA_DC
さらに、candModeList[biggerIdx]-candModeList[!biggerIdx]が64もしくは1の場合（つまり２つの隣接予測モードの違いが-1もしくは1の場合）、以下を行い、4と5のエントリに、隣接予測モードの-2, +2のイントラ予測モードを格納する。
candModeList[ 4 ] = 2+((candModeList[biggerIdx]+62)%65)
candModeList[ 5 ] = 2+((candModeList[biggerIdx]-1)%65)
candModeList[biggerIdx]-candModeList[!biggerIdx]が64もしくは1以外の場合、以下を行い、4と5のエントリに、隣接予測モードの-1, +1のイントラ予測モードを格納する。
candModeList[ 4 ] = 2+((candModeList[biggerIdx]+61)%65)
candModeList[ 5 ] = 2+(candModeList[biggerIdx]%65)
上記以外で、candIntraPredModeAとcandIntraPredModeの和が２以上の場合（２つの隣接予測モードがDCモードとプレーナモードではない場合）、以下を行う。3, 4と5のエントリに、隣接予測モードの-1, +1, -2のイントラ予測モードを格納する。
candModeList[ 2 ] = !candModeList[!biggerIdx]
candModeList[ 3 ] = 2+((candModeList[biggerIdx]+62)%65)
candModeList[ 4 ] = 2+((candModeList[biggerIdx]-1)%65)
candModeList[ 5 ] = 2+((candModeList[biggerIdx]+61)%65)
（フレキシブルタイルにおけるMPM導出における隣接イントラ予測モードの導出）
図42は、ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合における、MPM導出処理を示すフローチャートである。Ｓ５００１、Ｓ５００２は、Ｓ４００１、Ｓ４００２と同じ処理であるため説明を省略する。
【０３２３】
Ｓ５００４：イントラ予測パラメータ復号部304とイントラ予測パラメータ符号化部113は、タイル内座標系の対象ブロックの座標値(xCb, yCb)を用いて、隣接ブロックXのY座標yCbがCTU境界よりも上にあるかを判定する。
【０３２４】
(yCb-1)<((yCb>>CtbLog2SizeY)<<CtbLog2SizeY)
なお、上記の判定式にさらに、以下の判定式の何れかが真の場合を加えてもよい。
・Xの位置が画面外やタイル外であり利用可能（available）ではない。
・Xの位置(xNbX, yNbX)の予測モードCuPredModeがイントラ（MODE_INTRA）ではない。
【０３２５】
Ｓ５００５： Xの位置(xNbX, yNbX)のイントラ予測モードを隣接予測モードに設定する。
【０３２６】
candIntraPredModeX = IntraPredModeY[xNbX][yNbX]
イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、以下の条件が真の場合に、隣接イントラ予測モード（candIntraPredModeA, candIntraPredModeB）にプレーナモードを設定する。
・Xが上の隣接ブロックBであり、XのY座標 (yCb)がCTU境界よりも上にある。
【０３２７】
以上の構成のイントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113によれば、タイル単位サイズの整数倍のタイルサイズを復号あるいは符号化し、タイル内座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行い、タイル内座標（対象タイルの左上座標を基準とする対象ブロックの左上座標）を用いてＣＴＵ境界の判定を行うことで、タイルサイズがＣＴＵサイズの整数倍ではない場合においても、ラインメモリを利用することなく、ＭＰＭを導出することが可能となる効果を奏する。
【０３２８】
図43は、ピクチャをCTUの整数倍に制限されないサイズのタイルに分割する場合における、MPM導出処理を示すフローチャートである。Ｓ５１０１、Ｓ５１０２、Ｓ５１０３は、Ｓ４１０１、Ｓ４１０２、Ｓ４１０３と同じ処理であるため説明を省略する。
【０３２９】
Ｓ５１０４：イントラ予測パラメータ復号部304とイントラ予測パラメータ符号化部113は、タイル内座標系の対象ブロックの座標値(x0-xTile, y0-yTile)を用いて、隣接ブロックXのY座標(yCb-yTile)がCTU境界よりも上にあるかを判定する。
【０３３０】
(yCb-yTile-1) < ((yCb-yTile)>>CtbLog2SizeY)<<CtbLog2SizeY
なお、上記の判定式にさらに、以下の判定式の何れかが真の場合を加えてもよい。
・Xの位置が画面外やタイル外であり利用可能（available）ではない。
・Xの位置(xNbX, yNbX)の予測モードCuPredModeがイントラ（MODE_INTRA）ではない。
【０３３１】
Ｓ５１０５：Xの位置(xNbX, yNbX)のイントラ予測モードを隣接予測モードに設定する。
【０３３２】
candIntraPredModeX = IntraPredModeY[xNbX][yNbX]
・イントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113は、以下の条件が真の場合に、隣接イントラ予測モード（candIntraPredModeA, candIntraPredModeB）にプレーナモードを設定する。
Xが上の隣接ブロックBであり、XのY座標(yCb)がCTU境界よりも上にある。
【０３３３】
以上の構成のイントラ予測パラメータ復号部304、イントラ予測パラメータ符号化部113によれば、タイル単位サイズの整数倍のタイルサイズを復号あるいは符号化し、ピクチャ内座標とタイル左上座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行い、ピクチャ内座標からタイル内座標に変換してＣＴＵ境界の判定を行うことで、タイルサイズがＣＴＵの整数倍ではない場合においても、ラインメモリを利用することなく、MPM導出が可能となる効果を奏する。
【０３３４】
エントロピー復号部301は、インター予測パラメータ（予測モードpredMode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX）をインター予測パラメータ復号部303に出力する。また、イントラ予測パラメータ（輝度予測モードIntraPredModeY、色差予測モードIntraPredModeC）をイントラ予測パラメータ復号部304に出力する。エントロピー復号部301は、量子化変換係数を逆量子化・逆変換部311に出力する。
【０３３５】
（CCLM予測）
イントラ予測画像生成部３１０（CCLM予測部）は、輝度から色差を線形予測するCCLM予測(Chroma Component Liner Model)を行ってもよい。CCLM予測では、対象ブロックの隣接画素（上と左に隣接する）において輝度と色差の線形予測関係（線形予測パラメータa, b）を導出し、対象ブロックの輝度画像から、色差画像をy=a*x+bの関係式で導出する。より具体的には、輝度をダウンサンプルして得られる画素値pDsY[x][y]と予測パラメータa,
b及び所定のシフト値kから以下の式で、色差の予測画像predSamples[][]を導出する。
【０３３６】
predSamples[x][y] = Clip1C(((pDsY[x][y]*a)>>k)+b)
（フレキシブルタイルにおけるCCLM予測）
タイルのサイズは、既に説明したように、タイル単位サイズTileUnitSizeYの整数倍のサイズとして復号もしくは符号化する。またＣＴ分割部は、ピクチャ内座標系を用いて、ピクチャ内座標とタイル左上座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行う。もしくは、タイル内座標系を用いて、タイル内座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行う。
【０３３７】
CCLM予測部は、タイル内座標系の対象ブロックの座標値である対象タイルの左上座標に対する色差ブロックの左上座標(xCbC, yCbC)を用いて、CTU境界判定を行う。
【０３３８】
bCTUboudary = yCbC & ((1<<(CtbLog2SizeY-1)-1))
また輝度と色差のサンプリングが2:1である4:2:0以外のサンプルを考慮して以下で導出しても良い。SubHeightCが輝度と色差のサンプル比である場合、
bCTUboudary = (SubHeightC==2) ? (yCbC & ((1<<(CtbLog2SizeY-1)-1)) : ((1<<(CtbLog2SizeY)-1))
bCTUboudary = yCbC & ((1<<(CtbLog2SizeY-1)-(SubHeightC-1)))
またchroma_format_idcを用いて切り替えても良い。
【０３３９】
なお、タイル内の輝度左上座標(xCb, yCb)を用いて以下の式で導出してもよい。
【０３４０】
bCTUboudary = yCb & ((1<<(CtbLog2SizeY))-1)
ここで、左上色差ブロックの左上座標(xCbC, yCbC)は、タイル左上座標を基準と、左上輝度ブロック座標(xCb, yCb)から導出してもよい。
【０３４１】
ピクチャ内座標とタイル左上座標とタイルサイズを用いて４分木、２分木、３分木のマ
ルチツリー分割を行い、対象画面の左上座標を基準とする対象ブロックの輝度左上座標(xCbInPic, yCbInPic)と、対象画面の左上座標を基準とする対象タイルの輝度左上座標(xTile, yTile)からタイル内の左上輝度ブロック座標(xCb, yCb)を導出してもよい。
【０３４２】
xCb = xCbInPic-xTile[TileId]
yCb = yCbInPic-yTile[TileId]
また、タイル内座標系を用いて、タイル内座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行う場合には、対象ブロックの左上座標をそのまま(xCb, yCb)に用いる。
【０３４３】
CCLM予測部は、隣接輝度画像pTopDsYを以下の手順で導出する。CCLM予測部は、上画素が参照可能(availT = TRUE)であり、CTU境界ではない（bCTUboundary = FALSE）場合にはx=1..nTbW-1に対して以下の式で導出する。つまりbCTUboundary = FALSEの場合にはpY[x][y]のうちpY[x][-1]とpY[x][-2]の２ラインを利用する。
pTopDsY[x] = (pY[2*x-1][-2]+pY[2*x-1][-1]+2*pY[2*x][-2]+2*pY[2*x][-1]+pY[2*x+1][-2]+pY[2*x+1][-1]+4)>>3
ここで、pY[][]は、対象ブロックに隣接する輝度画像である。
【０３４４】
左上座標が利用可能であれば、さらに以下の式で導出しても良い。
pTopDsY[0]=(pY[-1][-2]+pY[-1][-1]+2*pY[0][-2]+2*pY[0][-1]+pY[1][-2]+pY[1][-1]+4)>>3
左上隣接座標（添字ｘ、ｙがともに負で示される座標）が利用可能でなければ、以下の式で導出しても良い。
pTopDsY[0] = (pY[0][-2]+pY[0][-1]+1)>>1
CCLM予測部は、隣接輝度画像pTopDsYを以下の手順で導出する。CCLM予測部は、上画素が参照可能(availT = TRUE)であり、CTU境界である（bCTUboundary = TRUW）場合には、x=1..nTbW-1に対して以下の式で導出する。
pTopDsY[x] = (pY[2*x-1][-1]+2*pY[2*x][-1]+pY[2*x+1][-1]+2)>>2
つまりbCTUboundary = TRUEの場合には、pY[x][y]のうちpY[x][-1]の１ラインのみを利用する。
【０３４５】
左上隣接座標が利用可能であれば、さらに以下の式で導出しても良い。
pTopDsY[0] = (pY[-1][-1]+2*pY[0][-1]+pY[1][-1]+2)>>2
左上隣接座標が利用可能でなければ、さらに以下の式で導出しても良い。
pTopDsY[0] = pY[0][-1]
CCLM予測部は、さらに隣接輝度画像pLeftDsY[]を導出する。
【０３４６】
CCLM予測部は、隣接輝度画像pTopDsYの最小値MinLumaと最大値MaxLumaとその位置における色差画素値ChromaForMinLuma、ChromaForMaxLumaを導出する。
【０３４７】
CCLM予測部は、ChromaForMinLuma、ChromaForMaxLumaの差を、MinLumaとMaxLumaの差で割ることで傾きaを導出する。より具体的には整数演算のために、以下の式でCCLMパラメータaを導出する。
【０３４８】
shift = (BitDepthC>8) ? BitDepthC-9 : 0
add = shift ? 1<<(shift-1) : 0
diff = (MaxLuma-MinLuma+add)>>shift
k = 16
diffが正の場合、CCLM予測部は以下の式を用いてaを導出し、それ以外ではa=0とする。
【０３４９】
div = ((ChromaForMaxLuma-ChromaForMinLuma)*(Floor((65536*65536)/diff)-Floor(65536/diff)*65536)+32768)>>16
a = (((ChromaForMaxLuma-ChromaForMinLuma)*Floor(65536/diff)+div+add)>>shift)
さらに、CCLM予測部はbを導出する。
b = ChromaForMinLuma-((a*MinLuma)>>k)
以上の構成のCCLM予測部によれば、タイル単位サイズの整数倍のタイルサイズを復号あるいは符号化し、ピクチャ内座標とタイル左上座標とタイルサイズを用いて４分木、２分木、３分木のマルチツリー分割を行いピクチャ内座標からタイル内座標（対象タイルの左上座標を基準とする対象ブロックの左上座標）に変換してＣＴＵ境界の判定を行う、もしくは、タイル内座標を用いて、４分木、２分木、３分木のマルチツリー分割を行い、タイル内座標を用いてＣＴＵ境界判定を行う。これによりタイルサイズがＣＴＵの整数倍ではない場合においても、ラインメモリを利用することなく、CCLM予測が可能となる効果を奏する。
【０３５０】
（マージ予測）
図38(a)は、本実施形態に係るマージ予測パラメータ導出部3036の構成を示す概略図である。マージ予測パラメータ導出部3036は、マージ候補導出部30361、マージ候補選択部30362を備える。なお、マージ候補は、予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLXを含んで構成され、マージ候補リストに格納される。マージ候補リストに格納されたマージ候補には、所定の規則に従ってインデックスが割り当てられる。
【０３５１】
マージ候補導出部30361は、復号済の隣接ブロックの動きベクトルと参照ピクチャインデックスrefIdxLXをそのまま用いてマージ候補を導出する。それ以外に、マージ候補導出部30361は、後述する空間マージ候補導出処理、時間マージ候補導出処理、結合マージ候補導出処理、およびゼロマージ候補導出処理、時空間マージ候補導出処理を適用してもよい。
【０３５２】
（空間マージ候補導出処理）
空間マージ候補導出処理として、マージ候補導出部30361は、所定の規則に従って、予測パラメータメモリ307が記憶している予測パラメータ（予測リスト利用フラグpredFlagLX、動きベクトルmvLX、参照ピクチャインデックスrefIdxLX）を読み出し、マージ候補に設定する。参照ピクチャの指定方法は、例えば、対象ブロックから予め定めた範囲内にある隣接ブロック（例えば、対象ブロックの左端L、左下端BL、左上端AL、上端A、右上端ARにそれぞれ接するブロックの全部または一部）のそれぞれに係る予測パラメータである。各々のマージ候補をL, BL, AL, A, ARと呼ぶ。
【０３５３】
（時間マージ候補導出処理、時間動きベクトル導出処理）
時間マージ導出処理として、マージ候補導出部30361は、対象ブロックの右下CBR、あるいは、中央の座標を含む参照画像中のブロックCの予測パラメータを、予測パラメータメモリ307から読み出してマージ候補とし、マージ候補リストmergeCandList[]に格納する。
【０３５４】
図18は、参照画像中のブロックC、CBRを示す図である。ブロックCBR（ブロックBR）を優先してマージ候補リストmergeCandList[]に加え、ブロックCBRが動きベクトルを持たない（例えばイントラ予測ブロック）場合や、ブロックCBRがピクチャ外に位置する場合は、ブロックCの動きベクトルを予測ベクトル候補に加える。動きの異なる可能性が高いコロケートブロックの動きベクトルを予測候補として加えることで、予測ベクトルの選択肢が増え、符号化効率が高まる。参照画像の指定方法は、例えば、スライスヘッダにおいて指定された参照ピクチャインデックスrefIdxLXでも良いし、隣接ブロックの参照ピクチャインデックスrefIdxLXのうち最小のものを用いて指定しても良い。
【０３５５】
例えばマージ候補導出部30361は、ブロックCの位置（xColCtr,yColCtr）とブロックCBRの位置（xColBr、yColBr）を、以下の式で導出してもよい。
【０３５６】
xColCtr = xCb+(bW>>1)
yColCtr = yCb+(bH>>1)
xColBr = xCb+bW
yColBr = yCb+bH
ここで、(xCb,yCb)は対象ブロックの左上座標、(bW,bH)は対象ブロックの幅と高さである。なお、bW, bHは、cbWidth、cbHeightとも記載する。
ブロックCBRが利用可能であればブロックCBRの動きベクトルを利用してマージ候補COLを導出する。ブロックCBRが利用可能でなければブロックCを使用してCOLを導出する。
【０３５７】
（タイル境界を時間マージ候補導出処理の構成）
マージ候補導出部30361（時間動き予測部、時間動きベクトル導出部）は、参照メモリ中の動きベクトルをＣＴＵライン単位で管理し、対象ＣＴＵに必要な範囲のみを内部メモリにフェッチすることが好適である。このときマージ候補導出部30361は、フェッチした領域以外をアクセスしないように、ブロックCBRの位置（xColBr、yColBr）が対象ＣＴＵラインを超える場合にはブロックBRを利用せず、以下の処理によりブロックCを利用する。
【０３５８】
以下、タイル内座標を用いて対象ブロックの左上座標を処理する場合の処理例を示す。以下の処理では、(yCb>>CtbLog2SizeY)==(yColBr>>CtbLog2SizeY)により、同じＣＴＵラインと判定される場合には参照位置（xRef, yRef）に(xColBr, yColBr)を用い、それ以外では(xColCtr, yColCtr)を用いる。さらに、下記の例のように3bit右シフトの後で3bit左シフトすることで8*8単位にアクセスを制限してもよい。なお、参照ピクチャメモリ上の動きベクトルを参照する場合に、タイル左上座標を参照位置に加算し画面内座標の参照位置を導出するが、この動作は、参照位置の量子化（シフト）の前でも後でもよい。
【０３５９】
xColBr = xCbInTile + cbWidth
yColBr = yCbInTile + cbHeight
xColCtr = xCbInTile + (cbWidth>>1)
yColCtr = yCbInTile + (cbHeight>>1)
if (((yCb>>CtbLog2SizeY)==(yColBr>>CtbLog2SizeY)) && (yColBr<hPict) && (xColBr<wPict)) {
// (xColBr, yColBr)を用いて参照ピクチャの動きベクトルを参照する。例えば、下記(xRef, yRef)を参照。
【０３６０】
xRef = ((xColBr>>3)<<3)+xTile[TileId]
yRef = ((yColBr>>3)<<3)+yTile[TileId]
}
else {
// (xColCtr, yColCtr)を用いて参照ピクチャの動きベクトルを参照する。例えば、
xRef = ((xColCtr>>3)<<3)+xTile[TileId]
yRef = ((yColCtr>>3)<<3)+yTile[TileId]
}
図40は、参照ピクチャのタイル分割と対象ピクチャのタイル分割が等しい場合である。この場合には、対象ピクチャ内のCTU座標と、参照ピクチャ内のCTU座標によって、画面内のCTU座標を導出することができる。また、タイル内のＣＴＵラインごとにＭＶメモリを管理する場合において、画面内にあってもタイル内にないＣＴＵラインのＭＶメモリは参
照することが難しい。したがって、本実施形態では参照範囲をタイル内に限定する。図39（ａ）に示す。
【０３６１】
xColBr = xCbInTile+cbWidth
yColBr = yCbInTile+cbHeight
xColCtr = xCbInTile+(cbWidth>>1)
yColCtr = yCbInTile+(cbHeight>>1)
if (((yCb>>CtbLog2SizeY)==(yColBr>>CtbLog2SizeY)) && (yColBr<hTile[TileId]) &&
(xColBr<wTile[TileId])) {
// (xColBr, yColBr)を用いて参照ピクチャの動きベクトルを参照する。例えば、下記(xRef, yRef)を参照。
【０３６２】
xRef = ((xColBr>>3)<<3)+xTile[TileId]
yRef = ((yColBr>>3)<<3)+yTile[TileId]
}
else {
// (xColCtr, yColCtr)を用いて参照ピクチャの動きベクトルを参照する。例えば、
xRef = ((xColCtr>>3)<<3)+xTile[TileId]
yRef = ((yColCtr>>3)<<3)+yTile[TileId]
}
また、上記の処理は独立タイル(independent_tiles_flag=1)の場合に行っても良い。
【０３６３】
タイル境界を超える範囲を参照しないように、座標系として、予測ブロックの座標にタイル左上を原点とするタイル内座標（xCbInTile、yCbInTile）を用い、各参照位置がタイルサイズ（wTile, hTile）を超える場合には参照しないことが適当である。さらに、参照ピクチャメモリ上の動きベクトルを参照する場合に、タイル左上座標を参照位置に加算し画面内座標の参照位置を導出する。図31〜図34に示すように、タイル内座標でCT分割を行うことにより、予測ブロックの左上座標をタイル内座標で導出し、時間予測で参照する位置を判定することにより、ＣＴＵ境界にかかるかどうかを簡単に判定することができる効果を奏する。
【０３６４】
画面内座標を用いて対象ブロックの左上座標を処理する場合の処理例を示す。タイル内座標系を用いて処理する場合と異なり、タイル左上座標を減算してタイル内座標に変換した後(yColBr-yTile, xColBr-xTile)で、タイルサイズ(wTile, hTile)との比較を行い、タイルサイズを超えているか否かを判定する。また、タイル境界の判定においても、タイル内座標の対象ブロックの位置(yCb-yTile[TileId])と参照ブロックの位置(yColBr-yTile[TileId])をＣＴＵサイズの対数CtbLog2SizeYで右シフトすることで判定を行う。
【０３６５】
xColBr = xCbInPic+cbWidth
yColBr = yCbInPic+cbHeight
xColCtr = xCbInPic+(cbWidth>>1)
yColCtr = yCbInPic+(cbHeight>>1)
if ((((yCb-yTile[TileId])>>CtbLog2SizeY)==((yColBr-yTile[TileId])>>CtbLog2SizeY)) && (yColBr<hPict) && (xColBr<wPict)) {
xRef = ((xColBr>>3)<<3)
yRef = ((yColBr>>3)<<3) 
}
else {
xRef = ((xColCtr>>3)<<3)
yRef = ((yColCtr>>3)<<3) 
}
図40は、参照ピクチャのタイル分割と対象ピクチャのタイル分割が等しい場合である。この場合、本実施形態では参照範囲をタイル内に限定する。図39（ｂ）に処理の一例を示す。
【０３６６】
xColBr = xCbInPic+cbWidth
yColBr = yCbInPic+cbHeight
xColCtr = xCbInPic+(cbWidth>>1)
yColCtr = yCbInPic+(cbHeight>>1)
if ((((yCb-yTile[TileId])>>CtbLog2SizeY)==((yColBr-yTile[TileId])>>CtbLog2SizeY)) && ((yColBr-yTile[TileId])<hTile[TileId]) && ((xColBr-xTile[TileId])<wTile[TileId])) {
xRef = ((xColBr>>3)<<3)
yRef = ((yColBr>>3)<<3)
}
else {
xRef = ((xColCtr>>3)<<3)
yRef = ((yColCtr>>3)<<3)
}
上記の処理は、独立タイルの場合に行っても良い。
【０３６７】
予測ブロックの座標を画面内座標からタイル内座標に変換することにより、タイル範囲にあるかどうか、及び、ＣＴＵ境界にかかるかどうかを簡単に判定することができる効果を奏する。
【０３６８】
（仮想CTUラインを用いる方法）
図14は、仮想CTUラインを設定して、参照ピクチャの動きベクトルを参照する場合の参照範囲を示す図である。本構成では、参照ピクチャを仮想のＣＴＵラインに分割し、対象ブロックに対応する仮想ＣＴＵラインの動きベクトルを参照する。
【０３６９】
一つの構成は、参照ピクチャを固定のCTUサイズで分割し、仮想CTUラインを設定する。
【０３７０】
図15は、整数画素ピクチャをCTUの整数倍に制限されないサイズのタイル（フレキシブルタイル）に分割した場合の時間動き予測部の動作を示すフローチャートである。
【０３７１】
Ｓ３００１：画面内座標導出
時間動き予測部は、タイル内座標系の(xCbInTile, yCbInTile)から、画面内座標のＣＴＵ座標(xCtbInPic, yCtbInPic)、右下座標(xColBr, yColBr)と中心座標(xColCtr, yColCtr)を導出する。なお、タイル内座標系でCT分割(QT, BT, TTなどのマルチツリー分割)を行わない場合などタイル内座標系で処理される場合には、タイル内座標系から画面内座標系への変換は省略できる。
xCtbInPic = xCtbInTile+xTile[currTileId]
yCtbInPic = yCtbInTile+yTile[currTileId]
xColBrInPic = xCbInTile+cbWidth+xTile[currTileId]
yColBrInPic = yCbInTile+cbHeight+yTile[currTileId]
xColCtrInPic = xCbInTile+(cbWidth>>1)+xTile[currTileId]
yColCtrInPic = yCbInTile+(cbHeight>>1)+yTile[currTileId]
Ｓ３００３：仮想ＣＴＵライン内判定
画面内座標で、画面内右下座標(xColBrInPic, yColBrInPic)が、仮想CTUライン内であるか否かを判定する。ここでは、さらに右下座標(xColBrInPic, yColBrInPic)が、仮想CT
Uライン内かつ画面内にあるかを判定する。
【０３７２】
判定式＝((yColBrInPic>>CtbLog2SizeY) == (yVirCtb>>CtbLog2SizeY)) && (yColBr<hPict) && (xColBr<wPict)
Ｓ３００４：参照ピクチャの動きベクトル参照
時間動き予測部は、判定式が真の場合には、右下座標の動きベクトルを参照する。ここではさらに座標を8x8などの単位に間引いて参照しても良い。
【０３７３】
((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
Ｓ３００５：判定式が偽の場合には、中心座標(xColCtrInPic, yColCtrInPic)の動きベクトルを参照する。ここではさらに座標を8x8などの単位で間引いて参照しても良い。
【０３７４】
((xColCtrInPic>>3)<<3, (yColCtrInPic>>3)<<3)
さらに、中心座標の動きベクトルを参照する前に、以下の判定式を用いて、参照座標が仮想CTUライン内であるか否かを判定してもよい。
【０３７５】
判定式＝(yColCtrInPic>yVirCtbB)
図16は、仮想CTUラインを設定して、参照ピクチャの動きベクトルを参照する場合の参照範囲を示す図である。本構成では、参照ピクチャをVBSize×VBSizeサイズ単位（Log2VBSize=log2(VBSize)）に分割し、対象ＣＴＵからみて、この区切り位置を参照CTUラインの上側座標yCtbInPicに設定する、この上側座標yCtbInPicから所定の範囲を、参照ピクチャから参照可能な動きベクトルの範囲に設定する。
【０３７６】
図17は、整数画素ピクチャをCTUの整数倍に制限されないサイズのタイル（フレキシブルタイル）に分割した場合の時間動き予測部の動作を示すフローチャートである。
【０３７７】
Ｓ３００１：画面内座標導出
時間動き予測部は、タイル内座標系の(xCbInTile, yCbInTile)から、画面内座標のＣＴＵ座標(xCtbInPic, yCtbInPic)、右下座標(xColBr, yColBr)と中心座標(xColCtr, yColCtr)を導出する。なお、タイル内座標系でCT分割(QT, BT, TTなどのマルチツリー分割)を行わない場合など画面内座標系で処理が行われている場合には、タイル内座標系から画面内座標系への変換は省略できる。
xCtbInTile = (xCbInTile>>Log2VBSize)<<Log2VBSize
yCtbInTile = (yCbInTile>>Log2VBSize)<<Log2VBSize
xCtbInPic = xCtbInTile+xTile[currTileId]
yCtbInPic = yCtbInTile+yTile[currTileId]
xColBrInPic = xCbInTile+cbWidth+xTile[currTileId]
yColBrInPic = yCbInTile+cbHeight+yTile[currTileId]
xColCtrInPic = xCbInTile+(cbWidth>>1)+xTile[currTileId]
yColCtrInPic = yCbInTile+(cbHeight>>1)+yTile[currTileId]
Ｓ３００２：仮想ＣＴＵライン導出
続いて、時間動き予測部は、yCtbInPicをVBSize単位の座標に変換し、仮想CTUラインの上側座標yVirCtbTを導出する。また、所定のサイズ（ここではCTUサイズctuSize）だけ下の位置の下側座標yVirCtbBを設定する。
yVirCtbT = ((yCtbInPic>>VBLog2Size)<<VBLog2Size)
yVirCtbB = ((yCtbInPic>>VBLog2Size)<<VBLog2Size)+ctuSize
なお、VBLog2SizeをCtbLog2SizeYに設定すると、参照ピクチャを固定のＣＴＵサイズ単位で分割した場合と同じ処理となる。
なお、上記では参照範囲をＣＴＵサイズに限定していたが、それより大きいサイズでもよい。例えば、参照ピクチャ上において、対象ＣＴＵサイズ＋M画素の範囲の動きベクトル
を参照する場合は以下の式を用いる。
yVirCtbB = ((yCtbInPic>>VBLog2Size)<<VBLog2Size)+ctuSize+M
例えばM=16。
【０３７８】
Ｓ３００３：仮想ＣＴＵライン内判定
時間動き予測部は、画面内座標で、右下座標(xColBrInPic, yColBrInPic)が、仮想CTUライン内であるか否かを判定する。ここでは、さらに右下座標(xColBrInPic, yColBrInPic)が、仮想CTUライン内かつ画面内にあるかを判定する。仮想CTUライン内の場合には、その参照位置（xColBrInPic,yColBrInPic）の動きベクトルを参照する。
【０３７９】
判定式＝(yColBrInPic<yVirCtbB) && (yColBr<hPict) && (xColBr<wPict)
Ｓ３００４：参照ピクチャの動きベクトル参照
時間動き予測部は、判定式が真の場合には、参照ピクチャの右下座標の動きベクトルを参照する。ここではさらに座標を8x8などの単位で間引いて参照しても良い。
【０３８０】
((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
以下、図示しないが以下の処理を行っても良い。
【０３８１】
Ｓ３００５：参照ピクチャの動きベクトル参照２
時間動き予測部は、判定式が偽の場合には、参照ピクチャの中心座標(xColCtrInPic, yColCtrInPic)の動きベクトルを参照する。ここではさらに座標を8x8などの単位で間引いて参照しても良い。
【０３８２】
((xColCtrInPic>>3)<<3, (yColCtrInPic>>3)<<3)
さらに、中心座標の動きベクトルを参照する前に、以下の判定式を用いて、参照座標が仮想CTUライン内であるか否かを判定してもよい。
【０３８３】
判定式＝(yColCtrInPic<yVirCtbB)
以上の処理の擬似コードは以下のとおりである。
if ((yColBrInPic<yVirCtbB) && (yColBr<hPict) && (xColBr<wPict)) {
(xColBrInPic, yColBrInPic)を用いて動きベクトルを参照する
// 例えば8x8 単位にラウンドした以下の座標でもよい。
【０３８４】
// ((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
}
else if (yColCtrInPic<yVirCtbB) {   // ブロック中心で仮想ＣＴＵライン境界判定
(xColCtr, yColCtr)を用いて動きベクトルを参照する
// 例えば8x8単位にラウンドした以下の座標でもよい。
【０３８５】
// ((xColCtr>>3)<<3, (yColCtr>>3)<<3)
}
以上の構成の時間動き予測部によれば、参照ブロックのピクチャ内座標yColBrInPicと、対象ピクチャのピクチャ内座標から導出した仮想CTU座標yVirCtbBを比較して、参照ブロックの参照可能性を判定する。ここでは、仮想CTU座標yVirCtbBの導出において、仮想CTU座標を、VBSizeの整数倍とするためにVBLog2Sizeによる右シフトと左シフトを行う。さらに、参照ブロックのピクチャ内座標yColBrInPicが、対象ピクチャのピクチャ内座標から導出した仮想CTU座標yVirCtbBよりも小さい場合に、参照ピクチャの動きベクトルを参照する。これによって、対象ピクチャと参照ピクチャのＣＴＵサイズが異なる場合においても、参照ピクチャにおいて動きベクトルを参照する範囲を仮想ＣＴＵラインの範囲に制限されているので、参照ピクチャ上の動きベクトルを予めフェッチして処理することが可
能であり、高速に処理が可能である効果を奏する。また、参照ピクチャにおいて動きベクトルを参照する範囲である仮想ＣＴＵラインの設定において、できるだけ対象ＣＴＵと同じ位置であることを保ちながら、ＣＴＵラインを設定することができる。
【０３８６】
（変形例）
上記ではVBSizeｘVBSizeの粒度で、仮想ＣＴＵラインを設定したが、仮想ＣＴＵラインの粒度（例えば８×８、つまりVBSize＝８）が、ＣＴＵサイズの粒度（ctuUnitSize）以下である場合には、仮想ＣＴＵラインの導出においてVBSizeに関するシフト処理を省略することができる。
【０３８７】
図18は、整数画素ピクチャをCTUの整数倍に制限されないサイズのタイル（フレキシブルタイル）に分割する場合に、時間動き予測部の動作を示すフローチャートである。この例ではシフト処理を省略している。この場合のＳ３００２の仮想ＣＴＵライン導出は、以下の動作であってもよい。
【０３８８】
仮想CTUラインの上側座標yVirCtbTを、対象ＣＴＵ座標の画面内座標から導出する。ここで対象ＣＴＵ座標がタイル内座標である場合には、対象ＣＴＵのタイル内座標（タイル座標系での対象ＣＴＵ座標）とタイルの画面内座標を加算して、対象ＣＴＵの画面内座標を導出して処理する。また、所定のサイズ（ここではＣＴＵサイズctuSize）だけ下の位置の下側座標yVirCtbBを設定する。ここではVBSizeに関するシフト処理が省略されている。
yVirCtbT = yCtbInPic
yVirCtbB = yCtbInPic+ctuSize
続く処理の擬似コードは以下のとおりである。
if ((yColBrInPic<yVirCtbB) && (yColBr<hPict) && (xColBr<wPict)) {
(xColBrInPic, yColBrInPic)を用いて動きベクトルを参照する
// 例えば8x8 単位にラウンドした以下の座標でもよい。
【０３８９】
// ((xColBrInPic>>3)<<3, (yColBrInPic>>3)<<3)
}
else if (yColCtrInPic<yVirCtbB) {   // ブロック中心で仮想ＣＴＵライン境界判定
(xColCtr, yColCtr)を用いて動きベクトルを参照する
// 例えば8x8単位にラウンドした以下の座標でもよい。
【０３９０】
// ((xColCtr>>3)<<3, (yColCtr>>3)<<3)
以上の構成の時間動き予測部によれば、参照ブロックのピクチャ内座標yColBrInPicと、対象ピクチャのピクチャ内座標から導出した仮想CTU座標yVirCtbBを比較して、参照ブロックの参照可能性を判定する。
【０３９１】
ループフィルタ305は、符号化ループ内に設けたフィルタで、ブロック歪やリンギング歪を除去し、画質を改善するフィルタである。ループフィルタ305は、加算部312が生成したCUの復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット（SAO）、適応ループフィルタ（ALF）等のフィルタを施す。
【０３９２】
参照ピクチャメモリ306は、加算部312が生成したCUの復号画像を、対象ピクチャ及び対象CU毎に予め定めた位置に記憶する。
【０３９３】
予測パラメータメモリ307は、復号対象のCTUあるいはCU毎に予め定めた位置に予測パラメータを記憶する。具体的には、予測パラメータメモリ307は、パラメータ復号部302が復号したパラメータ及びエントロピー復号部301が分離した予測モードpredMode等を記憶す
る。
【０３９４】
予測画像生成部308には、予測モードpredMode、予測パラメータ等が入力される。また、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、予測パラメータと読み出した参照ピクチャ（参照ピクチャブロック）を用いてブロックもしくはサブブロックの予測画像を生成する。ここで、参照ピクチャブロックとは、参照ピクチャ上の画素の集合（通常矩形であるのでブロックと呼ぶ）であり、予測画像を生成するために参照する領域である。
【０３９５】
逆量子化・逆変換部311は、エントロピー復号部301から入力された量子化変換係数を逆量子化して変換係数を求める。この量子化変換係数は、符号化処理において、予測誤差に対してDCT（Discrete Cosine Transform、離散コサイン変換）、DST（Discrete Sine Transform、離散サイン変換）、KLT（Karyhnen Loeve Transform、カルーネンレーベ変換）等の周波数変換を行い量子化して得られる係数である。逆量子化・逆変換部311は、求めた変換係数について逆DCT、逆DST、逆KLT等の逆周波数変換を行い、予測誤差を算出する。逆量子化・逆変換部311は予測誤差を加算部312に出力する。
【０３９６】
加算部312は、予測画像生成部308から入力されたブロックの予測画像と逆量子化・逆変換部311から入力された予測誤差を画素毎に加算して、ブロックの復号画像を生成する。加算部312はブロックの復号画像を参照ピクチャメモリ306に記憶し、また、ループフィルタ305に出力する。
【０３９７】
（動画像符号化装置の構成）
次に、本実施形態に係る動画像符号化装置11の構成について説明する。図19は、本実施形態に係る動画像符号化装置11の構成を示すブロック図である。動画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ（予測パラメータ記憶部、フレームメモリ）108、参照ピクチャメモリ（参照画像記憶部、フレームメモリ）109、符号化パラメータ決定部110、パラメータ符号化部111、エントロピー符号化部104を含んで構成される。
【０３９８】
予測画像生成部101は画像Ｔの各ピクチャを分割した領域であるCU毎に予測画像を生成する。予測画像生成部101は既に説明した予測画像生成部308と同じ動作であり、説明を省略する。
【０３９９】
減算部102は、予測画像生成部101から入力されたブロックの予測画像の画素値を、画像Ｔの画素値から減算して予測誤差を生成する。減算部102は予測誤差を変換・量子化部103に出力する。
【０４００】
変換・量子化部103は、減算部102から入力された予測誤差に対し、周波数変換によって変換係数を算出し、量子化によって量子化変換係数を導出する。変換・量子化部103は、量子化変換係数をエントロピー符号化部104及び逆量子化・逆変換部105に出力する。
【０４０１】
逆量子化・逆変換部105は、動画像復号装置31における逆量子化・逆変換部311（図5）と同じであり、説明を省略する。算出した予測誤差は加算部106に出力される。
【０４０２】
パラメータ符号化部111は、ヘッダ符号化部1110、CT情報符号化部1111、CU符号化部1112（予測モード符号化部）、エントロピー符号化部104、および図示しないインター予測パラメータ符号化部112とイントラ予測パラメータ符号化部113を備えている。CU符号化部1112はさらにTU符号化部1114を備えている。
【０４０３】
以下、各モジュールの概略動作を説明する。パラメータ符号化部111はヘッダ情報、分割情報、予測情報、量子化変換係数等のパラメータの符号化処理を行う。
【０４０４】
CT情報符号化部1111は、QT、MT（BT、TT）分割情報等を符号化する。
【０４０５】
CU符号化部1112はCU情報、予測情報、TU分割フラグsplit_transform_flag、CU残差フラグcbf_cb、cbf_cr、cbf_luma等を符号化する。
【０４０６】
TU符号化部1114は、TUに予測誤差が含まれている場合に、QP更新情報（量子化補正値）と量子化予測誤差（residual_coding）を符号化する。
【０４０７】
エントロピー符号化部104は、供給元から供給されるシンタックス要素をバイナリデータに変換し、CABAC等のエントロピー符号化方式により符号化データを生成し、出力する。図19に示す例では、シンタックス要素の供給元は、CT情報符号化部1111、CU符号化部1112である。シンタックス要素は、インター予測パラメータ（予測モードpredMode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX）、イントラ予測パラメータ（prev_intra_luma_pred_flag、mpm_idx、rem_selected_mode_flag、rem_selected_mode、rem_non_selected_mode、）、量子化変換係数等である。
【０４０８】
加算部106は、予測画像生成部101から入力されたブロックの予測画像の画素値と逆量子化・逆変換部105から入力された予測誤差を画素毎に加算して復号画像を生成する。加算部106は生成した復号画像を参照ピクチャメモリ109に記憶する。
【０４０９】
ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ、SAO、ALFを施す。なお、ループフィルタ107は、必ずしも上記３種類のフィルタを含まなくてもよく、例えばデブロッキングフィルタのみの構成であってもよい。
【０４１０】
予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、対象ピクチャ及びCU毎に予め定めた位置に記憶する。
【０４１１】
参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を対象ピクチャ及びCU毎に予め定めた位置に記憶する。
【０４１２】
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、１つのセットを選択する。符号化パラメータとは、上述したQT、BTあるいはTT分割情報、予測パラメータ、あるいはこれらに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータを用いて予測画像を生成する。
【０４１３】
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すRDコスト値を算出する。RDコスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化誤差と符号化パラメータをエントロピー符号化して得られる符号化ストリームTeの情報量である。二乗誤差は、減算部102において算出された予測誤差の二乗和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして出力する。符号化パラメータ決定部110は決定した符号化パラメータを予測パラメータメモリ108に記憶する。
【０４１４】
なお、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、例えば、エントロピー復号部301、パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆変換部311、加算部312、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、パラメータ符号化部111をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、動画像符号化装置11、動画像復号装置31のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０４１５】
また、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、または全部を、LSI（Large Scale Integration）等の集積回路として実現しても良い。動画像符号化装置11、動画像復号装置31の各機能ブロックは個別にプロセッサ化しても良いし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はＬＳＩに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりＬＳＩに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
【０４１６】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【０４１７】
本発明の一態様に係る動画像復号装置は、画像をタイルに分割し、タイルをCTUに分割し、CTU単位に動画像を復号する動画像復号装置であって、タイルの大きさの最小単位を所定の値に設定するヘッダ復号部と、符号化ストリームからCTUを復号するCT情報復号部を備え、上記ヘッダ復号部は、タイルの大きさの最小単位を用いてタイル左上位置とタイルサイズを導出することを特徴とする。
【０４１８】
本発明の一態様に係る動画像復号装置において、前記所定の値は、最小CTUサイズであることを特徴とする。
【０４１９】
本発明の一態様に係る動画像復号装置において、前記所定の値は、最小CTUサイズの整数倍であることを特徴とする。
【０４２０】
本発明の一態様に係る動画像復号装置において、前記所定の値は、8もしくは16であることを特徴とする。
【０４２１】
本発明の一態様に係る動画像復号装置において、前記所定の値は、水平方向は最小CTUサイズの整数倍、垂直方向は８もしくは１６であることを特徴とする。
【０４２２】
本発明の一態様に係る動画像復号装置において、前記タイルの大きさの最小単位は、最小CTUサイズと、タイルサイズの最小単位と最小CTUサイズとの差分値を用いて導出することを特徴とする。
【０４２３】
本発明の一態様に係る動画像復号装置において、前記差分値はSPSの符号化データから復号されることを特徴とする。
【０４２４】
本発明の一態様に係る動画像復号装置において、前記差分値はPPSの符号化データから復号されることを特徴とする。
【０４２５】
本発明の一態様に係る動画像復号装置において、前記タイルの大きさの最小単位はタイルサイズの最小単位はCTUサイズを超えないことを特徴とする。
【０４２６】
本発明の一態様に係る動画像復号装置において、前記所定の値は、各タイルを独立に処理できる場合は最小CTUサイズ未満の値に設定し、そうでない場合は最小CTUサイズに設定することを特徴とする。
【０４２７】
本発明の一態様に係る動画像復号装置において、前記所定の値は、各タイルを独立に処理できる場合は、そうでない場合よりもタイルの最小単位を小さく設定することを特徴とする。
【０４２８】
本発明の一態様に係る動画像復号装置において、前記所定の値は、サブCU、TMVP用の動きベクトル格納単位、差分量子化パラメータを通知する単位のいづれかに合わせて設定することを特徴とする。
【０４２９】
本発明の一態様に係る動画像符号化装置は、画像をタイルに分割し、タイルをCTUに分割し、CTU単位に動画像を符号化する動画像符号化装置において、タイルの大きさの最小単位を所定の値に設定するヘッダ符号化部と、CTUを符号化して符号化ストリームを生成するCT情報符号化部を備え、上記ヘッダ符号化部は、タイルの大きさの最小単位を用いてタイル左上位置とタイルサイズを導出することを特徴とする。
【０４３０】
〔応用例〕
上述した動画像符号化装置11及び動画像復号装置31は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像（CGおよびGUIを含む）であってもよい。
【０４３１】
まず、上述した動画像符号化装置11及び動画像復号装置31を、動画像の送信及び受信に利用できることを、図20を参照して説明する。
【０４３２】
図20(a)は、動画像符号化装置11を搭載した送信装置PROD_Aの構成を示したブロック図である。図20(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、及び、画像を生成または加工する画像処理部Ａ７を更に備えていて
もよい。図20(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
【０４３４】
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部（不図示）を介在させるとよい。
【０４３５】
図20(b)は、動画像復号装置31を搭載した受信装置PROD_Bの構成を示したブロック図である。図20(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を更に備えていてもよい。図20(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の一例である（通常、ＬＡＮにおいては伝送媒体として無線または有線の何れかが用いられ、ＷＡＮにおいては伝送媒体として有線が用いられる）。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、及びタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
【０４４１】
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアント
は、送信装置PROD_A及び受信装置PROD_Bの双方として機能する。
【０４４２】
次に、上述した動画像符号化装置11及び動画像復号装置31を、動画像の記録及び再生に利用できることを、図21を参照して説明する。
【０４４３】
図21(a)は、上述した動画像符号化装置11を搭載した記録装置PROD_Cの構成を示したブロック図である。図21(a)に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した動画像符号化装置11は、この符号化部PROD_C1として利用される。
【０４４４】
なお、記録媒体PROD_Mは、（１）HDD（Hard Disk Drive）やSSD(Solid State Drive)などのように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、（２）SDメモリカードやUSB（Universal Serial Bus）フラッシュメモリなどのように、記録装置PROD_Cに接続されるタイプのものであってもよいし、（３）DVD（Digital Versatile Disc:登録商標）やBD（Blu-ray Disc:登録商標）などのように、記録装置PROD_Cに内蔵されたドライブ装置（不図示）に装填されるものであってもよい。
【０４４５】
また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成または加工する画像処理部PROD_C6を更に備えていてもよい。図21(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または画像処理部Ｃ６が動画像の主な供給源となる）、スマートフォン（この場合、カメラPROD_C3または受信部PROD_C5が動画像の主な供給源となる）なども、このような記録装置PROD_Cの一例である。
【０４４８】
図21(B)は、上述した動画像復号装置31を搭載した再生装置PROD_Dの構成を示したブロックである。図21(b)に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述した動画像復号装置31は、この復号部PROD_D2として利用される。
【０４４９】
なお、記録媒体PROD_Mは、（１）HDDやSSDなどのように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、（２）SDメモリカードやUSBフラッシュメモリなどのように、再生装置PROD_Dに接続されるタイプのものであってもよいし、（３）DVDやBDなどのように、再生装置PROD_Dに内蔵されたドライブ装置（不図示）に装填されるものであってもよい。
【０４５０】
また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図21(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 N
etwork）、VAN（Value-Added Network）、CATV（Community Antenna television/Cable Television）通信網、仮想専用網（Virtual Private Network）、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、IEEE（Institute of Electrical and Electronic Engineers）1394、USB、電力線搬送、ケーブルＴＶ回線、電話線、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：登録商標）、携帯電話網、衛星回線、地上デジタル放送網等の無線でも利用可能である。なお、本発明の実施形態は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【０４５７】
本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【０４５８】
本発明の実施形態は、画像データが符号化された符号化データを復号する動画像復号装置、および、画像データが符号化された符号化データを生成する動画像符号化装置に好適に適用することができる。また、動画像符号化装置によって生成され、動画像復号装置によって参照される符号化データのデータ構造に好適に適用することができる。
【符号の説明】
【０４５９】
１１  動画像符号化装置
３１  動画像復号装置
１０１、３０８  予測画像生成部
１０４  エントロビー符号化部（符号化部）
１０７、３０５  ループフィルタ
１１１  パラメータ符号化部
１１１１  CT情報符号化部（ＣＴ分割部）
１１２  インター予測パラメータ符号化部
１１３  イントラ予測パラメータ符号化部（イントラ予測部）
３０１  エントロピー復号部
３０２  パラメータ復号部（分割部）
３０２１  CT情報復号部（ＣＴ分割部）
３０３  インター予測パラメータ復号部
３０４  イントラ予測パラメータ復号部（イントラ予測部）
３０８  予測画像生成部
３０９  インター予測画像生成部
３１０  イントラ予測画像生成部
３０３６  マージ予測パラメータ導出部
３０３６１  マージ候補導出部（時間動き予測部）
３０３６２  マージ候補選択部
【図１】
2020068461.tif 000003
【図２】
2020068461.tif 000004
【図３】
2020068461.tif 000005
【図４】
2020068461.tif 000006
【図５】
2020068461.tif 000007
【図６】
2020068461.tif 000008
【図７】
2020068461.tif 000009
【図８】
2020068461.tif 000010
【図９】
2020068461.tif 000011
【図１０】
2020068461.tif 000012
【図１１】
2020068461.tif 000013
【図１２】
2020068461.tif 000014
【図１３】
2020068461.tif 000015
【図１４】
2020068461.tif 000016
【図１５】
2020068461.tif 000017
【図１６】
2020068461.tif 000018
【図１７】
2020068461.tif 000019
【図１８】
2020068461.tif 000020
【図１９】
2020068461.tif 000021
【図２０】
2020068461.tif 000022
【図２１】
2020068461.tif 000023
【図２２】
2020068461.tif 000024
【図２３】
2020068461.tif 000025
【図２４】
2020068461.tif 000026
【図２５】
2020068461.tif 000027
【図２６】
2020068461.tif 000028
【図２７】
2020068461.tif 000029
【図２８】
2020068461.tif 000030
【図２９】
2020068461.tif 000031
【図３０】
2020068461.tif 000032
【図３１】
2020068461.tif 000033
【図３２】
2020068461.tif 000034
【図３３】
2020068461.tif 000035
【図３４】
2020068461.tif 000036
【図３５】
2020068461.tif 000037
【図３６】
2020068461.tif 000038
【図３７】
2020068461.tif 000039
【図３８】
2020068461.tif 000040
【図３９】
2020068461.tif 000041
【図４０】
2020068461.tif 000042
【図４１】
2020068461.tif 000043
【図４２】
2020068461.tif 000044
【図４３】
2020068461.tif 000045