(57)【要約】【課題】  動画像データの符号化におけるフレームレートの向上と高速処理の両立を実現する。【解決手段】  整数探索部１７１は整数探索をおこない、最良整数位置判定部１７２が、整数画素精度で現ブロックとの差分が最小となる最良整数ブロックを判定する。周囲整数位置評価部１７３は、最良整数ブロックの周辺のブロックのうちで現ブロックとの差分が最小である次点整数ブロックを特定する。1/2pel演算部１７４は、最良整数ブロックの位置と次点整数ブロックの位置とに基づいて、暫定分数位置を特定する。探索中心判定部１７５は、最良整数ブロックの評価値と、暫定分数位置での評価値とを比較し、現ブロックとの差分がより小さい位置を判定する。探索中心判定部１７５は、差分がより小さかった位置を分数探索の探索中心に指定する。1/4pel演算部１７６は、指定された探索中心に基づいて1/4pel探索を実行し、ベクトル算出部１７７が分数精度の動きベクトルを算出する。【選択図】  図２
2006033112.tif 000002
【特許請求の範囲】
【請求項１】
参照フレーム上で整数探索および分数探索して、現フレーム上の現ブロックについての動きベクトルを検出する動きベクトル検出装置であって、
整数単位の探索の結果、現ブロックとの差分が最小である整数位置を第１の整数位置とし、第１の整数位置の近傍周囲の整数位置の内、前記第１の整数位置の次に現ブロックとの差分が小さい整数位置を第２の整数位置として特定する第２整数位置特定手段と、
前記第１の整数位置と前記第２の整数位置とに基づいて、所定の精度の分数位置を推定する分数位置推定手段と、
前記第１の整数位置と、前記分数位置推定手段が推定した分数位置とに基づいて、前記所定の精度より高精度の分数探索をおこなう分数探索手段と、
を備えることを特徴とする動きベクトル検出装置。
【請求項２】
前記分数探索手段は、
前記第１の整数位置における現ブロックとの差分と、前記分数位置推定手段が推定した分数位置における現ブロックとの差分とを比較し、より差分の小さい位置がいずれかであるかを判定する判定手段と、
前記判定手段によってより差分が小さいと判定された位置を前記所定の精度より高精度の分数探索における探索中心に指定する探索中心指定手段と、
をさらに備えることを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項３】
前記第２整数位置特定手段は、前記第１の整数位置に隣接する整数位置の中から第２の整数位置を特定する、
ことを特徴とする請求項１または２に記載の動きベクトル検出装置。
【請求項４】
前記第２整数位置特定手段は、前記第１の整数位置の周囲８方向に隣接する整数位置の中から第２の整数位置を特定する、
ことを特徴とする請求項３に記載の動きベクトル検出装置。
【請求項５】
前記分数位置推定手段は、前記第１の整数位置と前記第２の整数位置との間の中間位置を前記所定の精度の分数位置であると推定する、
ことを特徴とする請求項１乃至４のいずれか１項に記載の動きベクトル検出装置。
【請求項６】
前記第２整数位置特定手段は、前記第１の整数位置における現ブロックとの差分が、前記推定された分数位置における現ブロックとの差分より小さい場合、第１の整数位置の近傍周囲の整数位置の内、前記第２の整数位置の次に現ブロックとの差分が小さい整数位置を新たな第２の整数位置とする、
ことを特徴とする請求項１乃至５のいずれか１項に記載の動きベクトル検出装置。
【請求項７】
コンピュータで動画像の動きベクトル検出をおこなうためのプログラムであって、
コンピュータに、
参照フレーム上で整数単位の探索をおこなって、現フレームの現ブロックとの差分が最小である整数位置を第１の整数位置とし、第１の整数位置の近傍周囲の整数位置の内、前記第１の整数位置の次に現ブロックとの差分が小さい整数位置を第２の整数位置として特定する機能と、
前記第１の整数位置と前記第２の整数位置との間の中間位置を、所定の精度の分数位置と推定する機能と、
前記第１の整数位置における現ブロックとの差分と、前記推定された分数位置における現ブロックとの差分とを比較し、より差分の小さい位置がいずれかであるかを判定する機能と、
前記判定手段によってより差分が小さいと判定された位置を探索中心として、前記所定の精度より高精度の分数探索をおこなう機能と、
分数探索の結果に基づき、現ブロックについての動きベクトルを算出する機能と、
を実現させることを特徴とするプログラム。
【請求項８】
前記コンピュータに、
前記第１の整数位置における現ブロックとの差分が、前記推定された分数位置における現ブロックとの差分より小さい場合、第１の整数位置の近傍周囲の整数位置の内、前記第２の整数位置の次に現ブロックとの差分が小さい整数位置を新たな第２の整数位置とする機能、
をさらに実現させることを特徴とする請求項７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動きベクトル検出装置、および、プログラムに関し、特に、ブロックマッチング方式の動き検出に好適な動きベクトル検出装置、および、プログラムに関する。
【背景技術】
【０００２】
動画像データを圧縮するための符号化処理においては、すでに符号化された画像を復号して得られる参照画像（参照フレーム）と符号化対象である現画像（現フレーム）との差分を検出するため、所定数の画素群であるマクロブロックを基準に動きベクトルを検出することが一般的である。すなわち、現画像上に設定したマクロブロックとの誤差が最小となる参照画像上のブロック（参照ブロック）を探索し、マクロブロック上の基準座標と参照ブロック上の基準座標との間の動きベクトルを検出する。
【０００３】
このような参照画像上での参照ブロックの探索方法として、例えば、「フルサーチ手順」が知られている。この方法は、参照画像上の探索領域内すべてのブロックパターンについて演算をおこなうものである。ここで、ブロック間の動きベクトル検出には、例えば、差分絶対値和演算（Sum of Absolute Difference: SAD）が一般的に用いられるため、すべてのブロックパターンを対象とするフルサーチ手順では、検出が確実である反面、動きベクトル検出のための総演算量が莫大となってしまう。また、画像の変化が少ない場合でもすべてのブロックについて演算してしまうため、処理が効率的でない場合がある。
【０００４】
一方で、すべてのブロックパターンについて演算をおこなわず、複数段階の手順を経ることで簡易的に動きベクトル検出をおこなう「ステップサーチ手順」（多段探索）も知られている。特に分数画素単位までの探索をおこなう場合、ステップサーチ手順とすることで演算量の減少を図ることができる。すなわち、ステップサーチ手順では、第１段階で整数画素単位の粗い探索（整数探索）をおこない、差分値が最小となる整数位置の周辺で、分数画素単位の細かい探索（分数探索）を第２段階としておこなう。第１段階の粗い探索を導入することにより、フルサーチ手順より演算量を減少させることができる。
【０００５】
しかしながら、第２段階での分数探索では、整数探索での探索された最適位置の周囲８方向を分数画素精度で差分絶対値和演算をおこなうので、第２段階での演算量は多くなる。このような問題を解消するため、第２段階での演算量を減少させる手法が提案されている（例えば、特許文献１）。
【０００６】
特許文献１の手法では、第１段階の整数探索で探索したブロックのうち、マッチング結果が最も良好なブロック（最良ブロック）と、２番目に良好なブロック（次点ブロック）を特定し、最良ブロックからみた次点ブロックの方向を、最良ブロックの中心近傍における分数探索の対象分数位置の方向としている。すなわち、最良ブロックの中心を示すｖｅｃｔｏｒ＿ｍｉｎと、次点ブロックの中心を示すｖｅｃｔｏｒ＿ｓｅｃｏｎｄを用いて、分数探索対象とする分数位置を決定し、該当する分数位置でのみマッチングをとることで、分数探索（第２段階）での演算量の減少を図っている。
【０００７】
上記手法では、ブロック単位のマッチング順位によりｖｅｃｔｏｒ＿ｍｉｎとｖｅｃｔｏｒ＿ｓｅｃｏｎｄを決め、これに基づいて分数探索方向を決定している。このため、例えば、整数探索範囲が比較的広い場合などには、最良ブロックと位置的に離れたブロックが次点ブロックとされることも考えられる。このような場合、探索中心からみた次点ブロックまでの距離が、最良ブロックよりも遠くなる場合がある。ここで、最良整数位置（ｖｅｃｔｏｒ＿ｍｉｎ）付近での分数ベクトルを検出することが多段探索における分数探索（第２段階）の目的であるが、上記のように、最良ブロックよりも遠い位置のブロックが次点ブロックとされた場合、最良ブロックから次点ブロックに対する方向（すなわち、ｖｅｃｔｏｒ＿ｍｉｎとｖｅｃｔｏｒ＿ｓｅｃｏｎｄで求める方向）は、最良整数位置（ｖｅｃｔｏｒ＿ｍｉｎ）から実際の最良分数位置に対する方向と異なってしまう可能性がある。この場合、最良ではない分数位置に基づいて分数ベクトルが求められてしまうため、分数探索の結果が良好でない場合がある。
【０００８】
また、整数探索時に、ブロックの近傍４点（もしくは８点）の整数位置について現フレーム（符号化対象フレーム）との差分をとり、良好な結果値となった整数位置の方向にブロックを移動させることで、探索範囲の全領域にわたってブロックを移動させることなく、最良のブロックを探索する方法も知られている。一方、特許文献１に記載の手法では、整数探索におけるブロック単位に順位をとっているので、探索範囲内のすべてのブロックについて評価値を得なければならない。そのため、上記のようなブロック移動量を減少させる手法には適用できず、効果的な演算量の減少を図ることが困難である。
【特許文献１】特開平１０−２４７２４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は上記実状に鑑みてなされたもので、分数探索での演算量を減少させるとともに、良好な分数探索結果を得ることができる動き検出装置等を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の第１の観点にかかる動きベクトル検出装置は、
参照フレーム上で整数探索および分数探索して、現フレーム上の現ブロックについての動きベクトルを検出する動きベクトル検出装置であって、
整数単位の探索の結果、現ブロックとの差分が最小である整数位置を第１の整数位置（最良整数位置）とし、第１の整数位置の近傍周囲の整数位置の内、前記第１の整数位置の次に現ブロックとの差分が小さい整数位置を第２の整数位置（次点整数位置）として特定する第２整数位置特定手段と、
前記第１の整数位置と前記第２の整数位置とに基づいて、所定の精度の分数位置を推定する分数位置推定手段と、
前記第１の整数位置と、前記分数位置推定手段が推定した分数位置（暫定分数位置）とに基づいて、前記所定の精度より高精度の分数探索をおこなう分数探索手段と、
を備えることを特徴とする。
【００１１】
上記動きベクトル検出装置において、
前記分数探索手段は、
前記第１の整数位置における現ブロックとの差分と、前記分数位置推定手段が推定した分数位置における現ブロックとの差分とを比較し、より差分の小さい位置がいずれかであるかを判定する判定手段と、
前記判定手段によってより差分が小さいと判定された位置を前記所定の精度より高精度の分数探索における探索中心に指定する探索中心指定手段と、
をさらに備えていることが望ましい。
【００１２】
上記動きベクトル検出装置において、
前記第２整数位置特定手段は、前記第１の整数位置に隣接する整数位置の中から第２の整数位置を特定することが望ましい。
【００１３】
この場合、
前記第２整数位置特定手段は、前記第１の整数位置の周囲８方向に隣接する整数位置の中から第２の整数位置を特定することが望ましい。
【００１４】
上記動きベクトル検出装置において、
前記分数位置推定手段は、前記第１の整数位置と前記第２の整数位置との間の中間位置を前記所定の精度の分数位置であると推定することが望ましい。
【００１５】
上記動きベクトル検出装置において、
前記第２整数位置特定手段は、前記第１の整数位置における現ブロックとの差分が、前記推定された分数位置における現ブロックとの差分より小さい場合、第１の整数位置の近傍周囲の整数位置の内、前記第２の整数位置の次に現ブロックとの差分が小さい整数位置を新たな第２の整数位置としてもよい。
【００１６】
上記目的を達成するため、本発明の第２の観点にかかるプログラムは、
コンピュータで動画像の動きベクトル検出をおこなうためのプログラムであって、
コンピュータに、
参照フレーム上で整数単位の探索をおこなって、現フレームの現ブロックとの差分が最小である整数位置を第１の整数位置（最良整数位置）とし、第１の整数位置の近傍周囲の整数位置の内、前記第１の整数位置の次に現ブロックとの差分が小さい整数位置を第２の整数位置（次点整数位置）として特定する機能と、
前記第１の整数位置と前記第２の整数位置との間の中間位置を、所定の精度の分数位置と推定する機能と、
前記第１の整数位置における現ブロックとの差分と、前記推定された分数位置（暫定分数位置）における現ブロックとの差分とを比較し、より差分の小さい位置がいずれかであるかを判定する機能と、
前記判定手段によってより差分が小さいと判定された位置を探索中心として、前記所定の精度より高精度の分数探索をおこなう機能と、
分数探索の結果に基づき、現ブロックについての動きベクトルを算出する機能と、
を実現させることを特徴とするプログラム。
【００１７】
上記プログラムは、
前記コンピュータに、
前記第１の整数位置における現ブロックとの差分が、前記推定された分数位置における現ブロックとの差分より小さい場合、第１の整数位置の近傍周囲の整数位置の内、前記第２の整数位置の次に現ブロックとの差分が小さい整数位置を新たな第２の整数位置とする機能、
をさらに実現させることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、整数探索で得られた第１の整数位置（最良整数位置）の近傍周囲で、最良整数位置の次に現ブロックとの差分が小さい第２の整数位置（次点整数位置）を特定し、最良整数位置と次点整数位置との中間位置（例えば、1/2pel位置）を、所定の精度（例えば、1/2pel）の分数探索で得られる分数位置と推定する。そして、推定された分数位置（暫定分数位置）と最良整数位置のうち、現ブロックとの差分がより小さい位置を探索中心として、より高精度（例えば、1/4pel）の分数探索をおこなう。このため、例えば、「整数探索（第１段階）→1/2pel探索（第２段階）→1/4pel探索（第３段階）」というような多段探索で動きベクトルを検出する場合に、すでに実行された整数探索の結果から第２段階での結果を推定するので、第２段階での演算量を減少させることができる。これにより、動画像の符号化などにおける処理の高速化や装置の省電力化等を図ることができる。
【００１９】
ここで、次点整数位置を最良整数位置の近傍周囲、より詳細には、最良整数位置に隣接する整数位置の中から特定している。このため、探索範囲内のブロック単位で最良整数位置と次点整数位置とを特定することで生じうる、実際の分数動きベクトルとは相関しない位置を次点整数位置としてしまうことがない。さらに、特定した次点整数位置に基づいて推定した分数位置における現ブロックとの差分より、最良整数位置における現ブロックとの差分の方が小さい場合は、最良整数位置の近傍周囲で、当該次点整数位置の次に現ブロックとの差分が小さい位置を次点整数位置としている。このため、種々の条件等により、最良整数位置の次に差分が小さい位置が実際の分数動きベクトルと相関が高くない場合であっても、実際の分数動きベクトルとの相関が高い位置を探索するので、高速な処理を安定的におこなうことができる。
【発明を実施するための最良の形態】
【００２０】
（実施形態１）
本発明にかかる実施形態を、以下図面を参照して説明する。本実施形態では、動画像データの符号化を行う符号化装置に本発明を適用した場合を例に以下説明する。本実施形態にかかる符号化装置１００は、入力される動画像データを構成する所定単位（例えば、フレームやフィールド）の画像間での動き補償により次の画像を予測する予測差分符号化方式で動画像データを符号化するものとする。本実施形態では、入力される単位画像を「フレーム」とする。すなわち、本実施形態にかかる符号化装置１００は、インターフレーム予測による符号化をおこなう。なお、画像単位はフレームに限られず任意であり、例えば「フィールド」などであってもよい。
【００２１】
本実施形態にかかる符号化装置１００の構成を図１を参照して説明する。図１は、本実施形態にかかる符号化装置１００の機能構成を示す機能ブロック図である。
【００２２】
図示するように、本実施形態にかかる符号化装置１００は、変換部１１０と、量子化部１２０と、符号化部１３０と、逆量子化部１４０と、逆変換部１５０と、復元画像メモリ１６０と、動き検出部１７０と、動き補償部１８０と、から構成される。
【００２３】
変換部１１０は、入力されたフレームおよび差分データについて変換符号化をおこなうことでデータ圧縮をおこなう。ここでは、例えば、４×４ブロックの整数変換（Integer Transform）をおこなうことで、動画像データを空間周波数領域に変換する。すなわち、隣接画素との相関を利用して低域周波数領域に変換係数を偏らせることでデータ圧縮を行う。
【００２４】
量子化部１２０は、変換部１１０による変換係数の値を、例えば、量子化ステップ幅の倍数で表して量子化し、データ圧縮を行う。すなわち、変換部１１０での変換に用いられた変換係数が離散的なレベルにマッピングされる。このような量子化によって高い周波数の符号量を軽減する。
【００２５】
符号化部１３０は、量子化部１２０で量子化されたデータを、例えば、エントロピー符号化して出力するものであり、ＶＬＣ（Variable Length Coding：可変長符号化）方式などの符号を用いて符号化する。より詳細には、例えば、指数ゴロム符号（Exponential Golomb Coding）や、CAVLC（Context-based Adaptive Variable Length Coding）などを用いる。さらに、生成する符号量を削減するために、CABAC（Context-based Adaptive Binary Arithmetic Coding）などの算術符号を用いて符号化してもよい。符号化部１３０で符号化されたデータ（以下、「符号化ビットストリーム」とする）は、所定の伝送媒体や記録媒体などに出力される。出力された符号化ビットストリームは、所定の復号化装置によって復号されて動画像データが再生される。
【００２６】
逆量子化部１４０は、量子化部１２０で量子化されたデータを逆量子化し、逆変換部１５０は、逆量子化部１４０で逆量子化されたデータを逆変換することで、量子化された入力データ（量子化フレーム）を復元する。
【００２７】
復元画像メモリ１６０は、例えば、半導体記憶素子などから構成される記憶装置であり、逆変換部１５０で復元されたフレーム（以下、「復元フレーム」とする）を格納する、いわゆるフレームメモリである。すなわち、出力された符号化フレームについての符号化前のデータを格納する。復元画像メモリ１６０に格納された復元フレームは、インター予測で参照される「参照フレーム」として用いられる。
【００２８】
動き検出部１７０は、現在の入力フレーム（現フレーム）と、現フレームの前のフレーム（参照フレーム）との差分を検出することで画像中の動体の動きを検出し、その動きのベクトル（動きベクトル）を求める。本実施形態では、現フレーム上に所定数の画素から構成されるマクロブロック（Macro Block: MB）を設定し、参照フレーム上でマクロブロックとの差分が最小となるブロック（参照ブロック）を探索し、これらの間の差分を示すベクトルを動きベクトルとして検出する、いわゆる「ブロック・マッチング法」による動き検出をおこなう。
【００２９】
ここで、本実施形態の動き検出部１７０は、整数画素単位で動きベクトルを探索した後に分数画素単位で探索をおこなう、いわゆる「多段探索」により、分数単位までの動きベクトルを検出する。ここで、整数画素単位での探索を「整数探索」、分数画素単位での探索を「分数探索」とする。
【００３０】
動き補償部１８０は、動き検出部１７０が検出した動きベクトルに基づいて、前のフレームに対して動き補償する。すなわち、検出した動きベクトルに基づいて予測フレームを作成する。そして、入力フレームと予測フレームの差分が符号化対象となる。
【００３１】
本発明の実施形態にかかる動き検出部１７０は、例えば、「整数探索（第１段階）→1/2pel探索（第２段階）→1/4pel探索（第３段階）」のような多段探索で動きベクトルを検出する場合に、第２段階の演算量を減少させることで、処理速度の高速化とフレームレートの向上を図るものである。このような動作を行う動き検出部１７０の構成を図２を参照して説明する。
【００３２】
図２は、動き検出部１７０の構成を示すブロック図である。図示するように、動き検出部１７０は、整数探索部１７１、最良整数位置判定部１７２、周囲整数位置評価部１７３、1/2pel演算部１７４、探索中心判定部１７５、1/4pel演算部１７６、ベクトル算出部１７７、を備える。
【００３３】
整数探索部１７１は、入力された現フレームで符号化対象ブロックとして指定されたマクロブロック（以下、「現ブロック」とする）の画素値と、入力された参照フレーム上の探索ブロックの画素値との差分を整数探索により求める。本実施形態では、所定の探索範囲を参照フレーム上に設定し、この探索フレーム内で探索ブロックを整数画素分ずつずらしながら、各探索ブロックの画素値と現ブロックの画素値との差分を、例えば、差分絶対値和演算（Sum of Absolute Difference: SAD）で求め、各演算結果を各探索ブロック毎の評価値として出力する。
【００３４】
最良整数位置判定部１７２は、整数探索部１７１が出力した評価値に基づいて、現ブロックとの差分が最小となったブロック（以下、「最良整数ブロック」とする）がいずれであるかを判定し、最良整数位置（第１の整数位置）として特定する。
【００３５】
周囲整数位置評価部１７３は、整数探索部１７１が出力した評価値に基づいて、最良整数位置判定部１７２が判定した最良整数ブロックの周囲８方向に隣接する整数ブロックのうちで評価値が最良のブロック（以下、「次点整数ブロック」とする）を判定し、次点整数位置（第２の整数位置）として特定する。
【００３６】
1/2pel演算部１７４は、周囲整数位置評価部１７３が判定した次点整数ブロックと最良整数ブロックとに基づいて、１／２画素（1/2pel）単位の探索（1/2pel探索）で得られる分数位置と推定される分数位置（以下、「暫定分数位置」とする）を特定し、暫定分数位置における探索ブロック（以下、「暫定分数ブロック」とする）の画素値と、現ブロックの画素値との差分を、例えば、差分絶対値和演算により演算し、演算結果を評価値として出力する。
【００３７】
探索中心判定部１７５は、次点整数ブロックの評価値と暫定分数ブロックの評価値とを比較し、いずれの評価値がより良好であるか、すなわち、差分がより小さいかを判定する。探索中心判定部１７５は、判定結果に基づき、続いて実行する分数探索（１／４画素精度）の探索中心を判定する。
【００３８】
1/4pel演算部１７６は、探索中心判定部１７５が判定した探索中心に基づいて１／４画素（1/4pel）単位の分数探索（1/4pel探索）をおこなう。ここでは、探索ブロックを１／４画素分ずつずらしながら、各ずらし位置での画素値と現ブロックの画素値との差分を、例えば、差分絶対値和演算により求め、最も良好な評価値となったブロック（以下、「最良分数ブロック」とする）を特定する。
【００３９】
ベクトル算出部１７７は、整数探索部１７１による整数探索、および、1/4pel演算部１７６による1/4pel探索での得られた結果に基づいて、現ブロックについての「動きベクトル」を算出して出力する。
【００４０】
このような動き検出部１７０の各構成は、所定の制御信号によって制御されるものとする。このような制御信号は、例えば、ＣＰＵ（Central Processing Unit：中央演算処理装置）などから構成される符号化装置１００の制御部（不図示）より各部に供給されるものとすることができる他、外部装置などから供給されてもよい。
【００４１】
上記のように構成された符号化装置１００は、次のような手順で動画像データを符号化する。
【００４２】
符号化装置１００に入力された動画像データは、フレーム単位で変換部１１０および動き検出部１７０へ送られる。動き検出部１７０では入力フレームと参照フレームとの差分を検出することで動きベクトルを検出する。動き補償部１８０は、その動きベクトルに基づいて参照フレームを動き補償して予測フレームを生成する。そして、入力フレームと予測フレームとの差分が取られ、その差分データは、変換部１１０による変換と、量子化部１２０による量子化が行われた後に、符号化部１３０で符号化される。動き検出部１７０が検出した動きベクトルデータも符号化部１３０で符号化され、両データは多重化されて出力される。
【００４３】
一方、量子化部１２０で量子化された差分データは、逆量子化部１４０で逆量子化され、逆変換部１５０で逆変換されることにより復元される。復元された差分データと、動き補償部１８０が生成した予測フレームとが加算され、復元画像メモリ１６０に「復元フレーム」（復元画像）として格納される。復元画像メモリ１６０に格納された復元フレームは、「参照フレーム」（参照画像）として動き検出部１７０に入力される。動き検出部１７０では、入力された参照フレームと現フレームとの差分を示す動きベクトルを検出する。
【００４４】
本実施形態にかかる動き検出部１７０は、いわゆるブロックマッチング法により現フレームと参照フレームとの差分ベクトルを求めるものである。すなわち、現フレーム上のマクロブロックと近似するブロックを参照フレーム上で探索し、探索されたブロック（参照ブロック）とマクロブロックとの差分ベクトルを動きベクトルとして検出する。
【００４５】
ここで、本実施形態では、「整数探索（第１段階）→1/2pel探索（第２段階）→1/4pel探索（第３段階）」の順で探索する「多段探索」により動きベクトルを検出する。この場合の動き検出部１７０の動作（「動きベクトル検出処理１」）を図３に示すフローチャートを参照して説明する。この「動きベクトル検出処理１」は、動き検出部１７０に現フレームが入力されたことを契機に開始される。
【００４６】
動き検出部１７０に現フレームが入力されると、整数探索部１７１によって整数探索がおこなわれる（ステップＳ１０１）。
【００４７】
本実施形態では、整数探索の場合、図４（ａ）に示すように、現フレームＣＦ上で指定された現ブロックＣＢと同一の位置およびサイズのブロックを探索ブロックＳＢ１＿ＩＮＴとして参照フレームＲＦ上に規定する。本実施形態では、整数探索、すなわち、第１段階の探索で用いる探索ブロックを探索ブロックＳＢ１と表記する。なお、現ブロックＣＢおよび探索ブロックＳＢ１のブロックサイズは任意であり、以下「探索ブロックサイズ」と表記する。
【００４８】
整数探索の動作を図４（ｂ）を参照して説明する。整数探索部１７１は、参照フレーム上に設定した探索ブロックＳＢ１＿ＩＮＴを中心とする所定サイズの探索範囲ＳＡ１を規定し、この探索範囲ＳＡ１内で、探索ブロックＳＢ１＿ＩＮＴを起点に、同サイズのブロック（探索ブロックＳＢ１）を１整数画素ずつずらしながら、現ブロックＣＢの画素値と、各探索ブロックＳＢ１の画素値との差分を、例えば、差分絶対値和演算により演算し、演算結果を各探索ブロックＳＢ１の評価値として最良整数位置判定部１７２に出力する。
【００４９】
なお、本実施形態では、ブロック内の画素のいずれかを基準点とし、その基準点の位置を指定することにより、ブロックの位置などを決定するものとする。ここでは、図４（ｂ）に示すように、ブロックの左上頂部の整数位置を基準点とするものとし、整数探索で用いられる探索ブロックＳＢ１についての基準点を基準点ＯＰ１と表記する。
【００５０】
最良整数位置判定部１７２は、整数探索部１７１が出力した評価値の内、評価が最も良好、すなわち、現ブロックとの差分が最小であるブロック（最良整数ブロックＳＢ＿ｍｉｎ）がいずれであるかを判定し、最良整数位置（第１の整数位置）として特定する（ステップＳ１０２）。すなわち、探索ブロックＳＢ１＿ＩＮＴを起点に、整数探索範囲ＳＡ１内を１整数画素ずつずらしたブロックの中から、現ブロックとの差分が整数単位で最小となるブロックを最良整数ブロックＳＢ１＿ｍｉｎとする（図４（ｂ）参照）。
【００５１】
最良整数位置判定部１７２は、特定した最良整数ブロックＳＢ１＿ｍｉｎの位置を示す位置情報を周囲整数位置評価部１７３とベクトル算出部１７７に出力する。この場合、例えば、最良整数ブロックＳＢ１＿ｍｉｎの基準点ＯＰ１＿ｍｉｎの座標を示す情報を位置情報として出力する。最良整数位置判定部１７２はまた、整数探索部１７１から取得した各探索ブロックＳＢ１の評価値を周囲整数位置評価部１７３に出力する。
【００５２】
周囲整数位置評価部１７３は、整数探索で得られた最良整数ブロックＳＢ１＿ｍｉｎの近傍で、最良整数ブロックＳＢ１＿ｍｉｎの次に現ブロックとの差分が小さいブロック（次点整数ブロックＳＢ１＿ｍｉｎ２）がいずれであるかを判定し、次点整数位置（第２の整数位置）として特定する（ステップＳ１０３）。本実施形態では、最良整数ブロックＳＢ１＿ｍｉｎの周囲８方向に隣接するブロックの中から次点整数ブロックＳＢ１＿ｍｉｎ２を特定する。
【００５３】
周囲整数位置評価部１７３は、最良整数位置判定部１７２から取得した最良整数ブロックＳＢ１＿ｍｉｎの位置情報に基づいて最良整数ブロックＳＢ１＿ｍｉｎを特定すると、その最良整数ブロックＳＢ１＿ｍｉｎの周囲８方向に隣接するブロックを含む範囲を規定するための、図５（ａ）に示すような「周囲ブロック探索範囲ＳＡ１’」を設定する。図５（ｂ）に示すように、この周囲ブロック探索範囲ＳＡ１’は、最良整数ブロックＳＢ１＿ｍｉｎの基準点ＯＰ１＿ｍｉｎの周囲８方向に隣接する３×３整数画素の範囲である。この場合、基準点ＯＰ１＿ｍｉｎの周囲８方向に隣接する整数画素（整数位置）を整数画素Ａ〜Ｈ（整数位置Ａ〜Ｈ）とする。
【００５４】
周囲整数位置評価部１７３は、この周囲ブロック探索範囲ＳＡ１’内の各整数位置が基準点となる探索ブロックＳＢ１を特定する。すなわち、これらの探索ブロックＳＢ１は、図６（ａ）〜（ｈ）に示すような、最良整数ブロックＳＢ１＿ｍｉｎの周囲８方向に隣接する探索ブロックＳＢ１ａ〜ＳＢ１ｈである。
【００５５】
このような探索ブロックＳＢ１ａ〜ＳＢ１ｈが整数探索範囲ＳＡ１内にある場合、ステップＳ１０１の整数探索において、これらのブロックの評価値が得られていることになる。したがって、周囲整数位置評価部１７３は、取得した探索ブロックＳＢ１の評価値から探索ブロックＳＢ１ａ〜ＳＢ１ｈの評価値を抽出し、この中で、最も差分が最小であるブロックがいずれであるかを特定する。
【００５６】
ここで、最良整数ブロックＳＢ１＿ｍｉｎが、例えば、整数探索範囲ＳＡ１の最縁部などに位置していた場合には、探索ブロックＳＢ１ａ〜ＳＢ１ｈの一部は、整数探索において演算されていない場合もある。このような場合は、周囲整数位置評価部１７３が該当するブロックの位置情報を整数探索部１７１に出力して指示することにより、随時必要な部分の整数探索を実施して、探索ブロックＳＢ１ａ〜ＳＢ１ｈのすべての評価値を得るものとする。
【００５７】
ここで、分数補間した画像での動きベクトル位置は、整数探索で求められた最良整数位置の近傍で２番目に小さい差分となる位置との相関が非常に高い。このため、ステップＳ１０２で特定した最良整数ブロックＳＢ１＿ｍｉｎの位置と、ステップＳ１０３で特定した次点整数ブロックＳＢ１＿ｍｉｎ２の位置とに基づいて、分数探索で求める動きベクトル位置（分数位置）を暫定的に推定することができる。
【００５８】
すなわち、1/2pel演算部１７４は、ステップＳ１０２で特定した最良整数ブロックＳＢ１＿ｍｉｎと、ステップＳ１０３で特定した次点整数ブロックＳＢ１＿ｍｉｎ２とに基づいて、1/2pel探索によって得られる分数位置を推定する（ステップＳ１０４）。すなわち、通常の探索動作では、探索中心の周囲８方向（もしくは４方向）について探索して分数位置を求めるが、ここでは、１回の演算によってこの分数位置が推定されることになる。推定された分数位置は、より高精度の分数探索（すなわち、1/4pel探索）の探索中心候補となる分数位置（以下、「暫定分数位置ＨＰ」とする）である。
【００５９】
ここで、例えば、次点整数ブロックＳＢ１＿ｍｉｎ２が探索ブロックＳＢ１ｃ（図６（ｃ））である場合、図７（ａ）に示すように、最良整数ブロックＳＢ１＿ｍｉｎの基準点ＯＰ１＿ｍｉｎと、次点整数ブロックＳＢ１＿ｍｉｎ２の基準点、すなわち、周囲ブロック探索範囲ＳＡ１’の整数位置Ｃとの間の中間位置（１／２位置）を暫定分数位置ＨＰとする。この場合、整数単位で現ブロックとの差分が最小のブロックが最良整数ブロックＳＢ１＿ｍｉｎであり、この最良整数ブロックＳＢ１＿ｍｉｎの近傍周囲において、最良整数ブロックＳＢ１＿ｍｉｎの次に差分が小さいブロック（次点整数ブロックＳＢ１＿ｍｉｎ２）が探索ブロックＳＢ１ｃということになる。
【００６０】
分数画素精度の動きベクトル（分数動きベクトル）は、このような次点整数ブロックとの相関が高い傾向にあるので、最良整数ブロックＳＢ１＿ｍｉｎに対する次点整数ブロックＳＢ１＿ｍｉｎ２の位置に基づいて、実際の分数動きベクトルを推定することができる。図７（ａ）の場合、次点整数ブロックＳＢ１＿ｍｉｎ２が探索ブロックＳＢ１ｃであるので、最良整数ブロックＳＢ１＿ｍｉｎの基準点ＯＰ１＿ｍｉｎと、探索ブロックＳＢ１ｃの基準点との間の分数位置を示すベクトルを実際の分数動きベクトルと推定できる。
【００６１】
暫定分数位置ＨＰを特定すると、図７（ｂ）に示すような、この暫定分数位置ＨＰが基準点（以下、「基準点ＯＰ２」とする）となるブロック（以下、「暫定分数ブロックＳＢ２」とする）を規定する。この暫定分数ブロックＳＢ２のブロックサイズは、探索ブロックサイズと同一である。1/2pel演算部１７４は、暫定分数ブロックＳＢ２の範囲に含まれる画素に対し、例えば、「6tap FIR」などの補間手法により、各整数画素間の中間位置（１／２位置）での画素値が得られるよう１／２画素補間を行い（図８（ａ）参照）、現ブロックとの差分演算（1/2pel演算）をおこなう（ステップＳ１０５）。
【００６２】
すなわち、1/2pel演算部１７４は、暫定分数ブロックＳＢ２の画素値を参照フレームから求め、現ブロックＣＢの画素値との差分を、例えば、差分絶対値和演算により求める。1/2pel演算部１７４は、求めた差分値を、暫定分数ブロックＳＢ２の評価値として探索中心判定部１７５に出力する。
【００６３】
探索中心判定部１７５は、1/2pel演算部１７４から暫定分数ブロックＳＢ２の評価値を取得するとともに、最良整数位置判定部１７２から最良整数ブロックＳＢ１＿ｍｉｎの評価値を取得する。そして、暫定分数ブロックＳＢ２の評価値と最良整数ブロックＳＢ１＿ｍｉｎの評価値とを比較し、いずれのブロックがより良好な評価値であるか、すなわち、より差分の小さい評価値となったブロックがいずれであるかを判定する。すなわち、暫定分数位置ＨＰに基づく暫定分数ブロックＳＢ２と、最良整数ブロックＳＢ１＿ｍｉｎの内、より小さい差分値を示しているブロックがいずれであるかを判定する（ステップＳ１０６）。
【００６４】
探索中心判定部１７５は、この判定結果に応じて、次に実行する１／４画素単位の分数探索（1/4pel探索）の探索中心とすべき位置を判定する。すなわち、暫定分数ブロックＳＢ２の差分値の方が小さい場合（ステップＳ１０６：Ｙｅｓ）、探索中心判定部１７５は、1/4pel探索の探索中心を暫定分数ブロックＳＢ２とする（ステップＳ１０７）。
【００６５】
一方、最良整数ブロックＳＢ１＿ｍｉｎの差分値の方が小さい場合（ステップＳ１０６：Ｎｏ）、探索中心判定部１７５は、分数探索の探索中心を最良整数ブロックＳＢ１＿ｍｉｎとする（ステップＳ１０８）。
【００６６】
探索中心判定部１７５は、1/4pel探索の探索中心とした位置を示す位置情報を1/4pel演算部１７６に出力する。ここでは、暫定分数ブロックＳＢ２が探索中心に指定された場合、暫定分数ブロックＳＢ２の基準点ＯＰ２の座標を示す情報を位置情報として出力し、最良整数ブロックＳＢ１＿ｍｉｎが探索中心に指定された場合は、最良整数ブロックＳＢ１＿ｍｉｎの基準点ＯＰ１＿ｍｉｎの座標を示す情報を位置情報として出力する。
【００６７】
1/4pel演算部１７６は、探索中心判定部１７５が判定した探索中心位置を示す位置情報に基づいて、１／４画素単位の分数探索（1/4pel探索）を実行する（ステップＳ１０９）。ここでは、探索中心判定部１７５が出力した位置情報が示す位置を探索中心とする探索範囲（以下、「探索範囲ＳＡ２」とする）を規定し、この探索範囲ＳＡ２内で、探索ブロックサイズ相当のブロック（以下、「探索ブロックＳＢ３」とする）を１／４画素ずつずらしながら、各ブロックの画素値と、現ブロックＣＢの画素値との差分を演算する。
【００６８】
１／４画素単位の分数探索を実行するにあたり、1/4pel演算部１７６は、少なくとも、探索ブロックＳＢ３が探索範囲ＳＡ２にしたがって移動する範囲に対して１／４画素補間をおこなう。この場合、図８（ａ）に示すような１／２画素補間されている画素に対し、例えば、「線形補間」などの補間手法により、図８（ｂ）に示すような、各１／２位置間の中間位置（１／４位置）での画素値が得られるよう補間する。
【００６９】
ステップＳ１０７で、暫定分数位置ＨＰが分数探索の探索中心とされた場合の分数探索の動作を以下説明する。図９（ａ）は、１／４画素補間された暫定分数ブロックＳＢ２を示す図である。1/4pel演算部１７６は、このような暫定分数ブロックＳＢ２上で、1/4pel探索の探索範囲を規定する。この場合、1/4pel演算部１７６は、例えば、図９（ｂ）に示すように、暫定分数ブロックＳＢ２の基準点ＯＰ２を中心として、その周囲８方向に隣接する１／４位置を含む範囲を探索範囲ＳＡ２とする。
【００７０】
1/4pel演算部１７６は、このような探索範囲ＳＡ２内の各分数位置が基準点（すなわち、ブロック左上頂部位置）となるブロックを1/4pel探索の探索ブロックＳＢ３として順次指定し、各探索ブロックＳＢ３の画素値と、現ブロックＣＢの画素値との差分演算（1/4pel演算）をおこなう。ここでは、図１０（ａ）に示すような暫定分数ブロックＳＢ２を起点として1/4pel探索をおこなう。
【００７１】
すなわち、1/4pel演算部１７６は、図１０（ｂ）に示すように、暫定分数ブロックＳＢ２の基準点ＯＰ２から１分数画素分（１／４画素分）ずらした位置を、1/4pel探索でのマッチング対象となる探索ブロックＳＢ３１の基準点ＯＰ３１とし、この基準点ＯＰ３１がブロックの左上頂部位置となる探索ブロックＳＢ３１を指定する。探索ブロックＳＢ３のブロックサイズは、探索ブロックサイズ相当である。
【００７２】
1/4pel演算部１７６は、探索ブロックＳＢ３１について、現ブロックＣＢとの差分演算をおこなう。すなわち、参照フレームから探索ブロックＳＢ３１の画素値を取得し、現ブロックＣＢの画素値との差分をとる。この場合、1/4pel演算部１７６は、例えば、差分絶対値和演算により差分値を求め、求めた差分値を探索ブロックＳＢ３１の評価値とする。
【００７３】
探索ブロックＳＢ３１についての評価値を取得すると、基準点ＯＰ３１を１分数画素分ずらした位置を次の基準点ＯＰ３２とし、探索ブロックＳＢ３１の場合と同様に探索ブロックＳＢ３２について差分演算をおこなう。このようにして、1/4pel演算部１７６は、暫定分数ブロックＳＢ２の基準点ＯＰ２を起点として、探索範囲ＳＡ２内の各分数位置が基準点となる探索ブロックＳＢ３１〜ＳＢ３８を順次指定し、各探索ブロックＳＢ３毎に現ブロックＣＢとのマッチングをとる。この場合、例えば、図１０（ｃ）の矢印で示す順序で探索ブロックＳＢ３１〜ＳＢ３８を順次指定する。
【００７４】
1/4pel演算部１７６は、求めた探索ブロックＳＢ３１〜ＳＢ３８の評価値の内、最も良好な評価値、すなわち、差分値が最小であったブロック（以下、「探索ブロックＳＢ３＿ｍｉｎ」とする）がいずれであるかを判別し、その探索ブロックＳＢ３＿ｍｉｎの位置を示す位置情報をベクトル算出部１７７に出力する。この場合、例えば、当該探索ブロックＳＢ３＿ｍｉｎの基準点ＯＰ３＿ｍｉｎの座標を示す情報を位置情報として出力する。
【００７５】
以上が、暫定分数位置ＨＰに基づく暫定分数ブロックＳＢ２の評価が最良整数ブロックＳＢ１＿ｍｉｎよりも良好であった場合の1/4pel探索である。
【００７６】
一方、暫定分数ブロックＳＢ２よりも最良整数ブロックＳＢ１＿ｍｉｎの評価が良好であった場合は、最良整数ブロックＳＢ１＿ｍｉｎを探索中心として1/4pel探索をおこなう。この場合の動作を以下説明する。
【００７７】
図１１（ａ）は、１／４画素補間された最良整数ブロックＳＢ１＿ｍｉｎを示す図である。1/4pel演算部１７６は、このような最良整数ブロックＳＢ１＿ｍｉｎ上で、1/4pel探索の探索範囲を規定する。この場合、図１１（ｂ）に示すように、最良整数ブロックＳＢ１＿ｍｉｎの基準点ＯＰ１＿ｍｉｎの周囲８方向に隣接する１／４位置を含む範囲を探索範囲ＳＡ２とする。
【００７８】
1/4pel演算部１７６は、このように規定した探索範囲ＳＡ２内の各分数位置が基準点ＯＰ３となる探索ブロックＳＢ３を順次指定し、各探索ブロックＳＢ３と現ブロックＣＢとの差分を演算する。この動作は、上述した暫定分数ブロックＳＢ２を探索中心とした場合の探索動作と同様である（図１０参照）。
【００７９】
すなわち、1/4pel演算部１７６は、探索ブロックＳＢ３１〜ＳＢ３８の評価値を求め、この内、最も良好な評価値、すなわち、差分値が最小である探索ブロックＳＢ３＿ｍｉｎがいずれであるかを判別し、その探索ブロックＳＢ３＿ｍｉｎの位置を示す位置情報をベクトル算出部１７７に出力する。この場合、例えば、当該探索ブロックＳＢ３＿ｍｉｎの基準点ＯＰ３＿ｍｉｎの座標を示す情報を位置情報として出力する。
【００８０】
ベクトル算出部１７７は、整数探索で求められた整数位置と、分数探索で求められた分数位置とに基づいて、現ブロックＣＢについての「動きベクトル」を算出する（ステップＳ１１０）。すなわち、現ブロックＣＢに対応する探索ブロックＳＢ１＿ＩＮＴと、分数探索で現ブロックＣＢとの差分が最小とされた探索ブロックＳＢ３＿ｍｉｎとのずれを示すベクトルが、当該ブロックにおける「動きベクトル」ということになる。したがって、ベクトル算出部１７７は、整数探索部１７１から取得した探索ブロックＳＢ１＿ＩＮＴの基準点ＯＰ１＿ＩＮＴの座標を示す位置情報と、1/4pel演算部１７６から取得した探索ブロックＳＢ３＿ｍｉｎの基準点ＯＰ３＿ｍｉｎの座標を示す位置情報とに基づいて「動きベクトル」を算出する。すなわち、基準点ＯＰ１＿ＩＮＴを原点として、基準点ＯＰ３＿ｍｉｎに対するずれ量と方向を示すベクトルを「動きベクトル」として算出する。
【００８１】
なお、ベクトル算出部１７７は、動き補償にかかる処理に応じて、整数単位の動きベクトル（整数動きベクトル）と分数単位の動きベクトル（分数動きベクトル）とを個別に求めてもよい。ここで、「整数動きベクトル」は、探索ブロックＳＢ１＿ＩＮＴと最良整数ブロックＳＢ１＿ｍｉｎとのずれを示すベクトルであるので、ベクトル算出部１７７は、探索ブロックＳＢ１＿ＩＮＴの基準点ＯＰ１＿ＩＮＴの位置と、最良整数ブロックＳＢ１＿ｍｉｎの基準点ＯＰ１＿ｍｉｎの位置に基づいて「整数動きベクトル」を算出することができる。また、「分数動きベクトル」は、最良整数ブロックＳＢ１＿ｍｉｎと探索ブロックＳＢ３＿ｍｉｎとのずれを示すベクトルであるので、ベクトル算出部１７７は、最良整数ブロックＳＢ１＿ｍｉｎの基準点ＯＰ１＿ｍｉｎの位置と、探索ブロックＳＢ３＿ｍｉｎの基準点ＯＰ３＿ｍｉｎの位置とに基づいて「分数動きベクトル」を算出することができる。
【００８２】
ベクトル算出部１７７は、このようにして求めた「動きベクトル」を動き補償部１８０に出力して処理を終了する。動き補償部１８０では、動き検出部１７０から出力された動きベクトルに基づいて動き補償し、予測フレームが作成される。そして、予測フレームと現フレームとの差分のみが符号化部１３０で符号化されて、符号化ビットストリームとして出力される。
【００８３】
以上説明したように、上記実施形態１にかかる動き検出部１７０によれば、整数探索で検出された最良整数ブロックＳＢ１＿ｍｉｎの位置（第１の整数位置）と、その周辺において、最良整数ブロックＳＢ１＿ｍｉｎの次に評価のよい次点整数ブロックＳＢ１＿ｍｉｎ２の位置（第２の整数位置）とに基づいて、1/2pel探索で求められる分数位置を推定する。すなわち、分数探索で得られる実際の分数動きベクトルは、整数単位での最良位置の周辺で次に評価の良好な整数位置の方向と相関が高い傾向にあるため、最良整数位置と次点整数位置との間の１／２位置を、1/2pel探索で求められる分数位置と推定する（暫定分数位置）。これにより、1/2pel探索でおこなう差分演算を、暫定分数位置についてのみ行うので、８方向分の差分演算をおこなう場合に比べ、演算量を減少させることができる。
【００８４】
ここで、上記実施形態１によれば、次点整数ブロックＳＢ１＿ｍｉｎ２を最良整数ブロックＳＢ１＿ｍｉｎの周辺に隣接するブロックから求めている。これにより、整数探索の探索範囲内でブロック単位に最良整数位置と次点整数位置を求める従来技術で生じうる問題を回避することができる。
【００８５】
すなわち、探索範囲内で最良位置と次点位置をブロック単位に決定した場合、最良整数位置を含むブロックから離れたブロックが次点となる可能性がある。ここで、求めるべき分数動きベクトルは、最良整数位置と実際の最良位置との間の分数レベルの誤差を示すものであるから、最良整数位置の近傍にない次点整数位置に基づいて分数探索の探索中心を決定しても、実際の分数動きベクトルとは相関しない可能性がある。したがって、上記実施形態１の如く、最良整数ブロックＳＢ１＿ｍｉｎの周囲８方向に隣接するブロックの中から次点整数ブロックＳＢ１＿ｍｉｎ２を決定することで、迅速かつ正確に分数単位の動きベクトルを検出することができる。
【００８６】
（実施形態２）
上述したように、分数探索で検出される分数動きベクトルは、整数探索で検出された最良整数ブロックの近傍の次点整数ブロックとの相関が高い傾向にあるため、上記実施形態１では、このような傾向に基づいて暫定分数位置を求めた。しかしながら、種々の条件等によっては、最良整数ブロックの近傍周囲における次点整数ブロックであっても実際の分数動きベクトルと相関が高くない場合もあり得る。このような場合においても、正確かつ迅速に分数動きベクトルを検出する動き検出部１７０の動作を実施形態２として以下説明する。なお、本実施形態にかかる動き検出部１７０の構成は、実施形態１の動き検出部１７０の構成と同一である。また、ブロックなどに関する表記についても実施形態１と同様である。したがって、実施形態１と同一または同様の構成等については、同一の参照符号を付して説明する。
【００８７】
本実施形態にかかる動き検出部１７０の動作（「動きベクトル検出処理２」）を図１２、１３に示すフローチャートを参照して説明する。この「動きベクトル検出処理２」は、実施形態１にかかる「動きベクトル検出処理１」と同様に、動き検出部１７０に現フレームが入力されたことを契機に開始される。
【００８８】
処理が開始されると、整数探索部１７１により「整数探索」が実行される（ステップＳ２０１）。ここでの整数探索は、上記実施形態１と同様の動作である。すなわち、整数探索部１７１が、探索ブロックＳＢ１＿ＩＮＴの基準点ＯＰ１＿ＩＮＴを中心とした所定の探索範囲ＳＡ１を設定し、探索ブロックＳＢ１を１整数画素分ずつずらしながら現ブロックＣＢとの差分を求め、各位置での評価値として最良整数位置判定部１７２と探索中心判定部１７５に出力する。そして、評価値に基づいて、最良整数位置判定部１７２が、現ブロックＣＢとの差分が最小となる最良整数ブロックＳＢ１＿ｍｉｎ（第１の整数位置）を特定する。
【００８９】
最良整数ブロックＳＢ１＿ｍｉｎが特定されると、周囲整数位置評価部１７３は、上記実施形態１の場合と同様に、最良整数ブロックＳＢ１＿ｍｉｎの周囲８方向に隣接する探索ブロックＳＢ１ａ〜ＳＢ１ｈを特定し、これら８つの探索ブロックＳＢ１についての評価値を得る。
【００９０】
ここで、周囲整数位置評価部１７３は、得られた評価値に基づいて、評価のよい順、すなわち、差分値の小さい順に探索ブロックＳＢ１ａ〜ＳＢ１ｈを順位付けする（ステップＳ２０２）。この場合、例えば、周囲整数位置評価部１７３は所定の記憶領域を有しているものとし、各ブロックの位置（例えば、基準点の座標）を示す情報と順位とを対応付けて記憶するものとする。なお、この記憶領域は、周囲整数位置評価部１７３以外の部分に構成されていてもよい。
【００９１】
周囲整数位置評価部１７３は、対象とする順位を指定する順位ポインタを「１位」を示す初期値「１」に設定し（ステップＳ２０３）、順位ポインタが示す順位の探索ブロックＳＢ１の基準点ＯＰ１（第２の整数位置）と、最良整数ブロックＳＢ１＿ｍｉｎの基準点ＯＰ１＿ｍｉｎとの間の１／２位置を暫定分数位置ＨＰとして特定する（ステップＳ２０４）。
【００９２】
1/2pel演算部１７４は、上記実施形態１と同様の動作により、特定した暫定分数位置ＨＰに基づく暫定分数ブロックＳＢ２の画素値と、現ブロックＣＢの画素値との差分を演算し、評価値として探索中心判定部１７５に出力する（ステップＳ２０５）。
【００９３】
探索中心判定部１７５は、最良整数ブロックＳＢ１＿ｍｉｎの評価値と、暫定分数ブロックＳＢ２の評価値とを比較し、暫定分数ブロックＳＢ２の評価値の方が良好であるか否か、すなわち、最良整数ブロックＳＢ１＿ｍｉｎと現ブロックＣＢの差分値より、暫定分数ブロックＳＢ２と現ブロックＣＢの差分値の方が小さいか否かを判別する（ステップＳ２０６）。
【００９４】
暫定分数ブロックＳＢ２の評価の方が良好であった場合（ステップＳ２０６：Ｙｅｓ）、探索中心判定部１７５は、暫定分数ブロックＳＢ２を1/4pel探索の探索中心とする（ステップＳ２０７）。この場合、上記実施形態１と同様の動作により、1/4pel探索が実行され（ステップＳ２０８）、現ブロックとの差分が最小である探索ブロックＳＢ３＿ｍｉｎが特定される。そして、探索ベクトル算出部１７７が、特定された探索ブロックＳＢ３＿ｍｉｎに基づいて、現ブロックについての「動きベクトル」を算出し、動き補償部１８０に出力して（ステップＳ２０９）、処理を終了する。
【００９５】
一方、暫定分数ブロックＳＢ２の評価値より、最良整数ブロックＳＢ１＿ｍｉｎの評価値の方が良好である場合（ステップＳ２０６：Ｎｏ）、周囲整数位置評価部１７３は、順位ポインタが現在指定している順位よりも下位のブロックがまだあるか否かを判別する（ステップＳ２１０：図１３）。
【００９６】
現在の順位より下位のブロックが存在する場合（ステップＳ２１０：Ｙｅｓ）、周囲整数位置評価部１７３は、順位ポインタを＋１し（ステップＳ２１１）、ステップＳ２０４（図１２）に進む。すなわち、次の順位の探索ブロックＳＢ１を新たな次点整数ブロックＳＢ１＿ｍｉｎ２（第２の整数位置）とし、このブロックの基準点ＯＰ１と、最良整数ブロックＳＢ１＿ｍｉｎの基準点ＯＰ１＿ｍｉｎとの間の１／２位置を新たな暫定分数位置ＨＰとする。そして、新たに指定した暫定分数位置ＨＰに基づく暫定分数ブロックＳＢ２の評価値と最良整数ブロックＳＢ１＿ｍｉｎの評価値とが比較される（ステップＳ２０４〜２０６）。
【００９７】
一方、現在の順位より下位のブロックが存在しない場合、すなわち、現在の順位ポインタが「８位」を示す「８」を指示している場合（ステップＳ２１０：Ｎｏ）、周囲整数位置評価部１７３は、その旨を示す情報を探索中心判定部１７５に出力する。この場合、探索中心判定部１７５は、最良整数ブロックＳＢ１＿ｍｉｎを、1/4pel探索の探索中心に設定し（ステップＳ２２０）、ステップＳ２０８（図１２）に進む。
【００９８】
この場合、上記実施形態１と同様の動作により、最良整数ブロックＳＢ１＿ｍｉｎを探索中心とした1/4pel探索をおこない、差分が最小となる探索ブロックＳＢ３＿ｍｉｎに基づき、ベクトル算出部１７７が動きベクトルを算出して動き補償部１８０に出力する。
【００９９】
すなわち、本発明の実施形態２にかかる動き検出部１７０では、最良整数ブロックＳＢ１＿ｍｉｎの周囲に隣接する探索ブロックＳＢ１ａ〜ＳＢｈを、それぞれの評価値（現ブロックとの差分値）に基づいて順位付けし、順位の高いブロックから暫定分数位置ＨＰを求める。そして、求めた暫定分数位置ＨＰに基づく暫定分数ブロックＳＢ２の評価値と最良整数ブロックＳＢ１＿ｍｉｎの評価値とを比較し、暫定分数ブロックＳＢ２の評価値の方が良好であれば、当該暫定分数位置ＨＰを1/4pel探索の探索中心にする。
【０１００】
一方、当該暫定分数ブロックＳＢ２よりも最良整数ブロックＳＢ１＿ｍｉｎの評価の方が良好である場合は、次の順位の探索ブロックＳＢ１に基づいて暫定分数位置ＨＰを決定し、同様に、最良整数ブロックＳＢ１＿ｍｉｎと比較する。このようにして、探索ブロックＳＢ１ａ〜ＳＢ１ｈの順位順に決定された暫定分数位置ＨＰに基づく暫定分数ブロックＳＢ２の方が最良整数ブロックＳＢ１＿ｍｉｎより評価がよい場合は、その暫定分数ブロックＳＢ２を探索中心として、1/4pel探索をおこなう。
【０１０１】
また、探索ブロックＳＢ１ａ〜ＳＢ１ｈに基づく暫定分数ブロックＳＢ２のいずれもが、最良整数ブロックＳＢ＿ｍｉｎよりも評価が良好でない場合は、最良整数ブロックＳＢ１＿ｍｉｎを探索中心として1/4pel探索をおこなう。
【０１０２】
このように、本発明の実施形態２にかかる動き検出部１７０では、最良整数ブロックＳＢ＿ｍｉｎ（最良整数位置）の近傍で次に差分の小さいブロック（次点整数位置）に基づいた暫定分数ブロックＳＢ２の評価が、最良整数ブロックＳＢ１＿ｍｉｎより良好でない場合、最良整数位置の近傍周囲で次点整数位置の次の順位の位置、すなわち、次点整数位置の次に現ブロックとの差分が小さいブロックに基づいて暫定分数位置ＨＰを求める。このため、種々の条件等により、次点整数ブロックと実際の分数動きベクトルとの相関が高くなかった場合であっても、実際の分数動きベクトルとの相関が高い暫定分数位置を求めて分数探索することができる。
【０１０３】
この場合、暫定分数位置を求めるための演算を、最良整数ブロックＳＢ１＿ｍｉｎに隣接する探索ブロックＳＢ１ａ〜ｈの内の順位の高い方からおこなうので、より良好な評価値が得られた時点で１／２画素補間演算や評価値演算を終了させることができる。したがって、次点整数位置と実際の分数動きベクトルとの相関が高くなかった場合でも、暫定分数位置となる１／２位置を効率的に求めることができる。
【０１０４】
上記実施形態２では、下位ブロックが無くなるまで順位ポインタを＋１していったが、許容すべき演算量などに応じて、下位ブロックが無くなる前にこの操作を打ち切っても良い。また、上記実施形態２では、暫定分数位置を１点ずつ指定したが、１度に複数の暫定分数位置を指定するようにしてもよい。すなわち、次点整数位置が必ずしも実際の分数レベルの動きベクトルとの相関に影響しないという前提であれば、１位となった位置の他に、次の順位に基づく暫定分数位置も予め候補としておき、２つの暫定分数位置と最良整数位置の３点と現ブロックとの差分を比較して分数探索の探索中心を決定してもよい。ここで、1/2pel探索の演算回数が、周囲８点についておこなう８回よりも少なければ演算量の削減に効果が生じることになるので、この範囲内で候補とする暫定分数位置の個数を決めればよい。
【０１０５】
以上説明したように、上記各実施形態にかかる動き検出部１７０によれば、例えば、「整数探索→1/2pel探索→1/4pel探索」の順で探索する多段探索で動きベクトルを検出する場合に、整数探索で得られた最良整数位置（第１の整数位置）と、その最良整数位置の近傍周囲の整数位置のうちで最良整数位置に続いて差分の小さい位置（第２の整数位置）とに基づいて、1/2pelでの分数位置を推定して絞り込むので、1/2pel探索演算の演算量が減少する。これにより、分数単位の動きベクトルを正確に検出するとともに、全体としての演算量を減少させることができる。すなわち、分数精度の探索によるフレームレートの向上と、処理高速化や省電力化の両立を図ることができる。
【０１０６】
なお、このような符号化装置１００から出力された符号化ビットストリームを復号する復号装置で動き検出をおこなう部分も、上記符号化装置１００の動き検出部１７０と同様の構成・動作とすることができる。すなわち、動画像データの符号化あるいは復号において、ブロックマッチングによる動き検出をおこなう部分を上記動き検出部１７０と同様の構成とすることにより、動画像の符号化および復号において、フレームレートの向上と処理高速化の両立を図ることができる。
【０１０７】
なお、上記実施形態にかかる動き検出部１７０の機能をソフトウェア処理によって実現してもよい。この場合、例えば、パーソナルコンピュータや動画像記録再生装置などの汎用装置で、これらの機能を実現するためのプログラムを実行することで、動き検出部１７０の機能を実現することができる。
【０１０８】
すなわち、汎用装置の記憶部に当該プログラムをインストールし、ＣＰＵなどの制御部がプログラムを実行する。この場合、以下のようなプログラムが実行されることで、汎用装置で本発明の実施形態にかかる動き検出部１７０の機能を実現することができる。
（１−１）「整数探索プログラム」：探索範囲内を整数画素単位で探索し、現ブロックとの差分が最小となる整数位置（第１の整数位置）を検出するためのプログラム
（１−２）「周囲点評価プログラム」：整数探索で得られた最良整数位置の近傍周囲における現ブロックとの差分を評価し、最良整数位置の次に差分の小さい次点整数位置（第２の整数位置）を特定、もしくは、各周囲点での評価を順位付けするためのプログラム
（１−３）「分数位置推定プログラム」：次点整数位置もしくは所定順位の周囲点を指定し、最良整数位置と指定した周囲位置とに基づいて、所定の探索精度の分数探索（1/2pel探索）で得られる分数位置を推定して暫定分数位置を指定するためのプログラム
（１−４）「比較判定プログラム」：最良整数位置での現ブロックとの差分と、暫定分数位置での現ブロックとの差分とを比較し、いずれの差分がより小さいかを判定するためのプログラム
（１−５）「次点整数位置指定プログラム」：暫定分数位置での差分より、最良整数位置での差分がより小さい場合に、次点整数位置（第２の整数位置）の次の順位の周囲点を新たな次点整数位置（第２の整数位置）として指定するためのプログラム
（１−６）「分数探索プログラム」：最良整数位置と暫定分数位置のうち、より差分が小さいと判定された位置を探索中心として、所定の探索精度（1/2pel）より高精度な分数探索（1/4pel探索）をおこない、現ブロックとの差分が最小となる分数位置を検出するためのプログラム
（１−７）「ベクトル算出プログラム」：現ブロックとの差分が最小となる整数位置および分数位置に基づいて、現ブロックにおける動きベクトルを算出するためのプログラム
【０１０９】
上記プログラムを汎用装置で実行した場合、ＣＰＵなどの制御装置が、整数探索部１７１、最良整数位置判定部１７２、周囲整数位置評価部１７３、1/2pel演算部１７４、探索中心判定部１７５、1/4pel演算部１７６、ベクトル算出部１７７、などとして機能し、例えば、主記憶装置や外部記憶装置などの記憶装置が所定の記憶領域などとして機能することとなる。
【０１１０】
これらのプログラムは、汎用装置等に予め組み込んで提供することができる他、プログラム自体を独立して提供してもよい。この場合のプログラムの配布方法は任意であり、例えば、CD-ROMやメモリカードなどの記録媒体に格納して配布可能であることはもとより、例えば、インターネットなどの通信媒体を介して配布してもよい。そして、配布されたプログラムを汎用コンピュータ装置等にインストールし、ＯＳ（Operation System：基本ソフトウェア）との協働などによって実行することで、上記動き検出部１７０の機能を実現することができる。
【０１１１】
また、本発明にかかる機能を実現するためのプログラムは、動画像の符号化・復号をおこなうための既存のプログラムとの協働により動作するようにしてもよい。すなわち、既存の動画像符号化・復号化プログラムに対する、いわゆるアップデートプログラムとして提供することで、既存の動画像符号化・復号化処理に上記のような動き検出動作を追加し、フレームレートの向上と処理の高速化を図ることができる。
【０１１２】
上記各実施形態の記載は、本発明を適用するための一例であり、本発明の範囲は上記各実施形態によって限定されるものではない。すなわち、上記実施形態以外の種々の形態で本発明が適用されてもよく、それらは本発明の範囲に含まれるものである。
【０１１３】
例えば、上記実施形態では、「整数探索（第１段階）→1/2pel探索（第２段階）→1/4pel探索（第３段階）」の多段探索の場合を例示したが、異なる探索精度で段階的に探索をおこなうのであれば、探索精度や段数は任意のものであってもよい。例えば、「整数探索（第１段階）→1/2pel探索（第２段階）」とする多段探索に本発明を適用することでも処理の高速化を実現することができる。この場合、暫定分数位置に基づく暫定分数ブロックの評価値が最良整数ブロックの評価値よりも良好であれば、当該暫定分数ブロックを示すベクトルを1/2pelの分数動きベクトルとすることができる。これにより、通常、８方向についておこなう差分演算が１回で済むので、第２段階における演算量が減少し、処理を高速化することができる。
【０１１４】
また、上記実施形態では、最良整数ブロックの周囲８方向から次点整数位置を求めたが、例えば、周囲４方向などに間引きして求めてもよい。これは1/4pel探索についても同様である。
【図面の簡単な説明】
【０１１５】
【図１】本発明の実施形態１にかかる「符号化装置」の構成を示すブロック図である。
【図２】図１に示す「動き検出部」の構成を示すブロック図である。
【図３】本発明の実施形態１にかかる「動きベクトル検出処理１」を説明するためのフローチャートである。
【図４】「整数探索」を説明するための図であり、（ａ）は探索ブロックの例を示し、（ｂ）は整数探索時の探索範囲と探索ブロックの例を示す。
【図５】次点整数ブロックを探索する動作を説明するための図であり、（ａ）は周囲ブロック探索範囲が設定される位置の例を示し、（ｂ）は周囲ブロック探索範囲の例を示す。
【図６】次点整数ブロックを判定する動作を説明するための図であり、（ａ）〜（ｈ）は、最良整数ブロックに隣接する探索ブロックの例を示す。
【図７】「暫定分数位置」を特定する動作を説明するための図であり、（ａ）は特定された暫定分数位置の例を示し、（ｂ）は暫定分数位置に基づいて規定される暫定分数ブロックの例を示す。
【図８】分数画素補間を説明するための図であり、（ａ）は１／２画素補間の例を示し、（ｂ）は１／４画素補間の例を示す。
【図９】暫定分数ブロックを探索中心とした1/4pel探索を説明するための図であり、（ａ）は1/4画素補間された暫定分数ブロックの例を示し、（ｂ）は1/4pel探索の探索範囲の例を示す。
【図１０】1/4pel探索の動作を説明するための図であり、（ａ）は探索の起点となる暫定分数ブロックの例を示し、（ｂ）は１分数画素分ずらした探索ブロックの例を示し、（ｃ）は探索順序の例を示す。
【図１１】最良整数ブロックを探索中心とした1/4pel探索を説明するための図であり、（ａ）は1/4画素補間された最良整数ブロックの例を示し、（ｂ）は1/4pel探索の探索範囲の例を示す。
【図１２】本発明の実施形態２にかかる「動きベクトル検出処理２」を説明するためのフローチャートである。
【図１３】本発明の実施形態２にかかる「動きベクトル検出処理２」を説明するためのフローチャートである。
【符号の説明】
【０１１６】
１００…符号化装置、１１０…変換部、１２０…量子化部、１３０…符号化部、１４０…逆量子化部、１５０…逆変換部、１６０…復元画像メモリ、１７０…動き検出部、１７１…整数探索部、１７２…最良整数位置判定部、１７３…周囲整数位置評価部、１７４…1/2pel演算部、１７５…探索中心判定部、１７６…1/4pel演算部、１７７…ベクトル算出部、１８０…動き補償部
【図１】
2006033112.tif 000003
【図２】
2006033112.tif 000004
【図３】
2006033112.tif 000005
【図４】
2006033112.tif 000006
【図５】
2006033112.tif 000007
【図６】
2006033112.tif 000008
【図７】
2006033112.tif 000009
【図８】
2006033112.tif 000010
【図９】
2006033112.tif 000011
【図１０】
2006033112.tif 000012
【図１１】
2006033112.tif 000013
【図１２】
2006033112.tif 000014
【図１３】
2006033112.tif 000015