(57)【要約】【課題】  動画像データの符号化における処理の高速化を実現する。【解決手段】  整数探索部１７１による整数探索の結果に基づき、最良整数位置判定部１７２が最良整数位置を特定し、周囲整数位置評価部１７３が最良整数位置の周囲整数位置を特定する。分数探索設定部１７４は、最良整数位置の評価値と、周囲整数位置の評価値の最大値とを用いて偏差を算出し、偏差の大きさにより1/2pel探索を実行するか否かを判定する。1/2pel探索を実行した場合、分数探索設定部１７４は、1/2pel探索の結果に基づいて偏差を算出し、偏差の大きさにより1/4pel探索を実行するか否かを判定する。また、1/2pel探索を実行しない場合、分数探索設定部１７４は、現ブロックと最良整数ブロックについての高周波成分を比較し、この結果に応じて、1/4pel探索を実行するか否かを判定する。【選択図】  図２
2006067213.tif 000002
【特許請求の範囲】
【請求項１】
整数画素精度で探索する整数探索手段と、複数の分数画素精度で探索可能な分数探索手段と、を備え、多段探索で動画像データの動きベクトルを検出する動きベクトル検出装置において、
前記整数探索手段および前記分数探索手段による探索結果に基づいて、前記分数探索手段による分数探索の精度を設定する分数探索設定手段を備える、
ことを特徴とする動きベクトル検出装置。
【請求項２】
前記整数探索手段は、整数探索結果に基づく整数偏差を算出する整数偏差算出手段をさらに備え、
前記分数探索設定手段は、前記整数偏差算出手段が算出した整数偏差に基づいて、分数探索精度を設定する、
ことを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項３】
前記分数探索手段は、分数探索結果に基づく分数偏差を算出する分数偏差算出手段をさらに備え、
前記分数探索設定手段は、前記分数偏差算出手段が算出した分数偏差に基づいて、分数探索精度を設定する、
ことを特徴とする請求項１または２に記載の動きベクトル検出装置。
【請求項４】
現画像についての高周波成分と、参照画像についての高周波成分を検出する高周波成分検出手段をさらに備え、
前記分数探索設定手段は、前記高周波成分検出手段が検出した高周波成分に基づいて、分数探索精度を設定する、
ことを特徴とする請求項１乃至３のいずれか１項に記載の動きベクトル検出装置。
【請求項５】
予測ベクトルを算出する予測ベクトル算出手段をさらに備え、
前記分数探索設定手段は、前記予測ベクトル算出手段が算出した予測ベクトルに基づいて分数探索を実行するか否かを判別し、分数探索を実行すると判別した場合、該予測ベクトルに基づいて分数探索精度を設定する、
ことを特徴とする請求項１乃至４のいずれか１項に記載の動きベクトル検出装置。
【請求項６】
前記分数探索設定手段は、いずれの探索精度で探索することにより動き補償が改善されるか否かを判別し、改善されると判別した場合に、当該探索精度による分数探索を設定する、
ことを特徴とする請求項１乃至５のいずれか１項に記載の動きベクトル検出装置。
【請求項７】
前記分数探索設定手段は、前記整数偏差、前記分数偏差、及び、前記高周波成分に基づいて、動き補償が改善されるか否かを判別する、
ことを特徴とする請求項６に記載の動きベクトル検出装置。
【請求項８】
前記分数探索設定手段は、整数探索の次に分数探索を行うか否かを判別し、分数探索を行うと判別した場合に、前記複数の分数探索精度のいずれかを設定する、
ことを特徴とする請求項１乃至７のいずれか１項に記載の動きベクトル検出装置。
【請求項９】
コンピュータを、動画像データの動きベクトルを検出する動きベクトル検出装置として機能させるためのプログラムであって、
前記コンピュータに、
整数探索を実行する機能と、
整数探索による結果に基づいて、整数探索の次におこなう分数探索の探索精度を設定する機能と、
設定された探索精度で分数探索を実行する機能と、
実行した分数探索の結果に基づいて、さらなる探索精度で分数探索を実行するか否かを判別する機能と、
分数探索を実行すると判別した場合に分数探索を実行する機能と、
実行した探索に基づいて動きベクトルを算出する機能と、
を実現させることを特徴とするプログラム。
【請求項１０】
コンピュータを、動画像データの動きベクトルを検出する動きベクトル検出装置として機能させるためのプログラムであって、
前記コンピュータに、
予測ベクトルを算出する機能と、
算出した予測ベクトルに基づいて、実行すべき探索の探索精度を判別する機能と、
判別した探索精度で探索を実行する機能と、
実行した探索に基づいて動きベクトルを算出する機能と、
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動きベクトル検出装置、および、プログラムに関し、特に、ブロックマッチング方式の動き検出に好適な動きベクトル検出装置、および、プログラムに関する。
【背景技術】
【０００２】
動画像データを圧縮するための符号化処理においては、すでに符号化された画像を復号して得られる参照画像（参照フレーム）と符号化対象である現画像（現フレーム）との差分を検出するため、所定数の画素群であるマクロブロックを基準に動きベクトルを検出する「ブロックマッチング法」が一般的におこなわれている。ブロックマッチング法では、現画像上に設定したマクロブロックとの誤差が最小となる参照画像上のブロック（参照ブロック）を探索し、マクロブロック上の基準座標と参照ブロック上の基準座標との間の動きベクトルを検出する。
【０００３】
ブロックマッチングによる探索方法では、整数画素単位で探索する「整数探索」の後に分数画素単位で探索する「分数探索」をおこなう「多段探索」が広くおこなわれている。整数画素単位よりも探索精度が詳細な分数探索をおこなうことで、動き補償の精度が高まり、フレームレートの向上などが期待できる。
【０００４】
しかしながら、分数探索での動き検出が、必ずしも、画質や圧縮率の改善に効果的であるとは限らない。したがって、分数探索をおこなっても効果が見込まれない場合、分数探索を省略することで全体の処理量を削減させ、処理の高速化を図ることができる。特に、ソフトウェア処理で符号化を行う場合、符号化処理の演算量が多いため、省略可能な演算をできる限り省略させることで、大幅な処理効率の向上が期待できる。
【０００５】
このような観点から、１／２画素単位の分数探索をおこなうことが動き補償を改善する可能性があるか否かを判定し、改善する可能性が低い場合には１／２画素探索を省略して処理量を削減する手法が提案されている（例えば、特許文献１、２）。
【０００６】
１／２画素単位の探索（1/2pel探索）は、整数画素を補間して１／２画素単位で画素値を得ることで、整数探索よりも高精度に動きベクトルを検出することができる。最近では、分数探索の探索精度がさらに向上し、１／４画素探索（1/4pel探索）が可能となっており、「整数探索→1/2pel探索→1/4pel探索」といった多段探索が行われるようになっている。
【０００７】
探索精度が詳細になれば、動きベクトルをより正確に検出することができるが、画素数が増加するため、演算量が膨大となる。また、1/4pel探索をおこなうことが動き補償の改善に効果があるとは限らない。したがって、各探索精度での探索を選択的に実行することで演算量を効果的に削減させる必要がある。
【０００８】
しかしながら、上記特許文献１、２に開示されている手法では、１／２画素（半画素）単位の探索を選択的におこなうことができるが、1/4pel探索については考慮されていないため、1/4pel探索を含んだ動き検出においては、処理量の削減を効果的におこなうことができない。つまり、1/4pel探索についての実行要否を判別するには、1/2pelの画素値を得る必要があるが、1/2pelまでしか考慮されていない従来技術では、1/2pel探索を実行しないと判別した場合には、1/4pel探索についての判別をすることができない。
【０００９】
また、整数単位、1/2pel単位、1/4pel単位での探索が可能な場合、例えば、「整数探索のみ」、「整数探索＋1/2pel探索」、「整数探索＋1/2pel探索＋1/4pel探索」、「整数探索＋1/4pel探索」などといった複雑な探索パターンが考えられるが、1/2pel探索までしか考慮していない従来技術では、このような探索パターンから選択的に探索動作を実行することができない。
【特許文献１】特開２０００−２７８６９６号公報
【特許文献２】特開２００１−２４５２９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は上記実状に鑑みてなされたもので、複数の探索精度で分数探索可能な動き検出において、効果的に処理量を削減して、処理の高速化を実現する動きベクトル検出装置、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明の第１の観点にかかる動きベクトル検出装置は、
整数画素精度で探索する整数探索手段と、複数の分数画素精度で探索可能な分数探索手段と、を備え、多段探索で動画像データの動きベクトルを検出する動きベクトル検出装置において、
前記整数探索手段および前記分数探索手段による探索結果に基づいて、前記分数探索手段による分数探索の精度を設定する分数探索設定手段を備える、
ことを特徴とする。
【００１２】
上記動きベクトル検出装置において、
前記整数探索手段は、整数探索結果に基づく整数偏差を算出する整数偏差算出手段をさらに備えていることが望ましく、この場合、
前記分数探索設定手段は、前記整数偏差算出手段が算出した整数偏差に基づいて、分数探索精度を設定することが望ましい。
【００１３】
上記動きベクトル検出装置において、
前記分数探索手段は、分数探索結果に基づく分数偏差を算出する分数偏差算出手段をさらに備えていることが望ましく、この場合、
前記分数探索設定手段は、前記分数偏差算出手段が算出した分数偏差に基づいて、分数探索精度を設定することが望ましい。
【００１４】
上記動きベクトル検出装置は、
現画像についての高周波成分と、参照画像についての高周波成分を検出する高周波成分検出手段をさらに備えていることが望ましく、この場合、
前記分数探索設定手段は、前記高周波成分検出手段が検出した高周波成分に基づいて、分数探索精度を設定することが望ましい。
【００１５】
上記動きベクトル検出装置は、
予測ベクトルを算出する予測ベクトル算出手段をさらに備えていてもよく、この場合、
前記分数探索設定手段は、前記予測ベクトル算出手段が算出した予測ベクトルに基づいて分数探索を実行するか否かを判別し、分数探索を実行すると判別した場合、該予測ベクトルに基づいて分数探索精度を設定することが望ましい。
【００１６】
上記動きベクトル検出装置において、
前記分数探索設定手段は、いずれの探索精度で探索することにより動き補償が改善されるか否かを判別し、改善されると判別した場合に、当該探索精度による分数探索を設定することが望ましい。
【００１７】
この場合、
前記分数探索設定手段は、前記整数偏差、前記分数偏差、及び、前記高周波成分に基づいて、動き補償が改善されるか否かを判別するものとすることができる。
【００１８】
上記動きベクトル検出装置において、
前記分数探索設定手段は、整数探索の次に分数探索を行うか否かを判別し、分数探索を行うと判別した場合に、前記複数の分数探索精度のいずれかを設定することが望ましい。
【００１９】
上記目的を達成するため、本発明の第２の観点にかかるプログラムは、
コンピュータを、動画像データの動きベクトルを検出する動きベクトル検出装置として機能させるためのプログラムであって、
前記コンピュータに、
整数探索を実行する機能と、
整数探索による結果に基づいて、整数探索の次におこなう分数探索の探索精度を設定する機能と、
設定された探索精度で分数探索を実行する機能と、
実行した分数探索の結果に基づいて、さらなる探索精度で分数探索を実行するか否かを判別する機能と、
分数探索を実行すると判別した場合に分数探索を実行する機能と、
実行した探索に基づいて動きベクトルを算出する機能と、
を実現させることを特徴とする。
【００２０】
上記目的を達成するため、本発明の第３の観点にかかるプログラムは、
コンピュータを、動画像データの動きベクトルを検出する動きベクトル検出装置として機能させるためのプログラムであって、
前記コンピュータに、
予測ベクトルを算出する機能と、
算出した予測ベクトルに基づいて、実行すべき探索の探索精度を判別する機能と、
判別した探索精度で探索を実行する機能と、
実行した探索に基づいて動きベクトルを算出する機能と、
を実現させることを特徴とする。
【発明の効果】
【００２１】
本発明によれば、複数の探索精度（例えば、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）で探索して分数単位の動きベクトルを検出する。そして、本実施形態にかかる動き検出部１７０は、分数探索を実行する際、動き補償が改善される探索精度がいずれであるかを判定し、判定された探索精度でのみ探索することで、処理速度の高速化とフレームレートの向上を図るものである。このような動作を行う動き検出部１７０の構成を図２を参照して説明する。
【００３４】
図２は、動き検出部１７０の構成を示すブロック図である。図示するように、動き検出部１７０は、整数探索部１７１、最良整数位置判定部１７２、周囲整数位置評価部１７３、分数探索設定部１７４、画素補間部１７５、補間画素バッファ１７６、分数探索部１７７、ベクトル算出部１７８、を備える。
【００３５】
整数探索部１７１は、入力された現フレーム上にマクロブロックを設定し、この中から符号化対象ブロック（以下、「現ブロック」とする）を指定する。また、入力された参照フレーム上にも、現フレーム上のマクロブロックに対応するブロックを設定する。整数探索部１７１は、参照フレーム上で整数画素単位の探索（整数探索）をおこない、現ブロックの画素値に最も近似する（差分が最小となる）整数画素単位の位置を参照フレーム上で探索する。本実施形態では、所定の探索範囲を参照フレーム上に設定し、この探索フレーム内で探索ブロックを整数画素分ずつずらしながら、各探索ブロックの画素値と現ブロックの画素値との差分を、例えば、差分絶対値和演算（Sum of Absolute Difference: SAD）で求め、各演算結果を各探索ブロック毎の評価値として出力する。
【００３６】
最良整数位置判定部１７２は、整数探索部１７１が出力した評価値に基づいて、現ブロックとの差分が最小となったブロック（以下、「最良整数ブロック」とする）がいずれであるかを判定する。
【００３７】
周囲整数位置評価部１７３は、整数探索部１７１が出力した評価値のうち、最良整数位置判定部１７２が判定した最良整数ブロックの周囲８方向に隣接する整数ブロックの評価値を取得し、所定の条件に合致した評価値となった整数位置（ブロック）を特定する。
【００３８】
分数探索設定部１７４は、最良整数位置判定部１７２が特定した最良整数位置、周囲整数位置評価部１７３が特定した整数位置、および、分数探索部１７７による分数探索結果などに基づいて、次段でおこなう分数探索の探索精度や探索範囲などを設定する。本実施形態では、整数探索の次におこなう分数探索の探索精度を1/2pelとするか1/4pelとするかの判定、および、1/2pel分数探索の次に1/4pel分数探索をおこなうか否かを判定や、分数探索に伴う画素補間の対象となる領域を判定して設定する。
【００３９】
画素補間部１７５は、分数探索設定部１７４が設定した探索精度と対象領域に基づいて画素補間をおこなう。すなわち、1/2pelで分数探索する場合は１／２画素補間をおこない、1/4pelで分数探索する場合には１／４画素補間をおこなう。ここで、１／２画素補間の場合は、例えば、「6tap FIR」などの補間手法を用い、１／４画素補間の場合は、例えば、「線形補間」などの補間手法を用いる。なお、対象となる領域がすでに画素補間されており、その画素値が補間画素バッファ１７６に格納されている場合は、補間画素バッファ１７６から画素値を取得して用いる。
【００４０】
補間画素バッファ１７６は、例えば、半導体記憶素子などから構成され、画素補間部１７５による補間後の画素値を一時的に格納する。補間画素バッファ１７６には、例えば、図３に示すような「補間画素テーブル」が構成される。「補間画素テーブル」には、１フレーム中の各マクロブロックに一意に付与される「ブロックアドレス」をキーとしたレコードが作成され、各レコードには、「シリアル」、「レベル」、「画素値」、などの項目が用意される。
【００４１】
項目「シリアル」には、当該レコードに記録されている画素値が利用された順に付与されるシリアル番号が記録される。ここでのシリアル番号は、テーブル全体で１つのグローバル変数として保持されるものであり、フレーム毎の処理開始毎に「０」にリセットされるものである。そして、あるレコードに記録されている画素値が利用されると、グローバル変数が＋１され、その値が当該レコードの「シリアル」に記録される。
【００４２】
項目「レベル」には、補間レベルを示すコード（例えば、０：空き、１：未補間、２：1/2補間済、３：1/4補間済、など）が記録される。ここで、「空き」は、当該レコードが空きレコードであることを示し、「未補間」は、当該ブロックは分数画素補間されていないことを示す。そして、「1/2補間済」は、当該ブロックが１／２画素補間されていることを示し、「1/4補間済」は、当該ブロックが１／４画素補間されていることを示す。
【００４３】
項目「画素値」には、当該ブロックの補間レベルに応じた画素値が座標毎に記録される。
【００４４】
分数探索部１７７は、分数探索設定部１７４が設定した探索精度で分数探索をおこなう。すなわち、所定の探索範囲で探索ブロックを指定された分数画素分ずつずらしながら現ブロックとの差分を、例えば、差分絶対値和演算により求める。
【００４５】
ベクトル算出部１７８は、整数探索部１７１による整数探索、および、分数探索部１７７による分数探索で得られた結果に基づいて、現ブロックについての「動きベクトル」を算出して出力する。
【００４６】
このような動き検出部１７０の各構成は、所定の制御信号によって制御されるものとする。このような制御信号は、例えば、ＣＰＵ（Central Processing Unit：中央演算処理装置）などから構成される符号化装置１００の制御部（不図示）より各部に供給されるものとすることができる他、外部装置などから供給されてもよい。
【００４７】
上記のように構成された符号化装置１００は、次のような手順で動画像データを符号化する。
【００４８】
符号化装置１００に入力された動画像データは、フレーム単位で変換部１１０および動き検出部１７０へ送られる。動き検出部１７０では入力フレームと参照フレームとの差分を検出することで動きベクトルを検出する。動き補償部１８０は、その動きベクトルに基づいて参照フレームを動き補償して予測ブロックを生成する。そして、入力フレームのマクロブロックと予測ブロックとの差分が取られ、その差分データは、変換部１１０による変換と、量子化部１２０による量子化が行われた後に、符号化部１３０で符号化される。動き検出部１７０が検出した動きベクトルデータも符号化部１３０で符号化され、両データは多重化されて出力される。
【００４９】
一方、量子化部１２０で量子化された差分データは、逆量子化部１４０で逆量子化され、逆変換部１５０で逆変換されることにより復元される。復元された差分データと、動き補償部１８０が生成した予測ブロックとが加算され、復元画像メモリ１６０に「復元フレーム」（復元画像）として格納される。復元画像メモリ１６０に格納された復元フレームは、「参照フレーム」（参照画像）として動き検出部１７０に入力される。動き検出部１７０では、入力された参照フレームと現フレームとの差分を示す動きベクトルを検出する。
【００５０】
本実施形態にかかる動き検出部１７０は、いわゆるブロックマッチング法により現フレームと参照フレームとの差分ベクトルを求めるものである。すなわち、現フレーム上のマクロブロックと近似するブロックを参照フレーム上で探索し、探索されたブロック（参照ブロック）とマクロブロックとの差分ベクトルを動きベクトルとして検出する。
【００５１】
ここで、本実施形態にかかる動きベクトルの検出動作は、整数探索をおこなった後に分数探索をおこなうことで動きベクトルを検出するものである。本実施形態では、図４（ａ）に示すように、現フレームＣＦ上に所定数のマクロブロックＭＢを設定するとともに、現フレームＣＦ上のマクロブロックＭＢと同様のブロックを参照フレームＲＦ上にも設定してブロック単位に探索をおこなうものとする。すなわち、現フレームＣＦ上のマクロブロックとサイズや位置が同一となるブロックが参照フレームＲＦ上にも設定される。この場合、現フレームＣＦ上で符号化対象として指定されたマクロブロック（現ブロックＣＢ）に対応する参照フレームＲＦ上のブロックを探索中心として、現ブロックＣＢの画素値との差分が最小である画素値を示すブロックを参照フレーム上で探索する。
【００５２】
また、本実施形態では、１ブロックのサイズ（ブロックサイズ）を、例えば、１６×１６整数画素（分数画素補間後は「１６×１６整数画素相当」）とする。ここで、１フレームの解像度が、例えば、ＱＶＧＡ（Quarter Video Graphics Array）、すなわち、３２０×２４０であるとすると、１６×１６整数画素のブロックが１フレーム上に３００（２０×１５）個設定されることになる。
【００５３】
このように設定される各ブロックには、それぞれを識別するための「ブロックアドレス」が付与される。本実施形態では、フレーム左上のブロックアドレスを「０」とし、以下、走査方向順に「１、２、…、２９９」とブロックアドレスを付与する。ここでの「走査方向」とは、図４（ｂ）において矢印で示すように、左→右を上→下に進めていく方向をいう。ここで、現フレーム上のマクロブロックと参照フレーム上のブロックとは対応しているので、双方に共通のブロックアドレスを付与するものとする。
【００５４】
また、本実施形態では、各ブロック上の所定位置を基準点として定め、この基準点の位置に基づいて、ブロックの位置や範囲等を規定することとする。本実施形態では、各ブロックの左上頂部位置を基準点（基準点ＯＰ）とする。
【００５５】
本明細書においては、上記のブロックサイズ、解像度、ブロック個数である場合を例に以下説明するが、これらは一例であり、任意の条件であってもよい。
【００５６】
このような条件での動き検出部１７０の動作（「動きベクトル検出処理１」）を図５に示すフローチャートを参照して説明する。この「動きベクトル検出処理１」は、動き検出部１７０に現フレームが入力されたことを契機に開始される。
【００５７】
動き検出部１７０に現フレームが入力されて「動きベクトル検出処理１」が開始されると、整数探索部１７１が現フレーム上に上記のようなマクロブロックを設定するとともに、符号化対象とするマクロブロック（現ブロックＣＢ）を指定する（ステップＳ１０１）。本実施形態では、現ブロックの指定をブロックアドレス順におこなうものとする。
【００５８】
次に整数探索部１７１は、指定した現ブロックＣＢについての整数探索を実行する（ステップＳ２００）。この場合の「整数探索処理」を図６に示すフローチャートを参照して説明する。本実施形態では、復元画像メモリ１６０から参照フレームを取得し、ステップＳ１０１で指定した現ブロックのブロックアドレスと同じブロックアドレスが付与された参照フレーム上のブロックを、整数探索の探索中心として指定する。そして、整数探索部１７１は、探索中心として指定したブロック（以下、「探索ブロックＳＢ１0」とする）を起点として、所定の整数探索範囲内でブロック（探索ブロックＳＢ１1〜ＳＢ１n（探索ブロックＳＢ１ｘ））を１整数画素分ずつずらしながら、現ブロックＣＢとの差分を演算する。ここで、整数探索範囲のサイズは任意であるが、本実施形態では、ブロックサイズ（１６×１６整数画素）未満のサイズで整数探索範囲を規定することとする。
【００５９】
整数探索部１７１は、探索ブロックＳＢ１0を起点に１整数画素分ずつずらした各探索ブロックＳＢ１ｘの画素値と、現ブロックＣＢの画素値との差分を、例えば、差分絶対値和演算により求め、演算結果を各探索ブロックＳＢ１ｘの評価値として最良整数位置判定部１７２と周囲整数位置評価部１７３に出力する（ステップＳ２０１）。このとき、整数探索部１７１は、現ブロックとして指定されたブロックを示すブロックアドレスを画素補間部１７５に出力する。
【００６０】
最良整数位置判定部１７２は、整数探索部１７１から取得した各評価値を参照し、最も良好な評価、すなわち、現ブロックＣＢとの差分が最小であることを示す評価値（以下、「ＳＡＤmin1」とする）と特定し、ＳＡＤmin1を示すブロックを「最良整数ブロックＳＢ１min」とする（ステップＳ２０２）。すなわち、最良整数ブロックＳＢ１minは、整数画素単位で探索した結果、現ブロックＣＢとの差分が最小であるとされるブロックである。
【００６１】
最良整数ブロックＳＢ１minを特定すると、最良整数位置判定部１７２は、特定した最良整数ブロックＳＢ１minの位置を示す情報を周囲整数位置評価部１７３に出力する。この場合、最良整数ブロックＳＢ１minの基準点ＯＰ１minの座標を示す情報を位置情報として出力する。最良整数位置判定部１７２はまた、ＳＡＤmin1を分数探索設定部１７４に出力する。
【００６２】
周囲整数位置評価部１７３は、整数探索で得られた最良整数ブロックＳＢ１minの周囲８方向に隣接するブロック（以下、「周囲整数ブロックＳＢ１’」とする）を特定し（ステップＳ２０３）、整数探索部１７１から取得した評価値のうち、周囲整数ブロックＳＢ１’の評価値を抽出する。そして、抽出した評価値のうち、現ブロックＣＢとの差分が最大である評価値（以下、「ＳＡＤmax1」とする）を特定して、分数探索設定部１７４に出力し（ステップＳ２０４）、図５に示す「動きベクトル検出処理１」に戻る。
【００６３】
ＳＡＤmin1とＳＡＤmax1が特定され分数探索設定部１７４に出力されると、整数探索の次に1/2pel探索をおこなうことで動き補償が改善されるか否かを判定するための「1/2pel処理」が実行される（ステップＳ４００）。この「1/2pel処理」を図７に示すフローチャートを参照して説明する。
【００６４】
分数探索設定部１７４は、整数探索で得られた評価値であるＳＡＤmin1とＳＡＤmax1とに基づいて、分数探索の探索精度を1/2pelとするか否か判定するために用いる偏差（以下、「整数偏差」とする）を演算する（ステップＳ４０１）。すなわち、最良整数位置判定部１７２から取得したＳＡＤmin1と、周囲整数位置評価部１７３から取得したＳＡＤmax1とを用いて、最良整数ブロックＳＢ１minとその周囲ブロックについての偏差を演算する。ここでは、ＳＡＤmin1とＳＡＤmax1との差分の絶対値（｜ＳＡＤmin1−ＳＡＤmax1｜）を演算し、演算結果を「整数偏差Δ1」とする。
【００６５】
次に分数探索設定部１７４は、整数探索の次に1/2pel分数探索をおこなうことで動き補償が改善されるか否かを判定する。ここでは、ステップＳ４０１で演算した整数偏差Δ1が、予め設定された正の整数値定数ε1よりも大きい（Δ1＞ε1）か否かを判別することで、1/2pel探索によって動き補償が改善されるか否かを判定する（ステップＳ４０２）。
【００６６】
整数偏差Δ1が定数ε1よりも大きい場合（ステップＳ４０２：Ｙｅｓ）、分数探索設定部１７４は、1/2pel探索をおこなうことで動き補償が改善されると判定する。
【００６７】
ここで、最小差分を示すＳＡＤ１min1と、その周囲位置の差分値のうちの最大値であるＳＡＤmax1との偏差である整数偏差Δ1は、整数画素単位での残差の変化を示し、偏差が小さいほど残差の変化が小さく、偏差が大きいほど残差の変化が大きいことを示す。したがって、整数偏差Δ1が小さい場合、整数画素単位で残差の変化が小さいことになるので、整数画素を補間した分数画素においても、残差に大きな変化がないことを予測することができる。
【００６８】
逆に、整数偏差Δ1が大きい場合は、整数画素単位で残差の変化が大きいため、分数補間後も残差に大きな変化があることが予測できる。この場合、最良整数ブロックＳＢ１minの周囲の分数位置（１／２位置）において、最良整数ブロックＳＢ１minよりも現ブロックと画素値が近似するブロックが存在する可能性が高い。
【００６９】
したがって、分数探索設定部１７４は、整数偏差Δ1が所定の定数ε1より大きい場合、1/2pel探索をおこなうことで動き補償が改善されると判定する。この場合、分数探索設定部１７４は、整数探索の次におこなう分数探索の探索精度を「1/2pel」とし、その旨を示す情報（以下、「探索精度情報」とする）を画素補間部１７５に出力する。
【００７０】
一方、整数偏差Δ1が定数ε1以下（Δ1≦ε1）である場合（ステップＳ４０２：Ｎｏ）、分数探索設定部１７４は、1/2pel探索をおこなっても動き補償は改善されないと判定する。したがって、分数探索設定部１７４は、整数探索の次に1/2pel探索をおこなわないものとする。この場合、1/4pel探索により動き補償が改善されるか否かを判定するための「1/4pel処理」（図５参照）に進む。「1/4pel処理」の詳細は後述する。
【００７１】
分数探索設定部１７４により、探索精度が1/2pelとされた場合、画素補間部１７５は、１／２画素補間をおこなう。ここではまず、画素補間部１７５が、整数探索部１７１から取得した現ブロックを示すブロックアドレスに基づいて、現ブロックＣＢに対応する探索ブロックＳＢ１0の周囲８方向に隣接するマクロブロック（以下、「周囲マクロブロック」とする）のブロックアドレスを特定する（ステップＳ４０３）。本実施形態のように、２０×１５のマクロブロックが配列されている場合、現ブロックＣＢおよび探索ブロックＳＢ１0のブロックアドレスをＢＡとすると、ＢＡ−２１、ＢＡ−２０、ＢＡ−１９、ＢＡ−１、ＢＡ＋１、ＢＡ＋１９、ＢＡ＋２０、ＢＡ＋２１が、周囲マクロブロックのブロックアドレスとなる。
【００７２】
周囲マクロブロックのブロックアドレスを特定すると、画素補間部１７５は補間画素バッファ１７６の「補間画素テーブル」（図３）にアクセスし（ステップＳ４０４）、探索ブロックＳＢ１0と、その周囲ブロックのブロックアドレス（以下、「対象ブロックアドレス」とする）がキーとなっているレコードがあるか否かを判別する（ステップＳ４０５）。
【００７３】
対象ブロックアドレスがキーとなっているレコードがある場合（ステップＳ４０５：Ｙｅｓ）、画素補間部１７５は、当該レコードを補間画素バッファ１７６から取得する（ステップＳ４０６）。補間画素バッファ１７６に記録された対象ブロックアドレスは、少なくとも現ブロックＣＢについての動きベクトル検出処理が終了するまで保持されるものとする。
【００７４】
画素補間部１７５は、取得したレコードの「レベル」を参照し、分数探索設定部１７４が現在指定している探索精度（1/2pel）に必要な補間レベルであるか否かを判別する（ステップＳ４０７）。
【００７５】
すなわち、探索精度が「1/2pel」である場合、補間レベルが「1/2補間済」もしくは「1/4補間済」であれば、1/2pel探索に必要な画素補間がなされていることになる。
【００７６】
十分な補間レベルである場合（ステップＳ４０７：Ｙｅｓ）、画素補間部１７５は、当該レコードの「画素値」に記録されている画素値を取得する（ステップＳ４０８）。画素補間部１７５が補間画素テーブルのレコードから画素値を取得すると、シリアル番号として画素補間部１７５に保持されているグローバル変数が＋１され、この値が当該レコードの「シリアル」に記録される。
【００７７】
一方、十分な補間レベルでない場合（ステップＳ４０７：Ｎｏ）、画素補間部１７５は、当該レコードに対応する参照フレーム上のブロックを、例えば、「6tap FIR」などの補間手法により１／２画素補間し（ステップＳ４１０）、補間画素テーブルを更新する（ステップＳ４１１）。ここでは、１／２画素補間後の画素値を「画素値」に記録するとともに、「レベル」を「1/2補間済」に更新する。「１／２画素補間」は、図１１（ａ）に示すように、対象となる領域内の各整数画素間の中間位置（１／２位置）での画素値が得られるよう補間するものである。
【００７８】
また、対象ブロックアドレスをキーとするレコードがない場合（ステップＳ４０５：Ｎｏ）、該当するブロックアドレスが示す参照フレーム上のブロックを１／２画素補間し（ステップＳ４１０）、補間画素テーブルを更新する（ステップＳ４１１）。ここでは、空きレコードがある場合には当該レコードを更新し、空きレコードがない場合には、シリアル番号が最小であるレコード、すなわち、最も以前に利用されたレコードを更新する。この場合の「更新」とは、該当するレコードの「ブロックアドレス」に、補間したブロックのブロックアドレスを記録するとともに、「レベル」を「1/2補間済」に更新して、「画素値」に１／２画素補間後の画素値を記録する。
【００７９】
ここで、「補間画素テーブル」のレコード数は、補間画素バッファ１７６の記憶容量に応じて任意に設定可能であるが、本実施形態では、補間処理にかかる補間画素バッファ１７６のメモリ量を削減するため、必要最小限のレコード数に設定することとする。すなわち、本実施形態では１フレーム中のブロック数が３００であるが、補間画素テーブルのレコード数を、例えば、５０に設定する。
【００８０】
画素値をレコードに記録すると、シリアル番号として画素補間部１７５に保持されているグローバル変数が＋１され、その値が当該レコードの「シリアル」に記録される。
【００８１】
画素補間部１７５は、ステップＳ４０６で補間画素バッファ１７６から取得した画素値、および、ステップＳ４１１で補間画素テーブルに記録した画素値を分数探索部１７７に出力し（ステップＳ４０９）、図５に示す「動きベクトル検出処理１」に戻る。
【００８２】
以上のように、「1/2pel処理」では、次におこなう分数探索の探索精度を1/2pelに決定すると、探索ブロックＳＢ１0と、その周囲８方向に隣接する周囲マクロブロックについて１／２画素補間をおこなう。本実施形態では、ブロックサイズ未満のサイズの整数探索範囲としているので、探索ブロックＳＢ１0を起点に整数探索範囲内で探索して得られた最良整数ブロックＳＢ１minは、探索ブロックＳＢ１0に周囲マクロブロックを加えた９つのマクロブロックの範囲内に含まれることとなる。したがって、このような９つのマクロブロックを１／２画素補間しておくことで、最良整数ブロックＳＢ１minに基づく1/2pel探索で必要となる１／２画素を取得することができる。
【００８３】
ここで、該当するマクロブロックが既に１／２画素補間されており、その画素値が補間画素バッファ１７６に保持されている場合は、当該ブロックについては補間処理をおこなわずに補間画素バッファ１７６から画素値を取得することができる。
【００８４】
1/2pel探索のために１／２画素補間されると、分数探索部１７７は、画素補間部１７５から取得した補間後の画素値を用いて、1/2pel分数探索をおこなう（図５、ステップＳ５００）。この場合の「1/2pel探索処理」を図８に示すフローチャートを参照して説明する。
【００８５】
ここでは、整数探索で求められた最良整数ブロックＳＢ１minを探索中心として、1/2pel分数探索がおこなわれる。ここではまず、分数探索部１７７が1/2pel探索の探索範囲を設定する（ステップＳ５０１）。この場合、図１２（ａ）に示すように、最良整数ブロックＳＢ１minの基準点ＯＰ１minを中心とした３×３分数画素（1/2pel）の範囲を1/2pel探索範囲ＳＡｈとする。
【００８６】
分数探索部１７７は、このように規定した1/2pel探索範囲ＳＡｈ内の各分数位置（１／２位置）が基準点となる１６×１６整数画素相当の探索ブロックＳＢ２を順次指定し、各探索ブロックＳＢ２の1/2pel画素値と現ブロックＣＢの画素値との差分を、例えば、差分絶対値和演算により求め、演算結果を各探索ブロックＳＢ２の評価値とする（ステップＳ５０２）。すなわち、最良整数ブロックＳＢ１minを起点に１／２画素分ずつ探索ブロックをずらしながら、現ブロックＣＢとの差分が求められる。換言すれば、最良整数ブロックＳＢ１minの周囲８方向に隣接する８つの１／２位置についての評価値が得られることになる。
【００８７】
分数探索部１７７は、探索ブロックＳＢ２の評価値を分数探索設定部１７４に出力し（ステップＳ５０３）、図５に示す「動きベクトル検出処理１」に戻る。
【００８８】
「1/2pel探索処理」が終了すると「1/4pel処理」が実行される。この「1/4pel処理」は、1/4pel探索をおこなうことで動き補償が改善されるか否かを判定するための処理である。「1/4pel処理」の詳細を図９に示すフローチャートを参照して説明する。
【００８９】
分数探索設定部１７４はまず、「1/2pel処理」のステップＳ４０２で「整数偏差Δ1≦ε1」とされた場合であるか、「1/2pel探索処理」のステップＳ５０３で1/2pelの評価値が出力された場合であるかを判別する。すなわち、整数探索の次に1/2pel探索を実行しなかった場合の処理であるか、1/2pel探索が実行された場合の処理であるかを判別する。（ステップＳ６０１）。
【００９０】
1/2pel探索が実行されていない場合、すなわち、「1/2pel処理」において「整数偏差Δ1≦ε1」とされた場合（ステップＳ６０１：Ｙｅｓ）、整数探索の次に1/4pel探索をおこなうことで動き補償が改善されるか否かを判定するための「高周波検出処理」を実行する（ステップＳ８００）。この「高周波検出処理」の詳細は後述する。
【００９１】
一方、1/2pel探索がおこなわれた場合、すなわち、「1/2pel探索処理」によって1/2pelの評価値が取得された場合（ステップＳ６０１：Ｎｏ）、分数探索設定部１７４は、1/2pel探索のあとに1/4pel探索をおこなうことで動き補償が改善されるか否かを判定する。ここでは、取得した1/2pelの評価値のうちの、最小値（以下、ＳＡＤmin2」とする）と、最大値（以下、「ＳＡＤmax2」とする）とを特定し（ステップＳ６０２）、1/2pel探索についての偏差（以下、「1/2pel偏差Δ2」）を演算する（ステップＳ６０３）。ここでは、ＳＡＤmin2とＳＡＤmax2との差分の絶対値（｜ＳＡＤmin2−ＳＡＤmax2｜）を1/2pel偏差Δ2とする。
【００９２】
分数探索設定部１７４は、求めた1/2pel偏差Δ2に基づいて、1/2pel探索後に1/4pel探索をおこなうことで動き補償が改善されるか否かを判定する。ここでは、1/2pel偏差Δ2が、予め設定された正の整数値定数ε2より大きい（Δ2＞ε2）か否かを判別することで（ステップＳ６０４）、1/4pel探索により動き補償が改善されるか否かを判定する。
【００９３】
1/2pel偏差Δ2が定数ε2以下である場合（ステップＳ６０４：Ｎｏ）、分数探索設定部１７４は、1/2pel探索の後に1/4pel探索をおこなっても動き補償は改善されないと判定し、分数探索を1/2pel探索で打ち切る。ここで、1/2pel偏差Δ2は、整数偏差Δ1と同様、1/2pelでの残差の変化を示す。したがって、1/2pel偏差Δ2が小さいほど1/2pelでの残差の変化が小さく、大きいほど1/2pelでの残差の変化が大きいことを示す。
【００９４】
よって、1/2pel偏差Δ2が所定の定数ε2以下となる場合は、1/4pelに補間した後も残差の変化が小さいことが予測されるので、分数探索設定部１７４は、1/4pel探索をおこなっても動き補償は改善されないと判定する。この場合、分数探索設定部１７４は、1/2pel探索で得られたＳＡＤmin2となった探索ブロックＳＢ２の位置を1/2pelにおける最良分数ブロックＳＢ２minとし、この最良分数ブロックＳＢ２minの位置を示す位置情報を分数探索部１７７に出力し（ステップＳ６０８）、図５に示す「動きベクトル検出処理１」に戻る。
【００９５】
一方、1/2pel偏差Δ2が定数ε2より大きい場合（ステップＳ６０４：Ｙｅｓ）、1/4pelにおいて残差の変化が大きいことが予測され、最良分数ブロックＳＢ２minの周囲の１／４位置において、最良分数ブロックＳＢ２minよりも画素値が現ブロックと近似するブロックが存在する可能性が高い。したがって、分数探索設定部１７４は、1/2pel探索の次に1/4pel探索をおこなうことで動き補償が改善されると判定する。この場合、分数探索設定部１７４は、探索精度が1/4pelであることを示す探索精度情報を画素補間部１７５に出力する。
【００９６】
分数探索設定部１７４から1/4pelの探索精度情報が出力されると、画素補間部１７５は1/4pel探索に必要な１／４画素補間処理をおこなう（ステップＳ６０５）。ここではまず、補間画素バッファ１７６にアクセスし、補間画素バッファ１７６が保持している対象ブロックアドレスを参照する。画素補間部１７５はさらに、補間画素バッファ１７６の補間画素テーブルにアクセスし、参照した対象ブロックアドレスがキーとなっているレコードを取得する。
【００９７】
画素補間部１７５は、取得したレコードの「レベル」を参照し、補間レベルが「1/4補間済」となっているレコードについては、「画素値」に記録されている１／４画素補間後の画素値を取得する。この場合、画素補間部１７５がレコードから画素値を取得する毎に、シリアル番号として画素補間部１７５に保持されているグローバル変数が＋１され、その値が当該レコードの「シリアル」に記録される。
【００９８】
一方、補間レベルが「1/4補間済」以外である場合は、当該レコードに対応するマクロブロックを１／４画素補間する。ここでは、すでに1/2pel探索がなされているので、該当するマクロブロックは少なくとも１／２画素補間されている。したがって、画素補間部１７５は、図１１（ｂ）に示すように、１／２画素補間後の各１／２位置の中間位置（１／４位置）での画素値が得られるよう補間し、補間後の画素値を各レコードの「画素値」に記録する。
【００９９】
画素値をレコードに記録すると、シリアル番号として画素補間部１７５に保持されているグローバル変数が＋１され、その値が当該レコードの「シリアル」に記録される。
【０１００】
画素補間部１７５は、補間画素テーブルから取得した画素値および画素補間部１７５が１／４画素補間した画素値を分数探索部１７７に出力する。
【０１０１】
分数探索部１７７は、画素補間部１７５から取得した１／４画素補間された画素値を用いて1/4pel探索を実行する（ステップＳ６０６）。ここでは、1/2pel探索で得られた最良分数ブロックＳＢ２minを探索中心として1/4pel探索をおこなう。この場合、例えば、図１２（ｂ）に示すように、最良分数ブロックＳＢ２minの基準点ＯＰ２minを中心とした３×３分数画素（1/4pel）の範囲を1/4pelの探索範囲ＳＡｑとし、この探索範囲ＳＡｑ内の各１／４位置を基準点とする１６×１６整数画素相当の探索ブロックＳＢ３（ＳＢ３1〜ＳＢ３8）を順次指定する。
【０１０２】
すなわち、分数探索部１７７は、最良分数ブロックＳＢ２minを起点として、１／４画素分ずつずらした探索ブロックＳＢ３を順次指定する。そして、各探索ブロックＳＢ３の1/4pelの画素値と、現ブロックＣＢの画素値との差分を、例えば、差分絶対値和演算により求め、演算結果を各探索ブロックＳＢ３の評価値とする。
【０１０３】
分数探索部１７７は、求めた評価値が最小値となる探索ブロックＳＢ３を特定し、このブロックを、1/4pelで現ブロックとの差分が最小である最良分数ブロックＳＢ３minとする（ステップＳ６０７）。そして、この最良分数ブロックＳＢ３minの位置を示す位置情報をベクトル算出部１７８に出力し（ステップＳ６０８）、図５に示す「動きベクトル検出処理１」に戻る。
【０１０４】
ここで、「1/4pel処理」のステップＳ４０２で「整数偏差Δ1≦ε1」とされた場合（ステップＳ６０１：Ｙｅｓ）に実行される「高周波検出処理」（ステップＳ８００）を、図１０に示すフローチャートを参照して説明する。
【０１０５】
この「高周波検出処理」は、整数探索の次に1/2pel探索をおこなっても動き補償が改善されないと判定された場合（すなわち、整数偏差Δ1≦ε1）に、１／２画素補間よりもローパス特性の強い１／４画素補間による1/4pel探索をおこなうことで、動き補償が改善されるか否かを判定するための処理である。
【０１０６】
本実施形態では、符号化対象となっている現ブロックと、最良整数ブロックＳＢ１minについての高周波成分、すなわち、精細成分に基づいて判定する。ここで、「整数偏差Δ1≦ε1」となる場合というのは、整数画素単位での残差の変化が小さいこと示し、符号化対象画像と参照画像のいずれか一方の高周波成分が少ないことを示唆する。このため、「高周波検出処理」により、高周波成分の少ない画像がいずれであるか、すなわち、符号化対象画像と参照画像のいずれが平坦な傾向であるのかを判別することで、1/4pel探索により動き補償が改善されるか否かを判定する。
【０１０７】
「高周波検出処理」が開始されると、分数探索設定部１７４は、現ブロックＣＢと最良整数ブロックＳＢ１minのそれぞれについての高周波の評価値（以下、「高周波評価値」とする）を演算する（ステップＳ８０１）。
【０１０８】
ここでは、例えば、アダマール変換を用いて高周波評価値を演算する。この場合、現フレーム上の現ブロックＣＢの画素値を１６次の正方行列Ａとおき、参照フレーム上の最良整数ブロックＳＢ１minの画素値を１６次の正方行列Ｒとおく。そして、正方行列Ａ、Ｒのそれぞれに対して、図１３に示すようなアダマール変換行列Ｈを左右から乗算する。ここでは、正方行列Ａにアダマール変換行列Ｈを乗算したものをＢ＝ＨＡＨ’とおき、正方行列Ｒにアダマール変換行列Ｈを乗算したものをＳ＝ＨＲＨ’とおく。なお、本実施形態で用いるアダマール変換行列Ｈは、低周波を小さいインデックスに割り当て、高周波を大きいインデックスに割り当てるために、低周波基底から高周波基底の順に行ベクトルを並べたものである。
【０１０９】
ここで、「Ｂ＝ＨＡＨ’」を成分で表すとＢ＝（bi,j）となり、「Ｓ＝ＨＲＨ’」を成分で表すとＳ＝（si,j）となる。なお、ｉ，ｊは０以上１６未満である。
【０１１０】
本実施形態では、アダマール変換後の右下三角成分の絶対値和を高周波評価値とする。現ブロックＣＢの高周波評価値をαとおき、最良整数ブロックＳＢ１minの高周波評価値をρとおくと、分数探索設定部１７４は、数１を演算することで、現ブロックＣＢと最良整数ブロックＳＢ１minそれぞれの高周波評価値を得る。
【０１１１】
【数１】
2006067213.tif 000003
【０１１２】
分数探索設定部１７４は、このようにして求めた現ブロックＣＢの高周波評価値αと、最良整数ブロックＳＢ１minの高周波評価値ρを比較することで（ステップＳ８０２）、整数探索の次に1/4pel探索をおこなうことで、動き補償が改善されるか否かを判定する（ステップＳ８０３）。ここでは、現ブロックＣＢの高周波評価値αが最良整数ブロックＳＢ１minの高周波評価値ρよりも明確に少ないか否か、より詳細には、最良整数ブロックＳＢ１minの高周波評価値ρから予め設定した正の整数値定数δを減じた値よりも、現ブロックＣＢの高周波評価値αの方が大きい（α＜ρ−δ）か否かを判別することにより判定する。
【０１１３】
この場合、現ブロックＣＢの高周波評価値が最良整数ブロックＳＢ１minの高周波評価値よりも明確に少ない場合、すなわち、α＜ρ−δとなった場合、分数探索設定部１７４は、整数探索の次に1/4pel探索をおこなうことで、動き補償が改善されると判定する（ステップＳ８０３：Ｙｅｓ）。
【０１１４】
ここで、「現ブロックＣＢの高周波評価値が最良整数ブロックＳＢ１minの高周波評価値よりも明確に少ない」という条件は、現画像が参照画像よりもボケていることを示す。この場合、参照画像をボケさせることでより現画像に近づくことになる。通常、1/4pel補間はローパスフィルタ特性が強く、1/4pel補間により画像にボケが生じる。すなわち、現画像が参照画像よりもボケている場合、1/4pel探索をおこなうことで、動き補償が改善される可能性が高くなる。
【０１１５】
したがって、現ブロックＣＢの高周波評価値が最良整数ブロックＳＢ１minの高周波評価値よりも明確に少ない（α＜ρ−δ）場合、分数探索設定部１７４は、整数探索の次に1/4pel探索をおこなうことで、動き補償が改善されると判定する。この場合、分数探索設定部１７４は、探索精度が「1/4pel」であることを示す探索精度情報を画素補間部１７５に出力する。
【０１１６】
そして、分数探索設定部１７４が出力した探索精度情報に基づいて、画素補間部１７５が1/4pel探索に必要な１／４画素補間処理を実行する（ステップＳ８０４）。ここでの画素補間処理は、上記「1/4pel処理」におけるステップＳ６０５と同様の処理であるので説明は省略する。ただし、1/2pel探索を実行していないので、該当するブロックが１／２画素補間されていない場合もある。この場合、画素補間部１７５は、当該ブロックを１／２画素補間した後、１／４画素補間する。
【０１１７】
画素補間部１７５は、取得した1/4pelの画素値を分数探索部１７７に出力する。分数探索部１７７は画素補間部１７５から取得した画素値を用いて1/4pel探索を実行する（ステップＳ８０５）。ここでの1/4pel探索の動作は、上記「1/4pel処理」におけるステップＳ６０６と同様であるので説明は省略する。
【０１１８】
すなわち、分数探索部１７７は、1/4pelの最良分数ブロックＳＢ３minを特定し（ステップＳ８０６）、この位置を示す位置情報をベクトル算出部１７８に出力し（ステップＳ８０７）、図５に示す「動きベクトル検出処理１」に戻る。
【０１１９】
すなわち、「整数偏差Δ1≦ε1」であり、かつ、「高周波評価値α＜高周波評価値ρ−δ」である場合には、整数探索後に1/2pel探索をおこなわずに1/4pel探索が実行される。
【０１２０】
一方、現ブロックＣＢの高周波評価値が最良整数ブロックＳＢ１minの高周波評価値よりも明確に少なくない場合、すなわち、α≧ρ−δとなった場合（ステップＳ８０３：Ｎｏ）、分数探索設定部１７４は、整数探索の次に1/4pel探索をおこなっても動き補償は改善されないと判定する。したがって、整数探索までで探索を打ち切り、分数探索をおこなわないこととする。この場合、分数探索設定部１７４は、整数探索で得られた最良整数ブロックＳＢ１minの位置を示す位置情報をベクトル算出部１７８に出力し（ステップＳ８０７）、図５に示す「動きベクトル検出処理１」に戻る。
【０１２１】
ベクトル算出部１７８は、分数探索設定部１７４あるいは分数探索部１７７から取得した、最良整数ブロックＳＢ１min、最良分数ブロックＳＢ２min、最良分数ブロックＳＢ３minの位置情報を用いて、現ブロックＣＢについての動きベクトルを算出する（図５、ステップＳ１０２）。本実施形態では、対象となるブロックの基準点の座標を示す情報を位置情報とする。
【０１２２】
したがって、整数探索までで探索が打ち切られた場合は、探索ブロックＳＢ１0の基準点ＯＰ１0を原点とした、最良整数ブロックＳＢ１minの基準点ＯＰ１minを示すベクトルが、現ブロックＣＢの動きベクトル（整数動きベクトル）となる。
【０１２３】
また、1/2pel探索まで探索した場合は、探索ブロックＳＢ１0の基準点ＯＰ１0を原点とした、最良分数ブロックＳＢ２minの基準点ＯＰ２minを示すベクトルが、現ブロックＣＢの動きベクトル（1/2pel動きベクトル）となる。
【０１２４】
さらに、1/4pel探索がおこなわれた場合には、探索ブロックＳＢ１0の基準点ＯＰ１0を原点とした、最良分数ブロックＳＢ３minの基準点ＯＰ３minを示すベクトルが、現ブロックＣＢの動きベクトル（1/4pel動きベクトル）となる。
【０１２５】
なお、1/4pel探索をおこなわなかった場合に、整数動きベクトルあるいは1/2pel動きベクトルを1/4pel単位に変換して、1/4pel動きベクトルとしてもよい。
【０１２６】
ベクトル算出部１７８は算出した動きベクトルを、例えば、動き補償部１８０に出力する（ステップＳ１０３）。動き補償部１８０では、動き検出部１７０から出力された動きベクトルに基づいて動き補償し、予測ブロックが作成される。そして、予測ブロックと現マクロブロックとの差分のみが符号化部１３０で符号化されて、符号化ビットストリームとして出力される。
【０１２７】
ここで、現在指定されている現ブロックＣＢ以降のブロックが現フレーム上に存在する場合、すなわち、現フレームにおける全マクロブロックについての動きベクトル検出処理が終了していない場合（ステップＳ１０４：Ｎｏ）、整数探索部１７１により次の符号化対象ブロックが指定される（ステップＳ１０１）。
【０１２８】
一方、現フレーム上の全てのマクロブロックの動きベクトルが検出されると（ステップＳ１０４：Ｙｅｓ）、「動きベクトル検出処理」を終了する。
【０１２９】
以上説明したように、上記実施形態１にかかる動き検出部１７０によれば、整数探索の次に1/2pel探索をおこなうことで動き補償が改善されるか否かを判定し、改善される場合には1/2pel探索を実行する。さらに、1/2pel探索の次に1/4pel探索をおこなうことで動き補償が改善されるか否かを判定し、改善される場合には1/4pel探索を実行する。また、整数探索の次に1/2pel探索をおこなっても動き補償が改善されないと判定した場合には、整数探索の次に1/4pel探索をおこなうことで動き補償が改善されるか否かを判定し、改善される場合には、整数探索の次に1/2pel探索をおこなわず、1/4pel探索を実行する。
【０１３０】
これにより、動き補償が改善される場合にのみ、1/2pel探索、及び／又は、1/4pel探索を実行するので、一律に「整数探索→1/2pel探索→1/4pel探索」とすべての探索精度で探索する場合に比べ、全体としての演算量を減少させることができる。また、動き補償が改善される探索精度でのみ探索するので、画質を低下させることなく演算量を削減することができる。その結果、動画像の符号化処理に要する処理時間や消費電力量を削減することができる。
【０１３１】
上記実施形態１では、符号化対象として指定されたブロック（現ブロック）を探索中心として整数探索をおこない、この結果得られた最良整数位置を分数探索の探索中心としたが、例えば、H.264で用いられるようなメディアン予測ベクトル等によりオフセットした点を探索中心としてもよい。その場合は画素補間を行う周囲マクロブロックもオフセットされる。
【０１３２】
（実施形態２）
上記実施形態１における動きベクトル検出よりも高速な動作を容易に実現するための実施例を以下説明する。本実施形態にかかる動き検出部１７０は、例えば、H.264で用いられるようなメディアン予測ベクトルに基づいて、いずれの探索精度で探索するかを判定するものとする。
【０１３３】
本実施形態にかかる動き検出部１７０の構成を図１４を参照して説明する。本実施形態にかかる動き検出部１７０は、図示するように、実施形態１にかかる動き検出部１７０の構成に、予測ベクトル処理部１７９を加えたものである。
【０１３４】
予測ベクトル処理部１７９は、予測ベクトルの算出可否を判別し、算出可能な場合、すでに算出済の動きベクトルを用いて、予測される現ブロックについての動きベクトル（予測ベクトル）を算出する。予測ベクトル処理部１７９はまた、算出した予測ベクトルを記憶する記憶領域を備えているものとする。
【０１３５】
本実施形態にかかる動き検出部１７０による動きベクトル検出動作を「動きベクトル検出処理２」とし、図１５に示すフローチャートを参照して説明する。この「動きベクトル検出処理２」は、動き検出部１７０に現フレームが入力されたことを契機に開始される。
【０１３６】
処理が開始されると、整数探索部１７１が符号化対象となるブロック（現ブロック）を指定する（ステップＳ９０１）。現ブロックを指定すると、整数探索部１７１は、指定した現ブロックのブロックアドレスを予測ベクトル処理部１７９に出力する。
【０１３７】
予測ベクトル処理部１７９は、整数探索部１７１から取得した現ブロックのブロックアドレスに基づき、当該ブロックについての予測ベクトルを算出可能であるか否かを判定する（ステップＳ９０２）。現マクロブロックが偶数行に属す場合は、予測ベクトルを算出不可とする。奇数行に属す場合は算出可能とする。以下で述べる処理により、動きベクトルの精度が伝播するので、定期的に精度をリセットする目的である。なお、定期的に精度をリセットする方法は上述のものに限るものではなく、例えば、偶数行目の偶数番目ブロックと奇数行目の奇数番目ブロックについては予測ベクトルを算出不可とし、残りのブロックは予測ベクトルを算出可とする、などの方法でも良い。
【０１３８】
予測ベクトルが算出可能である場合（ステップＳ９０２：Ｙｅｓ）、予測ベクトル処理部１７９は、現ブロックについての予測ベクトルを算出する（ステップＳ９０３）。ここでは、H.264におけるメディアン予測ベクトルの算出方法などに基づいて予測ベクトルを算出する。すなわち、現ブロックの周囲に隣接するブロックのうち、既に動きベクトルが算出されている３つのブロックの動きベクトルのメディアンを予測ベクトルとする。本実施形態では、１／４画素単位で予測ベクトルを算出するものとする。すなわち、分母を４とした分数で予測ベクトルを表す。例えば、１整数画素分のベクトルは「４／４」と表し、１／２画素分のベクトルは「２／４」と表し、１／４画素分のベクトルは「１／４」と表す。
【０１３９】
次に予測ベクトル処理部１７９は、算出した予測ベクトルの分子部分を４で除算し、割り切れるか否かを判別する（ステップＳ９０４）。ここで、予測ベクトルの分子が４で割り切れる場合（ステップＳ９０４：Ｙｅｓ）、予測ベクトル処理部１７９は、当該予測ベクトルは整数画素単位であると判定する。これは、整数単位のベクトルを１／４画素単位で表した場合、分子は４の倍数になるためである。
【０１４０】
この場合、現ブロックの周囲で現ブロックとの相関が高いブロックで算出された動きベクトルは「整数動きベクトル」ということになる。これは、当該ブロックにおいては、整数探索によって動きベクトルが検出されたことを示す。
【０１４１】
本実施形態では、現ブロックとの相関が高い周囲ブロックで行われた探索の探索精度と同じ探索精度で探索をおこなうことで、処理数を削減して処理時間の短縮を図る。したがって、予測ベクトルが整数画素単位であると判定された場合、予測ベクトル処理部１７９は、現ブロックについての探索を「整数探索のみ」とし、その旨を示す探索精度情報と、算出した予測ベクトルを整数探索部１７１に出力する。
【０１４２】
整数探索部１７１は、予測ベクトル処理部１７９から取得した予測ベクトルに基づいた整数探索を実行する（ステップＳ９０５）。ここでは、予測ベクトルが示す位置を探索中心として整数探索をおこない、現ブロックＣＢとの差分が最小となる最良整数ブロックＳＢ１minを特定する。整数探索部１７１は、この最良整数ブロックＳＢ１minの位置情報をベクトル算出部１７８に出力する。
【０１４３】
ベクトル算出部１７８は、最良整数ブロックＳＢ１minの位置情報に基づいて「整数動きベクトル」を算出し、現ブロックについての動きベクトルとして動き補償部１８０に出力して（ステップＳ９０６）、処理を終了する。
【０１４４】
一方、予測ベクトルの分子が４で割り切れない場合（ステップＳ９０４：Ｎｏ）、予測ベクトル処理部１７９は、予測ベクトルの分子を２で除算し、割り切れるか否かを判別する（ステップＳ９０７）。
【０１４５】
予測ベクトルの分子が２で割り切れる場合（ステップＳ９０７：Ｙｅｓ）、予測ベクトル処理部１７９は、当該予測ベクトルは1/2pel単位であると判定する。これは、1/2pel単位のベクトルを１／４画素単位で表した場合、分子は２の倍数（４の倍数を除く）になるためである。
【０１４６】
この場合、現ブロックの周囲で現ブロックとの相関が高いブロックで算出された動きベクトルは「1/2pel動きベクトル」ということになるので、当該ブロックにおいては、1/2pel探索によって動きベクトルが検出されたことになる。
【０１４７】
したがって、予測ベクトル処理部１７９は、現ブロックでおこなう探索を「整数探索＋1/2pel探索」とし、その旨を示す探索精度情報と算出した予測ベクトルを整数探索部１７１に出力する。
【０１４８】
この場合、整数探索部１７１が、予測ベクトル処理部１７９から取得した予測ベクトルに基づいて整数探索をおこなって（ステップＳ９０８）、最良整数ブロックＳＢ１minを特定する。整数探索部１７１は特定した最良整数ブロックＳＢ１minの位置情報と探索精度情報を分数探索設定部１７４に出力する。
【０１４９】
分数探索設定部１７４は、最良整数ブロックＳＢ１minを探索中心とした1/2pel探索を設定し、画素補間部１７５および分数探索部１７７の協働により1/2pel探索が実行される（ステップＳ９０９）。すなわち、画素補間部１７５が１／２画素補間をおこない、分数探索部１７７が１／２画素単位で探索することで、1/2pel単位の最良分数ブロックＳＢ２minを特定する。分数探索部１７７は、最良分数ブロックＳＢ２minの位置情報をベクトル算出部１７８に出力する
【０１５０】
ベクトル算出部１７８は、分数探索部１７７から取得した位置情報に基づいて「1/2pel動きベクトル」を算出し、現ブロックについての動きベクトルとして動き補償部１８０に出力して（ステップＳ９１０）、処理を終了する。
【０１５１】
さらに、予測ベクトルの分子が４でも２でも割り切れない場合（ステップＳ９０４：Ｎｏ、Ｓ９０７：Ｎｏ）、予測ベクトル処理部１７９は、当該予測ベクトルは1/4pel単位であると判定する。これは、1/4pel単位のベクトルを１／４画素単位で表した場合、分子は奇数になるためである。
【０１５２】
この場合、現ブロックの周囲で現ブロックとの相関が高いブロックで算出された動きベクトルは「1/4pel動きベクトル」ということになるので、当該ブロックにおいては、1/4pel探索によって動きベクトルが検出されたことになる。
【０１５３】
したがって、予測ベクトル処理部１７９は、現ブロックでおこなう探索を「整数探索＋1/2pel探索＋1/4pel探索」とし、その旨を示す探索精度情報と算出した予測ベクトルを整数探索部１７１に出力する。
【０１５４】
この場合、整数探索部１７１が整数探索をおこなって（ステップＳ９１１）、最良整数ブロックＳＢ１minを特定する。そして、分数探索部１７７が最良整数ブロックＳＢ１minを探索中心とした1/2pel探索をおこなって（ステップＳ９１２）、1/2pel単位の最良分数ブロックＳＢ２minを特定する。さらに、分数探索部１７７は、特定した最良分数ブロックＳＢ２minを探索中心とした1/4pel探索をおこない（ステップＳ９１３）、1/4pel単位の最良分数ブロックＳＢ３minを特定する。
【０１５５】
分数探索部１７７は、特定した最良分数ブロックＳＢ３minの位置情報をベクトル算出部１７８に出力する。ベクトル算出部１７８は、最良分数ブロックＳＢ３minの位置情報に基づいて「1/4pel動きベクトル」を算出し、現ブロックＣＢの動きベクトルとして動き補償部１８０に出力して（ステップＳ９１４）、処理を終了する。
【０１５６】
なお、予測ベクトルが算出できない場合（ステップＳ９０２：Ｎｏ）は、すべての探索精度で探索して「1/4pel動きベクトル」を算出する（ステップＳ９１１、Ｓ９１２、Ｓ９１３）。この場合は、現ブロックに対応する参照フレーム上のブロック（探索ブロックＳＢ１0）を探索中心として整数探索がおこなわれる。
【０１５７】
以上説明したように、本実施形態にかかる動き検出部１７０によれば、算出した予測ベクトルを用いた単純な演算により、実行する探索精度を決定するので、簡易な動作で高速に動きベクトルを検出することができる。
【０１５８】
なお、実行する探索精度は、予測ベクトルと同じ探索精度までではなく、例えば、予測ベクトル精度の１段階上の精度まで段階的に探索を行うようにしてもよい。例えば、整数精度であれば1/2精度まで、1/2精度以上であれば1/4精度まで行うとする。この場合、精度をリセットする処理はおこなわなくてもよい。
【０１５９】
以上説明したように、上記各実施形態にかかる動き検出部１７０によれば、例えば、「整数探索→1/2pel探索→1/4pel探索」の順で探索する「多段探索」で動きベクトルを検出する場合に、動き補償を改善する探索精度で選択的に分数探索をおこなうので、動き補償の改善に効果のない探索精度での探索動作を省略することができる。この結果、全体としての処理量を削減でき、処理時間の短縮や消費電力の削減等を図ることができる。また、動き補償の改善に効果のある探索精度でのみ探索をおこなうので、画質を損なうことなく処理量を削減させることができる。
【０１６０】
なお、上記各実施形態にかかる動き検出部１７０の機能をソフトウェア処理によって実現してもよい。この場合、例えば、パーソナルコンピュータや動画像記録再生装置などの汎用装置で、これらの機能を実現するためのプログラムを実行することで、動き検出部１７０の機能を実現することができる。
【０１６１】
すなわち、汎用装置の記憶部に当該プログラムをインストールし、ＣＰＵなどの制御部がプログラムを実行する。この場合、以下のような機能を実現させるプログラムを実行することで、汎用装置を本発明の実施形態にかかる動き検出部１７０として機能させることができる。
（１）「予測ベクトル算出機能」：既に算出済の動きベクトルに基づいて、現ブロックについての動きベクトルを予測ベクトルとして算出する機能
（２）「整数探索機能」：予測ベクトルが示す位置もしくは現ブロックを探索中心として整数画素単位で探索し、現ブロックとの差分が最小となる整数位置（最良整数位置）を検出する機能
（３）「整数偏差算出機能」：最良整数位置の評価値と、最良整数位置の近傍周囲における評価値の最大値と、を用いて最良整数位置付近での評価値の偏差（整数偏差）を算出する機能
（４）「1/2pel探索判定機能」：整数偏差に基づいて、1/2pel探索の実行要否を判定する機能
（５）「1/2pel探索機能」：判定に応じて1/2pel探索を実行し、1/2pel単位で現ブロックとの差分が最小となる分数位置（最良分数位置（1/2pel））を検出する機能
（６）「分数偏差算出機能」：最良分数位置（1/2pel）の評価値と、最良分数位置（1/2pel）の近傍周囲における評価値の最大値と、を用いて最良分数位置（1/2pel）付近での評価値の偏差（分数偏差）を算出する機能
（７）「高周波評価機能」：現ブロックの高周波成分と、最良整数位置の高周波成分とを比較して評価する機能
（８）「1/4pel探索判定処理」：分数偏差あるいは高周波成分の評価に応じて、1/4pel探索の実行要否を判定する機能
（９）：「1/4pel探索機能」：判定に応じて1/4pel探索を実行し、1/4pel単位で現ブロックとの差分が最小となる分数位置（最良分数位置（1/4pel））を検出する機能
（１０）「動きベクトル算出機能」：最良整数位置、最良分数位置（1/2pel）、最良分数位置（1/4pel）に基づいて、現ブロックでの動きベクトルを算出する機能
（１１）「探索精度判定機能」：予測ベクトルに基づいて、現ブロックとの相関が高いブロックで採用された探索精度を判定し、現ブロックにおける探索精度とする機能
【０１６２】
上記機能を実現するプログラムを汎用装置で実行した場合、ＣＰＵなどの制御装置が、整数探索部１７１、最良整数位置判定部１７２、周囲整数位置評価部１７３、分数探索設定部１７４、画素補間部１７５、分数探索部１７７、ベクトル算出部１７８、予測ベクトル処理部１７９などとして機能し、例えば、主記憶装置や外部記憶装置などの記憶装置が、補間画素バッファ１７６やその他の記憶領域として機能することとなる。
【０１６３】
これらのプログラムは、汎用装置等に予め組み込んで提供することができる他、プログラム自体を独立して提供してもよい。この場合のプログラムの配布方法は任意であり、例えば、CD-ROMやメモリカードなどの記録媒体に格納して配布可能であることはもとより、例えば、インターネットなどの通信媒体を介して配布してもよい。そして、配布されたプログラムを汎用コンピュータ装置等にインストールし、ＯＳ（Operation System：基本ソフトウェア）との協働などによって実行することで、上記動き検出部１７０の機能を実現することができる。
【０１６４】
また、本発明にかかる機能を実現するためのプログラムは、動画像の符号化をおこなうための既存のプログラムとの協働により動作するようにしてもよい。すなわち、既存の動画像符号化プログラムに対する、いわゆるアップデートプログラムとして提供することで、既存の動画像符号化処理に上記のような動き検出動作を追加し、処理の高速化を図ることができる。
【０１６５】
上記各実施形態の記載は、本発明を適用するための一例であり、本発明の範囲は上記各実施形態によって限定されるものではない。すなわち、上記実施形態以外の種々の形態で本発明が適用されてもよく、それらは本発明の範囲に含まれるものである。
【０１６６】
例えば、上記実施形態では、整数偏差および分数偏差を、最小値と最大値の差分絶対値としたが、偏差の大きさと相関が高くなるのであれば、偏差の算出方法はこれに限られない。例えば、平均値と最小値の差分絶対値や中央値と最小値の差分絶対値などであってもよい。あるいは、標準偏差や分散などであってもよい。
【０１６７】
上記実施形態における「高周波検出処理」では、アダマール変換を用いたが、高周波成分を取り出すことができるのであれば、演算方法はこれに限られず任意である。例えば、ＤＣＴ（Discrete Cosine Transform：離散コサイン変換）や自己相関関数などを用いてもよい。また、上記実施形態では、アダマール変換結果の右下三角成分を高周波評価値としたが、高周波成分の比較ができるのであれば、任意の方法で高周波評価値を算出してもよい。例えば、右下三角成分の範囲を増減させてもよい。また、右下三角成分の絶対値和を評価値としたが、例えば、非０の個数をとることで評価値としてもよい。
【０１６８】
また、上記実施形態の「高周波検出処理」では、現画像と参照画像の高周波成分の差をみることにより評価したが、現画像（現ブロック）についてのみ高周波成分を評価してもよい。この場合、例えば、絶対評価により現画像（現ブロック）の高周波成分を評価し、現ブロックで高周波成分が検出されない場合に1/4pel探索を実行する。
【０１６９】
なお、上記実施形態では、「高周波検出処理」を整数探索の次に1/4pel探索をおこなうか否かの判定に用いたが、例えば、整数探索の次に1/2pel探索をおこなうか否かの判定に用いてもよい。あるいは、1/2pel探索の次に1/4pel探索をおこなうか否かの判定に「高周波検出処理」を用いてもよい。この場合、分数探索設定部１７４は、1/2pel探索での最良分数ブロックＳＢ２minの高周波評価値を演算して、高周波成分に基づく判定をおこなう。
【０１７０】
また、上記各実施形態では、動き補償が改善するか否かの判別に、偏差および高周波成分を用いたが、動き補償の改善が判別できるのであれば、判別方法や判別要素は任意である。
【０１７１】
また、「整数探索（第１段階）→1/2pel探索（第２段階）→1/4pel探索（第３段階）」の多段探索の場合を例示したが、異なる探索精度で段階的に探索をおこなうのであれば、探索精度や段階数は任意のものであってもよい。
【０１７２】
また、上記実施形態では、最良整数ブロックの周囲８方向に隣接する周囲整数ブロックを特定したが、例えば、周囲４方向などに間引きしてもよい。これは1/2pel探索についても同様である。
【図面の簡単な説明】
【０１７３】
【図１】本発明の実施形態にかかる「符号化装置」の構成を示すブロック図である。
【図２】本発明の実施形態１にかかる「動き検出部」の構成を示すブロック図である。
【図３】図２に示す「補間画素バッファ」に記録される情報の例を示す図である。
【図４】本発明の実施形態にかかる探索動作を説明するための図であり、（ａ）は現フレームと参照フレームの対応を示す図であり、（ｂ）は符号化対象ブロックの指定順を示す図である。
【図５】本発明の実施形態１にかかる「動きベクトル検出処理１」を説明するためのフローチャートである。
【図６】図５に示す「整数探索処理」を説明するためのフローチャートである。
【図７】図５に示す「1/2pel処理」を説明するためのフローチャートである。
【図８】図５に示す「1/2pel探索処理」を説明するためのフローチャートである。
【図９】図５に示す「1/4pel処理」を説明するためのフローチャートである。
【図１０】図９に示す「高周波検出処理」を説明するためのフローチャートである。
【図１１】分数画素補間を説明するための図であり、（ａ）は１／２画素補間の例を示し、（ｂ）は１／４画素補間の例を示す。
【図１２】分数探索動作を説明するための図であり、（ａ）は1/2pel探索の探索範囲の例を示し、（ｂ）は1/4pel探索の探索範囲の例を示す。
【図１３】図１０に示す「高周波検出処理」で用いられるアダマール変換行列の例を示す図である。
【図１４】本発明の実施形態２にかかる「動き検出部」の構成を示すブロック図である。
【図１５】本発明の実施形態２にかかる「動きベクトル検出処理２」を説明するためのフローチャートである。
【符号の説明】
【０１７４】
１００…符号化装置、１１０…変換部、１２０…量子化部、１３０…符号化部、１４０…逆量子化部、１５０…逆変換部、１６０…復元画像メモリ、１７０…動き検出部、１７１…整数探索部、１７２…最良整数位置判定部、１７３…周囲整数位置評価部、１７４…分数探索設定部、１７５…画素補間部、１７６…補間画素バッファ、１７８…ベクトル算出部、１７９…予測ベクトル処理部、１８０…動き補償部
【図１】
2006067213.tif 000004
【図２】
2006067213.tif 000005
【図３】
2006067213.tif 000006
【図４】
2006067213.tif 000007
【図５】
2006067213.tif 000008
【図６】
2006067213.tif 000009
【図７】
2006067213.tif 000010
【図８】
2006067213.tif 000011
【図９】
2006067213.tif 000012
【図１０】
2006067213.tif 000013
【図１１】
2006067213.tif 000014
【図１２】
2006067213.tif 000015
【図１３】
2006067213.tif 000016
【図１４】
2006067213.tif 000017
【図１５】
2006067213.tif 000018