(57)【要約】【課題】動きベクトル検出器の処理効率を向上させる。【解決手段】８×８のブロックにおいてそれぞれ入力画像と参照画像とを与えられダイヤモンドサーチを用いて求めた動きベクトルと探索領域内の各点の位置座標及び絶対値誤差和とを出力する動きベクトル検出部１０、２０、３０、４０と、より大きいサイズのブロックにおいて、８×８のブロックでの演算結果を再利用できる場合にはこの結果を用いて、当該ブロックにおける動きベクトルと絶対値誤差和とを出力する動きベクトル検出部５０、６０、７０、８０、９０と、それぞれ出力された動きベクトル及びそれぞれの動きベクトルの絶対値誤差和を与えられ、いずれかのブロックサイズを選択してこのブロックサイズのブロックで求めた動きベクトルを出力するブロックサイズ選択部とを備えることを特徴とする。【選択図】図４
2007300169.tif 000002
【特許請求の範囲】
【請求項１】
所定ブロックサイズのブロックにおける入力画像と参照画像との間の動きベクトルを検出する動きベクトル検出器において、
前記所定ブロックサイズより小さい第１のブロックサイズの複数のブロックにおいて、それぞれ前記入力画像と前記参照画像とを与えられダイヤモンドサーチを用いて求めた動きベクトルと、この動きベクトルを求めた探索領域内の各点の位置座標及び絶対値誤差和とを出力する、複数の第１の動きベクトル検出部と、
前記所定ブロックサイズ以下で、かつ前記第１のブロックサイズより大きいブロックサイズの少なくとも一つのブロックにおいて、前記複数の第１の動きベクトル検出部からそれぞれ出力された前記探索領域内の各点の位置座標及び絶対値誤差和とを与えられ、前記複数の第１の動きベクトル検出部におけるそれぞれの前記探索領域に重なり点が存在する場合に前記探索領域内の各点の位置座標及び絶対値誤差和を用いて、当該ブロックにおける動きベクトルと、この動きベクトルの絶対値誤差和とを出力する、少なくとも一つの第２の動きベクトル検出部と、
前記複数の第１の動きベクトル検出部からそれぞれ出力された前記動きベクトル及びそれぞれの動きベクトルの絶対値誤差和と、前記少なくとも一つの第２の動きベクトル検出部から出力された前記動きベクトル及びこの動きベクトルの絶対値誤差和とを与えられ、いずれかのブロックサイズを選択し、選択したブロックサイズのブロックにおいて求めた前記動きベクトルを出力するブロックサイズ選択部と、
を備えることを特徴とする動きベクトル検出器。
【請求項２】
所定ブロックサイズのブロックにおける入力画像と参照画像との間の動きベクトルを検出する動きベクトル検出器において、
前記所定ブロックサイズより小さい第１のブロックサイズの複数のブロックにおいて、それぞれ前記入力画像と前記参照画像とを与えられダイヤモンドサーチを用いて求めた動きベクトルと、この動きベクトルを求めた探索領域内の各点の位置座標及び絶対値誤差和とを出力する、複数の第１の動きベクトル検出部と、
前記所定ブロックサイズ以下で、かつ前記第１のブロックサイズより大きいブロックサイズの少なくとも一つのブロックにおいて、前記複数の第１の動きベクトル検出部からそれぞれ出力された前記探索領域内の各点の位置座標及び絶対値誤差和とを与えられ、前記絶対値誤差和の合計値が最小となるような当該ブロックにおける動きベクトルと、この動きベクトルの絶対値誤差和とを出力する、少なくとも一つの第２の動きベクトル検出部と、
前記複数の第１の動きベクトル検出部からそれぞれ出力された前記動きベクトル及びそれぞれの動きベクトルの絶対値誤差和と、前記少なくとも一つの第２の動きベクトル検出部から出力された前記動きベクトル及びこの動きベクトルの絶対値誤差和とを与えられ、いずれかのブロックサイズを選択し、選択したブロックサイズのブロックにおいて求めた前記動きベクトルを出力するブロックサイズ選択部と、
を備えることを特徴とする動きベクトル検出器。
【請求項３】
前記複数の第１の動きベクトル検出部は、前記入力画像と前記参照画像とを与えられダイヤモンドサーチを用いて動きベクトルを求める際に、初期値として最大値を予め格納しており、前記探索領域内の各点の前記絶対値誤差和を順次書き換えていくバッファを有することを特徴とする請求項２記載の動きベクトル検出器。
【請求項４】
前記複数の第１の動きベクトル検出部は、探索領域内の各点の絶対値誤差和のうち探索中心点の絶対値誤差和が最小となるまでダイヤモンドサーチを繰り返し行っていき、ダイヤモンドサーチの終了時における探索領域内の各点の位置座標及び絶対値誤差和を出力することを特徴とする請求項１乃至３のいずれか一に記載の動きベクトル検出器。
【請求項５】
前記ブロックサイズ選択部は、
前記複数の第１の動きベクトル検出部から出力された前記絶対値誤差和の合計値と、前記複数の第１の動きベクトル検出部から出力された前記動きベクトルの符号化に必要なコストとを合計した値と、
前記少なくとも一つの第２の動きベクトル検出部から出力された前記絶対値誤差和又はその合計値と、前記少なくとも一つの第２の動きベクトル検出部から出力された前記動きベクトルの符号化に必要なコストとを合計した値とを比較し、
最小の値を有するいずれかのブロックサイズを選択し、選択したブロックサイズのブロックにおいて求めた前記動きベクトルを出力することを特徴とする請求項１乃至４のいずれか一に記載の動きベクトル検出器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動きベクトル検出器に関する。
【背景技術】
【０００２】
ディジタル動画像信号の高能率符号化における動き補償予測に、動きベクトル検出器が使用されている。これは画像符号化器において、入力画像Ｆｎと、参照画像Ｆ’ｎ-1、即ち過去のローカルデコード画像との間で最も小さい差を検出するものである。
【０００３】
動きベクトル検出はフレーム間予測に相当し、マクロブロック（１６×１６）を単位とする入力画像Ｆｎと参照画像Ｆ’ｎ-1との間で、一定の範囲内で差が最も小さい画像の位置、即ち動きベクトルが探索される。探索された動きベクトルから、最適なフレーム間予測画像が作成される。
【０００４】
一方、入力画像の画面内の周辺画像から最適な予測モードが選択されて、画面内予測画像が作成される。
【０００５】
このフレーム間予測画像、あるいは画面内予測画像のうちいずれか最適な予測画像が入力画像Ｆｎから差し引かれて、差分画像が作成される。
【０００６】
作成された差分画像に対し、ＤＣＴ（離散コサイン変換）等の直交変換が行われた後に量子化され、その量子化されたＤＣＴ係数がエントロピー符号化されてビットストリームとして出力される。
【０００７】
一方、量子化されたＤＣＴ係数は逆量子化された後にＩＤＣＴ等の逆直交変換が行われ、差分画像が作成され予測画像と加算されてローカルデコード画像が生成される。
【０００８】
ローカルデコード画像は、デブロキング処理部でブロックノイズが除去されて次のフレームで用いられる参照画像Ｆ’ｎとなる。これらの処理は各マクロブロック単位で繰り返し行われていき、フレーム全体について処理される。
【０００９】
次に、この画像符号化器における動きベクトル検出器について述べる。
【００１０】
各マクロブロックが、複数のブロックサイズ８×８、８×１６、１６×８、１６×１６からなるブロックを有する場合には、それぞれについて最適な動きベクトルが探索されて最終的に統合された出力が行われる。
【００１１】
まず、ブロックサイズ８×８のブロックにおいて、入力画像と参照画像との間の絶対値誤差和（Sum of Absolute Difference、以下ＳＡＤと称する）の値が最小となるような最適な動きベクトルが探索されて出力される。
【００１２】
ブロックサイズ１６×８、８×１６、１６×１６のブロックにおいても、同様に入力画像と参照画像とのＳＡＤ値が最小となる最適な動きベクトルが探索されて出力される。このようにして、各ブロックサイズのブロック毎に最適な動きベクトルが出力される。
【００１３】
ところで、ブロックサイズの異なる複数のブロックにおいて動きベクトル検出をそれぞれ行う際に、一定の範囲内で一定の順序に従って順次探索していく全探索では、最小ブロックサイズ８×８のブロックで求めたＳＡＤ値を他のブロックサイズのブロックにおいて再利用することも可能である。
【００１４】
ところが、動きベクトルを検出する際には、探索中心点及び周囲の８点を含む合計９点のみについてＳＡＤ値を求め、最もＳＡＤ値の小さい点を新たな探索中心点とするように、順次探索中心点を移動させていくダイヤモンドサーチを用いる方が、全探索よりも処理量を削減することができる。
【００１５】
ところが、ダイヤモンドサーチを用いた場合には、最小ブロックサイズの複数のブロックにおける各ダイヤモンドサーチの探索中心点が、必ずしも同様な方向には移動しない。このため、より大きいブロックサイズのブロックにおいて動きベクトル検出を行う際に、最小ブロックサイズで求めたＳＡＤ値を再利用できないためにダイヤモンドサーチを使用できず、全体の処理効率を向上させることができないという問題があった。
【００１６】
以下に、従来の動きベクトル検出に関する技術を開示した文献名を記載する。
【特許文献１】特開２００５−１０１８１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
本発明は、処理効率を向上させることが可能な動きベクトル検出器を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明の一態様による動きベクトル検出器は、所定ブロックサイズのブロックにおける入力画像と参照画像との間の動きベクトルを検出する動きベクトル検出器であって、前記所定ブロックサイズより小さい第１のブロックサイズの複数のブロックにおいて、それぞれ前記入力画像と前記参照画像とを与えられダイヤモンドサーチを用いて求めた動きベクトルと、この動きベクトルを求めた探索領域内の各点の位置座標及び絶対値誤差和とを出力する、複数の第１の動きベクトル検出部と、前記所定ブロックサイズ以下で、かつ前記第１のブロックサイズより大きいブロックサイズの少なくとも一つのブロックにおいて、前記複数の第１の動きベクトル検出部からそれぞれ出力された前記探索領域内の各点の位置座標及び絶対値誤差和とを与えられ、前記複数の第１の動きベクトル検出部におけるそれぞれの前記探索領域に重なり点が存在する場合に前記探索領域内の各点の位置座標及び絶対値誤差和を用いて、当該ブロックにおける動きベクトルと、この動きベクトルの絶対値誤差和とを出力する、少なくとも一つの第２の動きベクトル検出部と、前記複数の第１の動きベクトル検出部からそれぞれ出力された前記動きベクトル及びそれぞれの動きベクトルの絶対値誤差和と、前記少なくとも一つの第２の動きベクトル検出部から出力された前記動きベクトル及びこの動きベクトルの絶対値誤差和とを与えられ、いずれかのブロックサイズを選択し、選択したブロックサイズのブロックにおいて求めた前記動きベクトルを出力するブロックサイズ選択部とを備えることを特徴とする。
【００１９】
また、本発明の一態様による動きベクトル検出器は、所定ブロックサイズのブロックにおける入力画像と参照画像との間の動きベクトルを検出する動きベクトル検出器であって、前記所定ブロックサイズより小さい第１のブロックサイズの複数のブロックにおいて、それぞれ前記入力画像と前記参照画像とを与えられダイヤモンドサーチを用いて求めた動きベクトルと、この動きベクトルを求めた探索領域内の各点の位置座標及び絶対値誤差和とを出力する、複数の第１の動きベクトル検出部と、前記所定ブロックサイズ以下で、かつ前記第１のブロックサイズより大きいブロックサイズの少なくとも一つのブロックにおいて、前記複数の第１の動きベクトル検出部からそれぞれ出力された前記探索領域内の各点の位置座標及び絶対値誤差和とを与えられ、前記絶対値誤差和の合計値が最小となるような当該ブロックにおける動きベクトルと、この動きベクトルの絶対値誤差和とを出力する、少なくとも一つの第２の動きベクトル検出部と、前記複数の第１の動きベクトル検出部からそれぞれ出力された前記動きベクトル及びそれぞれの動きベクトルの絶対値誤差和と、前記少なくとも一つの第２の動きベクトル検出部から出力された前記動きベクトル及びこの動きベクトルの絶対値誤差和とを与えられ、いずれかのブロックサイズを選択し、選択したブロックサイズのブロックにおいて求めた前記動きベクトルを出力するブロックサイズ選択部とを備えることを特徴とする。
【発明の効果】
【００２０】
本発明の動きベクトル検出器によれば、演算量を減らして処理効率を向上させることが可能である。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態による動きベクトル検出器について、図面を参照して説明する。
【００２２】
（１）実施の形態１
先ず、本実施の形態による動きベクトル検出器を用いることが可能な、画像圧縮規格Ｈ．２６４に基づく画像符号化器の一構成例について、図１を用いて説明する。
【００２３】
動きベクトル検出器２０１に、現在の入力画像Ｆｎと参照画像Ｆ’ｎ-1、即ち過去のローカルデコード画像が入力され、これらに基づいて動きベクトル検出が行われる。この動きベクトル検出はフレーム間予測に相当するもので、マクロブロックを単位とする現在の入力画像と過去の参照画像との間で、差が最も小さくなる画像の位置が動きベクトルとして探索されて出力される。
【００２４】
探索された動きベクトルがフレーム間予測画像作成部２０２に入力され、最適な予測画像が作成されて出力される。
【００２５】
一方、画面内予測部２０３に入力画像Ｆｎが入力されると、現在のフレームのローカルデコード画像における画面内の周辺画像から最適な予測モードが選択されて出力される。この予測モードに基づいて、画面内予測画像作成部２０４において最適な予測画像が作成されて出力される。
【００２６】
フレーム間予測画像作成部２０２から出力されたフレーム間予測画像と、画面内予測画像作成部２０４から出力された画面内予測画像とにおいて、いずれかの一方の最適な予測画像がスイッチ部２０６において選択されて減算器２１１及び加算器２１２に出力される。
【００２７】
減算器２１１において、入力画像Ｆｎから、選択された最適な予測画像が差し引かれて差分画像が作成され、離散コサイン変換（以下、ＤＣＴという）部２２１に出力される。
【００２８】
ＤＣＴ部２２１では、差分画像にＤＣＴ等の直交変換が行われ、ＤＣＴ係数として出力される。このＤＣＴ係数は、量子化部２２２において量子化されて出力される。
【００２９】
量子化されたＤＣＴ係数がエントロピー符号化部２２３に入力され、エントロピー符号化されてビットストリームとして装置外部に出力される。
【００３０】
一方、量子化部２２２から出力された、量子化されたＤＣＴ係数は逆量子化部２３２に入力されて逆量子化される。逆量子化されたＤＣＴ係数は、ＩＤＣＴ部２３１に入力されてＩＤＣＴ等の逆直交変換が行われて差分画像が作成され、加算部２１２に出力される。加算部２１２においてこのＩＤＣＴ部からの出力と、スイッチ部２０６から選択出力された最適な予測画像とが加算されて、ローカルデコード画像が生成され出力される。
【００３１】
ローカルデコード画像は、デブロキングフィルタ部２０５においてブロックノイズが除去されて、次のフレーム用の参照画像Ｆ’ｎ-1として出力される。
【００３２】
以上の処理がブロックサイズ１６×１６のマクロブロックを単位としてフレーム全体に渡って繰り返し行われていく。
【００３３】
次に、この画像符号化器に含まれる動きベクトル検出器２０１について詳述する。
【００３４】
各マクロブロックが、図２（ａ）に示されたブロックサイズ８×８の４個のブロック０〜３、図２（ｂ）に示されたブロックサイズ１６×８の２個のブロック０及び１、図２（ｃ）に示されたブロックサイズ８×１６の２個のブロック０及び１、図２（ｄ）に示されたブロックサイズ１６×１６の１個のブロック０というように、ブロックサイズの異なる複数のブロックについてそれぞれ最適な動きベクトルが探索される。ここで、各ブロックに示された数字０〜３は、ブロック番号であるとする。
【００３５】
動きベクトル検出器２０１の全体の概略構成の一例を図３に示す。この動きベクトル検出器２０１は、８×８動きベクトル検出部１、１６×８動きベクトル検出部２、８×１６動きベクトル検出部３、１６×１６動きベクトル検出部４、ブロックサイズ選択部５を備えている。
【００３６】
８×８動きベクトル検出部１において、図２（ａ）に示されたブロックサイズ８×８の４個のブロック０〜３のそれぞれに対し、入力画像Ｆｎと参照画像Ｆ’ｎ-1との間のＳＡＤ値が最小になるような最適な動きベクトルが探索され、動きベクトルとそのＳＡＤ値とが出力される。
【００３７】
同様に、１６×８動きベクトル検出部２において、図２（ｂ）に示されたブロックサイズ１６×８の２個のブロック０〜１のそれぞれに対して、入力画像Ｆｎと参照画像Ｆ’ｎ-1との間のＳＡＤ値が最小になるような最適な動きベクトルとそのＳＡＤ値とが出力される。
【００３８】
さらに、８×１６動きベクトル検出部３において、図２（ｃ）に示されたブロックサイズ８×１６の２個のブロック０〜１のそれぞれに対し、入力画像Ｆｎと参照画像Ｆ’ｎ-1との間のＳＡＤ値が最小となるような最適な動きベクトルとそのＳＡＤ値とが出力され、１６×１６動きベクトル検出部４において、図２（ｄ）に示されたブロックサイズ１６×１６の１個のブロック０に対して、入力画像Ｆｎと参照画像Ｆ’ｎ-1との間のＳＡＤ値が最小になるような最適な動きベクトルとそのＳＡＤ値とが出力される。
【００３９】
ブロックサイズ選択部５に、８×８動きベクトル検出部１から出力された４個のそれぞれの最適な動きベクトル（ｍｖｘ［blk］，ｍｖｙ［blk］）と、それぞれのＳＡＤ値ｓａｄ［blk］、blk＝０、１、２、３とが出力される。
【００４０】
同様に、１６×８動きベクトル検出部２から出力された２個の最適な動きベクトル（ｍｖｘ［blk］，ｍｖｙ［blk］）とそれぞれのＳＡＤ値ｓａｄ［blk］、blk＝０、１が出力され、８×１６動きベクトル検出部３から出力された２個の最適な動きベクトル（ｍｖｘ［blk］，ｍｖｙ［blk］）とそれぞれのＳＡＤ値ｓａｄ［blk］、blk＝０、１が出力され、さらに１６×１６動きベクトル検出部４から出力された１個の最適な動きベクトル（ｍｖｘ［blk］，ｍｖｙ［blk］）とそれぞれのＳＡＤ値ｓａｄ［blk］、blk＝０が出力される。
【００４１】
ブロックサイズ毎に、マクロブロック全体としてのＳＡＤ値の総和、即ちブロックサイズ８×８のブロックでは４個のＳＡＤ値の総和、ブロックサイズ１６×８あるいは８×１６ではそれぞれ２個のＳＡＤ値の総和、ブロックサイズ１６×１６のブロックでは１個のＳＡＤ値が求められて、それぞれ比較される。
【００４２】
ここで、ブロックサイズ８×８の４個のブロックにおけるＳＡＤ値の総和が、他のブロックサイズのブロックでのＳＡＤ値の総和より小さい値となり、最適な予測画像を作成することができる。しかし、ブロックサイズ８×８の４個のブロックで求めた動きベクトルを用いる場合には全体の情報量が多くなりコストが増大する。
【００４３】
そこで、各ブロックサイズ毎のブロックにおいてＳＡＤ値をそれぞれ求めると共に、動きベクトルの情報量も考慮する必要がある。このため、ブロックサイズ選択部５において、以下の式（１）に従って最適なブロックサイズが選択される。
【００４４】
具体的には、マクロブロック全体のコストがそれぞれのブロックサイズ毎に算出されて相互に比較され、マクロブロック全体のコストが最も小さくなるような最適なブロックサイズとそのときの動きベクトルとが出力される。
【００４５】
マクロブロック全体のコスト＝マクロブロック全体のＳＡＤ値の総和＋動きベクトルの符号化に必要なコスト                              （１）
例えば、ブロックサイズ８×８のブロックにおけるコストＣ（８×８）は、
【数１】
2007300169.tif 000003
ブロックサイズ１６×８、あるいは８×１６のブロックにおけるコストＣ（１６×８）、Ｃ（８×１６）は、
【数２】
2007300169.tif 000004
ブロックサイズ１６×１６のブロックにおけるコストＣ（１６×１６）は、
Ｃ（１６×１６）＝ＳＡＤ［０］＋λ＊Ｇｅｎｂｉｔ［０］          （４）
となる。
【００４６】
但し、Ｇｅｎｂｉｔ［blk］は、動きベクトル（ｍｖｘ［blk］，ｍｖｙ［blk］）を符号化するために必要な発生ビット数、λは所望の数値を有する係数であるとする。
【００４７】
図４に、本実施の形態１による動きベクトル検出器の構成を詳細に示す。ここでは、最小のブロック単位は８×８であり、４種類のブロックサイズ８×８、１６×８、８×１６、１６×１６の各ブロックについて、それぞれダイヤモンドサーチを用いて最適な動きベクトルの検出を行うものとする。
【００４８】
図４における４個の８×８動きベクトル検出部１０、２０、３０、４０が図３における８×８動きベクトル検出部１、図４における２個の１６×８動きベクトル検出部５０、６０が図３における１６×８動きベクトル検出部２、図４における２個の８×１６動きベクトル検出部７０、８０が図３における８×１６動きベクトル検出部３、図４における１６×１６動きベクトル検出部９０が図３における１６×１６動きベクトル検出部３にそれぞれ対応する。
【００４９】
図５に、ブロックサイズ８×８のブロック０〜３におけるそれぞれのダイヤモンドサーチの動きを示し、この場合の動きベクトルの検出処理について説明する。
【００５０】
ブロックサイズ８×８のブロック０では、黒丸で示された座標（０、０）の点Ｄ０１を探索開始点とし、この点Ｄ０１と、ダイヤモンドの検索領域に含まれる白丸で示された８点とを含む９点のそれぞれについて、図４における８×８動きベクトル検出部１０における８×８ＳＡＤ算出部１２により、入力画像と参照画像との絶対値誤差和、即ちＳＡＤ値が算出される。ここで、入力画像をＦij、参照画像をＦ’ijとすると、ＳＡＤ値は次の（５）式に従って求められる。
【数３】
2007300169.tif 000005
【００５１】
算出された９個のＳＡＤ値がＳＡＤ比較部１３と、１６×８動きベクトル検出部５０内の１６×８ＳＡＤ算出部５２、８×１６動きベクトル検出部７０内の８×１６ＳＡＤ算出部７２、１６×１６動きベクトル検出部９０内の１６×１６ＳＡＤ算出部９２に出力される。
【００５２】
ＳＡＤ比較部１３においてＳＡＤ値が比較され、最小のＳＡＤ値と、その座標位置とが出力される。即ち、９個のＳＡＤ値のうちの最小のＳＡＤ値と、そのＳＡＤ値を有する点の位置座標とがＳＡＤ比較部１３から探索領域算出部１１に出力される。
【００５３】
ここで、最小のＳＡＤ値とＳＡＤ値が最小となった点の位置座標は、ＳＡＤ比較部１３内部あるいは図示されていない８×８動きベクトル検出部１０内部のメモリ内に一旦保持される。
【００５４】
探索領域算出部１１は、最小のＳＡＤ値とその位置座標、即ち最も誤差の小さい位置情報とを受け取り、この座標を次のダイヤモンドサーチにおける探索中心点とする探索領域を算出して、この探索中心点とその周囲の８個の点の位置座標とに関する情報を出力する。
【００５５】
出力されたこの情報は、８×８ＳＡＤ算出部１２、ＳＡＤ比較部１３、さらに他のブロックサイズの１６×８動きベクトル検出部５０内の探索制御部５１、８×１６動きベクトル検出部７０内の探索制御部７１、１６×１６動きベクトル検出部９０内の探索制御部９１にそれぞれ与えられる。
【００５６】
図５に示されたブロック０では、最小のＳＡＤ値を有するのは座標（２、０）の点Ｄ０２である。そこで、ダイヤモンドサーチの探索中心点が点Ｄ０１から点Ｄ０２へ、ベクトルＶ０１で示されたように右方向に移動する。
【００５７】
この点Ｄ０２を探索中心点とする新たな探索領域を算出する。この探索領域には、中心点Ｄ０２とその周囲の８点からなる合計９点が存在する。
【００５８】
しかし、９点のうち点Ｄ０２を含む４点は、前回のダイヤモンドサーチにおける探索中心点Ｄ０１を中心とする探索領域と重複する。そこで、重複していない新たな５点について、８×８ＳＡＤ算出部１１において、前回のダイヤモンドサーチと同様の手順で、入力画像と参照画像との間でそれぞれのＳＡＤ値が算出される。
【００５９】
ＳＡＤ比較部１３において５個のＳＡＤ値が比較され、そのうちの最小値とその点の座標とが算出されて出力される。探索領域算出部１１において、このＳＡＤ値が最小となる点を新たな探索中心点とする探索領域が算出される。
【００６０】
図５に示された例では、ＳＡＤ値が最小となるのは点Ｄ０３であり、ベクトルＶ０２で示されたように右斜め下方へ向けて移動する。この点Ｄ０３を探索中心点とする新たなダイヤモンドサーチの探索領域が算出される。
【００６１】
このような処理が、探索中心点のＳＡＤ値が探索領域中の９点のＳＡＤ値のなかで最小値となるまで繰り返されていく。
【００６２】
そして探索領域算出部１１は、探索中心点におけるＳＡＤ値が最小となった時点で、この入力画像と参照画像（ｘ’、ｙ’）との間で最適な動きベクトルを求める探索処理を終了する。そして、この入力画像における探索中心点（ｘ、ｙ）への動きベクトル（Ｍｖｘ、Ｍｖｙ）を以下のように求めて、最適な動きベクトルとして動きベクトル検出器２０１外部へ出力する。
（Ｍｖｘ、Ｍｖｙ）＝（ｘ−ｘ’、ｙ−ｙ’）                （６）
【００６３】
図６のフローチャートに、このような８×８動きベクトル検出部１０における探索処理の手順を示す。
【００６４】
ステップＳ１において、探索中心点を中心とするダイヤモンドサーチの探索領域の設定が行われる。
【００６５】
ステップＳ２において、この探索領域に含まれる９点についてそれぞれのＳＡＤ値が算出される。
【００６６】
ステップＳ３において、探索中心点のＳＡＤ値が最小であるかどうかが判断される。最小でない場合は、ＳＡＤ値が最小となる点を新たな探索中心点とし、ステップＳ１へ戻る。
【００６７】
探索中心点のＳＡＤ値が最小である場合は、ステップＳ５へ移行し、この最小となるＳＡＤ値とその探索中心点の座標とが最終的な探索結果として外部へ出力され、今回の入力画像と参照画像とにおける探索処理を終了する。
【００６８】
ブロックサイズ８×８の他のブロック１、２、３に対しても同様に、８×８動きベクトル検出部２０、３０、４０において、それぞれ座標（８、０）、（０、８）、（８、８）を有する探索中心点Ｄ１１、Ｄ２１、Ｄ３１を探索開始点とし、８×８ＳＡＤ算出部２２、３２、４２においてそれぞれの９個の座標のＳＡＤ値が算出される。
【００６９】
ＳＡＤ比較部２３、３３、４３において、それぞれ９個のＳＡＤ値が比較され、最小のＳＡＤ値とその点の座標とが出力される。
【００７０】
探索領域算出部２１、３１、４１において、ＳＡＤ値が最小となる点を新たな探索中心点とする探索領域が算出される。この処理が、それぞれのブロック１、２、３において、探索中心点のＳＡＤ値が最小となるまで繰り返される。
【００７１】
ブロック１の８×８動きベクトル検出部２０内の８×８ＳＡＤ算出部２２からの出力は、１６×８ブロック０の動きベクトル検出部５０内の１６×８ＳＡＤ算出部５２、８×１６ブロック１の動きベクトル検出部８０内の８×１６ＳＡＤ算出部８２、１６×１６ブロック０の動きベクトル検出部９０内の１６×１６ＳＡＤ算出部９２へ出力される。
【００７２】
ブロック２の８×８動きベクトル検出部３０内の８×８ＳＡＤ算出部３２からの出力は、１６×８ブロック１の動きベクトル検出部６０内の１６×８ＳＡＤ算出部６２、８×１６ブロック０の動きベクトル検出部７０内の８×１６ＳＡＤ算出部７２、１６×１６ブロック０の動きベクトル検出部９０内の１６×１６ＳＡＤ算出部９２に出力される。
【００７３】
ブロック３の８×８動きベクトル検出部４０内の８×８ＳＡＤ算出部４２からの出力は、１６×８ブロック１の動きベクトル検出部６０内の１６×８ＳＡＤ算出部６２、８×１６ブロック１の動きベクトル検出部８０内の８×１６ＳＡＤ算出部８２、１６×１６ブロック０の動きベクトル検出部９０内の１６×１６ＳＡＤ算出部９２に出力される。
【００７４】
さらに、ブロック１の８×８動きベクトル検出部２０内の探索領域算出部２１からの出力は、１６×８ブロック０の動きベクトル検出部５０内の探索制御部５１、８×１６ブロック１の動きベクトル検出部８０内の探索制御部８１、１６×１６ブロック０の動きベクトル検出部９０内の探索制御部９１へ出力される。
【００７５】
同様に、ブロック２の８×８動きベクトル検出部３０内の探索領域算出部３１からの出力は、１６×８ブロック１の動きベクトル検出部６０内の探索制御部６１、８×１６ブロック０の動きベクトル検出部７０内の探索制御部７１、１６×１６ブロック０の動きベクトル検出部９０内の探索制御部９１へ出力される。
【００７６】
ブロック３の８×８動きベクトル検出部４０内の探索領域算出部４１からの出力は、１６×８ブロック１の動きベクトル検出部６０内の探索制御部６１、８×１６ブロック１の動きベクトル検出部８０内の探索制御部８１、１６×１６ブロック０の動きベクトル検出部９０内の探索制御部９１へ出力される。
【００７７】
次に、ブロックサイズ１６×８のブロック０において、１６×８動きベクトル検出部５０が行う処理について説明する。
【００７８】
１６×８動きベクトル検出部５０には、入力画像と参照画像とは入力されず、８×８動きベクトル検出部１０及び２０からの出力が再利用されることで探索が行われる。
【００７９】
１６×８ＳＡＤ算出部５２には、８×８ＳＡＤ算出部１２から出力された９個のＳＡＤ値及びそれぞれの点の座標と、８×８ＳＡＤ算出部２２から出力された９個のＳＡＤ値及びそれぞれの点の座標とが与えられる。
【００８０】
ブロックサイズ１６×８のブロック０における座標（０、０）の探索中心点におけるＳＡＤ値は、ブロックサイズ８×８のブロック０における座標（０、０）の点Ｄ０１におけるＳＡＤ値と、ブロックサイズ８×８のブロック１における座標（８、０）の点Ｄ１１におけるＳＡＤ値との合計値に相当する。この演算は、１６×８ＳＡＤ算出部５２により行われる。
【００８１】
ここで、第１回目のダイヤモンドサーチでは、ブロックサイズ８×８のブロック０と１とにおける探索中心点Ｄ０１、Ｄ１１の座標は、それぞれ（０、０）、（８、０）である。よって、その相対的距離は（８、０）となる。
【００８２】
この場合には、相対的距離（８、０）を差し引いた、探索中心点Ｄ０１を中心とする探索領域の９点と、探索中心点Ｄ１１を中心とする探索領域の９点とは完全に重複した関係にある。
【００８３】
そこで、ブロックサイズ１６×８のブロック０の探索中心点を（０、０）とする探索領域に含まれる全ての９点について、１６×８ＳＡＤ算出部５２において、８×８ＳＡＤ算出部１２から出力された９個のＳＡＤ値と、８×８ＳＡＤ算出部２２から出力された９個のＳＡＤ値とを合計することにより求めることが可能である。
【００８４】
そして、今回のダイヤモンドサーチにおいて求められた、８×８のブロック０、１の重なり点（ここでは９個の点）のそれぞれのＳＡＤ値と、当該入力画像及び参照画像に対してこれまでのダイヤモンドサーチ（但し、ここでは第１回目のサーチゆえ過去のサーチは存在しない）で求められた最小のＳＡＤ値とがＳＡＤ比較部５３において比較される。
【００８５】
そして、最小のＳＡＤ値とその点の座標とがＳＡＤ比較部５３により求められて出力される。出力された情報は、次回以降のダイヤモンドサーチにおいて過去の最小のＳＡＤ値として比較するためにバッファ５４に格納される。
【００８６】
一方で、探索制御部５１に、探索領域算出部１１、２１からそれぞれ出力されたブロックサイズ８×８のブロック０、１における最小のＳＡＤ値とその点の位置座標とが与えられる。
【００８７】
探索制御部５１ではこの情報に基づいて、二つのブロック０、１のそれぞれの探索中心点及びその探索領域の間に重なり点が存在するか否かが判断され、存在する場合はその重なり点に関するベクトル情報が求められる。
【００８８】
図５に示された例では、ブロックサイズ８×８のブロック０において、１回目のダイヤモンドサーチにおける探索中心点Ｄ０１が２回目のダイヤモンドサーチにおける探索中心点Ｄ０２へ、ベクトルＶ０１で示される右方向に移動している。そして、ブロックサイズ８×８のブロック１においても同様に、１回目のダイヤモンドサーチにおける探索中心点Ｄ１１が２回目のダイヤモンドサーチにおける探索中心点Ｄ１２へ、ベクトルＶ１１で示される右方向に移動している。
【００８９】
従って、新たなそれぞれの探索中心点Ｄ０２とＤ１２との相対的距離は１回目と同様に（８、０）である。よって、ブロックサイズ１６×８のブロック０の探索領域に含まれる全ての９点が重なり点である。そこで、探索制御部５１から、これらの重なり点に関するベクトル情報が１６×８ＳＡＤ算出部５２とＳＡＤ比較部５３とに出力される。
【００９０】
この９個の重なり点のＳＡＤ値を、１６×８ＳＡＤ算出部５２において、８×８ＳＡＤ算出部１２から出力された９個のＳＡＤ値と、８×８ＳＡＤ算出部２２から出力された９個のＳＡＤ値とを合計することにより求めることが可能である。但し、ここでは９個の重なり点のうち１回目のダイヤモンドサーチにおいて求めた５点が重複するため、２回目のダイヤモンドサーチにおける新たな４点について、ＳＡＤ値を算出することとなる。
【００９１】
図５に示された例において、３回目のダイヤモンドサーチでは、ブロックサイズ８×８のブロック０と１とで探索中心点の移動方向が異なっている。 ブロック０は探索中心点Ｄ０２からベクトルＶ０２で示されたように座標（３、１）の探索中心点Ｄ０３へ、ブロック１は探索中心点Ｄ１２からベクトルＶ１２で示されたように座標（１２、０）の探索中心点Ｄ１３へ移動する。この結果、新たな探索中心点Ｄ０３とＤ１３との相対的距離は（９、−１）となる。
【００９２】
ここで、ブロックサイズ８×８の二つのブロック０、１において相対的距離を相殺した後に重なり合う点が存在するときの８通りの位置関係を図７（ａ）〜（ｆ）にそれぞれ示す。
図７（ａ）に示された例では、黒丸で示された二つの探索中心点Ｄ１０１とＤ１１１との相対的距離が（１、１）である。二つのダイヤモンドにおけるそれぞれ９点のうち重なり点は、探索中心点Ｄ１０１、Ｄ１１１と、他の点Ｐ１〜Ｐ４の合計６点である。
図７（ｂ）に示された例では、二つの探索中心点Ｄ１０２とＤ１１２との相対的距離が（０、２）で重なり点が探索中心点Ｄ１０２及びＤ１１２とＰ１１〜Ｐ１２の合計４点である。
図７（ｃ）に示された例では、二つの探索中心点Ｄ１０３とＤ１１３との相対的距離が（２、０）で重なり点が探索中心点Ｄ１０３及びＤ１１３とＰ２１〜Ｐ２２の合計４点である。
図７（ｄ）に示された例では、二つの探索中心点Ｄ１０４とＤ１１４との相対的距離が（２、２）で重なり点がＰ３１〜Ｐ３３の合計３点である。
図７（ｅ）に示された例では、二つの探索中心点Ｄ１０５とＤ１１５との相対的距離が（０、４）で重なり点がＰ４１の１点である。
図７（ｆ）に示された例では、二つの探索中心点Ｄ１０６とＤ１１６との相対的距離が（４、０）で重なり点がＰ５１の１点である。
図７（ｇ）に示された例では、二つの探索中心点Ｄ１０７とＤ１１７との相対的距離が（３、１）で重なり点がＰ６１、Ｐ６２の合計２点である。
図７（ｈ）に示された例では、二つの探索中心点Ｄ１０８とＤ１１８との相対的距離が（１、３）で重なり点がＰ７１、Ｐ７２の合計２点である。
【００９３】
３回目のダイヤモンドサーチにおいて、ブロックサイズ８×８のブロック０と１との探索中心点Ｄ０３の座標とＤ１３の座標とから相対的距離（９、−１）を差し引いた後の位置関係は、図７（ａ）に示された相対的位置（１、１）に相当する。
【００９４】
そこで、探索制御部５１において、両者の間で６点が重なることが明らかとなり、この６個の重なり点を示す情報が出力される。１６×８ＳＡＤ算出部５２において、このうちの新たな２点のＳＡＤ値が算出される。
【００９５】
４回目のダイヤモンドサーチでは、ブロックサイズ８×８のブロック０と１との探索中心点Ｄ０４、Ｄ１４の相対的距離は（１１、−３）である。この相対的距離を差し引いた後の位置関係は（３、３）となる。この場合は、図７（ａ）〜（ｈ）のいずれにも該当せず、従って両者の間で重なり点は存在しない。探索制御部５１から１６×８ＳＡＤ算出部５２、ＳＡＤ比較部５３に、重なり点が存在しない旨の通知が行われる。
【００９６】
重なり点が存在しない場合には、ブロックサイズ８×８のブロック０、１で求めた動きベクトルを再利用することができない。このような場合には、このブロックサイズ１６×８のブロック０における今回のダイヤモンドサーチでは、動き中心は存在しないと判断して動きベクトルの検出を行わずに次のダイヤモンドサーチへ移行する。
【００９７】
このように、それぞれのダイヤモンドサーチにおいて、新たなＳＡＤ値の算出が可能な点が存在するか否かを、ブロックサイズ８×８のブロック０、１における探索中心点に基づいて探索制御部５１において判断し、重なり点が存在する場合には、ＳＡＤ値の最小値とそのときの探索中心点の座標とを求めていく。
【００９８】
このようなダイヤモンドサーチが、ブロックサイズ８×８のブロック０〜３と同様に、探索中心点のＳＡＤ値が最小となるまで繰り返し行われていく。ブロックサイズ８×８のブロック０と１の探索が終了した時点で探索が終了し、最終的なＳＡＤ値と求められた最適な動きベクトルとが外部に出力される。
【００９９】
ブロックサイズ１６×８のブロック１についても同様の手順で、動きベクトル検出部６０において処理を行う。１回目のダイヤモンドサーチでは、図５に示された座標（０、８）を有する点Ｄ２１を探索開始点とする。
【０１００】
この場合は、ブロックサイズ８×８のブロック２、３の９個の点が全て重なり点となる。そこで、図４におけるブロックサイズ８×８のブロック２の８×８ＳＡＤ算出部３２とブロック３の８×８ＳＡＤ算出部４２からそれぞれ出力された９個のＳＡＤ値が１６×８ＳＡＤ算出部６２において合計されて出力される。
【０１０１】
ＳＡＤ比較部６３において９個のＳＡＤ値が比較され、最小のＳＡＤ値とその座標とが出力されて、バッファ６４に格納される。
【０１０２】
探索制御部６１に探索領域算出部３１、４１からブロックサイズ８×８のブロック０、１におけるそれぞれの最小のＳＡＤ値及びその点の座標が与えられる。２回目のダイヤモンドサーチにおいて、二つのブロック２、３における探索領域において重なり点が存在するか否かが判断される。重なり点が存在する場合は、その探索中心点及び探索領域が算出され、１６×８ＳＡＤ算出部６２、ＳＡＤ比較部６３に出力される。以降、このような手順で動きベクトルが求められていく。
【０１０３】
ブロックサイズ８×１６のブロック０の動きベクトル検出は、図５に示された座標（０、０）を探索開始点Ｄ０１とする。動きベクトル検出部７０において、ブロックサイズ８×８のブロック０の動きベクトル検出部１０とブロック２の動きベクトル検出部３０とからそれぞれ出力された情報が再利用されて、動きベクトルが順次求められていく。
【０１０４】
同様に、ブロックサイズ８×１６のブロック１の動きベクトル検出は、図５に示された座標（８、０）を探索開始点Ｄ２１とし、動きベクトル検出部８０においてブロックサイズ８×８のブロック１と３における情報が再利用されて、動きベクトルが順次求めてられていく。
【０１０５】
ブロックサイズ１６×１６のブロック０の動きベクトルの検出は、動きベクトル検出部９０の１６×１６ＳＡＤ算出部９２において、ブロックサイズ８×８のブロック０〜３から出力された情報に基づいて行われる。
【０１０６】
ブロックサイズ１６×８、８×１６、１６×１６の各ブロックにおいて、ブロックサイズ８×８のブロック０〜３のそれぞれのダイヤモンドサーチの探索中心点が同様な方向に移動する場合には重なり合う点が存在する。しかし、各探索中心点が異なる方向に移動すると重なり合う点が存在しなくなる。
【０１０７】
この場合には、ブロックサイズ８×８のブロックにおいて検出したそれぞれの動きベクトルをまとめることが不可能な場合であり、探索処理は行われない。
【０１０８】
最終的には上述したように、動きベクトル検出器全体の構成を示した図３において、それぞれ８×８動きベクトル検出部１、１６×８動きベクトル検出部２、８×１６動きベクトル検出部３、１６×１６動きベクトル検出部４においてそれぞれ動きベクトルが算出される。ブロックサイズ選択部５において、ＳＡＤ値と動きベクトルを求める際のコストに基づいて、このマクロブロック全体の最適な動きベクトルが決定されて出力される。
【０１０９】
以上のように本実施の形態１は、複数種類のブロックサイズ毎に動き探索を行って動きベクトルを検出する動きベクトル検出器であって、最小ブロックサイズの複数のブロックにおけるダイヤモンドサーチの探索中心点の位置座標に基づき、より大きいブロックサイズのブロックにおいてＳＡＤ値を算出する際に最小ブロックサイズのＳＡＤ値を再利用できるか否かを判断する。再利用が可能な場合にのみ、ＳＡＤ値を算出する。このように、最小ブロックサイズ以外のブロックにおいて処理負荷の重いＳＡＤ値の算出を行う際に、最小ブロックサイズの演算結果を再利用することで、大幅な処理量の削減が可能となる。
【０１１０】
（２）実施の形態２
本発明の実施の形態２による動きベクトル検出器について、その構成を示した図８を参照して説明する。本実施の形態２においても上記実施の形態１と同様に、最小のブロックサイズは８×８であるとする。
【０１１１】
上記実施の形態１では全てのブロックサイズ８×８、１６×８、８×１６、１６×１６のブロックにおいて、ダイヤモンドサーチを用いて動きベクトルの検出を行う。
【０１１２】
これに対し本実施の形態２では、ブロックサイズ８×８のブロック０〜３では上記実施の形態１と同様に、動きベクトル検出部１１０、１２０、１３０、１４０においてダイヤモンドサーチを用いた動きベクトルの検出を行う。しかし、ブロックサイズ１６×８のブロック０及び１、８×１６のブロック０及び１、１６×１６のブロック０では、ダイヤモンドサーチを用いずに８×８のブロックサイズの検出結果を再利用して全探索を行う点で上記実施の形態１と相違する。
【０１１３】
ブロックサイズ８×８のブロック０における動きベクトルの検出は、動きベクトル検出部１１０内における８×８ＳＡＤ算出部１１２、ＳＡＤ比較部１１４、探索領域算出部１１１が、上記実施の形態１における動きベクトル検出部１０内の８×８ＳＡＤ算出部１２、ＳＡＤ比較部１３、探索領域算出部１１と同様な手順で行う。しかし、本実施の形態２における動きベクトル検出部１１０は、８×８ＳＡＤ算出部１１２が算出した９個のＳＡＤ値を全て格納するため８×８ＳＡＤバッファ１１３をさらに備えている点で相違する。
【０１１４】
同様に、ブロックサイズ８×８のブロック１、２、３における動きベクトルの検出は、動きベクトル検出部１２０、１３０、１４０が上記実施の形態１における動きベクトル検出部２０、３０、４０とそれぞれ同様に行う。しかし、動きベクトル検出部１２０、１３０、１４０は、それぞれ８×８ＳＡＤ算出部１２２、１３２、１４２が算出した９個のＳＡＤ値を全て格納するため８×８ＳＡＤバッファ１２３、１３３、１４３をさらに備えている。
【０１１５】
このブロックサイズ８×８の各ブロック０〜３毎に設けられた８×８ＳＡＤバッファ１１３、１２３、１３３、１４３は、図９に示されたように、各ブロック０〜３毎の探索範囲内の点のＳＡＤ値を格納し得るように、縦９セル×横９セルからなるメモリセルｍｃ（０、０）〜ｍｃ（９、９）分の容量を有している。
【０１１６】
各点のＳＡＤ値の最小値を求める必要上、各点のＳＡＤ値は全て最大値を有するように初期化されている。即ち、ブロックサイズ８×８のブロック０〜３において、ダイヤモンドサーチで探索されていない点については、初期値としてＳＡＤ値の最大値が格納されている。これにより、探索された点における最小値が自動的に検出されることになる。
【０１１７】
図９に示された例では、ｊ（ｊは１以上の整数）回目のダイヤモンドサーチにおける探索中心点がＤ１０１で、探索領域に含まれる他の点がＰ１０１〜Ｐ１０８であるとする。ｊ＋１回目のダイヤモンドサーチでは、探索中心点がＤ１０２へ移動し、さらにｊ＋２回目、ｊ＋３回目のダイヤモンドサーチでは探索中心点がＤ１０３、１０４へ順次移動する。それぞれのダイヤモンドサーチにおける探索領域に含まれる９点のＳＡＤ値が、８×８ＳＡＤバッファ１１３、１２３、１３３、１４３に格納される。
【０１１８】
次に、ブロックサイズ１６×８のブロック０における動きベクトルの検出処理について説明する。
【０１１９】
ブロックサイズ１６×８のブロック０における動きベクトル検出では、動きベクトル検出部１５０における１６×８ＳＡＤ算出部１５１に、８×８ＳＡＤバッファ１１３、１２３から出力されたそれぞれ９個ずつのＳＡＤ値が与えられて合計される。これにより、１６×８のブロック０におけるＳＡＤ値が求められる。
【０１２０】
例えば、ブロックサイズ１６×８のブロック０における座標（０、０）の探索中心点Ｄ０１のＳＡＤ値は、８×８のブロック０における座標（０、０）の探索中心点Ｄ０１のＳＡＤ値と、８×８のブロック１における座標（８、０）の探索中心点Ｄ１１のＳＡＤ値とを合計することで求められる。
【０１２１】
このようにして探索範囲内の全ての点についてＳＡＤ値が求められ、ＳＡＤ比較部１５２においてＳＡＤ値が比較され、最小のＳＡＤ値とその点の座標とが求められて外部に出力される。
【０１２２】
同様の手順で、ブロックサイズ１６×８のブロック１においては、動きベクトル検出部１６０における１６×８ＳＡＤ算出部１６１に、８×８ＳＡＤバッファ１３３、１４３から出力されたそれぞれ９個ずつのＳＡＤ値が与えられて合計されることで、このブロック１におけるＳＡＤ値が求められる。
【０１２３】
探索範囲内の全ての点についてＳＡＤ値が求められた後、ＳＡＤ比較部１６２においてＳＡＤ値が比較され、最小のＳＡＤ値とその点の座標とが出力される。
【０１２４】
さらに、ブロックサイズ８×１６のブロック０、１に対し、動きベクトル検出部１７０、１８０における１６×８ＳＡＤ算出部１７１、１８１に、８×８ＳＡＤバッファ１１３及び１３３、１２３及び１４３から出力されたそれぞれ９個ずつのＳＡＤ値が与えられて合計されることで、これらのブロック０、１におけるＳＡＤ値がそれぞれ求められる。そして、ＳＡＤ比較部１７２、１８２においてＳＡＤ値が比較され、最小のＳＡＤ値とその点の座標とがそれぞれ出力される。
【０１２５】
ブロックサイズ１６×１６のブロック０の動きベクトル検出は、動きベクトル検出部１９０の１６×１６ＳＡＤ算出部１９１に、８×８ＳＡＤバッファ１１３、１２３、１３３、１４３から出力されたそれぞれ９個ずつのＳＡＤ値が与えられて合計されて、このブロック０におけるＳＡＤ値が求められる。そして、ＳＡＤ比較部１９２においてＳＡＤ値が比較され、最小のＳＡＤ値とその点の座標とが出力される。
【０１２６】
そして、最終的には上記実施の形態１と同様に、図３に示された８×８動きベクトル検出部１、１６×８動きベクトル検出部２、８×１６動きベクトル検出部３、１６×１６動きベクトル検出部４から、それぞれ最適な動きベクトルが出力される。ブロックサイズ選択部５において、ＳＡＤ値と動きベクトルのコストとが考慮されて、このマクロブロック全体における動きベクトルが決定されて外部に出力される。
【０１２７】
以上のように本実施の形態２では、全探索より処理量の少ないダイヤモンドサーチを、ブロックサイズ８×８のブロック０〜３において用いて動きベクトル検出を行い、得られた結果を、処理負荷の重いブロックサイズ１６×８、８×１６、１６×１６のブロックにおいて再利用する。これにより、ブロックサイズの異なる複数のブロックにおいてそれぞれ動きベクトルを検出する際に、全体の演算量を大幅に削減することができる。
【０１２８】
上述した実施の形態はいずれも一例であり、本発明を限定するものではなく、本発明の技術的範囲内において様々に変形することが可能である。例えば、ブロックサイズは自由に設定することができる。
【図面の簡単な説明】
【０１２９】
【図１】本発明の実施の形態１による動きベクトル検出器を備える画像符号化器の構成の一例を示すブロック図。
【図２】同動きベクトル検出器において、ブロックサイズが異なる複数のブロックを示す説明図。
【図３】同動きベクトル検出器の概略構成を示すブロック図。
【図４】同動きベクトル検出器における各検出部のより詳細な構成を示したブロック図。
【図５】同動きベクトル検出器におけるブロックサイズ８×８のブロックにおけるダイヤモンドサーチの動きを示した説明図。
【図６】同動きベクトル検出器におけるブロックサイズ８×８のブロックにおける処理の手順を示したフローチャート。
【図７】同動きベクトル検出器におけるブロックサイズ８×８のブロックにおけるダイヤモンドサーチの探索中心点の重なりを示す説明図。
【図８】本発明の実施の形態２による動きベクトルベクトル検出器の構成を示すブロック図。
【図９】同動きベクトル検出器においてダイヤモンドサーチにより各ＳＡＤバッファの格納内容が更新される点の位置を示すブロック図。
【符号の説明】
【０１３０】
１、１０、２０、３０、４０、１１０、１２０、１３０、１４０  ８×８動きベクトル検出部
２、５０、６０、１５０、１６０  １６×８動きベクトル検出部
３、７０、８０、１７０、１８０  ８×１６動きベクトル検出部
４、９０、１９０  １６×１６動きベクトル検出部
５  ブロックサイズ選択部
１１、２１、３１、４１、１１１、１２１、１３１、１４１  探索領域算出部
１２、２２、３２、４２、１１２、１２２、１３２、１４２  ８×８ＳＡＤ算出部
１３、２３、３３、４３、５３、６３、７３、８４、９４、１１４、１２４、１３４、１４４、１５２、１６２、１７２、１８２、１９２  ＳＡＤ比較部
５１、６１、７１、８１、９１  探索制御部
５２、６２、１５１、１６１  １６×８ＳＡＤ算出部
５４、６４、７４、８４、９４  バッファ
７２、８２、１７１、１８１  ８×１６ＳＡＤ算出部
９２、１９１  １６×１６ＳＡＤ算出部
１１３、１２３、１３３、１４３  ８×８ＳＡＤバッファ
【図１】
2007300169.tif 000006
【図２】
2007300169.tif 000007
【図３】
2007300169.tif 000008
【図４】
2007300169.tif 000009
【図５】
2007300169.tif 000010
【図６】
2007300169.tif 000011
【図７】
2007300169.tif 000012
【図８】
2007300169.tif 000013
【図９】
2007300169.tif 000014