以下、実施形態を図面を用いて説明する。
図1は、動きベクトル検出装置および動きベクトル検出方法の一実施形態を示している。この実施形態の動きベクトル検出装置10は、動き補償と呼ばれる技術が用いられる動画像符号化装置(MPEGやH.264等に準拠した動画像符号化装置)に搭載される。動きベクトル検出装置10を有する動画像符号化装置は、画像処理装置の一態様である。
動きベクトル検出装置10は、例えば、符号化対象の画像IIMG(以下、入力画像IIMGとも称する)と参照フレームの画像RIMG(以下、参照画像RIMGとも称する)とを受け、動きベクトルの情報を含む動きベクトル情報MVINFを出力する。動きベクトルは、画像の動き量を推定する情報であり、例えば、M×N画素のブロック毎に検出される。
例えば、動きベクトル検出装置10は、符号化対象の画像IIMGと参照画像RIMGとを比較して動きベクトルを検出する。このように、参照画像RIMGは、例えば、処理対象のマクロブロックの動きベクトルを検出する際に参照される。マクロブロックは、例えば、16×16画素のブロックである。
例えば、動きベクトル検出装置10は、生成部20および決定部30を有している。生成部20は、入力画像IIMGおよび参照画像RIMGを受け、基準範囲の処理情報EINFを生成する。基準範囲は、処理対象のマクロブロックおよび処理対象のマクロブロックの周辺のマクロブロックを含む範囲である。基準範囲の処理情報EINFは、例えば、基準範囲のマクロブロックの符号化処理に関する情報である。符号化処理に関する情報は、例えば、インター予測(フレーム間予測)とイントラ予測(フレーム内予測)とのどちらで符号化されたかを示す情報、イントラ予測時の予測モード、インター予測時の動きベクトル、分割サイズ等である。
例えば、生成部20は、基準範囲のマクロブロックのうち、符号化処理が終了したマクロブロックである処理済みマクロブロックの処理情報EINFに、処理済みマクロブロックの符号化処理に関する情報を使用する。また、例えば、生成部20は、基準範囲のマクロブロックのうち、未処理マクロブロックの処理情報EINFに、参照画像RIMGの未処理マクロブロックに対応する位置のマクロブロックの符号化処理に関する情報を使用する。これにより、基準範囲の処理情報EINFが生成される。なお、未処理マクロブロックは、入力画像IIMG内の符号化処理が終了していないマクロブロックである。
決定部30は、基準範囲の処理情報EINFを生成部20から受け、処理対象のマクロブロックの動きベクトルの探索範囲を基準範囲の処理情報EINFに基づいて決定する。これにより、処理対象のマクロブロックの動きベクトルを検出する際の探索範囲が設定される。例えば、動きベクトル検出装置10は、決定部30により設定された探索範囲を探索して動きベクトルを検出する。そして、動きベクトル検出装置10は、動きベクトルの情報や参照フレームを示す情報等を含む動きベクトル情報MVINFを出力する。
なお、動きベクトル検出装置10の構成は、この例に限定されない。例えば、生成部20は、基準範囲のうちの処理済みマクロブロックの処理情報EINFに、参照画像RIMGの処理済みマクロブロックに対応する位置のマクロブロックの符号化処理に関する情報を使用してもよい。
図2は、符号化の際のフレームFRMの参照関係の一例を示している。図2の破線の矢印は、各ピクチャの相関関係の一例を示している。また、図2の実線の矢印は、動きベクトルを示している。図2のブロックRI(RI1a、RI1b、RI2a、RI2b、RI3)は、符号化の際に参照されるブロックを示している。
Iピクチャは、例えば、フレーム内予測のみを使用するピクチャである。Pピクチャは、例えば、前方のピクチャを参照画像として符号化されたピクチャである。例えば、フレームFRM4のPピクチャは、フレームFRM1のIピクチャを参照画像として符号化されている。また、例えば、フレームFRM7のPピクチャは、フレームFRM4のPピクチャを参照画像として符号化されている。
例えば、フレームFRM4のマクロブロックMB3は、フレームFRM1のブロックRI3を参照して符号化される。すなわち、マクロブロックMB3では、前方向の動きベクトルが用いられる。例えば、マクロブロックMB3の動きベクトルは、マクロブロックMB3に対するブロックRI3の位置を示している。
Bピクチャは、例えば、前方および後方のピクチャを参照画像として符号化されたピクチャである。例えば、フレームFRM2、FRM3のBピクチャは、フレームFRM1のIピクチャおよびフレームFRM4のPピクチャを参照画像として符号化されている。また、例えば、フレームFRM5、FRM6のBピクチャは、フレームFRM4のPピクチャおよびフレームFRM7のPピクチャを参照画像として符号化されている。
例えば、フレームFRM2のマクロブロックMB1は、フレームFRM1のブロックRI1aおよびフレームFRM4のブロックRI1bを参照して符号化される。すなわち、マクロブロックMB1では、前方向および後方向の動きベクトルが用いられる。例えば、マクロブロックMB1の前方向の動きベクトルは、マクロブロックMB1に対するブロックRI1aの位置を示し、マクロブロックMB1の後方向の動きベクトルは、マクロブロックMB1に対するブロックRI1bの位置を示している。
また、例えば、フレームFRM3のマクロブロックMB2は、フレームFRM1のブロックRI2aおよびフレームFRM4のブロックRI2bを参照して符号化される。したがって、例えば、マクロブロックMB2の前方向の動きベクトルは、マクロブロックMB2に対するブロックRI2aの位置を示し、マクロブロックMB2の後方向の動きベクトルは、マクロブロックMB2に対するブロックRI2bの位置を示している。
図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分割される。
なお、動きベクトルは、マクロブロックMBやサブマクロブロックSMBを分割したブロック毎に生成される。すなわち、各ブロックは、動きベクトルを有している。例えば、各ブロックの動きベクトルは、符号化対象のブロックの位置と符号化の際に参照されるブロックの位置との差(動き量)を示している。
図4は、イントラ予測時の予測モードの一例を示している。なお、図4は、4×4画素のサイズにおけるイントラ予測時の予測モードの一例を示している。なお、イントラ予測に用いられるサイズには、16×16画素、8×8画素、4×4画素のサイズが存在する。図4の網掛けの四角形は、参照される画素を示している。また、図4の白い四角形は、予測対象の画素を示している。図4の矢印は、矢印の始点の画素の値を、矢印が通過する画素および矢印の終点の画素の予測値に使用することを意味している。
4×4画素のサイズでは、モード0(vertical)、モード1(horizontal)、モード2(DC)、モード3(diagonal down−left)、モード4(diagonal down−right)、モード5(vertical−right)、モード6(horizonal−right)、モード7(vertical−left)、モード8(horizonal−up)の9通りのモードが用意されている。
例えば、モード0では、予測対象の4×4画素のブロックの上側に隣接する画素を参照する垂直方向の予測が実行される。モード1では、予測対象の4×4画素のブロックの左側に隣接する画素を参照する水平方向の予測が実行される。モード2では、予測対象の4×4画素のブロックの左側に隣接する画素と予測対象の4×4画素のブロックの上側に隣接する画素との平均値を用いた予測が実行される。
なお、イントラ予測の処理単位は、例えば、16×16画素である。このため、例えば、16×16画素のマクロブロック内のブロックサイズ毎に、9通りの予測モード(モード0からモード8)の中から予測精度の最も高い予測モードが選択される。
図5は、基準範囲BRANの処理情報EINFの生成の一例を示している。なお、図5の基準範囲BRANi、BRANr、BRANeは、互いに対応する範囲を示している。以下、基準範囲BRANi、BRANr、BRANeを基準範囲BRANとも称する。また、図5では、基準範囲BRANの処理情報EINFに基づいて実行される4分割領域の統計処理の概要および全領域の統計処理の概要を括弧内に示している。図5の符号Wh(Wh1、Wh2、Wh3、Wh4)は、探索範囲の横方向の重みWh(例えば、探索範囲を設定する際の横方向の重みWh)を示している。横方向の重みWhでは、例えば、図の右側に向かう方向がプラスである。以下、横方向の重みWhを横方向重みWhとも称する。
また、図5の符号Wv(Wv1、Wv2、Wv3、Wv4)は、探索範囲の縦方向の重みWv(例えば、探索範囲を設定する際の縦方向の重みWv)を示している。縦方向の重みWvでは、例えば、図の下側に向かう方向がプラスである。以下、縦方向の重みWvを縦方向重みWvとも称する。符号Ahは、重みWhの基準範囲BRAN内の累積値を示し、符号Avは、重みWvの基準範囲BRAN内の累積値を示している。すなわち、累積値Ah、Avは、基準範囲BRANの単位で算出される横方向の重みおよび縦方向の重みをそれぞれ示している。以下、累積値Ah、Avを重みAh、Avとも称する。
基準範囲BRANiは、入力画像IIMGの処理対象のマクロブロックMBcおよび処理対象のマクロブロックMBcの周辺のマクロブロックMBを含む範囲(Sh×Svのサイズ)である。基準範囲BRANrは、入力画像IIMGの基準範囲BRANiに対応する参照画像RIMGの基準範囲BRANである。
すなわち、基準範囲BRANrは、参照画像RIMG内で、入力画像IIMGの基準範囲BRANiの各マクロブロックMBに対応する位置のマクロブロックを含む範囲である。例えば、マクロブロックMBcrは、入力画像IIMGの処理対象のマクロブロックMBcに対応する位置のマクロブロックMBである。基準範囲BRANeは、入力画像IIMGの基準範囲BRANiに対応する範囲である。例えば、マクロブロックMBceは、入力画像IIMGの処理対象のマクロブロックMBcに対応している。
基準範囲BRANの処理情報EINFは、例えば、入力画像IIMGの基準範囲BRANiのマクロブロックMBを符号化した際の情報と、参照画像RIMGの基準範囲BRANrのマクロブロックMBを符号化した際の情報とを用いて生成される。例えば、入力画像IIMGのマクロブロックMBcの左上、上、右上、左にそれぞれ隣接するマクロブロックMBの符号化処理に関する情報は、基準範囲BRANeの対応する位置の処理情報EINFに使用される。
また、例えば、参照画像RIMGのマクロブロックMBcrの符号化処理に関する情報は、基準範囲BRANeの対応する位置(マクロブロックMBce)の処理情報EINFに使用される。さらに、参照画像RIMGのマクロブロックMBcrの右、左下、下、右下にそれぞれ隣接するマクロブロックMBの符号化処理に関する情報は、基準範囲BRANeの対応する位置の処理情報EINFに使用される。
このように、基準範囲BRANの処理情報EINFには、参照画像RIMGがイントラ予測で符号化されている場合にも、イントラ予測の符号化処理に関する情報が使用される。このため、参照画像RIMGがイントラ予測で符号化されている場合にも、決定部30は、基準範囲BRANの処理情報EINFに基づいて、処理対象のマクロブロックMBcの動きベクトルの探索範囲を決定できる。
例えば、基準範囲BRANeの処理情報EINFは、探索範囲の横方向の重みWhおよび縦方向の重みWvを算出するために使用される。例えば、4分割領域の統計処理では、決定部30は、基準範囲BRANを縦方向および横方向にそれぞれ2分割して4つの領域に分ける。そして、決定部30は、探索範囲の横方向の重みWh(Wh1、Wh2、Wh3、Wh4)および縦方向の重みWv(Wv1、Wv2、Wv3、Wv4)を、処理情報EINFに基づいて、基準範囲BRANを分割した4つの領域でそれぞれ算出する。これにより、基準範囲BRANの各領域の重みWh、Wvを示す情報EINFaが生成される。例えば、決定部30は、情報EINFa(各領域の重みWh、Wv)に基づいて、処理対象のマクロブロックMBcの動きベクトルの探索範囲を決定する。
また、例えば、全領域の統計処理では、決定部30は、横方向の重みWhの基準範囲BRAN内の累積値Ahおよび縦方向の重みWvの基準範囲BRAN内の累積値Avを算出する。すなわち、決定部30は、探索範囲の横方向の重みAhおよび縦方向の重みAvを基準範囲BRANの単位で算出する。これにより、基準範囲BRANの全領域の重みAh、Avを示す情報EINFbが生成される。例えば、決定部30は、各領域の横方向の重みWhの組み合わせおよび各領域の縦方向の重みWvの組み合わせのいずれも所定の条件を満たしていない場合、情報EINFb(全領域の重みAh、Av)に基づいて、処理対象のマクロブロックMBcの動きベクトルの探索範囲を決定する。
なお、基準範囲BRANの大きさは、この例に限定されない。例えば、基準範囲BRANは、3×3マクロブロックMBより大きくてもよい。
図6は、重み算出の一例を示している。図6のイントラ予測の網掛けの四角形、白い四角形および矢印の意味は、図4と同じである。インター予測で符号化されたブロックでは、横方向重みWhは、ブロックの動きベクトルMVの横方向成分MVhと同じ値に設定される。また、縦方向重みWvは、ブロックの動きベクトルMVの縦方向成分MVvと同じ値に設定される。
イントラ予測で符号化されたブロックでは、横方向重みWhおよび縦方向重みWvは、予測モードに応じて設定される。なお、図6のイントラ予測時の重みWh、Wvは、ブロックサイズが4×4画素の場合を示している。
例えば、モード0では、横方向重みWhは0に設定され、縦方向重みWvは4に設定される。モード1では、横方向重みWhは4に設定され、縦方向重みWvは0に設定される。モード2では、横方向重みWhは0に設定され、縦方向重みWvは0に設定される。モード3では、横方向重みWhは−1に設定され、縦方向重みWvは1に設定される。モード4では、横方向重みWhは1に設定され、縦方向重みWvは1に設定される。
モード5では、横方向重みWhは1に設定され、縦方向重みWvは2に設定される。モード6では、横方向重みWhは2に設定され、縦方向重みWvは1に設定される。モード7では、横方向重みWhは−1に設定され、縦方向重みWvは2に設定される。モード8では、横方向重みWhは2に設定され、縦方向重みWvは−1に設定される。
なお、4×4画素以外のブロックでは、重みWh、Wvは、例えば、4×4画素のブロックに対する面積比を図6に示した重みWh、Wvに乗算して算出される。
例えば、決定部30は、各ブロックの処理情報EINFに基づいて、インター予測とイントラ予測とのどちらで符号化されたブロックか判定する。そして、決定部30は、インター予測で符号化されたブロックに対しては、ブロックの動きベクトルMVを処理情報EINFから取得し、重みWh、Wvを動きベクトルMVに基づいて算出する。さらに、決定部30は、ブロックサイズを処理情報EINFから取得し、動きベクトルMVに基づいて算出した重みWh、Wvをブロックサイズに基づいて補正する。
また、例えば、決定部30は、イントラ予測で符号化されたブロックに対しては、ブロックの予測モードを処理情報EINFから取得し、重みWh、Wvを予測モードに基づいて算出する。さらに、決定部30は、ブロックサイズを処理情報EINFから取得し、予測モードに基づいて算出した重みWh、Wvをブロックサイズに基づいて補正する。
図7は、図1に示した動きベクトル検出装置10の動作の一例を示している。すなわち、図7は、動きベクトル検出方法の一例を示している。また、図7のステップS200の一例を図8に示し、ステップS302、S312、S322、S332の一例を図9に示している。図7の動作は、ハードウエアのみで実現されてもよく、ハードウエアをソフトウエアにより制御することにより実現されてもよい。なお、図7では、基準範囲BRANのサイズをSh×Sv(単位は任意)として、Pピクチャの動きベクトルMVの探索範囲の決定に関する処理を中心に説明する。Iピクチャでは、図7の動作(動きベクトルMVの探索範囲の決定に関する処理)は、省かれる。また、Bピクチャでは、前方向の動きベクトルMVの探索範囲の決定に関する処理と、後方向の動きベクトルMVの探索範囲の決定に関する処理とに対して、図7の動作が独立して実行される。
ステップS100では、生成部20は、基準範囲BRANのマクロブロックMBの符号化処理に関する処理情報EINFを生成する。
ステップS200では、決定部30は、4分割領域の統計処理を実行し、重みWh1−Wh4、Wv1−Wv4を算出する。例えば、決定部30は、基準範囲BRANを縦方向および横方向にそれぞれ2分割して4つの領域に分ける。そして、決定部30は、基準範囲BRANを4分割した各領域の重みWh(Wh1−Wh4)、Wv(Wv1−Wv4)を、ステップS100で生成した処理情報EINFに基づいて算出する。
なお、横方向重みWh1および縦方向重みWv1は、図5に示したように、基準範囲BRAN内の左上の領域の横方向の重みおよび縦方向の重みである。横方向重みWh2および縦方向重みWv2は、基準範囲BRAN内の右上の領域の横方向の重みおよび縦方向の重みである。横方向重みWh3および縦方向重みWv3は、基準範囲BRAN内の左下の領域の横方向の重みおよび縦方向の重みである。横方向重みWh4および縦方向重みWv4は、基準範囲BRAN内の右下の領域の横方向の重みおよび縦方向の重みである。以下、基準範囲BRAN内の左上、右上、左下、右下のそれぞれの領域を、左上領域、右上領域、左下領域、右下領域とも称する。
ステップS300では、決定部30は、左上領域の横方向重みWh1および右上領域の横方向重みWh2が正で、かつ、左下領域の横方向重みWh3および右下領域の横方向重みWh4が負であるか否かを判定する。左上領域の横方向重みWh1および右上領域の横方向重みWh2が正で、かつ、左下領域の横方向重みWh3および右下領域の横方向重みWh4が負であるとき(ステップS300のYes)、決定部30の動作は、ステップS302に移る。
一方、左上領域の横方向重みWh1および右上領域の横方向重みWh2が正で、かつ、左下領域の横方向重みWh3および右下領域の横方向重みWh4が負である条件を満たさないとき(ステップS300のNo)、決定部30の動作は、ステップS310に移る。
ステップS302では、決定部30は、図9のケース1−1に示すように、処理対象のマクロブロックMBcの動きベクトルMVの探索範囲RANG11を設定する。これにより、探索範囲RANGの決定に関する動作は、終了する。
ステップS310では、決定部30は、左上領域の横方向重みWh1および右上領域の横方向重みWh2が負で、かつ、左下領域の横方向重みWh3および右下領域の横方向重みWh4が正であるか否かを判定する。左上領域の横方向重みWh1および右上領域の横方向重みWh2が負で、かつ、左下領域の横方向重みWh3および右下領域の横方向重みWh4が正であるとき(ステップS310のYes)、決定部30の動作は、ステップS312に移る。
一方、左上領域の横方向重みWh1および右上領域の横方向重みWh2が負で、かつ、左下領域の横方向重みWh3および右下領域の横方向重みWh4が正である条件を満たさないとき(ステップS310のNo)、決定部30の動作は、ステップS320に移る。
ステップS312では、決定部30は、図9のケース1−2に示すように、処理対象のマクロブロックMBcの動きベクトルMVの探索範囲RANG12を設定する。これにより、探索範囲RANGの決定に関する動作は、終了する。
ステップS320では、決定部30は、左上領域の縦方向重みWv1および左下領域の縦方向重みWv3が正で、かつ、右上領域の縦方向重みWv2および右下領域の縦方向重みWv4が負であるか否かを判定する。左上領域の縦方向重みWv1および左下領域の縦方向重みWv3が正で、かつ、右上領域の縦方向重みWv2および右下領域の縦方向重みWv4が負であるとき(ステップS320のYes)、決定部30の動作は、ステップS322に移る。
一方、左上領域の縦方向重みWv1および左下領域の縦方向重みWv3が正で、かつ、右上領域の縦方向重みWv2および右下領域の縦方向重みWv4が負である条件を満たさないとき(ステップS320のNo)、決定部30の動作は、ステップS330に移る。
ステップS322では、決定部30は、図9のケース1−3に示すように、処理対象のマクロブロックMBcの動きベクトルMVの探索範囲RANG13を設定する。これにより、探索範囲RANGの決定に関する動作は、終了する。
ステップS330では、決定部30は、左上領域の縦方向重みWv1および左下領域の縦方向重みWv3が負で、かつ、右上領域の縦方向重みWv2および右下領域の縦方向重みWv4が正であるか否かを判定する。左上領域の縦方向重みWv1および左下領域の縦方向重みWv3が負で、かつ、右上領域の縦方向重みWv2および右下領域の縦方向重みWv4が正であるとき(ステップS330のYes)、決定部30の動作は、ステップS332に移る。
一方、左上領域の縦方向重みWv1および左下領域の縦方向重みWv3が負で、かつ、右上領域の縦方向重みWv2および右下領域の縦方向重みWv4が正である条件を満たさないとき(ステップS330のNo)、決定部30の動作は、ステップS400に移る。
ステップS332では、決定部30は、図9のケース1−4に示すように、処理対象のマクロブロックMBcの動きベクトルMVの探索範囲RANG14を設定する。これにより、探索範囲RANGの決定に関する動作は、終了する。
このように、ステップS300、S310の判定は、各領域の横方向重みWh(Wh1−Wh4)の組み合わせに関する判定である。また、ステップS320、S330の判定は、各領域の縦方向重みWv(Wv1−Wv4)の組み合わせに関する判定である。すなわち、ステップS300、S310、S320、S330の処理は、各領域の横方向重みWh(Wh1−Wh4)の組み合わせおよび各領域の縦方向重みWv(Wv1−Wv4)の組み合わせのいずれかが所定の条件を満たしているか否かを判定する処理の一例である。
そして、ステップS302、S312、S322、S332の処理は、各領域の横方向重みWhの組み合わせおよび各領域の縦方向重みWvの組み合わせのいずれかが所定の条件を満たしている場合に、組み合わせに応じて実行される処理の一例である。ステップS302、S312、S322、S332では、動きベクトルMVの探索範囲RANGは、例えば、基準範囲BRANの面積と同じ面積になるように、設定される。なお、ステップS302、S312、S322、S332で設定される探索範囲RANGの面積と基準範囲BRANの面積との差の絶対値は、所定値以下でもよい。
ステップS400では、決定部30は、基準範囲BRANの全領域の重みAh、Avを算出する。例えば、基準範囲BRANの全領域の横方向重みAhは、各領域の横方向重みWh1、Wh2、Wh3、Wh4の累積値である。また。例えば、基準範囲BRANの全領域の縦方向重みAvは、各領域の縦方向重みWv1、Wv2、Wv3、Wv4の累積値である。すなわち、ステップS400の処理は、図5に示した全領域の統計処理に対応している。
ステップS410では、決定部30は、横方向重みAhを縦方向重みAvで除算した結果の絶対値(|Ah/Av|)が4より大きいか否かを判定する。横方向重みAhを縦方向重みAvで除算した結果の絶対値が4より大きいとき(ステップS410のYes)、決定部30の動作は、ステップS412に移る。一方、横方向重みAhを縦方向重みAvで除算した結果の絶対値が4以下のとき(ステップS410のNo)、決定部30の動作は、ステップS420に移る。
ステップS412では、決定部30は、処理対象のマクロブロックMBcの動きベクトルMVの探索範囲RANGの横方向の長さHおよび縦方向の長さVを設定する。例えば、決定部30は、動きベクトルMVの探索範囲RANGの横方向の長さHを、基準範囲BRANの横方向の長さShの2倍に設定し、動きベクトルMVの探索範囲RANGの縦方向の長さVを、基準範囲BRANの縦方向の長さSvの0.5倍に設定する。このように、決定部30は、横方向重みAhが強すぎる場合に、探索範囲RANGの横方向の長さHを、基準範囲BRANの横方向の長さShの2倍にクリップする。探索範囲RANGの横方向の長さHおよび縦方向の長さVが設定されたため、探索範囲RANGの決定に関する動作は、終了する。
ステップS420では、決定部30は、縦方向重みAvを横方向重みAhで除算した結果の絶対値(|Av/Ah|)が4より大きいか否かを判定する。縦方向重みAvを横方向重みAhで除算した結果の絶対値が4より大きいとき(ステップS420のYes)、決定部30の動作は、ステップS422に移る。一方、縦方向重みAvを横方向重みAhで除算した結果の絶対値が4以下のとき(ステップS420のNo)、決定部30の動作は、ステップS430に移る。
ステップS422では、決定部30は、処理対象のマクロブロックMBcの動きベクトルMVの探索範囲RANGの横方向の長さHおよび縦方向の長さVを設定する。例えば、決定部30は、動きベクトルMVの探索範囲RANGの横方向の長さHを、基準範囲BRANの横方向の長さShの0.5倍に設定し、動きベクトルMVの探索範囲RANGの縦方向の長さVを、基準範囲BRANの縦方向の長さSvの2倍に設定する。このように、決定部30は、縦方向重みAvが強すぎる場合に、探索範囲RANGの縦方向の長さVを、基準範囲BRANの縦方向の長さSvの2倍にクリップする。探索範囲RANGの横方向の長さHおよび縦方向の長さVが設定されたため、探索範囲RANGの決定に関する動作は、終了する。
ステップS430では、決定部30は、処理対象のマクロブロックMBcの動きベクトルMVの探索範囲RANGの横方向の長さHおよび縦方向の長さVを設定する。例えば、決定部30は、動きベクトルMVの探索範囲RANGの横方向の長さHを、下記の式(1)で表される大きさに設定し、動きベクトルMVの探索範囲RANGの縦方向の長さVを、下記の式(2)で表される大きさに設定する。
H=Sh×√|Ah/Av| ‥‥(1)
V=Sv×√|Av/Ah| ‥‥(2)
このように、決定部30は、各領域の横方向重みWh(Wh1−Wh4)の組み合わせおよび各領域の縦方向重みWv(Wv1−Wv4)の組み合わせのいずれも所定の条件を満たしていない場合、基準範囲BRANの全領域の重みAh、Avに基づいて、動きベクトルMVの探索範囲RANGを決定する。ステップS412、S422、S430では、動きベクトルMVの探索範囲RANGは、例えば、基準範囲BRANの面積と同じ面積になるように、設定される。なお、ステップS412、S422、S430で設定される探索範囲RANGの面積と基準範囲BRANの面積との差の絶対値は、所定値以下でもよい。
なお、動きベクトル検出装置10の動作は、この例に限定されない。例えば、ステップS410、S420の判定に用いられる閾値は、4以外でもよい。あるいは、ステップS400−S430は、省かれてもよい。この場合、左上領域の縦方向重みWv1および左下領域の縦方向重みWv3が負で、かつ、右上領域の縦方向重みWv2および右下領域の縦方向重みWv4が正である条件を満たさないとき(ステップS330のNo)、基準範囲BRANが探索範囲RANGに設定される。
また、例えば、縦方向重みWvの組み合わせに関するステップS320、S330の判定は、横方向重みWhの組み合わせに関するステップS300、S310の判定より先に実行されてもよい。この場合、左上領域の縦方向重みWv1および左下領域の縦方向重みWv3が負で、かつ、右上領域の縦方向重みWv2および右下領域の縦方向重みWv4が正である条件を満たさないとき(ステップS330のNo)、決定部30の動作は、ステップS300に移る。そして、左上領域の横方向重みWh1および右上領域の横方向重みWh2が負で、かつ、左下領域の横方向重みWh3および右下領域の横方向重みWh4が正である条件を満たさないとき(ステップS310のNo)、決定部30の動作は、ステップS400に移る。
あるいは、横方向重みWhの組み合わせに関する判定条件と縦方向重みWvの組み合わせに関する判定条件との両方を満たすか否かを判定する処理を、ステップS300等の前に追加してもよい。例えば、横方向重みWhの組み合わせに関する判定条件と縦方向重みWvの組み合わせに関する判定条件との両方を満たす場合、組み合わせに応じて実行される処理(ステップS302、S312、S322、S332のいずれかの処理)は、所定のルールに従って選択されてもよい。
所定のルールの一例は、重みWh1、Wh2の和をAh12とし、重みWh3、Wh4の和をAh34とし、重みWv1、Wv3の和をAv13とし、重みWv2、Wv4の和をAv24とした場合、式(3)で与えられる。
|Ah12−Ah34|>|Av13−Av24| ‥‥(3)
例えば、決定部30は、式(3)を満たすとき、横方向重みWhの組み合わせに応じた処理(ステップS302、S312のいずれかの処理)を実行する。また、例えば、決定部30は、式(3)を満たさないとき、縦方向重みWvの組み合わせに応じた処理(ステップS322、S332のいずれかの処理)を実行する。なお、横方向重みWhの組み合わせに関する判定条件と縦方向重みWvの組み合わせに関する判定条件との両方を満たす場合に用いられる所定のルールは、式(3)の条件以外でもよい。
図8は、図7に示した4分割領域の統計処理(図7のステップS200)の一例を示している。すなわち、図8は、図5に示した4分割領域の統計処理の一例を示している。例えば、決定部30は、図7のステップS100で生成された基準範囲BRANの処理情報EINFを参照して、図8の動作を実行する。なお、図8の重みWhi、Wviは、重み算出対象の領域(ステップS202で選択される領域)の重みを示している。例えば、各領域の重みWhi(Wh1−Wh4)、Wvi(Wv1−Wv4)の初期値は、0である。
ステップS202では、決定部30は、重み算出対象の領域を選択する。例えば、決定部30は、左上領域、右上領域、左下領域、右下領域の中から、重みWhi、Wviが算出されていない領域を選択する。
ステップS204では、決定部30は、重み算出対象の分割ブロックを選択する。例えば、決定部30は、ステップS202で選択した領域の中から、重みWh、Wvが算出されていない分割ブロックを選択する。分割ブロックは、符号化の際に分割されたブロックである。例えば、インター予測では、図3に示したように、7通りのサイズが存在する。また、例えば、イントラ予測では、16×16画素、8×8画素、4×4画素の3通りのサイズが存在する。
ステップS206では、決定部30は、重み算出対象の分割ブロック(ステップS204で選択した分割ブロック)がイントラ予測で符号化されたブロックか否かを判定する。重み算出対象の分割ブロックがイントラ予測で符号化されたブロックであるとき(ステップS206のYes)、決定部30の動作は、ステップS208に移る。一方、重み算出対象の分割ブロックがインター予測で符号化されたブロックであるとき(ステップS206のNo)、決定部30の動作は、ステップS210に移る。
ステップS208では、決定部30は、図6に示したように、イントラ予測時の予測モードに応じた重みWh、Wvを算出する。そして、決定部30は、イントラ予測時の予測モードに応じた重みWh、Wvを算出した後、ステップS212の処理を実行する。
ステップS210では、決定部30は、重み算出対象の分割ブロック(ステップS204で選択した分割ブロック)の動きベクトルMVに応じた重みWh、Wvを算出する。例えば、決定部30は、横方向重みWhを動きベクトルMVの横方向成分MVhと同じ値に設定し、縦方向重みWvを動きベクトルMVの縦方向成分MVvと同じ値に設定する。
ステップS212では、決定部30は、重み算出対象の分割ブロックのサイズが16×16画素か否かを判定する。なお、例えば、ステップS204で選択した分割ブロックが複数の領域にまたがっている場合、決定部30は、ステップS204で選択した分割ブロックとステップS202で選択した領域とが重なる部分のサイズが16×16画素か否かを判定する。
重み算出対象の分割ブロックのサイズが16×16画素であるとき(ステップS212のYes)、決定部30の動作は、ステップS214に移る。一方、重み算出対象の分割ブロックのサイズが16×16画素でないとき(ステップS212のNo)、決定部30の動作は、ステップS216に移る。
ステップS214では、決定部30は、ステップS208あるいはステップS210で算出した重みWh、Wvを16倍にする。
ステップS216では、決定部30は、重み算出対象の分割ブロックのサイズが16×8画素および8×16画素のいずれかであるか否かを判定する。なお、例えば、ステップS204で選択した分割ブロックが複数の領域にまたがっている場合、決定部30は、ステップS204で選択した分割ブロックとステップS202で選択した領域とが重なる部分のサイズを判定する。例えば、決定部30は、ステップS204で選択した分割ブロックとステップS202で選択した領域とが重なる部分のサイズが16×8画素および8×16画素のいずれかであるか否かを判定する。
重み算出対象の分割ブロックのサイズが16×8画素および8×16画素のいずれかであるとき(ステップS216のYes)、決定部30の動作は、ステップS218に移る。一方、重み算出対象の分割ブロックのサイズが16×8画素および8×16画素のいずれでもないとき(ステップS216のNo)、決定部30の動作は、ステップS220に移る。
ステップS218では、決定部30は、ステップS208あるいはステップS210で算出した重みWh、Wvを8倍にする。
ステップS220では、決定部30は、重み算出対象の分割ブロックのサイズが8×8画素か否かを判定する。重み算出対象の分割ブロックのサイズが8×8画素であるとき(ステップS220のYes)、決定部30の動作は、ステップS222に移る。一方、重み算出対象の分割ブロックのサイズが8×8画素でないとき(ステップS220のNo)、決定部30の動作は、ステップS224に移る。
ステップS222では、決定部30は、ステップS208あるいはステップS210で算出した重みWh、Wvを4倍にする。
ステップS224では、決定部30は、重み算出対象の分割ブロックのサイズが8×4画素および4×8画素のいずれかであるか否かを判定する。重み算出対象の分割ブロックのサイズが8×4画素および4×8画素のいずれかであるとき(ステップS224のYes)、決定部30の動作は、ステップS226に移る。一方、重み算出対象の分割ブロックのサイズが8×4画素および4×8画素のいずれでもないとき(ステップS224のNo)、決定部30の動作は、ステップS228に移る。すなわち、重み算出対象の分割ブロックのサイズが4×4画素であるとき、決定部30の動作は、ステップS228に移る。
ステップS226では、決定部30は、ステップS208あるいはステップS210で算出した重みWh、Wvを2倍にする。
ステップS228では、決定部30は、ステップS208あるいはステップS210で算出した重みWh、Wvを1倍にする。すなわち、決定部30は、ステップS208あるいはステップS210で算出した重みWh、Wvを補正しない。このように、ステップS212−S226の一連の処理では、決定部30は、ステップS208あるいはステップS210で算出した重みWh、Wvを、分割ブロックのサイズに基づいて補正する。
すなわち、ステップS214、S218、S222、S226、S228では、決定部30は、分割ブロックのサイズに応じた重みWh、Wvを算出する。決定部30は、ステップS214、S218、S222、S226、S228のいずれかの処理を実行した後、ステップS230において、重みWhi、Wviを更新する。
ステップS230では、決定部30は、ステップS202で選択した領域の重みWhi、Wviを更新する。例えば、決定部30は、ステップS214、S218、S222、S226、S228のいずれかにより算出された横方向重みWhを横方向重みWhiに加算して、横方向重みWhiを更新する。また、例えば、決定部30は、ステップS214、S218、S222、S226、S228のいずれかにより算出された縦方向重みWvを縦方向重みWviに加算して、縦方向重みWviを更新する。
ステップS232では、決定部30は、ステップS202で選択した領域内の全ての分割ブロックに対して、重みWh、Wvを算出したか否かを判定する。重みWh、Wvが算出されていない分割ブロックがステップS202で選択した領域に存在するとき(ステップS232のNo)、決定部30の動作は、ステップS204に移る。すなわち、ステップS202で選択した領域内の全ての分割ブロックで重みWh、Wvが算出されるまで、ステップS204−S230の処理が繰り返される。
一方、ステップS202で選択した領域内の全ての分割ブロックで重みWh、Wvが算出されているとき(ステップS232のYes)、決定部30の動作は、ステップS234に移る。例えば、ステップS202で選択した領域内の全ての分割ブロックで重みWh、Wvが算出されているとき、決定部30は、ステップS230で更新した最新の重みWhi、Wviを、ステップS202で選択した領域の重みWhi、Wviとして算出する。そして、決定部30は、ステップS202で選択した領域の重みWhi、Wviを算出した後、ステップS234の処理を実行する。
ステップS234では、決定部30は、左上領域、右上領域、左下領域、右下領域の全ての領域の重みWhi、Wviを算出したか否かを判定する。重みWhi、Wviが算出されていない領域が存在するとき(ステップS234のNo)、決定部30の動作は、ステップS202に移る。すなわち、左上領域、右上領域、左下領域、右下領域の全ての領域の重みWhi、Wviが算出されるまで、ステップS202−S232の処理が繰り返される。
一方、左上領域、右上領域、左下領域、右下領域の全ての領域の重みWhi、Wviが算出されているとき(ステップS234のYes)、決定部30による4分割領域の統計処理(図7のステップS200)は、終了する。すなわち、左上領域、右上領域、左下領域、右下領域の全ての領域の重みWhi、Wviが算出された後、図7に示したステップS300が実行される。
なお、4分割領域の統計処理は、この例に限定されない。例えば、ステップS228は、省かれてもよい。
図9は、基準範囲BRANの4分割領域の統計処理に基づいて設定される探索範囲RANGの一例を示している。なお、図9は、図7のステップS302、S312、S322、S332で実行されるケース1−1、ケース1−2、ケース1−3、ケース1−4の処理の一例を示している。ケース1−2、ケース1−3、ケース1−4の説明では、ケース1−1で説明した内容と同様の内容の説明を省略する。
ケース1−1は、左上領域の横方向重みWh1および右上領域の横方向重みWh2が正で、かつ、左下領域の横方向重みWh3および右下領域の横方向重みWh4が負であるとき、実行される。例えば、ケース1−1では、決定部30は、基準範囲BRANを左右に拡大し(図9の網掛けの領域AD1a、AD1b)、基準範囲BRANの左上隅の領域DE1aおよび右下隅の領域DE1bを探索範囲RANGから除外して、探索範囲RANG11を設定する。
例えば、基準範囲BRANの左側の辺と辺HYとの角度α、領域AD1aの辺S1aの長さは、探索範囲RANG11から除外される領域DE1aの面積と、探索範囲RANG11に追加される領域AD1aの面積とが等しくなるように、設定される。また、左上隅のマクロブロックMBの左下の頂点P1aは、辺HYの回転軸に対応している。
決定部30は、例えば、横方向重みWh1、Wh3の差分の絶対値を縦方向重みWv1、Wv3の差分の絶対値で除算した結果の大きさに基づいて、角度αを算出する。例えば、決定部30は、横方向重みWh1、Wh3の差分の絶対値を縦方向重みWv1、Wv3の差分の絶対値で除算した結果が0に近づくほど、角度αを小さくする。すなわち、決定部30は、横方向重みWh1、Wh3の差分の絶対値を縦方向重みWv1、Wv3の差分の絶対値で除算した結果が大きくなるほど、角度αを大きくする。
なお、角度αの最大値は、例えば、45度に設定されている。例えば、横方向重みWh1、Wh3の差分の絶対値を縦方向重みWv1、Wv3の差分の絶対値で除算した結果が2以上の場合、決定部30は、角度αを45度に設定する。そして、決定部30は、領域DE1aの面積と領域AD1aの面積とが等しくなるように、辺S1aの長さを算出する。
角度βも、角度αと同様に算出される。例えば、決定部30は、横方向重みWh2、Wh4の差分の絶対値を縦方向重みWv2、Wv4の差分の絶対値で除算した結果の大きさに基づいて、角度βを算出する。そして、決定部30は、領域DE1bの面積と領域AD1bの面積とが等しくなるように、領域AD1bの辺S1bの長さを算出する。
ケース1−2は、左上領域の横方向重みWh1および右上領域の横方向重みWh2が負で、かつ、左下領域の横方向重みWh3および右下領域の横方向重みWh4が正であるとき、実行される。例えば、ケース1−2では、決定部30は、基準範囲BRANを左右に拡大し(図9の網掛けの領域AD2a、AD2b)、基準範囲BRANの右上隅の領域DE2bおよび左下隅の領域DE2aを探索範囲RANGから除外して、探索範囲RANG12を設定する。
例えば、角度α、領域AD2aの辺S2aの長さは、領域DE2aの面積と領域AD2aの面積とが等しくなるように、設定される。例えば、決定部30は、横方向重みWh1、Wh3の差分の絶対値を縦方向重みWv1、Wv3の差分の絶対値で除算した結果の大きさに基づいて、角度αを算出する。そして、決定部30は、領域DE2aの面積と領域AD2aの面積とが等しくなるように、辺S2aの長さを算出する。
また、例えば、決定部30は、横方向重みWh2、Wh4の差分の絶対値を縦方向重みWv2、Wv4の差分の絶対値で除算した結果の大きさに基づいて、角度βを算出する。そして、決定部30は、領域DE2bの面積と領域AD2bの面積とが等しくなるように、領域AD2bの辺S2bの長さを算出する。
ケース1−3は、左上領域の縦方向重みWv1および左下領域の縦方向重みWv3が正で、かつ、右上領域の縦方向重みWv2および右下領域の縦方向重みWv4が負であるとき、実行される。例えば、ケース1−3では、決定部30は、基準範囲BRANを上下に拡大し(図9の網掛けの領域AD3a、AD3b)、基準範囲BRANの左上隅の領域DE3aおよび右下隅の領域DE3bを探索範囲RANGから除外して、探索範囲RANG13を設定する。
例えば、角度α、領域AD3aの辺S3aの長さは、領域DE3aの面積と領域AD3aの面積とが等しくなるように、設定される。例えば、決定部30は、縦方向重みWv1、Wv2の差分の絶対値を横方向重みWh1、Wh2の差分の絶対値で除算した結果の大きさに基づいて、角度αを算出する。そして、決定部30は、領域DE3aの面積と領域AD3aの面積とが等しくなるように、辺S3aの長さを算出する。なお、ケース1−3では、決定部30は、例えば、縦方向重みWv1、Wv2の差分の絶対値を横方向重みWh1、Wh2の差分の絶対値で除算した結果が0に近づくほど、角度αを小さくする。
角度βも、角度αと同様に算出される。例えば、決定部30は、縦方向重みWv3、Wv4の差分の絶対値を横方向重みWh3、Wh4の差分の絶対値で除算した結果の大きさに基づいて、角度βを算出する。そして、決定部30は、領域DE3bの面積と領域AD3bの面積とが等しくなるように、領域AD3bの辺S3bの長さを算出する。
ケース1−4は、左上領域の縦方向重みWv1および左下領域の縦方向重みWv3が負で、かつ、右上領域の縦方向重みWv2および右下領域の縦方向重みWv4が正であるとき、実行される。例えば、ケース1−4では、決定部30は、基準範囲BRANを上下に拡大し(図9の網掛けの領域AD4a、AD4b)、基準範囲BRANの右上隅の領域DE4aおよび左下隅の領域DE4bを探索範囲RANGから除外して、探索範囲RANG14を設定する。
例えば、角度α、領域AD4aの辺S4aの長さは、領域DE4aの面積と領域AD4aの面積とが等しくなるように、設定される。例えば、決定部30は、縦方向重みWv1、Wv2の差分の絶対値を横方向重みWh1、Wh2の差分の絶対値で除算した結果の大きさに基づいて、角度αを算出する。そして、決定部30は、領域DE4aの面積と領域AD4aの面積とが等しくなるように、辺S4aの長さを算出する。
また、例えば、決定部30は、縦方向重みWv3、Wv4の差分の絶対値を横方向重みWh3、Wh4の差分の絶対値で除算した結果の大きさに基づいて、角度βを算出する。そして、決定部30は、領域DE4bの面積と領域AD4bの面積とが等しくなるように、領域AD4bの辺S4bの長さを算出する。
なお、4分割領域の統計処理に基づく探索範囲RANGの設定方法は、この例に限定されない。例えば、辺HY等の回転軸に対応している点P1a、P1b、P2a、P2b、P3a、P3b、P4a、P4bは、基準範囲BRANの各辺の中心に位置してもよい。
また、例えば、ケース1−1、ケース1−2では、決定部30は、横方向重みWh1、Wh3の差分の絶対値を予め設定された基準値で除算した結果の大きさに基づいて、角度αを算出してもよい。同様に、決定部30は、横方向重みWh2、Wh4の差分の絶対値を予め設定された基準値で除算した結果の大きさに基づいて、角度βを算出してもよい。
また、例えば、ケース1−3、ケース1−4では、決定部30は、縦方向重みWv1、Wv2の差分の絶対値を予め設定された基準値で除算した結果の大きさに基づいて、角度αを算出してもよい。同様に、決定部30は、縦方向重みWv3、Wv4の差分の絶対値を予め設定された基準値で除算した結果の大きさに基づいて、角度βを算出してもよい。
図10は、図1に示した決定部30により設定される探索範囲RANGの一例を示している。図10の網掛け部分は、基準範囲BRANから拡大された領域を示している。ケース1−1からケース1−4は、図9に示した角度αおよび角度βが45度のときの探索範囲RANG11、RANG12、RANG13、RANG14を示している。ケース1−1からケース1−4では、基準範囲BRANから拡大された領域(網掛け部分)の基準範囲BRANに対する割合PERは、約11.1%である。
ケース2−1は、横方向重みAhと縦方向重みAvとの比が2:0.5のときの探索範囲RANG21を示している。探索範囲RANG21のサイズは、例えば、図7のステップS412で設定される。基準範囲BRANから拡大された領域(網掛け部分)の基準範囲BRANに対する割合PERは、約50%である。
ケース2−2は、横方向重みAhと縦方向重みAvとの比が1.5:0.67のときの探索範囲RANG22を示している。探索範囲RANG22のサイズは、例えば、図7のステップS430で設定される。基準範囲BRANから拡大された領域(網掛け部分)の基準範囲BRANに対する割合PERは、約16.7%である。
ケース2−3は、横方向重みAhと縦方向重みAvとの比が1:1のときの探索範囲RANG23を示している。この場合、基準範囲BRANが探索範囲RANG23として設定される。例えば、探索範囲RANG23のサイズは、図7のステップS430で設定される。基準範囲BRANから拡大された領域(網掛け部分)の基準範囲BRANに対する割合PERは、0%である。
ケース2−4は、横方向重みAhと縦方向重みAvとの比が0.67:1.5のときの探索範囲RANG24を示している。探索範囲RANG24のサイズは、例えば、図7のステップS430で設定される。基準範囲BRANから拡大された領域(網掛け部分)の基準範囲BRANに対する割合PERは、約16.7%である。
ケース2−5は、横方向重みAhと縦方向重みAvとの比が0.5:2のときの探索範囲RANG25を示している。探索範囲RANG25のサイズは、例えば、図7のステップS422で設定される。基準範囲BRANから拡大された領域(網掛け部分)の基準範囲BRANに対する割合PERは、約50%である。
このように、この実施形態では、参照画像RIMGがインター予測で符号化されたか否かに拘わらず、入力画像IIMGや参照画像RIMGが符号化されたときのパラメータ(予測モード、動きベクトルMV等)に応じた探索範囲RANGを設定できる。例えば、所望の精度の動きベクトルMVが探索範囲RANGに存在する場合、各ケースにおいて、割合PERの分だけ、所望の精度の動きベクトルMVが検出される確率が向上する。すなわち、この実施形態では、動きベクトルMVの検出精度を向上できる。
また、基準範囲BRANから拡大された領域(網掛け部分)とほぼ同じ面積の領域が探索範囲RANGから除外されるため、探索範囲RANGの面積は、基準範囲BRANの面積とほぼ同じである。このため、この実施形態では、動きベクトル検出処理の演算量の増加を抑制しつつ、動きベクトルMVの検出精度を向上できる。
さらに、この実施形態では、動きベクトルMVの検出精度を向上できるため、入力画像IIMGを符号化する際の予測精度を向上できる。すなわち、この実施形態では、動画圧縮率を向上できる。動画圧縮率の向上により、例えば、一定のビットレートで動画が転送される場合に、画質の劣化を抑制できる。
図11は、図10に示したケース2−2の探索範囲RANG22での動きベクトルMVの探索の一例を示している。図11の網掛け部分は、処理対象のマクロブロックMBcと比較されるブロックRBKを示している。
例えば、動きベクトル検出装置10は、探索範囲RANG22の左上隅から右下隅までブロックRBKを1画素ずつずらしながら、処理対象のマクロブロックMBc内の各画素とブロックRBK内の各画素との差分の和を比較する(図11の(a)−(f))。そして、差分の和が最も小さいときのブロックRBKのマクロブロックMBcに対する位置を動きベクトルMVとして検出する。
図12は、図1に示した動きベクトル検出装置10が搭載される画像処理装置ISYSの一例を示している。画像処理装置ISYSは、例えば、MPEGやH.264等に準拠した動画像符号化装置である。画像処理装置ISYSは、動きベクトル検出装置10を有する画像処理装置の一態様である。
画像処理装置ISYSは、動きベクトル検出装置10、インター予測部40、イントラ予測部50、選択部60、差分算出部70、直交変換部80、量子化部90、エントロピー符号化部100、逆量子化部110、逆直交変換部120、加算部130、フレームバッファ140、フィルタ部150、バッファ管理部160およびフレームバッファ170を有している。
動きベクトル検出装置10は、例えば、入力画像IIMG(符号化対象のフレームの画像)を受ける。また、動きベクトル検出装置10は、参照画像RIMG(参照フレームの画像)をフレームバッファ170から受ける。そして、動きベクトル検出装置10は、動きベクトルMVを含む動きベクトル情報MVINFを、インター予測部40に出力する。
インター予測部40は、例えば、入力画像IIMG、参照画像RIMGおよび動きベクトル情報MVINFを受ける。そして、インター予測部40は、例えば、動きベクトル検出装置10により検出された動きベクトルMVに基づいて動き補償処理を実行し、フレーム間予測画像を生成する。
イントラ予測部50は、例えば、入力画像IIMGを受ける。また、イントラ予測部50は、ローカルデコード画像(現フレームの画像)をフレームバッファ140から受ける。そして、イントラ予測部50は、例えば、フレーム内予測を実行し、イントラ予測画像を生成する。
選択部60は、例えば、フレーム間予測画像およびイントラ予測画像の圧縮率等の情報に基づいて、インター予測部40の出力(フレーム間予測画像)およびイントラ予測部50の出力(イントラ予測画像)のいずれかを選択する。差分算出部70は、入力画像IIMGと選択部60により選択された予測画像との差分を算出する。
直交変換部80は、差分算出部70から受けたデータ(差分画像)を直交変換する。これにより、離散信号が周波数領域の信号に変換される。量子化部90は、直交変換部80から受けたデータを量子化する。量子化部90により量子化されたデータは、逆量子化部110およびエントロピー符号化部100に出力される。エントロピー符号化部100は、量子化部90から受けたデータをエントロピー符号化する。これにより、出力ストリームSTRM(符号化された画像)が生成される。
逆量子化部110は、量子化部90から受けたデータを逆量子化する。逆直交変換部120は、逆量子化部110から受けたデータを逆直交変換する。加算部130は、逆直交変換部120から受けたデータと選択部60により選択された予測画像とを加算して、ローカルデコード画像をフレームバッファ140に出力する。フレームバッファ140は、例えば、ローカルデコード画像を、イントラ予測部50およびフィルタ部150に出力する。
フィルタ部150は、例えば、フレームバッファ140から受けたローカルデコード画像に対して、マクロブロック等のブロック境界を平滑化するためのデブロッキングフィルタ処理を実行する。フィルタ部150によりフィルタ処理されたローカルデコード画像は、例えば、次のフレームを符号化する際に参照される。すなわち、フィルタ部150から出力されたローカルデコード画像は、次のフレームを符号化する際に参照フレームとして用いられる。例えば、フィルタ部150は、フィルタ処理したローカルデコード画像を、バッファ管理部160に出力する。
バッファ管理部160は、フィルタ部150から受けたローカルデコード画像を、フレームバッファ170に出力する。また、バッファ管理部160は、動きベクトル検出装置10やインター予測部40に参照フレームが転送されるように、フレームバッファ170を管理する。
なお、画像処理装置ISYSの構成は、この例に限定されない。例えば、インター予測部40は、動きベクトル検出装置10を含んで構成されてもよい。あるいは、画像処理装置ISYSは、出力ストリームSTRMを復号する復号装置を有してもよい。
以上、図1から図12に示した実施形態の動きベクトル検出装置、動きベクトル検出方法および画像処理装置は、基準範囲BRANの処理情報EINFに基づいて、処理対象のマクロブロックMBcの動きベクトルMVの探索範囲RANGを決定する。例えば、基準範囲BRANの処理情報EINFでは、符号化処理が終了していないマクロブロック(未処理マクロブロック)の処理情報に、参照画像RIMGの未処理マクロブロックに対応する位置のマクロブロックMBの符号化処理に関する情報が使用される。
すなわち、基準範囲BRANの処理情報EINFには、参照画像RIMGがイントラ予測で符号化されている場合にも、イントラ予測の符号化処理に関する情報が使用される。このため、この実施形態では、参照画像RIMGがイントラ予測で符号化されている場合にも、基準範囲BRANの処理情報EINFに基づいて、処理対象のマクロブロックMBcの動きベクトルMVの探索範囲RANGを決定できる。
このように、この実施形態では、探索範囲RANGが入力画像IIMGや参照画像RIMGが符号化されたときのパラメータ(予測モード、動きベクトルMV等)に応じた範囲に設定されるため、所望の精度の動きベクトルMVが検出される確率が向上する。すなわち、この実施形態では、動きベクトルMVの検出精度を向上できる。
また、基準範囲BRANから拡大された領域とほぼ同じ面積の領域が探索範囲RANGから除外されるため、探索範囲RANGの面積は、基準範囲BRANの面積とほぼ同じである。このため、この実施形態では、動きベクトル検出処理の演算量の増加を抑制しつつ、動きベクトルMVの検出精度を向上できる。
さらに、この実施形態では、基準範囲BRANを縦方向および横方向にそれぞれ2分割して4つの領域に分け、探索範囲RANGの横方向の重みWhおよび縦方向の重みWvを領域毎に処理情報に基づいて算出する。そして、各領域の重みWh、Wvに基づいて、探索範囲RANGが設定される。このため、この実施形態では、基準範囲BRANの処理情報EINFを探索範囲RANGの決定に適切に反映させることができる。
なお、各領域の重みWh、Wvの組み合わせが所定の条件を満たしていない場合には、横方向の重みWhの基準範囲BRAN内の累積値および縦方向の重みWvの基準範囲BRAN内の累積値に基づいて、探索範囲RANGが設定される。このため、この実施形態では、各領域の重みWh、Wvの組み合わせが所定の条件を満たしていない場合にも、探索範囲RANGを適切に設定できる。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
符号化対象の画像と参照画像とを比較して動きベクトルを検出する動きベクトル検出装置において、
処理対象のマクロブロックおよび前記処理対象のマクロブロックの周辺のマクロブロックを含む基準範囲の前記マクロブロックのうち、符号化処理が終了していないマクロブロックである未処理マクロブロックの処理情報に、前記参照画像の前記未処理マクロブロックに対応する位置のマクロブロックの前記符号化処理に関する情報を使用し、前記基準範囲の前記処理情報を生成する生成部と、
前記基準範囲の前記処理情報に基づいて、前記処理対象のマクロブロックの前記動きベクトルの探索範囲を決定する決定部と
を備えていることを特徴とする動きベクトル検出装置。
(付記2)
付記1記載の動きベクトル検出装置において、
前記決定部は、前記基準範囲を縦方向および横方向にそれぞれ2分割して4つの領域に分け、前記探索範囲の横方向の重みおよび縦方向の重みを前記領域毎に前記処理情報に基づいて算出し、算出した前記重みに基づいて、前記処理対象のマクロブロックの前記動きベクトルの前記探索範囲を決定する
ことを特徴とする動きベクトル検出装置。
(付記3)
付記1記載の動きベクトル検出装置において、
前記決定部は、前記基準範囲を縦方向および横方向にそれぞれ2分割して4つの領域に分け、前記探索範囲の横方向の重みおよび縦方向の重みを前記領域毎に前記処理情報に基づいて算出し、前記各領域の横方向の重みの組み合わせおよび前記各領域の縦方向の重みの組み合わせのいずれかが所定の条件を満たしている場合、算出した前記重みに基づいて、前記処理対象のマクロブロックの前記動きベクトルの前記探索範囲を決定し、前記組み合わせのいずれもが前記所定の条件を満たしていない場合、前記横方向の重みの前記基準範囲内の累積値および前記縦方向の重みの前記基準範囲内の累積値に基づいて、前記処理対象のマクロブロックの前記動きベクトルの前記探索範囲を決定する
ことを特徴とする動きベクトル検出装置。
(付記4)
付記1記載の動きベクトル検出装置において、
前記生成部は、前記基準範囲の前記マクロブロックのうち、前記符号化処理が終了したマクロブロックである処理済みマクロブロックの前記処理情報に、前記処理済みマクロブロックの前記符号化処理に関する情報を使用し、前記基準範囲の前記処理情報を生成する
ことを特徴とする動きベクトル検出装置。
(付記5)
付記1記載の動きベクトル検出装置において、
前記処理情報は、前記基準範囲のマクロブロックの符号化処理に関する情報であり、インター予測とイントラ予測とのどちらで符号化されたかを示す情報、イントラ予測時の予測モードの情報、インター予測時の動きベクトルの情報、及び、分割サイズの情報の少なくとも1つを含むことを特徴とする動きベクトル検出装置。
(付記6)
符号化対象の画像と参照画像とを比較して動きベクトルを検出する動きベクトル検出方法において、
処理対象のマクロブロックおよび前記処理対象のマクロブロックの周辺のマクロブロックを含む基準範囲の前記マクロブロックのうち、符号化処理が終了していないマクロブロックである未処理マクロブロックの処理情報に、前記参照画像の前記未処理マクロブロックに対応する位置のマクロブロックの前記符号化処理に関する情報を使用し、前記基準範囲の前記処理情報を生成し、
前記基準範囲の前記処理情報に基づいて、前記処理対象のマクロブロックの前記動きベクトルの探索範囲を決定すること
を特徴とする動きベクトル検出方法。
(付記7)
付記6記載の動きベクトル検出方法において、
前記基準範囲を縦方向および横方向にそれぞれ2分割して4つの領域に分け、前記探索範囲の横方向の重みおよび縦方向の重みを前記領域毎に前記処理情報に基づいて算出し、算出した前記重みに基づいて、前記処理対象のマクロブロックの前記動きベクトルの前記探索範囲を決定すること
を特徴とする動きベクトル検出方法。
(付記8)
付記6記載の動きベクトル検出方法において、
前記基準範囲を縦方向および横方向にそれぞれ2分割して4つの領域に分け、前記探索範囲の横方向の重みおよび縦方向の重みを前記領域毎に前記処理情報に基づいて算出し、前記各領域の横方向の重みの組み合わせおよび前記各領域の縦方向の重みの組み合わせのいずれかが所定の条件を満たしている場合、算出した前記重みに基づいて、前記処理対象のマクロブロックの前記動きベクトルの前記探索範囲を決定し、前記組み合わせのいずれもが前記所定の条件を満たしていない場合、前記横方向の重みの前記基準範囲内の累積値および前記縦方向の重みの前記基準範囲内の累積値に基づいて、前記処理対象のマクロブロックの前記動きベクトルの前記探索範囲を決定すること
を特徴とする動きベクトル検出方法。
(付記9)
付記6記載の動きベクトル検出方法において、
前記基準範囲の前記マクロブロックのうち、前記符号化処理が終了したマクロブロックである処理済みマクロブロックの前記処理情報に、前記処理済みマクロブロックの前記符号化処理に関する情報を使用し、前記基準範囲の前記処理情報を生成すること
を特徴とする動きベクトル検出方法。
(付記10)
付記6記載の動きベクトル検出方法において、
前記処理情報は、前記基準範囲のマクロブロックの符号化処理に関する情報であり、インター予測とイントラ予測とのどちらで符号化されたかを示す情報、イントラ予測時の予測モードの情報、インター予測時の動きベクトルの情報、及び、分割サイズの情報の少なくとも1つを含むことを特徴とする動きベクトル検出方法。
(付記11)
符号化対象の画像と参照画像とを比較して動きベクトルを検出する動きベクトル検出装置を備え、
前記動きベクトル検出装置は、
処理対象のマクロブロックおよび前記処理対象のマクロブロックの周辺のマクロブロックを含む基準範囲の前記マクロブロックのうち、符号化処理が終了していないマクロブロックである未処理マクロブロックの処理情報に、前記参照画像の前記未処理マクロブロックに対応する位置のマクロブロックの前記符号化処理に関する情報を使用し、前記基準範囲の前記処理情報を生成する生成部と、
前記基準範囲の前記処理情報に基づいて、前記処理対象のマクロブロックの前記動きベクトルの探索範囲を決定する決定部と
を備えていることを特徴とする画像処理装置。
(付記12)
付記11記載の画像処理装置において、
前記決定部は、前記基準範囲を縦方向および横方向にそれぞれ2分割して4つの領域に分け、前記探索範囲の横方向の重みおよび縦方向の重みを前記領域毎に前記処理情報に基づいて算出し、算出した前記重みに基づいて、前記処理対象のマクロブロックの前記動きベクトルの前記探索範囲を決定する
ことを特徴とする画像処理装置。
(付記13)
付記11記載の画像処理装置において、
前記決定部は、前記基準範囲を縦方向および横方向にそれぞれ2分割して4つの領域に分け、前記探索範囲の横方向の重みおよび縦方向の重みを前記領域毎に前記処理情報に基づいて算出し、前記各領域の横方向の重みの組み合わせおよび前記各領域の縦方向の重みの組み合わせのいずれかが所定の条件を満たしている場合、算出した前記重みに基づいて、前記処理対象のマクロブロックの前記動きベクトルの前記探索範囲を決定し、前記組み合わせのいずれもが前記所定の条件を満たしていない場合、前記横方向の重みの前記基準範囲内の累積値および前記縦方向の重みの前記基準範囲内の累積値に基づいて、前記処理対象のマクロブロックの前記動きベクトルの前記探索範囲を決定する
ことを特徴とする画像処理装置。
(付記14)
付記11記載の画像処理装置において、
前記生成部は、前記基準範囲の前記マクロブロックのうち、前記符号化処理が終了したマクロブロックである処理済みマクロブロックの前記処理情報に、前記処理済みマクロブロックの前記符号化処理に関する情報を使用し、前記基準範囲の前記処理情報を生成する
ことを特徴とする画像処理装置。
(付記15)
付記11記載の画像処理装置において、
前記処理情報は、前記基準範囲のマクロブロックの符号化処理に関する情報であり、インター予測とイントラ予測とのどちらで符号化されたかを示す情報、イントラ予測時の予測モードの情報、インター予測時の動きベクトルの情報、及び、分割サイズの情報の少なくとも1つを含むことを特徴とする画像処理装置。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。