以下、添付の図面を参照して、本願発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本願発明は図示された構成に限定されるものではない。
<実施形態1>
以下、本発明の実施形態を、図面を用いて説明する。図1は本実施形態の画像符号化装置を示すブロック図である。本実施形態では説明のため、まず、基本レイヤと拡張レイヤのみからなる階層数が2の階層符号化とするが、階層数はこれに限定されない。また階層は空間解像度に基づく階層である。図1において、101は動画像を構成する画像データを入力する端子である。画像データは1フレームずつ入力されるものとする。
102はフレーム内のタイル分割の数、位置を決定し、さらに階層ごとに、いずれかのタイルを独立復号タイルとして符号化するか否かを決定するタイル設定部である。ここで設定される水平方向タイルの分割数、垂直方向タイルの分割数、位置を表す情報をタイル分割情報とする。また、基本レイヤでの独立復号タイルに関する情報を基本レイヤ独立復号タイル情報と称し、拡張レイヤでの独立復号タイルに関する情報を拡張レイヤ独立復号タイル情報と称する。
図2を例にとって説明する。図2はタイル分割の様子を表している。201〜210はフレームを表す。本実施形態では階層数が2であるので、フレーム201〜206を用いて説明する。フレーム201は時刻tの基本レイヤのフレームを表す。各レイヤは各々0から11までのタイルで構成される。フレーム205は時刻tの拡張第1階層のフレームを表す。図中の細枠はタイルの境界を表す。本実施形態において、符号化対象の画像を4K2K(4096画素×2160画素)として説明を行う。したがって、タイルのサイズは1024画素×720画素となる。タイルの分割情報に関しては、非特許文献1に記載されているピクチャのヘッダデータであるPicture Parameter Set(PPS)の説明にその記述がされているのでここでは説明を省略する。また、シーケンス単位で独立復号タイルを含むか否かの情報を表す独立復号タイル可否フラグを生成する。独立復号タイル可否フラグは独立復号タイルを含む場合は値が1とのなり、そうではない場合は値が0となる。さらに独立復号タイルの符号化を行う場合、各階層でその独立復号タイルの位置を決定し、独立復号タイル位置情報として生成する。ここでは独立復号タイル位置情報は符号化されるタイルの番号で表されるが、これに限定されない。タイル分割情報は後段の拡張レイヤタイル分割部104、基本レイヤタイル分割部105、基本レイヤ独立復号タイル判定部106、拡張レイヤ独立復号タイル判定部115、ヘッダ符号化部114に入力される。
さらに、図2においてフレーム205〜208にて太枠で示されたタイル番号5のタイルのタイルを独立復号タイルとし、独立復号タイルセットとする。以後、時刻t+δのフレームを符号化対象のフレームとする。
103は縮小部である。入力された画像データを予め決められたフィルタ等を用いて縮小し、低解像度の画像を生成する。但し、縮小の方法は限定されない。縮小部103は次のフレームが入力されるまで、入力されたフレームの画像データ及び縮小して得られた縮小画像を保持する。
104は入力された拡張レイヤの画像データをタイル分割情報に基づいてタイルに分割する拡張レイヤタイル分割部である。拡張レイヤタイル分割部104は入力されたフレーム206をタイル番号0のタイルからタイル番号11のタイルに分割する。タイルに分割した後、タイル番号0のタイルから番号順に後段に出力する。
114はヘッダ符号化部である。シーケンスやピクチャ単位のヘッダ符号データを生成する。特に、タイル設定部102で生成された独立復号タイル可否フラグと独立復号タイル位置情報を入力し、これらの独立復号タイル情報を符号化してMCTS SEIを生成し、vui_parametersを符号化する。
105は基本レイヤタイル分割部である。基本レイヤタイル分割部105は縮小された画像データをタイル分割情報に基づいてタイルに分割する。タイル設定部102で設定されたタイルの位置を縮小画像データでの相対的に等しい位置に基づいて縮小画像データをタイル分割する。図2では、基本レイヤタイル分割部105は入力されたフレーム202をタイル番号0のタイルから11に分割する。タイルに分割した後、タイル番号0のタイルから番号順に後段に出力する。また、その時の番号を基本レイヤ独立復号タイル判定部106に通達する。
106は符号化する基本レイヤのタイルが独立復号タイルか否かを判定する基本レイヤ独立復号タイル判定部である。基本レイヤ独立復号タイル判定部106ではタイル設定部102で生成された独立復号タイル可否フラグと基本レイヤの独立復号タイル位置情報、及び基本レイヤタイル分割部105から入力された符号化対象タイルの番号を比較する。比較によって、基本レイヤの符号化対象タイルが独立復号タイルか否かを判定する。判定結果を基本レイヤ独立復号タイル符号化フラグとし、基本レイヤの符号化対象タイルが独立復号タイルである場合は値が1とのなり、そうではない場合は値が0となる。
115は符号化する拡張レイヤのタイルが独立復号タイルか否かを判定する拡張レイヤ独立復号タイル判定部である。拡張レイヤ独立復号タイル判定部115ではタイル設定部102で生成された独立復号タイル可否フラグと拡張レイヤの独立復号タイル位置情報、及び拡張レイヤタイル分割部104から入力された符号化対象タイルの番号を比較する。比較によって、拡張レイヤの符号化対象タイルが独立復号タイルか否かを判定する。判定結果を拡張レイヤ独立復号タイル符号化フラグとし、拡張レイヤの符号化対象タイルが独立復号タイルである場合は値が1とのなり、そうではない場合は値が0となる。
107は基本レイヤ符号化部である。基本レイヤ符号化部107は基本レイヤタイル分割部105から入力されたタイルの画像データを符号化する。画像データの他に基本レイヤ独立復号タイル符号化フラグを入力する。このフラグに従って、基本レイヤの符号化対象のタイルが独立復号タイルであれば、参照可能な復号済みの基本レイヤの画像の中、同一のタイルセット内の独立復号タイルであった部分からのみ予測を行い、符号化を行う。図2において、フレーム202のタイル番号5のタイルが独立復号タイルであった場合は、これを符号化する際には、フレーム201のタイルセット内のタイル番号5のタイルのみを参照して符号化を行う。基本レイヤ独立復号タイル符号化フラグが0、すなわち独立復号タイルでなければ、基本レイヤの独立復号タイルに限定せずに参照可能な復号済みの基本レイヤの画像から予測を行い、予測誤差等の符号化を行う。符号化によって得られた基本レイヤ符号データは後段に出力される。
108は基本レイヤ符号化部107で生成された係数等を用いて、基本レイヤの再構成画像を再構成する基本レイヤ画像再構成部である。基本レイヤ画像再構成部108は再構成画像データを基本レイヤ符号化部107ならびに後述する拡張レイヤ符号化部112の符号化時に後述する拡大部109で拡大された画像データを参照するためにこれを保持しておく。
109は拡大部であり、基本レイヤの復号画像を拡張レイヤのサイズに拡大する。図2において、拡大部109はフレーム201及びフレーム202の各々の再構成画像データに対して拡大を行い、フレーム203及びフレーム204を生成する。
112は拡張レイヤ符号化部である。拡張レイヤ符号化部112は拡張レイヤタイル分割部104から入力されたタイルの画像データを符号化する。画像データの他に拡張レイヤ独立復号タイル判定部115から拡張レイヤ独立復号タイル符号化フラグを入力する。このフラグに従って、参照画像を選択して符号化する。すなわち、拡張レイヤの符号化対象のタイルが独立復号タイルであれば、基本レイヤの再構成済みの画像の拡大画像データと再構成済みの拡張レイヤの画像データを参照する。すなわち、それぞれの画像データで各々の独立復号タイルセットの部分を参照し、符号化を行う。図2を例にとって説明すれば、フレーム206のタイル番号5のタイルを符号化する際には、フレーム204のタイル番号5のタイルとフレーム206のタイル番号5のタイルを参照して符号化を行う。また、拡張レイヤ独立復号タイル符号化フラグが0、すなわち独立復号タイルでなければ、復号済みの基本レイヤの拡大画像データや独立復号タイルに限定せずに拡張レイヤの再構成画像データから予測を行い、予測誤差等の符号化を行う。符号化によって得られた拡張レイヤ符号データは後段に出力される。
113は拡張レイヤ画像再構成部である。拡張レイヤ画像再構成部113は拡張レイヤ符号化部112で生成された符号化の途中で生成された量子化係数や予測モード等の情報を用いて、拡張レイヤの再構成画像を生成する。拡張レイヤ画像再構成部113は再構成画像を拡張レイヤ符号化部112の符号化時に参照するためにこれを保持しておく。
110は基本レイヤ符号化部107で生成された基本レイヤ符号データ、拡張レイヤ符号化部112で生成された拡張レイヤ符号データ、ヘッダ符号化部114で生成されたヘッダ符号データを統合し、ビットストリームを生成する統合部である。111は端子であり、生成されたビットストリームを外部に出力する。
上記画像符号化装置における画像の符号化動作を以下に説明する。符号化動作については図3に示したフローチャートに基づき説明する。
ステップS301にて、ユーザは不図示の階層数設定部を用いて、階層符号化の階層数を決定する。但し、本実施形態ではその構成から拡張レイヤを1階層とし、全体で2階層の階層符号化を行うものとする。
ステップS302にて、符号化に先駆け、タイル設定部102はフレーム内のタイル分割の数、位置を決定し、さらにいずれかの階層のタイルを独立復号タイルとして符号化するか否かを決定する。また、本実施形態では拡張レイヤのタイル番号5のタイルを独立復号タイルとし、1つの独立復号タイルセットを構成する。但し、基本レイヤのタイル番号5のタイルは独立復号タイルとはしない。したがって本実施形態では、独立復号タイル可否フラグを1とする。ちなみに独立復号タイルを含まない場合には独立復号タイル可否フラグを0とする。但し、画像のサイズ、タイルの分割数、独立復号タイルの位置はこれに限定されない。独立復号タイル可否フラグは拡張レイヤタイル分割部104、基本レイヤタイル分割部105、基本レイヤ独立復号タイル判定部106、拡張レイヤ独立復号タイル判定部115及びヘッダ符号化部114に入力される。
ステップS303にて、ヘッダ符号化部114は独立復号タイル可否フラグを判定する。独立復号タイル可否フラグが1であればステップS304に進み、そうでなければステップS305に進む。
ステップS304にて、ヘッダ符号化部114はタイル位置一致情報であるvui_parametersのtile_boundaries_aligned_flag符号に1を設定する。
ステップS305にて、ヘッダ符号化部114は最初にシーケンスヘッダの1つであるvideo_parameter_setを符号化する。これには階層符号化の階層数を表すvps_max_layers_minus1符号が含まれる。なお、本実施形態において、vps_max_layers_minus1符号は1となる。続いてSequence parameter setを符号化する。Sequence parameter setにはvui_parametersも含まれる。vui_parametersにはステップS304で設定したtile_boundaries_aligned_flag符号が含まれている。これらの符号データは統合部110に入力され、ビットストリームとして端子111から出力される。
ステップS306にて、ヘッダ符号化部114はピクチャヘッダであるPicture parameter setを符号化する。ピクチャヘッダの符号データは統合部110に入力され、ビットストリームとして端子111から出力される。
ステップS307にて、ヘッダ符号化部114は独立復号タイル可否フラグを判定する。独立復号タイル可否フラグが1であればステップS308に進み、そうでなければステップS309に進む。
ステップS308にて、符号化対象のシーケンスは独立復号タイルを含んでいるので、ヘッダ符号化部114はmotion―constrained_tile_sets_scalability SEI(MCTSS SEIと略す)を符号化する。独立復号タイル情報であるMCTSS SEI符号データについては、その構成の一例を図4(a)に示す。本実施形態において、上述の通り、vps_max_layers_minus1符号は1である。変数kの0は基本レイヤを表し、1は拡張レイヤを表す。
最初にk=0にて、基本レイヤの独立復号タイルの情報が符号化される。含まれる独立復号タイルセットがないため、独立復号タイルセットの数を示すnum_sets_in_message[0]符号は0となる。このため、続く符号は発生せず、k=1となる。拡張レイヤの独立復号タイルの情報が符号化される。含まれる独立復号タイルセットが1つあるので、独立復号タイルセットの数を示すnum_sets_in_message[1]符号は1となる。続いて、mcts_id[1][0]符号は0とする。独立復号タイルセットに属する独立復号タイルの矩形領域の数は1であるため、num_tile_rects_in_set_minus1[1][0]符号は0となる。この矩形領域の位置を表すのに左上のタイルのタイル番号と右下のタイルのタイル番号の1つの組合せを用いる。すなわち、top_left_tile_index[1][0][0]符号とbottom_right_tile_index[1][0][0]符号は独立復号タイルの位置を表すものである。ここでは独立復号タイルはタイル番号5のタイルのみなのでどちらも値は5である。exact_sample_value_match_flag符号に関しては非特許参照文献1に記載されているので説明を省略する。これらを符号化してMCTSS SEIの符号データを生成する。MCTSS SEI符号データは統合部110に入力され、ビットストリームとして端子111から出力される。
ステップS309にて、縮小部103にて入力画像を縮小し、基本レイヤの入力画像を生成する。本実施形態では拡張レイヤが1階層であるため、縮小部103によって基本レイヤを生成する。しかし、階層数が1階層以上であれば、階層数だけ縮小部103を増やすか、タイル設定部102から入力される階層数にしたがって縮小部103の内部で必要な階層数の画像データを生成するようにすれば対応可能である。
ステップS310にて、基本レイヤタイル分割部105は縮小画像データの左上から順にタイル番号にしたがって符号化する基本レイヤのタイルの画像データを縮小部103から抽出する。基本レイヤタイル分割部105で抽出された基本レイヤのタイルの画像データは基本レイヤ符号化部107に入力される。また、符号化するタイルの位置情報、すなわち、タイル番号を基本レイヤ独立復号タイル判定部106に出力する。
ステップS311にて、基本レイヤ独立復号タイル判定部106は基本レイヤタイル分割部105から符号化対象となったタイルのタイル番号を入力する。同時に、タイル設定部102から基本レイヤの独立復号タイル位置情報を入力する。基本レイヤ独立復号タイル判定部106は符号化対象のタイルのタイル番号と基本レイヤ独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すれば符号化対象タイルが基本レイヤの独立復号タイルであると判定され、基本レイヤ独立復号タイル符号化フラグは1となり、ステップS312に進む。一致しなければ符号化対象タイルが基本レイヤの独立復号タイルではないと判定され基本レイヤ独立復号タイル符号化フラグは0となり、ステップS313に進む。本実施形態では独立復号タイルがないため基本レイヤの独立復号タイル位置情報は何も入力されない。したがって、基本レイヤ独立復号タイル符号化フラグは0となり、ステップS313に進む。
ステップS312にて、符号化対象タイルは基本レイヤのタイルが独立復号タイルである。基本レイヤ符号化部107は再構成済みの基本レイヤの画像の相対的に等しい位置の独立復号タイルセットに含まれる再構成画像データを参照してフレーム間予測を行い、符号化を行っているタイル内の再構成済み画素を参照して予測を行い、符号化を行う。図2において、フレーム202のタイル番号5を独立復号タイルとし、このタイルの符号化を行う場合について説明する。基本レイヤ画像再構成部108に格納されているフレーム201のタイル番号5のタイルとタイル番号6のタイル及びフレーム202のタイル番号5のタイルの符号化済み画素の再構成画像データを参照して符号化を行う。基本レイヤのタイルの符号データは基本レイヤ符号データとして統合部110に出力される。統合部110はその他の符号データと統合し、ビットストリームを生成する。生成されたビットストリームは端子111から出力される。さらに、基本レイヤ画像再構成部108は基本レイヤ符号化部107で符号化の途中で生成された係数等を用いて、基本レイヤのタイル再構成画像データを順次生成し、保持する。
ステップS313にて、符号化対象タイルは基本レイヤのタイルが独立復号タイルではない。基本レイヤ符号化部107は基本レイヤの再構成済みのフレームの画像データの全てを参照の対象としてフレーム間予測を行い、符号化を行う。図2においては、フレーム202のタイル番号5のタイルの符号化を行う際に、基本レイヤ画像再構成部108に格納されているフレーム201の全てのタイル及びフレーム202のタイル番号5のタイルの符号化済み画素を参照して符号化を行う。生成された基本レイヤ符号データは統合部110に出力される。統合部110はその他の符号データと統合し、ビットストリームを生成する。生成されたビットストリームは端子111から出力される。さらに、基本レイヤ画像再構成部108は基本レイヤ符号化部107で符号化の途中で生成された係数等を用いて、基本レイヤのタイル再構成画像データを順次生成し、保持する。
ステップS314にて、基本レイヤ符号化部107は基本レイヤの全てのタイルデータを符号化が終了したか否かを判定する。基本レイヤの全てのタイルデータの符号化処理が終わっていなければ、ステップS310に戻り、基本レイヤタイル分割部105は次のタイルを抽出して出力し、処理を続行する。基本レイヤの全てのタイルの画像データの符号化処理が終了していれば、ステップS315に進む。
ステップS315にて、拡張レイヤタイル分割部104は縮小部103にある縮小されていない入力画像データの左上から順にタイル番号にしたがって符号化する拡張レイヤのタイルの画像データを縮小部103から抽出する。拡張レイヤタイル分割部104で抽出された拡張レイヤのタイルの画像データは拡張レイヤ符号化部112に入力される。また、符号化するタイルの位置情報、すなわち、タイル番号を拡張レイヤ独立復号タイル判定部115に出力する。
ステップS316にて、拡張レイヤ独立復号タイル判定部115は拡張レイヤタイル分割部104から符号化対象となったタイルのタイル番号を入力する。同時に、タイル設定部102から拡張レイヤの独立復号タイル位置情報を入力する。本実施形態では独立復号タイル位置情報は5である。拡張レイヤ独立復号タイル判定部115は符号化対象のタイルのタイル番号と拡張レイヤの独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すれば符号化対象タイルが拡張レイヤの独立復号タイルであると判定され、拡張レイヤ独立復号タイル符号化フラグは1となり、ステップS317に進む。一致しなければ符号化対象タイルが独立復号タイルではないと判定され拡張レイヤの独立復号タイル符号化フラグは0となり、ステップS319に進む。本実施形態では拡張レイヤのタイル番号5のタイルは独立復号タイルなのでステップS317に進み、それ以外はステップS319に進む。
ステップS317にて、符号化対象のタイルは拡張レイヤの独立復号タイルである。拡大部109は基本レイヤ画像再構成部108に格納されている基本レイヤの再構成画像データから相対的に等しい位置のタイルの再構成画像データを入力する。拡大部109は入力された基本レイヤの再構成画像データから相対的に等しい位置のタイルの再構成画像データを用いて、フィルタリング等で拡大を行い、拡大画像データを生成する。具体的には図2のフレーム202のタイル番号5のタイルの画像データとその周辺の画像データをもちいて拡大を行う。拡大画像データは拡張レイヤ符号化部112に入力される。
ステップS318にて、拡張レイヤ符号化部112は拡張レイヤタイル分割部104から入力された符号化対象のタイルの画像データを再構成済みの画像データを参照して符号化する。すなわち、拡張レイヤ符号化部112はステップS317で生成された拡大画像データを参照してレイヤ間予測を行う。また、拡張レイヤ画像再構成部113に格納されている再構成済みの拡張レイヤの相対的に等しい位置の独立復号タイルセットの再構成画像データを参照してフレーム間予測を行う。さらに、符号化対象タイルのタイル内の符号化済みの再構成画像データを参照してイントラ予測を行う。拡張レイヤ符号化部112は、これらの予測、フレーム間予測によって得られた動きベクトル等の予測に関する情報や予測誤差を符号化する。さらに、拡張レイヤ画像再構成部113は拡張レイヤ符号化部112で符号化の途中で生成された係数等を用いて、拡張レイヤのタイル再構成画像データを順次生成し、保持する。
ステップS319にて、符号化対象のタイルは拡張レイヤの独立復号タイルではない。拡大部109は基本レイヤ画像再構成部108に格納されている基本レイヤの再構成画像データの全体を用いてフィルタリング等で拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ符号化部112に入力される。
ステップS320にて、拡張レイヤ符号化部112は拡張レイヤタイル分割部104から入力された符号化対象のタイルの画像データを符号化済みの画像データを参照して符号化する。すなわち、拡張レイヤ符号化部112はステップS319で生成された拡大画像データを参照してレイヤ間予測を行う。また、拡張レイヤ画像再構成部113に格納されている再構成済みの拡張レイヤの再構成画像データを参照してフレーム間予測を行う。さらに、符号化対象タイルのタイル内の符号化済みの再構成画像データを参照してイントラ予測を行う。拡張レイヤ符号化部112は、これらの予測、フレーム間予測によって得られた動きベクトル等の予測に関する情報や予測誤差を符号化する。さらに、拡張レイヤ画像再構成部113は拡張レイヤ符号化部112で符号化の途中で生成された係数等を用いて、拡張レイヤのタイル再構成画像データを順次生成し、保持する。
ステップS321にて、拡張レイヤ符号化部112は拡張レイヤの全てのタイルデータを符号化が終了したか否かを判定する。拡張レイヤの全てのタイルデータの符号化処理が終わっていなければ、ステップS315に戻り、拡張レイヤタイル分割部104は次のタイルを抽出して出力し、処理を続行する。拡張レイヤの全てのタイルの画像データの符号化処理が終了していれば、ステップS322に進む。
ステップS322にて、統合部110は端子101から入力されるシーケンスに含まれる全てのフレーム分の画像データの符号化処理が終了したか否かを判定する。符号化処理を行っていないフレームが存在する場合は、ステップS309に進み、次のフレームの処理を行う。符号化処理を行っていないフレームが存在しない場合は、符号化処理を終了する。
以上の構成により、各階層で個別に独立復号タイルセットを設定できる。これによって階層の途中から独立復号タイルと独立復号タイルセットを設定できるようになる。また、基本レイヤの符号量の増大を抑制することができると同時に、ある階層以上に関しては符号に関する参照画像に制限を加えることでその部分を高速に復号できる符号データを生成できる。
また、注目領域等を拡張レイヤから独立復号タイルセットとし、独立復号タイルセットの存在する階層ではタイルの境界を一致させることで、独立復号タイルセットは符号量や復号コストが大きい拡張レイヤで他のタイルを参照せずに、独立に符号化できる。このため、必要な部分を高速処理が可能になる効果がある。
なお、本実施形態において、図2のように時間的に前のフレームのみを参照フレームとして符号化する例を示したが、これに限定されない。複数フレームの参照による符号化の場合においても同様に参照されることは上記の説明から明白である。
また、縮小部103、拡大部109を使用しない、または縮小率、拡大率を1とし、基本レイヤ符号化部107で設定される量子化パラメータよりも拡張レイヤ符号化部112で設定される量子化パラメータを小さくすることも可能である。これによって、SNR階層符号化を行うことが可能になる。
また、本実施形態において、独立復号タイルセットのタイルの拡張レイヤが参照する拡大画像データを相対的に等しい位置の基本レイヤのタイルの画像データだけで生成を行った。但し、これに限定されず、ステップS319のように基本レイヤの独立復号タイルの周辺の画像データを参照しても構わない。
また、基本レイヤと1つの拡張レイヤのある場合で説明したが、これに限定されない。縮小部103、拡張レイヤタイル分割部104、拡張レイヤ符号化部112、拡張レイヤ画像再構成部113、拡大部109を1つのセットとして、これを階層数分だけ増設することにより、より多くの階層に対応することができることは明白である。
また、拡張レイヤ符号化部112、拡張レイヤ画像再構成部113、拡大部109、縮小部103は内部の処理が同じであるため、兼用で使用して各拡張レイヤの符号化を行っても構わない。例えば、階層数を3とする場合、図2において、フレーム203はフレーム201の復号画像データを拡張第1階層の解像度に拡大したフレームを表す。フレーム209は時刻tの拡張第2階層のフレームを表す。フレーム207はフレーム205の復号画像データを拡張第2階層の解像度に拡大したフレームを表す。フレーム202は時刻t+δの基本レイヤのフレームを表す。フレーム206は時刻t+δの拡張第1階層のフレームを表す。フレーム204はフレーム202の復号画像データを拡張第1階層の解像度に拡大したフレームを表す。フレーム210は時刻t+δの拡張第2階層のフレームを表す。フレーム208はフレーム206の復号画像データを拡張第2階層の解像度に拡大したフレームを表す。以後、階層数が3の階層符号化について説明する。拡張第1階層について、前述の通り、タイル番号5のタイルが拡張レイヤ独立復号タイルとなり、フレーム205及びフレーム206のタイル番号5のタイルが太枠で示される拡張レイヤ独立復号タイルである。また、拡張第2階層について、タイル番号5のタイルとタイル番号6のタイルが拡張レイヤ独立復号タイルとなり、それぞれについて拡張レイヤ独立復号タイルセットを構成する。フレーム209及びフレーム210のタイル番号5のタイルとタイル番号6のタイルが太枠で示される拡張レイヤ独立復号タイルセットである。
図5にその場合の符号化装置のブロック図を示す。図5において、図1の画像符号化装置のブロックと同じ機能を果たすものについては同じ番号を付し、説明を省略する。501は階層数を設定する階層数設定部である。502はタイル設定部である。図1のタイル設定部102とは階層数が3となり、基本レイヤ、拡張第1階層、拡張第2階層についてそれぞれ独立復号タイルを設定することが異なる。503は縮小部である。図1の縮小部103とは階層数設定部501から生成する階層数を入力し、縮小によって複数の階層画像を生成する。すなわち、複数の縮小画像データを生成することが異なる。502はフレームメモリであり、縮小部503が生成する各階層の縮小画像データを格納する。504は拡張レイヤタイル分割部である。図1の拡張レイヤタイル分割部104とは階層数設定部501から階調数を入力し、処理する階層を把握することが異なる。509は拡大部である。図1の拡大部109とは階層数設定部501から生成する階層数を入力し、拡大によって複数の異なる解像度の階層の拡大画像データを生成することが異なる。513は拡張レイヤ画像再構成部である。図1の拡張レイヤ画像再構成部113とは階層数設定部501から生成する階層数を入力し、出力先に拡大部409が加わることが異なる。510は統合部であり、図1の統合部110とは階層数設定部501から階層数が入力され階層数分の符号データをビットストリームに統合することが異なる。515は拡張レイヤ独立復号タイル判定部である。図1の拡張レイヤ独立復号タイル判定部115とは拡張第2階層まで扱うことができ、拡張第1階層と拡張第2階層の独立復号タイル情報とそれぞれの階層の時の入力されるタイル位置情報との比較を行うことが異なる。
図7にその場合の符号化方法を示す。同図において、図3のステップと同様の機能を果たすステップに関しては図3と同じ番号を付与し、説明を省略する。
ステップS701にて、階層数設定部501は階層数を設定する。ここでは階層数は3である。図3のステップS301と異なり、自由に階層数が設定できる。また、ステップS305にて、vps_max_layers_minus1符号を2としてヘッダ符号データの生成が行われる。
ステップS708にて、符号化対象のシーケンスはいずれかの階層に独立復号タイルを含んでいるので、ヘッダ符号化部114はMCTSS SEIを符号化する。MCTSS SEI符号データについては、その構成は図4(a)に示した通りである。本実施形態において、上述の通り、vps_max_layers_minus1符号は2である。変数kの0は基本レイヤを、1は拡張第1階層を、2は拡張第2階層を表す。
最初にk=0にて、基本レイヤの独立復号タイルの情報が符号化される。含まれる独立復号タイルセットがないため、独立復号タイルセットの数を示すnum_sets_in_message[0]符号は0となる。このため、続く符号は発生しない。
続いて、k=1となり、拡張レイヤ(拡張第1階層)の独立復号タイルの情報が符号化される。含まれる独立復号タイルセットが1つあるので、独立復号タイルセットの数を示すnum_sets_in_message[1]符号は1となる。続いて、mcts_id[1]符号は0とする。拡張レイヤ(拡張第1階層)の独立復号タイルセットに属する独立復号タイルの数は1であるため、num_tile_rects_in_set_minus1[1][0]符号は0となる。top_left_tile_index[1][0][0]符号とbottom_right_tile_index[1][0][0]符号は独立復号タイルの位置を表すものである。本実施形態では拡張レイヤ(拡張第1階層)の独立復号タイルはタイル番号5のタイルのみなのでどちらも値は5である。
最後にk=2(拡張第2階層)では、拡張レイヤ(拡張第2階層)の独立復号タイルの情報が符号化される。含まれる独立復号タイルセットが2つあるので、拡張レイヤ(拡張第2階層)の独立復号タイルセットの数を示すnum_sets_in_message[2]符号は2となる。続いて、タイル番号5の独立復号タイルセットの符号化を行う。mcts_id[2][0]符号は0とする。拡張レイヤ(拡張第2階層)のこのタイル番号5のタイルを含む独立復号タイルセットに属する独立復号タイルの矩形領域の数は1であるため、num_tile_rects_in_set_minus1[2][0]符号は0となる。top_left_tile_index[2][0][0]符号とbottom_right_tile_index[2][0][0]符号の値は共に5となる。さらに、タイル番号6の独立復号タイルセットの符号化を行う。mcts_id[2][1]符号はタイル番号5の独立復号タイルセットと区別するために、1とする。拡張レイヤ(拡張第2階層)のこのタイル番号6のタイルを含む独立復号タイルセットに属する独立復号タイルの矩形領域の数は1であるため、num_tile_rects_in_set_minus1[2][1]符号は0となる。top_left_tile_index[2][1][0]符号とbottom_right_tile_index[2][1][0]符号の値は共に6となる。
exact_sample_value_match_flag符号に関しては非特許参照文献1に記載されているので説明を省略する。これらを符号化してMCTSS SEIの符号データを生成する。MCTSS SEI符号データは統合部110に入力され、ビットストリームとして端子111から出力される。
ステップS709にて、縮小部503は1フレームの階層数分の縮小画像データを生成する。本実施形態ではステップS301で設定された2つの拡張レイヤを生成する。例えば、入力画像を縦横1/2にした拡張第1階層画像データとし、更に拡張第1階層画像データを縦横1/2にした基本レイヤの画像データを生成する。ここで、入力された解像度の画像を拡張第2階層画像データとしてそのままフレームメモリ506に出力する。
ステップS310からステップS314にて、前述の通り、基本レイヤ符号化部107はフレームメモリ506から出力された基本レイヤの画像データを符号化する。基本レイヤ画像再構成部108は符号化された画像の復号画像を再構成する。基本レイヤ画像再構成部108は再構成画像を保持しておく。
ステップS730にて、階層数設定部501はステップS312乃至ステップS313で符号化された基本レイヤまたは後述するステップS719、ステップS721乃至ステップS723で符号化された階層の拡張レイヤを上位レイヤとする。さらに、続く符号化対象の拡張レイヤを下位レイヤとする。最初はステップS312乃至ステップS313で符号化された基本レイヤを上位レイヤとし、拡張第1階層を下位レイヤとして設定する。
ステップS715にて、拡張レイヤタイル分割部104は符号化対象の下位レイヤの画像データの左上から順にタイル番号にしたがって符号化する下位レイヤのタイルの画像データを抽出する。拡張レイヤタイル分割部104で抽出された下位レイヤのタイルの画像データは拡張レイヤ符号化部112に入力される。ここでは下位レイヤの符号化対象として、拡張第1階層画像の画像データの符号化するタイルの画像データを抽出し、拡張レイヤ符号化部112に入力する。
ステップS716にて、拡張レイヤ独立復号タイル判定部115は拡張レイヤタイル分割部104から符号化対象となったタイルの下位レイヤ(拡張第1階層)のタイル番号を入力する。同時に、タイル設定部102から下位レイヤ(拡張第1階層)の独立復号タイル位置情報を入力する。本実施形態では独立復号タイル位置情報は5である。拡張レイヤ独立復号タイル判定部115は符号化対象のタイルのタイル番号と上位レイヤ(基本レイヤ)の独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すれば符号化対象タイルが下位レイヤ(拡張第1階層)の独立復号タイルであると判定され、拡張レイヤ独立復号タイル符号化フラグは1となり、ステップS717に進む。一致しなければ符号化対象タイルが独立復号タイルではないと判定され下位レイヤ(拡張第1階層)の独立復号タイル符号化フラグは0となり、ステップS720に進む。本実施形態では拡張レイヤのタイル番号5のタイルは独立復号タイルなのでステップS717に進み、それ以外はステップS720に進む。
ステップS717にて、拡大部509は符号化対象の下位レイヤ(拡張第1階層)の符号化対象のタイルと相対的に等しい位置の上位レイヤ(基本レイヤ)のブロックが独立復号タイルであったか否かを判定する。そのため、タイル設定部502から供給される上位レイヤ(基本レイヤ)の独立復号タイル位置情報と下位レイヤ(拡張第1階層)の符号化対象タイルの位置を比較する。タイル番号が一致すれば符号化対象タイルと相対的に等しい位置の上位レイヤ(基本レイヤ)のタイルが独立復号タイルであると判定された場合はステップS718に進み、そうでなければステップS720に進む。図2に示すように、本実施形態では上位レイヤ(基本レイヤ)のタイル番号5のタイルは独立復号タイルではないので、ステップS720に進む。
ステップS718にて、下位レイヤ(拡張第1階層)の符号化対象のタイルは独立復号タイルであり、かつ、上位レイヤ(基本レイヤ)の符号化対象のタイルは独立復号タイルである。拡大部509は基本レイヤ画像再構成部108または拡張レイヤ画像再構成部513に格納されている上位レイヤ(基本レイヤ)の再構成画像データから相対的に等しい位置のタイルの再構成画像データを入力する。拡大部509は入力された独立復号タイルセットの再構成画像データのみを用いて、フィルタリング等で拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ符号化部112に入力される。ここでは基本レイヤ画像再構成部108の再構成画像データから拡大画像データが生成される。具体的には図2のフレーム202のタイル番号5のタイルが独立復号タイルであれば、フレーム202のタイル番号5のタイルの画像データのみをもちいて拡大を行う。生成された拡大画像データ(フレーム204のタイル番号5のタイルの拡大画像データ)は拡張レイヤ符号化部112に入力される。
ステップS719にて、拡張レイヤ符号化部112は拡張レイヤタイル分割部104から入力された符号化対象の下位レイヤ(拡張第1階層)のタイルの画像データを再構成済みの画像データを参照して符号化する。すなわち、拡張レイヤ符号化部112はステップS718で生成された上位レイヤ(基本レイヤ)の拡大画像データを参照してレイヤ間予測を行う。また、拡張レイヤ画像再構成部513に格納されている再構成済みの下位レイヤ(拡張第1階層)の相対的に等しい位置の独立復号タイルセットの画像データを参照してフレーム間予測を行う。さらに、符号化対象タイルのタイル内の符号化済みの再構成画像データを参照してイントラ予測を行う。拡張レイヤ符号化部112は、これらの予測、フレーム間予測によって得られた動きベクトル等の予測に関する情報や予測誤差を符号化する。さらに、拡張レイヤ画像再構成部513は拡張レイヤ符号化部112で符号化の途中で生成された係数等を用いて、拡張レイヤのタイル再構成画像データを順次生成し、保持する。
ステップS720にて、下位レイヤの符号化対象のタイルは独立復号タイルであるが、上位レイヤの、符号化対象のタイルは独立復号タイルではない。拡大部509は基本レイヤ画像再構成部108に格納されている基本レイヤの再構成画像データまたは拡張レイヤ画像再構成部513に格納されている上位レイヤの再構成画像データを用いてフィルタリング等で拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ符号化部112に入力される。ここでは上位レイヤが基本レイヤなので、基本レイヤ画像再構成部108の再構成画像データから上位レイヤの拡大画像データが生成される。具体的には図2のフレーム202のタイル番号5のタイルの画像データとその周辺の画像データを用いて拡大を行う。
ステップS721にて、拡張レイヤ符号化部112は拡張レイヤタイル分割部104から入力された符号化対象の下位レイヤ(拡張第1階層)のタイルの画像データを下位レイヤ(拡張第1階層)の符号化済みの画像データを参照して符号化する。すなわち、拡張レイヤ符号化部112はステップS720で生成された上位レイヤ(基本レイヤ)の拡大画像データを参照してレイヤ間予測を行う。また、拡張レイヤ画像再構成部513に格納されている再構成済みの下位レイヤ(拡張第1階層)の画像データを参照してフレーム間予測を行う。さらに、下位レイヤ(拡張第1階層)の符号化対象タイルのタイル内の符号化済みの再構成画像データを参照してイントラ予測を行う。拡張レイヤ符号化部112は、これらの予測、フレーム間予測によって得られた動きベクトル等の予測に関する情報や予測誤差を符号化する。さらに、拡張レイヤ画像再構成部513は拡張レイヤ符号化部112で符号化の途中で生成された係数等を用いて、下位レイヤ(拡張第1階層)のタイル再構成画像データを順次生成し、保持する。
ステップS722にて、下位レイヤ(拡張第1階層)の符号化対象のタイルは独立復号タイルではない。拡大部509は基本レイヤ画像再構成部108に格納されている基本レイヤの再構成画像データの全体又は拡張レイヤ画像再構成部513に格納されている上位の拡張レイヤの再構成画像データを用いて拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ符号化部112に入力される。ここでは上位レイヤが基本レイヤなので、基本レイヤ画像再構成部108の再構成画像データから上位レイヤの拡大画像データが生成される。
ステップS723にて、拡張レイヤ符号化部112は拡張レイヤタイル分割部104から入力された符号化対象の下位レイヤ(拡張第1階層)のタイルの画像データを下位レイヤ(拡張第1階層)の符号化済みの画像データを参照して符号化する。すなわち、拡張レイヤ符号化部112はステップS722で生成された上位レイヤ(基本レイヤ)の拡大画像データを参照してレイヤ間予測を行う。また、拡張レイヤ画像再構成部413に格納されている再構成済みの下位レイヤ(拡張第1階層)の画像データを参照してフレーム間予測を行う。さらに、下位レイヤ(拡張第1階層)の符号化対象タイルのタイル内の符号化済みの再構成画像データを参照してイントラ予測を行う。拡張レイヤ符号化部112は、これらの予測、フレーム間予測によって得られた動きベクトル等の予測に関する情報や予測誤差を符号化する。さらに、拡張レイヤ画像再構成部513は拡張レイヤ符号化部112で符号化の途中で生成された係数等を用いて、下位レイヤ(拡張第1階層)のタイル再構成画像データを順次生成し、保持する。
ステップS724にて、統合部510は階層数設定部501で設定された全ての階層について符号化が終了したか否かを判定する。全ての階層のタイルデータの符号化処理が終わっていなければ、ステップS730に戻り、階層数設定部501は次の階層を下位レイヤに設定し、処理を続行する。拡張レイヤの全てのタイルの画像データの符号化処理が終了していれば、ステップS725に進む。ここでは拡張第2階層の符号化が終了していないことからステップS730に戻る。
ステップS725にて、統合部510は端子101から入力されるシーケンスに含まれる全てのフレーム分の画像データの符号化処理が終了したか否かを判定する。符号化処理を行っていないフレームが存在する場合は、ステップS709に進み、次のフレームの処理を行う。符号化処理を行っていないフレームが存在しない場合は、符号化処理を終了する。
以下、拡張第2階層の符号化を行う。すなわち、ステップS730にて、階層数設定部501はステップS719乃至ステップS721で符号化された拡張第1階層を上位レイヤとし、拡張第2階層を下位レイヤとして設定する。ステップS715にて、拡張レイヤタイル分割部104は下位レイヤ(拡張第2階層)の画像データの符号化するタイルの画像データを抽出し、拡張レイヤ符号化部112に入力する。なお、拡張第2階層から新たにタイル番号6のタイルも独立復号タイルとなり、タイル番号5のタイルと共に独立復号タイルセットを構成する。最初に下位レイヤ(拡張第2階層)のタイル番号5のタイルの画像データが入力される。
ステップS716にて、拡張レイヤ独立復号タイル判定部115は拡張レイヤタイル分割部104から符号化対象となったタイルの下位レイヤ(拡張第2階層)のタイル番号を入力する。同時に、タイル設定部102から下位レイヤ(拡張第2階層)の独立復号タイル位置情報を入力する。ここでは独立復号タイル位置情報は5である。拡張レイヤ独立復号タイル判定部115は符号化対象のタイルのタイル番号と上位レイヤ(拡張第1階層)の独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すれば符号化対象タイルが下位レイヤ(拡張第2階層)の独立復号タイルであると判定され、拡張レイヤ独立復号タイル符号化フラグは1となり、ステップS717に進む。一致しなければ符号化対象タイルが独立復号タイルではないと判定され下位レイヤ(拡張第2階層)の独立復号タイル符号化フラグは0となり、ステップS720に進む。拡張第2階層のタイル番号5のタイルでは拡張レイヤのタイル番号5のタイルは独立復号タイルなのでステップS717に進み、それ以外はステップS720に進む。
ステップS717にて、拡大部509は符号化対象の下位レイヤ(拡張第2階層)の符号化対象のタイルと相対的に等しい位置の上位レイヤ(拡張第1階層)のブロックが独立復号タイルであったか否か判定する。そのため、タイル設定部502から供給される上位レイヤ(拡張第1階層)の独立復号タイル位置情報と下位レイヤ(拡張第2階層)の符号化対象タイルの位置を比較する。タイル番号が一致すれば符号化対象タイルと相対的に等しい位置の上位レイヤ(拡張第1階層)のタイルがの独立復号タイルであると判定された場合はステップS718に進み、そうでなければステップS720に進む。図2に示すように、拡張第2階層のタイル番号5のタイルでは上位レイヤ(拡張第1階層)のタイル番号5のタイルは独立復号タイルであるので、ステップS718に進む。
ステップS718にて、符号化対象の下位レイヤ(拡張第2階層)のタイルは独立復号タイルであり、かつ、上位レイヤ(拡張第1階層)の符号化対象のタイルは独立復号タイルである。拡大部509は拡張レイヤ画像再構成部513に格納されている上位レイヤ(拡張第1階層)の再構成画像データから相対的に等しい位置のタイルの再構成画像データを入力する。拡大部509は入力された上位レイヤ(拡張第1階層)の独立復号タイルセットの再構成画像データのみを用いて、フィルタリング等で拡大を行い、上位レイヤ(拡張第1階層)の拡大画像データを生成する。なお、隣接するタイルが同じ独立復号タイルセットの独立復号タイルであれば、隣接する独立復号タイルの再構成画像データを用いて拡大しても構わない。上位レイヤ(拡張第1階層)の拡大画像データは拡張レイヤ符号化部112に入力される。拡張第2階層のタイル番号5のタイルのタイルは図2のフレーム210のタイル番号5のタイルである。フレーム210のタイル番号5のタイルは、フレーム208のタイル番号5のタイルが独立復号タイルであるので、フレーム208のタイル番号5のタイルの再構成画像データのみを用いて拡大画像を生成する。
ステップS719にて、拡張レイヤ符号化部112は拡張レイヤタイル分割部104から入力された符号化対象の下位レイヤ(拡張第2階層)のタイルの画像データを符号化する。符号化にあたっては上位レイヤ(拡張第1階層)の拡大画像データと下位レイヤ(拡張第2階層)の再構成済みの画像データを参照する。すなわち、拡張レイヤ符号化部112はステップS718で生成された上位レイヤ(拡張第1階層)の拡大画像データを参照してレイヤ間予測を行う。また、拡張レイヤ画像再構成部513に格納されている再構成済みの下位レイヤ(拡張第2階層)の相対的に等しい位置の独立復号タイルセットの画像データを参照してフレーム間予測を行う。さらに、符号化対象タイルのタイル内の下位レイヤ(拡張第2階層)の符号化済みの再構成画像データを参照してイントラ予測を行う。拡張レイヤ符号化部112は、これらの予測によって得られた動きベクトル等の予測に関する情報や予測誤差を符号化する。さらに、拡張レイヤ画像再構成部513は拡張レイヤ符号化部112で符号化の途中で生成された係数等を用いて、下位レイヤ(拡張第2階層)のタイル再構成画像データを順次生成し、保持する。符号化のための参照の状態を図2で説明する。フレーム210のタイル番号5のタイルは、フレーム208のタイル番号5のタイルの拡大画像と、フレーム209の独立復号タイルセットのタイル番号5のタイルの再構成画像データとフレーム210のタイル番号5のタイルの再構成画像データを参照する。
ステップS321にて、タイル番号6のタイルの符号化が行われていないので、ステップS715に進む。ステップS715にて、拡張レイヤタイル分割部104は下位レイヤ(拡張第2階層)の画像データの符号化する図2のフレーム210のタイル番号6のタイルの画像データを抽出し、拡張レイヤ符号化部112に入力する。
ステップS716にて、拡張レイヤ独立復号タイル判定部115は拡張レイヤタイル分割部104から符号化対象となったタイルの下位レイヤ(拡張第2階層)のタイル番号を入力する。同時に、タイル設定部102から下位レイヤ(拡張第2階層)の独立復号タイル位置情報を入力する。ここでは独立復号タイル位置情報は6である。拡張レイヤ独立復号タイル判定部115は符号化対象のタイルのタイル番号と上位レイヤ(拡張第1階層)の独立復号タイル位置情報のタイル番号を比較する。タイル番号6のタイルは下位レイヤ(拡張第2階層)では独立復号タイルではないので、ステップS720に進む。
ステップS720にて、下位レイヤ(拡張第2階層)の符号化対象のタイル(タイル番号6)は独立復号タイルであるが、上位レイヤ(拡張第1階層)の、符号化対象のタイルは独立復号タイルではない。拡大部509は拡張レイヤ画像再構成部513に格納されている上位レイヤ(拡張第1階層)の再構成画像データを用いてフィルタリング等で拡大を行い、拡大画像データを生成する。上位レイヤ(拡張第1階層)の再構成画像データはタイルデータの拡大に必要なタイル番号6のタイルの周辺の画素も用いる。拡大画像データは拡張レイヤ符号化部112に入力される。具体的には図2のフレーム206のタイル番号6のタイルの画像データとその周辺の画像データを用いて拡大を行う。
ステップS721にて、拡張レイヤ符号化部112は拡張レイヤタイル分割部104から入力された符号化対象の下位レイヤ(拡張第2階層)のタイルの画像データを符号化する。符号化にあたっては上位レイヤ(拡張第1階層)の拡大画像データと下位レイヤ(拡張第2階層)の符号化済みの画像データを参照する。すなわち、拡張レイヤ符号化部112はステップS720で生成された上位レイヤ(拡張第1階層)の拡大画像データを参照してレイヤ間予測を行う。また、拡張レイヤ画像再構成部513に格納されている再構成済みの下位レイヤ(拡張第2階層)の画像データを参照してフレーム間予測を行う。さらに、下位レイヤ(拡張第2階層)の符号化対象タイルのタイル内の符号化済みのタイル番号6のタイルの再構成画像データを参照してイントラ予測を行う。拡張レイヤ符号化部112は、これらの予測によって得られた動きベクトル等の予測に関する情報や予測誤差を符号化する。さらに、拡張レイヤ画像再構成部513は拡張レイヤ符号化部112で符号化の途中で生成された係数等を用いて、下位レイヤ(拡張第2階層)のタイル再構成画像データを順次生成し、保持する。符号化のための参照の状態を図2で説明する。フレーム210のタイル番号5のタイルは、フレーム208のタイル番号5のタイルの拡大画像と、フレーム209の独立復号タイルセットのタイル番号5のタイルの再構成画像データとフレーム210のタイル番号5のタイルの再構成画像データを参照する。
ステップS722にて、下位レイヤ(拡張第2階層)の符号化対象のタイル(タイル番号6)は独立復号タイルではない。拡大部509は拡張レイヤ画像再構成部513に格納されている上位の拡張レイヤ(拡張第1階層)の再構成画像データを用いてフィルタリング等で拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ符号化部112に入力される。
ステップS723にて、拡張レイヤ符号化部112は拡張レイヤタイル分割部104から入力された符号化対象の下位レイヤ(拡張第2階層)のタイルの画像データを符号化する。すなわち、拡張レイヤ符号化部112はステップS722で生成された上位レイヤ(拡張第1階層)の拡大画像データを参照してレイヤ間予測を行う。また、拡張レイヤ画像再構成部413に格納されている再構成済みの下位レイヤ(拡張第2階層)の画像データを参照してフレーム間予測を行う。さらに、下位レイヤ(拡張第2階層)の符号化対象タイルのタイル内の符号化済みの再構成画像データを参照してイントラ予測を行う。拡張レイヤ符号化部112は、これらの予測、フレーム間予測によって得られた動きベクトル等の予測に関する情報や予測誤差を符号化する。さらに、拡張レイヤ画像再構成部513は拡張レイヤ符号化部112で符号化の途中で生成された係数等を用いて、下位レイヤ(拡張第2階層)のタイル再構成画像データを順次生成し、保持する。
ステップS724にて、統合部510は階層数設定部501で設定された全ての階層について符号化が終了したか否かを判定する。ここでは拡張第2階層までの符号化が終了しているため、ステップS725に進む。ステップS724にて、全てのフレームの符号化が終了すれば、符号化処理を終了する。
以上の動作によって、複数の階層の拡張レイヤにおいても、各階層で個別に独立復号タイルセットを設定できる。
また、MCTSS SEIがビットストリームに存在する場合、タイル位置一致情報であるvui_parametersのtile_boundaries_aligned_flag符号は1に必ずセットされる。したがって、vui_parametersにおいて、MCTSS SEIがビットストリームに存在する場合、符号データとしてのtile_boundaries_aligned_flag符号を省略することもできる。もし、MCTSS SEIが無ければ、tile_boundaries_aligned_flag符号を符号化し、その符号データがビットストリームに含まれる。MCTSS SEIがあれば、tile_boundaries_aligned_flag符号は符号化されず、復号側で必ず1の値が設定される。このようにすることで、冗長となるtile_boundaries_aligned_flag符号を削減することが可能になる。
また、MCTSS SEIがビットストリームに存在する場合、タイル位置一致情報であるvui_parametersのtile_boundaries_aligned_flag符号は1に必ずセットされる。但し、タイルの境界の一致は独立復号タイルが存在するレイヤのみに適応しても構わない。例えば、図2おいて、基本レイヤではタイルを2つに分割しても構わない。すなわち、フレーム201、202のタイル番号0、1、4、5、8、9を新たな1つのタイルとし、タイル番号を0とし、タイル番号2、3、6、7、10、11を新たな1つのタイルとし、タイル番号を1としても構わない。但し、拡張第1階層から独立復号タイルが存在するので、拡張第1階層以下の階層はフレーム205とタイル境界を一致させる必要が生じる。これにより、低解像度の上位レイヤで自由なタイル分割を実現することも可能である。
なお、階層符号化において、重要な領域を切り出し、その部分に独立復号タイルセットが適応されるように符号化することで、重要な領域を高速に読み出せる符号データを生成することができる。
なお、縮小部103に関して、タイルの境界に関係なくフィルタ等を施して縮小画像データを生成できるが、独立復号タイルとそれ以外のタイルでの縮小方法を適応的に変更しても構わない。例えば、拡大時には独立復号タイルのタイル外の画像データ用いないため、フィルタサイズを適応的に変化させるか、タイル外の画像データをタイル内の画像データで補填する。縮小時でもその端部において独立復号タイルセットの外の画素を用いる際にフィルタサイズや画像データ補填を拡大時と同じようにすることも可能である。それにより縮小・拡大の方式の不一致による画質劣化を抑えることが可能になる。
また、MCTSS SEI符号データについては、図4(a)の構成に限定されない。例えば図4(b)に示す構成を取ることも可能である。上述の階層数が3の場合について説明する。すなわち、vps_max_layers_minus1符号は2である。変数kの値が0は基本レイヤを、1は拡張第1階層を、2は拡張第2階層を表す。また、独立復号タイルについては図2に示したものを例にとって説明する。最初にlowest_layer_MCTSS符号が符号化される。本lowest_layer_MCTSS符号は独立復号ブロックセットが設定されている最上位階層の番号を表す。したがって、ここでは拡張第1階層が独立復号ブロックセットを設定されている最上位階層であるため、lowest_layer_MCTSSは1となる。したがって、以下に続くループの初期値はlowest_layer_MCTSS符号の値、1となる。以下に設定する符号の初期値は0であり、下記の処理で更新されない場合は0がその符号の値となる。
最初にk=1にて、拡張レイヤ(拡張第1階層)の独立復号タイルの情報が符号化される。含まれる(タイル番号5のタイルを含む)独立復号タイルセットが1つあるので、独立復号タイルセットの数を示すnum_sets_in_message_minus1[1][0]符号は0となる。続いて、mcts_id[1][0]符号は0とする。独立復号タイルセットに属する独立復号タイルの数は1であるため、num_tile_rects_in_set_minus1[1][0]符号は0となる。top_left_tile_index[1][0][0]符号とbottom_right_tile_index[1][0][0]符号は独立復号タイルの位置を表すものである。ここでは独立復号タイルはタイル番号5のタイルのみなのでどちらも値は5である。exact_sample_value_match_flag符号に関しては非特許参照文献1に記載されているので説明を省略する。
続いて、k=2にて、拡張レイヤ(拡張第2階層)の独立復号タイルの情報が符号化される。含まれる(タイル番号5のタイルを含む)独立復号タイルセットが1つあるので、独立復号タイルセットの数を示すnum_sets_in_message_minus1[2][0]符号は0となる。続いて、mcts_id[2][0]符号は0とする。独立復号タイルセットに属する独立復号タイルの数は1であるため、num_tile_rects_in_set_minus1[2][0]符号は0となる。top_left_tile_index[2][0][0]符号とbottom_right_tile_index[2][0][0]符号は独立復号タイルの位置を表すものある。ここでは独立復号タイルセットにはタイル番号5のタイルとタイル番号6のタイルが含まれるので前者の値が5、後者の値が6である。これらを符号化してMCTSS SEIの符号データを生成する。
このようにMCTSS SEI符号データを構成することで、図4(a)の符号に比べ、独立復号タイルの無い階層に関して符号を生成しないことで、符号化効率が改善される。
また、図6(a)に示す構成を取ることも可能である。すなわち、各レイヤでmotion−constrained_tile_sets_scalability(nuh_layer_id)によって個別に各階層で設定することができる。nuh_layer_id符号は非特許文献1の7.3.1.2章に記載されているnal_unit_header()に含まれる階層を表す符号データである。nuh_layer_id符号は基本レイヤを0とし、それ以外の拡張レイヤには適宜値が割り振られる。すなわち、0以外の値の時には階層符号化が行われているものとなる。但し、階層を表す符号としてこれに限定されない。図6(a)において、最初にnuh_layer_id=0にて、基本レイヤの独立復号タイルの情報が符号化される。含まれる独立復号タイルセットがないため、独立復号タイルセットの数を示すnum_sets_in_message[0]符号は0となる。このため、続く符号は発生しない。nuh_layer_id=1にて、拡張レイヤ(拡張第1階層)の独立復号タイルの情報が符号化される。含まれる独立復号タイルセットが1つあるので、独立復号タイルセットの数を示すnum_sets_in_message[1]符号は1となる。続いて、mcts_id[1][0]符号は0とする。独立復号タイルセットに属する独立復号タイルの数は1であるため、num_tile_rects_in_set_minus1[1][0]符号は0となる。top_left_tile_index[1][0][0]符号とbottom_right_tile_index[1][0][0]符号は独立復号タイルの位置を表すものである。ここでは独立復号タイルはタイル番号5のタイルのみなのでどちらも値は5である。exact_sample_value_match_flag符号に関しては非特許参照文献1に記載されているので説明を省略する。nuh_layer_id=2にて、拡張レイヤ(拡張第2階層)の独立復号タイルの情報が符号化される。含まれる独立復号タイルセットが1つあるので、独立復号タイルセットの数を示すnum_sets_in_message[2]符号は1となる。続いて、mcts_id[2][0]符号は0とする。独立復号タイルセットに属する独立復号タイルの数は1であるため、num_tile_rects_in_set_minus1[2][0]符号は0となる。top_left_tile_index[2][0][0]符号とbottom_right_tile_index[2][0][0]符号は独立復号タイルの位置を表すものである。ここでは独立復号タイルはタイル番号5のタイルとタイル番号6のタイルである。したがって、前者の値は5であり、後者の値は6である。
また、図6(b)に示す構成を取ることも可能である。すなわち、vps_max_layers_minus1符号を参照し、その値が0より大きいか否かを判断して、通常の独立復号タイルセットの定義か階層単位でのタイルセットの定義化を判断して適応的に切り替えても良い。なお、HEVCで階層符号化のプロファイルが定義されれば、MCTS SEIの内部でプロファイルを判断して各レイヤの独立復号タイルの情報を符号化することもできる。
また、図8に示すように、途中の階層から増える独立復号タイルを既存の独立復号タイルセットに加えることも可能である。図8において、拡張第2階層の独立復号タイルセットは1つであり、その独立復号タイルセットにタイル番号5のタイルに加えてタイル番号6のタイルも同じ独立復号タイルセットとして扱う。この時、ステップS304にて、MCTSS SEIの符号の内容が前述の内容と変わる。k=0とk=1の基本レイヤと拡張第1階層の符号は前述のとおりである。k=2(拡張第2階層)では、拡張レイヤ(拡張第2階層)の独立復号タイルの情報が符号化される。含まれる独立復号タイルセットが2つあるので、拡張レイヤ(拡張第2階層)の独立復号タイルセットの数を示すnum_sets_in_message[2]符号は1となる。mcts_id[2][0]符号は拡張第1階層のタイル番号5のタイルを含む独立復号タイルセットと同じ0とする。拡張レイヤ(拡張第2階層)のこのタイル番号5のタイルとタイル番号6を含む独立復号タイルセットに属する独立復号タイルの矩形領域の数は1であるため、num_tile_rects_in_set_minus1[2][0]符号は0となる。top_left_tile_index[2][0][0]符号とbottom_right_tile_index[2][0][0]符号の値は前者が5となり、後者が6となる。また、符号化時の画像データの参照が前述の方法と異なる。ステップS719にて、拡張レイヤ符号化部112は拡張レイヤタイル分割部104から入力された符号化対象の下位レイヤ(拡張第2階層)のタイルの画像データを符号化する。符号化にあたっては、上位レイヤ(拡張第1階層)の拡大画像データと下位レイヤ(拡張第2階層)の再構成済みの画像データを参照する。ここで、フレーム間予測において、拡張レイヤ画像再構成部513に格納されている再構成済みの下位レイヤ(拡張第2階層)の独立復号タイルセットの画像データを参照することが可能である。すなわち、フレーム210のタイル番号5のタイルとタイル番号6のタイルは符号化時に、フレーム209のタイル番号5のタイルとタイル番号6のタイルの再構成画像データを参照することが可能である。このように、独立復号タイルセットの内容が途中の階層で変化しても構わない。
さらに、図6(b)に示す構成を取ることも可能である。すなわち、motion−constrained_tile_sets_scalability(vps_max_layers_minus1)によって個別に各階層で設定することができる。vps_max_layers_minus1符号は階層数を表すものであり、0であれば、基本レイヤのみが存在することを示す。図6(b)において、最初にvps_max_layers_minus1が0であるか否かを判定する。0であれば、階層符号化されていないので、3行目から12行目までで通常のMCTS SEIの符号で構成される。また、0以外であれば、階層符号化されているので、15行目から26行目までで図4(a)のMCTSS SEIと同じ符号で構成される。但し、15行目から26行目に関しては図4(b)の構成でも良く、これに限定されない。このように従来からあるmotion−constrained_tile_sets()で符号を構成することも可能である。
<実施形態2>
図9は本実施形態の画像復号装置を用いる画像表示装置を示すブロック図である。本実施形態では実施形態1で生成されたビットストリームを復号する場合を例にとり説明を行う。
901は通信等によってビットストリームを入力するインターフェースである。902は入力されたビットストリームや予め記録されていたビットストリームを格納しておく記憶部である。903はユーザが表示するビットストリームを指示し、その表示方法を指定する表示制御部である。表示制御部903は復号する階層と復号する領域を表示制御信号として画像復号装置に出力する。復号する階層は階層数で表され、表示領域は表示するタイルの位置で表されるものとする。但し、これに限定されない。
904はセレクタであり、入力するビットストリームの入力先を指定する。905は本発明に関する画像復号装置である。906は表示部であり、画像復号装置905で生成された復号画像データを表示する。
上記画像表示装置における画像表示の動作を以下に説明する。ユーザが表示制御部903からインターフェース901から入力されるビットストリームで基本レイヤの復号と表示を指示した場合について説明する。これは監視カメラ等の入力で全体をモニタリングする場合に相当する。インターフェース901からは監視カメラ等からフレーム単位で入力されるビットストリームを受信し、記憶部902に記録しながら、セレクタ904に出力する。セレクタ904は表示制御部903からインターフェース901からの入力ビットストリームを画像復号装置905に出力するように指示される。画像復号装置905には表示制御部903から表示制御信号として表示するレイヤ、表示するタイル等の情報が入力される。ここでは基本レイヤの復号と領域として全てのタイルの復号が指示されている。
図10は画像復号装置905の詳細を示すブロック図である。図10において、1001はビットストリームを入力する端子である。説明を容易にするため、ビットストリームはヘッダデータや1フレームずつの符号データが入力されるものとする。このフレーム単位のデータにはフレームを構成する全ての階層符号データが含まれているものとする。但し、これに限定されず、スライス等の単位で入力されても構わない。また、フレームのデータ構成もこれに限定されない。1002は図9の表示制御部903から入力された復号に関する表示制御信号を入力する端子である。表示制御信号としては復号するレイヤ、復号するタイルの位置情報が入力される。入力された表示制御信号は分離部1004、基本レイヤ復号部1007、拡張レイヤ復号部1010に入力される。1003はバッファであり、入力された1フレーム分の階層符号データを格納する。1004は分離部である。分離部1004は入力された符号データからヘッダ符号データ、基本レイヤ符号データ、各拡張レイヤ符号データを分離する。さらに入力された1フレーム分の階層符号データからレイヤ毎にタイル単位の符号データに分割して出力する。タイル単位に出力される場合は該当するタイルの番号をタイルの位置情報として基本レイヤ独立復号タイル判定部1006及び拡張レイヤ独立復号タイル判定部1016に出力する。分離されたそれぞれの符号データは、ヘッダ復号部1005、基本レイヤ復号部1007、拡張レイヤ復号部1010に出力する。
1005はヘッダ復号部である。ヘッダ復号部1005は、シーケンスやピクチャ単位のヘッダ符号データを復号し、復号に必要なパラメータを取得する。特に、MCTSS SEIがあればこれも復号する。特に、独立復号タイル可否フラグと独立復号タイル位置情報を復号し、これを取得する。
1006は基本レイヤ独立復号タイル判定部であり、ヘッダ復号部1005から独立復号タイル可否フラグと基本レイヤの独立復号タイル位置情報を入力し、分離部1004から復号対象のタイルの位置情報を入力する。これらの情報を比較し、復号対象の基本レイヤのタイルが独立復号タイルか否かを判定する。判定の結果は基本レイヤ復号部1007に入力される。
1016は拡張レイヤ独立復号タイル判定部であり、ヘッダ復号部1005から独立復号タイル可否フラグと拡張レイヤの独立復号タイル位置情報を入力し、分離部1004から復号対象のタイルの位置情報を入力する。これらの情報を比較し、復号対象の拡張レイヤのタイルが独立復号タイルか否かを判定する。判定の結果は拡張レイヤ復号部1010に入力される。
1007は基本レイヤ復号部である。基本レイヤ復号部1007は分離部1004で分離された基本レイヤのタイルの符号データを復号し、基本レイヤの復号画像データを生成する。基本レイヤ復号部1007は基本レイヤ独立復号タイル判定部1006から入力された復号対象の基本レイヤのタイルが独立復号タイルか否かの情報に基づいて予測を行うための参照対象を選択して予測を行い、基本レイヤの画像データを復号する。1008はフレームメモリである。フレームメモリ1008は基本レイヤの各タイルの符号データを復号して再構成された復号画像データを保持する。1009は拡大部である。拡大部1009は復号されて再構成された復号画像データを拡張レイヤの解像度に拡大して拡大画像データを生成する。また拡大部1009は拡張レイヤ独立復号タイル判定部1016から判定結果を入力し、復号対象の拡張レイヤのタイルが独立復号タイルか否かによって、拡大する際に使用する画像データを適応的に選択する。
1010は拡張レイヤ復号部である。拡張レイヤ復号部1010は分離部1004で分離された拡張レイヤのタイルの符号データを復号し、拡張レイヤの復号画像データを生成する。拡張レイヤ復号部1010は拡張レイヤ独立復号タイル判定部1016から入力された復号対象の拡張レイヤのタイルが独立復号タイルか否かの情報に基づいて予測を行うための参照対象を選択して予測を行い、拡張レイヤの画像データを復号する。1011はフレームメモリである。フレームメモリ1011は拡張レイヤの各タイルの符号データを復号して再構成された復号画像データを保持する。1012は端子であり、基本レイヤの復号画像データを外部に出力する。1013は端子であり、拡張レイヤの復号画像データを外部に出力する。
上記画像復号装置における画像の復号動作を以下に説明する。復号動作については図11に示したフローチャートに基づき説明する。本実施例では実施形態1の図1に示す符号化装置で生成されたビットストリームを例にとって説明する。本ビットストリームは基本レイヤと拡張レイヤの2階層で構成されている。この時、MCTSS SEIの構成が図4(a)であったとする。
最初に、復号対象のレイヤが基本レイヤのみの場合について述べる。不図示のユーザが表示制御部903からインターフェース901から入力されるビットストリームで基本レイヤの全体の復号と表示の開始を指示する。
ステップS1101にて、最初に端子1001から入力されたヘッダ符号データはバッファ1003と分離部1004を経てヘッダ復号部1005に入力される。ヘッダ復号部1005において、最初にシーケンスヘッダの1つであるvideo_parameter_setを復号する。これには階層符号化の階層数を表すvps_max_layers_minus1符号が含まれる。本実施形態において、vps_max_layers_minus1は1である。続いてSequence parameter setを復号する。Sequence parameter setにはvui_parametersも含まれる。vui_parametersにはタイル位置一致情報であるtile_boundaries_aligned_flag符号が含まれている。本実施形態において、tile_boundaries_aligned_flag符号は1である。
ステップS1102にて、Picture parameter setを復号する。これらのヘッダ符号データの復号については非特許文献1に詳細に記載されているのでここでは説明を省略する。
ステップS1103にて、ヘッダ復号部1005は独立復号タイルの有無を判定する。その結果を、独立復号タイル可否フラグとする。実際にはMCTSS SEIの有無を判定する。MCTSS SEIが存在するのであれば、独立復号タイル可否フラグを1とし、ステップS1104に進む。MCTSS SEIが存在しないのであれば、独立復号タイル可否フラグを0とし、ステップS1105に進む。本実施形態ではステップS1104に進む。独立復号タイル可否フラグは基本レイヤ独立復号タイル判定部1006及び拡張レイヤ独立復号タイル判定部1016に入力される。独立復号タイルが存在する場合、タイル位置一致情報であるvui_parametersのtile_boundaries_aligned_flag符号は1となっている必要がある。もしそうでないのであれば、エラーを返して復号を停止しても構わない。独立復号タイル可否フラグは基本レイヤ独立復号タイル判定部1006に入力され、基本レイヤ復号部1007、拡張レイヤ復号部1010にも入力される。
ステップS1104にて、ヘッダ復号部1005はMCTSS SEIを復号し、独立復号タイル可否フラグと独立復号タイル位置情報を取得する。num_sets_in_message[0]符号を復号すると値0を得る。したがって、基本レイヤには独立復号タイルが無く、独立復号タイルセットも存在しないことが分かる。この場合、基本レイヤに関する独立復号タイルセットに関する符号は存在しない。したがって、ヘッダ復号部1005は基本レイヤ独立復号タイル判定部1006に該当するタイル番号が無いことを独立タイル位置情報として出力する。続いて、第2の階層である拡張レイヤのnum_sets_in_message[1]符号を復号すると値1を得る。したがって、拡張レイヤには独立復号タイルセットが1つ存在することになる。したがって、続くmcts_id[1][0]符号を復号し、値0を得る。これは続いて復号される独立復号タイルを含む独立復号タイルセットの番号になる。さらに、num_tile_rects_in_set_minus1[1][0]符号を復号し、値0を得る。これは独立復号タイルの矩形領域の塊として1つ存在することを表す。続いて、その塊の左上のタイルのタイル番号と右下のタイルのタイル番号の1つの組合せが存在することを示す。この結果に基づき、top_left_tile_index[1][0][0]符号とbottom_right_tile_index[1][0][0]符号が復号され、それぞれ値5を得る。すなわち、独立復号タイルセットの独立復号タイルはタイル番号5のタイルで構成されていることが判明する。したがって、したがって、ヘッダ復号部1005は拡張レイヤ独立復号タイル判定部1016にこの独立復号タイルであるタイル番号5が拡張レイヤの独立復号タイル位置情報として出力される。
ステップS1105にて、分離部1004は端子1002から入力された表示部分にかかるタイルの位置情報を入力する。基本レイヤ全体の表示が指示されている。このため、表示部分にかかるタイルは全てのタイルとなる。したがって、分離部1004はバッファ1003からタイル番号0からタイル番号順に基本レイヤの復号対象タイルの符号データを順に抽出し、基本レイヤ復号部1007に出力する。
ステップS1106にて、基本レイヤ独立復号タイル判定部1006は分離部1004から復号対象となったタイルのタイル番号を入力する。同時に、基本レイヤ独立復号タイル判定部1006はヘッダ復号部1005から独立復号タイル位置情報を入力する。基本レイヤ独立復号タイル判定部1006は復号対象のタイルのタイル番号と独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すれば復号対象タイルが独立復号タイルであると判定され、ステップS1107に進む。一致しなければ復号対象タイルが独立復号タイルセットのタイルではないと判定され、ステップS1108に進む。ここでは独立復号タイルセットはないため、基本レイヤの全てのタイルが独立復号タイルではない。したがって、ステップS1008に進む。
ステップS1107にて、基本レイヤの復号対象タイルは独立復号タイルである。基本レイヤ復号部1007は復号済みの基本レイヤの画像の相対的に等しい位置の独立復号タイルセット内の独立復号タイルと復号対象タイルのタイル内の復号済み画素のみを参照して復号を行う。すなわち、フレームメモリ1008に格納されている相対的に等しい位置の独立復号タイルセット内の独立復号タイルの復号画像データを参照してフレーム間予測を行う。さらに、フレームメモリ1008に格納されている復号対象タイルのタイル内の復号画像データを参照してイントラ予測を行う。復号して再構成された基本レイヤのタイルの復号画像データはフレームメモリ1008に格納され、以後の復号時に参照される。
ステップS1108にて、復号対象タイルは独立復号タイルセットのタイルではない。基本レイヤ復号部1007は復号済みのフレームの基本レイヤの復号画像データと復号対象のフレームの基本レイヤのフレーム内の復号済み画素を参照して復号を行う。すなわち、フレームメモリ1008に格納されている復号画像データを参照してフレーム間予測を行う。さらに、復号対象タイルのタイル内の復号済みの再構成画像データを参照してイントラ予測を行う。ここでは、例えば図2において、フレーム202のタイル番号5のタイルの復号を行う際には、フレーム201の画像データ全体を用いてフレーム間予測を行い、フレーム202のタイル番号5の復号済みの画像データを用いてイントラ予測を行う。復号して再構成された基本レイヤのタイルの復号画像データはフレームメモリ1008に格納され、復号時に参照される。
ステップS1109にて、基本レイヤ復号部1007は入力された表示部分にかかる基本レイヤの全てのタイルの符号データを復号したか否かを判定する。ここでは、基本レイヤに独立復号タイルは含まれないため、基本レイヤの1フレーム分の全てのタイルの符号データを復号したか否かを判定する。基本レイヤの1フレーム分の全てのタイルに符号データの復号処理が終わっていなければ、ステップS1105に戻り、分離部1004は次のタイルを抽出して出力し、処理を続行する。基本レイヤの1フレーム分の全てのタイルの符号データの復号処理が終了していれば、ステップS1110に進む。
ステップS1110にて、分離部1004は図9の表示制御部903から端子1002を介して入力された表示制御信号の表示するレイヤを復号したか否かを判定する。ここでは、階層数が2であるので、基本レイヤか拡張レイヤのいずれかであるかを判定する。拡張レイヤの復号・表示が指示されている場合はステップS1111に進み、そうでない場合はステップS1121に進む。ここでは基本レイヤのみの復号であることからステップS1121に進み、拡張レイヤ復号部1010は動作しない。
ステップS1121にて、復号された基本レイヤが表示する階層なのでその復号画像を端子1012を経て図9の表示部906に送り、表示する。
ステップS1122にて、基本レイヤ復号部1007または拡張レイヤ復号部1010は端子1001から入力されるシーケンスに含まれる全てのフレーム分の基本レイヤの符号データ乃至は拡張レイヤの符号データの復号処理が終了したか否かを判定する。ここでは基本レイヤ復号部1007が全てのフレーム分の基本レイヤの符号データの復号を終了したか否かを判定する。復号処理を行っていない基本レイヤまたは拡張レイヤの符号データが存在する場合は、ステップS1105に進み、次のフレームの処理を行う。復号処理を行っていないフレームの符号データが存在しない場合は、復号処理を終了する。
図6に戻り、表示部906は表示制御部903から基本レイヤの画像データの表示が指示されている。この指示により基本レイヤの復号画像全体を表示部906は表示する。
なお、ユーザが表示制御部903から記録されている映像の基本レイヤの表示が指示された場合、セレクタ904の入力を記憶部902とする。その後、表示制御部903は記憶部902から必要なビットストリームを選択し、セレクタ904に出力する。
続いて、復号対象のレイヤが拡張レイヤの場合について述べる。ユーザが表示制御部903からインターフェース901から入力されるビットストリームで拡張レイヤの復号と一部の表示を指示した場合の復号について説明する。これは監視カメラ等の入力で一部を詳細にモニタリングする場合に相当する。画像復号装置905には表示制御部903から基本レイヤと拡張レイヤの復号と表示する領域に含まれるタイルの番号が指示される。本実施形態では説明を簡単にするために、表示する領域に含まれるタイルを図2のタイル番号5のタイルとタイル番号6のタイルの領域とする。復号動作については基本レイヤのみの復号・表示の場合と同様に、図11に示したフローチャートに基づいて説明する。また、基本レイヤのみの復号と同じ動作を行う部分は説明を簡略化する。
ステップS1101にて、基本レイヤのみの表示時と同様に、video_parameter_setとSequence parameter setの復号が行われる。これらの中のvps_max_layers_minus1符号や、tile_boundaries_aligned_flag符号の復号が行われる。
ステップS1102にて、基本レイヤのみの表示時と同様に、Picture parameter setを復号する。ステップS1103にて、基本レイヤのみの表示時と同様に、ヘッダ復号部1005は独立復号タイルの有無を判定する。ステップS1104にて、基本レイヤのみの表示時と同様に、ヘッダ復号部1005はMCTSS SEIを復号する。
ステップS1105にて、分離部1004は端子1002から入力された表示部分にかかるタイルの位置情報を入力する。本説明ではその表示するタイルの位置はタイル番号5と6とする。入力された位置情報から復号対象タイルであるタイル番号5のタイルの基本レイヤの符号データを抽出する。抽出した符号データを基本レイヤ復号部1007に出力する。また、そのタイル位置情報を基本レイヤ独立復号タイル判定部1006に入力する。
ステップS1106にて、基本レイヤ独立復号タイル判定部1006は復号対象のタイルのタイル番号と独立復号タイル位置情報のタイル番号を比較する。基本レイヤの復号対象タイルは独立復号タイルではないので、ステップS1108に進む。
基本レイヤの復号対象タイルが独立復号タイルであれば、ステップS1107にて、基本レイヤのみの表示時と同様に、基本レイヤ復号部1007は基本レイヤの復号対象タイルの復号と復号画像データのフレームメモリ1008への格納を行う。
ステップS1108にて、基本レイヤの復号対象タイルが独立復号タイルではない。基本レイヤのみの表示時と同様に、基本レイヤ復号部1007は基本レイヤの復号対象タイルの復号と復号画像データのフレームメモリ1008への格納を行う。
ステップS1109にて、基本レイヤ復号部1007は分離部1004から入力された表示部分にかかる基本レイヤの全てのタイルの符号データを復号したか否かを判定する。こでは、基本レイヤに独立復号タイルは含まれないため、基本レイヤの1フレーム分の全てのタイルの符号データを復号したか否かを判定する。ここでは、全てのタイルの符号データの復号が終わっていなければ、ステップS1106に戻り、復号が終わっていればステップS1110に進む。
ステップS1110にて、分離部1004は図9の表示制御部903から端子1002を介して入力された表示制御信号の表示するレイヤに拡張レイヤが含まれているか否かを判定する。ここでは拡張レイヤまで表示するので、ステップS1111に進む。
ステップS1111にて、ステップS1105と同様に分離部1004は端子1002から入力された表示部分にかかるタイルの位置情報を入力する。ここではその表示するタイルの位置はタイル番号5と6である。分離部1004は入力された位置情報から復号対象タイルであるタイル番号5のタイルの拡張レイヤの符号データを抽出する。抽出した符号データを拡張レイヤ復号部1010に出力する。また、そのタイル位置情報を基本レイヤ独立復号タイル判定部1006に入力する。
ステップS1112にて、ステップS1106と同様に拡張レイヤ独立復号タイル判定部1016は復号対象のタイルのタイル番号と独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すればステップS1113に進む。一致しなければステップS1118に進む。ここでは独立復号タイル位置情報は5である。復号対象のタイルのタイル番号と一致する。したがって、拡張レイヤの復号対象タイルが独立復号タイルセットのタイルであると判定され、ステップS1113に進む。
ステップS1113にて、拡張レイヤ独立復号タイル判定部1016は復号対象のタイルのタイル番号と基本レイヤの独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すればステップS1114に進む。一致しなければステップS1116に進む。ここでは基本レイヤの独立復号タイル位置情報はないため、基本レイヤの独立復号タイル番号とは一致しない。したがって、拡張レイヤの復号対象タイルが独立復号タイルセットのタイルであるが、その基本レイヤの相対的に等しい位置のタイルが独立復号タイルではないと判定され、ステップS1116に進む。
ステップS1114にて、復号対象のタイルは独立復号タイルであり、基本レイヤの相対的に位置が等しいタイルは独立復号タイルである。拡大部1009はフレームメモリ1008に格納されている基本レイヤの再構成画像データから相対的に等しい位置のタイルの復号画像データのみを入力する。拡大部1009は入力された独立復号タイルの復号画像データのみを用いて、フィルタリング等で拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ復号部1010に入力される。
ステップS1115にて、拡張レイヤ復号部1010は分離部1004から入力された復号対象のタイルの拡張レイヤ符号データを復号する。拡大部1009から入力されるステップS1114で生成された拡大画像データとフレームメモリ1011に格納された復号済みの拡張レイヤの復号画像データと復号対象タイルの復号済の画素データを参照して復号画像データを再構成する。すなわち、拡張レイヤ復号部1010はステップS1114で生成された基本レイヤの拡大画像データを参照してレイヤ間予測を行う。また、フレームメモリ1011に格納されている拡張レイヤの同じ独立復号タイルセット内の復号画像データを参照してフレーム間予測を行う。同じ独立復号タイルセットとはMCTS_id符号が同じであることを示す。さらに、復号対象タイルのタイル内の復号画像データを参照してイントラ予測を行う。
ステップS1116にて、復号対象のタイルは独立復号タイルであるが、基本レイヤの相対的に位置が等しいタイルは独立復号タイルではない。拡大部1009はフレームメモリ1008に格納されている基本レイヤの再構成画像データから相対的に等しい位置のタイルの復号画像データとその周辺の復号画像データを入力する。拡大部1009は入力された独立復号タイルの復号画像データその周辺の復号画像データを用いて、フィルタリング等で拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ復号部1010に入力される。
ステップS1117にて、拡張レイヤ復号部1010は分離部1004から入力された復号対象のタイルの拡張レイヤ符号データを復号する。拡大部1009から入力されるステップS1116で生成された拡大画像データとフレームメモリ1011に格納された復号済みの拡張レイヤの復号画像データと復号対象タイルの復号済の画素データを参照して復号画像データを再構成する。すなわち、拡張レイヤ復号部1010はステップS1116で生成された基本レイヤの拡大画像データを参照してレイヤ間予測を行う。また、フレームメモリ1011に格納されている拡張レイヤの同じ独立復号タイルセット内の復号画像データを参照してフレーム間予測を行う。さらに、復号対象タイルのタイル内の復号画像データを参照してイントラ予測を行う。復号のための参照の状態を図2で説明する。フレーム206のタイル番号5の復号を行う際に、フレーム202の拡大画像データ(フレーム204)、復号済みのフレーム205のタイル番号5の復号画像データ、フレーム206のタイル番号5の復号済み画素を参照して復号を行う。復号された拡張レイヤのタイルの復号画像データはフレームメモリ1011に出力され、保持される。
以下、タイル番号6のタイルの拡張レイヤの符号データの復号について説明する。ステップS1111にて、タイル番号6のタイルの拡張レイヤの符号データを抽出する。ステップS1112にて、基本レイヤ独立復号タイル判定部1006は復号対象のタイルのタイル番号と独立復号タイル位置情報のタイル番号を比較し、ステップS1118に進む。
ステップS1118にて、符号化対象のタイルは独立復号タイルではない。拡大部1009はフレームメモリ1008に格納されている基本レイヤの再構成画像データから相対的に等しい位置のタイルの復号画像データとその周辺の復号画像データを入力する。拡大部1009は入力された独立復号タイルの復号画像データその周辺の復号画像データを用いて、フィルタリング等で拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ復号部1010に入力される。
ステップS1119にて、拡張レイヤ復号部1010は分離部1004から入力された復号対象のタイルの拡張レイヤ符号データを復号する。拡大部1009から入力されるステップS1118で生成された拡大画像データとフレームメモリ1011に格納された復号済みの拡張レイヤの復号画像データと復号対象タイルの復号済の画素データを参照して復号画像データを再構成する。すなわち、拡張レイヤ復号部1010はステップS1118で生成された基本レイヤの拡大画像データを参照してレイヤ間予測を行う。また、フレームメモリ1011に格納されている拡張レイヤの復号画像データを(画像データ全体を対象として)参照してフレーム間予測を行う。さらに、復号対象タイルのタイル内の復号画像データを参照してイントラ予測を行う。具体的には、フレーム206のタイル番号6のタイルの復号を行う際に、フレーム202の拡大画像データ(フレーム204)、復号済みのフレーム205の復号画像データ、フレーム206のタイル番号6のタイルの復号済み画素を参照して復号を行う。復号された拡張レイヤのタイルの復号画像データはフレームメモリ1011に出力され、保持される。
ステップS1120にて、表示部分にかかる拡張レイヤの全てのタイルの符号データを復号したため、ステップS1121に進む。
ステップS1121にて、復号された拡張レイヤが表示する階層なのでその復号画像を端子1013を経て図9の表示部906に送り、表示する。
ステップS1122にて、拡張レイヤ復号部1010は端子101から入力されるシーケンスに含まれる全てのフレーム分の表示部分にかかる符号データの復号処理が終了したか否かを判定する。復号処理を行っていないフレームが存在する場合は、ステップS1105に進み、次のフレームの処理を行う。復号処理を行っていないフレームが存在しない場合は、復号処理を終了する。
以上の構成により、独立復号タイルをレイヤ毎に独立して設定して符号化されたビットストリームをその表示の方法に合わせて復号することが可能になる。独立復号タイルの設定が不要な低解像度な上位レイヤでは独立復号タイルを設定せず、高解像度な下位レイヤでは独立復号タイルを設定できる。これにより、低解像度のレイヤでは独立復号タイルの設定による符号量増加を抑制したビットストリームで画像データ全体の復号を高速に行うことができ、画像データの全体の把握に寄与できる。特に複数の画像を同時に復号、表示するような場合に有効である。また、高解像度レイヤではタイル単位でのアクセスを容易にするため、必要な部分を高速に読み出し、高精細に復号することができる。
なお、本実施形態において図2のように時間的に前のフレームのみを参照フレームとして復号する例を示したが、これに限定されず、複数フレームの参照による復号の場合においても同様に参照されることは上記の説明から明白である。
また、拡大部1009を使用しない、または拡大率を1とし、基本レイヤ復号部1007で復号される量子化パラメータよりも拡張レイヤ復号部1010で復号される量子化パラメータを小さくすることも可能である。これによって、SNR階層符号化されたデータの復号を行うことが可能になる。
また、本実施形態において1フレームの符号データに全ての階層の符号データを含む例を取って説明したが、これに限定されず、レイヤ毎に入力されても構わない。例えば、記憶部902にレイヤ毎にデータをまとめて格納しておき、拡張レイヤに関しては必要に応じてそこから符号データを切り出して読みだしてももちろん構わない。
また、基本レイヤと1つの拡張レイヤのある場合で説明したが、これに限定されない。拡張レイヤ復号部1010、フレームメモリ1011、拡大部1009を1つのセットとして、これを階層数分だけ増設することにより、より多くの階層に対応することができることは明白である。
また、拡張レイヤ復号部、フレームメモリ、拡大部は内部の処理が同じであるため、兼用で使用して各階層の復号を行っても構わない。図12にその場合の復号装置のブロック図を示す。図12において、図7の画像復号装置のブロックと同じ機能を果たすものについては同じ番号を付し、説明を省略する。1208はフレームメモリであり、基本レイヤ復号部1007で再構成された復号画像データを保持している。図10のフレームメモリ1008とはセレクタ1220への出力を行う機能が追加されていることが異なる。1209は拡大部である。図10の拡大部1009とはフレームメモリ1211からの入力とフレームメモリ1208からの入力を選択して入力が可能になっていることが異なる。911はフレームメモリである。図10のフレームメモリ1011とは所望のタイルの符号化データを拡大部1209及びセレクタ1220に出力する機能を付与されていることである。1220はセレクタであり、フレームメモリ1208またはフレームメモリ1211から所望の復号画像データを選択して入力し、端子1212に出力する。1210は拡張レイヤ復号部であり、拡張レイヤの各階層の復号を行う。図10の拡張レイヤ復号部1210とは復号した階層が表示する階層に一致するか否かを判定して拡張レイヤの復号を行うことが異なる。1212は端子であり、復号画像データを外部に出力する。
図13に図12の画像復号装置の復号方法を示す。同図において、図11のステップと同様の機能を果たすステップに関しては図11と同じ番号を付与し、説明を省略する。なお、本実施形態では実施形態1の図5に記載の画像符号化装置によって、図7の符号化方法によって生成された階層数が3であるビットストリームの復号を例にとって説明する。
図13のステップS1101からステップS1104にて、前述の通り、ヘッダ復号部1005によるヘッダ符号データを復号する。ここではvps_max_layers_minus1符号は2である。
最初に、復号対象のレイヤが基本レイヤのみの場合について述べる。不図示のユーザが表示制御部903からインターフェース901から入力されるビットストリームで基本レイヤの全体の復号と表示の開始を指示する。以下、前述の基本レイヤのみの表示時と同様に図11のステップS1105からステップS1109によって、基本レイヤの1フレーム分の復号が終了している。但し、基本レイヤ復号部1007で生成された復号画像データは全てフレームメモリ1208に格納されることが異なる。なお、本説明では基本レイヤに独立復号タイルは存在しないため、基本レイヤの全てのタイルの復号において、ステップS1106にてステップS1108が選択される。
ステップS1310にて、基本レイヤ復号部1007か拡張レイヤ復号部1210は復号済みの階層の階層数と表示制御部903が指示する表示する階層数を比較し、表示する階層か否かを判定する。表示する階層に達していればステップS1321に進み、そうでなければステップS1330に進む。ここでは、端子1002から入力される表示制御信号によれば、表示する階層は基本レイヤのみである。したがって、表示する階層に達したと判断し、ステップS1321に進む。
ステップS1321にて、セレクタ1220は復号された階層の表示を指示された階層の復号画像データを選択する。この場合、最下位の階層は基本レイヤであるので、セレクタ1220はフレームメモリ1208から復号ざれた復号画像データを読み出し、端子1212から図9の表示部906に出力される。図9に戻り、表示部906は表示制御部903から基本レイヤの画像データの表示が指示されている。この指示により基本レイヤの復号画像の全体を表示部906は表示する。
続いて、復号対象のレイヤが拡張レイヤの場合について述べる。ユーザが表示制御部903からインターフェース901から入力されるビットストリームで拡張レイヤの復号と一部の表示を指示した場合の復号について説明する。例として表示する階層は拡張第2階層(階層数は3)として説明を行う。本実施形態では説明を簡単にするために、表示する領域に含まれるタイルを図2のタイル番号5のタイルとタイル番号6のタイルの領域とする。復号動作については基本レイヤのみの復号・表示の場合と同様に、図13に示したフローチャートに基づいて説明する。また、基本レイヤのみの復号と同じ動作を行う部分は説明を簡略化する。
ステップS1106にて、基本レイヤ独立復号タイル判定部1006は復号対象のタイルのタイル番号と独立復号タイル位置情報のタイル番号を比較する。復号対象タイルは基本レイヤでは独立復号タイルではないので、ステップ1108に進む。ステップS1108にて、基本レイヤ復号部1007は基本レイヤのタイルの復号と復号画像データのフレームメモリ1208への格納を行う。ステップS1109にて、基本レイヤ復号部1007は分離部1004から入力された表示部分にかかる基本レイヤの全てのタイルの符号データを復号したか否かを判定する。
ステップS1310にて、セレクタ1220は復号済みの階層の階層数と表示制御部903が指示する表示する階層数を比較し、表示する階層か否かを判定する。ここでは、端子1002から入力される表示制御信号によれば、表示する階層は拡張第2階層である。したがって、セレクタ1220は表示する階層に達していないと判断し、分離部1004に次の階層の符号化データを出力するようにする、その後、ステップS1330に進む。
ステップS1330にて、拡張レイヤ復号部1210はステップS1107乃至ステップS1108で復号された基本レイヤまたは後述するステップS1315、ステップS1317、乃至ステップS1319で復号された階層の拡張レイヤを上位レイヤとする。さらに、続く復号対象の拡張レイヤを下位レイヤとする。最初は上位レイヤ(基本レイヤ)が全て独立復号タイルではないので、ステップS1108で符号化された基本レイヤを上位レイヤとし、拡張第1階層を下位レイヤとして設定する。
ステップS1311にて、分離部1004は端子1002から入力された表示部分にかかるタイルの位置情報を入力する。本説明ではその表示するタイルの位置はタイル番号5と6である。入力された位置情報から復号対象タイルであるタイル番号5のタイルの下位レイヤ(拡張第1階層)の符号データを抽出する。抽出した符号データを拡張レイヤ復号部1210に出力する。また、そのタイル位置情報を基本レイヤ独立復号タイル判定部1006に入力する。
ステップS1312にて、拡張レイヤ独立復号タイル判定部1016は下位レイヤ(拡張第1階層)の復号対象のタイルのタイル番号と復号対象の下位レイヤ(拡張第1階層)の独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すればステップS1313に進む。一致しなければステップS1318に進む。ここでは下位レイヤ(拡張第1階層)の独立復号タイル位置情報は5である。復号対象のタイルのタイル番号と一致する。したがって、下位レイヤ(拡張第1階層)の復号対象タイルが独立復号タイルセットのタイルであると判定され、ステップS1313に進む。
ステップS1313にて、拡張レイヤ独立復号タイル判定部1016は下位レイヤ(拡張第1階層)の復号対象のタイルのタイル番号と上位レイヤ(基本レイヤ)の独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すればステップS1314に進む。一致しなければステップS1316に進む。ここでは上位レイヤ(基本レイヤ)の独立復号タイル位置情報はないため、下位レイヤ(拡張第1階層)の独立復号タイル番号とは一致しない。したがって、下位レイヤ(拡張第1階層)の復号対象タイルが独立復号タイルセットのタイルであるが、その上位レイヤ(基本レイヤ)の相対的に等しい位置のタイルが独立復号タイルではないと判定され、ステップS1316に進む。
ステップS1316にて、復号対象のタイルは独立復号タイルであるが、基本レイヤの相対的に位置が等しいタイルは独立復号タイルではない。拡大部1209はフレームメモリ1208に格納されている基本レイヤの再構成画像データから相対的に等しい位置のタイルの復号画像データとその周辺の復号画像データを入力する。拡大部1209は入力された独立復号タイルの復号画像データその周辺の復号画像データを用いて、フィルタリング等で拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ復号部1210に入力される。
ステップS1317にて、拡張レイヤ復号部1210は分離部1004から入力された復号対象のタイルの拡張レイヤ符号データを復号する。復号にあっては拡大部1209から入力されるステップS1316で生成された拡大画像データを参照してレイヤ間予測を行う。また、フレームメモリ1211に格納された復号済みの下位レイヤ(拡張第1階層)の復号画像データを参照してフレーム間予測を行う。さらに下位レイヤ(拡張第1階層)の復号対象タイルの復号済のブロックの画素データを参照してイントラ予測を行い、復号画像データを再構成する。すなわち、拡張レイヤ復号部1210はステップS1316で生成された上位レイヤ(基本レイヤ)の拡大画像データを参照してレイヤ間予測を行う。また、フレームメモリ1211に格納されている下位レイヤ(拡張第1階層)の相対的に等しい位置の下位レイヤ(拡張第1階層)の復号済みの他のフレームの独立復号タイルセット内の復号画像データを参照してフレーム間予測を行う。さらに、下位レイヤ(拡張第1階層)の復号対象タイルのタイル内の復号画像データを参照してイントラ予測を行う。復号のための参照の状態を図2で説明する。フレーム206のタイル番号5の復号を行う際に、フレーム202の拡大画像データ(フレーム204)、復号済みのフレーム205のタイル番号5の復号画像データ、フレーム206のタイル番号5の復号済み画素を参照して復号を行う。復号された拡張レイヤのタイルの復号画像データはフレームメモリ1011に出力され、保持される。
ステップS1120にて、拡張レイヤ復号部1210は分離部1004から入力された表示部分にかかる下位レイヤ(拡張第1階層)の全てのタイルの符号データを復号したか否かを判定する。ここでは、タイル番号6のタイルの拡張レイヤの符号データの復号が終わっていないため、ステップS1330に戻り、タイル番号6のタイルの下位レイヤ(拡張第1階層)の符号データの復号を行う。
以下、タイル番号6のタイルの下位レイヤ(拡張第1階層)の符号データの復号について説明する。ステップS1311にて、タイル番号6のタイルの下位(拡張第1階層)レイヤの符号データを抽出する。ステップS1312にて、拡張レイヤ独立復号タイル判定部1016は下位レイヤ(拡張第1階層)の復号対象のタイルのタイル番号と復号対象の階層の独立復号タイル位置情報のタイル番号を比較する。ここではタイル番号6のタイルは下位レイヤ(拡張第1階層)では独立復号タイルではないため、ステップS1318に進む。
ステップS1318にて、入力された上位レイヤ(基本レイヤ)の復号画像データを用いて、拡大画像データを生成する。すなわち、拡大部1209はフレームメモリ1208から復号画像データを入力して拡大する。具体的には拡大画像データであるフレーム204のタイル番号6はフレーム202のタイル番号6のタイルの復号画像データ及びその周辺の復号画像データを用いて生成される。
ステップS1319にて、拡張レイヤ復号部1210は分離部1004から入力された下位レイヤ(拡張第1階層)の復号対象のタイルの拡張レイヤ符号データを復号する。拡大部1009から入力されるステップS1318で生成された拡大画像データとフレームメモリ1211に格納された復号済みの拡張レイヤの復号画像データと復号対象タイルの復号済の画素データを参照して復号画像データを再構成する。すなわち、拡張レイヤ復号部1210はステップS1318で生成された上位レイヤ(基本レイヤ)の拡大画像データを参照してレイヤ間予測を行う。また、フレームメモリ1011に格納されている下位レイヤ(拡張第1階層)の復号画像データを(画像データ全体を対象として)参照してフレーム間予測を行う。さらに、下位レイヤ(拡張第1階層)の復号対象タイルのタイル内の復号画像データを参照してイントラ予測を行う。具体的には、フレーム206のタイル番号5のタイルの復号を行う際に、フレーム202の拡大画像データ(フレーム204)、復号済みのフレーム205の復号画像データの全体、フレーム206のタイル番号5のタイルの復号済み画素を参照して復号を行う。復号された下位レイヤ(拡張第1階層)のタイルの復号画像データはフレームメモリ1211に出力され、保持される。
ステップS1120にて、拡張レイヤ復号部1210は分離部1004から入力された表示部分にかかる下位レイヤ(拡張第1階層)の全てのタイルの符号データを復号したか否かを判定する。ここでは、下位レイヤ(拡張第1階層)の全タイルの符号データの復号が終わっているため、ステップS1320に進む。
ステップS1320にて、拡張レイヤ復号部1210はvps_max_layers_minus1符号で表される全ての階層について復号が終了したか否かを判定する。全ての階層のタイルデータの復号処理が終わっていなければ、ステップS1310に戻り、表示の判定を行う。拡張レイヤの全てのタイルの画像データの復号処理が終了していれば、ステップS1321に進む。ここでは拡張第2階層の復号が終了していないことからステップS1310に戻る。
ステップS1310にて、端子1002から入力される表示制御信号によれば、表示する階層は拡張第2階層である。したがって、拡張レイヤ復号部1210は表示する階層に達していないと判断し、ステップS1330に進む。
ステップS1330にて、拡張レイヤ復号部1210はステップS1315、ステップS1317、乃至ステップS1319で復号された下位レイヤ(拡張第1階層)を上位レイヤとする。さらに、続く復号対象の拡張レイヤ(拡張第2階層)を下位レイヤとする。
ステップS1311にて、分離部1004は端子1002から入力された表示部分にかかるタイルの位置情報を入力する。本説明ではその表示するタイルの位置はタイル番号5と6である。入力された位置情報から復号対象タイルであるタイル番号5のタイルの下位レイヤ(拡張第2階層)の符号データを抽出する。抽出した下位レイヤ(拡張第2階層)のタイル番号5の符号データを拡張レイヤ復号部1210に出力する。また、そのタイル位置情報を拡張レイヤ独立復号タイル判定部1016に入力する。
ステップS1312にて、拡張レイヤ独立復号タイル判定部1016は下位レイヤ(拡張第2階層)の復号対象のタイルのタイル番号と復号対象の下位レイヤ(拡張第2階層)の独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すればステップS1313に進む。一致しなければステップS1318に進む。ここでは下位レイヤ(拡張第1階層)の独立復号タイル位置情報は5である。復号対象の下位レイヤ(拡張第2階層)のタイルのタイル番号と一致する。したがって、下位レイヤ(拡張第2階層)の復号対象タイルが独立復号タイルセットのタイルであると判定され、ステップS1314に進む。
ステップS1313にて、拡張レイヤ独立復号タイル判定部1016は下位レイヤ(拡張第2階層)の復号対象のタイルのタイル番号と上位レイヤ(拡張第1階層)の独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すればステップS1314に進む。一致しなければステップS1316に進む。ここでは上位レイヤ(拡張第1階層)の独立復号タイル位置情報は5だけであるが、下位レイヤ(拡張第2階層)の独立復号タイル番号の5とは一致する。したがって、下位レイヤ(拡張第2階層)の復号対象タイルが独立復号タイルセットのタイルであり、その上位レイヤ(拡張第1階層)の相対的に等しい位置のタイルが独立復号タイルであると判定され、ステップS1314に進む。
ステップS1314にて、復号対象の下位レイヤ(拡張第2階層)のタイルは独立復号タイルであるが、上位レイヤ(拡張第1階層)の相対的に位置が等しいタイルも独立復号タイルである。拡大部1209はフレームメモリ1211に格納されている上位レイヤ(拡張第1階層)の再構成画像データから相対的に等しい位置のタイルの復号画像データのみを入力する。拡大部1209は入力された独立復号タイルの復号画像データのみを用いて、フィルタリング等で拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ復号部1210に入力される。
ステップS1315にて、拡張レイヤ復号部1210は分離部1004から入力された復号対象の下位レイヤ(拡張第2階層)のタイルの拡張レイヤ符号データを復号する。復号にあたっては、拡大部1209から入力されるステップS1314で生成された拡大画像データを参照してレイヤ間予測を行う。また、フレームメモリ1211に格納された復号済みの下位レイヤ(拡張第2階層)のフレームの復号画像データを参照してインター予測を行う。さらに、下位レイヤ(拡張第2階層)の復号対象タイルの復号済のブロックの画素データを参照してイントラ予測を行い、復号画像データを再構成する。すなわち、拡張レイヤ復号部1210はステップS1314で生成された上位レイヤ(拡張第2階層)の拡大画像データを参照してレイヤ間予測を行う。また、フレームメモリ1211に格納されている下位レイヤ(拡張第2階層)の相対的に等しい位置の下位レイヤ(拡張第2階層)の独立復号タイルセット内の復号画像データを参照してフレーム間予測を行う。さらに、下位レイヤ(拡張第2階層)の復号対象タイルのタイル内の復号画像データを参照してイントラ予測を行う。復号のための参照の状態を図2で説明する。フレーム210のタイル番号5の復号を行う際に、フレーム206の拡大画像データ(フレーム208)、復号済みのフレーム209のタイル番号5の復号画像データ、フレーム210のタイル番号5の復号済み画素を参照して復号を行う。復号された拡張レイヤのタイルの復号画像データはフレームメモリ1011に出力され、保持される。
ステップS1120にて、拡張レイヤ復号部1210は分離部1004から入力された表示部分にかかる下位レイヤ(拡張第2階層)の全てのタイルの符号データを復号したか否かを判定する。ここでは、タイル番号6のタイルの拡張レイヤの符号データの復号が終わっていないため、ステップS1311に戻り、タイル番号6のタイルの下位レイヤ(拡張第2階層)の符号データの復号を行う。
ステップS1311にて、タイル番号6のタイルの下位(拡張第2階層)レイヤの符号データを抽出する。ステップS1312にて、拡張レイヤ独立復号タイル判定部1016は下位レイヤ(拡張第2階層)の復号対象のタイルのタイル番号と復号対象の階層の独立復号タイル位置情報のタイル番号を比較する。ここではタイル番号6のタイルは下位レイヤ(拡張第2階層)では独立復号タイルであるため、ステップS1313に進む。
ステップS1313にて、拡張レイヤ独立復号タイル判定部1016は下位レイヤ(拡張第2階層)の復号対象のタイルのタイル番号と上位レイヤ(拡張第1階層)の独立復号タイル位置情報のタイル番号を比較する。タイル番号が一致すればステップS1314に進む。一致しなければステップS1316に進む。ここでは上位レイヤ(拡張第1階層)の独立復号タイル位置情報は5だけであり、下位レイヤ(拡張第2階層)の独立復号タイル番号の6とは一致しない。したがって、下位レイヤ(拡張第2階層)の復号対象タイルが独立復号タイルセットのタイルであるが、その上位レイヤ(拡張第1階層)の相対的に等しい位置のタイルが独立復号タイルではないと判定され、ステップS1316に進む。
ステップS1316にて、下位レイヤ(拡張第2階層)復号対象のタイルは独立復号タイルであるが、上位レイヤ(拡張第1階層)の相対的に位置が等しいタイルは独立復号タイルではない。拡大部1209はフレームメモリ1211に格納されている上位レイヤ(拡張第1階層)の再構成画像データから相対的に等しい位置のタイルの復号画像データとその周辺の復号画像データを入力する。拡大部1209は入力された独立復号タイルの復号画像データその周辺の復号画像データを用いて、フィルタリング等で拡大を行い、拡大画像データを生成する。拡大画像データは拡張レイヤ復号部1210に入力される。
ステップS1317にて、拡張レイヤ復号部1210は分離部1004から入力された復号対象のタイルの下位レイヤ(拡張第2階層)の拡張レイヤ符号データを復号する。拡大部1209から入力されるステップS1316で生成された上位レイヤ(拡張第1階層)の拡大画像データを参照してレイヤ間予測を行う。フレームメモリ1211に格納された復号済みの下位レイヤ(拡張第2階層)のフレームの復号画像データを参照してインター予測を行う。下位レイヤ(拡張第2階層)の復号対象タイルの復号済のブロックの画素データを参照して復号画像データを再構成する。すなわち、拡張レイヤ復号部1210はステップS1316で生成された上位レイヤ(拡張第1階層)の拡大画像データを参照してレイヤ間予測を行う。また、フレームメモリ1211に格納されている下位レイヤ(拡張第2階層)の相対的に等しい位置の下位レイヤ(拡張第2階層)の独立復号タイルセット内の復号画像データを参照してフレーム間予測を行う。さらに、下位レイヤ(拡張第2階層)の復号対象タイルのタイル内の復号画像データを参照してイントラ予測を行う。復号のための参照の状態を図2で説明する。フレーム210のタイル番号6の復号を行う際に、フレーム206の拡大画像データ(フレーム208)、復号済みのフレーム209のタイル番号6の復号画像データ、フレーム210のタイル番号6の復号済み画素を参照して復号を行う。復号された拡張レイヤのタイルの復号画像データはフレームメモリ1211に出力され、保持される。
ステップS1120にて、拡張レイヤ復号部1210は分離部1004から入力された表示部分にかかる下位レイヤ(拡張第2階層)の全てのタイルの符号データを復号したか否かを判定する。ここでは、下位レイヤ(拡張第2階層)の全タイルの符号データの復号が終わっているため、ステップS1320に進む。
ステップS1320にて、拡張レイヤ復号部1210はvps_max_layers_minus1符号で表される全ての階層について復号が終了したか否かを判定する。全ての階層のタイルデータの復号処理が終わっているので、ステップS1321に進む。
ステップS1321にて、セレクタ1220は表示を指示された階層の復号された復号画像データを選択する。この場合、最下位の階層は拡張第2階層であるので、セレクタ1220はフレームメモリ1211から復号ざれた拡張第2階層の復号画像データを読み出し、端子1212から図9の表示部906に出力される。図9に戻り、表示部906は表示制御部903から拡張レイヤの画像データでタイル番号5のタイルとタイル番号6のタイルの表示が指示されている。この指示により基本レイヤの復号画像の全体を表示部906は表示する。
なお、表示対象のタイルが独立復号タイルではない場合、ステップS1106にてステップS1108に進むことになり、ステップS1312にてステップS1318に進むことになる。ステップS1108の説明は上述の通りであるので説明を省略する。
ステップS1318にて、入力された上位レイヤの復号画像データを用いて、拡大画像データを生成する。すなわち、拡大部1209はフレームメモリ1208乃至はフレームメモリ1211から復号画像データを入力して拡大する。
ステップS1319にて、拡張レイヤ復号部1210は分離部1004から入力された下位レイヤの復号対象のタイルの拡張レイヤ符号データを復号する。拡大部1009から入力されるステップS1318で生成された拡大画像データとフレームメモリ1211に格納された復号済みの拡張レイヤの復号画像データと復号対象タイルの復号済の画素データを参照して復号画像データを再構成する。すなわち、拡張レイヤ復号部1210はステップS1318で生成された上位レイヤの拡大画像データを参照してレイヤ間予測を行う。また、フレームメモリ1211に格納されている下位レイヤの復号画像データを(画像データ全体を対象として)参照してフレーム間予測を行う。さらに、下位レイヤの復号対象タイルのタイル内の復号画像データを参照してイントラ予測を行う。具体的には、フレーム206のタイル番号5のタイルの復号を行う際に、フレーム202の拡大画像データ(フレーム204)、復号済みのフレーム205の復号画像データの全体、フレーム206のタイル番号5のタイルの復号済み画素を参照して復号を行う。復号された下位レイヤ(拡張第1階層)のタイルの復号画像データはフレームメモリ1211に出力され、保持される。
なお、表示する階層は拡張第2階層(階層数は3)として説明を行ったが、表示する階層を拡張第1階層(階層数は2)とした場合、拡張第1階層の復号が終了した時点でステップS1310にてステップS1321に進む。このため、拡張第2階層の復号は行われない。
以上の構成により図10の画像復号装置の効果に加えMCTSS SEIがビットストリームに存在する場合、タイル位置一致情報であるvui_parametersのtile_boundaries_aligned_flag符号は1にセットされる。したがって、vui_parametersにおいて、MCTS SEIがビットストリームに存在する場合、符号データとしてのtile_boundaries_aligned_flag符号を省略されるが復号側でこの値を必ず1にすることができる。もし、MCTSS SEIが無ければ、tile_boundaries_aligned_flag符号を復号し、後段の復号で参照される。このようにすることで、tile_boundaries_aligned_flag符号が無くても同様に復号することが可能になる。
また、復号するMCTSS SEI符号データについては、図4(a)の構成に限定されない。例えば図4(b)に示す構成の符号データを復号することも可能である。ヘッダ復号部1005はvps_max_layers_minus1符号を復号し、実施形態1で設定された2を復号する。すなわち、階層数が3となる。変数kの値が0は基本レイヤを、1は拡張第1階層を、2は拡張第2階層を表す。最初にlowest_layer_MCTSS符号を復号し、値1を得る。したがって、続くループはk=1からとなる。k=1にて、拡張レイヤ(拡張第1階層)の独立復号タイルの情報が復号される。num_sets_in_message_minus1[1]符号を復号し値0を得る。したがって、拡張第1階層には独立復号タイルセットが1つ存在することになる。続いて、mcts_id[1][0]符号を復号し、含まれる独立復号タイルセットのIDが0であることを得る。さらに、num_tile_rects_in_set_minus1[1]符号を復号し、独立復号タイルセットに属する独立復号タイルの矩形領域の塊が1つであることを得る。top_left_tile_index[1][0][0]符号とbottom_right_tile_index[1][0][0]符号を復号し、値は5を得る。すなわち、拡張第1階層には独立復号タイルセットが1つ存在し、そのタイル番号は5であることが得られる。続いて、k=2にて、拡張レイヤ(拡張第2階層)の独立復号タイルの情報が復号される。num_sets_in_message_minus1[2]符号を復号し値1を得る。したがって、拡張第2階層には独立復号タイルセットが2つ存在することになる。続いて、mcts_id[2][0]符号を復号し、含まれる第1の独立復号タイルセットのIDが0であることを得る。さらに、num_tile_rects_in_set_minus1[2][0]符号を復号し、第1の独立復号タイルセットに属する独立復号タイルの矩形領域の塊が1つであることを得る。top_left_tile_index[2][0][0]符号とbottom_right_tile_index[2][0][0]符号を復号し、値は5を得る。さらに、mcts_id[2][1]符号を復号し、含まれる第1の独立復号タイルセットのIDが1であることを得る。さらに、num_tile_rects_in_set_minus1[2][1]符号を復号し、第2の独立復号タイルセットに属する独立復号タイルの矩形領域の塊が1つであることを得る。top_left_tile_index[2][1][0]符号とbottom_right_tile_index[2][1][0]符号を復号し、値は6を得る。すなわち、拡張第1階層には独立復号タイルセットが2つ存在し、タイル番号は5のタイルを含む独立復号タイルセットとタイル番号は6のタイルを含む独立復号タイルセットとであることが得られる。
このように構成されたMCTSS SEI符号データを復号することで、図4(a)の符号の復号に比べ、独立復号タイルの無い階層に関して符号を入力しないことで、復号処理のコストが改善される。
また、図6(a)に示す構成の符号データを復号することも可能である。すなわち、各レイヤでmotion−constrained_tile_sets_scalability(nuh_layer_id)によって個別に各階層で設定された符号データを復号することができる。実施形態1で説明したように、nuh_layer_idは依存関係を有した階層を表す。図6(a)において、nuh_layer_id符号を別途復号する。nuh_layer_id符号に該当する階層の復号を行う。本実施形態では前述の図4(b)と同様に3階層からなるとする。すなわち、nuh_layer_id符号の値が0は基本レイヤを、1は拡張第1階層を、2は拡張第2階層を表す。最初にnuh_layer_id=0にて、基本レイヤの独立復号タイルの情報が復号される。num_sets_in_message[0]符号を復号し、値0を得る。この値0は含まれる独立復号タイルセットが基本レイヤには存在しないことを表す。したがって、基本レイヤについては続く符号は存在しない。
nuh_layer_id=1にて、拡張レイヤ(拡張第1階層)の独立復号タイルの情報が復号される。num_sets_in_message[1]符号を復号し、値1を得る。この値1は含まれる独立復号タイルセットが拡張第1階層には1つ存在することを表す。mcts_id[1][0]符号を復号し、値0を得る。すなわち、含まれる独立復号タイルセットのIDが0であることを得る。num_tile_rects_in_set_minus1[1][0]符号を復号し、値0を得る。したがって、拡張第1階層には独立復号タイルセットが1つ存在することになる。続いて、mcts_id[1][0]符号を復号し、含まれる独立復号タイルセットのIDが0であることを得る。さらに、num_tile_rects_in_set_minus1[1]符号を復号し、独立復号タイルセットに属する独立復号タイルの矩形領域の塊が1つであることを得る。top_left_tile_index[1][0][0]符号とbottom_right_tile_index[1][0][0]符号を復号し、値は5を得る。すなわち、拡張第1階層には独立復号タイルセットが1つ存在し、そのタイル番号は5であることが得られる。
nuh_layer_id=2にて、拡張レイヤ(拡張第2階層)の独立復号タイルの情報が復号される。num_sets_in_message[2]符号を復号し、値2を得る。この値2は含まれる独立復号タイルセットが拡張第2階層には2つ存在することを表す。mcts_id[2][0]符号を復号し、値0を得る。すなわち、含まれる第1の独立復号タイルセットのIDが0であることを得る。num_tile_rects_in_set_minus1[1][0]符号を復号し、値0を得る。したがって、拡張第2階層の第1の独立復号タイルセットには独立復号タイルの矩形領域の塊が1つ存在することになる。続いて、mcts_id[2][0]符号を復号し、含まれる独立復号タイルセットのIDが0であることを得る。さらに、num_tile_rects_in_set_minus1[2][0]符号を復号し、独立復号タイルセットに属する独立復号タイルの矩形領域の塊が1つであることを得る。top_left_tile_index[1][0][0]符号とbottom_right_tile_index[1][0][0]符号を復号し、値は5を得る。すなわち、拡張第2階層には独立復号タイルセットが2つ存在し、そのタイル番号は5であることが得られる。さらに、num_tile_rects_in_set_minus1[2][1]符号を復号し、第2の独立復号タイルセットに属する独立復号タイルの矩形領域の塊が1つであることを得る。top_left_tile_index[2][1][0]符号とbottom_right_tile_index[2][1][0]符号を復号し、値は6を得る。すなわち、拡張第1階層には独立復号タイルセットが2つ存在し、タイル番号は5のタイルを含む独立復号タイルセットとタイル番号は6のタイルを含む独立復号タイルセットとであることが得られる。
このように構成されたMCTSS SEI符号データがそれぞれの階層の符号データに対応して、各階層の独立復号タイル位置情報を符号化されていることで、レイヤ単位の復号が容易になる。例えば復号の必要のない階層の独立復号タイル位置情報の復号を行なう必要が無く、復号処理のコストを下げる効果がある。
さらに、図6(b)に示す構成の符号データを復号することも可能である。すなわち、motion−constrained_tile_sets_scalability(vps_max_layers_minus1)によって個別に各階層で設定することができる。vps_max_layers_minus1符号は階層数を表すものであり、0であれば、基本レイヤのみが存在することを示す。図6(b)において、最初にvps_max_layers_minus1が0であるか否かを判定する。0であれば、階層符号化されていないので、3行目から12行目までで通常のMCTS SEIの符号を復号できる。また、0以外であれば、階層符号化されているので、15行目から26行目までで図4(a)のMCTSS SEIと同じ符号で構成されているので、上述の復号によって、独立復号タイルの情報を取得できる。
<実施形態3>
図1、図5、図10、図12に示した各処理部はハードウェアでもって構成しているものとして上記実施形態では説明した。しかし、これらの図に示した各処理部で行なう処理をコンピュータプログラムでもって構成しても良い。
図14は、上記各実施形態に係る画像符号化装置及び画像復号装置に適用可能なコンピュータのハードウェアの構成例を示すブロック図である。
CPU1401は、RAM1402やROM1403に格納されているコンピュータプログラムやデータを用いてコンピュータ全体の制御を行うと共に、上記各実施形態に係る画像符号化装置及び画像復号装置が行うものとして上述した各処理を実行する。即ち、CPU1401は、図1、図5、図10、図12に示した各処理部として機能することになる。
RAM1402は、外部記憶装置1406からロードされたコンピュータプログラムやデータ、I/F(インターフェース)1409を介して外部から取得したデータなどを一時的に記憶するためのエリアを有する。更に、RAM1402は、CPU1401が各種の処理を実行する際に用いるワークエリアを有する。即ち、RAM1402は、例えば、フレームメモリとして割当てるほか、その他の各種のエリアを適宜提供することができる。
ROM1403には、本コンピュータの設定データや、ブートプログラムなどが格納されている。操作部1404は、キーボードやマウスなどにより構成されており、本コンピュータのユーザが操作することで、各種の指示をCPU1401に対して入力することができる。表示部1405は、CPU1401による処理結果を表示する。また表示部1405は例えば液晶ディスプレイで構成される。
外部記憶装置1406は、ハードディスクドライブ装置に代表される、大容量情報記憶装置である。外部記憶装置1406には、OS(オペレーティングシステム)や、図1、図7に示した各部の機能をCPU1401に実現させるためのコンピュータプログラムが保存されている。更には、外部記憶装置1406には、処理対象としての各画像データが保存されていても良い。
外部記憶装置1406に保存されているコンピュータプログラムやデータは、CPU1401による制御に従って適宜、RAM1402にロードされ、CPU1401による処理対象となる。I/F1407には、LANやインターネット等のネットワーク、投影装置や表示装置などの他の機器を接続することができ、本コンピュータはこのI/F1407を介して様々な情報を取得したり、送出したりすることができる。1408は上述の各部を繋ぐバスである。
上述の構成からなる作動は前述のフローチャートで説明した作動をCPU1401が中心となってその制御を行う。
<その他の実施形態>
本発明の目的は、前述した機能を実現するコンピュータプログラムのコードを記録した記憶媒体を、システムに供給し、そのシステムがコンピュータプログラムのコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたコンピュータプログラムのコード自体が前述した実施形態の機能を実現し、そのコンピュータプログラムのコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムのコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたコンピュータプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。そして、そのコンピュータプログラムのコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するコンピュータプログラムのコードが格納されることになる。