以下、実施形態を図面を用いて説明する。
図1は、一実施形態におけるフレーム間予測処理装置10の例を示している。
フレーム間予測処理装置10は、例えば、フレーム間予測が用いられる画像処理装置(MPEGやH.264等に準拠した画像処理装置)に搭載され、フレーム間予測で使用される参照画像を生成する。例えば、フレーム間予測が用いられる動画像符号化装置では、入力画像(符号化対象の画像)と参照画像との差分値が符号化される。さらに、入力画像に対する参照画像の動き量(移動距離)を示す動きベクトルMVが符号化される。
また、フレーム間予測が用いられる動画像復号化装置では、差分値と参照画像とに基づいて、画像が復号される。このように、参照画像は、画像を符号化(あるいは、復号化)する際に参照される。なお、参照画像は、符号化(あるいは、復号化)対象の画像に類似した復号済の画像であり、動きベクトルMVとメモリ20に記憶されている復号済の画像とに基づいて生成される。
例えば、フレーム間予測処理装置10は、動きベクトルMVを取得し、動きベクトルMVに基づく参照画像をメモリ20から読み出す。なお、フレーム間予測処理装置10は、参照画像をメモリ20から読み出す際、複数の動きベクトルMVに対応する参照画像を統合して読み出すか否かを判定する。
例えば、フレーム間予測処理装置10は、判定部12および読み出し部14を有している。判定部12は、2つのマクロブロックの参照画像の読み出し領域を算出し、読み出し領域の画像を統合して読み出すか否かを2つのマクロブロック単位で判定する。例えば、判定部12は、2つのマクロブロックの動きベクトルMVを取得し、取得した動きベクトルMVに基づいて、参照画像の読み出し領域を算出する。そして、判定部12は、例えば、算出した読み出し領域に基づいて、読み出し領域の画像を統合して読み出すか否かを判定する。
例えば、判定部12は、図6−図8に示すように、参照画像の各読み出し領域に対して、読み出し領域のサイズに応じた重み値を所定数の画素単位で算出する。そして、判定部12は、例えば、読み出し領域が互いに重なる領域の重み値を用いて評価値を生成する。例えば、判定部12は、各読み出し領域に対応する位置の重み値を累積して格納する累積テーブル(例えば、図9に示す累積テーブルCTBL)を用いて、評価値を算出してもよい。そして、判定部12は、読み出し領域の画像を統合して読み出すか否かを評価値に基づいて判定する。
ここで、マクロブロックは、16×16画素のブロックである。画像圧縮等の処理は、例えば、マクロブロック単位で実施される。なお、参照画像の単位は、例えば、図3に示すように、マクロブロックより小さいサイズに細分化されることもある。このとき、動きベクトルMVは、マクロブロックを分割したブロック毎に生成される。
読み出し部14は、読み出し領域の画像を統合して読み出すと判定されたとき、読み出し領域の画像を統合してメモリ20から読み出す。例えば、読み出し部14は、判定部12が読み出し領域の画像を統合して読み出すと判定したとき、統合対象の読み出し領域の画像を、メモリ20から統合して読み出す。なお、統合対象以外の読み出し領域の画像は、個別に読み出される。また、読み出し部14は、判定部12が読み出し領域の画像を統合して読み出さないと判定したとき、読み出し領域の画像をメモリ20から個別に読み出す。そして、フレーム間予測処理装置10は、例えば、メモリ20から読み出した画像を用いて、マクロブロック毎に参照画像を生成する。
図2は、画像圧縮処理の順序の一例を示している。なお、図2は、8×8マクロブロックMB(128×128画素)のフレームFRMを、画像圧縮するときの処理順序を示している。フレームFRMのサイズは、8×8マクロブロックMBに限定されない。画像圧縮処理は、例えば、16×16画素のマクロブロックMB単位で実施される。
画像圧縮処理は、図2の破線の矢印で示したように、最上端のマクロブロックラインL1の左端のマクロブロックMBから右端のマクロブロックMBの順に実施される。次に、マクロブロックラインL2の左端のマクロブロックMBから右端のマクロブロックMBの順に画像圧縮処理が実施される。以降、左端のマクロブロックMBから右端のマクロブロックMBの順に実施される画像圧縮処理が、最下端のマクロブロックラインL8まで繰り返される。
図3は、フレーム間予測を実施する際のマクロブロックMBの分割パターンの一例を示している。なお、図中の各ブロック内の数字は、パーティション番号を示している。フレーム間予測を実施する際、予測精度を向上させるために、マクロブロックMBが分割されるときがある。例えば、パターンMP10では、マクロブロックMBは、分割されない。パターンMP20では、マクロブロックMBは、16×8画素のブロックに2分割される。パターンMP30では、マクロブロックMBは、8×16画素のブロックに2分割される。パターンMP40では、マクロブロックMBは、8×8画素のブロックに4分割される。以下、マクロブロックMBを4分割したときの8×8画素のブロックを、サブマクロブロックSMBとも称する。
さらに、パターンMP40では、8×8画素のサブマクロブロックSMBが分割されるときがある。例えば、パターンSP10では、サブマクロブロックSMBは、分割されない。パターンSP20では、サブマクロブロックSMBは、8×4画素のブロックに2分割される。また、パターンSP30では、サブマクロブロックSMBは、4×8画素のブロックに2分割される。パターンSP40では、サブマクロブロックSMBは、4×4画素のブロックに4分割される。
なお、動きベクトルMVは、マクロブロックMBやサブマクロブロックSMBを分割したブロック毎に生成される。すなわち、各ブロックは、動きベクトルMVを有している。例えば、各ブロックの動きベクトルMVは、ブロックの位置と参照画像の位置との差(動き量)を示している。
図4は、マクロブロックMBと参照画像との関係の一例を示している。なお、図4では、フレームFRM3のマクロブロックMB1(太線で囲んだ領域)は、4つのブロックBK(BK0、BK1、BK2、BK3)に分割されている。例えば、各ブロックBKは、図3に示した8×8画素のサブマクロブロックSMBである。また、フレームFRMの符号の末尾の数字が小さいフレームFRMは、符号の末尾の数字が大きいフレームFRMより過去のフレームである。
例えば、マクロブロックMB1のブロックBK0の参照画像は、フレームFRM2の画像RI0fとフレームFRM4の画像RI0bとに基づいて生成される。すなわち、ブロックBK0では、前方向予測および後方向予測による双予測が実施される。したがって、ブロックBK0では、双方向の動きベクトルMVが用いられる。
ブロックBK1の参照画像は、フレームFRM5の画像RI1に基づいて生成される。すなわち、ブロックBK1では、後方向予測(片方向予測)が実施される。したがって、ブロックBK1では、後方向の動きベクトルMVが用いられる。ブロックBK2の参照画像は、フレームFRM1の画像RI2に基づいて生成される。すなわち、ブロックBK2では、前方向予測(片方向予測)が実施される。したがって、ブロックBK2では、前方向の動きベクトルMVが用いられる。
ブロックBK3の参照画像は、フレームFRM2の画像RI3fとフレームFRM4の画像RI3bとに基づいて生成される。すなわち、ブロックBK3では、前方向予測および後方向予測による双予測が実施される。したがって、ブロックBK3では、双方向の動きベクトルMVが用いられる。
図5は、各分割パターンの参照画像の読み出し領域の一例を示している。例えば、動きベクトルMVが整数精度のとき、整数位置の画素を読み出すことにより、参照画像は生成される。したがって、参照画像の読み出し領域RAのサイズは、ブロックBK(マクロブロックMBやサブマクロブロックSMBを分割したブロック)のサイズと一致する。また、動きベクトルMVが1/2、1/4精度のとき、少数部分を切り下げた整数位置の画素とその周辺の画素とを用いてフィルタ処理を実施することにより、参照画像は生成される。このため、動きベクトルMVが1/2、1/4精度のときには、少数部分を切り下げた整数位置に対して、水平方向に−2から+3の位置および垂直方向に−2から+3の位置の画素が読み出される。したがって、参照画像の読み出し領域RAのサイズは、ブロックBKのサイズより大きくなる。このように、参照画像の読み出し領域RAは、動きベクトルMVの精度により、異なる。
例えば、パターンMP10では、動きベクトルMVが整数精度のとき、読み出し領域RAのサイズは、16×16画素である。また、動きベクトルMVが1/2、1/4精度のとき、読み出し領域RAのサイズは、21×21画素である。なお、動きベクトルMVが1/2、1/4精度のときでは、図5のブロックBKは、少数部分を切り下げた整数位置の画素の範囲を示している。
例えば、動きベクトルMVが1/2、1/4精度のときでは、読み出しの開始位置は、ブロックBKに対して、水平方向および垂直方向にそれぞれ−2(図5では、左側および上側がマイナス方向)の位置である。また、読み出しの終了位置は、ブロックBKに対して、水平方向および垂直方向にそれぞれ+3の位置である。すなわち、動きベクトルMVが1/2、1/4精度のときでは、読み出し領域RAのサイズは、ブロックBKに対して、水平方向および垂直方向にそれぞれ5画素拡大する。
パターンMP20では、動きベクトルMVが整数精度のとき、読み出し領域RAのサイズは、16×8画素である。また、動きベクトルMVが1/2、1/4精度のとき、読み出し領域RAのサイズは、21×13画素である。パターンMP30では、動きベクトルMVが整数精度のとき、読み出し領域RAのサイズは、8×16画素である。また、動きベクトルMVが1/2、1/4精度のとき、読み出し領域RAのサイズは、13×21画素である。
パターンMP40、SP10では、動きベクトルMVが整数精度のとき、読み出し領域RAのサイズは、8×8画素である。また、動きベクトルMVが1/2、1/4精度のとき、読み出し領域RAのサイズは、13×13画素である。パターンMP40、SP20では、動きベクトルMVが整数精度のとき、読み出し領域RAのサイズは、8×4画素である。また、動きベクトルMVが1/2、1/4精度のとき、読み出し領域RAのサイズは、13×9画素である。
パターンMP40、SP30では、動きベクトルMVが整数精度のとき、読み出し領域RAのサイズは、4×8画素である。また、動きベクトルMVが1/2、1/4精度のとき、読み出し領域RAのサイズは、9×13画素である。パターンMP40、SP40では、動きベクトルMVが整数精度のとき、読み出し領域RAのサイズは、4×4画素である。また、動きベクトルMVが1/2、1/4精度のとき、読み出し領域RAのサイズは、9×9画素である。
図6は、各分割パターンの重み値の一例を示している。なお、図6は、動きベクトルMVが整数精度のときの各分割パターンの重み値の一例を示している。重み値は、例えば、単位画素群毎に与えられる。単位画素群は、例えば、マクロブロックMBやサブマクロブロックSMBを分割したブロックの最小サイズ以下である。この実施形態では、重み値は、2×2画素の単位画素群毎に与えられる。なお、重み値は、例えば、4×4画素の単位画素群毎に与えられてもよいし、画素(1×1画素の単位画素群)毎に与えられてもよい。
なお、図6の各ケースC1−C7の下の括弧内の画素数は、読み出し領域RAのサイズを示している。図6の備考欄の図形の破線は、単位画素群(2×2画素)の境界を示している。また、図6の備考欄の図形の太線で囲んだ領域WRAは、読み出し領域RAを含む単位画素群を示している。以下、領域WRAを読み出し領域WRAとも称する。また、領域WOAは、領域WRAの外側の単位画素群のうち、領域WRAの下側に隣接する単位画素群および領域WRAの右側に隣接する単位画素群を示している。
ケースC1は、マクロブロックMBのパターンがパターンMP10で、かつ、動きベクトルMVが整数精度のときの重み値を示している。すなわち、ケースC1は、読み出し領域RAのサイズが16×16画素のときの重み値を示している。例えば、ケースC1では、読み出し領域WRAの重み値は、“3”であり、読み出し領域WRAの外側の領域WOAの重み値は、“1”である。
ケースC2は、マクロブロックMBのパターンがパターンMP20で、かつ、動きベクトルMVが整数精度のときの重み値を示している。すなわち、ケースC2は、読み出し領域RAのサイズが16×8画素のときの重み値を示している。例えば、ケースC2では、読み出し領域WRAの重み値は、“4”であり、読み出し領域WRAの外側の領域WOAの重み値は、“2”である。
ケースC3は、マクロブロックMBのパターンがパターンMP30で、かつ、動きベクトルMVが整数精度のときの重み値を示している。すなわち、ケースC3は、読み出し領域RAのサイズが8×16画素のときの重み値を示している。例えば、ケースC3では、読み出し領域WRAの重み値は、“4”であり、読み出し領域WRAの外側の領域WOAの重み値は、“2”である。
ケースC4−C7は、マクロブロックMBのパターンがパターンMP40ときの重み値を示している。例えば、ケースC4は、サブマクロブロックSMBのパターンがパターンSP10で、かつ、動きベクトルMVが整数精度のときの重み値を示している。すなわち、ケースC4は、読み出し領域RAのサイズが8×8画素のときの重み値を示している。例えば、ケースC4では、読み出し領域WRAの重み値は、“8”であり、読み出し領域WRAの外側の領域WOAの重み値は、“4”である。
ケースC5は、サブマクロブロックSMBのパターンがパターンSP20で、かつ、動きベクトルMVが整数精度のときの重み値を示している。すなわち、ケースC5は、読み出し領域RAのサイズが8×4画素のときの重み値を示している。例えば、ケースC5では、読み出し領域WRAの重み値は、“16”であり、読み出し領域WRAの外側の領域WOAの重み値は、“8”である。
ケースC6は、サブマクロブロックSMBのパターンがパターンSP30で、かつ、動きベクトルMVが整数精度のときの重み値を示している。すなわち、ケースC6は、読み出し領域RAのサイズが4×8画素のときの重み値を示している。例えば、ケースC6では、読み出し領域WRAの重み値は、“16”であり、読み出し領域WRAの外側の領域WOAの重み値は、“8”である。
ケースC7は、サブマクロブロックSMBのパターンがパターンSP40で、かつ、動きベクトルMVが整数精度のときの重み値を示している。すなわち、ケースC7は、読み出し領域RAのサイズが4×4画素のときの重み値を示している。例えば、ケースC7では、読み出し領域WRAの重み値は、“32”であり、読み出し領域WRAの外側の領域WOAの重み値は、“16”である。
図7は、各分割パターンの重み値の別の例を示している。なお、図7は、動きベクトルMVが1/2、1/4精度のときの各分割パターンの重み値の一例を示している。また、図7の各ケースC8−C14の下の括弧内の画素数は、読み出し領域RAのサイズを示している。重み値は、例えば、2×2画素の単位画素群毎に与えられる。図7の備考欄の図形の破線は、単位画素群(2×2画素)の境界を示している。また、図7の備考欄の図形の太線で囲んだ領域WRA(読み出し領域WRA)は、読み出し領域RAを含む単位画素群を示している。図7では、読み出し領域WRAは、読み出し領域RAに対して、右側および下側にそれぞれ1画素拡大している。また、領域WOAは、領域WRAの外側の単位画素群のうち、領域WRAの下側に隣接する単位画素群および領域WRAの右側に隣接する単位画素群を示している。
ケースC8は、マクロブロックMBのパターンがパターンMP10で、かつ、動きベクトルMVが1/2、1/4精度のときの重み値を示している。すなわち、ケースC8は、読み出し領域RAのサイズが21×21画素のときの重み値を示している。例えば、ケースC8では、読み出し領域WRAの重み値は、“2”であり、読み出し領域WRAの外側の領域WOAの重み値は、“1”である。
ケースC9は、マクロブロックMBのパターンがパターンMP20で、かつ、動きベクトルMVが1/2、1/4精度のときの重み値を示している。すなわち、ケースC9は、読み出し領域RAのサイズが21×13画素のときの重み値を示している。例えば、ケースC9では、読み出し領域WRAの重み値は、“3”であり、読み出し領域WRAの外側の領域WOAの重み値は、“1”である。
ケースC10は、マクロブロックMBのパターンがパターンMP30で、かつ、動きベクトルMVが1/2、1/4精度のときの重み値を示している。すなわち、ケースC10は、読み出し領域RAのサイズが13×21画素のときの重み値を示している。例えば、ケースC10では、読み出し領域WRAの重み値は、“3”であり、読み出し領域WRAの外側の領域WOAの重み値は、“1”である。
ケースC11−C14は、マクロブロックMBのパターンがパターンMP40ときの重み値を示している。例えば、ケースC11は、サブマクロブロックSMBのパターンがパターンSP10で、かつ、動きベクトルMVが1/2、1/4精度のときの重み値を示している。すなわち、ケースC11は、読み出し領域RAのサイズが13×13画素のときの重み値を示している。例えば、ケースC11では、読み出し領域WRAの重み値は、“4”であり、読み出し領域WRAの外側の領域WOAの重み値は、“2”である。
ケースC12は、サブマクロブロックSMBのパターンがパターンSP20で、かつ、動きベクトルMVが1/2、1/4精度のときの重み値を示している。すなわち、ケースC12は、読み出し領域RAのサイズが13×9画素のときの重み値を示している。例えば、ケースC12では、読み出し領域WRAの重み値は、“6”であり、読み出し領域WRAの外側の領域WOAの重み値は、“3”である。
ケースC13は、サブマクロブロックSMBのパターンがパターンSP30で、かつ、動きベクトルMVが1/2、1/4精度のときの重み値を示している。すなわち、ケースC13は、読み出し領域RAのサイズが9×13画素のときの重み値を示している。例えば、ケースC13では、読み出し領域WRAの重み値は、“6”であり、読み出し領域WRAの外側の領域WOAの重み値は、“3”である。
ケースC14は、サブマクロブロックSMBのパターンがパターンSP40で、かつ、動きベクトルMVが1/2、1/4精度のときの重み値を示している。すなわち、ケースC14は、読み出し領域RAのサイズが9×9画素のときの重み値を示している。例えば、ケースC14では、読み出し領域WRAの重み値は、“8”であり、読み出し領域WRAの外側の領域WOAの重み値は、“4”である。
図8は、図6および図7に示した重み値の一覧を示している。なお、図8の単位画素群(2×2画素)の数は、図6および図7に示した読み出し領域WRA内の単位画素群の数を示している。重み値は、例えば、読み出し領域RAのサイズが小さくなるにつれて大きい値に設定される。例えば、読み出し領域RAのサイズに反比例した値が重み値として与えられる。なお、この実施形態では、1から32までの精度で重み値を振り分けている。このため、読み出し領域RAのサイズが異なるときにも、同じ値の重み値が与えられているケースが存在する(例えば、ケースC1とケースC9、C10)。
また、読み出し領域WRAの外側の領域WOAの重み値は、読み出し領域WRAの重み値より小さい値(例えば、読み出し領域WRAの重み値の約半分の値)に設定される。このように、この実施形態では、重み値は、読み出し領域WRAを単位画素群分だけ外側に拡大した領域WOAまで設定されている。
なお、各ケースC1−C14の重み値は、この例に限定されない。例えば、重み値は、1から64までの精度で振り分けられてもよい。すなわち、重み値は、1から32までの精度以外の精度で振り分けられてもよい。また、重み値を領域WOAに与えなくてもよいし、読み出し領域WRAと同じ値の重み値を領域WOAに与えてもよい。あるいは、読み出し領域WRAの長辺に隣接する領域WOAと読み出し領域WRAの短辺に隣接する領域WOAとに、異なる重み値を与えてもよい。また、重み値が与えられる領域WOAは、読み出し領域WRAに隣接する外周の単位画素群を含んでもよい。すなわち、読み出し領域WRAに隣接する全ての単位画素群に重み値が与えられてもよい。
ここで、図1に示した判定部12は、各ケースC1−C14の重み値を記憶した重み付けテーブル(図8の重み値の一覧相当)を有してもよい。すなわち、判定部12は、読み出し領域RAのサイズに応じた重み値が記憶された重み付けテーブルを有してもよい。あるいは、判定部12の動作を制御するプログラム内に各ケースの重み値が組み込まれていてもよい。
図9は、参照画像の読み出し領域RAと累積テーブルCTBLとの関係の一例を示している。なお、図9では、図を見やすくするために、図6−図8で説明した領域WRA、WOAの記載を省略している。図9の例では、マクロブロックMB1、MB2のパターンは、パターンMP40であり、サブマクロブロックSMBのパターンは、パターンSP10である。また、各ブロックBK0−BK7の動きベクトルMVは、整数精度である。
フレームFRM3のマクロブロックMB1、MB2の各ブロックBK0−BK7の参照画像は、例えば、フレームFRM1に示した各ブロックBK0−BK7の画像から生成される。フレームFRM1の太線で囲んだ領域は、フレームFRM3のマクロブロックMB1、MB2に対応する位置を示している。また、累積テーブルCTBLの太線で囲んだ領域は、フレームFRM3のマクロブロックMB1、MB2に対応する位置を示している。
図9の累積テーブルCTBLの破線は、単位画素群(2×2画素)の境界を示している。図6−図8で説明したように、重み値は、単位画素群毎に与えられる。すなわち、累積テーブルCTBLは、読み出し領域RAのサイズに応じた重み値を、読み出し領域RAに対応する位置に所定数の画素単位で格納する。なお、累積テーブルCTBLは、判定部12内に設けられてもよいし、判定部12の外部に設けられてもよい。
累積テーブルCTBLの各ブロックBK0−BK7に対応する位置の重み値は、各ブロックBK0−BK7の重み値に応じて、更新される。例えば、累積テーブルCTBLのブロックBK0、BK3が互いに重なる領域の重み値は、“16”に更新される。なお、ブロックBK0、BK3内のその他の領域の重み値は、“8”に更新される。
ここで、判定部12は、累積テーブルCTBLの更新された重み値に基づいて、評価値を算出する。例えば、判定部12は、読み出し領域RAが互いに重なる領域内の重み値を加算して、評価値を算出する。この算出方法では、例えば、ブロックBK0、BK3を統合して読み出すか否かの評価値は、ブロックBK0、BK3が互いに重なる領域の単位画素群の数“6”と重み値“16”とを乗算することにより算出される。
この例では、ブロックBK0、BK3を統合して読み出すか否かの評価値は、“6×16”より、“96”である。そして、判定部12は、例えば、評価値が予め設定された閾値以上のとき、参照画像の読み出し領域RAを統合して読み出す。例えば、閾値が“33”のとき、ブロックBK0、BK3は、統合して読み出される。また、例えば、ブロックBK1、BK6も統合して読み出され、ブロックBK4、BK7も統合して読み出される。なお、ブロックBK2、BK5は、個別に読み出される。
図10は、図1に示したフレーム間予測処理装置10の動作の一例を示している。図10の動作は、ハードウエアのみで実現されてもよく、ハードウエハをソフトウエアにより制御することにより実現されてもよい。例えば、処理S100−S170は、図1に示した判定部12により実施される。また、例えば、処理S180−S200は、読み出し部14により実施される。図10の動作は、例えば、2つのマクロブロックMBの組毎に実施される。例えば、2つのマクロブロックMBの組(統合判定対象の2つのマクロブロックMB)は、同一のマクロブロックラインに配置され、互いに隣接している。
処理S100では、判定部12は、累積テーブルCTBLを初期化する。処理S110では、判定部12は、2つのマクロブロックMBの全てのブロックBK(例えば、図9のマクロブロックMB1、MB2のブロックBK0−BK7)の動きベクトルMVを生成する。なお、動きベクトルMVの生成は、例えば、動画像復号化装置では、符号化された動きベクトルMVの復号に対応する。また、例えば、動画像復号化装置では、動きベクトルMVの生成は、動きベクトルMVの探索に対応する。
処理S120では、判定部12は、1個目のマクロブロックMBの各ブロックBK(例えば、図9のマクロブロックMB1のブロックBK0−BK3)の読み出し領域RAを算出する。例えば、動きベクトルMVが整数精度のときでは、読み出し領域RAのサイズは、ブロックBKのサイズと同じである。また、例えば、動きベクトルMVが1/2、1/4精度のときでは、読み出し領域RAのサイズは、ブロックBKに対して、水平方向および垂直方向にそれぞれ5画素拡大する。
処理S130では、判定部12は、処理S120で算出した読み出し領域RAに対応する位置の累積テーブルCTBLの重み値を更新する。例えば、判定部12は、各ケースの重み値を記憶した重み付けテーブル(図8の重み値の一覧相当)を参照し、各読み出し領域RAの重み値を算出する。なお、判定部12は、各ケースの重み値が組み込まれたプログラム等により、各読み出し領域RAの重み値を算出してもよい。また、処理S130では、累積テーブルCTBLの重み値は、累積される。例えば、複数の読み出し領域RAが互いに重なる位置の累積テーブルCTBLの重み値は、互いに重なる読み出し領域RAのそれぞれの重み値を加算することにより、更新される。
処理S140では、判定部12は、2個目のマクロブロックMBの各ブロックBK(例えば、図9のマクロブロックMB2のブロックBK4−BK7)の読み出し領域RAを算出する。処理S140の動作は、読み出し領域RAを算出する対象のマクロブロックMBを除いて、処理S120の動作と同じである。なお、処理S140の動作は、処理S130の前に実施されてもよい。
処理S150では、判定部12は、処理S140で算出した読み出し領域RAに対応する位置の累積テーブルCTBLの重み値を更新する。なお、処理S150の動作は、累積テーブルCTBLの更新に用いる読み出し領域RAを除いて、処理S130の動作と同じである。
処理S160では、判定部12は、累積テーブルCTBLに格納されている重み値に基づいて、評価値を算出する。例えば、判定部12は、読み出し領域RAが互いに重なる領域内の累積テーブルCTBLの重み値を加算し、評価値を算出する。
処理S170では、判定部12は、予め設定された閾値(図11の例では、“33”)以上の評価値が存在するか否かを判定する。閾値以上の評価値が存在するとき(処理S170のYes)、フレーム間予測処理装置10の動作は、処理S180に移る。また、閾値以上の評価値が存在しないとき(処理S170のNo)、フレーム間予測処理装置10の動作は、処理S190に移る。
処理S180では、読み出し部14は、閾値以上の評価値が算出された読み出し領域RAの画像を統合して読み出す。これにより、この実施形態では、参照画像の読み出し回数を低減できる。なお、統合対象以外の読み出し領域RAの画像は、個別に読み出される。例えば、読み出し部14は、評価値が閾値より小さい読み出し領域RAの画像を、個別に読み出す。
処理S190では、読み出し部14は、全てのブロックBK(例えば、図9のマクロブロックMB1、MB2のブロックBK0−BK7)の読み出し領域RAの画像を、個別に読み出す。処理S180、S190により読み出された画像は、例えば、フレーム間予測処理装置10内のメモリ等に一時的に記憶される。
処理S200では、読み出し部14は、処理S180、S190により読み出された画像を用いて、2つのマクロブロックMBの参照画像を生成する。例えば、2つのマクロブロックMBの参照画像の生成は、図2に示した順序に基づいて実施される。なお、2つのマクロブロックMBの参照画像の生成は、読み出し部14以外のモジュールにより実施されてもよい。
ここで、例えば、判定部12は、処理S100−S170の動作を、統合判定対象のマクロブロックMB(例えば、図9のマクロブロックMB1、MB2)の前に処理されるマクロブロックMBの参照画像の読み出し処理中に、実施する。これにより、この実施形態では、統合判定を効率よく実施できる。また、例えば、処理S180、S190は、フレーム間予測処理装置10内のメモリ等に空きが発生したときに、実施される。
図10の動作では、2つのマクロブロックMBの組毎に統合判定が実施されるため、1フレームFRM当たりの統合判定の回数は、1フレームFRMのマクロブロックMBの数の約半分である。したがって、この実施形態では、マクロブロックMB毎に統合判定を実施するときに比べて、統合判定の回数を低減できる。
なお、フレーム間予測処理装置10の動作は、この例に限定されない。例えば、読み出し部14は、閾値以上の評価値が存在しないとき(処理S170のNo)、1個目のマクロブロックMBの全てのブロックBK(例えば、図9のマクロブロックMB1のブロックBK0−BK4)の読み出し領域RAの画像のみを、個別に読み出してもよい。なお、2個目のマクロブロックMB(例えば、図9のマクロブロックMB2)の参照画像は、次に処理されるマクロブロックMBの参照画像と統合して読み出し可能か否か判定される。これにより、マクロブロックMBの参照画像は、先に処理されるマクロブロックMB等の参照画像と統合できないときにも、次に処理されるマクロブロックMBの参照画像と統合できるとき、統合して読み出される。この結果、参照画像の読み出し領域の統合の効率は、向上する。
また、例えば、処理S140の動作を処理S130の前に実施するとき、処理S130、S150−S170に対応する処理は、参照先のフレームFRM毎に実施されてもよい。なお、累積テーブルCTBLは、各フレームFRMの処理(処理S130、S150−S170に対応する処理)が実施される前に初期化される。また、各フレームFRMの処理S170の判定結果は、例えば、フレーム間予測処理装置10内のバッファ等に一時的に保持される。これにより、累積テーブルCTBLのサイズが増加することを抑制できる。
また、フレームFRMの先頭のマクロブロックMBの処理では、統合判定が実施されることなく、参照画像が個別に読み出されてもよい。あるいは、フレームFRMの先頭のマクロブロックMBの処理では、処理S140、S150の動作が省かれてもよい。そして、フレームFRMの先頭のマクロブロックMBの処理では、例えば、処理S110において、フレームFRMの先頭のマクロブロックMBの全てのブロックBKの動きベクトルMVのみが生成されてもよい。
なお、マクロブロックラインの右端のマクロブロックMBの処理では、同一のマクロブロックライン内のマクロブロックMBとの組み合わせで統合判定が実施されないとき、統合判定は、実施されなくてもよい。あるいは、マクロブロックラインの右端のマクロブロックMBの処理では、処理S140、S150の動作は、省かれてもよい。
図11は、読み出し領域RAを統合するときの一例を示している。なお、図11は、4×4画素の読み出し領域RA10と16×16画素の読み出し領域RA20とが統合されるときの一例を示している。図11の例では、読み出し領域RA10の全体が、読み出し領域RA20に重なっている。なお、図中の細い破線は、2×2画素の単位画素群の境界を示している。太い破線で囲んだ領域は、読み出し領域RA10、RA20、RA30を示している。ここで、読み出し領域RA30は、読み出し領域RA10、RA20を統合した読み出し領域を示している。また、図中の丸印は、読み出し領域WRA10、WRA20のそれぞれの重み値が加算されることを示している。図中の三角印は、2つの読み出し領域WRA(WRA10、WRA20)の一方の読み出し領域WRAの外側の領域WOAの重み値と他方の読み出し領域WRAの重み値とが加算されることを示している。
読み出し領域WRA10の単独の重み値および読み出し領域WRA10の外側の領域WOA10の単独の重み値は、図8のケースC7より、それぞれ“32”および“16”である。また、読み出し領域WRA20の単独の重み値および読み出し領域WRA20の外側の領域WOA20の単独の重み値は、図8のケースC1より、それぞれ“3”および“1”である。したがって、読み出し領域WRA10、WRA20が互いに重なる領域の累積テーブルCTBLの重み値(図中の丸印)は、“32+3”より、“35”である。また、読み出し領域WRA10の外側の領域WOA10と読み出し領域WRA20とが重なる領域の累積テーブルCTBLの重み値(図中の三角印)は、“16+3”より、“19”である。
判定部12は、予め設定された閾値と評価値とを比較することにより、読み出し領域RAを統合するか否かを判定する。図11の例では、閾値は、“33”である。また、評価値は、例えば、複数の読み出し領域WRAが互いに重なる領域の単位画素群の重み値の合計値である。あるいは、評価値は、領域WRA、WOAが互いに重なる領域の単位画素群の重み値の合計値である。なお、判定部12は、複数の領域WOAが互いに重なる領域の単位画素群の重み値の合計値を評価値としてもよい。複数の読み出し領域WRAが互いに重なる領域等は、例えば、読み出しフラグ等を用いることにより、識別できる。
図11の例では、読み出し領域WRA10、WRA20が互いに重なる領域の単位画素群の重み値の合計値は、“35×4”より、“140”である。したがって、評価値は、“140”である。判定部12は、評価値(“140”)が閾値(“33”)以上であるため、読み出し領域WRA10、WRA20を統合して読み出すと判定する。
読み出し領域RA10、RA20を統合した読み出し領域RA30は、読み出し領域RA10の全体が読み出し領域RA20に重なっているため、読み出し領域RA20と同じである。したがって、読み出し部14は、参照先のフレームFRMの読み出し領域RA30(RA20)の画像を、メモリ20から読み出す。このように、この実施形態では、1回の読み出し動作で、読み出し領域RA10、RA20の画像を読み出すことができる。この結果、この実施形態では、参照画像の読み出し回数を低減できる。なお、読み出された画像(読み出し領域RA20の画像)は、例えば、フレーム間予測処理装置10内のメモリ等に一時的に記憶される。
図12は、読み出し領域RAを統合するときの別の例を示している。なお、図12は、4×4画素の読み出し領域RA10と16×16画素の読み出し領域RA20とが統合されるときの一例を示している。図12の例では、読み出し領域RA10は、読み出し領域RA20に隣接している。なお、図中の細い破線および三角印の意味は、図11と同じである。図中の太い破線で囲んだ領域は、読み出し領域RA10、RA20を示している。また、図中の星印は、読み出し領域WRA10の外側の領域WOA10の重み値と読み出し領域WRA20の外側の領域WOA20の重み値とが加算されることを示している。なお、閾値は、図11と同じである。
図12の例では、読み出し領域WRA10、WRA20が互いに重なる領域は、存在しない。したがって、判定部12は、例えば、領域WRA、WOAが互いに重なる領域の単位画素群の重み値の合計値を、評価値として算出する。読み出し領域WRA10と読み出し領域WRA20の外側の領域WOA20とが重なる領域の累積テーブルCTBLの重み値(図中の三角印)は、“32+1”より、“33”である。なお、読み出し領域WRA10の外側の領域WOA10と読み出し領域WRA20の外側の領域WOA20とが重なる領域の累積テーブルCTBLの重み値(図中の星印)は、“16+1”より、“17”である。
したがって、領域WRA10、WOA20が互いに重なる領域の単位画素群の重み値の合計値は、“33×1”より、“33”である。すなわち、評価値は、“33”である。判定部12は、評価値(“33”)が閾値(“33”)以上であるため、読み出し領域WRA10、WRA20を統合して読み出すと判定する。
この実施形態では、読み出し領域WRAの外側の領域WOAにも重み値を与えているため、読み出し領域WRA10、WRA20が互いに重なっていないときにも、読み出し領域WRA10、WRA20の統合を効率よく実施できる。また、この実施形態では、重み値は、読み出し領域RAのサイズが小さくなるにつれて大きい値に設定される。これにより、この実施形態では、サイズが小さい読み出し領域RAは、近くの読み出し領域RAと統合されやすくなる。
読み出し領域RA10、RA20を統合した読み出し領域RA30は、例えば、読み出し領域RA10、RA20を含む最小の矩形領域である。例えば、読み出し部14は、参照先のフレームFRMの読み出し領域RA30の画像を、メモリ20から読み出す。このように、この実施形態では、1回の読み出し動作で、読み出し領域RA10、RA20の画像を読み出すことができる。この結果、この実施形態では、参照画像の読み出し回数を低減できる。なお、読み出された画像(読み出し領域RA30の画像)は、例えば、フレーム間予測処理装置10内のメモリ等に一時的に記憶される。
図13は、読み出し領域RAを統合しないときの一例を示している。なお、図13の例では、21×21画素の読み出し領域RA10の一部は、21×21画素の読み出し領域RA20と重なっている。図中の細い破線、丸印および三角印の意味は、図11と同じである。また、図中の太い破線で囲んだ領域および星印の意味は、図12と同じである。なお、閾値は、図11と同じである。
読み出し領域WRA10の単独の重み値および読み出し領域WRA10の外側の領域WOA10の単独の重み値は、図8のケースC8より、それぞれ“2”および“1”である。また、読み出し領域WRA20の単独の重み値および読み出し領域WRA20の外側の領域WOA20の単独の重み値は、図8のケースC8より、それぞれ“2”および“1”である。
したがって、読み出し領域WRA10、WRA20が互いに重なる領域の累積テーブルCTBLの重み値(図中の丸印)は、“2+2”より、“4”である。また、2つの読み出し領域WRA(WRA10、WRA20)の一方の読み出し領域WRAの外側の領域WOAと他方の読み出し領域WRAとが重なる領域の累積テーブルCTBLの重み値(図中の三角印)は、“1+2”より、“3”である。なお、読み出し領域WRA10の外側の領域WOA10と読み出し領域WRA20の外側の領域WOA20とが重なる領域の累積テーブルCTBLの重み値(図中の星印)は、“1+1”より、“2”である。
読み出し領域WRA10、WRA20が互いに重なる領域の単位画素群の重み値の合計値は、“4×8”より、“32”である。したがって、評価値は、“32”である。判定部12は、評価値(“32”)が閾値(“33”)より小さいため、読み出し領域WRA10、WRA20を個別に読み出すと判定する。例えば、読み出し部14は、参照先のフレームFRMの読み出し領域RA10、RA20の画像を、メモリ20から個別に読み出す。なお、読み出された画像(読み出し領域RA10、RA20の画像)は、例えば、フレーム間予測処理装置10内のメモリ等に一時的に記憶される。
ここで、図13の例では、読み出し領域RA10、RA20を統合して読み出したとき、参照画像の生成に使用されない無駄な読み出し領域が増加するため、メモリ20へのアクセス期間が増加する。すなわち、図13の例では、読み出し領域RA10、RA20を統合して読み出すと、メモリ20を使用するシステムの性能が低下する。したがって、図13の例では、読み出し領域RA10、RA20を個別に読み出すことにより、メモリ20を使用するシステムの性能低下は、抑制される。
なお、この実施形態では、重み値は、読み出し領域RAのサイズが小さくなるにつれて大きい値に設定される。すなわち、重み値は、読み出し領域RAのサイズが大きくなるにつれて小さい値に設定される。これにより、読み出し領域RA10、RA20が互いに重なる領域の割合が小さいときに、読み出し領域RAが統合されることを防止できる。例えば、判定部12は、読み出し領域WRA10、WRA20を統合することにより無駄な読み出し領域が増加するとき、読み出し領域WRA10、WRA20を個別に読み出すと判定できる。この結果、この実施形態では、参照画像を読み出すときの無駄な読み出し領域の増加を抑制できる。
図14は、読み出し領域RAを統合するときの別の例を示している。なお、図14は、21×21画素の読み出し領域RA10と21×21画素の読み出し領域RA20とが統合されるときの一例を示している。図14の例では、21×21画素の読み出し領域RA10の一部は、21×21画素の読み出し領域RA20と重なっている。図中の細い破線、太い破線で囲んだ領域、丸印、三角印および星印の意味は、図13と同じである。なお、閾値は、図11と同じである。また、図14の丸印、三角印および星印の単位画素群のそれぞれの重み値は、図13の丸印、三角印および星印の単位画素群のそれぞれの重み値(“4”、“3”、“2”)と同じである。
読み出し領域WRA10、WRA20が互いに重なる領域の単位画素群の重み値の合計値は、“4×30”より、“120”である。したがって、評価値は、“120”である。判定部12は、評価値(“120”)が閾値(“33”)以上であるため、読み出し領域WRA10、WRA20を統合して読み出すと判定する。このように、判定部12は、読み出し領域RA10、RA20が互いに重なる領域の割合が大きいとき、読み出し領域WRA10、WRA20を統合して読み出すと判定する。
読み出し領域RA10、RA20を統合した読み出し領域RA30は、例えば、読み出し領域RA10、RA20を含む最小の矩形領域である。例えば、読み出し部14は、参照先のフレームFRMの読み出し領域RA30の画像を、メモリ20から読み出す。このように、この実施形態では、1回の読み出し動作で、読み出し領域RA10、RA20の画像を読み出すことができる。この結果、この実施形態では、参照画像の読み出し回数を低減できる。なお、読み出された画像(読み出し領域RA30の画像)は、例えば、フレーム間予測処理装置10内のメモリ等に一時的に記憶される。
なお、評価値と閾値との比較方法は、図11−図14で説明した例に限定されない。例えば、判定部12は、評価値の種類毎に異なる閾値を用いてもよい。ここで、評価値の種類の1つは、例えば、複数の読み出し領域WRAが互いに重なる領域の単位画素群の重み値の合計値である。また、評価値の種類の別の1つは、例えば、領域WRA、WOAが互いに重なる領域の単位画素群の重み値の合計値である。あるいは、評価値の種類の別の1つは、例えば、複数の領域WOAが互いに重なる領域の単位画素群の重み値の合計値である。
また、例えば、判定部12は、読み出し領域WRAを単位画素群分だけ外側に拡大した領域(以下、判定領域とも称する)の重なりに基づいて、評価値を算出してもよい。例えば、判定部12は、複数の判定領域が互いに重なる領域の単位画素群の重み値の合計値を評価値としてもよい。この方法では、評価値の種類を区別する必要がないため、統合判定のための処理を簡易にできる。
図15は、図1に示したフレーム間予測処理装置10が搭載される動画像復号化装置DECの一例を示している。動画像復号化装置DECは、例えば、MPEGやH.264等に準拠した画像処理装置である。例えば、動画像復号化装置DECは、メモリ20、可変長復号処理部30、逆量子化部40、逆直交変換部50、インター予測部60、イントラ予測部70、選択部80、加算部90およびフィルタ部100を有している。フレーム間予測処理装置10は、例えば、インター予測部60内に設けられる。
可変長復号処理部30は、動画像符号化装置(例えば、図16に示した動画像符号化装置ENC)により符号化されたストリームデータDSTMを受ける。そして、可変長復号処理部30は、ストリームデータDSTMに対する可変長復号処理を実施する。これにより、動きベクトルMV等の復号処理に必要な各種情報が抽出される。逆量子化部40は、可変長復号処理部30から受けたデータを逆量子化する。逆直交変換部50は、逆量子化部40から受けたデータを逆直交変換する。
インター予測部60は、可変長復号処理部30から受けた動きベクトルMVに基づいて、フレーム間予測を実施する。例えば、インター予測部60のフレーム間予測処理装置10は、参照画像RINをメモリ20から読み出す。この際、フレーム間予測処理装置10は、図1−図14で説明したように、参照画像RINを統合して読み出すか否かを判定する。以下、インター予測部60により生成された参照画像を、フレーム間予測画像とも称する。
イントラ予測部70は、例えば、可変長復号処理部30からのデータと、加算部90からのデータとを受ける。そして、イントラ予測部70は、例えば、フレーム内予測を実施し、イントラ予測画像を生成する。
選択部80は、例えば、インター予測部60の出力(フレーム間予測画像)およびイントラ予測部70の出力(イントラ予測画像)のいずれかを選択する。加算部90は、逆直交変換部50から受けたデータと選択部80により選択された予測画像とを加算して、ローカルデコード画像をフィルタ部100に出力する。
フィルタ部100は、例えば、加算部90から受けたローカルデコード画像に対して、デブロッキングフィルタ処理を実施する。例えば、フィルタ部100によりデブロッキングフィルタ処理が実施された画像IOUTは、動画像復号化装置DECから出力されるとともに、メモリ20に記憶される。これにより、復号済みの画像IOUTがメモリ20に記憶される。
図16は、図1に示したフレーム間予測処理装置10が搭載される動画像符号化装置ENCの一例を示している。動画像符号化装置ENCは、例えば、MPEGやH.264等に準拠した画像処理装置である。例えば、動画像符号化装置ENCは、メモリ20、逆量子化部42、逆直交変換部50、インター予測部62、イントラ予測部72、選択部82、加算部90、フィルタ部100、差分算出部110、直交変換部120、量子化部130および可変長符号化部140を有している。フレーム間予測処理装置10は、例えば、インター予測部62内に設けられる。
インター予測部62は、例えば、原画像DIN(符号化対象のフレームの画像データDIN)受け、動きベクトルMVを生成する。例えば、インター予測部62は、動きベクトル探索により、動きベクトルMVを生成する。また、インター予測部62は、動きベクトルMVに基づいて動き補償処理を実施し、参照画像を生成する。この際、インター予測部62のフレーム間予測処理装置10は、図1−図14で説明したように、参照画像RINを統合して読み出すか否かを判定する。以下、インター予測部62により生成された参照画像を、フレーム間予測画像とも称する。
イントラ予測部72は、例えば、原画像DINと、加算部90からのデータとを受ける。そして、イントラ予測部72は、例えば、フレーム内予測を実施し、イントラ予測画像を生成する。選択部82は、例えば、フレーム間予測画像およびイントラ予測画像の圧縮率等の情報に基づいて、インター予測部62の出力(フレーム間予測画像)およびイントラ予測部72の出力(イントラ予測画像)のいずれかを選択する。差分算出部110は、原画像DINと選択部82により選択された予測画像との差分を算出する。
直交変換部120は、差分算出部110から受けたデータ(差分画像)を直交変換する。これにより、離散信号が周波数領域の信号に変換される。量子化部130は、直交変換部120から受けたデータを量子化する。量子化部130により量子化されたデータは、逆量子化部42および可変長符号化部140に出力される。可変長符号化部140は、量子化部130から受けたデータを可変長符号化する。これにより、ストリームデータDSTM(符号化された画像)が生成される。
逆量子化部42は、量子化部130から受けたデータを逆量子化する。逆直交変換部50は、逆量子化部42から受けたデータを逆直交変換する。加算部90は、逆直交変換部50から受けたデータと選択部82により選択された予測画像とを加算して、ローカルデコード画像をフィルタ部100に出力する。
フィルタ部100は、例えば、加算部90から受けたローカルデコード画像に対して、デブロッキングフィルタ処理を実施する。フィルタ部100によりデブロッキングフィルタ処理が実施された画像は、例えば、次のフレームを符号化する際に参照される。このため、フィルタ部100によりデブロッキングフィルタ処理が実施された画像は、例えば、メモリ20に記憶される。このように、復号済みの画像は、メモリ20に記憶される。
以上、この実施形態では、フレーム間予測処理装置10は、読み出し領域RAの画像を統合して読み出すか否かを、2つのマクロブロックMB単位で判定する。これにより、この実施形態では、参照画像の読み出し回数を低減できる。また、この実施形態では、重み値は、読み出し領域RAのサイズが小さくなるにつれて大きい値に設定される。すなわち、重み値は、読み出し領域RAのサイズが大きくなるにつれて小さい値に設定される。これにより、この実施形態では、サイズが小さい読み出し領域RAは、近くの読み出し領域RAと統合されやすくなる。あるいは、この実施形態では、例えば、2つの読み出し領域RAが互いに重なる領域の割合が小さいときに、読み出し領域RAが統合されることを防止できる。この結果、この実施形態では、参照画像を読み出すときの無駄な読み出し領域RAの増加を抑制しつつ、参照画像の読み出し回数を低減できる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。