(57)【要約】【課題】映像信号の動きベクトルを推定する際に、動きの大きい場合の動き推定の頑健性を維持しつつ、動きの小さい場合の動き推定の精度を向上させる。【解決手段】動き推定装置１は、入力映像信号から動きベクトルを推定するｎ個（ｎ≧２）の動き推定部１０と、動きベクトルに基づいてフィルタ係数を決定する（ｎ−１）個の係数制御部２０とを備える。動き推定部１０及び係数制御部２０は交互に直列に接続され、各係数制御部２０は、前段に接続された動き推定部１０から入力される動きベクトルに基づいて後段に接続される動き推定部１０のフィルタ係数を決定し、ｎ個の動き推定部のうちの最後段の動き推定部１０によって推定された動きベクトルを動き推定装置１の出力とする。【選択図】図１
2014220565.tif 000002
【特許請求の範囲】
【請求項１】
入力映像信号から動きベクトルを推定する動き推定装置であって、
入力映像信号から動きベクトルを推定するｎ個（ｎ≧２）の動き推定部と、
前記動きベクトルに基づいて畳み込み演算に用いられるフィルタ係数を決定する（ｎ−１）個の係数制御部とを備え、
前記動き推定部及び前記係数制御部は交互に直列に接続され、
各係数制御部は、前段に接続された動き推定部から入力される動きベクトルに基づいて、後段に接続される動き推定部のフィルタ係数を決定し、
前記ｎ個の動き推定部のうちの最後段の動き推定部によって推定された動きベクトルを当該動き推定装置の出力とすることを特徴とする、動き推定装置。
【請求項２】
前記動き推定部は、勾配法により動きベクトルを推定することを特徴とする、請求項１に記載の動き推定装置。
【請求項３】
前記動き推定部は、
入力信号を１クロック遅延させた１クロック遅延信号を出力する第１のシフトレジスタと、前記入力信号を１ライン遅延させた１ライン遅延信号を出力する第２のシフトレジスタと、前記入力信号を１フレーム遅延させた１フレーム遅延信号を出力する第３のシフトレジスタと、前記入力信号及び前記１クロック遅延信号の差分値ＢＸ、前記入力信号及び前記１ライン遅延信号の差分値ＢＹ、並びに前記入力信号及び前記１フレーム遅延信号の差分値Ｂｔを算出する第１の減算回路と、を有する差分演算部と、
前記Ｂｙ、Ｂｔ、及びＢｘを入力し、Ｂｙ・Ｂｔ、Ｂｘ・Ｂｙ、Ｂｘ・Ｂｔ、Ｂｙ２、及びＢｘ２をそれぞれ算出する第１の乗算回路と、
前記第１の乗算回路から入力される信号を１クロックずつ遅延させる複数の第４のシフトレジスタと、前記第１の乗算回路から入力される信号及び前記複数の第４のシフトレジスタの出力値を加算する第１の加算回路と、前記第１の加算回路から入力される信号を１ラインずつ遅延させる複数の第５のシフトレジスタと、前記第１の加算回路から入力される信号及び前記複数の第５のシフトレジスタの出力値を加算する第２の加算回路と、を有し、前記Ｂｙ・Ｂｔの所定ブロック内の総和値Ｕ、前記Ｂｘ・Ｂｙの前記所定ブロック内の総和値Ｒ、前記Ｂｘ・Ｂｔの前記所定ブロック内の総和値Ｔ、前記Ｂｙ２の前記所定ブロック内の総和値Ｑ、及び前記Ｂｘ２の前記所定ブロック内の総和値Ｐを算出する総和演算部と、
前記総和演算部の演算結果を入力し、Ｒ・Ｕ、Ｒ・Ｔ、Ｑ・Ｔ、Ｐ・Ｑ、Ｐ・Ｕ、及びＲ２をそれぞれ算出する第２の乗算回路と、
前記第２の乗算回路の演算結果を入力し、Ｑ・Ｔ−Ｒ・Ｕ、Ｒ２−Ｐ・Ｑ、及びＰ・Ｕ−Ｒ・Ｔをそれぞれ算出する第２の減算回路と、
前記第２の減算回路の演算結果を入力し、（Ｑ・Ｔ−Ｒ・Ｕ）／（Ｒ２−Ｐ・Ｑ）、及び（Ｐ・Ｕ−Ｒ・Ｔ）／（Ｒ２−Ｐ・Ｑ）をそれぞれ算出する除算回路と、
を備えることを特徴とする、請求項２に記載の動き推定装置。
【請求項４】
前記ｎ個の動き推定部のうちの最前段の動き推定部は、外部から入力されるフィルタ係数を用いて畳み込み演算を行うことを特徴とする、請求項１〜３のいずれか一項に記載の動き推定装置。
【請求項５】
前記動き推定部は、前記差分演算部の前段に前記畳み込み演算を行う畳込部を備え、
前記畳込部は、シフトレジスタ、加算回路、及び乗算回路を用いて、所定のブロック内で前記入力映像信号及び前記フィルタ係数の積和演算を行うこと特徴とする、請求項１〜４のいずれか一項に記載の動き推定装置。
【請求項６】
前記係数制御部は、前記動き推定部から入力される動きベクトルの大きさに応じて、前記フィルタ係数の点拡がりを制御することを特徴とする、請求項１から５のいずれか一項に記載の動き推定装置。
【請求項７】
前記係数制御部は、前記動き推定部から入力される動きベクトルの水平成分及び垂直成分の各大きさに応じて、前記フィルタ係数の水平方向及び垂直方向の点拡がりを制御することを特徴とする、請求項１から５のいずれか一項に記載の動き推定装置。
【請求項８】
前記係数制御部により決定されるフィルタ係数の点拡がりの大きさは、該係数制御部よりも前段に配置された係数制御部により決定されるフィルタ係数の点拡がりの大きさを超えないことを特徴とする、請求項１から７のいずれか一項に記載の動き推定装置。
【請求項９】
前記係数制御部は、
フィルタ係数列を複数組み記憶したフィルタ係数テーブルを備え、
前記動き推定部から入力される動きベクトルに応じて、前記フィルタ係数テーブルからフィルタ係数を選択することを特徴とする、請求項１から８のいずれか一項に記載の動き推定装置。
【請求項１０】
コンピュータを、請求項１から９のいずれか一項に記載の動き推定装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像信号から動きベクトルを推定する動き推定装置及びプログラムに関する。
【背景技術】
【０００２】
映像符号化において映像フレーム間の相関を利用した情報圧縮を行うことや、画像監視システムにおいて動物体の検出や追跡を行うことを目的として、映像フレーム間において局所的なあるいは大局的な動き量や動きの方向を推定する動き推定技術が広く用いられている。
【０００３】
動き推定技術として、ある時点の映像フレームにおいて、画像内に設定したブロック領域内の輝度や色のパターンと類似する領域を別の映像フレームの画像内において探索することで、該ブロック領域の動きベクトルを求めるブロックマッチング法が知られている。ブロックマッチング法においては、類似する領域の探索を、部分画像間の相互相関の最大化や、誤差（絶対値誤差、二乗誤差など）の総和の最小化により実現する手法が実用化されている。
【０００４】
また、ブロックマッチング法において、面的な探索の演算負荷を削減するため、映像フレームを階層的に縮小した画像群を作成し、低解像画像で粗く探索した結果に基づき、より高解像な画像においてより精細に探索を行う階層探索もある（例えば、特許文献１参照）。さらに、ブロックマッチング法において、菱形の探索領域を設定し、所定の探索手順によって高速に動きベクトル探索を行うダイアモンドサーチ動き推定手法がある（例えば、特許文献２参照）。
【０００５】
動き推定技術として、ブロックマッチング法のほか、画像の時間勾配及び空間勾配に基づき、動き推定を行う勾配法が知られている（例えば、非特許文献１参照）。勾配法として、例えばＬｕｃａｓ−Ｋａｎａｄｅ法が知られている。勾配法によって大きな動きベクトルを求めるためには、まず、大きな範囲を覆う平滑化フィルタを入力映像に適用してから必要に応じて縮小変換し、勾配演算を実行する必要がある。しかし、大きな範囲を覆う平滑化を入力映像に適用すると小さな動きベクトルの精度が低下してしまう。このトレードオフを解決するため、大きな範囲を覆う平滑化を入力映像に適用して動きベクトルを求め、その結果を利用しつつ、小さな範囲を覆う平滑化を入力映像に適用して動きベクトルを高精度化していく階層化手法も用いられている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第３９７９９７７号公報
【特許文献２】特許第４８９７３２３号公報
【非特許文献】
【０００７】
【非特許文献１】Bruce D.Lucas and Takeo Kanade, “An Iterative Image Registration Technique with an Application to Stereo Vision (IJCAI)”, Proceedings of the 7th International Joint Conference on Artificial Intelligence (IJCAI ’81), April, 1981, PP.674-679.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、従来の勾配法により動き推定を行う場合には、動き量と同程度の大きさの点拡がり関数によって画像をぼかしてから勾配演算を行わなければならないため、大きな動き量を推定できるようにするためには、画像を大きくぼかす必要がある。しかし、画像を大きくぼかすと、動きの異なる領域のテクスチャが混合する可能性が高くなり、推定精度を低下させる要因となる。このように、画像のぼかし量を一定とした場合には、動きの大きい場合の動き推定の頑健性を維持しつつ、動きの小さい場合の動き推定の精度を向上させることは困難であった。
【０００９】
かかる事情に鑑みてなされた本発明の目的は、映像信号の動きベクトルを推定する際に、動きの大きい場合の動き推定の頑健性を維持しつつ、動きの小さい場合の動き推定の精度を向上させることが可能な動き推定装置及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明に係る動き推定装置は、入力映像信号から動きベクトルを推定する動き推定装置であって、入力映像信号から動きベクトルを推定するｎ個（ｎ≧２）の動き推定部と、前記動きベクトルに基づいて畳み込み演算に用いられるフィルタ係数を決定する（ｎ−１）個の係数制御部とを備え、前記動き推定部及び前記係数制御部は交互に直列に接続され、各係数制御部は、前段に接続された動き推定部から入力される動きベクトルに基づいて、後段に接続される動き推定部のフィルタ係数を決定し、前記ｎ個の動き推定部のうちの最後段の動き推定部によって推定された動きベクトルを当該動き推定装置の出力とすることを特徴とする。
【００１１】
さらに、本発明に係る動き推定装置において、前記動き推定部は、勾配法により動きベクトルを推定することを特徴とする。
【００１２】
さらに、本発明に係る動き推定装置において、前記動き推定部は、入力信号を１クロック遅延させた１クロック遅延信号を出力する第１のシフトレジスタと、前記入力信号を１ライン遅延させた１ライン遅延信号を出力する第２のシフトレジスタと、前記入力信号を１フレーム遅延させた１フレーム遅延信号を出力する第３のシフトレジスタと、前記入力信号及び前記１クロック遅延信号の差分値ＢＸ、前記入力信号及び前記１ライン遅延信号の差分値ＢＹ、並びに前記入力信号及び前記１フレーム遅延信号の差分値Ｂｔを算出する第１の減算回路と、を有する差分演算部と、前記Ｂｙ、Ｂｔ、及びＢｘを入力し、Ｂｙ・Ｂｔ、Ｂｘ・Ｂｙ、Ｂｘ・Ｂｔ、Ｂｙ２、及びＢｘ２をそれぞれ算出する第１の乗算回路と、前記第１の乗算回路から入力される信号を１クロックずつ遅延させる複数の第４のシフトレジスタと、前記第１の乗算回路から入力される信号及び前記複数の第４のシフトレジスタの出力値を加算する第１の加算回路と、前記第１の加算回路から入力される信号を１ラインずつ遅延させる複数の第５のシフトレジスタと、前記第１の加算回路から入力される信号及び前記複数の第５のシフトレジスタの出力値を加算する第２の加算回路と、を有し、前記Ｂｙ・Ｂｔの所定ブロック内の総和値Ｕ、前記Ｂｘ・Ｂｙの前記所定ブロック内の総和値Ｒ、前記Ｂｘ・Ｂｔの前記所定ブロック内の総和値Ｔ、前記Ｂｙ２の前記所定ブロック内の総和値Ｑ、及び前記Ｂｘ２の前記所定ブロック内の総和値Ｐを算出する総和演算部と、前記総和演算部の演算結果を入力し、Ｒ・Ｕ、Ｒ・Ｔ、Ｑ・Ｔ、Ｐ・Ｑ、Ｐ・Ｕ、及びＲ２をそれぞれ算出する第２の乗算回路と、前記第２の乗算回路の演算結果を入力し、Ｑ・Ｔ−Ｒ・Ｕ、Ｒ２−Ｐ・Ｑ、及びＰ・Ｕ−Ｒ・Ｔをそれぞれ算出する第２の減算回路と、前記第２の減算回路の演算結果を入力し、（Ｑ・Ｔ−Ｒ・Ｕ）／（Ｒ２−Ｐ・Ｑ）、及び（Ｐ・Ｕ−Ｒ・Ｔ）／（Ｒ２−Ｐ・Ｑ）をそれぞれ算出する除算回路と、を備えることを特徴とする。
【００１３】
さらに、本発明に係る動き推定装置において、前記ｎ個の動き推定部のうちの最前段の動き推定部は、外部から入力されるフィルタ係数を用いて畳み込み演算を行うことを特徴とする。
【００１４】
さらに、本発明に係る動き推定装置において、前記動き推定部は、前記差分演算部の前段に前記畳み込み演算を行う畳込部を備え、前記畳込部は、シフトレジスタ、加算回路、及び乗算回路を用いて、所定のブロック内で前記入力映像信号及び前記フィルタ係数の積和演算を行うこと特徴とする。
【００１５】
さらに、本発明に係る動き推定装置において、前記係数制御部は、前記動き推定部から入力される動きベクトルの大きさに応じて、前記フィルタ係数の点拡がりを制御することを特徴とする。
【００１６】
さらに、本発明に係る動き推定装置において、前記係数制御部は、前記動き推定部から入力される動きベクトルの水平成分及び垂直成分の各大きさに応じて、前記フィルタ係数の水平方向及び垂直方向の点拡がりを制御することを特徴とする。
【００１７】
さらに、本発明に係る動き推定装置において、前記係数制御部により決定されるフィルタ係数の点拡がりの大きさは、該係数制御部よりも前段に配置された係数制御部により決定されるフィルタ係数の点拡がりの大きさを超えないことを特徴とする。
【００１８】
さらに、本発明に係る動き推定装置において、前記係数制御部は、フィルタ係数列を複数組み記憶したフィルタ係数テーブルを備え、前記動き推定部から入力される動きベクトルに応じて、前記フィルタ係数テーブルからフィルタ係数を選択することを特徴とする。
【００１９】
また、上記課題を解決するため、本発明に係るプログラムは、コンピュータを、上記動き推定装置として機能させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、映像信号の動きベクトルを推定する際に、階層化を行うことなく、動きの大きい場合の動き推定の頑健性を維持しつつ、動きの小さい場合の動き推定の精度を向上させることができるようになる。
【図面の簡単な説明】
【００２１】
【図１】本発明の一実施形態に係る動き推定装置の構成を示すブロック図である。
【図２】本発明の一実施形態に係る動き推定装置における動き推定部の構成を示すブロック図である。
【図３】本発明の一実施形態に係る動き推定装置における畳込部の構成を示すブロック図である。
【図４】本発明の一実施形態に係る動き推定装置における総和演算部の構成を示すブロック図である。
【図５】本発明の一実施形態に係る動き推定装置が出力する動きベクトルの対象画素を説明する図である。
【図６】本発明の一実施形態に係る動き推定装置が出力する動きベクトルの有効領域及び無効領域を説明する図である。
【図７】本発明の一実施形態に係る動き推定装置における係数制御部の構成を示すブロック図である。
【図８】本発明の一実施形態に係る、動き推定部を３つ備える場合の動き推定装置の構成を示すブロック図である。
【発明を実施するための形態】
【００２２】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。
【００２３】
図１は、本発明の一実施形態に係る動き推定装置の構成を示すブロック図である。図１に示す例では、動き推定装置１は、ｎ個（ｎ≧２）の動き推定部１０と、（ｎ−１）個の係数制御部２０と、（ｎ−１）個の遅延部３０とを備える。動き推定部１０及び係数制御部２０は交互に直列に接続される。図１は、ｎ＝２の場合を示しており、動き推定装置１は、２個の動き推定部１０（１０−１及び１０−２）と、１個の係数制御部２０と、１個の遅延部３０とを備える。
【００２４】
動き推定部１０−１は、入力映像信号Ｉ、及び畳み込み演算に用いられるフィルタ係数Ｈ（１）に基づいて動きベクトルＶ（１）を推定し、係数制御部２０に出力する。動き推定部１０の詳細については後述する。
【００２５】
遅延部３０は、動き推定部１０−１における動き推定の遅延を補償するために、入力映像信号Ｉを遅延させて動き推定部１０−２に出力する。遅延部３０は例えばシフトレジスタによって実現される。動き推定部１０−１がクロックのカウント値ｃ（ｃは整数）の時点で出力する動きベクトルが、入力映像信号Ｉのクロックのカウント値ｃ０時点の画素位置に対応する場合には、入力映像信号Ｉをｃ−ｃ０クロックだけ遅延させる。
【００２６】
係数制御部２０は、前段（入力側）の動き推定部１０−１により生成される動きベクトルＶ（１）＝（ｕ（１），ｖ（１））に基づいて、後段（出力側）の動き推定部１０−２の畳み込み演算に用いられるフィルタ係数Ｈ（２）を決定し、動き推定部１０−２に出力する。係数制御部２０の詳細については後述する。
【００２７】
動き推定部１０−２は、遅延部３０によって遅延された入力映像信号Ｉ、及び係数制御部２０によって決定されたフィルタ係数Ｈ（２）に基づいて動きベクトルＶ（２）を推定する。
【００２８】
次に、動き推定部１０の詳細について説明する。本実施形態では、勾配法を用いて動き推定を行うが、ブロックマッチング法により動き推定をおこなってもよい。
【００２９】
図２は、勾配法を用いて動き推定を行う動き推定部１０の構成を示すブロック図である。図２に示す例では、動き推定部１０は、畳込部１１と、差分演算部１２と、乗算回路１３（１３−１乃至１３−５）と、総和演算部１４（１４−１乃至１４−５）と、乗算回路１５（１５−１乃至１５−６）と、減算回路１６（１６−１乃至１６−３）と、除算回路１７（１７−１及び１７−２）とを備える。
【００３０】
畳込部１１は、動きベクトル推定の前処理として、ラスタスキャンによって画素値がクロックごとに順次入力される入力映像信号Ｉに対して、フィルタ係数Ｈを用いて畳込演算を行う。映像信号を構成するフレームの画像サイズを水平Ｌ画素、垂直Ｍ画素とおき、時刻ｔ、画像座標（ｉ，ｊ）（ｉ∈｛０，１，…，Ｌ−１｝、ｊ∈｛０，１，…，Ｍ−１｝）における画素値をＩ（ｔ；ｉ，ｊ）とおく。ラスタスキャンにより、第ｃクロックにおいて、式（１）に示す画素値Ｉ（ｃ）が入力される。ここに、ｃ％ＬはｃをＬで除したときの剰余を表す。
2014220565.tif 000003
はｚより大きくない最大の整数を表す。また、Ｆは１フレーム内の画素数（すなわち、Ｆ＝Ｌ・Ｍ）を表すものとする。
【００３１】
【数１】
2014220565.tif 000004
【００３２】
図３は、畳込部１１の構成例を示すブロック図である。畳込部１１は、所定のブロック内で入力信号とフィルタ係数との積和演算を行うためのシフトレジスタ、加算回路、及び乗算回路を有する。図３に示す例では、畳込部１１は、シフトレジスタ１１１（１１１−１乃至１１１−４）と、乗算回路１１２（１１２−１乃至１１２−５）と、加算回路１１３と、シフトレジスタ１１４（１１４−１乃至１１４−４）と、乗算回路１１５（１１５−１乃至１１５−５）と、加算回路１１６とを備える。
【００３３】
ここで、所望の畳込係数列（畳込カーネル）のサイズを水平Ｋｘ画素、垂直Ｋｙ画素とし、座標（ｉ，ｊ）（ｉ∈（０，１，…，Ｋｘ−１）、ｊ∈（０，１，…，Ｋｙ−１））における畳込係数をＣ（ｉ，ｊ）とおく。図３では畳込カーネルのサイズを５×５とする場合の構成を示しているが、実際には、シフトレジスタ１１１はＫｘ−１個の遅延要素によって構成され、乗算回路１１２はＫｘ個の乗算回路により構成され、シフトレジスタ１１４はＫｙ−１個の遅延要素により構成され、乗算回路１１５はＫｙ個の乗算回路により構成されるものとする。
【００３４】
シフトレジスタ１１１は、入力信号Ｉを１クロックずつ遅延させて出力する。
【００３５】
乗算回路１１２は、入力信号、及びシフトレジスタ１１１の遅延要素の各出力に対してそれぞれスカラーｇ０，ｇ１，…，ｇ４を乗じ、乗算値を加算回路１１３に出力する。
【００３６】
加算回路１１３は、乗算回路１１２から入力される乗算値の総和値Ａ（ｃ）を求め、シフトレジスタ１１４−１及び乗算回路１１５−１に出力する。Ａ（ｃ）は、式（２）で表される。
【００３７】
【数２】
2014220565.tif 000005
【００３８】
シフトレジスタ１１４は、入力信号を１ライン（すなわちＬクロック）ずつ遅延させて出力する。
【００３９】
乗算回路１１５は、加算回路１１３の出力、及びシフトレジスタ１１４の遅延要素の各出力に対してそれぞれスカラーｈ０，ｈ１，…，ｈ４を乗じ、乗算値を加算回路１１６に出力する。
【００４０】
加算回路１１６は、乗算回路１１５の出力値の総和値Ｂ（ｃ）を求め、差分演算部１２に出力する。Ｂ（ｃ）は、式（３）で表される。
【００４１】
【数３】
2014220565.tif 000006
【００４２】
この演算結果は、座標（ｉ，ｊ）における値がｇｊ・ｈｊとなる２次元関数を、入力系列値Ｉ（ｃ）を画像内の矩形の右下とし、水平Ｋｘ画素、垂直ＫＹ画素の矩形内において入力系列値Ｉ（ｃ）を２次元的に畳み込んだ結果に一致する。
【００４３】
以上、畳込部１１の処理について説明したが、動き推定装置１の入力側に設けられる動き推定部１０−１においては、畳込部１１を備えないで、入力映像信号Ｉを差分演算部１２に直接入力するようにしてもよい。その場合には、フィルタ係数Ｈ（１）を入力する必要はない。また、動き推定部１０−１及び動き推定部１０−２は、各々に内在する畳込部１１のタップ長が異なっても同一であってもよい。
【００４４】
再び図２の説明に戻る。差分演算部１２は、シフトレジスタ１２１（１２１−１乃至１２１−３）と、減算回路１２２（１２２−１乃至１２２−３）とを備える。差分演算部１２の入力信号をＢとし、その第ｃクロックにおける画素値をＢ（ｃ）とする。
【００４５】
シフトレジスタ１２１−１は、入力信号Ｂを１クロック遅延させて１クロック遅延画素値Ｂ（ｃ−１）を出力する。シフトレジスタ１２１−２は、入力信号Ｂを１ライン（すなわちＬクロック）遅延させて１ライン遅延画素値Ｂ（ｃ−Ｌ）を出力する。シフトレジスタ１２１−３は、入力信号Ｂを１フレーム（すなわちＦ＝Ｌ・Ｍクロック）遅延させて１フレーム遅延画素値Ｂ（ｃ−Ｆ）を出力する。
【００４６】
減算回路１２２−１は、入力画素値Ｂ（ｃ）と、シフトレジスタ１２１−１から出力される１クロック遅延画素値Ｂ（ｃ−１）との差分を演算し、水平差分値ＢＸ（ｃ）を出力する。すなわち、ＢＸ（ｃ）＝Ｂ（ｃ）−Ｂ（ｃ−１）である。
【００４７】
減算回路１２２−２は、入力画素値Ｂ（ｃ）と、シフトレジスタ１２１−２から出力される１ライン遅延画素値Ｂ（ｃ−Ｌ）との差分を演算し、垂直差分値ＢＹ（ｃ）を出力する。すなわち、ＢＹ（ｃ）＝Ｂ（ｃ）−Ｂ（ｃ−Ｌ）である。
【００４８】
減算回路１２２−３は、入力画素値Ｂ（ｃ）と、シフトレジスタ１２１−３から出力される１フレーム遅延画素値Ｂ（ｃ−Ｆ）との差分を演算し、時間差分値Ｂｔ（ｃ）を出力する。すなわち、Ｂｔ（ｃ）＝Ｂ（ｃ）−Ｂ（ｃ−Ｆ）である。
【００４９】
乗算回路１３は、Ｂｙ（ｃ）・Ｂｔ（ｃ）、Ｂｘ（ｃ）・Ｂｙ（ｃ）、Ｂｘ（ｃ）・Ｂｔ（ｃ）、Ｂｙ（ｃ）・Ｂｙ（ｃ）、及びＢｘ（ｃ）・Ｂｘ（ｃ）をそれぞれ求め、その結果を総和演算部１４に出力する。
【００５０】
総和演算部１４は、画像内における水平サイズＴｘ画素、垂直サイズＴｙの矩形ブロック内において乗算回路１３から入力される乗算値の総和をそれぞれ求め、その結果を乗算回路１５に出力する。総和演算部１４−１乃至１４−５はすべて同じ構成で実現できる。
【００５１】
図４は、総和演算部１４の構成を示すブロック図である。図４に示す例では、総和演算部１４は、シフトレジスタ１４１（１４−１乃至１４−４）と、加算回路１４２と、シフトレジスタ１４３（１４３−１乃至１４３−４）と、加算回路１４４とを備える。総和演算部１４の入力信号Ｄの第ｃクロックにおける画素値をＤ（ｃ）とする。
【００５２】
シフトレジスタ１４１は、入力信号Ｄを１クロック遅延させて出力する。図４では４個の遅延要素により構成されているが、実際にはＴｘ−１個の遅延要素によって構成されるものとする。
【００５３】
加算回路１４２は、画素値Ｄ（ｃ）及びシフトレジスタ１４１の各出力の総和値Ｅ（ｃ）を算出する。総和値Ｅ（ｃ）は式（４）で表される。
【００５４】
【数４】
2014220565.tif 000007
【００５５】
シフトレジスタ１４３は、入力信号を１ライン（すなわちＬクロック）遅延させて出力する。図４では４個の遅延要素により構成されているが、実際にはＴｙ−１個の遅延要素によって構成されるものとする。
【００５６】
加算回路１４４は、加算回路１４２の出力値及びシフトレジスタ１４３の各出力の総和値Ｆ（ｃ）を算出する。総和値Ｆ（ｃ）は式（５）で表される。これは、入力系列値Ｄ（ｃ）を画像内の矩形の右下とし、水平Ｔｘ画素、垂直Ｔｙ画秦の矩形内において２次元的に入力系列値Ｄ（ｃ）を総和した結果に一致する。
【００５７】
【数５】
2014220565.tif 000008
【００５８】
再び図２の説明に戻る。総和演算部１４は、乗算回路１３の結果をそれぞれ画像内の水平Ｔｘ画素、垂直Ｔｙ画素の矩形内において総和演算を実行する。総和演算部１４−１乃至１４−５の演算結果Ｕ（ｃ）、Ｒ（ｃ）、Ｔ（ｃ）、Ｑ（ｃ）、及びＰ（ｃ）は、それぞれ式（６）乃至式（１０）で表される。
【００５９】
【数６】
2014220565.tif 000009
【００６０】
乗算回路１５は、Ｒ（ｃ）・Ｕ（ｃ）、Ｒ（ｃ）・Ｔ（ｃ）、Ｑ（ｃ）・Ｔ（ｃ）、Ｐ（ｃ）・Ｑ（ｃ）、Ｐ（ｃ）・Ｕ（ｃ）、及びＲ（ｃ）２をそれぞれ求め、その結果を減算回路１６に出力する。
【００６１】
減算回路１６−１は、乗算回路１５−３の出力値Ｑ（ｃ）・Ｔ（ｃ）から乗算回路１５−１の出力値Ｒ（ｃ）・Ｕ（ｃ）を減じた減算値（Ｑ（ｃ）・Ｔ（ｃ）−Ｒ（ｃ）・Ｕ（ｃ））を除算回路１７−１に出力する。減算回路１６−２は、乗算回路１５−６の出力値Ｒ（ｃ）２から乗算回路１５−４の出力値Ｐ（ｃ）・Ｑ（ｃ）を減じた減算値（Ｒ（ｃ）２−Ｐ（ｃ）・Ｑ（ｃ））を除算回路１７−１及び１７−２に出力する。減算回路１６−３は、乗算回路１５−５の出力値Ｐ（ｃ）・Ｕ（ｃ）から乗算回路１５−２の出力値Ｒ（ｃ）・Ｔ（ｃ）を減じた減算値（Ｐ（ｃ）・Ｕ（ｃ）−Ｒ（ｃ）・Ｔ（ｃ））を除算回路１７−２出力する。
【００６２】
除算回路１７−１は、減算回路１６−１の出力値を減算回路１６−２の出力値により除した除算値ｕ（ｃ）を出力する。除算回路１７−２は、減算回路１６−３の出力値を減算回路１６−２の出力値により除した除算値ｖ（ｃ）を出力する。除算値ｕ（ｃ）及びｖ（ｃ）はそれぞれ式（１１）及び（１２）で表される。このようにして得られるベクトル（ｕ（ｃ），ｖ（ｃ））は、勾配法による動きベクトルに相当する。動きベクトルはクロックごとにラスタスキャン順序にて画素単位で更新される。
【００６３】
【数７】
2014220565.tif 000010
【００６４】
図５は、動き推定装置１が出力する動きベクトルの対象画素を説明する図である。クロックｃの時点で入力映像として入力された画素位置が図５中のＩＰ（ｃ）の位置である場合、当該時点で得られる動きベクトル（ｕ（ｃ），ｖ（ｃ））は、図５の領域１００内の画素値列に対して演算した結果となっている。典型的にはクロックｃの時点で出力される動きベクトル（ｕ（ｃ），ｖ（ｃ））は領域１００の中心画素における動きを表している。なお、動き推定部１０−１が畳込部１１を備えない場合には、領域１００は水平方向にＴｘ−１画素、垂直方向にＴｙ−１画素の領域となる。
【００６５】
図６は、動き推定装置１が出力する動きベクトルの有効領域及び無効領域を説明する図である。図６（ａ）に示すように、クロックｃの時点の入力画素の位置ＩＰ（ｃ）が入力画像の端寄りに存在する場合には、演算に用いられた画素値列が、図６の領域２００及び領域２０１のように別々に割れてしまうことや、フレームを跨いでしまうことがある。このような場合に得られる動きベクトル（ｕ（ｃ），ｖ（ｃ））は信頼できない。そのため、入力画像の位置ＩＰ（ｃ）が図６（ｂ）に示す領域３００内に位置する場合には、動きベクトルを動き推定部１０から出力しないなどして利用しないようにし、入力画像の位置ＩＰ（ｃ）が領域３０１内に位置する場合のみ、その動きベクトルを利用することが好ましい。
【００６６】
あるいは、動き推定部１０の前段にて、入力フレームの大きさを左及び上方向にそれぞれＫｘ＋Ｔｘ−２画素及びＫｙ＋Ｔｙ−２画素分だけ拡張することで、元の入力映像Ｉの画面全体をカバーする動きベクトルを得ることもできる。このときの拡張には、０次外挿（最近傍補間）を用いることが好ましい。
【００６７】
再び図１の説明に戻る。動き推定部１０−１には、入力映像Ｉ及びフィルタ係数Ｈ（１）が入力される。フィルタ係数Ｈ（１）は例えば固定係数とし、その点拡がりは想定される動きベクトルの最大値を半径とする円内程度に設定する。例えば、動きベクトルの大きさとして、最大２画素を想定する場合には、半径２画素程度の拡がりを有する平滑化フィルタの係数をフィルタ係数Ｈ（１）として与える。例えば、フィルタ係数Ｈ（１）として、水平フィルタ係数ｇ。乃至ｇ４及び垂直フィルタ係数ｈ０乃至ｈ４にそれぞれガウシアンや移動平均フィルタの係数を設定する。具体的には、例えば、ｇ０＝ｇ１＝ｇ２＝ｇ３＝ｇ４＝ｈ０＝ｈ１＝ｈ２＝ｈ３＝ｈ４＝１／５とする。
【００６８】
次に、係数制御部２０の詳細について説明する。係数制御部２０は、動き推定部１０−１の出力する動きベクトルＶ（１）＝（ｕ（１），ｖ（１））に基づき、出力するフィルタ係数Ｈ（２）を決定する。係数制御部２０は、例えば、動きベクトルＶ（１）の大きさが大きいほど、点拡がり（畳込カーネルのサイズ）の大きいフィルタ係数Ｈ（２）を出力する。あるいは、係数制御部２０は、動きベクトルＶ（１）の水平成分ｕ（１）及び垂直成分ｖ（１）のそれぞれの大きさに応じて、水平方向の点拡がりと垂直方向の点拡がりを独立に制御してもよい。
【００６９】
図７は、係数制御部２０の構成を示すブロック図である。図７に示す例では、係数制御部２０は、フィルタ選択部２１と、フィルタ係数テーブル２２とを備える。
【００７０】
フィルタ選択部２１は、入力された動きベクトルＶ（１）の大きさ、又は入力された動きベクトルの水平成分ｕ（１）及び垂直成分ｖ（１）の大きさに応じて、出力すべきフィルタ係数Ｈ（２）の点拡がりを制御する。フィルタ選択部２１は、動きベクトルＶ（１）の水平成分ｕ（１）及び垂直成分ｖ（１）の大きさに応じて、出力すべきフィルタ係数の拡がりを制御する場合、例えば式（１３）に示すような闘値処理によって、選択出力すべきフィルタを識別するインデックスｗの値を決定する。
【００７１】
【数８】
2014220565.tif 000011
【００７２】
式（１３）において、θｘ及びθｙは、動きベクトルＶ（１）の水平成分ｕ（１）及び垂直成分ｖ（１）に対してその絶対値の大小を判定するための閥値であり、いずれも正の実数とする。例えば、θｘ＝２、θｙ＝２とすると、水平成分ｕ（１）の大きさが２画素より大きいか否か、垂直成分ｖ（１）の大きさが２画素より大きいか否かの組み合わせによって、ｗの値が０乃至３に決定される。
【００７３】
フィルタ係数Ｈ（２）の点拡がりの大きさは、フィルタ係数Ｈ（１）の点拡がりの大きさを超えないようにするのが好適である。なお、動き推定部１０−１が畳込部１１を備えない場合については、フィルタ係数Ｈ（１）は入力されないが、点拡がりの大きさが無限大のフィルタ係数Ｈ（１）が入力されているとみなすと、フィルタ係数Ｈ（２）の点拡がりの大きさはフィルタ係数Ｈ（１）よりも小さいといえる。
【００７４】
フィルタ係数テーブル２２は、インデックスｗごとに出力すべきフィルタ係数Ｈ（２）が記憶されているルックアップテーブルを備える。フィルタ係数テーブル２２は、入力されたインデックスｗの値に応じてルックアップテーブルを参照し、インデックスｗに対応付けられたフィルタ係数をフィルタ係数Ｈ（２）として出力する。
【００７５】
図７のフィルタ係数テーブル２２の吹き出しにルックアップテーブルの一例を示す。このルックアップテーブルによれば、フィルタ係数テーブル２２からはフィルタ係数Ｈ（２）として、インデックスｗ＝０のときには３×３画素の移動平均フィルタが、インデックスｗ＝１のときには５×３画素の移動平均フィルタが、インデックスｗ＝２のときには３×５画素の移動平均フィルタが、インデックスｗ＝３のときには５×５画素の移動平均フィルタが、それぞれ出力される。
【００７６】
図１に示す実施形態では、動き推定装置１が動き推定部１０を２個備える場合について説明したが、動き推定部１０を３個以上備えてもよい。図８は、動き推定部１０を３個備える場合の動き推定装置１の構成を示すブロック図である。
【００７７】
後段に配置される係数制御部２０により決定されるフィルタ係数の点拡がりの大きさ（畳込カーネルのサイズ）は、前段に配置される係数制御部２０により決定されるフィルタ係数の点拡がりの大きさを超えないようにするのが好適である。以下に具体例を述べる。例えば、動き推定部１０−１に入力されるフィルタ係数Ｈ（１）の畳込カーネルのサイズを６５×６５画素とする。係数制御部２０−１は動きベクトルＶ（１）の大きさを判定し、２０画素よりも大きい場合にはフィルタ係数Ｈ（２）の畳込カーネルのサイズを５１×５１画素とし、２０画素以下である場合にはフィルタ係数Ｈ（２）の畳込カーネルのサイズを４１×４１画素とする。係数制御部２０−２は動きベクトルＶ（２）の大きさを判定し、２０画素よりも大きい場合にはフィルタ係数Ｈ（２）の畳込カーネルのサイズを５１×５１画素とし、１０画素よりも大きく２０画素以下である場合にはフィルタ係数Ｈ（２）の畳込カーネルのサイズを４１×４１画素とし、１０画素以下である場合にはフィルタ係数Ｈ（２）の畳込カーネルのサイズを２１×２１画素とる。
【００７８】
上述したように、動き推定装置１は、入力映像信号から動きベクトルを推定するｎ個（ｎ≧２）の動き推定部１０−１乃至１０−ｎと、動きベクトルに基づいて畳み込み演算に用いられるフィルタ係数を決定する、（ｎ−１）個の係数制御部２０−１乃至２０−（ｎ−１）とを備え、動き推定部１０及び係数制御部２０は交互に直列に接続され、各係数制御部２０−ｋ（１≦ｋ≦ｎ−１）は、前段に接続された動き推定部１０−ｋから出力される動きベクトルに基づいて、後段に接続される動き推定部１０−（ｋ＋１）のフィルタ係数を決定し、最後段の動き推定部１０−ｎによって推定された動きベクトルＶ（ｎ）を出力する。
【００７９】
かかる構成により、動き推定装置１は、まず前段の動き推定部１０によっておおまかな動きベクトルを求め、この動きベクトルの大きさや方向に応じてその後段の動き推定部１０においてフィルタ係数の点拡がりを制御することができる。かくして、階層化を行うことなく、大きな動きベクトルから小さな動きベクトルまで頑健に算出することができ、小さな動きベクトルはより高精度に算出することが可能となる。
【００８０】
ここで、最前段の動き推定部１０−１も、外部から入力されるフィルタ係数Ｈ（１）を用いて畳み込み演算を行うのが好適である。このような構成にすることにより、映像信号に含まれる雑音が動きベクトルに与える悪影響を抑えることができるほか、動きベクトルが大きい場合（総和演算部１４が総和演算を行うブロックの大きさ程度よりも大きい場合）においても動き推定が可能となる。
【００８１】
動き推定部１０は、ブロックマッチング法により動きベクトルを推定してもよい。ただし、ブロックマッチング法においては、探索先の画像内においてブロック領域をずらしながら相関演算あるいは誤差演算（以下、相関演算等）を行う必要がある。そのため、ソフトウェア処理では繰り返しループが必要であり、演算処理時間がかかる。また、ハードウェア処理では、例えば、シフトレジスタによって構成されるラインメモリを複数ライン分確保し、該メモリに探索先の画像を構成する画素値をクロックに従って順次入力し、相関演算等をとるべき画素群の対を、相関演算等を行う演算器へ配線して、相関演算等を実行する。このとき、探索元の画像内のある１ブロックにつき、探索先の画像内における複数の位置のブロック群に対して、それぞれ相関等の演算を行う必要がある。このため、探索元の１ブロック内の画素列と、探索先の１ブロック内の画素列とを相関演算器に全て配線したとしても、探索元のブロック位置の総数と、探索先の探索領域内のブロック位置の総数の積の回数だけシフトレジスタをシフトさせなければフレーム内の動きベクトルを求めることができない。シフトレジスタのシフト回数を減らすためには、異なる複数のブロック対に対して並列的に配線を行う必要がある。いずれにしても、例えばＦＰＧＡ（Field-Programmable Gate Array）等による論理部・順序部においてブロックマッチングを実装することは、ハードウェア規模及び演算処理時間の観点で高コストである。
【００８２】
そこで、動き推定部１０は、勾配法により動きベクトルを推定するのが好適である。勾配法においては、さまざまな大きさの動きに対応させるためには、多くの階層を有する階層化手法を用いることも考えられるが、ソフトウェア、ハードウェアいずれの実装に置いても演算コストや所要リソースの観点で不利である。そこで動き推定部１０を、図２乃至図４を参照して説明した回路構成とし、階層化を行わないで動き推定をするのがより好適である。上述したように、動き推定部１０は、シフトレジスタと、乗算回路、加算回路、減算回路、及び除算回路１７によって動きベクトルＶを順次オンラインで演算することができる。ハードウェア規模が大きくなる要因である除算回路１７はわずか２個であり、他はフリップフロップとＤＳＰ（Digital Signal Processor）で容易に実現できるため、演算回路を小規模化でき、演算処理時間も短縮することが可能となる。
【００８３】
また、上述したように、係数制御部２０は、動き推定部１０から入力される動きベクトルの大きさに応じて、フィルタ係数の点拡がりを制御するか、あるいは、動きベクトルの水平成分及び垂直成分の各大きさに応じて、フィルタ係数の水平方向及び垂直方向の点拡がりを制御する。そして、後段に配置された係数制御部２０により決定されるフィルタ係数の点拡がりの大きさが前段に配置された係数制御部２０により決定されるフィルタ係数の点拡がりの大きさを超えないようにする。かかる構成により、動きベクトルに応じて適応的にフィルタ係数を決定することができ、動きの大きい場合の動き推定の頑健性と動きの小さい場合の動き推定の精度とを両立して向上させることができる。
【００８４】
また、係数制御部２０は、フィルタ係数列を複数組み記憶したフィルタ係数テーブル２２を備え、動き推定部１０から入力される動きベクトルに応じてフィルタ係数テーブル２２からフィルタ係数を選択するようにしてもよい。このように構成することにより、フィルタ係数の決定を高速化することができる。
【００８５】
なお、上述した動き推定装置１として機能させるためにコンピュータを好適に用いることができ、そのようなコンピュータは、動き推定装置１の各機能を実現する処理内容を記述したプログラムを当該コンピュータの記憶部に格納しておき、当該コンピュータのＣＰＵによってこのプログラムを読み出して実行させることで実現することができる。なお、このプログラムは、コンピュータ読取り可能な記録媒体に記録することができる。
【００８６】
上述の実施形態は代表的な例として説明したが、本発明の趣旨及び範囲内で、多くの変更及び置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。例えば、実施形態に記載の複数の構成ブロックを１つに組み合わせたり、あるいは１つの構成部ブロックを分割したりすることが可能である。
【産業上の利用可能性】
【００８７】
このように、本発明によれば、映像から動きベクトルを推定する際に、大きな動きベクトルから小さな動きベクトルまで頑健に求めることができるので、動きベクトルを推定する任意の用途に有用である。
【符号の説明】
【００８８】
１    動き推定装置
１０  動き推定部
１１  畳込部
１２  差分演算部
１３，１５，１１２，１１５  乗算回路
１４  総和演算部
１６，１２２  減算回路
１７  除算回路
２０  係数制御部
２１  フィルタ選択部
２２  フィルタ係数テーブル
３０  遅延部
１１１，１１４，１２１，１４１，１４３  シフトレジスタ
１１３，１１６，１４２，１４４  加算回路
【図１】
2014220565.tif 000012
【図２】
2014220565.tif 000013
【図３】
2014220565.tif 000014
【図４】
2014220565.tif 000015
【図５】
2014220565.tif 000016
【図６】
2014220565.tif 000017
【図７】
2014220565.tif 000018
【図８】
2014220565.tif 000019