以下に添付図面を参照して、この発明にかかる画像符号化方法、画像復号方法、画像符号化装置および画像復号装置の好適な実施形態を詳細に説明する。
本実施形態にかかる画像符号化装置および画像復号装置は、色差のフォーマット情報を参照し、所定のブロックサイズより小さいブロックに対しては、動きベクトルの示す画素位置が色差で補間処理とならないように制御することでメモリバンド幅を削減する。
図1は、本実施形態にかかる画像符号化装置100の構成の一例を示すブロック図である。図1に示すように、画像符号化装置100は、減算部102と、変換/量子化部103と、逆量子化/逆変換部104と、エントロピー符号化部105と、加算部106と、フレームメモリ108と、予測画像生成部110と、予測制御部112と、符号化制御部113と、動きベクトル探索部116と、を備えている。
画像符号化装置100は、入力動画像信号101から、符号化データ120を生成する。画像符号化装置100には、例えばフレーム単位で入力動画像信号101が入力される。入力動画像信号101は、例えば、マクロブロックといった単位にブロック化される。
減算部102は、予測画像生成部110で生成された予測画像信号111と入力動画像信号101との差分である予測誤差信号を出力する。
変換/量子化部103は、予測誤差信号を例えば離散コサイン変換(DCT)などにより直交変換した上で、量子化処理を実行し、量子化変換係数情報を生成する。量子化変換係数情報は、二分岐され、一方は、エントロピー符号化部105に入力される。二分岐された量子化変換係数情報の他方は、逆量子化/逆変換部104に入力される。
逆量子化/逆変換部104は、変換/量子化部103の処理と逆の処理として、逆量子化、逆変換の処理を量子化変換係数情報に対して実行し、予測誤差信号を再生する。
加算部106は、予測誤差信号と予測画像信号とを加算する。これにより、復号画像信号107が生成される。復号画像信号107は、フレームメモリ108に入力される。
フレームメモリ108は、参照画像信号を記憶する記憶部である。フレームメモリ108は、復号画像信号107に対してフィルタ処理等を行った後に、予測画像生成部110に入力する参照画像信号109とするために、復号画像信号107を蓄えるかを判定する。参照画像信号109は、予測画像生成部110に入力されるとともに、動きベクトル探索部116にも入力される。
動きベクトル探索部116は、入力動画像信号101と、参照画像信号109とから、動きベクトル情報117を生成する。動きベクトル情報117は、予測画像生成部110に入力されるとともに、エントロピー符号化部105にも送られる。
予測画像生成部110は、参照画像信号109と予測制御情報118と動きベクトル情報117とから、予測画像信号111を生成する。
符号化制御部113は、ブロックサイズ制限情報115を予測制御部112に入力するとともに、プロファイル・レベル情報119をエントロピー符号化部105に送る。
プロファイル・レベル情報119は、符号化ツール群の組合せを表すプロファイル情報と、画像復号装置の処理能力に応じた画像符号化装置の制限情報であるレベル情報とを含む。レベル情報は、例えば、時間当たりの最大マクロブロック数、フレームあたりの最大マクロブロック数、ベクトルの最大探索範囲、および、連続する2マクロブロック数でのベクトル数等の制限の組合せを示す情報を表す。
例えば、H.264では、ベースラインプロファイル、メインプロファイル、ハイプロファイルなどのプロファイル情報が定められている。また、H.264では、16段階のレベル情報が定められている。
本実施形態では、このプロファイル・レベル情報を用いて、メモリバンド幅削減方法を適用するか否か、ブロックサイズの制限値(ブロックサイズ制限情報115)、および、制限方法等のパラメータを規定する。なお、プロファイル・レベル情報以外の情報でこれらのパラメータを規定するように構成してもよい。
ブロックサイズ制限情報115は、ブロックサイズの判定に用いる閾値(ブロックサイズの制限値)を定める情報である。例えば、符号化制御部113が、プロファイル・レベル情報に応じて異なるブロックサイズ制限情報115を設定する。ブロックサイズ制限情報115を、プロファイル・レベル情報に含むように構成してもよい。
予測制御部112は、符号化制御部113から入力されるブロックサイズ制限情報115と、入力動画像信号101の色フォーマット情報114と、動きベクトル探索部116から入力される動きベクトル情報117とに従って、予測画像生成部110による予測画像生成処理を制御する(詳細は後述)。予測制御部112は、予測画像生成処理の制御に用いる予測制御情報118を生成する。予測制御情報118は、予測画像生成部110に入力されるとともに、エントロピー符号化部105にも送られる。
エントロピー符号化部105は、符号化情報をエントロピー符号化して予め決められたシンタクスに従って符号化データ120を生成する。符号化情報には、例えば、変換/量子化部103から入力される量子化変換係数情報、入力動画像信号の色フォーマット情報114、動きベクトル探索部116から入力される動きベクトル情報117、予測制御部112から入力される予測制御情報118、および、符号化制御部113から入力されるプロファイル・レベル情報119などが含まれる。
ここで、色フォーマット情報114について説明する。色フォーマット情報114は、入力動画像信号101の色フォーマットを表す情報である。図2は、色フォーマット情報114の一例を示す図である。図2は、H.264等で用いられるchroma_format_idcを色フォーマット情報114として用いる例を示している。
chroma_format_idc=0は、輝度のみのモノクロフォーマットを表す。chroma_format_idc=1は、輝度に対して色差が水平方向と垂直方向の1/2にサンプリングされている4:2:0フォーマットを表す。chroma_format_idc=2は、輝度に対して色差が水平方向にのみ1/2にサンプリングされている4:2:2フォーマットを表す。chroma_format_idc=3は、輝度と色差が同じ画素数の4:4:4フォーマットを表す。
輝度信号の予測ブロックの水平方向のサイズをnPSWとし、垂直方向のサイズをnPSHとする。4:2:0フォーマットの場合、色差信号CbとCrのブロックは、水平方向のサイズはnPSW/2となり、垂直方向のサイズはnPSH/2となる。4:2:2フォーマットの場合は、色差信号CbとCrのブロックは、水平方向のサイズはnPSW/2となり、垂直方向のサイズはnPSHとなる。4:4:4フォーマットの場合は、色差信号CbとCrのブロックは、水平方向のサイズはnPSWとなり、垂直方向のサイズはnPSHとなる。
次に、色フォーマットと補間処理との関係について説明する。
図3は、4:2:0フォーマットで色差信号の1/8画素精度での補間画像での動きベクトルの位置を示す図である。“B”が色差信号の整数画素位置であり、補間処理が必要ない動きベクトルの位置を示す。白色の部分は、水平方向または垂直方向のみの色差信号の1次元補間処理が必要な動きベクトルの位置を示す。薄い網掛けの部分は、水平方向および垂直方向の双方で色差信号の補間処理を行う2次元補間処理が必要な動きベクトルの位置を示す。
図4は、4:2:0フォーマットで輝度信号の1/4画素精度での補間画像での動きベクトルの位置を示す図である。“A”が輝度信号の整数画素位置であり、輝度信号の補間処理が必要ない動きベクトルの位置を示す。“A”でかつ白色の部分は、輝度信号も色差信号も補間処理が必要ない動きベクトルの位置を示す。“A”でかつ薄い網掛けの部分は、輝度信号では補間画像処理が必要でないが、色差信号で補間処理が必要な位置を示す。
白色の部分のうち“A”でない部分は、水平方向または垂直方向のみの輝度信号および色差信号の1次元補間処理が必要な動きベクトルの位置を示す。薄い網掛けの部分のうち“A”でない部分は、輝度信号および色差信号で水平方向および垂直方向の双方で補間処理を行う2次元補間処理が必要な動きベクトルの位置を示す。濃い網掛けの部分は、輝度信号では、水平方向または垂直方向のみの1次元補間処理が必要であり、色差信号では、水平方向および垂直方向の双方での補間処理を行う2次元補間処理が必要な動きベクトルの位置を示す。
図5は、4:2:2フォーマットで色差信号の水平方向に1/4画素精度、垂直方向に1/8画素精度での補間画像での動きベクトルの位置を示す図である。“B”が色差信号の整数画素位置であり、補間処理が必要ない動きベクトルの位置を示す。白色の部分は、水平方向または垂直方向のみの色差信号の1次元補間処理が必要な動きベクトルの位置を示す。薄い網掛けの部分は、水平方向および垂直方向の双方で色差信号の補間処理を行う2次元補間処理が必要な動きベクトルの位置を示す。
図6は、4:2:2フォーマットで輝度信号の1/4画素精度での補間画像での動きベクトルの位置を示す図である。“A”が輝度信号の整数画素位置であり、輝度信号の補間処理が必要ない動きベクトルの位置を示す。“A”でかつ白色の部分は、輝度信号も色差信号も補間処理が必要ない動きベクトルの位置を示す。“A”でかつ薄い網掛けの部分は、輝度信号では補間画像処理が必要でないが、色差信号で補間処理が必要な位置を示す。
白色の部分のうち“A”でない部分は、水平方向または垂直方向のみの輝度信号および色差信号の1次元補間処理が必要な動きベクトルの位置を示す。薄い網掛けの部分のうち“A”でない部分は、輝度信号および色差信号で水平方向および垂直方向の双方で補間処理を行う2次元補間処理が必要な動きベクトルの位置を示す。濃い網掛けの部分は、輝度信号では、水平方向のみの1次元補間処理が必要であり、色差信号では、水平方向および垂直方向の双方での補間処理を行う2次元補間処理が必要な動きベクトルの位置を示す。
次に、色フォーマットと補間処理でアクセスする画素との関係について説明する。
図7および図8は、4:2:0フォーマットで、ブロック単位で補間画像を生成する時にアクセスする画素の例を示す図である。
図7は、輝度信号について、8タップの補間フィルタで4×4画素ブロックの補間画像を生成する場合にアクセスを必要とする最大の画素を示している。2次元補間処理の場合、4×4画素ブロックの補間画像を作成するために、ブロック外の左と上の3画素と右と下の4画素にアクセスする必要がある。全体としては、11×11画素にアクセスする必要がある。ブロック外にアクセスする画素数は、タップ長に依存するため、同じタップ長の補間フィルタの場合、小さいブロックほど、画素あたりのアクセス数は大きくなる。
図8は、色差信号について、4タップの補間フィルタで、輝度信号の4×4画素ブロックに対応する2×2画素ブロックの補間画像を生成する場合のアクセスを必要とする最大画素を示している。2次元補間処理の場合、2×2画素ブロックの補間画像を作成するために、ブロック外の左と上の1画素と右と下の2画素にアクセスする必要がある。全体としては、5×5画素にアクセスする必要がある。
図9は、4:2:2フォーマットで、ブロック単位で補間画像を生成する時にアクセスする画素の例を示す図である。輝度信号について、8タップの補間フィルタで4×4画素ブロックの補間画像を生成する場合にアクセスを必要とする最大の画素は、図7と同様であるため説明を省略する。
図9は、色差信号について、4タップの補間フィルタで、輝度信号の4×4画素ブロックに対応する4×2画素ブロックの補間画像を生成する場合のアクセスを必要とする最大画素を示している。2次元補間処理の場合、2×2画素ブロックの補間画像を作成するために、ブロック外の左と上の1画素と右と下の2画素にアクセスする必要がある。全体としては、5×7画素にアクセスする必要がある。
図3〜図6に示すように、色フォーマットおよび動きベクトルに応じて、補間処理が必要となるか否かが異なる。また、色フォーマットおよび動きベクトルに応じて、1次元補間処理および2次元補間処理のいずれが必要となるかが異なる。また、図7〜図9に示すように、色フォーマットに応じて、アクセスする画素数が異なる。
本実施形態では、色フォーマットおよび動きベクトルを参照して、参照画像(参照画像信号109)のアクセスする画素数が大きい特定補間処理を行わないように予測画像生成処理を制御する。特定補間処理は、例えば、双方向予測かつ2次元補間となる補間処理である。双方向予測の場合の補間処理を特定補間処理としてもよい。特定補間処理を行わないように予測画像生成処理を制御する具体的な方法については後述する。
図10は、画像符号化装置100に対応する画像復号装置300の構成例を示すブロック図である。画像復号装置300は、エントロピー復号部302と、逆量子化/逆変換部303と、加算部304と、フレームメモリ306と、予測画像生成部110と、を備える。
画像復号装置300は、符号化データ301から再生動画像信号307を生成する。
エントロピー復号部302は、予め決められたシンタクスに従って符号化データ301のエントロピー復号処理を行う。エントロピー復号部302は、符号化データ301を復号して、量子化変換係数情報と、予測制御情報311と、動きベクトル情報312と、プロファイル・レベル情報313とを求める。復号された量子化変換係数情報は、逆量子化/逆変換部303に入力される。復号された予測制御情報311、動きベクトル情報312およびプロファイル・レベル情報313は、予測画像生成部110に入力される。
量子化変換係数情報、予測制御情報311、動きベクトル情報312、プロファイル・レベル情報313は、図1の画像符号化装置100で符号化される量子化変換係数情報、予測制御情報118、動きベクトル情報117、および、プロファイル・レベル情報119に相当する。
逆量子化/逆変換部303は、量子化変換係数情報に対して逆量子化、逆直交変換処理を行って予測誤差信号を再生する。
加算部304は、予測誤差信号と予測画像信号310とを加算して、復号画像信号305を生成する。復号画像信号305は、フレームメモリ306に入力される。
フレームメモリ306は、復号画像信号305にフィルタ処理を行って再生動画像信号307として出力する。フレームメモリ306は、フィルタ処理された復号画像信号305を記憶するかを、予測制御情報311に基づいて判定する。記憶された復号画像信号305は、参照画像信号308として予測画像生成部110に入力される。
予測画像生成部110は、参照画像信号308と予測制御情報311と動きベクトル情報312とを用いて、予測画像信号310を生成する。
図11は、画像符号化装置100および画像復号装置300に備えられる予測画像生成部110の構成例を示すブロック図である。予測画像生成部110は、スイッチ201と、双方向予測部202と、単方向予測部203と、イントラ予測部204と、を備えている。予測画像生成部110は、参照画像信号109と予測制御情報118と動きベクトル情報117とから、予測画像信号111を生成する。
予測制御情報118は、例えば、双方向予測部202、単方向予測部203、および、イントラ予測部204のいずれを用いるかを指定する情報(予測モード)を含む。スイッチ201は、この情報を参照して、双方向予測部202、単方向予測部203、および、イントラ予測部204のいずれかを選択するように切り替える。
参照画像信号109は、スイッチ201によって選択された、双方向予測部202、単方向予測部203、および、イントラ予測部204のいずれかに入力される。
双方向予測部202が選択された場合、双方向予測部202は、複数の参照フレームからの参照画像信号109と、動きベクトル情報117とを用いて、動き補償画像信号を生成し、双方向予測に基づいて予測画像信号111を生成する。双方向予測部202は、符号化データとして明示的に予測モードが双方向予測であると指定された場合以外にも、いわゆるスキップモード、ダイレクトモード、および、マージモード等の符号化データで明示的に指定されず、セマンティクスから暗黙的に双方向予測の動作が指定される場合にも選択される。
単方向予測部203が選択された場合、単方向予測部203は、単一の参照フレームからの参照画像信号109と、動きベクトル情報117とを用いて、動き補償画像信号を生成し、予測画像信号111を生成する。単方向予測部203は、符号化データとして明示的に予測モードが単方向予測であると指定された場合以外にも、いわゆるスキップモード、ダイレクトモード、および、マージモード等の符号化データで明示的に指定されず、セマンティクスから暗黙的に単方向予測の動作が指定される場合にも選択される。
イントラ予測部204が選択された場合、イントラ予測部204は、画面内の参照画像信号109を用いて予測画像信号111を生成する。
次に、このように構成された本実施形態にかかる画像符号化装置100によるメモリバンド幅削減のための制御処理について図12を用いて説明する。図12は、本実施形態における制御処理の全体の流れを示すフローチャートである。
符号化制御部113は、プロファイル・レベル情報119に応じて、ブロックサイズの制限値(nLPSW,nLPSH)を設定する(ステップS101)。ここで、nLPSWは、輝度の水平方向の予測ブロックサイズの制限値である。nLPSHは、輝度の垂直方向の予測ブロックサイズの制限値である。
例えば、符号化制御部113は、プロファイル情報が特定のプロファイル(例えば、H.264のハイプロファイル)を示す場合、または、レベル情報が特定のレベル(例えば所定のレベル以上のレベル)を示す場合に、予め定められたブロックサイズの制限値(nLPSW,nLPSH)を設定する。符号化制御部113が、プロファイル情報およびレベル情報に応じて段階的にブロックサイズの制限値を設定するように構成してもよい。
以下では、変数RWを1/RW画素精度で表現される水平方向の動きベクトル精度とする。また、変数RHを1/RH画素精度で表現される垂直方向の動きベクトル精度とする。また、変数RWと変数RHの初期値を、輝度の動きベクトル精度とする。なお、RW、RHは、通常2のべき乗の値が使われる。
予測制御部112は、色フォーマット情報(chroma_format_idc)114が1であるか否かを判断する(ステップS102)。chroma_format_idc=1の場合(ステップS102:Yes)、予測制御部112は、RWとRHの値をそれぞれ2倍に設定する(ステップS103)。chroma_format_idc=1は、輝度に対して色差が水平方向と垂直方向の1/2にサンプリングされている4:2:0フォーマットを表すためである。
chroma_format_idc=1でない場合(ステップS102:No)、予測制御部112は、色フォーマット情報(chroma_format_idc)114が2であるか否かを判断する(ステップS104)。chroma_format_idc=2の場合(ステップS104:Yes)、予測制御部112は、RWの値を2倍に設定する(ステップS105)。chroma_format_idc=2は、輝度に対して色差が水平方向のみ1/2にサンプリングされている4:2:2フォーマットを表すためである。
それ以外のchroma_format_idcの値の時は(ステップS104:No)、RWとRHの値は変更しない。
次に、予測制御部112は、メモリバンド幅を制限するか否かを表す変数Lを算出する(ステップS106)。変数Lは、値が“true”の時、メモリバンド幅の削減手法を適用することを表し、値が“false”の時、適用しないことを表すものとする。
上述のように、例えば、双方向予測であり、予測ブロックが小さく、2つの動きベクトルが色差において小数精度の場合、画素あたりのアクセスするメモリバンド幅が大きくなる。そこで、予測制御部112は、以下の式(1)により変数Lを算出する。
L=(PredMode==PredBi)&&
(nPSW<=nLPSW)&&(nPSH<=nLPSH)&&
(mvL0[0]&(RW−1))&&
(mvL0[1]&(RH−1))&&
(mvL1[0]&(RW−1))&&
(mvL1[1]&(RH−1)); ・・・(1)
ここで、処理対象とするブロックのリスト0の動きベクトルの水平方向の値をmvL0[0]、垂直方向の値をmvL0[1]とする。また、リスト1の動きベクトルの水平方向の値をmvL1[0]、垂直方向の値をmvL1[1]とする。また、PredModeは、予測モードを表す。PredBiは、双方向予測を表す。なお、以下では、リスト0およびリスト1の動きベクトルを用いる単方向予測の予測モードを、それぞれPredL0およびPredL1と表す。
式(1)の例では、予測モードPredModeは、PredBiの時、すなわち、双方向予測部202が選択された場合を意味している。また、(nPSW<=nLPSW)&&(nPSH<=nLPSH)は、予測ブロックサイズがブロックサイズ制限情報以下の大きさであることを条件としている。さらに、(mvL0[0]&(RW−1))&&(mvL0[1]&(RH−1))&&(mvL1[0]&(RW−1))&&(mvL1[1]&(RH−1))では、L0とL1の2つの動きベクトルがともに、色差において2次元補間処理にならないこと、すなわち、動きベクトルの下位ビットが小数点以下の精度を表現しているかをチェックしている。なお、“&”は、C言語の記法に従ったビット演算子であり、ビット単位での論理和を表す。
なお、変数Lを算出する条件式は式(1)に限られるものではない。例えば、式(2)のように、PredBi以外の予測モード(PredL0、PredL1)についても個別に判断するように構成してもよい。
L=(nPSW<=nLPSW)&&(nPSH<=nLPSH)&&
((PredMode==PredBi)&&
(mvL0[0]&(RW−1))&&
(mvL0[1]&(RH−1))&&
(mvL1[0]&(RW−1))&&
(mvL1[1]&(RH−1)))||
((PredMode==PredL0)&&
(mvL0[0]&(RW−1))&&
(mvL0[1]&(RH−1)))||
((PredMode==PredL1)&&
(mvL1[0]&(RW−1))&&
(mvL1[1]&(RH−1)))); ・・・(2)
また、式(3)のように、単方向予測(PredL0またはPredL1)のためのブロックサイズの制限値(nLPSW1,nLPSH1)を別途設定してもよい。すなわち、単方向予測と双方向予測で制限するブロックサイズが異なっていてもよい。
L=((PredMode==PredBi)&&
(nPSW<=nLPSW)&&(nPSH<=nLPSH)&&
(mvL0[0]&(RW−1))&&
(mvL0[1]&(RH−1))&&
(mvL1[0]&(RW−1))&&
(mvL1[1]&(RH−1)))||
(((nPSW<=nLPSW1)&&
(nPSH<=nLPSH1))||
((PredMode==PredL0)&&
(mvL0[0]&(RW−1))&&
(mvL0[1]&(RH−1))&&
((PredMode==PredL1)&&
(mvL1[0]&(RW−1))&&
(mvL1[1]&(RH−1))); ・・・(3)
また、式(4)のように、ブロックサイズの制限値(nLPSW,nLPSH)以下の時は、双方向予測の時に2つの動きベクトルが、色差において整数画素のみにアクセスするように制限してもよい。
L=((PredMode==PredBi)&&
(nPSW<=nLPSW)&&(nPSH<=nLPSH)&&
!((mvL0[0]&(RW−1)==0)&&
(mvL0[1]&(RH−1)==0)&&
(mvL1[0]&(RW−1)==0)&&
(mvL1[1]&(RH−1))==0))); ・・・(4)
なお、動きベクトルの値を制限するか否か、または、どのような条件で動きベクトルの値を制限するかは、プロファイル・レベル情報119によって区別される。
次に、メモリバンド幅を削減する具体的手法について説明する。図13は、メモリバンド幅を削減する処理の一例を示すフローチャートである。図13は、メモリバンド幅を削減する手法として、動きベクトルの値を制限する手法の一例を示している。
予測制御部112は、変数Lが“true”であるか否かを判断する(ステップS201)変数Lが“true”の場合(ステップS201:Yes)、予測制御部112は、L0とL1の2つの動きベクトルの値を式(5)のように変換する(ステップS202)。
mvL0[0]=((mvL0[0]+(RW>>1))/RW)×RW;
mvL0[1]=((mvL0[1]+(RH>>1))/RH)×RH;
mvL1[0]=((mvL1[0]+(RW>>1))/RW)×RW;
mvL1[1]=((mvL1[1]+(RH>>1))/RH)×RH;
・・・(5)
“>>”はC言語の記法に従った算術右シフトを表す。“/”は整数演算での除算を表す。“×”は整数演算での乗算を表す。式(5)により、L0とL1の2つの動きベクトルの色差信号の補間精度分のビットが丸められて0となる。これにより、2次元補間処理を行わないようにすることができ、メモリバンド幅の削減を実現できる。
ここでは、一般的な四捨五入による丸め方法を示しているが、それ以外の方法であってもよい。例えば、切捨て、切り上げ、および、最近接偶数への丸め等の方法でも構わない。
値を変更された動きベクトル情報117は、エントロピー符号化部105で符号化され、符号化データとして出力される。図13の手法は、動きベクトルの値を制限することで、動きベクトル情報117を制御し、メモリバンド幅が増大するような符号化データを生成しないようにする手法である。
これに対し、値を変更された動きベクトル情報117をエントロピー符号化部105で符号化するのではなく、変更前の動きベクトル情報117をエントロピー符号化で符号化する方法でもよい。この場合は、後述する画像復号装置300の予測画像生成部110は、図12と同様の処理でメモリバンド幅の削減手法を適用するか否かを判断する。適用する場合、画像復号装置300の予測画像生成部110は、図13と同様の処理で、動きベクトルを制限する。
動きベクトルの値の変換方法は、式(4)のように、色差の補間精度分を丸める方法に限られるものではない。輝度の補間処理の時は、輝度の補間精度分を丸め、色差の補間処理の時は、色差の補間精度分を丸めるというように、輝度と色差とで別々に丸める方法でもよい。この方法は、画像符号化装置100と画像復号装置300で同一の動作を実行するように予め決めておくことで、メモリバンド幅が増大するような予測画像を生成しない方法である。
図14は、メモリバンド幅を削減する処理の他の例を示すフローチャートである。図14は、動きベクトルの値を制限する手法の他の例を示している。
この例では、予測制御部112および予測画像生成部110は、予測モード、予測ブロックサイズおよび動きベクトルなどを選択するコストを計算し、コストが小さい予測モード、予測ブロックサイズおよび動きベクトルを優先して選択することで、最適な組み合わせを選択する。
動きベクトルのコストを表す変数MV_Costは、式(5)のように、予測残差誤差の絶対値和(SAD)と、動きベクトル情報の符号量(MV_Code)と、量子化情報から計算されるラグランジェの乗数係数(λ)と、を用いて計算される。
MV_Cost=SAD+λ×MV_Code ・・・(5)
変数Lが“true”ならば(ステップS301:Yes)、予測制御部112は、動きベクトルのコストを表している変数MV_Costに予め決められている最大値MaxValueを代入する(ステップS302)。これにより、予測制御部112が、メモリバンド幅が大きい動きベクトルを選択しないように制御する(ステップS301)。
図14の方法は、図13と同様に、動きベクトルの値を制限することで、動きベクトル情報117を制御し、メモリバンド幅が増大するような符号化データを生成しないようにする手法である。
図15は、メモリバンド幅を削減する処理の他の例を示すフローチャートである。図15は、メモリバンド幅を削減する他の手法として、色差の予測モードを制御する方法を示す。
変数Lが“true”ならば(ステップS401)、色の予測モードPredModeのみを単方向予測PredL0に強制的に書き換える(ステップS402)。これにより、メモリバンド幅が大きな色差信号で双方向予測の場合を制限することができる。
なお、強制的に書き換える予測モードは、単方向予測PredL1でもよい。なお、どのような予測モードを制限するか否かは、プロファイル・レベル情報119によって区別される。
以上説明したとおり、本実施形態によれば、画像符号化および画像復号において動き補償補間画像を生成するときのメモリバンド幅を削減することができる。
次に、本実施形態にかかる装置(画像符号化装置および画像復号装置)のハードウェア構成について図16を用いて説明する。図16は、本実施形態にかかる装置のハードウェア構成を示す説明図である。
本実施形態にかかる装置は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、各部を接続するバス61を備えている。
本実施形態にかかる装置で実行されるプログラムは、ROM52等に予め組み込まれて提供される。
本実施形態にかかる装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
さらに、本実施形態にかかる装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
本実施形態にかかる装置で実行されるプログラムは、コンピュータを上述した装置の各部(予測画像生成部等)として機能させうる。このコンピュータは、CPU51がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。