特許第6155087号(P6155087)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本放送協会の特許一覧

<>
  • 特許6155087-動き推定装置及びプログラム 図000011
  • 特許6155087-動き推定装置及びプログラム 図000012
  • 特許6155087-動き推定装置及びプログラム 図000013
  • 特許6155087-動き推定装置及びプログラム 図000014
  • 特許6155087-動き推定装置及びプログラム 図000015
  • 特許6155087-動き推定装置及びプログラム 図000016
  • 特許6155087-動き推定装置及びプログラム 図000017
  • 特許6155087-動き推定装置及びプログラム 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6155087
(24)【登録日】2017年6月9日
(45)【発行日】2017年6月28日
(54)【発明の名称】動き推定装置及びプログラム
(51)【国際特許分類】
   G06T 7/269 20170101AFI20170619BHJP
   H04N 19/533 20140101ALI20170619BHJP
   H04N 19/537 20140101ALI20170619BHJP
【FI】
   G06T7/269
   H04N19/533
   H04N19/537
【請求項の数】8
【全頁数】17
(21)【出願番号】特願2013-96489(P2013-96489)
(22)【出願日】2013年5月1日
(65)【公開番号】特開2014-220565(P2014-220565A)
(43)【公開日】2014年11月20日
【審査請求日】2016年3月28日
【権利譲渡・実施許諾】特許権者において、実施許諾の用意がある。
(73)【特許権者】
【識別番号】000004352
【氏名又は名称】日本放送協会
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】100161148
【弁理士】
【氏名又は名称】福尾 誠
(72)【発明者】
【氏名】三須 俊枝
(72)【発明者】
【氏名】松尾 康孝
(72)【発明者】
【氏名】境田 慎一
【審査官】 坂東 大五郎
(56)【参考文献】
【文献】 特開2008−192060(JP,A)
【文献】 特開2013−041387(JP,A)
【文献】 特開2011−233039(JP,A)
【文献】 特開2009−116730(JP,A)
【文献】 特開2008−092480(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/20−7/292
H04N 19/00−19/98
(57)【特許請求の範囲】
【請求項1】
入力映像信号から動きベクトルを推定する動き推定装置であって、
入力映像信号に対してフィルタ係数を用いて畳み込み演算を行い、畳み込み演算後の入力映像信号から勾配法により動きベクトルを推定するn個(n≧2)の動き推定部と、
前記動きベクトルに基づいて前記フィルタ係数を決定し、前記動きベクトルの大きさが大きいほど、前記フィルタ係数の畳み込みカーネルのサイズを大きくする(n−1)個の係数制御部とを備え、
前記動き推定部及び前記係数制御部は交互に直列に接続され、
各係数制御部は、前段に接続された動き推定部から入力される動きベクトルに基づいて、後段に接続される動き推定部のフィルタ係数を決定し、
前記n個の動き推定部のうちの最後段の動き推定部によって推定された動きベクトルを当該動き推定装置の出力とすることを特徴とする、動き推定装置。
【請求項2】
前記動き推定部は、
入力信号を1クロック遅延させた1クロック遅延信号を出力する第1のシフトレジスタと、前記入力信号を1ライン遅延させた1ライン遅延信号を出力する第2のシフトレジスタと、前記入力信号を1フレーム遅延させた1フレーム遅延信号を出力する第3のシフトレジスタと、前記入力信号及び前記1クロック遅延信号の差分値BX、前記入力信号及び前記1ライン遅延信号の差分値BY、並びに前記入力信号及び前記1フレーム遅延信号の差分値Btを算出する第1の減算回路と、を有する差分演算部と、
前記By、Bt、及びBxを入力し、By・Bt、Bx・By、Bx・Bt、By2、及びBx2をそれぞれ算出する第1の乗算回路と、
前記第1の乗算回路から入力される信号を1クロックずつ遅延させる複数の第4のシフトレジスタと、前記第1の乗算回路から入力される信号及び前記複数の第4のシフトレジスタの出力値を加算する第1の加算回路と、前記第1の加算回路から入力される信号を1ラインずつ遅延させる複数の第5のシフトレジスタと、前記第1の加算回路から入力される信号及び前記複数の第5のシフトレジスタの出力値を加算する第2の加算回路と、を有し、前記By・Btの所定ブロック内の総和値U、前記Bx・Byの前記所定ブロック内の総和値R、前記Bx・Btの前記所定ブロック内の総和値T、前記By2の前記所定ブロック内の総和値Q、及び前記Bx2の前記所定ブロック内の総和値Pを算出する総和演算部と、
前記総和演算部の演算結果を入力し、R・U、R・T、Q・T、P・Q、P・U、及びR2をそれぞれ算出する第2の乗算回路と、
前記第2の乗算回路の演算結果を入力し、Q・T−R・U、R2−P・Q、及びP・U−R・Tをそれぞれ算出する第2の減算回路と、
前記第2の減算回路の演算結果を入力し、(Q・T−R・U)/(R2−P・Q)、及び(P・U−R・T)/(R2−P・Q)をそれぞれ算出する除算回路と、
を備えることを特徴とする、請求項に記載の動き推定装置。
【請求項3】
前記動き推定部は、前記差分演算部の前段に前記畳み込み演算を行う畳込部を備え、
前記畳込部は、シフトレジスタ、加算回路、及び乗算回路を用いて、所定のブロック内で前記入力映像信号及び前記フィルタ係数の積和演算を行うこと特徴とする、請求項に記載の動き推定装置。
【請求項4】
前記n個の動き推定部のうちの最前段の動き推定部は、外部から入力されるフィルタ係数を用いて畳み込み演算を行うことを特徴とする、請求項1〜のいずれか一項に記載の動き推定装置。
【請求項5】
前記係数制御部は、前記動き推定部から入力される動きベクトルの水平成分及び垂直成分の各大きさに応じて、前記フィルタ係数の畳み込みカーネルの水平方向及び垂直方向のサイズを制御することを特徴とする、請求項1からのいずれか一項に記載の動き推定装置。
【請求項6】
前記係数制御部により決定されるフィルタ係数の畳み込みカーネルのサイズは、該係数制御部よりも前段に配置された係数制御部により決定されるフィルタ係数の畳み込みカーネルのサイズを超えないことを特徴とする、請求項1からのいずれか一項に記載の動き推定装置。
【請求項7】
前記係数制御部は、
フィルタ係数列を複数組み記憶したフィルタ係数テーブルを備え、
前記動き推定部から入力される動きベクトルに応じて、前記フィルタ係数テーブルからフィルタ係数を選択することを特徴とする、請求項1からのいずれか一項に記載の動き推定装置。
【請求項8】
コンピュータを、請求項1からのいずれか一項に記載の動き推定装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、映像信号から動きベクトルを推定する動き推定装置及びプログラムに関する。
【背景技術】
【0002】
映像符号化において映像フレーム間の相関を利用した情報圧縮を行うことや、画像監視システムにおいて動物体の検出や追跡を行うことを目的として、映像フレーム間において局所的なあるいは大局的な動き量や動きの方向を推定する動き推定技術が広く用いられている。
【0003】
動き推定技術として、ある時点の映像フレームにおいて、画像内に設定したブロック領域内の輝度や色のパターンと類似する領域を別の映像フレームの画像内において探索することで、該ブロック領域の動きベクトルを求めるブロックマッチング法が知られている。ブロックマッチング法においては、類似する領域の探索を、部分画像間の相互相関の最大化や、誤差(絶対値誤差、二乗誤差など)の総和の最小化により実現する手法が実用化されている。
【0004】
また、ブロックマッチング法において、面的な探索の演算負荷を削減するため、映像フレームを階層的に縮小した画像群を作成し、低解像画像で粗く探索した結果に基づき、より高解像な画像においてより精細に探索を行う階層探索もある(例えば、特許文献1参照)。さらに、ブロックマッチング法において、菱形の探索領域を設定し、所定の探索手順によって高速に動きベクトル探索を行うダイアモンドサーチ動き推定手法がある(例えば、特許文献2参照)。
【0005】
動き推定技術として、ブロックマッチング法のほか、画像の時間勾配及び空間勾配に基づき、動き推定を行う勾配法が知られている(例えば、非特許文献1参照)。勾配法として、例えばLucas−Kanade法が知られている。勾配法によって大きな動きベクトルを求めるためには、まず、大きな範囲を覆う平滑化フィルタを入力映像に適用してから必要に応じて縮小変換し、勾配演算を実行する必要がある。しかし、大きな範囲を覆う平滑化を入力映像に適用すると小さな動きベクトルの精度が低下してしまう。このトレードオフを解決するため、大きな範囲を覆う平滑化を入力映像に適用して動きベクトルを求め、その結果を利用しつつ、小さな範囲を覆う平滑化を入力映像に適用して動きベクトルを高精度化していく階層化手法も用いられている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許第3979977号公報
【特許文献2】特許第4897323号公報
【非特許文献】
【0007】
【非特許文献1】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.
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかし、従来の勾配法により動き推定を行う場合には、動き量と同程度の大きさの点拡がり関数によって画像をぼかしてから勾配演算を行わなければならないため、大きな動き量を推定できるようにするためには、画像を大きくぼかす必要がある。しかし、画像を大きくぼかすと、動きの異なる領域のテクスチャが混合する可能性が高くなり、推定精度を低下させる要因となる。このように、画像のぼかし量を一定とした場合には、動きの大きい場合の動き推定の頑健性を維持しつつ、動きの小さい場合の動き推定の精度を向上させることは困難であった。
【0009】
かかる事情に鑑みてなされた本発明の目的は、映像信号の動きベクトルを推定する際に、動きの大きい場合の動き推定の頑健性を維持しつつ、動きの小さい場合の動き推定の精度を向上させることが可能な動き推定装置及びプログラムを提供することにある。
【課題を解決するための手段】
【0010】
上記課題を解決するため、本発明に係る動き推定装置は、入力映像信号から動きベクトルを推定する動き推定装置であって、入力映像信号に対してフィルタ係数を用いて畳み込み演算を行い、畳み込み演算後の入力映像信号から勾配法により動きベクトルを推定するn個(n≧2)の動き推定部と、前記動きベクトルに基づいて前記フィルタ係数を決定し、前記動きベクトルの大きさが大きいほど、前記フィルタ係数の畳み込みカーネルのサイズを大きくする(n−1)個の係数制御部とを備え、前記動き推定部及び前記係数制御部は交互に直列に接続され、各係数制御部は、前段に接続された動き推定部から入力される動きベクトルに基づいて、後段に接続される動き推定部のフィルタ係数を決定し、前記n個の動き推定部のうちの最後段の動き推定部によって推定された動きベクトルを当該動き推定装置の出力とすることを特徴とする。
【0012】
さらに、本発明に係る動き推定装置において、前記動き推定部は、入力信号を1クロック遅延させた1クロック遅延信号を出力する第1のシフトレジスタと、前記入力信号を1ライン遅延させた1ライン遅延信号を出力する第2のシフトレジスタと、前記入力信号を1フレーム遅延させた1フレーム遅延信号を出力する第3のシフトレジスタと、前記入力信号及び前記1クロック遅延信号の差分値B、前記入力信号及び前記1ライン遅延信号の差分値B、並びに前記入力信号及び前記1フレーム遅延信号の差分値Bを算出する第1の減算回路と、を有する差分演算部と、前記B、B、及びBを入力し、B・B、B・B、B・B、B、及びBをそれぞれ算出する第1の乗算回路と、前記第1の乗算回路から入力される信号を1クロックずつ遅延させる複数の第4のシフトレジスタと、前記第1の乗算回路から入力される信号及び前記複数の第4のシフトレジスタの出力値を加算する第1の加算回路と、前記第1の加算回路から入力される信号を1ラインずつ遅延させる複数の第5のシフトレジスタと、前記第1の加算回路から入力される信号及び前記複数の第5のシフトレジスタの出力値を加算する第2の加算回路と、を有し、前記B・Bの所定ブロック内の総和値U、前記B・Bの前記所定ブロック内の総和値R、前記B・Bの前記所定ブロック内の総和値T、前記Bの前記所定ブロック内の総和値Q、及び前記Bの前記所定ブロック内の総和値Pを算出する総和演算部と、前記総和演算部の演算結果を入力し、R・U、R・T、Q・T、P・Q、P・U、及びRをそれぞれ算出する第2の乗算回路と、前記第2の乗算回路の演算結果を入力し、Q・T−R・U、R−P・Q、及びP・U−R・Tをそれぞれ算出する第2の減算回路と、前記第2の減算回路の演算結果を入力し、(Q・T−R・U)/(R−P・Q)、及び(P・U−R・T)/(R−P・Q)をそれぞれ算出する除算回路と、を備えることを特徴とする。
【0013】
さらに、本発明に係る動き推定装置において、前記動き推定部は、前記差分演算部の前段に前記畳み込み演算を行う畳込部を備え、前記畳込部は、シフトレジスタ、加算回路、及び乗算回路を用いて、所定のブロック内で前記入力映像信号及び前記フィルタ係数の積和演算を行うことを特徴とする。
【0014】
さらに、本発明に係る動き推定装置において、前記係数制御部は、前記動き推定部から入力される動きベクトルの水平成分及び垂直成分の各大きさに応じて、前記フィルタ係数の畳み込みカーネルの水平方向及び垂直方向のサイズを制御すること特徴とする。
【0016】
さらに、本発明に係る動き推定装置において、前記係数制御部は、前記動き推定部から入力される動きベクトルの水平成分及び垂直成分の各大きさに応じて、前記フィルタ係数の畳み込みカーネルの水平方向及び垂直方向のサイズを制御することを特徴とする。
【0017】
さらに、本発明に係る動き推定装置において、前記係数制御部により決定されるフィルタ係数の畳み込みカーネルのサイズは、該係数制御部よりも前段に配置された係数制御部により決定されるフィルタ係数の畳み込みカーネルのサイズを超えないことを特徴とする。
【0018】
さらに、本発明に係る動き推定装置において、前記係数制御部は、フィルタ係数列を複数組み記憶したフィルタ係数テーブルを備え、前記動き推定部から入力される動きベクトルに応じて、前記フィルタ係数テーブルからフィルタ係数を選択することを特徴とする。
【0019】
また、上記課題を解決するため、本発明に係るプログラムは、コンピュータを、上記動き推定装置として機能させることを特徴とする。
【発明の効果】
【0020】
本発明によれば、映像信号の動きベクトルを推定する際に、階層化を行うことなく、動きの大きい場合の動き推定の頑健性を維持しつつ、動きの小さい場合の動き推定の精度を向上させることができるようになる。
【図面の簡単な説明】
【0021】
図1】本発明の一実施形態に係る動き推定装置の構成を示すブロック図である。
図2】本発明の一実施形態に係る動き推定装置における動き推定部の構成を示すブロック図である。
図3】本発明の一実施形態に係る動き推定装置における畳込部の構成を示すブロック図である。
図4】本発明の一実施形態に係る動き推定装置における総和演算部の構成を示すブロック図である。
図5】本発明の一実施形態に係る動き推定装置が出力する動きベクトルの対象画素を説明する図である。
図6】本発明の一実施形態に係る動き推定装置が出力する動きベクトルの有効領域及び無効領域を説明する図である。
図7】本発明の一実施形態に係る動き推定装置における係数制御部の構成を示すブロック図である。
図8】本発明の一実施形態に係る、動き推定部を3つ備える場合の動き推定装置の構成を示すブロック図である。
【発明を実施するための形態】
【0022】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。
【0023】
図1は、本発明の一実施形態に係る動き推定装置の構成を示すブロック図である。図1に示す例では、動き推定装置1は、n個(n≧2)の動き推定部10と、(n−1)個の係数制御部20と、(n−1)個の遅延部30とを備える。動き推定部10及び係数制御部20は交互に直列に接続される。図1は、n=2の場合を示しており、動き推定装置1は、2個の動き推定部10(10−1及び10−2)と、1個の係数制御部20と、1個の遅延部30とを備える。
【0024】
動き推定部10−1は、入力映像信号I、及び畳み込み演算に用いられるフィルタ係数H(1)に基づいて動きベクトルV(1)を推定し、係数制御部20に出力する。動き推定部10の詳細については後述する。
【0025】
遅延部30は、動き推定部10−1における動き推定の遅延を補償するために、入力映像信号Iを遅延させて動き推定部10−2に出力する。遅延部30は例えばシフトレジスタによって実現される。動き推定部10−1がクロックのカウント値c(cは整数)の時点で出力する動きベクトルが、入力映像信号Iのクロックのカウント値c時点の画素位置に対応する場合には、入力映像信号Iをc−cクロックだけ遅延させる。
【0026】
係数制御部20は、前段(入力側)の動き推定部10−1により生成される動きベクトルV(1)=(u(1),v(1))に基づいて、後段(出力側)の動き推定部10−2の畳み込み演算に用いられるフィルタ係数H(2)を決定し、動き推定部10−2に出力する。係数制御部20の詳細については後述する。
【0027】
動き推定部10−2は、遅延部30によって遅延された入力映像信号I、及び係数制御部20によって決定されたフィルタ係数H(2)に基づいて動きベクトルV(2)を推定する。
【0028】
次に、動き推定部10の詳細について説明する。本実施形態では、勾配法を用いて動き推定を行うが、ブロックマッチング法により動き推定をおこなってもよい。
【0029】
図2は、勾配法を用いて動き推定を行う動き推定部10の構成を示すブロック図である。図2に示す例では、動き推定部10は、畳込部11と、差分演算部12と、乗算回路13(13−1乃至13−5)と、総和演算部14(14−1乃至14−5)と、乗算回路15(15−1乃至15−6)と、減算回路16(16−1乃至16−3)と、除算回路17(17−1及び17−2)とを備える。
【0030】
畳込部11は、動きベクトル推定の前処理として、ラスタスキャンによって画素値がクロックごとに順次入力される入力映像信号Iに対して、フィルタ係数Hを用いて畳込演算を行う。映像信号を構成するフレームの画像サイズを水平L画素、垂直M画素とおき、時刻t、画像座標(i,j)(i∈{0,1,…,L−1}、j∈{0,1,…,M−1})における画素値をI(t;i,j)とおく。ラスタスキャンにより、第cクロックにおいて、式(1)に示す画素値I(c)が入力される。ここに、c%LはcをLで除したときの剰余を表す。
はzより大きくない最大の整数を表す。また、Fは1フレーム内の画素数(すなわち、F=L・M)を表すものとする。
【0031】
【数1】
【0032】
図3は、畳込部11の構成例を示すブロック図である。畳込部11は、所定のブロック内で入力信号とフィルタ係数との積和演算を行うためのシフトレジスタ、加算回路、及び乗算回路を有する。図3に示す例では、畳込部11は、シフトレジスタ111(111−1乃至111−4)と、乗算回路112(112−1乃至112−5)と、加算回路113と、シフトレジスタ114(114−1乃至114−4)と、乗算回路115(115−1乃至115−5)と、加算回路116とを備える。
【0033】
ここで、所望の畳込係数列(畳込カーネル)のサイズを水平K画素、垂直K画素とし、座標(i,j)(i∈(0,1,…,K−1)、j∈(0,1,…,K−1))における畳込係数をC(i,j)とおく。図3では畳込カーネルのサイズを5×5とする場合の構成を示しているが、実際には、シフトレジスタ111はK−1個の遅延要素によって構成され、乗算回路112はK個の乗算回路により構成され、シフトレジスタ114はK−1個の遅延要素により構成され、乗算回路115はK個の乗算回路により構成されるものとする。
【0034】
シフトレジスタ111は、入力信号Iを1クロックずつ遅延させて出力する。
【0035】
乗算回路112は、入力信号、及びシフトレジスタ111の遅延要素の各出力に対してそれぞれスカラーg,g,…,gを乗じ、乗算値を加算回路113に出力する。
【0036】
加算回路113は、乗算回路112から入力される乗算値の総和値A(c)を求め、シフトレジスタ114−1及び乗算回路115−1に出力する。A(c)は、式(2)で表される。
【0037】
【数2】
【0038】
シフトレジスタ114は、入力信号を1ライン(すなわちLクロック)ずつ遅延させて出力する。
【0039】
乗算回路115は、加算回路113の出力、及びシフトレジスタ114の遅延要素の各出力に対してそれぞれスカラーh,h,…,hを乗じ、乗算値を加算回路116に出力する。
【0040】
加算回路116は、乗算回路115の出力値の総和値B(c)を求め、差分演算部12に出力する。B(c)は、式(3)で表される。
【0041】
【数3】
【0042】
この演算結果は、座標(i,j)における値がg・hとなる2次元関数を、入力系列値I(c)を画像内の矩形の右下とし、水平K画素、垂直K画素の矩形内において入力系列値I(c)を2次元的に畳み込んだ結果に一致する。
【0043】
以上、畳込部11の処理について説明したが、動き推定装置1の入力側に設けられる動き推定部10−1においては、畳込部11を備えないで、入力映像信号Iを差分演算部12に直接入力するようにしてもよい。その場合には、フィルタ係数H(1)を入力する必要はない。また、動き推定部10−1及び動き推定部10−2は、各々に内在する畳込部11のタップ長が異なっても同一であってもよい。
【0044】
再び図2の説明に戻る。差分演算部12は、シフトレジスタ121(121−1乃至121−3)と、減算回路122(122−1乃至122−3)とを備える。差分演算部12の入力信号をBとし、その第cクロックにおける画素値をB(c)とする。
【0045】
シフトレジスタ121−1は、入力信号Bを1クロック遅延させて1クロック遅延画素値B(c−1)を出力する。シフトレジスタ121−2は、入力信号Bを1ライン(すなわちLクロック)遅延させて1ライン遅延画素値B(c−L)を出力する。シフトレジスタ121−3は、入力信号Bを1フレーム(すなわちF=L・Mクロック)遅延させて1フレーム遅延画素値B(c−F)を出力する。
【0046】
減算回路122−1は、入力画素値B(c)と、シフトレジスタ121−1から出力される1クロック遅延画素値B(c−1)との差分を演算し、水平差分値B(c)を出力する。すなわち、B(c)=B(c)−B(c−1)である。
【0047】
減算回路122−2は、入力画素値B(c)と、シフトレジスタ121−2から出力される1ライン遅延画素値B(c−L)との差分を演算し、垂直差分値B(c)を出力する。すなわち、B(c)=B(c)−B(c−L)である。
【0048】
減算回路122−3は、入力画素値B(c)と、シフトレジスタ121−3から出力される1フレーム遅延画素値B(c−F)との差分を演算し、時間差分値B(c)を出力する。すなわち、B(c)=B(c)−B(c−F)である。
【0049】
乗算回路13は、B(c)・B(c)、B(c)・B(c)、B(c)・B(c)、B(c)・B(c)、及びB(c)・B(c)をそれぞれ求め、その結果を総和演算部14に出力する。
【0050】
総和演算部14は、画像内における水平サイズT画素、垂直サイズTの矩形ブロック内において乗算回路13から入力される乗算値の総和をそれぞれ求め、その結果を乗算回路15に出力する。総和演算部14−1乃至14−5はすべて同じ構成で実現できる。
【0051】
図4は、総和演算部14の構成を示すブロック図である。図4に示す例では、総和演算部14は、シフトレジスタ141(14−1乃至14−4)と、加算回路142と、シフトレジスタ143(143−1乃至143−4)と、加算回路144とを備える。総和演算部14の入力信号Dの第cクロックにおける画素値をD(c)とする。
【0052】
シフトレジスタ141は、入力信号Dを1クロック遅延させて出力する。図4では4個の遅延要素により構成されているが、実際にはT−1個の遅延要素によって構成されるものとする。
【0053】
加算回路142は、画素値D(c)及びシフトレジスタ141の各出力の総和値E(c)を算出する。総和値E(c)は式(4)で表される。
【0054】
【数4】
【0055】
シフトレジスタ143は、入力信号を1ライン(すなわちLクロック)遅延させて出力する。図4では4個の遅延要素により構成されているが、実際にはT−1個の遅延要素によって構成されるものとする。
【0056】
加算回路144は、加算回路142の出力値及びシフトレジスタ143の各出力の総和値F(c)を算出する。総和値F(c)は式(5)で表される。これは、入力系列値D(c)を画像内の矩形の右下とし、水平T画素、垂直T画秦の矩形内において2次元的に入力系列値D(c)を総和した結果に一致する。
【0057】
【数5】
【0058】
再び図2の説明に戻る。総和演算部14は、乗算回路13の結果をそれぞれ画像内の水平T画素、垂直T画素の矩形内において総和演算を実行する。総和演算部14−1乃至14−5の演算結果U(c)、R(c)、T(c)、Q(c)、及びP(c)は、それぞれ式(6)乃至式(10)で表される。
【0059】
【数6】
【0060】
乗算回路15は、R(c)・U(c)、R(c)・T(c)、Q(c)・T(c)、P(c)・Q(c)、P(c)・U(c)、及びR(c)をそれぞれ求め、その結果を減算回路16に出力する。
【0061】
減算回路16−1は、乗算回路15−3の出力値Q(c)・T(c)から乗算回路15−1の出力値R(c)・U(c)を減じた減算値(Q(c)・T(c)−R(c)・U(c))を除算回路17−1に出力する。減算回路16−2は、乗算回路15−6の出力値R(c)から乗算回路15−4の出力値P(c)・Q(c)を減じた減算値(R(c)−P(c)・Q(c))を除算回路17−1及び17−2に出力する。減算回路16−3は、乗算回路15−5の出力値P(c)・U(c)から乗算回路15−2の出力値R(c)・T(c)を減じた減算値(P(c)・U(c)−R(c)・T(c))を除算回路17−2出力する。
【0062】
除算回路17−1は、減算回路16−1の出力値を減算回路16−2の出力値により除した除算値u(c)を出力する。除算回路17−2は、減算回路16−3の出力値を減算回路16−2の出力値により除した除算値v(c)を出力する。除算値u(c)及びv(c)はそれぞれ式(11)及び(12)で表される。このようにして得られるベクトル(u(c),v(c))は、勾配法による動きベクトルに相当する。動きベクトルはクロックごとにラスタスキャン順序にて画素単位で更新される。
【0063】
【数7】
【0064】
図5は、動き推定装置1が出力する動きベクトルの対象画素を説明する図である。クロックcの時点で入力映像として入力された画素位置が図5中のI(c)の位置である場合、当該時点で得られる動きベクトル(u(c),v(c))は、図5の領域100内の画素値列に対して演算した結果となっている。典型的にはクロックcの時点で出力される動きベクトル(u(c),v(c))は領域100の中心画素における動きを表している。なお、動き推定部10−1が畳込部11を備えない場合には、領域100は水平方向にT−1画素、垂直方向にT−1画素の領域となる。
【0065】
図6は、動き推定装置1が出力する動きベクトルの有効領域及び無効領域を説明する図である。図6(a)に示すように、クロックcの時点の入力画素の位置I(c)が入力画像の端寄りに存在する場合には、演算に用いられた画素値列が、図6の領域200及び領域201のように別々に割れてしまうことや、フレームを跨いでしまうことがある。このような場合に得られる動きベクトル(u(c),v(c))は信頼できない。そのため、入力画像の位置I(c)が図6(b)に示す領域300内に位置する場合には、動きベクトルを動き推定部10から出力しないなどして利用しないようにし、入力画像の位置I(c)が領域301内に位置する場合のみ、その動きベクトルを利用することが好ましい。
【0066】
あるいは、動き推定部10の前段にて、入力フレームの大きさを左及び上方向にそれぞれK+T−2画素及びK+T−2画素分だけ拡張することで、元の入力映像Iの画面全体をカバーする動きベクトルを得ることもできる。このときの拡張には、0次外挿(最近傍補間)を用いることが好ましい。
【0067】
再び図1の説明に戻る。動き推定部10−1には、入力映像I及びフィルタ係数H(1)が入力される。フィルタ係数H(1)は例えば固定係数とし、その点拡がりは想定される動きベクトルの最大値を半径とする円内程度に設定する。例えば、動きベクトルの大きさとして、最大2画素を想定する場合には、半径2画素程度の拡がりを有する平滑化フィルタの係数をフィルタ係数H(1)として与える。例えば、フィルタ係数H(1)として、水平フィルタ係数g。乃至g及び垂直フィルタ係数h乃至hにそれぞれガウシアンや移動平均フィルタの係数を設定する。具体的には、例えば、g=g=g=g=g=h=h=h=h=h=1/5とする。
【0068】
次に、係数制御部20の詳細について説明する。係数制御部20は、動き推定部10−1の出力する動きベクトルV(1)=(u(1),v(1))に基づき、出力するフィルタ係数H(2)を決定する。係数制御部20は、例えば、動きベクトルV(1)の大きさが大きいほど、点拡がり(畳込カーネルのサイズ)の大きいフィルタ係数H(2)を出力する。あるいは、係数制御部20は、動きベクトルV(1)の水平成分u(1)及び垂直成分v(1)のそれぞれの大きさに応じて、水平方向の点拡がりと垂直方向の点拡がりを独立に制御してもよい。
【0069】
図7は、係数制御部20の構成を示すブロック図である。図7に示す例では、係数制御部20は、フィルタ選択部21と、フィルタ係数テーブル22とを備える。
【0070】
フィルタ選択部21は、入力された動きベクトルV(1)の大きさ、又は入力された動きベクトルの水平成分u(1)及び垂直成分v(1)の大きさに応じて、出力すべきフィルタ係数H(2)の点拡がりを制御する。フィルタ選択部21は、動きベクトルV(1)の水平成分u(1)及び垂直成分v(1)の大きさに応じて、出力すべきフィルタ係数の拡がりを制御する場合、例えば式(13)に示すような闘値処理によって、選択出力すべきフィルタを識別するインデックスwの値を決定する。
【0071】
【数8】
【0072】
式(13)において、θ及びθは、動きベクトルV(1)の水平成分u(1)及び垂直成分v(1)に対してその絶対値の大小を判定するための閥値であり、いずれも正の実数とする。例えば、θ=2、θ=2とすると、水平成分u(1)の大きさが2画素より大きいか否か、垂直成分v(1)の大きさが2画素より大きいか否かの組み合わせによって、wの値が0乃至3に決定される。
【0073】
フィルタ係数H(2)の点拡がりの大きさは、フィルタ係数H(1)の点拡がりの大きさを超えないようにするのが好適である。なお、動き推定部10−1が畳込部11を備えない場合については、フィルタ係数H(1)は入力されないが、点拡がりの大きさが無限大のフィルタ係数H(1)が入力されているとみなすと、フィルタ係数H(2)の点拡がりの大きさはフィルタ係数H(1)よりも小さいといえる。
【0074】
フィルタ係数テーブル22は、インデックスwごとに出力すべきフィルタ係数H(2)が記憶されているルックアップテーブルを備える。フィルタ係数テーブル22は、入力されたインデックスwの値に応じてルックアップテーブルを参照し、インデックスwに対応付けられたフィルタ係数をフィルタ係数H(2)として出力する。
【0075】
図7のフィルタ係数テーブル22の吹き出しにルックアップテーブルの一例を示す。このルックアップテーブルによれば、フィルタ係数テーブル22からはフィルタ係数H(2)として、インデックスw=0のときには3×3画素の移動平均フィルタが、インデックスw=1のときには5×3画素の移動平均フィルタが、インデックスw=2のときには3×5画素の移動平均フィルタが、インデックスw=3のときには5×5画素の移動平均フィルタが、それぞれ出力される。
【0076】
図1に示す実施形態では、動き推定装置1が動き推定部10を2個備える場合について説明したが、動き推定部10を3個以上備えてもよい。図8は、動き推定部10を3個備える場合の動き推定装置1の構成を示すブロック図である。
【0077】
後段に配置される係数制御部20により決定されるフィルタ係数の点拡がりの大きさ(畳込カーネルのサイズ)は、前段に配置される係数制御部20により決定されるフィルタ係数の点拡がりの大きさを超えないようにするのが好適である。以下に具体例を述べる。例えば、動き推定部10−1に入力されるフィルタ係数H(1)の畳込カーネルのサイズを65×65画素とする。係数制御部20−1は動きベクトルV(1)の大きさを判定し、20画素よりも大きい場合にはフィルタ係数H(2)の畳込カーネルのサイズを51×51画素とし、20画素以下である場合にはフィルタ係数H(2)の畳込カーネルのサイズを41×41画素とする。係数制御部20−2は動きベクトルV(2)の大きさを判定し、20画素よりも大きい場合にはフィルタ係数H(2)の畳込カーネルのサイズを51×51画素とし、10画素よりも大きく20画素以下である場合にはフィルタ係数H(2)の畳込カーネルのサイズを41×41画素とし、10画素以下である場合にはフィルタ係数H(2)の畳込カーネルのサイズを21×21画素とる。
【0078】
上述したように、動き推定装置1は、入力映像信号から動きベクトルを推定するn個(n≧2)の動き推定部10−1乃至10−nと、動きベクトルに基づいて畳み込み演算に用いられるフィルタ係数を決定する、(n−1)個の係数制御部20−1乃至20−(n−1)とを備え、動き推定部10及び係数制御部20は交互に直列に接続され、各係数制御部20−k(1≦k≦n−1)は、前段に接続された動き推定部10−kから出力される動きベクトルに基づいて、後段に接続される動き推定部10−(k+1)のフィルタ係数を決定し、最後段の動き推定部10−nによって推定された動きベクトルV(n)を出力する。
【0079】
かかる構成により、動き推定装置1は、まず前段の動き推定部10によっておおまかな動きベクトルを求め、この動きベクトルの大きさや方向に応じてその後段の動き推定部10においてフィルタ係数の点拡がりを制御することができる。かくして、階層化を行うことなく、大きな動きベクトルから小さな動きベクトルまで頑健に算出することができ、小さな動きベクトルはより高精度に算出することが可能となる。
【0080】
ここで、最前段の動き推定部10−1も、外部から入力されるフィルタ係数H(1)を用いて畳み込み演算を行うのが好適である。このような構成にすることにより、映像信号に含まれる雑音が動きベクトルに与える悪影響を抑えることができるほか、動きベクトルが大きい場合(総和演算部14が総和演算を行うブロックの大きさ程度よりも大きい場合)においても動き推定が可能となる。
【0081】
動き推定部10は、ブロックマッチング法により動きベクトルを推定してもよい。ただし、ブロックマッチング法においては、探索先の画像内においてブロック領域をずらしながら相関演算あるいは誤差演算(以下、相関演算等)を行う必要がある。そのため、ソフトウェア処理では繰り返しループが必要であり、演算処理時間がかかる。また、ハードウェア処理では、例えば、シフトレジスタによって構成されるラインメモリを複数ライン分確保し、該メモリに探索先の画像を構成する画素値をクロックに従って順次入力し、相関演算等をとるべき画素群の対を、相関演算等を行う演算器へ配線して、相関演算等を実行する。このとき、探索元の画像内のある1ブロックにつき、探索先の画像内における複数の位置のブロック群に対して、それぞれ相関等の演算を行う必要がある。このため、探索元の1ブロック内の画素列と、探索先の1ブロック内の画素列とを相関演算器に全て配線したとしても、探索元のブロック位置の総数と、探索先の探索領域内のブロック位置の総数の積の回数だけシフトレジスタをシフトさせなければフレーム内の動きベクトルを求めることができない。シフトレジスタのシフト回数を減らすためには、異なる複数のブロック対に対して並列的に配線を行う必要がある。いずれにしても、例えばFPGA(Field-Programmable Gate Array)等による論理部・順序部においてブロックマッチングを実装することは、ハードウェア規模及び演算処理時間の観点で高コストである。
【0082】
そこで、動き推定部10は、勾配法により動きベクトルを推定するのが好適である。勾配法においては、さまざまな大きさの動きに対応させるためには、多くの階層を有する階層化手法を用いることも考えられるが、ソフトウェア、ハードウェアいずれの実装に置いても演算コストや所要リソースの観点で不利である。そこで動き推定部10を、図2乃至図4を参照して説明した回路構成とし、階層化を行わないで動き推定をするのがより好適である。上述したように、動き推定部10は、シフトレジスタと、乗算回路、加算回路、減算回路、及び除算回路17によって動きベクトルVを順次オンラインで演算することができる。ハードウェア規模が大きくなる要因である除算回路17はわずか2個であり、他はフリップフロップとDSP(Digital Signal Processor)で容易に実現できるため、演算回路を小規模化でき、演算処理時間も短縮することが可能となる。
【0083】
また、上述したように、係数制御部20は、動き推定部10から入力される動きベクトルの大きさに応じて、フィルタ係数の点拡がりを制御するか、あるいは、動きベクトルの水平成分及び垂直成分の各大きさに応じて、フィルタ係数の水平方向及び垂直方向の点拡がりを制御する。そして、後段に配置された係数制御部20により決定されるフィルタ係数の点拡がりの大きさが前段に配置された係数制御部20により決定されるフィルタ係数の点拡がりの大きさを超えないようにする。かかる構成により、動きベクトルに応じて適応的にフィルタ係数を決定することができ、動きの大きい場合の動き推定の頑健性と動きの小さい場合の動き推定の精度とを両立して向上させることができる。
【0084】
また、係数制御部20は、フィルタ係数列を複数組み記憶したフィルタ係数テーブル22を備え、動き推定部10から入力される動きベクトルに応じてフィルタ係数テーブル22からフィルタ係数を選択するようにしてもよい。このように構成することにより、フィルタ係数の決定を高速化することができる。
【0085】
なお、上述した動き推定装置1として機能させるためにコンピュータを好適に用いることができ、そのようなコンピュータは、動き推定装置1の各機能を実現する処理内容を記述したプログラムを当該コンピュータの記憶部に格納しておき、当該コンピュータのCPUによってこのプログラムを読み出して実行させることで実現することができる。なお、このプログラムは、コンピュータ読取り可能な記録媒体に記録することができる。
【0086】
上述の実施形態は代表的な例として説明したが、本発明の趣旨及び範囲内で、多くの変更及び置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。例えば、実施形態に記載の複数の構成ブロックを1つに組み合わせたり、あるいは1つの構成部ブロックを分割したりすることが可能である。
【産業上の利用可能性】
【0087】
このように、本発明によれば、映像から動きベクトルを推定する際に、大きな動きベクトルから小さな動きベクトルまで頑健に求めることができるので、動きベクトルを推定する任意の用途に有用である。
【符号の説明】
【0088】
1 動き推定装置
10 動き推定部
11 畳込部
12 差分演算部
13,15,112,115 乗算回路
14 総和演算部
16,122 減算回路
17 除算回路
20 係数制御部
21 フィルタ選択部
22 フィルタ係数テーブル
30 遅延部
111,114,121,141,143 シフトレジスタ
113,116,142,144 加算回路
図1
図2
図3
図4
図5
図6
図7
図8