(57)【要約】【課題】動画像のフレームをブロックに分割し、現フレーム内の現処理対象ブロックについて、参照フレーム内で予測ブロックを順次移動させて動き補償を行う際に、動き探索範囲の画素データの更新を最小限に抑えて、より高速な動き検出処理を可能とする。【解決手段】相関度算出部１０２は、参照フレームにおける現処理対象ブロックの動き探索範囲相当の画素データを保持したサーチウィンドウバッファ１０４から、予測ブロック相当の画素データを入力し、現処理対象ブロックとの相関度を算出する。そして動きベクトル検出部１０３では、相関度算出部１０２で算出された相関度に基づき、現処理対象ブロックに対して最も高い相関を示す予測ブロックの位置により動きベクトルを決定する。サーチウィンドウバッファ１０４は、現フレーム内における直前ブロックの処理により既に保持されている、該直前ブロックに対する動き探索範囲の画素データを更新する際に、現処理対象ブロックの動き探索範囲と重複しない領域についてのみ、更新を行う。【選択図】  図１
2010016696.tif 000002
【特許請求の範囲】
【請求項１】
動画像のフレームをブロックに分割し、現フレーム内の現処理対象ブロックについて、参照フレーム内で予測ブロックを順次移動させて動き補償を行う動きベクトル探索装置であって、
前記参照フレームにおける前記現処理対象ブロックの動き探索範囲に相当する画素データを保持する動き探索範囲保持手段と、
前記動き探索範囲保持手段から前記予測ブロックに相当する画素データを入力して、前記現処理対象ブロックの画素データとの相関度を算出する相関度算出手段と、
前記相関度算出手段で算出された相関度に基づき、前記現処理対象ブロックに対して最も高い相関を示す前記予測ブロックの位置により動きベクトルを決定する動きベクトル検出手段と、を備え、
前記動き探索範囲保持手段は、前記現フレーム内における直前のブロックの処理により既に保持されている、該直前のブロックに対する動き探索範囲の画素データを更新する際に、前記現処理対象ブロックの動き探索範囲と重複しない領域について更新を行うことを特徴とする動きベクトル探索装置。
【請求項２】
前記動き探索範囲は６ｎ（ｎ＝１，２，３，・・・）個の短冊領域に分割され、
前記動き探索範囲保持手段は、それぞれが２ｎ個のアドレス空間エリアに分割される３個のバンクを有し、該アドレス空間エリアのそれぞれに、前記短冊領域のそれぞれに相当する画素データを保持することを特徴とする請求項１に記載の動きベクトル探索装置。
【請求項３】
前記動き探索範囲保持手段は、前記３個のバンクのそれぞれに、前記動き探索範囲における前記６ｎ個の短冊領域のうち、左から３ｍ番目、３ｍ＋１番目、３ｍ＋２番目（ｍ＝０，１，・・・，２ｎ−１）の短冊領域に相当する画素データを重複なく割り当てて保持することを特徴とする請求項２に記載の動きベクトル探索装置。
【請求項４】
前記現処理対象ブロックはＭ画素×Ｎ画素（Ｍ及びＮは正の偶整数）より構成され、
前記短冊領域は、それぞれが１ラインあたり(Ｍ/２)画素の幅を有することを特徴とする請求項２または３に記載の動きベクトル探索装置。
【請求項５】
前記動き探索範囲保持手段は、前記現フレーム内における直前のブロックの処理により既に保持されている、該直前のブロックに対する動き探索範囲の画素データを更新する際に、前記現処理対象ブロックの動き探索範囲と重複しない前記短冊領域について更新を行うことを特徴とする請求項２乃至４のいずれか１項に記載の動きベクトル探索装置。
【請求項６】
前記動きベクトル検出手段は、前記動き探索範囲内における前記予測ブロックの位置に基づく制御信号を、前記動き探索範囲保持手段および前記相関度算出手段に出力することを特徴とする請求項１乃至５のいずれか１項に記載の動きベクトル探索装置。
【請求項７】
前記動き探索範囲保持手段は、
前記動きベクトル検出手段から出力される前記制御信号に基いて、前記動き探索範囲に相当する画素データから前記予測ブロックに相当する画素データを読み出して出力することを特徴とする請求項６に記載の動きベクトル探索装置。
【請求項８】
動画像のフレームをブロックに分割し、現フレーム内の現処理対象ブロックについて、参照フレーム内で予測ブロックを順次移動させて動き補償を行うために、前記参照フレームにおける前記現処理対象ブロックの動き探索範囲に相当する画素データを保持する動き探索範囲保持手段を有する動きベクトル探索装置の制御方法であって、
前記現フレーム内における直前のブロックの処理によって前記動き探索範囲保持手段に既に保持されている、該直前のブロックに対する動き探索範囲の画素データを、前記現処理対象ブロックの動き探索範囲と重複しない領域について更新する更新ステップと、
前記動き探索範囲保持手段から前記予測ブロックに相当する画素データを入力して、前記現処理対象ブロックの画素データとの相関度を算出する相関度算出ステップと、
前記相関度算出ステップにおいて算出された相関度に基づき、前記現処理対象ブロックに対して最も高い相関を示す前記予測ブロックの位置により動きベクトルを決定する動きベクトル検出ステップと、
を有することを特徴とする動きベクトル探索装置の制御方法。
【請求項９】
コンピュータを請求項１乃至７のいずれか１項に記載の動きベクトル探索装置として機能させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを記録したコンピュータ可読な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル動画像における動きベクトルを探索する動きベクトル探索装置及びその制御方法に関する。
【背景技術】
【０００２】
近年、ＭＰＥＧ（Moving Picture Experts Group）の国際標準動画像符号化方式に代表されるような、動画像圧縮符号化方式が普及している。この動画像圧縮符号化方式においては、現フレームの入力信号ブロックと動き補償により得られた参照フレームの局部復号信号ブロックとのフレーム間予測誤差信号を、ＤＣＴ変換によって符号化しているため、動き補償予測符号化方式と呼ばれる。動き補償予測符号化方式においては、動画像のフレームをブロックに分割し、該ブロック単位でのマッチングを行う、所謂ブロックマッチング法により動きベクトルの探索が行なわれる。
【０００３】
ここで図２を用いて、一般的なブロックマッチング法における動きベクトル探索について説明する。
【０００４】
図２に示すように、現フレームは例えば、１６画素×１６ラインのブロックに分割され、該ブロックを処理対象ブロックとして、ブロック毎に動きベクトルを探索する。動きベクトルは、参照フレーム内において現フレームの処理対象ブロックに対応する位置にあるブロックを基準に、該基準ブロックを含む周囲の画素群を動き探索範囲として、該動き探索範囲内から、最も相関度の大きいブロックの相対位置として求める。ここで相関度とは、現フレームの処理対象ブロックと、該動き探索範囲内から現処理対象ブロックと同サイズの領域（すなわち、動き予測用の予測ブロックであり、以下、参照ブロックと称する）とをずらしながら比較することによって求める。また、相関度の測定には、ブロック内における互いに対応する位置の画素の差分絶対値和等がよく用いられ、該差分絶対値和の値が小さいほど相関が高いと評価される。
【０００５】
こうした動き検出処理を実現する従来の構成を図３に示し、図４上部に示すように処理対象ブロックのサイズを１６画素×１６画素、動き探索範囲のサイズを４８画素×４８画素として説明する。なお、一つの処理対象ブロックの動きベクトルを検出するのに、３０回の動き探索を行うものとする。
【０００６】
図３において、３０１はカレントブロックバッファであり、入力となる現フレームの入力画像情報を前記処理対象ブロック毎に保持する。
【０００７】
３０２は相関度算出部であり、選択器３０２１、減算器３０２２、絶対値和算出器３０２３、累積器３０２４、からなる。相関度算出部３０２は、カレントブロックバッファ３０１及びサーチウィンドウバッファ３０４より随時、処理対象ブロックデータ及び参照ブロックデータを入力する。そして、動きベクトル検出部３０３の出力する制御信号に基き、相関度を示す情報を動きベクトル検出部３０３へ出力する。
【０００８】
動きベクトル検出部３０３は、現フレーム内における処理対象ブロックの位置情報に基き、参照フレーム内の対応する動き探索範囲の画素データを格納するよう、制御信号をサーチウィンドウバッファ３０４へ出力する。また、動き探索範囲の中から現処理対象ブロックと同サイズの領域の位置を随時決定していき、該位置に基いてサーチウィンドウバッファ３０４及び相関度算出部３０２の制御信号を生成し、出力する。また、相関度算出部３０２の出力する相関度情報を受け、該情報に基づいて次なる参照ブロックの位置を決定し、対応する相関度情報を入力する。これらの処理を繰り返し、最も相関度が高いと判断した位置情報を基に、動きベクトルを生成して出力する。
【０００９】
サーチウィンドウバッファ３０４は、バンク＃０（３０４１）〜バンク＃２（３０４３）及びセレクタ３０４４〜３０４７からなる。サーチウィンドウバッファ３０４は、動きベクトル検出部３０３の出力する制御信号に基づいて、参照フレームメモリ３０５より所望の動き探索範囲の画素データを取り出し、格納する。また、同じく動きベクトル検出部３０３の出力する制御信号に基づいて、所望のデータを相関度算出部３０２へと出力する。
【００１０】
参照フレームメモリ３０５は、参照フレームを格納しておくためのバッファであり、現フレームに対する参照フレームが常に参照されるように、不図示の制御手段によって制御される。
【００１１】
上記図３に示した構成からなる従来の動き検出装置の動作について、さらに詳細に説明する。
【００１２】
カレントブロックバッファ３０１には、現処理対象ブロックのデータが、入力画像情報として格納される。また、該格納された現処理対象ブロックのデータは、少なくとも該現処理対象ブロックの動き検出処理が終了するまで保持され、検出処理が終了する度毎に新たな現処理対象ブロックデータが格納されるよう、制御される。
【００１３】
動きベクトル検出部３０３は、カレントブロックバッファ３０１に処理対象ブロックが格納されると、該処理対象ブロックの現フレーム内での位置情報を基に制御信号を生成し、サーチウィンドウバッファ３０４に対して該制御信号を出力する。
【００１４】
サーチウィンドウバッファ３０４は該制御信号を受けて、参照フレーム内の現処理対象ブロックの位置に対応する動き探索範囲の画素データを、参照フレームメモリ３０５より取り出し、格納する。ここでは、参照フレームメモリ３０５とサーチウィンドウバッファ３０４間のデータのバス幅が、６４ビット（８画素分相当）であるとして説明する。
【００１５】
ここで図７は、図３に示す各構成の動作を示すタイミングチャートである。図７に示されるように、サーチウィンドウバッファ３０４への格納動作には、４８画素×４８画素／８＝２８８サイクルを要する。
【００１６】
動き探索範囲の画素データのサーチウィンドウバッファ３０４への格納が終了すると（図７におけるタイミング７０１）、動きベクトル検出部３０３は動き探索を開始する。動きベクトル検出部３０３はまず、動き探索範囲のうち、所望の参照ブロックの位置を決定する。そして、該決定した位置情報を基に、サーチウィンドウバッファ３０４及び相関度算出部３０２への制御信号をそれぞれ生成し、出力する。
【００１７】
するとサーチウィンドウバッファ３０４より、上記制御情報に基づいて動き探索範囲内の参照ブロックを包含する領域のデータＴnが読み出され、相関度算出部３０２に対して出力される。図７において、サーチウィンドウバッファ３０４からの読み出しおよび相関度算出部３０２の出力の項目に示されるＴｐ（ｐ＝０，１，２，・・・，３０）は、３０回の動き探索のうちのｐ回目の動き探索であることを表している。そして、１回の動き探索に要するサーチウィンドウバッファ３０４からの読み出しには１６サイクルを要し、３０回の動き探索を行うと４８０サイクルかかる旨が示されている。
【００１８】
一方、相関度算出部３０２では、動きベクトル算出部３０３の出力する制御信号に基いて、サーチウィンドウバッファ３０４より出力される参照ブロックを包含する領域のデータから参照ブロックデータを生成する。そして、該参照ブロックデータと、カレントブロックバッファ３０１より読み出した現処理対象ブロックデータに対して、相互相関度を算出する。この相関度を表す値としては、例えば差分絶対値和を用いる。ここでは、図７の相関度算出部３０２出力の項目に示されるように、１６サイクルをかけてひとつの相関度を算出し、出力する。
【００１９】
また、相関度算出部３０２内にある絶対値和算出器３０２３出力の項目において、ＬｉｎｅＮ（Ｎ＝０，１，２，・・・，１５）は、絶対値和算出器３０２３が処理するＮ番目のブロックラインを表している。すなわち、絶対値和算出器３０２３は１サイクルにつき１ブロックラインを構成する１６画素に対応する差分絶対値和を出力し、１６サイクルかけて１ブロック分、すなわち１６ブロックライン分の差分絶対値和を出力する。
【００２０】
累積器３０２４は、絶対値和算出器３０２３が出力する１ブロックライン分の差分絶対値和データを１６サイクル分累積していき、１６サイクル目において、一回の動き探索の結果となる相関度が得られる。
【００２１】
動きベクトル検出部３０３は、相関度算出部３０２より得られた相関度に基づいて、次なる相関度評価対象となる参照ブロックの位置を決定する。
【００２２】
図３に示した構成からなる動き検出装置においては、以上のような処理によって、動きベクトルを検出する。すなわち、現フレームの処理対象ブロックと該動き探索範囲の中から、現処理対象ブロックと同サイズの領域（参照ブロック）の位置を変えながら比較していく。そして、該比較の中で最も一致していた参照ブロックの、現処理対象ブロックの位置に対する相対位置を動きベクトル情報として出力する（例えば、特許文献１参照）。
【００２３】
上述したように、現処理対象ブロックの動きベクトルを得るためには、探索アルゴリズムによっては上記相関度を何度も（図３の構成例では３０回）繰り返し行う必要がある。従ってサーチウィンドウバッファ３０４に格納されている、動き探索範囲の画素データは、動きベクトルを得るために頻繁に読み出されることになる。そのため、従来の動き検出装置では図３に示すように、そうした参照フレームの動き探索範囲に含まれる画素群は、サーチウィンドウバッファ３０４のようなローカル・メモリに一旦取り込み、該ローカル・メモリを介してアクセスする構成をとる場合が多い。
【００２４】
また、比較的速い処理速度が要求される符号化システムにおいては、上記参照フレームの動き探索範囲に含まれる画素に対するアクセスを、複数画素について同時に行うことが必要とされる。かつ無駄の少ないアクセスのためには、該動き探索範囲に含まれる画素群を格納するローカル・メモリの構成、データの格納方法、アクセスの方法等を工夫することが重要となる。
【００２５】
以下、図３に示したサーチウィンドウバッファ３０４及び相関度算出部３０２の動作について、更に詳細に説明する。
【００２６】
まず、サーチウィンドウバッファ３０４について説明する。サーチウィンドウバッファ３０４では、３０４１〜３０４３で示されるバンク＃０〜＃２により、動き探索範囲の画素データを３つのバンクに分割して対応させている。それぞれのバンク＃０〜＃２には、参照フレームメモリ３０５より入力された参照フレームデータが、制御信号に従ってそれぞれのバンクに振り分けられて格納される。
【００２７】
ここで図４に、動き探索範囲内のデータとそれぞれのバンク＃０〜＃２に格納されるデータの対応例を示す。図４上部には、動き探索範囲とその中のデータの領域、及び現処理対象ブロックに対応するブロックの位置が示されている。この４８画素×４８画素の動き探索範囲は、図示されるようにそれぞれ８画素×４８画素からなる６個の短冊領域に分割され、左よりそれぞれ、短冊領域０〜短冊領域５のように番号付けられている。これら６つの短冊領域は、図４下部に示す３つのバンク（バンク＃０〜バンク＃２）内の各領域に割り当てられる。すなわち、短冊領域０はバンク＃０の上位ビット側、短冊領域１は同じくバンク＃０の下位ビット側に、それぞれ割り当てられる。
【００２８】
短冊領域２，３，４，５についても同様に、図４下部に示されるように各バンクに割り当てられる。但し、これらの短冊領域とバンク及びバンク内での領域の割り当ての関係は、一意であればどのように設定されていてもよく、例えばバンク内の上位／下位ビット側と短冊領域の割り当てが逆であっても構わない。
【００２９】
図４に示す例の場合、それぞれのバンクに要するサイズは、一つ一つの画素サンプルが８ビットで表現されているとすると、深さ方向に４８アドレス、ビット幅が１６画素×８ビット＝１２８ビットとなる。なお、それぞれのバンクはさらに上位ビット側と下位ビット側とで分割されて、それぞれ２つのＲＡＭとして構成されてもよく、その場合のＲＡＭの個数は、３バンク×２＝６個ということになる。
【００３０】
動きベクトル検出部３０３より、図４上部に示されるような位置に参照ブロックが決定されたとすると、該参照ブロックが全て含まれる領域として、各バンクより実際に読み出される領域は、同図上部の網掛けが施された領域となる。すなわち、バンク＃０及び＃１における、対応するアドレスに対してアクセスされることになる。例えば、同図上部の上方からアドレスを昇順に割り当て、該網掛けの領域がアドレス２４〜３９番地に対応するとすると、各バンク＃０〜＃２のアドレスは２４〜３９番地まで順次インクリメントされ、対応するデータが順次読み出される。
【００３１】
各バンク＃０〜＃２から読み出されたデータは、それぞれ上位／下位ビット側に分割されてセレクタ３０４４〜３０４７によって選択されることにより、参照ブロックデータとして出力される。すなわち、参照ブロックを構成するために必要な領域のデータが、参照ブロックの動き探索範囲内における位置に応じて、短冊領域０〜３、短冊領域１〜４、短冊領域２〜５、のいずれか一つに決定される。例えば、図４上部の網掛け領域であれば、短冊領域０〜３のデータが選択され、出力される。このようにサーチウィンドウバッファ３０４からは、一つの参照ブロックのデータに対応するデータが、３２画素ずつ１６サイクルで読み出されることになる。
【００３２】
次に、相関度算出部３０２について説明する。上述したように、サーチウィンドウバッファ３０４から、参照ブロックに対応する３２画素のデータが入力される。するとまず選択器３０２１において、動きベクトル検出部３０３より出力された制御信号に基き、参照ブロックに含まれる１６画素が選択される。例えば、図４上部に示される参照ブロックであれば、対応する位置の２５６画素が１６サイクルかけて選択される。一方、該参照ブロックデータの入力タイミングにあわせて、カレントブロックバッファ３０１より現処理対象ブロックの読み出しが行われ、減算器３０２２によって、該参照ブロックデータとカレントブロックデータとの差分を得る。この差分値としては、１６画素分が並列に得られる。
【００３３】
該１６個の差分値は、絶対値和算出器３０２３によって絶対値化された後に総和がとられ、差分絶対値和として出力される。該差分絶対値和は、累積器３０２４によって１６ライン分が累積加算され、相関度として出力される。
【００３４】
以上の様に図３の構成からなる従来の動き検出装置においては、一つの処理対象ブロックの動き検出処理として、探索範囲書き込み処理に２８８サイクル、動き探索処理に４８０サイクル、計７６８サイクルかかっていた。
【特許文献１】特開平１１−１１３００３号公報
【発明の開示】
【発明が解決しようとする課題】
【００３５】
ここで図６に、上記従来例において、現処理対象ブロックとその一つ前の位置の処理対象ブロックのそれぞれに対応する動き探索範囲を表す。同図において、６０１は現処理対象ブロックの動き探索には必要とされない範囲を示し、６０２は一つ前の処理対象ブロック及び現処理対象ブロックに共通して必要とされる範囲を示し、また６０３は新たに追加された範囲を示す。上記従来例では、処理対象ブロックの動き探索の際に、サーチウィンドウバッファ３０４に対し、図６の範囲６０２に示す範囲の画素データを格納していた個所も含めて、現処理対象ブロックに対応する動き探索範囲の画素データ全てを格納し直していた。
【００３６】
このように上記従来の動き検出装置においては、処理対象ブロックの動き探索を行う際に、動き探索範囲のデータを参照フレームメモリより毎回、サーチウィンドウバッファ３０４の所定の領域に格納していた。したがって、図６の範囲６０２のように、本来書き換える必要のない重複領域でも書き込みを行う必要があったため、冗長なバンク（ＲＡＭ）アクセスが発生していた。
【００３７】
また、サーチウィンドウバッファ３０４を上述したように３バンク構成にし、各アドレスに１６画素分のデータを格納するため、各バンクのビット幅が１２８ビットと大きくなってしまう。このサイズは、実際の物理的形状としてはアスペクト比が極端に横長になってしまうため、シリコンチップ内で配置配線を行う際に形状から受ける制約が大きくなってしまう。
【００３８】
また、この形状による制約を防ぐために、例えば各バンクをさらに上位／下位ビットで分割し、計６バンク構成にした場合には、必要なＲＡＭの個数が２倍となり、これもレイアウト上配線不可領域が増加するため、好ましくない。
【００３９】
また、形状による制約を防ぐ他の方法として、読み出しポートを複数備えたＲＡＭを使用して、例えば上位ビット側のデータと下位ビット側のデータを別アドレスに格納し、両方を該複数の読み出しポートから同時に読む、という構成が考えられる。しかし一般に、こうした複数読み出し可能なポートを有する所謂デュアル・ポートＲＡＭのサイズは、シングル・ポートＲＡＭのサイズに比べて大きいという欠点がある。また、半導体ベンダによってはこうした複数読み出し可能なＲＡＭのライブラリを有していない場合もあり、ポータビリティという点で不利となる。
【００４０】
本発明は上述した問題を解決するためになされたものであり、動き探索範囲の画素データの更新を最小限に抑えることにより、より高速な動き検出処理を可能とする動き検出装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【００４１】
上記目的を達成するための一手段として、本発明の動き検出装置は以下の構成を有する。すなわち、動画像のフレームをブロックに分割し、現フレーム内の現処理対象ブロックについて、参照フレーム内で予測ブロックを順次移動させて動き補償を行う動きベクトル探索装置であって、前記参照フレームにおける前記現処理対象ブロックの動き探索範囲に相当する画素データを保持する動き探索範囲保持手段と、前記動き探索範囲保持手段から前記予測ブロックに相当する画素データを入力して、前記現処理対象ブロックの画素データとの相関度を算出する相関度算出手段と、前記相関度算出手段で算出された相関度に基づき、前記現処理対象ブロックに対して最も高い相関を示す前記予測ブロックの位置により動きベクトルを決定する動きベクトル検出手段と、を備え、前記動き探索範囲保持手段は、前記現フレーム内における直前のブロックの処理により既に保持されている、該直前のブロックに対する動き探索範囲の画素データを更新する際に、前記現処理対象ブロックの動き探索範囲と重複しない領域について更新を行うことを特徴とする。
【発明の効果】
【００４２】
上記構成からなる本発明によれば、動き探索範囲の画素データの更新を最小限に抑えることにより、より高速な動き検出処理が可能となる。
【発明を実施するための最良の形態】
【００４３】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００４４】
＜第１実施形態＞
●システム構成
図１は、本実施形態における動きベクトル探索装置の構成を示すブロック図である。本実施形態の動きベクトル探索装置は、動画像のフレームをブロックに分割し、現フレーム内の現処理対象ブロックについて、参照フレーム内で予測ブロックを順次移動させて動き補償を行う。本発実施形態においても上記従来例と同様に、処理対象ブロックのサイズを１６画素×１６画素、動き探索範囲のサイズを４８画素×４８画素とする。また、一つの処理対象ブロックの動きベクトルを検出するのに、３０回の動き探索を行うものとする。
【００４５】
図１において、１０１はカレントブロックバッファであり、入力となる現フレームの入力画像情報を、上述した処理対象ブロック毎に保持する。
【００４６】
３０２は相関度算出部であり、カレントブロックバッファ１０１及び後述するサーチウィンドウバッファ１０４より随時、現処理対象ブロックのデータ及び、予測ブロックのデータを入力する。以下、予測ブロックを参照ブロックと称する。そして、動きベクトル検出部１０３の出力する制御信号に基き、相関度を示す情報を動きベクトル検出部１０３へ出力する。
【００４７】
動きベクトル検出部１０３は、現フレーム内における処理対象ブロックの位置情報に基き、参照フレーム内の対応する動き探索範囲の画素データを格納するよう、制御信号をサーチウィンドウバッファ１０４へ出力する。また、動き探索範囲の中から現処理対象ブロックと同サイズの領域の位置を決定していき、該位置に基いてサーチウィンドウバッファ１０４及び相関度算出部１０２の制御信号を生成し、出力する。また、相関度算出部１０２の出力する相関度情報を受け、該情報に基づいて次なる参照ブロックの位置を決定し、対応する相関度情報を入力する。これらの処理を繰り返し、最も相関度が高いと判断した位置情報を基に、動きベクトルを決定して出力する。
【００４８】
サーチウィンドウバッファ１０４は、本実施形態における動き探索範囲保持手段として機能し、動きベクトル検出部１０３の出力する制御信号に基づいて、参照フレームメモリ１０５より適切な動き探索範囲の画素データを抽出し、格納する。また、同じく動きベクトル検出部１０３の出力する制御信号に基づいて、参照フレーム内の予測ブロックに相当する、参照ブロックに対応する画素データを相関度算出部１０２へと出力する。
【００４９】
参照フレームメモリ１０５は参照フレームを格納しておくためのバッファであり、現フレームに対する参照フレームが常に参照されるように、不図示の制御手段によって制御される。
【００５０】
●動きベクトル検出処理（概要）
上記図１に示した構成からなる本実施形態の動きベクトル検出装置の動作について、さらに詳細に説明する。
【００５１】
カレントブロックバッファ１０１には、現処理対象ブロックのデータが、入力画像情報として格納される。また、該格納された現処理対象ブロックのデータは、少なくとも該現処理対象ブロックの動き検出処理が終了するまで保持され、検出処理が終了する度毎に新たな現処理対象ブロックデータが格納されるよう、制御される。
【００５２】
動きベクトル検出部１０３は、カレントブロックバッファ１０１に処理対象ブロックが格納されると、該処理対象ブロックの現フレーム内での位置情報を基に制御信号を生成し、サーチウィンドウバッファ１０４に対して該制御信号を出力する。
【００５３】
サーチウィンドウバッファ１０４は該制御信号を受けて、参照フレーム内の現処理対象ブロックの位置に対応する動き探索範囲の画素データを、参照フレームメモリ１０５より取り出し、格納する。ここでは、参照フレームメモリ１０５とサーチウィンドウバッファ１０４間のデータのバス幅が、６４ビット（８画素分相当）であるとして説明する。本実施形態では、このサーチウィンドウバッファ１０４に、以前に処理した処理対象ブロックの動き探索範囲の画素データが残っていた場合に、その更新を以下のように効率的に行うことを特徴とする。すなわち、現処理対象ブロックの動き探索範囲の画素データがサーチウィンドウバッファ１０４の残留データと重複している場合、重複分の更新は行わず、新たに追加された範囲の画素データのみを格納するように制御する。
【００５４】
ここで、本実施形態におけるサーチウィンドウバッファ１０４の更新について、図６を用いて詳細に説明する。図６は、参照フレーム内における現処理対象ブロックの動き探索範囲の遷移例を示している。まず、サーチウィンドウバッファ１０４には図６に示すように、一つ前に処理したブロックに対応する画素探索範囲、すなわち領域６０１，６０２に対応する範囲の画素データが格納されているとする。これに対し、現処理対象ブロックに対応する動き探索範囲は領域６０２，６０３に対応するから、サーチウィンドウバッファ１０４では、一つ前の処理対象ブロックと現処理対象ブロックとでは、範囲６０２相当の画素データについて重複することが分かる。したがってこの場合、サーチウィンドウバッファ１０４においては一つ前の処理対象ブロックで用いた範囲６０１の画素データは不要となり、新たに追加された範囲６０３の画素データが必要となる。従って本実施形態のサーチウィンドウバッファ１０４においては、範囲６０１相当の画素データ（１６画素×４８画素）が格納されたエリアに、範囲６０３相当の画素データを上書きするよう、制御される。すなわち、本実施形態におけるサーチウィンドウバッファ１０４の更新は、現処理対象ブロックに対する動き探索範囲（４８画素×４８画素）のうち、その１／３（１６画素×４８画素）のみについて行われるため、格納に要する処理時間が短縮される。なお、サーチウィンドウバッファ１０４への格納処理の詳細については後述する。
【００５５】
ここで図８に、図１に示す本実施形態の各構成の動作を示すタイミングチャートを示す。図８に示されるように、上記効率的な制御を行うサーチウィンドウバッファ１０４への格納動作には、上述したようにデータのバス幅が６４ビット（８画素分相当）であるため、１６画素×４８画素／８＝９６サイクルを要する。
【００５６】
動き探索範囲の画素データのサーチウィンドウバッファ１０４への格納が終了すると（図８におけるタイミング８０１）、動きベクトル検出部１０３は動き探索を開始する。動きベクトル検出部１０３はまず、動き探索範囲のうち、所望の参照ブロックの位置を決定する。そして、該決定した位置情報を基に、サーチウィンドウバッファ１０４及び相関度算出部１０２への制御信号をそれぞれ生成し、出力する。
【００５７】
するとサーチウィンドウバッファ１０４より、上記制御情報に基づいて動き探索範囲内の参照ブロックを包含する領域のデータＴnが読み出され、相関度算出部１０２に対して出力される。
【００５８】
図８において、サーチウィンドウバッファ１０４からの読み出しおよび相関度算出部１０２の出力の項目に示されるＴｐ（ｎ＝０，１，２，・・・，３０）は、３０回の動き探索のうちのｐ回目の動き探索であることを表している。そして、１回の動き探索に要するサーチウィンドウバッファ１０４からの読み出しには１６サイクルを要し、３０回の動き探索を行うと４８０サイクルかかる旨が示されている。
【００５９】
一方、相関度算出部１０２では、動きベクトル算出部１０３の出力する制御信号に基いて、サーチウィンドウバッファ１０４より出力される参照ブロックを包含する領域のデータから参照ブロックデータを生成する。そして、該参照ブロックデータと、カレントブロックバッファ１０１より読み出した現処理対象ブロックデータに対して、相互相関度を算出する。本実施形態においては、この相関度を表す値として差分絶対値和を用いる。本実施形態では、図８の相関度算出部１０２出力の項目に示されるように、１６サイクルをかけて一つの相関度を算出し、出力する。
【００６０】
また、相関度算出部１０２内にある絶対値和算出器１０２３出力の項目において、ＬｉｎｅＮ（Ｎ＝０，１，２，・・・，１５）は、絶対値和算出器１０２３が処理するＮ番目のブロックラインを表している。すなわち、絶対値和算出器１０２３は１サイクルにつき１ブロックラインを構成する１６画素に対応する差分絶対値和を出力し、１６サイクルかけて１ブロック分、すなわち１６ブロックライン分の差分絶対値和を出力する。
【００６１】
累積器１０２４は、絶対値和算出器１０２３が出力する１ブロックライン分の差分絶対値和データを１６サイクル分累積していき、１６サイクル目において、一回の動き探索の結果となる相関度が得られる。
【００６２】
動きベクトル検出部１０３は、相関度算出部１０２より得られた相関度に基づいて、次なる相関度評価対象となる参照ブロックの位置を決定する。
【００６３】
本実施形態の動き検出装置においては、以上のような処理によって、動きベクトルを検出する。すなわち、現フレームの処理対象ブロックを、その動き探索範囲内で現処理対象ブロックと同サイズの領域（参照ブロック）の位置を変えながら比較していく。そして、該比較の中で最も一致していた参照ブロックの、現処理対象ブロックの位置に対する相対位置を、動きベクトル情報として出力する。
【００６４】
●サーチウィンドウバッファ１０４詳細
以下、本実施形態におけるサーチウィンドウバッファ１０４に対する画素データの格納および読み出し処理について、詳細に説明する。
【００６５】
まず、サーチウィンドウバッファ１０４に対する格納処理について説明する。
【００６６】
サーチウィンドウバッファ１０４において、１０４１〜１０４３はバンク＃０〜＃２であり、動き探索範囲の画素データを該３つのバンクに分割して対応させている。それぞれのバンク＃０〜＃２には、参照フレームメモリ１０５より入力された参照フレームデータが、制御信号に従ってそれぞれのバンクに振り分けられて格納される。
【００６７】
ここで図５に、本実施形態における動き探索範囲内のデータと、各バンク＃０〜＃２への格納データの対応例を示す。図５上部には、動き探索範囲とその中のデータの領域、及び現処理対象ブロックに対応するブロックの位置が示されている。本実施形態においては図５に示すように、処理対象ブロックのサイズを１６画素×１６画素とし、動き探索範囲のサイズを４８画素×４８画素とする。また、各画素値は８ビット表現されるものとして、以下説明する。
【００６８】
本実施形態における４８画素×４８画素の動き探索範囲は、図５上部に示すように８画素×４８画素からなる６個の短冊領域に分割され、該分割された短冊領域を左よりそれぞれ、短冊領域０〜短冊領域５として番号を付しておく。これら６つの短冊領域は、３つのバンク＃０〜＃２にそれぞれ割り当てられる。この割り当て方法の詳細については後述するが、水平方向に連続する３つの短冊領域が、互いに異なるバンクに割り当てられるように制御される。このような割り当てにより、探索に必要な参照ブロックのデータを読み出す際に、水平方向に連続する３つの短冊領域に対して同時にアクセスして、同時にデータを読み出すことが可能となるからである。
【００６９】
本実施形態では、図５下部に示すように３つのバンク＃０〜＃２は、そのアドレス空間エリアを２個（アドレス空間エリア＃０，＃１）に分け、６つの短冊領域は、各バンクの各アドレス空間エリアに割り当てられる。なお、各バンクにおけるアドレス空間エリアの分割数は偶数個であれば良く、本実施形態のように画素値が８ビット表現であれば、２分割となる。
【００７０】
本実施形態では、図５下部に示すように、３つのバンク＃０〜＃２の各アドレス空間エリア＃０，＃１に対し、ブロックデータの格納を割り当てるパターンとして、Ｐattern０〜２までの計３種類を設ける。例えば短冊領域０は、Ｐattern０，Ｐattern１，Ｐattern２としてそれぞれ、バンク＃０のアドレス空間エリア＃０，バンク＃２のアドレス空間エリア＃０，バンク＃１のアドレス空間エリア＃１、へと割り当てられる。他の短冊領域１〜５についても同様に、図５下部に示したような割り当てパターンが設定される。
【００７１】
以下、本実施形態における各バンクへの割り当てパターンについて詳細に説明する。
【００７２】
例えば、現フレーム内におけるある位置のブロックを処理しようとする際に、各バンク＃０〜＃２には一つ前の処理対象ブロックの動き検出を行う際に用いた、参照フレームの動き探索範囲データが、Ｐattern０で格納されているとする。
【００７３】
ここで、現処理対象ブロックがフレーム端部付近に位置していない限り、前回処理した処理対象ブロックとの位置関係は、互いに水平方向に隣り合っている。従って図５上部に示される動き探索範囲のデータのうち、短冊領域０及び１の領域以外は重複することになる。該重複範囲はすなわち、図６に示す範囲６０２に相当する。従って、他の短冊領域２，３，４、及び５が格納されていたアドレス空間エリアについては更新の必要はなく、短冊領域０及び１が格納されていたアドレス空間エリアのみ、次なる動き探索範囲の短冊領域４及び５の画素データに置き換えればよい。
【００７４】
すなわちこの場合はＰattern０で格納されているため、短冊領域０及び１が格納されていたバンク＃０のアドレス空間エリア＃０及びバンク＃１のアドレス空間エリア＃０が、現処理ブロックにおける短冊領域４及び５の画素データで上書きされる。なお、前回処理したブロックに対応する短冊領域２〜５はそれぞれ、現処理対象ブロックに対応する短冊領域０〜３に相当する。したがって、現処理ブロックにおける短冊領域４及び５を格納した結果、各バンク＃０〜＃２の状態としてはＰattern１に移行したことになる。
【００７５】
同様に、その次の処理対象ブロックに用いる参照フレームの動き探索範囲は、短冊領域０及び１以外は更新不要となる。すなわち、Ｐattern１における短冊領域０及び１が格納されているアドレス空間エリアは、それぞれバンク＃２のアドレス空間エリア＃０及びバンク０のアドレス空間エリア＃１であるので、これら２つのアドレス空間エリアが更新される。該更新により、各バンク＃０〜＃２の状態はＰattern２に移行したことになる。
【００７６】
以下同様に、更新が必要なアドレス空間エリアのみが更新され、その度にバンクの状態はＰattern０→Ｐattern１→Ｐattern２→・・・、のごとく繰り返し移行する。なお本実施形態において各バンク＃０〜＃２として必要とされるサイズは、深さ方向に４８×２＝９６アドレス、ビット幅は８画素×８ビット＝６４ビットとなる。
【００７７】
以上のように本実施形態のサーチウィンドウバッファ１０４では、１つの処理対象ブロックの動き検出を行うために、対応する動き探索範囲を新たに格納する際に、２つの短冊領域（１６画素×４８画素）分のみが更新される。したがって図８に示すように、この格納に要する期間は、参照フレームメモリ１０５とのバス幅が８ビットであるから、１６画素×４８画素／８＝９６サイクルとなる。これは、上述した図７に示す従来例では２８８サイクルかかることに比べると１／３の期間である。したがって、１つの処理対象ブロックに対する動き検索の処理時間が短縮される。
【００７８】
次に、サーチウィンドウバッファ１０４からの読み出し処理について説明する。
【００７９】
ここで動きベクトル検出部１０３において、図５上部に示されるような位置に参照ブロックが決定されたとすると、該参照ブロックが全て含まれる領域として、各バンクより実際に読み出されるデータは、図５上部で網掛けが施された領域となる。例えば、その際のバンクの状態がＰattern２であったとすると、該網掛け部分の領域は短冊領域０〜２に相当するため、バンク＃１のアドレス空間＃１、バンク＃２のアドレス空間＃１、及びバンク＃０のアドレス空間＃０、に対応する。
【００８０】
ここで各バンク＃０〜＃２に対し、アドレス空間エリア＃０，＃１を例えば、アドレス０〜４７番地，４８〜９５番地にそれぞれ割り当てるとする。そして、各アドレス空間エリア＃０，＃１には、各短冊領域のデータを図５上部に示す動き探索範囲の上方から昇順に割り当てるとする。この場合、図５上部に示す網掛け部分の領域は、それぞれ左からバンク＃１のアドレス７２〜８７番地、バンク＃２のアドレス７２〜８７番地、バンク＃０のアドレス２４〜３９番地、に対応する。従って各バンクのアドレスは、バンク＃０については２４〜３９番地、バンク＃１及び＃２については７２〜８７番地まで順次インクリメントされ、対応するデータが順次読み出される。
【００８１】
各バンク＃０〜＃２から読み出されたデータは、セレクタ１０４４〜１０４６によって、動きベクトル検出器１０３より出力された制御信号に基づいて選択される。この制御信号は、バンクの格納パターン（Ｐattern０〜３）を示すように構成され、図１に示されるように結線されることによって、各パターンに応じた選択がなされる。例えば、セレクタ１０４４では、Ｐattern０，１，２に応じてそれぞれ、バンク＃０，＃２，＃１のデータが選択されるため、信号線１０４４１には、短冊領域０または３に対応するデータが出力されることになる。同様に、セレクタ１０４５，１０４６で選択された信号が出力される信号線１０４５１，１０４６１へはそれぞれ、短冊領域１または４、短冊領域２または５、に対応するデータが出力されることになる。
【００８２】
信号線１０４４１，１０４５１，１０４６１へと出力されたデータは更に、セレクタ１０４７〜１０４９によって、動きベクトル検出器１０３より出力される制御信号に従って選択され、参照ブロックを構成するために必要な領域のデータとして出力される。ここでは、参照ブロックの動き探索範囲内における参照ブロックの位置によって、短冊領域０〜２、短冊領域１〜３、短冊領域２〜４、短冊領域３〜５、のいずれか一つの組み合わせが選択される。例えば、図５上部に示す網掛け部分の領域であれば、短冊領域０〜２のデータが選択され、出力される。該セレクタ１０４７〜１０４９への制御信号としては、短冊領域の番号に相当する信号を割り当て、それぞれに応じて信号線１０４４１，１０４５１，１０４６１から所望のデータを選択するよう、構成される。
【００８３】
以上のように本実施形態のサーチウィンドウバッファ１０４からは、一つの参照ブロックに対応するデータとして、３つの短冊領域分に相当する２４画素ずつが、１６サイクルで読み出されることになる。
【００８４】
●相関度算出部１０２詳細
次に、本実施形態における相関度算出部１０２の動作について、詳細に説明する。
【００８５】
サーチウィンドウバッファ１０４より読み出された参照ブロックデータは、まず選択器１０２１へと入力される。上述したように、サーチウィンドウバッファ１０４からは２４画素ずつのデータが入力されるが、選択器１０２１では、動きベクトル検出部１０３より出力された制御信号に基づいてそのうちの１６画素を選択する。該１６画素としてはすなわち、参照ブロックを構成する画素が選択される。例えば、図５上部に示される参照ブロックであれば、対応する位置の２５６画素が１６サイクルかけて選択される。
【００８６】
一方、参照ブロックデータの入力タイミングにあわせて、カレントブロックバッファ１０１より現処理対象ブロックの読み出しが行われ、減算器１０２２によって、該参照ブロックデータとカレントブロックデータとの差分を１６個並列に得る。該１６個の差分値は、絶対値和算出器１０２３によって絶対値化された後に総和がとられ、差分絶対値和として出力される。該差分絶対値和は、累積器１０２４によって１６ライン分が累積加算され、相関度として出力される。
【００８７】
以上説明した様に本実施形態によれば、サーチウィンドウバッファ１０４に既に保持されている、現フレーム内の直前のブロックに対する動き探索範囲の画素データを更新する際に、現処理対象ブロックの動き探索範囲と重複しない領域のみについて更新を行う。すなわちサーチウィンドウバッファ１０４において、書き換える必要のない重複領域が該当するアドレス空間エリアに対しては書き込みを行わず、更新が必要なアドレス空間エリアに対してのみ書き込みを行う。したがって、従来の構成に比べて冗長なバンク（ＲＡＭ）アクセスを省くことが可能となり、より高速な動き検出処理が可能となる。
【００８８】
また、サーチウィンドウバッファ１０４を構成する各バンクのサイズも、本実施形態では６４ビット×９６アドレスとなり、従来の図４に示すような１２８ビット×４８アドレスのサイズに比べて、物理的にレイアウト上有利な形状となる。また、サーチウィンドウバッファ１０４としては、バンクの個数を増やすことなく、かつ、デュアル・ポートＲＡＭを使用せずに実現される。したがって、サーチウィンドウバッファ１０４を装置として実装する際に、シリコンチップ上において無駄な面積を占めることがなく、ポータビリティの点においても有利となる。
【００８９】
さらに、サーチウィンドウバッファ１０４のサイズに拡張性を持たせる要求がある場合にも、バッファサイズの増加に応じて単純にＲＡＭの個数を増やすのではなく、ＲＡＭのアドレスを増やすことで容易に対応可能である。これにより、不必要なＲＡＭの個数の増加を抑え、レイアウトの際にＲＡＭ周辺の配線不可領域の増加を抑えることができる。
【００９０】
なお、本実施形態では、現処理対象ブロックを１６画素×１６画素サイズとし、その参照フレームにおける動き探索範囲を８画素×４８画素サイズの短冊領域の６個分として説明した。さらに、サーチウィンドウバッファ１０４が、それぞれが２個のアドレス空間エリアに分割される３つのバンクからなると例を示した。しかしながら、本発明の各構成はこれらの数値に限定されず、以下のように一般化して表すことができる。
【００９１】
すなわち、現処理対象ブロックはＭ画素×Ｎ画素（Ｍ及びＮは正の偶整数）より構成され、動き探索範囲は、それぞれが１ラインあたり(Ｍ/２)画素の幅を有する６ｎ（ｎ＝１，２，３，・・・）個の短冊領域に分割可能である。また、サーチウィンドウバッファ１０４は、それぞれが２ｎ個のアドレス空間エリアに分割される３個のバンクを有し、該アドレス空間エリアのそれぞれに、６ｎ個の短冊領域のそれぞれを保持する。また、サーチウィンドウバッファ１０４は、３個のバンクのそれぞれに、動き探索範囲における６ｎ個の短冊領域のうち、左から３ｍ番目、３ｍ＋１番目、３ｍ＋２番目（ｍ＝０，１，・・・，２ｎ−１）の短冊領域を重複なく割り当てて保持する。
【００９２】
＜他の実施形態＞
本発明は例えば、システム、装置、方法、プログラム若しくは記憶媒体(記録媒体)等としての実施態様をとることが可能である。具体的には、複数の機器（例えば、ホストコンピュータ、インタフェース機器、撮影装置、webアプリケーション等）から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００９３】
本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。なお、この場合のプログラムとは、実施形態において図に示したフローチャートに対応したコンピュータ可読のプログラムである。
【００９４】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００９５】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
【００９６】
プログラムを供給するための記録媒体としては、以下に示す媒体がある。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD-ROM、CD-R、CD-RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD-ROM，DVD-R)などである。
【００９７】
プログラムの供給方法としては、以下に示す方法も可能である。すなわち、クライアントコンピュータのブラウザからインターネットのホームページに接続し、そこから本発明のコンピュータプログラムそのもの(又は圧縮され自動インストール機能を含むファイル)をハードディスク等の記録媒体にダウンロードする。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【００９８】
また、本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせることも可能である。すなわち該ユーザは、その鍵情報を使用することによって暗号化されたプログラムを実行し、コンピュータにインストールさせることができる。
【００９９】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１００】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、実行されることによっても、前述した実施形態の機能が実現される。すなわち、該プログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行うことが可能である。
【図面の簡単な説明】
【０１０１】
【図１】本発明に係る一実施形態における動きベクトル探索装置の構成を示すブロック図である。
【図２】一般的なブロックマッチングによる動きベクトル探索の概念を示す図である。
【図３】従来の動きベクトル探索装置の構成を示すブロック図である。
【図４】従来の動きベクトル探索装置における、動き探索範囲とサーチウィンドウバッファのバンク構成例を示す図である。
【図５】本実施形態における、動き探索範囲とサーチウィンドウバッファのバンク構成例を示す図である。
【図６】参照フレーム内における現処理対象ブロックの動き探索範囲の遷移例を示す図である。
【図７】従来の動きベクトル探索装置におけるタイミングチャートである。
【図８】本実施形態の動きベクトル探索装置におけるタイミングチャートである。
【図１】
2010016696.tif 000003
【図２】
2010016696.tif 000004
【図３】
2010016696.tif 000005
【図４】
2010016696.tif 000006
【図５】
2010016696.tif 000007
【図６】
2010016696.tif 000008
【図７】
2010016696.tif 000009
【図８】
2010016696.tif 000010