(57)【要約】【課題】回路規模や消費電力を増大させることなく、動き検出の精度を高くする。【解決手段】プロセッサアレイ２０は、１次元アレイ状に接続された複数のＰＥ３０を含み、現画像Ｄ０と参照画像Ｄ１ａなどに基づき、複数の動きベクトル候補について並列に差分絶対値和ＳＡＤを算出する。制御部５０は、動きベクトル生成部４０で生成された動きベクトルＭＶに基づき、画像の動きが大きいか否かを判定する。この判定結果に応じて、データ供給部１０は異なる広さの探索範囲に対応した参照画像を供給し、プロセッサアレイ２０はＰＥ３０の接続形態を切り換える。動き検出装置１は、画像の動きが大きいときには、すべてのＰＥ３０を用いて所定の探索範囲内で整数精度探索と３種類の半画素精度探索を順に実行し、画像の動きが小さいときには、ＰＥ３０を４群に分割し、より狭い探索範囲内で４種類の探索を並列に実行する。【選択図】図１
2007189308.tif 000002
【特許請求の範囲】
【請求項１】
ブロックマッチング法を用いて動きベクトルを求める動き検出装置であって、
現画像および参照画像を供給するデータ供給部と、
アレイ状に接続された複数のプロセッサを含み、前記データ供給部から供給された現画像および参照画像に基づき、複数の動きベクトル候補について並列に所定の評価値を算出するプロセッサアレイと、
前記プロセッサアレイで算出された評価値に基づき、動きベクトルを生成する動きベクトル生成部と、
画像の動きが大きいか否かを判定する動き判定部とを備え、
前記データ供給部は、前記動き判定部による判定結果に応じて、異なる広さの探索範囲に対応した参照画像を供給し、
前記プロセッサアレイは、前記動き判定部による判定結果に応じて、前記プロセッサの接続形態を切り換えることを特徴とする、動き検出装置。
【請求項２】
前記動き判定部で画像の動きが大きいと判定されたときには、前記データ供給部は、現画像および第１の探索範囲に対応した参照画像を画素ごとに供給し、前記プロセッサアレイは、前記データ供給部から供給された現画像が前記プロセッサのそれぞれに順送りで供給され、かつ、前記データ供給部から供給された参照画像が前記プロセッサのすべてに同じタイミングで供給されるように前記プロセッサの接続形態を切り換え、
前記動き判定部で画像の動きが小さいと判定されたときには、前記データ供給部は、現画像および前記第１の探索範囲よりも狭い第２の探索範囲に対応した複数の参照画像を画素ごとに供給し、前記プロセッサアレイは、前記プロセッサを複数の群に分割し、前記データ供給部から供給された現画像が複数の系統に分かれて各群内のプロセッサのそれぞれに順送りで供給され、かつ、前記データ供給部から供給された複数の参照画像のそれぞれが各群内のすべてのプロセッサに同じタイミングで供給されるように前記プロセッサの接続形態を切り換えることを特徴とする、請求項１に記載の動き検出装置。
【請求項３】
前記動き判定部で画像の動きが大きいと判定されたときには、前記データ供給部は、現画像を４回繰り返して供給すると共に、現画像の各回の供給に合わせて、前記第１の探索範囲内の整数精度探索で用いられる第１参照画像、前記第１参照画像を水平方向に半画素分移動させた画像、前記第１参照画像を垂直方向に半画素分移動させた画像、および、前記第１参照画像を水平垂直両方向に半画素分移動させた画像を順に供給し、
前記動き判定部で画像の動きが小さいと判定されたときには、前記データ供給部は、現画像の供給に合わせて、前記第２の探索範囲内の整数精度探索で用いられる第２参照画像、前記第２参照画像を水平方向に半画素分移動させた画像、前記第２参照画像を垂直方向に半画素分移動させた画像、および、前記第２参照画像を水平垂直両方向に半画素分移動させた画像を並列に供給することを特徴とする、請求項２に記載の動き検出装置。
【請求項４】
前記プロセッサアレイは、前記評価値として、前記データ供給部から供給された現画像と参照画像の間の差分絶対値和を算出することを特徴とする、請求項１に記載の動き検出装置。
【請求項５】
前記動き判定部は、前記動きベクトル生成部で過去に生成された動きベクトルに基づき、画像の動きが大きいか否かを判定することを特徴とする、請求項１に記載の動き検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動き検出装置に関し、特に、プロセッサアレイを備え、ブロックマッチング法を用いて動きベクトルを求める動き検出装置に関する。
【背景技術】
【０００２】
ＭＰＥＧ（Moving Picture Experts Group）などのデジタル動画像符号化処理では、画像の動きを検出するために、現画像を所定の２次元小領域（マクロブロックあるいはブロックと呼ばれる）に分割し、２次元小領域ごとに動きベクトルを求めるブロックマッチング法が広く用いられている。一般にブロックマッチング法では、現画像の画素値をＡi,j 、参照画像の画素値をＢi,j としたとき、所定の探索範囲内において次式（１）で定義される差分絶対値和ＳＡＤを最小にする動きベクトル候補（ｓ，ｔ）が、動きベクトルとして選択される。
ＳＡＤ（ｓ，ｔ）＝ＳＩＧＭＡ（｜Ａi,j −Ｂi+s,j+t ｜）  …（１）
ただし、上式（１）において、ＳＩＧＭＡは、２次元小領域内のすべての画素についての和を表す。
【０００３】
上式（１）による差分絶対値和ＳＡＤを評価値として用いることにより、Ｘ成分およびＹ成分がいずれも整数である動きベクトルを求めることができる。以下、この処理を「Ｘ整数／Ｙ整数探索」という。ＭＰＥＧでは、動きベクトルの成分は半画素単位の値でもよいと規定されている。そこで、ＭＰＥＧ符号化処理では、予測誤差が小さい動きベクトルを求めるために、Ｘ整数／Ｙ整数探索に加えて、Ｘ半画素／Ｙ整数探索、Ｘ整数／Ｙ半画素探索、および、Ｘ半画素／Ｙ半画素探索が行われる。
【０００４】
Ｘ半画素／Ｙ整数探索では、Ｘ成分の小数部が０．５で、Ｙ成分が整数である動きベクトルを求めるために、上式（１）のＢi+s,j+t を（Ｂi+s,j+t ＋Ｂi+s+1,j+t ）／２に置換した差分絶対値和が評価値として用いられる。Ｘ整数／Ｙ半画素探索では、Ｘ成分が整数で、Ｙ成分の小数部が０．５である動きベクトルを求めるために、上式（１）のＢi+s,j+t を（Ｂi+s,j+t ＋Ｂi+s,j+t+1 ）／２に置換した差分絶対値和が評価値として用いられる。Ｘ半画素／Ｙ半画素探索では、Ｘ成分およびＹ成分の小数部がいずれも０．５である動きベクトルを求めるために、上式（１）のＢi+s,j+t を（Ｂi+s,j+t ＋Ｂi+s+1,j+t ＋Ｂi+s,j+t+1 ＋Ｂi+s+1,j+t+1 ）／４に置換した差分絶対値和が評価値として用いられる。これら３種類の探索結果も含めて差分絶対値和ＳＡＤを最小にする動きベクトル候補が、動きベクトルとして選択される。
【０００５】
動画像符号化ビットストリームに基づく復号画像の画質を向上させるためには、符号化時に高い精度で動き検出を実行する必要がある。このためには、多くの動きベクトル候補について差分絶対値和ＳＡＤを算出することが好ましいが、差分絶対値和ＳＡＤの算出には膨大な量の演算が必要とされる。そこで、従来から、差分絶対値和ＳＡＤを並列に算出するプロセッサアレイを備えた動き検出装置が知られている（例えば、特許文献１や特許文献２）。
【特許文献１】特開平１０−９８７３０号公報
【特許文献２】特開２００４−２１４７３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のプロセッサアレイを備えた動き検出装置は、画像の特性に関わらず同じ探索範囲内で動きベクトルを求めるので、動き検出の精度を高めるためにはプロセッサの個数を増やす必要がある。このため、従来のプロセッサアレイを備えた動き検出装置には、動き検出の精度を高めようとすると、回路規模や回路の消費電力が増大するという問題がある。
【０００７】
それ故に、本発明は、回路規模や消費電力を増大させることなく、高い精度で動き検出を実行する動き検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
第１の発明は、ブロックマッチング法を用いて動きベクトルを求める動き検出装置であって、
現画像および参照画像を供給するデータ供給部と、
アレイ状に接続された複数のプロセッサを含み、前記データ供給部から供給された現画像および参照画像に基づき、複数の動きベクトル候補について並列に所定の評価値を算出するプロセッサアレイと、
前記プロセッサアレイで算出された評価値に基づき、動きベクトルを生成する動きベクトル生成部と、
画像の動きが大きいか否かを判定する動き判定部とを備え、
前記データ供給部は、前記動き判定部による判定結果に応じて、異なる広さの探索範囲に対応した参照画像を供給し、
前記プロセッサアレイは、前記動き判定部による判定結果に応じて、前記プロセッサの接続形態を切り換えることを特徴とする。
【０００９】
第２の発明は、第１の発明において、
前記動き判定部で画像の動きが大きいと判定されたときには、前記データ供給部は、現画像および第１の探索範囲に対応した参照画像を画素ごとに供給し、前記プロセッサアレイは、前記データ供給部から供給された現画像が前記プロセッサのそれぞれに順送りで供給され、かつ、前記データ供給部から供給された参照画像が前記プロセッサのすべてに同じタイミングで供給されるように前記プロセッサの接続形態を切り換え、
前記動き判定部で画像の動きが小さいと判定されたときには、前記データ供給部は、現画像および前記第１の探索範囲よりも狭い第２の探索範囲に対応した複数の参照画像を画素ごとに供給し、前記プロセッサアレイは、前記プロセッサを複数の群に分割し、前記データ供給部から供給された現画像が複数の系統に分かれて各群内のプロセッサのそれぞれに順送りで供給され、かつ、前記データ供給部から供給された複数の参照画像のそれぞれが各群内のすべてのプロセッサに同じタイミングで供給されるように前記プロセッサの接続形態を切り換えることを特徴とする。
【００１０】
第３の発明は、第２の発明において、
前記動き判定部で画像の動きが大きいと判定されたときには、前記データ供給部は、現画像を４回繰り返して供給すると共に、現画像の各回の供給に合わせて、前記第１の探索範囲内の整数精度探索で用いられる第１参照画像、前記第１参照画像を水平方向に半画素分移動させた画像、前記第１参照画像を垂直方向に半画素分移動させた画像、および、前記第１参照画像を水平垂直両方向に半画素分移動させた画像を順に供給し、
前記動き判定部で画像の動きが小さいと判定されたときには、前記データ供給部は、現画像の供給に合わせて、前記第２の探索範囲内の整数精度探索で用いられる第２参照画像、前記第２参照画像を水平方向に半画素分移動させた画像、前記第２参照画像を垂直方向に半画素分移動させた画像、および、前記第２参照画像を水平垂直両方向に半画素分移動させた画像を並列に供給することを特徴とする。
【００１１】
第４の発明は、第１の発明において、
前記プロセッサアレイは、前記評価値として、前記データ供給部から供給された現画像と参照画像の間の差分絶対値和を算出することを特徴とする。
【００１２】
第５の発明は、第１の発明において、
前記動き判定部は、前記動きベクトル生成部で過去に生成された動きベクトルに基づき、画像の動きが大きいか否かを判定することを特徴とする。
【発明の効果】
【００１３】
上記第１の発明によれば、動き検出装置は、動き検出用の評価値を並列に算出するプロセッサアレイを備え、画像の動きが大きいか否かに応じて、探索範囲の広さとプロセッサの接続形態を切り換える。このように画像の動き量に応じて探索範囲の広さを切り換えることにより、無駄な探索を実行せずに、有効な探索を実行することができる。したがって、回路規模や消費電力を増大させることなく、高い精度で動き検出を実行することができる。
【００１４】
上記第２の発明によれば、動き検出装置は、現画像を各プロセッサに順送りで供給し、参照画像をすべてのプロセッサに同じタイミングで供給するプロセッサアレイを備え、画像の動きが大きいときには広い探索範囲内で探索を実行し、画像の動きが小さいときには狭い探索範囲内で探索を実行する。したがって、画像の動きが小さいときには無駄な探索を実行せずに、画像の動きが大きいときには有効な探索を実行することにより、高い精度で動き検出を実行することができる。
【００１５】
上記第３の発明によれば、動き検出装置は、画像の動きが大きいときには整数精度探索と３種類の半画素精度探索を順に実行し、画像の動きが小さいときには整数精度探索と３種類の半画素精度探索を並列に実行する。したがって、画像の動きが小さいときには無駄な探索を実行せずに、画像の動きが大きいときには有効な探索を実行することにより、高い精度で動き検出を実行すると共に、画像の動きの大小にかかわらず、半画素単位の動きベクトルを求めることができる。
【００１６】
上記第４の発明によれば、現画像と参照画像の間の差分絶対値和を評価値として、動きベクトルを求めることができる。
【００１７】
上記第５の発明によれば、過去に生成された動きベクトルに基づき、画像の動きが大きいか否かを容易に判定することができる。
【発明を実施するための最良の形態】
【００１８】
図１は、本発明の実施形態に係る動き検出装置の構成を示すブロック図である。図１に示す動き検出装置１は、データ供給部１０、複数のプロセッサエレメント（以下、ＰＥという）３０を含むプロセッサアレイ２０、動きベクトル生成部４０、および、制御部５０を備えている。動き検出装置１は、マクロブロックを処理単位としたブロックマッチング法を用いて半画素単位の動きベクトルを求めるために、Ｘ整数／Ｙ整数探索、Ｘ半画素／Ｙ整数探索、Ｘ整数／Ｙ半画素探索、および、Ｘ半画素／Ｙ半画素探索を実行する（以下、これらを「４種類の探索」と総称する）。
【００１９】
動き検出装置１は、概ね以下のように動作する。動き検出装置１の外部には、現画像および参照画像を記憶したフレームメモリ（図示せず）が接続される。データ供給部１０は、フレームメモリから現画像および参照画像を１回の動き検出に必要な量を単位として読みだし、読み出した現画像および参照画像をプロセッサアレイ２０に供給する。
【００２０】
プロセッサアレイ２０は、１次元アレイ状に接続された複数のＰＥ３０を含んでいる。プロセッサアレイ２０は、データ供給部１０から供給された現画像Ｄ０および参照画像Ｄ１ａ〜Ｄ１ｄ、Ｄ２ａ〜Ｄ２ｄに基づき、複数の動きベクトル候補について並列に差分絶対値和ＳＡＤを算出する。プロセッサアレイ２０に含まれる各ＰＥ３０は、互いに独立して、１つの動きベクトル候補について差分絶対値和ＳＡＤを算出する。
【００２１】
動きベクトル生成部４０は、プロセッサアレイ２０で算出された差分絶対値和ＳＡＤ０〜ＳＡＤ３１に基づき、動きベクトルＭＶを生成する。動きベクトル生成部４０は、プロセッサアレイ２０で算出された差分絶対値和ＳＡＤを最小にする動きベクトル候補を動きベクトルＭＶとして選択する。動きベクトル生成部４０で生成された動きベクトルＭＶは、動き検出装置１の外部に出力されると共に、制御部５０に供給される。
【００２２】
制御部５０は、動き検出装置１の動作を制御する。例えば、制御部５０は、プロセッサアレイ２０に対して、制御信号ＣＴＲＬや選択制御信号ＢＳＥＬ０〜ＢＳＥＬ３１を出力する。これに加えて、制御部５０は、画像の動きが大きいか否かを判定する動き判定部として機能する。制御部５０は、動きベクトル生成部４０で過去に生成された動きベクトルＭＶを記憶し、記憶した動きベクトルに基づき、画像の動きが大きいか否かを判定する。制御部５０は、画像の動きが大きいと判定したときには、広範囲探索を示す値（例えば、０）を有するモード選択信号ＭＯＤＥを出力し、画像の動きが小さいと判定したときには、狭範囲探索を示す値（例えば、１）を有するモード選択信号ＭＯＤＥを出力する。モード選択信号ＭＯＤＥは、データ供給部１０やプロセッサアレイ２０に供給される。
【００２３】
データ供給部１０は、モード選択信号ＭＯＤＥに応じて、異なる広さの探索範囲に対応した参照画像を供給する。プロセッサアレイ２０は、モード選択信号ＭＯＤＥに応じて、ＰＥ３０の接続形態を切り換える。これにより動き検出装置１は、画像の動きが大きいと判定したときには、すべてのＰＥ３０を用いて第１の探索範囲内で４種類の探索を順に実行し、画像の動きが小さいと判定したときには、ＰＥ３０を４群に分割し、第１の探索範囲よりも狭い第２の探索範囲内で４種類の探索を並列に実行する。
【００２４】
図２は、動き検出装置１の動作を示すフローチャートである。図２において、ステップＳ１０〜Ｓ２３は制御部５０によって実行され、ステップＳ３１〜Ｓ４１はデータ供給部１０、プロセッサアレイ２０および動きベクトル生成部４０（以下、これらを「探索実行部」と総称する）によって実行される。探索実行部は、各マクロブロックについて、ステップＳ３１〜Ｓ３４またはステップＳ４１のいずれかを実行する。制御部５０は、各マクロブロックについてステップＳ１０〜Ｓ２３を実行してもよく、あるいは、複数のマクロブロックについて１回の割合でステップＳ１０〜Ｓ２３を実行してもよい。
【００２５】
制御部５０は、まず、画像の動きが大きいか否かを判定する動き判定処理を実行する（ステップＳ１０）。図３は、動き判定処理の一例を示すフローチャートである。図３に示す動き判定処理では、調査対象のマクロブロックの中に動きベクトルが大きいものが多く含まれている場合には、画像の動きは大きいと判定され、それ以外の場合には、画像の動きは小さいと判定される。
【００２６】
具体的には、制御部５０は、動き判定処理では、まず変数Ｎを０に初期化する（ステップＳ１１）。次に、制御部５０は、予め定めた調査対象のマクロブロックの中からマクロブロックを１つ選択し（ステップＳ１２）、選択したマクロブロックの動きベクトルのＸ成分をＭＶＸ、Ｙ成分をＭＶＹとする（ステップＳ１３）。
【００２７】
次に、制御部５０は、Ｘ成分ＭＶＸの絶対値が第１の閾値ＴＨ１以上か否かと、Ｙ成分ＭＶＹの絶対値が第２の閾値ＴＨ２以上か否かとを判断し（ステップＳ１４）、いずれかの絶対値が閾値以上であるときには、変数Ｎに１を加算する（ステップＳ１５）。次に、制御部５０は、調査対象のマクロブロックの中に未処理のものがあるか否かを判断し（ステップＳ１６）、未処理のマクロブロックがあるときにはステップＳ１２へ、未処理のマクロブロックがないときにはステップＳ１７へ進む。
【００２８】
ステップＳ１７では、制御部５０は、変数Ｎの値が第３の閾値ＴＨ３以上か否かを判断する。制御部５０は、Ｎ≧ＴＨ３のときには、画像の動きは大きいと判定し（ステップＳ１８）、Ｎ＜ＴＨ３のときには、画像の動きは小さいと判定する（ステップＳ１９）。
【００２９】
なお、ステップＳ１２における調査対象のマクロブロックとしては、例えば、直近に処理した所定数のマクロブロックや、処理中のマクロブロックの１つの上の行に含まれるすべてのマクロブロックなどが使用される。また、図３に示す動き判定処理は一例であり、制御部５０は、上記以外の方法で画像の動きが大きいか否かを判定してもよい。
【００３０】
再び図２を参照すると、制御部５０は、動き判定処理で画像の動きが大きいと判定したときにはステップＳ２２へ、画像の動きが小さいとき判定したときにはステップＳ２３へ進む（ステップＳ２１）。制御部５０は、前者の場合には広範囲探索を示す値０のモード選択信号ＭＯＤＥを出力し（ステップＳ２２）、後者の場合には狭範囲探索を示す値１のモード選択信号ＭＯＤＥを出力する（ステップＳ２３）。
【００３１】
制御部５０で画像の動きが大きいと判定されたときには、探索実行部は、第１の探索範囲内で４種類の探索を順に実行する。より詳細には、探索実行部は、プロセッサアレイ２０に含まれるすべてのＰＥ３０を用いて、まずＸ整数／Ｙ整数探索を実行し（ステップＳ３１）、次にＸ半画素／Ｙ整数探索を実行し（ステップＳ３２）、さらにＸ整数／Ｙ半画素探索を実行し（ステップＳ３３）、最後にＸ半画素／Ｙ半画素探索を実行する（ステップＳ３４）。なお、これら４種類の探索の実行順序は任意でよい。
【００３２】
これに対して、制御部５０で画像の動きが小さいと判定されたときには、探索実行部は、第１の探索範囲よりも狭い第２の探索範囲内で４種類の探索を並列に実行する（ステップＳ４１）。より詳細には、ステップＳ４１では、プロセッサアレイ２０に含まれるＰＥ３０は、４つの群（以下、第１群〜第４群という）に分割される。探索実行部は、第１群に属するＰＥ３０を用いてＸ整数／Ｙ整数探索を実行し、第２群に属するＰＥ３０を用いてＸ半画素／Ｙ整数探索を実行し、第３群に属するＰＥ３０を用いてＸ整数／Ｙ半画素探索を実行し、第４群に属するＰＥ３０を用いてＸ半画素／Ｙ半画素探索を実行する。これら４種類の探索は、並列に実行される。
【００３３】
動き検出装置１の詳細を説明するに先立ち、図４〜図８を参照して、動き検出装置１における差分絶対値和の並列算出法を説明する。この並列算出法では、差分絶対値和ＳＡＤは、複数のＰＥを含むプロセッサアレイを用いて、複数の動きベクトル候補について並列に算出される。
【００３４】
まず、図４に示す（ｎ×ｍ）個のＰＥを含むプロセッサアレイ６０を用いて、現画像に含まれる（ｎ×ｎ）個の画素Ａi,j （図５（ａ））と参照画像に含まれる｛（２ｎ−１）×（ｎ＋ｍ−１）｝個の画素Ｂi,j （図５（ｂ））との間の差分絶対値和ＳＡＤを並列に算出する方法を説明する。
【００３５】
図４に示すように、プロセッサアレイ６０に含まれる（ｎ×ｍ）個のＰＥは、１次元アレイ状に接続される。各ＰＥは、前段のＰＥから供給された現画像ａを１サイクル遅延させて出力すると共に、現画像ａ、および、すべてのＰＥに同じタイミングで供給される参照画像ｂ１、ｂ２に基づき、次式（２）に示す演算を行う。
ｚ＝ｚ＋｜ａ−ｂ｜  …（２）
ただし、上式（２）において、ｚは累積加算結果、ｂは参照画像ｂ１またはｂ２のいずれかを表す。
【００３６】
プロセッサアレイ６０には、現画像と参照画像とが画素ごとに順に供給される。現画像は、上から下の順に、同じ行内では左から右の順に、１サイクルに１画素ずつ連続的に（ｎ×ｎ）サイクルで供給される。プロセッサアレイ６０に供給された現画像の画素Ａi,j は、先頭のＰＥ（図４では、左上隅のＰＥ）に現画像ａとして与えられる。各ＰＥは現画像ａを１サイクル遅延させて出力するので、現画像は各ＰＥに順送りで供給される。
【００３７】
参照画像は、偶数行（Ｂi,0 、Ｂi,2 など）と奇数行（Ｂi,1 、Ｂi,3 など）とに分けて２系統で供給される。参照画像の偶数行の画素Ｂi,2jは、上から下の順に、同じ行内では左から右の順に、１サイクルに１画素ずつ連続的に（２ｎ−１）サイクルで供給される。参照画像の奇数行の画素Ｂi,2j+1も、これと同様である。プロセッサアレイ６０に供給された参照画像の偶数行の画素Ｂi,2jは、すべてのＰＥに同じタイミングで参照画像ｂ１として与えられ、プロセッサアレイ６０に供給された参照画像の奇数行の画素Ｂi,2j+1は、すべてのＰＥに同じタイミングで参照画像ｂ２として与えられる。
【００３８】
図６は、プロセッサアレイ６０のタイミングチャートである。なお、ｎ＝ｍ＝４のとき、このタイミングチャートは、図７に示すようになる。以下、ｓを０以上ｎ未満の整数、ｔを０以上ｍ未満の整数としたとき、現画像の画素Ａi,j が（ｓ＋ｎ×ｔ）番目に供給されるＰＥ（ただし、先頭のＰＥを０番目と数える）を、ＰＥ（ｓ，ｔ）という。図４では、左からｓ番目、上からｔ番目のＰＥ（ただし、左上のＰＥを左から０番目、上から０番目とする）が、ＰＥ（ｓ，ｔ）となる。
【００３９】
図６に示すように、現画像の画素Ａi,j および参照画像の画素Ｂi,j は、それぞれ、０行目、１行目、…の順に供給される。現画像の１行目の供給は、０行目の供給開始からｎサイクル遅れて開始される。同様に、現画像の２行目以降の供給も、１つ上の行の供給開始からｎサイクル遅れて開始される。参照画像の０行目の供給は、現画像の０行目の供給と同じタイミングで開始される。参照画像の１行目の供給は、０行目の供給開始からｎサイクル遅れて開始される。同様に、参照画像の２行目以降の供給も、１つ上の行の供給開始からｎサイクル遅れて開始される。
【００４０】
ＰＥ（０，０）（図４では左上隅のＰＥ）では、現画像のｉ行目が供給される時間帯は、参照画像のｉ行目の０〜（ｎ−１）番目の画素が供給される時間帯と一致する。したがって、現画像の供給が完了したときに、ＰＥ（０，０）ではＳＩＧＭＡ（｜Ａi,j −Ｂi,j ｜）を求めることができる（ただし、ＳＩＧＭＡは（ｎ×ｎ）画素についての和を表す）。
【００４１】
ＰＥ（１，０）（図４ではＰＥ（０，０）の右隣のＰＥ）では、現画像のｉ行目が供給される時間帯は、参照画像のｉ行目の１〜ｎ番目の画素が供給される時間帯と一致する。したがって、現画像の供給が完了したときに、ＰＥ（１，０）ではＳＩＧＭＡ（｜Ａi,j −Ｂi+1,j ｜）を求めることができる。
【００４２】
ＰＥ（０，１）（図４ではＰＥ（０，０）の直下のＰＥ）では、現画像のｉ行目が供給される時間帯は、参照画像の（ｉ＋１）行目の０〜（ｎ−１）番目の画素が供給される時間帯と一致する。したがって、現画像の供給が完了したときに、ＰＥ（０，１）ではＳＩＧＭＡ（｜Ａi,j −Ｂi,j+1 ｜）を求めることができる。
【００４３】
同様に、ＰＥ（ｓ，ｔ）では、現画像のｉ行目が供給される時間帯は、参照画像の（ｉ＋ｔ）行目のｓ〜（ｎ＋ｓ−１）番目の画素が供給される時間帯と一致する。したがって、現画像の供給が完了したときに、ＰＥ（ｓ，ｔ）ではＳＩＧＭＡ（｜Ａi,j −Ｂi+s,j+t ｜）、すなわち、上式（１）で定義される差分絶対値和ＳＡＤを求めることができる。
【００４４】
次に、同じプロセッサアレイ６０を用いて、より大きい現画像と参照画像、例えば、ｎより大きい整数ｐについて、（ｐ×ｐ）画素の現画像と｛（ｐ＋ｎ−１）×（ｐ＋ｍ−１）｝画素の参照画像との間の差分絶対値和ＳＡＤを並列に算出する方法を説明する。この場合、現画像は、図８（ａ）に示すように、水平方向のサイズがｎ画素の部分現画像に分割される。また、参照画像は、図８（ｂ）に示すように、水平方向のサイズが（２ｎ−１）画素で、水平方向に（ｎ−１）画素ずつ重なる部分参照画像に分割される。
【００４５】
プロセッサアレイ６０に１つの部分現画像とこれに対応した部分参照画像とを図６に示すタイミングに従って供給することにより、ＰＥ（ｓ，ｔ）では、部分現画像と部分参照画像の間の差分絶対値和（部分的な差分絶対値和）を算出することができる。そこで、プロセッサアレイ６０にすべての部分現画像とこれに対応した部分参照画像とを順に供給し、画像が供給されていないときは累積加算を行わないように各ＰＥを制御することにより、ＰＥ（ｓ，ｔ）では、現画像と参照画像の間の差分絶対値和ＳＡＤを算出することができる。
【００４６】
以上に示す差分絶対値和の並列算出法によれば、（ｎ×ｍ）個のＰＥを含むプロセッサアレイ６０を用いて、複数の動きベクトル候補について並列に、（ｎ×ｎ）画素の現画像（あるいは、それよりも大きい（ｐ×ｐ）画素の現画像）とこれに対応した参照画像との間の差分絶対値和ＳＡＤを正しく算出することができる。
【００４７】
以下、図９〜図１７を参照して、本実施形態に係る動き検出装置１の詳細を説明する。動き検出装置１に含まれるプロセッサアレイ２０は、上述した差分絶対値和の並列算出法を実行する。ここでは一例として、動き検出装置１は、２５６個のＰＥ３０を含み、（１６×１６）画素の現画像について、原点（０，０）を中心とした探索範囲内で動きベクトルを求めるものとする。
【００４８】
制御部５０は、画像の動きが大きいと判定したときには、広範囲探索を示す値０のモード選択信号ＭＯＤＥを出力し、画像の動きが小さいと判定したときには、狭範囲探索を示す値１のモード選択信号ＭＯＤＥを出力する（図２を参照）。モード選択信号ＭＯＤＥが０のとき、プロセッサアレイ２０は、ｎ＝ｍ＝１６としたプロセッサアレイ６０と同じ動作を行い、２５６個の動きベクトル候補について並列に差分絶対値和ＳＡＤを算出する。これに対して、モード選択信号ＭＯＤＥが１のとき、プロセッサアレイ２０は、６４個のＰＥを含むプロセッサアレイの４個分として機能する。６４個のＰＥを含むプロセッサアレイは、それぞれ、ｎ＝ｍ＝８としたプロセッサアレイ６０と同じ動作を行い、６４個の動きベクトル候補について並列に差分絶対値和ＳＡＤを算出する。
【００４９】
データ供給部１０は、プロセッサアレイ２０で差分絶対値和ＳＡＤが正しく算出されるように、プロセッサアレイ２０にとって好適なタイミングで、現画像Ｄ０および参照画像Ｄ１ａ〜Ｄ１ｄ、Ｄ２ａ〜Ｄ２ｄを供給する。なお、参照画像Ｄ１ａ、Ｄ２ａはＸ整数／Ｙ整数探索で用いられる参照画像であり、参照画像Ｄ１ｂ、Ｄ２ｂは参照画像Ｄ１ａ、Ｄ２ａを水平方向に半画素分移動させた画像（Ｘ半画素／Ｙ整数探索で用いられる参照画像）であり、参照画像Ｄ１ｃ、Ｄ２ｃは参照画像Ｄ１ａ、Ｄ２ａを垂直方向に半画素分移動させた画像（Ｘ整数／Ｙ半画素探索で用いられる参照画像）であり、参照画像Ｄ１ｄ、Ｄ２ｄは、参照画像Ｄ１ａ、Ｄ２ａを水平垂直両方向に半画素分移動させた画像（Ｘ半画素／Ｙ半画素探索で用いられる参照画像）である。
【００５０】
プロセッサアレイ２０に含まれる２５６個のＰＥ３０は、図９に示すように、８個ずつ、全部で３２個のＰＥグループＧＲ０〜ＧＲ３１に分けられる。モード選択信号ＭＯＤＥが０のとき、各ＰＥグループには、図９（ａ）に示すように、データ供給部１０から供給された現画像Ｄ０および参照画像Ｄ１、Ｄ２が供給される。なお、参照画像Ｄ１は参照画像Ｄ１ａ〜Ｄ１ｄのいずれかであり、参照画像Ｄ２は参照画像Ｄ２ａ〜Ｄ２ｄのいずれかである。
【００５１】
ｋ番目（ｋは０以上３１以下の整数）のＰＥグループＧＲｋに供給された現画像は、ＰＥグループＧＲｋに属する８個のＰＥ３０を経由して、８サイクル遅れてＰＥグループＧＲｋから出力される。また、ＰＥグループＧＲｋに供給された参照画像は、ＰＥグループＧＲｋに属する８個のＰＥ３０に同じタイミングで供給される。このように、図９（ａ）に示す状態のプロセッサアレイ２０は、ｎ＝ｍ＝１６としたプロセッサアレイ６０と同じ構造を有する。
【００５２】
これに対して、モード選択信号ＭＯＤＥが１のとき、ＰＥグループＧＲ０〜ＧＲ３１は、図９（ｂ）に示すように、第１群〜第４群に分割される。第１群に属するＰＥグループ（ＧＲ０など）には、データ供給部１０から現画像Ｄ０および参照画像Ｄ１ａ、Ｄ１ｂが供給される。第２群に属するＰＥグループ（ＧＲ１など）には、データ供給部１０から現画像Ｄ０および参照画像Ｄ１ｂ、Ｄ２ｂが供給される。第３群に属するＰＥグループ（ＧＲ１６など）には、データ供給部１０から現画像Ｄ０および参照画像Ｄ１ｃ、Ｄ２ｃが供給される。第４群に属するＰＥグループ（ＧＲ１７など）には、データ供給部１０から現画像Ｄ０および参照画像Ｄ１ｄ、Ｄ２ｄが供給される。
【００５３】
モード選択信号ＭＯＤＥが変化しても、ＰＥグループＧＲｋに供給された現画像および参照画像は、ＰＥグループＧＲｋに属する８個のＰＥ３０に同じように供給される。したがって、第１群に属する６４個のＰＥ３０によって構成されるプロセッサアレイは、ｎ＝ｍ＝８としたプロセッサアレイ６０と同じ構造を有する。第２群〜第４群についても、これと同様である。
【００５４】
図１０は、データ供給部１０の詳細を示すブロック図である。データ供給部１０は、現画像メモリ１１、第１の参照画像メモリ１２、第２の参照画像メモリ１３、メモリ制御部１４ａ、１４ｂ、垂直フィルタ１５、および、４個の水平フィルタ１６を含んでいる。
【００５５】
現画像メモリ１１は、プロセッサアレイ２０に供給すべき現画像を記憶する。第１の参照画像メモリ１２および第２の参照画像メモリ１３は、プロセッサアレイ２０に供給すべき参照画像を記憶する。メモリ制御部１４ａは、現画像メモリ１１に対するアクセスを制御し、メモリ制御部１４ｂは、第１の参照画像メモリ１２および第２の参照画像メモリ１３に対するアクセスを制御する。
【００５６】
なお、現画像メモリ１１、第１の参照画像メモリ１２および第２の参照画像メモリ１３は、１回の動き検出を行うために最低限必要とされる量の２倍〜数倍程度の容量を有することが好ましい。このようなメモリを使用し、メモリに対するアクセスを好適に制御することにより、フレームメモリから画像を読み出す処理と、読み出した画像に基づき動きベクトルを求める処理とを並列に実行し、動き検出を高速に実行することができる。
【００５７】
垂直フィルタ１５は、ラインバッファ１７および平均化回路１９ａを含んでいる。ラインバッファ１７は、３２画素分の参照画像を記憶するＦＩＦＯ（First In First Out）メモリである。平均化回路１９ａは、ラインバッファ１７の入力と出力の平均値を出力する。垂直フィルタ１５は、フレームメモリから読み出された参照画像を垂直方向に半画素分移動させた画像を出力する。
【００５８】
水平フィルタ１６は、レジスタ１８および平均化回路１９ｂを含んでいる。レジスタ１８は、１画素分の参照画像を記憶する。平均化回路１９ｂは、レジスタ１８の入力と出力の平均値を出力する。水平フィルタ１６は、参照画像（あるいは、参照画像を垂直方向に半画素分移動させた画像）、および、この画像を水平方向に半画素分移動させた画像を出力する。このような垂直フィルタ１５および４個の水平フィルタ１６は、半画素演算器として機能する。
【００５９】
動き検出装置１が動作を開始する前に、フレームメモリから、（１６×１６）画素の現画像と（３２×３２）画素の参照画像とが読み出される。読み出された現画像は、現画像メモリ１１にそのまま書き込まれる。読み出された参照画像は、最下行を除き、第１の参照画像メモリ１２にそのまま書き込まれる。これに加えて、読み出された参照画像は、垂直フィルタ１５を通過することにより、参照画像を垂直方向に半画素分移動させた画像（以下、垂直移動済み画像という）となる。（３２×３１）画素の垂直移動済み画像は、第２の参照画像メモリ１３に書き込まれる。
【００６０】
動き検出装置１が動作している間、現画像メモリ１１、第１の参照画像メモリ１２、および、第２の参照画像メモリ１３からは、それぞれ、現画像、参照画像および垂直移動済み画像が読み出される。現画像メモリ１１から読み出された現画像Ｄ０は、そのまま、プロセッサアレイ２０に供給される。
【００６１】
第１の参照画像メモリ１２は２つの出力ポートを有し、各出力ポートには水平フィルタ１６が接続される。第１の参照画像メモリ１２から参照画像を読み出すときには、参照画像の偶数行と奇数行とは異なるポートから出力される。第１の参照画像メモリ１２から読み出された参照画像の偶数行は、水平フィルタ１６を通過することにより、参照画像Ｄ１ａと参照画像Ｄ１ｂ（参照画像Ｄ１ａを水平方向に半画素分移動させた画像）とになる。第１の参照画像メモリ１２から読み出された参照画像の奇数行は、水平フィルタ１６を通過することにより、参照画像Ｄ２ａと参照画像Ｄ２ｂ（参照画像Ｄ２ａを水平方向に半画素分移動させた画像）とになる。
【００６２】
第２の参照画像メモリ１３も２つの出力ポートを有し、各出力ポートには水平フィルタ１６が接続される。第２の参照画像メモリ１３から垂直移動済み画像を読み出すときにも、垂直移動済み画像の偶数行と奇数行とは異なるポートから出力される。第２の参照画像メモリ１３から読み出された垂直移動済み画像の偶数行は、水平フィルタ１６を通過することにより、参照画像Ｄ１ｃ（参照画像Ｄ１ａを垂直方向に半画素分移動させた画像）と参照画像Ｄ１ｃ（参照画像Ｄ１ａを水平垂直両方向に半画素分移動させた画像）とになる。第２の参照画像メモリ１３から読み出された垂直移動済み画像の奇数行は、水平フィルタ１６を通過することにより、参照画像Ｄ２ｃ（参照画像Ｄ２ａを垂直方向に半画素分移動させた画像）と参照画像Ｄ２ｄ（参照画像Ｄ２ａを水平垂直両方向に半画素分移動させた画像）とになる。
【００６３】
このようにデータ供給部１０は、フレームメモリから読み出した参照画像に垂直フィルタを適用し、参照画像と垂直移動済み画像の両方を記憶し、プロセッサアレイ２０に供給する前に参照画像と垂直移動済み画像の両方に水平フィルタを適用する。これにより、データ供給部１０は、整数精度探索を行うときに用いられる参照画像Ｄ１ａ、Ｄ２ａに加えて、参照画像Ｄ１ｂ、Ｄ２ｂ（参照画像Ｄ１ａ、Ｄ２ａを水平方向に半画素分移動させた画像）、参照画像Ｄ１ｃ、Ｄ２ｃ（参照画像Ｄ１ａ、Ｄ２ａを垂直方向に半画素分移動させた画像）、および、参照画像Ｄ１ｄ、Ｄ２ｄ（参照画像Ｄ１ａ、Ｄ２ａを水平垂直両方向に半画素分移動させた画像）をプロセッサアレイ２０に供給する。
【００６４】
また、データ供給部１０は、以下に示すように、モード選択信号ＭＯＤＥに応じて、プロセッサアレイ２０に供給する参照画像のサイズや、現画像および参照画像の供給タイミングを切り換える。この切り換えは、メモリ制御部１４ａ、１４ｂによって行われる。
【００６５】
上述したように、モード選択信号ＭＯＤＥが０のとき、プロセッサアレイ２０は、ｎ＝ｍ＝１６としたプロセッサアレイ６０と同じ動作を４回行うことにより、４種類の探索に必要な差分絶対値和ＳＡＤを順に算出する。そこで、モード選択信号ＭＯＤＥが０のとき、データ供給部１０は、（１６×１６）画素の現画像Ｄ０を４回繰り返して供給すると共に、現画像Ｄ０の各回の供給に合わせて、（３１×３１）画素の参照画像を順に供給する。この際、データ供給部１０は、図６においてｎ＝１６としたタイミングに従って、現画像および参照画像を供給する。
【００６６】
具体的には、データ供給部１０は、（１）現画像Ｄ０の１回目の供給に合わせて参照画像Ｄ１ａ、Ｄ２ａを供給し、（２）現画像Ｄ０の２回目の供給に合わせて参照画像Ｄ１ｂ、Ｄ２ｂを供給し、（３）現画像Ｄ０の３回目の供給に合わせて参照画像Ｄ１ｃ、Ｄ２ｃを供給し、（４）現画像Ｄ０の４回目の供給に合わせて参照画像Ｄ１ｄ、Ｄ２ｄを供給する。この際、データ供給部１０は、４種類の参照画像を毎回供給してもよく、あるいは、各回で必要な参照画像だけを供給してもよい。
【００６７】
これに対して、モード選択信号ＭＯＤＥが１のとき、プロセッサアレイ２０は、ｎ＝ｍ＝８としたプロセッサアレイ６０の４個分と同じ動作を行うことにより、４種類の探索に必要な差分絶対値和ＳＡＤを並列に算出する。そこで、モード選択信号ＭＯＤＥが１のとき、データ供給部１０は、（１６×１６）画素の現画像Ｄ０を１回だけ供給すると共に、現画像の供給に合わせて、（２３×２３）画素の参照画像を４つ並列に供給する。具体的には、データ供給部１０は、現画像Ｄ０の供給に合わせて、（１）参照画像Ｄ１ａ、Ｄ２ａと、（２）参照画像Ｄ１ｂ、Ｄ２ｂと、（３）参照画像Ｄ１ｃ、Ｄ２ｃと、（４）参照画像Ｄ１ｄ、Ｄ２ｄとを並列に供給する。
【００６８】
この際、（１６×１６）画素の現画像は、図１１（ａ）に示すように、（８×１６）画素の第１および第２の部分現画像に分割され、参照画像は、図１１（ｂ）に示すように、水平方向に７画素が重なる（１５×１６）画素の第１および第２の部分参照画像に分割される。データ供給部１０は、図６においてｎ＝８としたタイミングに従って、まず第１の部分現画像および第１の部分参照画像を供給し、その後に第２の部分現画像および第２の部分参照画像を供給する。
【００６９】
モード選択信号ＭＯＤＥが０のときにデータ供給部１０から供給される（３１×３１）画素の参照画像は、Ｘ成分ｓおよびＹ成分ｔがいずれも−８以上＋７．５以下である探索範囲（図１２（ａ））に対応する。また、モード選択信号ＭＯＤＥが１のときにデータ供給部１０から供給される（２３×２３）画素の参照画像は、Ｘ成分ｓおよびＹ成分ｔがいずれも−４以上＋３．５以下である探索範囲（図１２（ｂ））に対応する。なお、図１２において、白丸は１つの動きベクトル候補を表す。
【００７０】
このようにデータ供給部１０は、モード選択信号ＭＯＤＥが０のときには、第１の探索範囲に対応した４種類の参照画像を順に供給し、モード選択信号ＭＯＤＥが１のときには、第１の探索範囲よりも狭い第２の探索範囲に対応した４種類の参照画像を並列に供給する。
【００７１】
図１３は、プロセッサアレイ２０の詳細を示すブロック図である。プロセッサアレイ２０には、３２個のＰＥグループ２６（ＧＲ０〜ＧＲ３１）のそれぞれに対応して、入力切換部２１（ＳＷ０〜ＳＷ３１）が設けられる。入力切換部２１は、モード選択信号ＭＯＤＥに応じて、ＰＥ３０の接続形態を切り換える。
【００７２】
すべての入力切換部２１には、制御部５０から出力されたモード選択信号ＭＯＤＥ、および、データ供給部１０から供給された参照画像Ｄ１ａ〜Ｄ１ｄ、Ｄ２ａ〜２ｄが供給される。制御部５０は、ＰＥ３０の接続形態を切り換えるために、プロセッサアレイ２０に対して選択制御信号ＢＳＥＬ０〜ＢＳＥＬ３１を出力する（図１を参照）。選択制御信号ＢＳＥＬｋは、入力切換部ＳＷｋに供給される。
【００７３】
入力切換部ＳＷ０には、制御部５０から出力された制御信号ＣＴＲＬ、および、データ供給部１０から供給された現画像Ｄ０が供給される。入力切換部ＳＷ１〜ＳＷ３１は、いずれも、制御信号および現画像を入力するために２個の入力ポートを有している。入力切換部ＳＷ１〜ＳＷ３１は、モード選択信号ＭＯＤＥが０のときには、第１の入力ポート（図１３では上側の入力ポート）から入力された制御信号および現画像を選択し、モード選択信号ＭＯＤＥが１のときには、第２の入力ポート（図１３では下側の入力ポート）から入力された制御信号および現画像を選択する。
【００７４】
ｋが０である場合を除き、入力切換部ＳＷｋの第１の入力ポートには、ＰＥグループＧＲｋ−１から出力された制御信号および現画像が供給される。また、ｋが０、１、１６、１７のいずれかである場合を除き、入力切換部ＳＷｋの第２の入力ポートには、ＰＥグループＧＲｋ−２から出力された制御信号および現画像が供給される。入力切換部ＳＷ１、ＳＷ１６、ＳＷ１７の第２の入力ポートには、入力切換部ＳＷ０と同じ信号、すなわち、制御信号ＣＴＲＬおよび現画像Ｄ０が供給される。
【００７５】
図１４は、入力切換部２１およびＰＥグループ２６の詳細を示すブロック図である。入力切換部２１は、セレクタ２２〜２５を含み、ＰＥグループ２６に供給すべき現画像、参照画像および制御信号を切り換える。セレクタ２２は、モード選択信号ＭＯＤＥが０のときには第１の入力ポートから入力された制御信号Ｃ１を、モード選択信号ＭＯＤＥが１のときには第２の入力ポートから入力された制御信号Ｃ２を、制御信号Ｃとして選択する。セレクタ２３は、モード選択信号ＭＯＤＥが０のときには第１の入力ポートから入力された現画像Ａ１を、モード選択信号ＭＯＤＥが１のときには第２の入力ポートから入力された現画像Ａ２を、現画像Ａとして選択する。
【００７６】
制御部５０から供給される選択制御信号ＢＳＥＬｋは、４種類の値（以下、Ｖ１〜Ｖ４という）を取る。セレクタ２４は、選択制御信号ＢＳＥＬｋに従い参照画像Ｄ１ａ〜Ｄ１ｄのいずれかを参照画像Ｂ１として選択し、セレクタ２５は、選択制御信号ＢＳＥＬｋに従い参照画像Ｄ２ａ〜Ｄ２ｄのいずれかを参照画像Ｂ２として選択する。具体的には、セレクタ２３、２４は、選択制御信号ＢＳＥＬｋがＶ１のときには参照画像Ｄ１ａ、Ｄ２ａを選択し、選択制御信号ＢＳＥＬｋがＶ２のときには参照画像Ｄ１ｂ、Ｄ２ｂを選択し、選択制御信号ＢＳＥＬｋがＶ３のときには参照画像Ｄ１ｃ、Ｄ２ｃを選択し、選択制御信号ＢＳＥＬｋがＶ４のときには参照画像Ｄ１ｄ、Ｄ２ｄを選択する。
【００７７】
ＰＥグループ２６は、１次元アレイ状に接続された８個のＰＥ３０を含んでいる。各ＰＥ３０は、前段のＰＥ３０から供給された現画像Ａを１サイクル遅延させて出力すると共に、現画像Ａ、および、すべてのＰＥに同じタイミングで供給される参照画像Ｂ１、Ｂ２に基づき、次式（３）に示す演算を行う。
Ｚ＝Ｚ＋｜Ａ−Ｂ｜  …（３）
ただし、上式（３）において、Ｚは累積加算結果、Ｂは参照画像Ｂ１またはＢ２のいずれかを表す。
【００７８】
図１５は、ＰＥ３０の詳細を示す回路図である。ＰＥ３０は、図１５に示すように、レジスタ３１、セレクタ３２、減算器３３、絶対値計算器３４、加算器３５、アキュムレータ３６、および、出力バッファ３７を含んでいる。レジスタ３１は、前段のＰＥから出力された制御信号Ｃおよび現画像Ａを記憶し、後段のＰＥに対して出力する。セレクタ３２は、制御信号Ｃに含まれる選択制御信号Ｃｓに従い、セレクタ２４で選択された参照画像Ｂ１、および、セレクタ２５で選択された参照画像Ｂ２のいずれかを選択する。
【００７９】
減算器３３は、セレクタ２３で選択された現画像Ａと、セレクタ３２で選択された参照画像Ｂの差を求める。絶対値計算器３４は、減算器３３で求めた差の絶対値を求める。アキュムレータ３６は、これまでに求めた累積加算結果Ｚを記憶している。加算器３５は、アキュムレータ３６に記憶された累積加算結果Ｚに、絶対値計算器３４で求めた絶対値｜Ａ−Ｂ｜を加算する。アキュムレータ３６は、制御信号ＣＴＲＬに含まれる加算制御信号Ｃａが活性状態であれば、加算器３５の出力を記憶する。
【００８０】
現画像Ａの最後の画素が供給された後では、アキュムレータ３６は、上式（１）で定義される差分絶対値和ＳＡＤを記憶している。差分絶対値和ＳＡＤが算出されるタイミングに合わせて、制御信号ＣＴＲＬに含まれる出力制御信号Ｃｏが活性状態となり、アキュムレータ３６に記憶された差分絶対値和ＳＡＤは出力バッファ３７経由でＰＥ３０の外部に出力される。ＰＥ３０から出力された差分絶対値和ＳＡＤは、動きベクトル生成部４０に到達する。アキュムレータ３６に記憶された差分絶対値和ＳＡＤは、その後、０に初期化される。
【００８１】
このようにＰＥグループＧＲｋに属するＰＥ３０は、（１）選択制御信号ＢＳＥＬｋがＶ１のときには、現画像Ａおよび参照画像Ｄ１ａ、Ｄ２ａに基づき、Ｘ整数／Ｙ整数探索用の差分絶対値和ＳＡＤを算出し、（２）選択制御信号ＢＳＥＬｋがＶ２のときには、現画像Ａおよび参照画像Ｄ１ｂ、Ｄ１ｂに基づき、Ｘ半画素／Ｙ整数探索用の差分絶対値和ＳＡＤを算出し、（３）選択制御信号ＢＳＥＬｋがＶ３のときには、現画像Ａおよび参照画像Ｄ１ｃ、Ｄ２ｃに基づき、Ｘ整数／Ｙ半画素探索用の差分絶対値和ＳＡＤを算出し、（４）選択制御信号ＢＳＥＬｋがＶ４のときには、現画像Ａおよび参照画像Ｄ１ｄ、Ｄ２ｄに基づき、Ｘ半画素／Ｙ半画素探索用の差分絶対値和ＳＡＤを算出する。
【００８２】
制御部５０は、モード選択信号ＭＯＤＥに応じて選択制御信号ＢＳＥＬ０〜ＢＳＥＬ３１の値および出力タイミングを制御し、ＰＥグループＧＲｋに属するＰＥ３０は、モード選択信号ＭＯＤＥに応じて異なる動作を行う。具体的には、ＰＥグループＧＲｋに属するＰＥ３０は、モード選択信号ＭＯＤＥが０のときには図１６に示すように動作し、モード選択信号ＭＯＤＥが１のときには図１７に示すように動作する。
【００８３】
なお、図１６および図１７において、文字ａを付した矩形は、選択制御信号ＢＳＥＬｋがＶ１で、ＰＥ３０がＸ整数／Ｙ整数探索用の差分絶対値和ＳＡＤを算出する時間帯を表す。文字ｂを付した矩形は、選択制御信号ＢＳＥＬｋがＶ２で、ＰＥ３０がＸ半画素／Ｙ整数探索用の差分絶対値和ＳＡＤを算出する時間帯を表す。文字ｃを付した矩形は、選択制御信号ＢＳＥＬｋがＶ３で、ＰＥ３０がＸ整数／Ｙ半画素探索用の差分絶対値和ＳＡＤを算出する時間帯を表す。文字ｄを付した矩形は、選択制御信号ＢＳＥＬｋがＶ４で、ＰＥ３０がＸ半画素／Ｙ半画素探索用の差分絶対値和ＳＡＤを算出する時間帯を表す。
【００８４】
モード選択信号ＭＯＤＥが０のとき（図１６）、最初に選択制御信号ＢＳＥＬ０がＶ１となり、その後、選択制御信号ＢＳＥＬ１〜ＢＳＥＬ３１は順に８サイクルずつ遅れてＶ１となる。ＰＥグループＧＲｋに属するＰＥ３０は、選択制御信号ＢＳＥＬｋがＶ１である間に、Ｘ整数／Ｙ整数探索用の差分絶対値和ＳＡＤを算出する。所定時間経過後に選択制御信号ＢＳＥＬ０はＶ２となり、その後、選択制御信号ＢＳＥＬ１〜ＢＳＥＬ３１は順に８サイクルずつ遅れてＶ２となる。ＰＥグループＧＲｋに属するＰＥ３０は、選択制御信号ＢＳＥＬｋがＶ２である間に、Ｘ半画素／Ｙ整数探索用の差分絶対値和ＳＡＤを算出する。
【００８５】
さらに所定時間経過後に選択制御信号ＢＳＥＬ０はＶ３となり、その後、選択制御信号ＢＳＥＬ１〜ＢＳＥＬ３１は順に８サイクルずつ遅れてＶ３となる。ＰＥグループＧＲｋに属するＰＥ３０は、選択制御信号ＢＳＥＬｋがＶ３である間に、Ｘ整数／Ｙ半画素探索用の差分絶対値和ＳＡＤを算出する。さらに所定時間経過後に選択制御信号ＢＳＥＬ０はＶ４となり、選択制御信号ＢＳＥＬ１〜ＢＳＥＬ３１は順に８サイクルずつ遅れてＶ４となる（図示せず）。ＰＥグループＧＲｋに属するＰＥ３０は、選択制御信号ＢＳＥＬｋがＶ４である間に、Ｘ半画素／Ｙ半画素探索用の差分絶対値和ＳＡＤを算出する。動きベクトル生成部４０は、このように順に算出される４種類の差分絶対値和ＳＡＤに基づき、動きベクトルＭＶを生成する。
【００８６】
これに対して、モード選択信号ＭＯＤＥが１のとき（図１７）、最初に選択制御信号ＢＳＥＬ０、ＢＳＥＬ１、ＢＳＥＬ１６、ＢＳＥＬ１７が、それぞれＶ１〜Ｖ４となる。次に８サイクル遅れて、選択制御信号ＢＳＥＬ２、ＢＳＥＬ３、ＢＳＥＬ１８、ＢＳＥＬ１９が、それぞれＶ１〜Ｖ４となる。以下同様に、第１群に属するＰＥグループに対する選択制御信号（ＢＳＥＬ４など）は順に８サイクルずつ遅れてＶ１となり、これと同じタイミングで、第２群に属するＰＥグループに対する選択制御信号（ＢＳＥＬ５など）はＶ２となり、第３群に属するＰＥグループに対する選択制御信号（ＢＳＥＬ２０など）はＶ３となり、第４群に属するＰＥグループに対する選択制御信号（ＢＳＥＬ２１など）はＶ４となる。
【００８７】
したがって、モード選択信号ＭＯＤＥが１のとき、第１群に属するＰＥ３０はＸ整数／Ｙ整数探索用の差分絶対値和ＳＡＤを算出し、第２群に属するＰＥ３０はＸ半画素／Ｙ整数探索用の差分絶対値和ＳＡＤを算出し、第３群に属するＰＥ３０はＸ整数／Ｙ半画素探索用の差分絶対値和ＳＡＤを算出し、第４群に属するＰＥ３０はＸ半画素／Ｙ半画素探索用の差分絶対値和ＳＡＤを算出する。動きベクトル生成部４０は、このように並列に算出される４種類の差分絶対値和ＳＡＤに基づき、動きベクトルＭＶを生成する。
【００８８】
以上に示すように、本実施形態に係る動き検出装置１は、動き検出用の評価値として差分絶対値和ＳＡＤを並列に算出するプロセッサアレイ２０を備え、画像の動きが大きいか否かに応じて、探索範囲の広さとＰＥ３０の接続形態を切り換える。このように画像の動き量に応じて探索範囲の広さを切り換えることにより、無駄な探索を実行せずに、有効な探索を実行することができる。したがって、回路規模や消費電力を増大させることなく、高い精度で動き検出を実行することができる。
【００８９】
また、プロセッサアレイ２０は、現画像を各ＰＥ３０に順送りで供給すると共に、参照画像をすべてのＰＥ３０に同じタイミングで供給し、動き検出装置１は、画像の動きが大きいときには、第１の探索範囲内で４種類の探索（整数精度探索と３種類の半画素精度探索）を順に実行し、画像の動きが小さいときには、第１の探索範囲よりも狭い第２の探索範囲内で４種類の探索を並列に実行する。したがって、画像の動きが小さいときには無駄な探索を実行せずに、画像の動きが大きいときには有効な探索を実行することにより、高い精度で動き検出を実行すると共に、画像の動きの大小にかかわらず、半画素単位の動きベクトルを求めることができる。また、制御部５０は、動きベクトル生成部４０で過去に生成された動きベクトルに基づき画像の動きが大きいか容易に判定する。これにより、画像の動きが大きいか否かを容易に判定することができる。
【００９０】
なお、動き検出装置１は、原点以外を中心とした探索範囲内で動きベクトルを求めることもできる。このためには、動き検出装置１が動作する前に、原点以外を中心とした探索範囲に応じた参照画像をフレームメモリから読み出して、第１の参照画像メモリ１２および第２の参照画像メモリ１３に記憶させておけばよい。また、動き検出装置１は、図１１に示すよりも広い探索範囲内で動きベクトルを求めることもできる。このためには、動き検出装置１は、ＰＥ３０の個数に合わせて探索範囲を分割し、分割後の各探索範囲について上述した処理を実行すればよい。
【００９１】
また、上記の例では、プロセッサアレイ２０は（ｎ×ｍ）個のＰＥ３０を含み、ｎは現画像の水平方向のサイズに一致することとしたが、ｎは現画像の水平方向のサイズよりも小さくてもよい。そのような場合には、動き検出装置１は、モード選択信号ＭＯＤＥが１のときと同様に、現画像および参照画像を分割して部分的な差分絶対値和を求め、これを累積加算すればよい。
【００９２】
また、ＰＥ３０の個数や現画像のサイズは、上記の例に限定されない。動き検出装置１は上記の例よりも少ない（あるいは、多い）ＰＥ３０を含んでいてもよく、現画像のサイズは、例えば（８×８）画素や（１６×８）画素であってもよい。また、ＰＥ３０は、絶対値計算器３４に代えて、例えば二乗計算器を含んでいてもよい。ＰＥ３０に二乗計算器を含む動き検出装置によれば、次式（４）で定義される差分二乗和ＳＳＤを評価値として用いて、動き検出を実行することができる。
ＳＳＤ（ｓ，ｔ）＝ＳＩＧＭＡ（（Ａi,j −Ｂi+s,j+t ）2 ）  …（４）
【００９３】
また、動き検出装置１と同様の考え方で、１／４画素単位の動きベクトルを求める動き検出装置を構成することもできる。この動き検出装置では、垂直フィルタ１５および水平フィルタ１６は、２つの画素の単純平均値に加えて、２つの画素に１対３および３対１の重み付けをした加重平均値を求める。また、１／４画素単位の動きベクトルを求めるためには整数精度探索と複数の１／４画素精度探索とを実行する必要があるが、動き検出装置は、プロセッサアレイを用いて、これらの探索を一度にすべて並列に実行してもよく、あるいは、何度かに分けて並列に実行してもよい。
【００９４】
これらの変形例に係る動き検出装置は、いずれも、動き検出装置１と同様の効果を奏する。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施形態に係る動き検出装置の構成を示すブロック図である。
【図２】図１に示す動き検出装置の動作を示すフローチャートである。
【図３】図１に示す動き検出装置による動き判定処理の一例を示すフローチャートである。
【図４】動き検出用プロセッサアレイの構成を示すブロック図である。
【図５】図４に示すプロセッサアレイに入力される現画像および参照画像の例を示す図である。
【図６】図４に示すプロセッサアレイのタイミングチャートである。
【図７】図４に示すプロセッサアレイのタイミングチャートの具体例である。
【図８】図４に示すプロセッサアレイに入力される現画像および参照画像の他の例を示す図である。
【図９】図１に示す動き検出装置におけるＰＥの接続形態を示す図である。
【図１０】図１に示す動き検出装置のデータ供給部の詳細を示すブロック図である。
【図１１】図１に示す動き検出装置のプロセッサアレイに入力される現画像および参照画像の例を示す図である。
【図１２】図１に示す動き検出装置の探索範囲の例を示す図である。
【図１３】図１に示す動き検出装置のプロセッサアレイの詳細を示すブロック図である。
【図１４】図１に示す動き検出装置の入力切換部およびＰＥグループの詳細を示すブロック図である。
【図１５】図１に示す動き検出装置のＰＥの詳細を示す回路図である。
【図１６】図１に示す動き検出装置のＰＥの広範囲探索時の動作を示すタイミングチャートである。
【図１７】図１に示す動き検出装置のＰＥの狭範囲探索時の動作を示すタイミングチャートである。
【符号の説明】
【００９６】
１…動き検出装置
１０…データ供給部
１１…現画像メモリ
１２…第１の参照画像メモリ
１３…第２の参照画像メモリ
１４ａ、１５ｂ…メモリ制御部
１５…垂直フィルタ
１６…水平フィルタ
１７…ラインバッファ
１８、３１…レジスタ
１９…平均化回路
２０、６０…プロセッサアレイ
２１…入力切換部
２２〜２５、３２…セレクタ
２６…ＰＥグループ
３０…ＰＥ
３３…減算器
３４…絶対値計算器
３５…加算器
３６…アキュムレータ
３７…出力バッファ
４０…動きベクトル生成部
５０…制御部
ＭＯＤＥ…モード選択信号
Ｄ０、Ａ…現画像
Ｄ１ａ〜Ｄ１ｄ、Ｄ２ａ〜Ｄ２ｄ、Ｂ１、Ｂ２…参照画像
ＣＴＲＬ、Ｃ…制御信号
ＢＳＥＬ０〜ＢＳＥＬ３１…選択制御信号
ＳＡＤ０〜ＳＡＤ３１…差分絶対値和
ＭＶ…動きベクトル
【図１】
2007189308.tif 000003
【図２】
2007189308.tif 000004
【図３】
2007189308.tif 000005
【図４】
2007189308.tif 000006
【図５】
2007189308.tif 000007
【図６】
2007189308.tif 000008
【図７】
2007189308.tif 000009
【図８】
2007189308.tif 000010
【図９】
2007189308.tif 000011
【図１０】
2007189308.tif 000012
【図１１】
2007189308.tif 000013
【図１２】
2007189308.tif 000014
【図１３】
2007189308.tif 000015
【図１４】
2007189308.tif 000016
【図１５】
2007189308.tif 000017
【図１６】
2007189308.tif 000018
【図１７】
2007189308.tif 000019