以下、添付の図面を参照して、本願発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
<実施形態1>
以下、本発明の実施形態を、図面を用いて説明する。図1は本実施形態の画像復号装置を示すブロック図である。図1において、101はビットストリームを入力する端子である。102はヘッダ分離部であり、入力されたビットストリームから符号化データのヘッダ部と符号化データ部とを分離する。分離されたヘッダ部は各ヘッダの復号を行うブロックに送られる。符号化データ部のデータはセレクタ108に入力される。103はシーケンスのヘッダであるシーケンス・パラメータ・セットを復号するシーケンスヘッダ復号部である。104はシーケンス・パラメータ・セットに含まれるプロファイル情報を判定するプロファイル判定部である。105はピクチャヘッダを復号するピクチャヘッダ復号部である。106はスライス単位のヘッダであるスライスヘッダを復号するライスヘッダ復号部である。107はプロファイル判定部104の結果とスライスヘッダ復号部106の結果から、並列処理を判定する並列処理判定部である。108はセレクタであり、並列処理判定部107の出力に基づき、出力先を選択する。109、110はタイル復号部であり、タイル単位での復号を行う。111はフレームメモリであり、復号して得られた画像データを格納する。112は復号画像を外部に出力するための端子である。
上記画像復号装置におけるビットストリームの復号動作を以下に説明する。復号するビットストリームの一例を図3に示す。本ビットストリームの復号を図1の画像復号装置で行う場合を例にとって説明する。本実施形態では複数の矩形状のタイルにピクチャが分割されており、それぞれのタイルで前述のWavefront処理を行うことが可能なビットストリームを入力とする。
まず、端子101から入力されたビットストリームはヘッダ分離部102に入力される。ヘッダ分離部102は図3のシーケンス・パラメータ・セットを分離し、シーケンスヘッダ復号部103に入力する。シーケンスヘッダ復号部103は図3のヘッダに続き、profile_idc符号を復号し、プロファイル情報を再生する。続いて、level_idc符号を復号し、レベル情報を再生する。ここで、メイン・プロファイルとパラレル・プロファイルを例にとって説明する。また、レベルは対象とするピクチャのサイズの範囲で決まるものとする。但し、名称等はこれに限定されない。メイン・プロファイルは従来のように、それぞれの並列処理が混在しないようにする。一方、パラレル・プロファイルはタイルの中でWavefront処理が可能とする。
シーケンスヘッダ復号部103は続いて、ピクチャサイズである、pic_width_in_luma_samples符号とpic_height_in_luma_samples符号を読み込む。これらを復号し、ピクチャサイズを再生することで、後段のメモリ容量の確保等を行う。続いて、シーケンスヘッダ復号部103はtiles_or_entropy_coding_sync_idc符号を入力する。表1にその符号の内容を示す。
表1
すなわち、メイン・プロファイルではtiles_or_entropy_coding_sync_idc符号の値は0から2でなければならない。一方、パラレル・プロファイルではtiles_or_entropy_coding_sync_idc符号の値は0から3の値を取りうる。
プロファイル判定部104は復号されたプロファイル情報を入力し、複数に分割されたタイル内で並列処理であるWavefrontの処理が可能なパラレル・プロファイルか否かを判定する。その判定結果とtiles_or_entropy_coding_sync_idc符号の値を並列処理判定部107に入力する。ここではメイン・プロファイルであった場合、その信号は0を表し、パラレル・プロファイルであった場合は1を表すものとする。
並列処理判定部107はプロファイルにかかわらず、tiles_or_entropy_coding_sync_idc符号の値が0であれば、セレクタ108の出力先としてタイル復号部109を設定する。また、この時、タイル復号部110は動作させないこととする。この時タイル復号部109にはWavefront処理を行わないことも出力する。
さらに、プロファイルにかかわらず、tiles_or_entropy_coding_sync_idc符号の値が1であれば、セレクタ108の出力先としてタイル復号部109、110を設定する。この時タイル復号部109にはWavefront処理を行わないことも出力する。さらに、プロファイルにかかわらず、tiles_or_entropy_coding_sync_idc符号の値が2であれば、セレクタ108の出力先としてタイル復号部109を設定する。この時タイル復号部109にはWavefront処理を行うことも出力する。また、この時、タイル復号部110は動作させないこととする。
最後に、パラレル・プロファイルの場合のみ、tiles_or_entropy_coding_sync_idc符号の値が3であれば、セレクタ108の出力先としてタイル復号部109、110を設定する。この時タイル復号部109、110にはWavefront処理を行うことも出力する。メイン・プロファイルではtiles_or_entropy_coding_sync_idc符号の値は0〜2であるので、この値が3であれば本ビットストリームは規格に適応していないものである。
プロファイル判定部104はtiles_or_entropy_coding_sync_idc符号の値を並列処理判定部107に入力する。それ以外の復号された結果は各ブロックに必要な情報が提供される。それを用いて、各ブロックは初期化を行う。
続いて、ヘッダ分離部102は図3のピクチャ・パラメータ・セットを分離し、ピクチャヘッダ復号部105に入力され復号される。復号された結果は各ブロックに必要な情報が提供される。続いて、図3の各ピクチャの符号化データが入力される。ヘッダ分離部102は各ピクチャの符号化データからスライスヘッダを分離し、スライスヘッダ復号部106に入力される。スライスヘッダ復号部106は各タイルの符号化データやWavefront処理を行うブロックラインの符号化データに関する情報を復号し、並列処理判定部107に入力する。また、スライスヘッダに含まれる量子化パラメータの復号結果は後段に出力する。
並列処理判定部107はプロファイル判定部104から入力されるtiles_or_entropy_coding_sync_idc符号の値とスライスヘッダから入力された各符号化データに関する情報を判定する。この判定結果に基づいて、セレクタ108、タイル復号部109、110、フレームメモリ111に制御情報を出力する。
最初にメイン・プロファイルで扱う符号化データの復号について説明する。図3(a)はその符号化データのフォーマットの一例を表したものである。図3(a)はtiles_or_entropy_coding_sync_idc符号の値が0の場合を示す。この場合、スライスヘッダに続いて、1つのタイルのみが含まれている。この時、並列処理判定部107はセレクタ108の出力をタイル復号部109に設定し、タイル復号部110は動作させない。フレームメモリ111はタイル復号部109から復号画像を入力し、格納するように制御信号を出力する。
タイル復号部109および110の詳細なブロック図を図2に示す。図2において、201は端子であり、図1のセレクタ108から符号化データを入力する。202は端子であり、図1の並列処理判定部107から制御信号が入力される。202は端子であり、図1のスライスヘッダ復号部106から量子化パラメータの復号結果を入力する。203は端子であり、スライスヘッダ復号部106で復号された、スライスの先頭のブロックに言適用する量子化パラメータの値を入力する。204はバッファであり、入力された符号化データを一旦格納する。バッファ204は端子202から入力された制御信号に基づいて、必要な符号化データを後段に選択して出力することができる。205、215はエントロピ復号部である。エントロピ復号部205、215はそれぞれシーケンシャルに復号を行い、予測誤差を再生することとする。但し、端子202から入力される制御信号によって、シーケンシャルな復号を行うか、Wavefront処理の1つのブロックラインを担当する復号を行うか選択できる。ここでは復号方法として算術符号化に基づく復号が行われるものとする。但し、これに限定されない。また、ブロック単位の予測に関する情報の符号や量子化パラメータに関する符号を復号し、後段に出力する。206、216は発生確率テーブル記憶部であり、エントロピ復号部205、215で随時更新される発生確率テーブルを記憶しておく。207、217は予測部であり、イントラ予測やインター予測によって予測値を生成する。209、219は量子化パラメータ記憶部であり、エントロピ復号部205または215で復号されて再生された量子化パラメータを格納する。スライスの先頭では図1のスライスヘッダ復号部106で復号された量子化パラメータが格納される。208、218は画素再生部である。まず、エントロピ復号部205または215から量子化された予測誤差の直交変換係数を入力し、これを量子化パラメータ記憶部209または219に格納された量子化パラメータで逆量子化する。逆量子化によって得られた直交変換係数を逆直交変換し、予測誤差を再生する。これに予測部207または217で生成された予測値を加算し、復号画像の画素を再生する。210はバッファであり、再生された画素を格納する。211は端子であり、再生された画像データを図1のフレームメモリ111に出力する。
図3(a)の符号化データを入力したタイル復号部109は端子201を経由してタイル単位でバッファ204に符号化データを蓄積する。端子202から入力された制御信号によって、バッファ204はその符号化データをエントロピ復号部205に出力する。この際、エントロピ復号部215は動作させない。また、バッファ210は画素再生部208からの画素データを順に入力する。エントロピ復号部205は入力された符号化データをブロック毎に復号し、量子化された予測誤差の直交変換係数を画素再生部208に出力する。復号中に算術符号の発生確率テーブル記憶部206発生確率テーブルを順次更新する。また、ブロック単位の予測に関する情報を予測部207に、量子化パラメータがあればこれを量子化パラメータ記憶部209に出力する。予測部207はこの予測に関する情報、例えば、イントラ予測モード等を受け取り、バッファ210に格納されている再生された画像データからブロックの予測値を生成する。生成された予測値は画素再生部208に入力される。画素再生部208では、量子化された予測誤差の直交変換係数を量子化パラメータ記憶部209に格納されている量子化パラメータで逆量子化を行ったのちに逆直交変換を経て予測誤差を再生する。この予測誤差と前述の予測値を加算して復号画像の画素値を再生し、バッファ210に格納する。1タイル分の復号が終了したら、バッファ210の内容を端子211から出力する。
続いて、図3(b)はtiles_or_entropy_coding_sync_idc符号の値が1の場合を示す。この場合、スライスヘッダに続いて、複数のタイルの符号化データが格納されている。ここではタイル数を2として説明する。但し、これに限定されない。図4(a)にタイル分割の様子を表す。図4(a)ではピクチャ401をタイル402とタイル403で分割している。例えばピクチャが3840×2160のサイズであった場合、各タイルは1920×2160となる。また、図4(b)は各タイルのブロック分割の様子を表す。各タイルを64×64のブロックに分割すると水平方向に30個、垂直方向に34個が並ぶ。左上のブロックの座標を原点(0,0)として、各ブロックの座標が示されており、右下のブロックが(33,29)となる。この時、並列処理判定部107はセレクタ108の出力をタイル復号部109と復号部110に設定する入力されたタイルによってこれらを選択するようにする。セレクタにタイル402の符号化データが入力されれば、これをタイル復号部109に入力し、タイル403の符号化データが入力されれば、これをタイル復号部110に入力する。フレームメモリ111はタイル復号部109とタイル復号部110から復号画像を入力し、適宜該当する領域に格納するように制御信号を出力する。
図3(b)の符号化データを入力したセレクタ108はタイル402の符号化データをタイル復号部109に、タイル403の符号化データをタイル復号部110に入力する。
タイル復号部109は端子201を経由してタイル単位でバッファ204に符号化データを蓄積する。以下、図3(a)の符号のタイルの復号と同様にエントロピ復号部205、発生確率テーブル記憶部206、予測部207、画素再生部208を用いて、復号画像を再生し、バッファ210に格納する。同時にタイル復号部110もエントロピ復号部205、発生確率テーブル記憶部206、予測部207、画素再生部208を用いて、復号画像を再生し、バッファ210に格納する。図1に戻って、フレームメモリ111はタイル復号部109のバッファ210とタイル復号部110のバッファ210からタイルの復号画像を読み出し、図4(a)のように合成してピクチャの画像データを再生して格納する。
続いて、図3(c)はtiles_or_entropy_coding_sync_idc符号の値が2の場合を示す。この場合、復号処理はブロックライン単位でWavefront処理によって復号される。スライスヘッダに続いて、複数のブロックラインの符号化データが格納されている。図4(a)でピクチャ401は分割されない場合、例えばピクチャが3840×2160のサイズであった場合、ピクチャ内に64×64のブロックに分割すると水平方向に60個、垂直方向に34個が並ぶ。左上のブロックの座標を原点(0,0)として、各ブロックの座標が示されており、右下のブロックが(33,59)となる。この時、並列処理判定部107はセレクタ108の出力をタイル復号部109に設定し、タイル復号部110は動作させない。フレームメモリ111はタイル復号部109から復号画像を入力し、格納するように制御信号を出力する。また、Wavefront処理で復号するようにタイル復号部109に入力する。また、スライスヘッダ復号部106で復号された量子化パラメータも其々のタイル復号部に入力される。これらの量子化パラメータはタイル復号部の量子化パラメータ記憶部209、219に格納される。ブロックラインの先頭のブロックの逆量子化を行う際はこのスライスヘッダ復号部106で復号された量子化パラメータを使用するものとする。
図3(c)の符号化データを入力したタイル復号部109は端子201を経由してブロックライン単位でバッファ204に符号化データを蓄積する。端子202から入力された制御信号によって、バッファ204はその符号化データをエントロピ復号部205とエントロピ復号部215に出力する。ブロックラインの位置を再上端から0、1、・・・、33とした時、偶数番目のブロックラインの符号化データはエントロピ復号部205に、奇数番目のブロックラインの符号化データはエントロピ復号部215に入力される。エントロピ復号部205はブロックライン0の水平方向にブロックデータを復号する。また、ブロック(0,2)を復号した後の発生確率テーブルは、発生確率テーブル記憶部206に格納する。すなわち、ブロック(0,3)の復号開始時にはブロック(0,2)の発生確率テーブルが確率テーブル記憶部206に格納されている。以下、予測部207、量子化パラメータ記憶部209、画素再生部208を経て、復号画像の画素値を再生し、バッファ210に格納する。1ブロックライン分の復号が終了したら、バッファ210の内容を端子211から出力する。その後、バッファ204から次の偶数番目のブロックラインの符号化データを入力し、復号を開始する。但し、その先頭のブロックの復号は発生確率テーブル記憶部216に格納されたブロック(1,2)を復号した後の発生確率テーブルを用いて行う。
また、ブロック(0,2)の復号が終了した時点で、エントロピ復号部215がブロックライン1の復号を開始する。この時、エントロピ復号部215は発生確率テーブル記憶部206に格納されたブロック(0,2)を復号した後の発生確率テーブルを用いて復号を行う。その後、この発生確率テーブルまたはその更新結果を発生確率テーブル記憶部216に格納し、これを更新する。エントロピ復号部215は入力された符号化データをブロック毎に復号し、量子化された予測誤差の直交変換係数を画素再生部218に出力する。また、ブロック(1,2)を復号した後の発生確率テーブルは、発生確率テーブル記憶部216に格納する。また、ブロック単位の予測に関する情報を予測部217に、量子化パラメータがあればこれを量子化パラメータ記憶部219に出力する。予測部217はこの予測に関する情報を受け取り、バッファ210に格納されている再生された画像データからブロックの予測値を生成する。生成された予測値は画素再生部218に入力される。画素再生部218では、量子化された予測誤差の直交変換係数を量子化パラメータ記憶部219に格納されている量子化パラメータで逆量子化を行ったのちに逆直交変換を経て予測誤差を再生する。先頭のブロックに関してはスライスヘッダの復号結果の量子化パラメータを用いる。この予測誤差と前述の予測値を加算して復号画像の画素値を再生し、バッファ210に格納する。1ブロックライン分の復号が終了したら、バッファ210の内容を端子211から出力する。その後、バッファ204から次の奇数番目のブロックラインの符号化データを入力し、復号を開始する。
従って、エントロピ復号部205は(2i)番目のブロックラインを復号する際、先頭のブロックを復号する際の発生確率テーブルは発生確率テーブル記憶部216に格納されたブロック((2i−1)、2)を復号した後の発生確率テーブルを用いる。一方、エントロピ復号部215は(2i+1)番目のブロックラインを復号する際、先頭のブロックを復号する際の発生確率テーブルは発生確率テーブル記憶部206に格納されたブロック((2i)、2)を復号した後の発生確率テーブルを用いる。
最後に、図3(d)はプロファイル判定部104でパラレル・プロファイルと判定された場合のみ存在する。すなわち、tiles_or_entropy_coding_sync_idc符号の値が3の場合を示す。この場合、スライスヘッダに続いて、複数のタイルの符号化データが格納されている。ここではタイル数を2として説明する。但し、これに限定されない。各タイルはブロックライン単位で符号化データが続いておりブロックライン単位でWavefront処理によって復号される。この時、並列処理判定部107はセレクタ108の出力をタイル復号部109と復号部110に設定する入力されたタイルによってこれらを選択するようにする。セレクタにタイル402の符号化データが入力されれば、これをタイル復号部109に入力し、タイル403の符号化データが入力されれば、これをタイル復号部110に入力する。また、Wavefront処理で復号するようにタイル復号部109と復号部110に入力する。フレームメモリ111はタイル復号部109とタイル復号部110から復号画像を入力し、適宜該当する領域に格納するように制御信号を出力する。また、tiles_or_entropy_coding_sync_idc符号の値が1の時と同様に、スライスヘッダ復号部106で復号された量子化パラメータも其々のタイル復号部に入力される。
図3(d)の符号化データを入力したタイル復号部109は端子201を経由してブロックライン単位でバッファ204に符号化データを蓄積する。tiles_or_entropy_coding_sync_idc符号の値が2の時と同様に、エントロピ復号部205とエントロピ復号部215に出力される。すなわち、バッファ204は偶数番目のブロックラインの符号化データはエントロピ復号部205に、奇数番目のブロックラインの符号化データはエントロピ復号部215に出力される。以下、tiles_or_entropy_coding_sync_idc符号の値が2の時と同様に、タイル402内部のブロックラインをエントロピ復号部205とエントロピ復号部215を用いて交互に復号する。各エントロピ復号部は上のブロックラインのブロック(i、2)の復号後にその発生確率テーブルを用いて復号を開始する。ブロックライン毎に復号画像を再生し、図4(b)のように合成してタイルの復号画像をバッファ210に格納する。図1に戻って、フレームメモリ111はタイル復号部109のバッファ210とタイル復号部110のバッファ210からタイルの復号画像を読み出し、図4(a)のように合成してピクチャの画像データを再生して格納する。その後、端子112から出力する。
図5は実施形態1に係る画像復号装置における画像復号処理を示すフローチャートである。まず、ステップS501にて、シーケンスヘッダ復号部103が、シーケンスヘッダの復号を行い、profile_idc符号とlevel_idc符号を復号し、プロファイルの情報とレベルの情報を再生する。
ステップS502にて、シーケンスヘッダ復号部103が、シーケンスヘッダの復号を行い、pic_width_in_luma_samples符号とpic_height_in_luma_samples符号を復号し、ピクチャのサイズを再生する。
ステップS503にて、シーケンスヘッダ復号部103が、シーケンスヘッダの復号を行い、tiles_or_entropy_coding_sync_idc符号の復号を行い、0〜3の値のいずれかを再生する。
ステップS504にて、シーケンスヘッダ復号部103が、シーケンスヘッダの復号を行い、num_tile_columns_minus1符号とnum_tile_rows_minus1符号を復号し、タイルの分割数を再生する。タイルの分割数Tは(num_tile_columns_minus1+1)×(num_tile_columns_minus1+1)で算出される。ステップS505にて、並列処理判定部107が、タイル数をカウントする変数iを0でクリアする。
ステップS506にて、並列処理判定部107が、tiles_or_entropy_coding_sync_idc符号の値を判定し、値が1または3であれば、すなわち複数タイルを使用する時、ステップS511とS512に進む。ステップS511以降とステップS512以降は並列に処理される。そうでなければ、ステップS507に進む。
ステップS507にて、並列処理判定部107が、tiles_or_entropy_coding_sync_idc符号の値を判定し、値が2であれば、すなわち
Wavefront処理を行う時、ステップS508に進み、そうでなければステップS509に進む。ステップS508にて、タイル復号部109は0番目のタイルをWavefront処理によってブロックライン単位で並列に復号処理で復号し、復号画像を生成する。ステップS509にて、タイル復号部109は0番目のタイルをWavefront処理ではないシーケンシャルな復号処理で復号し、復号画像を生成する。
ステップS510にて、並列処理判定部107が、タイル数をカウントする変数iに1を加算して、ステップS518に進む。ステップS511にて、並列処理判定部107が、tiles_or_entropy_coding_sync_idc符号の値を判定し、値が3であれば、ステップS513に進み、そうでなければ、ステップS514に進む。
ステップS512にて、並列処理判定部107が、tiles_or_entropy_coding_sync_idc符号の値を判定し、値が3であれば、テップS515に進み、そうでなければ、ステップS516に進む。ステップS513にて、タイル復号部109はi番目のタイルをWavefront処理ではないシーケンシャルな復号処理で復号し、復号画像を生成する。ステップS514にて、タイル復号部109はi番目のタイルをWavefront処理ではないシーケンシャルな復号処理で復号し、復号画像を生成する。
ステップS515にて、タイル復号部109はi+1番目のタイルをWavefront処理ではないシーケンシャルな復号処理で復号し、復号画像を生成する。ステップS516にて、タイル復号部109はi+1番目のタイルをWavefront処理ではないシーケンシャルな復号処理で復号し、復号画像を生成する。ステップS517にて、並列処理判定部107が、タイル数をカウントする変数iに2を加算して、ステップS518に進む。ステップS518にて、並列処理判定部107が、タイル数をカウントする変数iとタイル数Tを比較し、タイル数をカウントする変数iがタイル数T未満であればステップS506に進む。そうでなければ、ステップS519に進む。
ステップS519にて、ヘッダ分離部102が、EOS(End_of_Sequence)を検出したら、全ての復号処理を終了する。そうでなければステップS505に進み、次のピクチャの復号を開始する。
以上の構成と動作により、ピクチャをタイル分割した上で、タイル内でWavefront等のブロックライン単位の並列処理を可能にすること可能にした。また、プロファイルによってその機能を制限することにより、並列処理が不要な装置や十分にシーケンシャルでも復号が可能な画像データに対して、余計な負荷を与えないで実現することが可能になった。
なお、本実施形態において、タイルでピクチャを2分割する場合について説明したが、分割数や分割の方法についてこれに限定されない。図4(a)において、タイル402、タイル403を垂直方向に2分割しても良い。このように分割するタイル数が増えた場合でも図1のタイル復号部109、110と同様のタイル復号部を増設することによって、より多いタイル数に対応できることは明らかである。
なお、本実施形態において、図2を用いて、Wavefrontでの並列処理を2つのブロックラインで説明したが、並列処理の数はこれに限定されない。図2のエントロピ復号部205、発生確率テーブル記憶部206、予測部207、画素再生部208、量子化パラメータ記憶部209を1つの塊とする。これを増設することによってより多い段数のブロックラインの並列化が可能なことは明らかである。
なお、本実施形態において、エントロピ復号部での復号で算術符号を例にとって説明したが、これに限定されない。また、算術符号で更新される統計情報として発生確率テーブルを例にとって説明したが、これに限定されない。
なお、Wavefront処理で先頭のブロックで逆量子化のための量子化パラメータをスライスヘッダに記載されている量子化パラメータとしたが、これに限定されない。例えば、算術符号が参照する発生確率テーブルを持つブロックの量子化パラメータでも良い。また、直前のブロックラインの先頭で量子化パラメータが更新された場合に直前のブロックラインの先頭の量子化パラメータを用いても良い。
また、本実施形態において、tiles_or_entropy_coding_sync_idc符号を用いて説明したが、これに限定されない。例えば、複数のタイルの有無を表すmulti_tile_exist_flag符号とタイル内のWavefront処理の有無を表すwavefront_proc_flag符号を用いても良い。すなわち、multi_tile_exist_flag符号の値が0であれば、1つのピクチャには1つのタイルのみとし、1であれば複数のタイルが含まれることとする。wavefront_proc_flag符号の値が0であれば、タイルの内部でWavefront処理は行わず、1であればWavefront処理を行うこととする。ここで、メイン・プロファイルの場合は少なくとも一方の値が0でなければならず、パラレル・プロファイルでは両方が1の場合を許容するものとする。
また、本実施形態ではエントロピ符号化方法として算術符号を例にとって説明したがこれに限定されない。例えば、符号化時に上のブロックラインの統計量や発生符号を参照して符号化する方法であればいずれの符号化方式を用いても構わない。
なお、本実施形態ではWavefront処理の際に先頭のブロックの復号時に直上のブロックラインの2番目のブロックの復号後の発生確率テーブルを用いたが、これに限定されない。例えば、任意の数をずらしたブロックの復号後の発生確率テーブルでも良いし、必ず、先頭のブロックの発生確率テーブルを用いても構わない。
なお、本実施形態ではタイルの分割に関する情報をシーケンス・パラメータ・セットの中に存在する場合について説明したが、これに限定されない。図11のようにピクチャ・パラメータ・セットの中に存在しても構わないし、別なヘッダに記載されてももちろん構わない。その場合、図5のステップS504ではこれらの情報の復号はピクチャヘッダの復号の中で行われる。
また、本実施形態ではタイルの分割に偶数の場合について説明したが、奇数であった場合では、最後に残ったタイルについてはS511以下で処理を行い、ステップS512以下は処理を行わない。
また、tiles_or_entropy_coding_sync_idc符号の値が0または1の場合はタイルが1つと決まっている。このため、ステップS504のnum_tile_columns_minus1符号等の復号を省略することも可能である。
<実施形態2>
以下、本発明の実施形態を、図面を用いて説明する。図6は本実施形態の画像符号化装置を示すブロック図である。本実施形態では実施形態1で説明した画像符号化フォーマットを持つビットストリームを生成するものとする。図6において、601は画像データをピクチャ単位で入力する端子である。602は入力された画像データを格納するフレームメモリである。603は画像データを符号化する際にプロファイルを設定するプロファイル設定部である。本実施形態において、説明を簡単にするため、実施形態1で説明した、メイン・プロファイルとパラレル・プロファイルを例にとって説明するが、これに限定されない。604は設定されたプロファイルを参照して、並列処理を行うか否かを設定する並列処理判定部である。605はプロファイル設定部603で設定されたプロファイルと並列処理設定部604の結果を含むシーケンス・パラメータ・セットを符号化するシーケンスヘッダ符号化部である。606はピクチャヘッダを符号化するピクチャヘッダ符号化部である。607はスライス単位のヘッダであるスライスヘッダを符号化するライスヘッダ符号化部である。608はセレクタであり、並列処理設定部604の出力に基づいて出力先を設定する。609、610はタイル符号化部であり、タイル単位での符号化を行う。611は合成部であり、シーケンスヘッダ符号化部605、ピクチャヘッダ符号化部606、スライスヘッダ符号化部607、タイル符号化部609、610から出力された符号化データを合成して、ビットストリームを生成する。612は端子であり、生成されたビットストリームを外部に出力する。
上記画像符号化装置における画像の符号化動作を以下に説明する。まず、ピクチャの符号化に先立ち、各種ヘッダの符号化を行う。プロファイル設定部603はビットストリームの用途等からプロファイルを決定し、決定されたプロファイルを後段に出力する。並列処理設定部604は決定されたプロファイルを参照して、tiles_or_entropy_coding_sync_idc符号の値を決定する。値の意味は実施形態1の表1に示すとおりである。まずはシーケンスヘッダ符号化部605が動作し、プロファイル設定部603及び並列処理設定部604の出力結果と符号化する画像の特性をシーケンス・パラメータ・セットとして符号化し、合成部611に出力する。符号化方法は特に限定しないが、ハフマン符号や算術符号等を用いることができる。続いて、ピクチャヘッダ符号化部606はピクチャ・パラメータ・セットを符号化して合成部611に出力する。合成部611はこれらのヘッダの符号化データを適宜合成して、図3のビットストリームのヘッダからピクチャ・パラメータ・セットまでのビットストリームを生成し、端子612から出力する。
続いて、端子601から符号化する画像データがピクチャ単位で入力される。以後、ピクチャ単位の符号化処理となる。並列処理設定部604がtiles_or_entropy_coding_sync_idc符号の値を0とした場合について説明する。並列処理設定部604からの制御信号により、並列処理設定部604はセレクタ608の出力先をタイル符号化部609のとする。この際、タイル符号化部610は動作させない。また、合成部611はタイル符号化部609からの符号化データを入力する。
セレクタ608はフレームメモリ602に格納されているピクチャの画像データを1つのタイルとして、タイル符号化部609に入力する。また、スライスヘッダ符号化部607は先頭のブロックに適用する量子化パラメータを符号化し、他のヘッダ情報の符号化結果とともに合成部611に入力する。タイル符号化部609では入力された画像データをブロックに分割し、ブロック順にシーケンシャルに符号化する。
図7はタイル符号化部609または610の詳細な構成を表すブロック図である。図7において、701は端子であり、図6のフレームメモリ602からタイル単位で画像データを入力する。702は端子であり、図6の並列処理設定部604からtiles_or_entropy_coding_sync_idc符号の値を入力する。703は端子であり、スライスヘッダ符号化部607で符号化された、スライスの先頭のブロックに言適用する量子化パラメータの値を入力する。704はバッファであり、1タイル分の画像データを格納する。バッファ704はtiles_or_entropy_coding_sync_idc符号の値が0、1の時は後段の予測誤差生成部705にのみ画像データを供給する。2,3の時は後段の予測誤差生成部705と予測誤差生成部715に適宜タイルの画像データを分割して供給する。705、715は予測誤差生成部である。予測誤差生成部705、715は、入力された画像データからブロック単位で予測、例えばイントラ予測や動き補償を行い、予測に関する情報を決定する。その後、決定された予測に関する情報に基づいてバッファ709や必要に応じて符号化済みの他のピクチャを参照しながら予測値を生成する。その予測値を入力された画素から減じたものを直交変換し、適宜決められた量子化パラメータで量子化して出力する。706、716はこれら決定された量子化パラメータを格納する量子化パラメータ記憶部である。量子化パラメータ記憶部706、716は端子703から入力されたスライスの先頭のブロックに言適用する量子化パラメータの値を別途格納しておく。707、717はエントロピ符号化部である。ここでは算術符号化を例にとって説明するが、これに限定されない。708、718は発生確率テーブル記憶部であり、エントロピ符号化部707、717で更新される発生確率テーブルを記憶する。709はバッファであり、生成された符号化データを格納する。710は端子であり、生成された符号化データを図6の合成部611に出力する。
端子702から入力されるtiles_or_entropy_coding_sync_idc符号の値は0である。バッファ704は予測誤差生成部705にのみ画像データを供給する。予測誤差生成部715、量子化パラメータ記憶部716、エントロピ符号化部717、発生確率テーブル記憶部718は動作させない。バッファ709はエントロピ符号化部707から符号化データを入力する。
端子701から入力された画像データをブロック単位で予測誤差生成部705に入力する。予測誤差生成部705は予測方法の決定、決定された予測方法に基づく予測により予測値を生成する。決定された予測方法や予測に必要な情報はエントロピ符号化部707に入力される。生成された予測値と入力された画像データの差分から予測誤差を生成する。この予測誤差に直交変換を施して直交変換係数を生成し、これを量子化パラメータ記憶部706の量子化パラメータを用いて量子化する。量子化パラメータは適宜更新され、更新された量子化パラメータは量子化パラメータ記憶部706に格納される。量子化された結果はエントロピ符号化部707に入力される。エントロピ符号化部707は予測に関する情報や量子化結果を入力し、発生確率テーブル記憶部708に格納されている発生確率テーブルを参照しながらブロック単位でシーケンシャルに符号化する。符号化を行いつつ、発生確率テーブルを更新する。バッファ709は1タイル分のブロックの符号化データを格納し、端子710から出力する。図6に戻り、合成部611は図3(a)のビットストリームとなるようにタイル符号化部609からのタイル画像の符号化データを合成する。
続いて、tiles_or_entropy_coding_sync_idc符号の値が1の場合について説明する。ここでは実施形態1と同様に図4(a)のようにタイルに分割されているものとして説明を行う。図6において、並列処理設定部604からの制御信号により、セレクタ608はタイル402の画像データの出力先としてタイル符号化部609を、タイル403の画像データの出力先としてタイル符号化部610を適宜選択する。また、合成部611はタイル符号化部609及び610からそれぞれのタイルの符号化データを入力するように制御する。
フレームメモリ602から入力されたタイル402の画像データはタイル符号化部609に入力され、同時に、タイル403の画像データはタイル符号化部610に入力される。タイル符号化部609では、図7の端子701からタイルの画像データを入力し、バッファ704に格納する。端子702から入力される制御信号により、バッファ704は予測誤差生成部705にのみ画像データを供給する。予測誤差生成部715、量子化パラメータ記憶部716、エントロピ符号化部717、発生確率テーブル記憶部718は動作させない。バッファ709はエントロピ符号化部707から符号化データを入力し、端子710から出力する。以下、tiles_or_entropy_coding_sync_idc符号の値が0の時と同様に符号化を行う。並行して、タイル符号化部610でも同様にバッファ704、予測誤差生成部705、量子化パラメータ記憶部、エントロピ符号化部707、発生確率テーブル記憶部708、バッファ709を用いてタイルの画像データの符号化を行う。バッファ709はエントロピ符号化部707から符号化データを入力し、端子710から出力する。図6に戻り、合成部611は図3(b)のビットストリームとなるようにタイル符号化部609からのタイル402の符号化データとタイル符号化部610からのタイル403の符号化データとを合成する。
続いて、tiles_or_entropy_coding_sync_idc符号の値が2の場合について説明する。図6において、並列処理設定部604からの制御信号により、セレクタ608は画像データの出力先としてタイル符号化部609のみを選択する。タイル符号化部609に処理はブロックライン単位でWavefront処理によって符号化するように制御される。また、合成部611はタイル符号化部609からのタイルの符号化データを入力するように制御する。
フレームメモリ602から入力されたピクチャの画像データはタイル符号化部609に入力される。
タイル符号化部609では、図7の端子701からタイルの画像データを入力し、バッファ704に格納する。端子702から入力される制御信号により、バッファ704は偶数番目のブロックラインの画像データを予測誤差生成部705に、奇数番目のブロックラインの画像データは予測誤差生成部715に入力する。
予測誤差生成部705は偶数番目のブロックラインのブロック単位にtiles_or_entropy_coding_sync_idc符号の値が0や1の時と同様に処理を行う。すなわち、予測値を生成し、予測誤差を求め、直交変換を行い、量子化パラメータ記憶部706の量子化パラメータを用いて量子化する。その結果と予測方法をエントロピ符号化部707に入力する。但し、先頭のブロックの量子化パラメータは端子703から入力された量子化パラメータを用いる。さらに、量子化パラメータは適宜更新され、更新された量子化パラメータは量子化パラメータ記憶部706に格納される。エントロピ符号化部707はブロック単位で画像データの符号化を行う。また、ブロック(0,2)を符号化した後の発生確率テーブルは、発生確率テーブル記憶部708に格納する。すなわち、ブロック(0,3)の符号化時をする前にはブロック(0,2)の発生確率テーブルが発生確率テーブル記憶部708に格納されている。生成されたブロック単位の符号化データはバッファ709に格納される。1ブロックライン分の符号化が終了したら、バッファ709の内容を端子710から出力する。その後、バッファ704から以後の偶数(2i)番目のブロックラインの画像データを入力し、符号化を開始する。(但し、iは0以上の整数)但し、その先頭のブロックの符号化は発生確率テーブル記憶部718に格納された直前の奇数番目のブロックラインのブロック((2i―1),2)を符号化した後の発生確率テーブルを用いて行う。
また、予測誤差生成部715は奇数番目のブロックラインのブロック単位にtiles_or_entropy_coding_sync_idc符号の値が0や1の時と同様に処理を行う。すなわち、予測値を生成し、予測誤差を求め、直交変換を行い、量子化パラメータ記憶部716の量子化パラメータを用いて量子化する。その結果と予測方法をエントロピ符号化部717に入力する。エントロピ符号化部717はエントロピ符号化部707がブロック(0,2)の符号化が終了した時点で、ブロックラインの符号化を開始する。この時、エントロピ符号化部717は発生確率テーブル記憶部708に格納されたブロック(0,2)を符号化した後の発生確率テーブルを用いて符号化を行う。また、ブロック(1,2)を符号化した後の発生確率テーブルは、発生確率テーブル記憶部718に格納する。エントロピ符号化部717は入力された符号化データをブロック毎に符号化する。生成されたブロック単位の符号化データはバッファ709に格納される。1ブロックライン分の符号化が終了したら、バッファ709の内容を端子710から出力する。その後、バッファ704から以後の奇数(2i+1)番目のブロックラインの画像データを入力し、符号化を開始する。但し、その先頭のブロックの符号化は発生確率テーブル記憶部708に格納された直前の偶数番目のブロックラインのブロック(2i,2)の符号化後の発生確率テーブルを用いて行う。バッファ709はエントロピ符号化部707とエントロピ符号化部717から符号化データを入力し、端子710から出力する。図6に戻り、合成部611は図3(c)のビットストリームとなるようにタイル符号化部609からのブロックライン単位の符号化データを合成する。
最後に、tiles_or_entropy_coding_sync_idc符号の値が3の場合について説明する。ここでは実施形態1と同様に図4(a)のようにタイルに分割されているものとして説明を行う。図6において、並列処理設定部604からの制御信号により、セレクタ608はタイル402の画像データの出力先としてタイル符号化部609を、タイル403の画像データの出力先としてタイル符号化部610を適宜選択する。タイル符号化部609及び610に処理はブロックライン単位でWavefront処理によって符号化するように制御される。また、合成部611はタイル符号化部609及び610からそれぞれのタイルの符号化データを入力するように制御する。
フレームメモリ602から入力されたタイル402の画像データはタイル符号化部609に入力され、同時に、タイル403の画像データはタイル符号化部610に入力される。
タイル符号化部609では、図7の端子701からタイルの画像データを入力し、バッファ704に格納する。端子702から入力される制御信号により、バッファ704は偶数番目のブロックラインの画像データを予測誤差生成部705に、奇数番目のブロックラインの画像データは予測誤差生成部715に入力する。予測誤差生成部705は偶数番目のブロックラインのブロック単位にtiles_or_entropy_coding_sync_idc符号の値が2の時と同様に処理を行う。すなわち、予測値を生成し、予測誤差を求め、直交変換を行い、量子化パラメータ記憶部706の量子化パラメータを用いて量子化する。その結果と予測方法をエントロピ符号化部707に入力する。エントロピ符号化部707はブロック単位で画像データの符号化を行う。また、ブロック(0,2)を符号化した後の発生確率テーブルは、発生確率テーブル記憶部708に格納する。
また、予測誤差生成部715は奇数番目のブロックラインのブロック単位にtiles_or_entropy_coding_sync_idc符号の値が2の時と同様に処理を行う。すなわち、予測値を生成し、予測誤差を求め、直交変換を行い、量子化パラメータ記憶部716の量子化パラメータを用いて量子化する。その結果と予測方法をエントロピ符号化部717に入力する。エントロピ符号化部717はエントロピ符号化部707がブロック(0,2)の符号化が終了した時点で、ブロックラインの符号化を開始する。以後、エントロピ符号化部717はブロック単位で画像データの符号化を行う。また、ブロック(1,2)を符号化した後の発生確率テーブルは、発生確率テーブル記憶部718に格納する。
従って、エントロピ符号化部707は(2i)番目のブロックラインを符号化する際、先頭のブロックを符号化する際の発生確率テーブルは発生確率テーブル記憶部718に格納されたブロック((2i−1)、2)を符号化した後の発生確率テーブルを用いる。一方、エントロピ符号化部717は(2i+1)番目のブロックラインを符号化する際、先頭のブロックを符号化する際の発生確率テーブルは発生確率テーブル記憶部708に格納されたブロック((2i)、2)を符号化した後の発生確率テーブルを用いる。
バッファ709はエントロピ符号化部707とエントロピ符号化部717から符号化データを入力し、端子710から出力する。図6に戻り、合成部611は図3(d)のビットストリームとなるようにタイル符号化部609からのブロックライン単位の符号化データを合成する。
図8は実施形態2に係る画像符号化装置における画像符号化処理を示すフローチャートである。
まず、ステップS801にて、プロファイル設定部693でプロファイルの設定を行い、シーケンスヘッダ符号化部605がプロファイルとレベルの符号化を行い、profile_idc符号とlevel_idc符号を生成する。ステップS802にて、シーケンスヘッダ符号化部605が画像サイズの符号化を行い、pic_width_in_luma_samples符号とpic_height_in_luma_samples符号を生成する。ステップS803にて、並列処理設定部604は、プロファイルがメイン・プロファイルであれば、tiles_or_entropy_coding_sync_idc符号のために0から2の値を設定する。また、プロファイルがメイン・プロファイルであれば、tiles_or_entropy_coding_sync_idc符号のために0から3の値を設定する。その後、シーケンスヘッダ符号化部605がtiles_or_entropy_coding_sync_idc符号を生成する。
ステップS804にて、並列処理設定部604は、ピクチャのタイルによる分割数を決定し、シーケンスヘッダ符号化部605が符号化し、num_tile_columns_minus1符号とnum_tile_rows_minus1符号を生成する。ステップS805にて、並列処理設定部604が、符号化するピクチャ数をカウントする変数fを0でクリアする。本実施形態ではF枚のピクチャを符号化するものとして説明を行う。ステップS806にて、並列処理設定部604が、タイル数をカウントする変数iを0でクリアする。
ステップS807にて、並列処理設定部604が、tiles_or_entropy_coding_sync_idc符号の値が1または3であれば、ステップS812とS813に進んで処理を行う。それ以外であれば、ステップS808に進む。ステップS812以下とステップS813以下は並列に処理される。ステップS808にて、並列処理設定部604が、tiles_or_entropy_coding_sync_idc符号の値が2であれば、ステップS809に進み、そうでなければステップS810に進む。
ステップS809にて、タイル符号化部609は0番目のタイルをWavefront処理によってブロックライン単位で並列に符号化し、符号化データを生成する。ステップS810にて、タイル符号化部609は0番目のタイルをWavefront処理ではないシーケンシャルな符号化処理で復号し、符号化データを生成する。ステップS811にて、並列処理設定部604が、タイル数をカウントする変数iに1を加算して、ステップS819に進む。
ステップS812にて、並列処理設定部604が、tiles_or_entropy_coding_sync_idc符号の値を判定し、値が3であれば、ステップS814に進み、そうでなければ、ステップS815に進む。ステップS813にて、並列処理設定部604が、tiles_or_entropy_coding_sync_idc符号の値を判定し、値が3であれば、ステップS816に進み、そうでなければ、ステップS817に進む。
ステップS814にて、タイル符号化部609はi番目のタイルをWavefront処理によってブロックライン単位で並列に符号化し、符号化データを生成する。ステップS815にて、タイル符号化部609はi番目のタイルをWavefront処理ではないシーケンシャルな符号化処理で復号し、符号化データを生成する。
ステップS816にて、タイル符号化部609は(i+1)番目のタイルをWavefront処理によってブロックライン単位で並列に符号化し、符号化データを生成する。ステップS817にて、タイル符号化部609は(i+1)番目のタイルをWavefront処理ではないシーケンシャルな符号化処理で復号し、符号化データを生成する。
ステップS818にて、並列処理設定部604が、タイル数をカウントする変数iに2を加算して、ステップS819に進む。ステップS819にて、並列処理設定部604が、タイル数をカウントする変数iとタイル数Tを比較し、タイル数をカウントする変数iがタイル数T未満であればステップS807に進む。そうでなければ、ステップS820に進む。
ステップS820にて、並列処理設定部604が、ピクチャ数をカウントする変数fに1を加算してステップS821に進む。ステップS821にて、 並列処理設定部604が、符号化するピクチャ数をカウントする変数fと符号化するピクチャの総数Fを比較する。ピクチャ数をカウントする変数fがピクチャ総数F未満であればステップS807に進む。そうでなければ、ステップS822に進む。ステップS822にて、合成部611はビットストリームの終端を表すEOSを出力端子612から出力して、全ての動作を終了する。
以上の構成と動作により、ピクチャをタイル分割した上で、タイル内でWavefront等のブロックライン単位の並列処理を可能にする符号化フォーマットを持つビットストリームの生成を可能にした。また、エンコーダ側で適切にプロファイルによってその機能を制限することにより、並列処理が不要な装置や十分にシーケンシャルでも復号が可能な画像データに対して、余計な負荷を与えないで実現することが可能になった。
なお、本実施形態において、タイルでピクチャを2分割する場合について説明したが、分割数や分割の方法についてこれに限定されない。図4(a)において、タイル402、タイル403を垂直方向に2分割しても良い。このように分割するタイル数が増えた場合でも図1のタイル符号化部609、610と同様のタイル符号化部を増設することによって、より多いタイル数に対応できることは明らかである。
なお、本実施形態において、Wavefrontでの並列処理を2つのブロックラインで説明したが、並列処理の数はこれに限定されない。図7の予測誤差生成部715、量子化パラメータ記憶部76エントロピ符号化部707、発生確率テーブル記憶部708を1つの塊とする。これを増設することによってより多い段数のブロックラインの並列化が可能なことは明らかである。
なお、本実施形態において、エントロピ符号化部での符号化で算術符号を例にとって説明したが、これに限定されない。また、算術符号で更新される統計情報として発生確率テーブルを例にとって説明したが、これに限定されない。
なお、Wavefront処理で先頭のブロックで逆量子化のための量子化パラメータをスライスヘッダに記載されている量子化パラメータとしたが、これに限定されない。例えば、算術符号が参照する発生確率テーブルを持つブロックの量子化パラメータでも良い。また、直前のブロックラインの先頭で量子化パラメータが更新された場合に直前のブロックラインの先頭の量子化パラメータでも良い。
また、本実施形態において、tiles_or_entropy_coding_sync_idc符号を用いて説明したが、これに限定されない。例えば、複数のタイルの有無を表すmulti_tile_exist_flag符号とタイル内のWavefront処理の有無を表すwavefront_proc_flag符号を用いても良い。すなわち、multi_tile_exist_flag符号の値が0であれば、1つのピクチャには1つのタイルのみとし、1であれば複数のタイルが含まれることとする。wavefront_proc_flag符号の値が0であれば、タイルの内部でWavefront処理は行わず、1であればWavefront処理を行うこととする。ここで、メイン・プロファイルの場合は少なくとも一方の値が0でなければならず、パラレル・プロファイルでは両方が1の場合を許容するものとする。
なお、本実施形態ではWavefront処理の際に先頭のブロックの符号化時に直上のブロックラインの2番目のブロックを符号化した後の発生確率テーブルを用いたが、これに限定されない。例えば、任意の数をずらしたブロックの発生確率テーブルでも良いし、必ず、先頭のブロックの発生確率テーブルを用いても構わない。
フレーム数をカウントしてシーケンスの終了を検知して符号化を終了したが、これに限定されない。例えば、リアルタイム符号化伝送においてはその枚数が限定されないため、システムからシーケンスの終了を表す信号を受信して終了しても構わない。
また、図8のステップS801のプロファイルとレベルの設定、及びステップS803の並列処理方法の設定において、レベルに応じてtiles_or_entropy_coding_sync_idc符号が3を用いることの可否を予め決定しても構わない。表2にその様子を示す。
すなわち、ピクチャサイズが小さい場合、複数の並列処理の方法を合わせて使用しても並列化制御の複雑度の上昇に比べて、並列化による高速化の効果が小さく、並列化に伴う符号化効率の低下が大きくなる。そこで、画像のサイズやフレームレートが低い場合にはこれらを行わないように制限する。これによって、並列処理での高速化と実装の複雑度・規模のバランスを取ることが可能になる。
また、ピクチャサイズが大きい場合、プロファイルによって、タイルの分割数を決めて処理の規模をプロファイル内で同じようにすることが可能である。表3にその様子を示す。
すなわち、ピクチャサイズが大きいかフレームレートが高い場合、タイルがある程度の一律な大きさになるようにタイル分割を行う。例えば、水平画素数が所定の最大水平画素数N(ここでは2048)を超えたら水平方向に分割を行う。また、垂直画素数が所定の最大垂直画素数M(ここでは1088)を超えたら垂直方向に分割を行う。または、ピクチャの総画素数が所定の総画素数L(ここでは2228224=2048×1088)を超えたら分割を行う。表3に示したようにレベル5、5.1,5.2ではタイル分割するもののtiles_or_entropy_coding_sync_idc符号の値が3となることを許容しないようにすることもできる。もちろん、タイル分割とtiles_or_entropy_coding_sync_idc符号の値が3となることを許容することが一致していても構わない。図9にその様子を示す。図9は画像符号化処理を示すフローチャートである。図9において、図8のフローチャートと同じ機能を果たすブロックについては、同じ番号を付し、説明を省略する。ステップS904にて、並列処理設定部604はプロファイル設定部603から入力されたプロファイルとピクチャのサイズから分割数を決定する。但し、分割数はプロファイルとレベルないしピクチャサイズから自明のため、符号化しない。
タイル分割を固定することで、パラレル・プロファイルであれば、そのレベルに応じて分割数が決まる。これにより、シーケンス・パラメータ・セットのnum_tile_columns_minus1符号とnum_tile_rows_minus1符号を省略することも可能である。
なお、本実施形態ではタイルの分割に関する情報をシーケンス・パラメータ・セットの中に存在する場合について説明したが、これに限定されない。図11のようにピクチャ・パラメータ・セットの中に存在しても構わないし、別なヘッダに記載されてももちろん構わない。その場合、図8のステップS804ではこれらの情報の符号化はピクチャヘッダの符号化の中で行われる。
また、本実施形態ではタイルの分割に偶数の場合について説明したが、奇数であった場合では、最後に残ったタイルについてはS812以下で処理を行い、ステップS813以下は処理を行わない。
<実施形態3>
図1、図2、図6、図7に示した各処理部はハードウェアでもって構成しているものとして上記実施形態では説明した。しかし、これらのブロック図に示した各処理部で行なう処理をコンピュータプログラムでもって構成しても良い。
図12は、上記各実施形態に係る画像表示装置に適用可能なコンピュータのハードウェアの構成例を示すブロック図である。
CPU1201は、RAM1202やROM1203に格納されているコンピュータプログラムやデータを用いてコンピュータ全体の制御を行うと共に、上記各実施形態に係る画像処理装置が行うものとして上述した各処理を実行する。即ち、CPU1201は、図1、図2、図6、図7に示した各処理部として機能することになる。
RAM1202は、外部記憶装置1206からロードされたコンピュータプログラムやデータ、I/F(インターフェース)1209を介して外部から取得したデータなどを一時的に記憶するためのエリアを有する。更に、RAM1202は、CPU1201が各種の処理を実行する際に用いるワークエリアを有する。即ち、RAM1202は、例えば、フレームメモリとして割当てたり、その他の各種のエリアを適宜提供したりすることができる。
ROM1203には、本コンピュータの設定データや、ブートプログラムなどが格納されている。操作部1204は、キーボードやマウスなどにより構成されており、本コンピュータのユーザが操作することで、各種の指示をCPU1201に対して入力することができる。表示部1205は、CPU1201による処理結果を表示する。また表示部1205は例えば液晶ディスプレイで構成される。
外部記憶装置1206は、ハードディスクドライブ装置に代表される、大容量情報記憶装置である。外部記憶装置1206には、OS(オペレーティングシステム)や、図1、図2、図6、図7に示した各部の機能をCPU1201に実現させるためのコンピュータプログラムが保存されている。更には、外部記憶装置1206には、処理対象としての各画像データが保存されていても良い。
外部記憶装置1206に保存されているコンピュータプログラムやデータは、CPU1201による制御に従って適宜、RAM1202にロードされ、CPU1201による処理対象となる。I/F1207には、LANやインターネット等のネットワーク、投影装置や表示装置などの他の機器を接続することができ、本コンピュータはこのI/F1207を介して様々な情報を取得したり、送出したりすることができる。1208は上述の各部を繋ぐバスである。
上述の構成からなる作動は前述のフローチャートで説明した作動をCPU1201が中心となってその制御を行う。
<その他の実施形態>
本実施形態で、タイルは直接ピクチャを分割したが、これに限定されない。7680×4320をはるかに超えるような大きさの画面を扱う際に、これを分割するサブピクチャのようなものを設け、これを本実施形態のピクチャとして扱っても構わない。例えば、15360×8640のような画像の時に7680×4320をサブピクチャとして4分割してそれぞれのサブピクチャを4つのタイルに分割して本発明を適用することもできる。図10にその時の画像符号化フォーマットの例を示す。シーケンス・パラメータ・セットにさらにサブピクチャの分割を表す符号として、num_subpic_columns_minus1符号とnum_subpic_rows_minus1符号を追加する。これはサブピクチャの水平方向の分割数と垂直方向の分割数を表す。さらにサブピクチャのヘッダでtiles_or_entropy_coding_sync_idc符号、タイル分割数の符号を備えることで、大きなピクチャにも対応することが簡単にできるようになる。
本発明の目的は、前述した機能を実現するコンピュータプログラムのコードを記録した記憶媒体を、システムに供給し、そのシステムがコンピュータプログラムのコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたコンピュータプログラムのコード自体が前述した実施形態の機能を実現し、そのコンピュータプログラムのコードを記憶した記憶媒体は本発明を構成する。また、そのプログラムのコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した機能が実現される場合も含まれる。
さらに、以下の形態で実現しても構わない。すなわち、記憶媒体から読み出されたコンピュータプログラムコードを、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。そして、そのコンピュータプログラムのコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行って、前述した機能が実現される場合も含まれる。
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するコンピュータプログラムのコードが格納されることになる。