(57)【要約】【課題】動きベクトルを正しく求めることができるようにする。【解決手段】閾値設定部１３は、注目ブロックの画像と、注目ブロックを位置ずれさせた画像との誤差から閾値を設定する。第１のベクトル検出部１４は、注目ブロックと参照ブロックとの画像の誤差が閾値以下となる動きベクトルを検出して、検出した動きベクトルの始点を終点とする既に検出されている動きベクトルと等しいとき、検出した動きベクトルを求める動きベクトルとする。代表ベクトル設定部１５は、既に検出されている動きベクトルから代表ベクトルを設定する。第２のベクトル検出部１６は、注目ブロックと参照ブロックの画像との誤差量が閾値以下となる動きベクトルを検出して、検出した動きベクトルが代表ベクトルと等しく、第１のベクトル検出部１４で求める動きベクトルが得られていないとき、代表ベクトルと等しい動きベクトルを求める動きベクトルとする。【選択図】        図５
2010287022.tif 000002
【特許請求の範囲】
【請求項１】
第１の画像における複数の画素からなる注目ブロックの画像と、前記注目ブロックを位置ずれさせた画像との誤差から閾値を設定する閾値設定部と、
前記第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、前記注目ブロックとの画像の誤差が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが、該検出した動きベクトルの始点を終点とする既に検出されている動きベクトルと等しいとき、または該検出した動きベクトルの終点を始点とする既に検出されている動きベクトルと等しいとき、該検出した動きベクトルを求める動きベクトルとする第１のベクトル検出部と、
前記既に検出されている動きベクトルから代表ベクトルを設定する代表ベクトル設定部と、
前記注目ブロックの画像と前記参照ブロックの画像との誤差量が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが前記代表ベクトルと等しく、前記第１のベクトル検出部で前記求める動きベクトルが得られていないとき、前記代表ベクトルと等しい動きベクトルを求める動きベクトルとする第２のベクトル検出部と
を備える動きベクトル検出装置。
【請求項２】
前記閾値設定部は、前記注目ブロックを上下方向と左右方向と斜め方向に所定画素移動して、方向毎に誤差量を算出して、方向毎の誤差量から前記閾値を設定する
請求項１記載の動きベクトル検出装置。
【請求項３】
前記閾値設定部は、方向が互いに逆となる２つの移動方向の誤差量から少ない誤差量を選択して、選択した誤差量のなかで最大の誤差量を前記閾値に設定する
請求項２記載の動きベクトル検出装置。
【請求項４】
前記代表ベクトル設定部は、前記既に検出されている動きベクトルから検出頻度の高い動きベクトルを前記代表ベクトルに設定する
請求項２記載の動きベクトル検出装置。
【請求項５】
前記代表ベクトル設定部は、前記検出頻度の高い動きベクトルが複数であるとき、ベクトル間での水平方向と垂直方向の成分の差が予め設定された範囲内とならないように動きベクトルを選択して、選択した動きベクトルを代表ベクトルに設定する
請求項４記載の動きベクトル検出装置。
【請求項６】
前記第２のベクトル検出部は、前記代表ベクトルが複数であるとき、前記誤差量が最小となる動きベクトルを求める動きベクトルとする
請求項５記載の動きベクトル検出装置。
【請求項７】
閾値設定部において、第１の画像における複数の画素からなる注目ブロックの画像と、前記注目ブロックを位置ずれさせた画像との誤差から閾値を設定する閾値設定ステップと、
第１のベクトル検出部において、前記第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、前記注目ブロックとの画像の誤差が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが、該検出した動きベクトルの始点を終点とする既に検出されている動きベクトルと等しいとき、または該検出した動きベクトルの終点を始点とする既に検出されている動きベクトルと等しいとき、該検出した動きベクトルを求める動きベクトルとする第１のベクトル検出ステップと、
代表ベクトル設定部において、前記既に検出されている動きベクトルから代表ベクトルを設定する代表ベクトル設定ステップと、
第２のベクトル検出部において、前記注目ブロックの画像と前記参照ブロックの画像との誤差量が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが前記代表ベクトルと等しく、前記第１のベクトル検出部で前記求める動きベクトルが得られていないとき、前記代表ベクトルと等しい動きベクトルを求める動きベクトルとする第２のベクトル検出ステップと
を有する動きベクトル検出方法。
【請求項８】
第１のベクトル検出部において、前記検出した動きベクトルを求める動きベクトルとするとき、該動きベクトルに信頼度のある動きベクトルであることを示す情報を付加する第１の情報付加ステップと、
第２のベクトル検出部において、前記代表ベクトルと等しい動きベクトルを求める動きベクトルとするとき、該動きベクトルに信頼度のある動きベクトルであることを示す情報を付加する第２の情報付加ステップとをさらに有し、
前記第１のベクトル検出ステップでは、既に検出されている動きベクトルとして、信頼度のある動きベクトルであることを示す情報が付加された動きベクトルを用いる
請求項７記載の動きベクトル検出方法。
【請求項９】
情報処理装置で動きベクトルを検出するためのプログラムであって、
情報処理装置を、
第１の画像における複数の画素からなる注目ブロックの画像と、前記注目ブロックを位置ずれさせた画像との誤差から閾値を設定する機能手段と、
前記第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、前記注目ブロックとの画像の誤差が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが、該検出した動きベクトルの始点を終点とする既に検出されている動きベクトルと等しいとき、または該検出した動きベクトルの終点を始点とする既に検出されている動きベクトルと等しいとき、該検出した動きベクトルを求める動きベクトルとする機能手段と、
前記既に検出されている動きベクトルから代表ベクトルを設定する機能手段と、
前記注目ブロックの画像と前記参照ブロックの画像との誤差量が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが前記代表ベクトルと等しく、前記第１のベクトル検出部で前記求める動きベクトルが得られていないとき、前記代表ベクトルと等しい動きベクトルを求める動きベクトルとする機能手段
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、動きベクトル検出装置と動きベクトル検出方法およびプログラムに関する。詳しくは、動きベクトルを正しく求めることができるようにする。
【背景技術】
【０００２】
従来、ブロックマッチングなどの動きベクトル検出方法は、注目ブロックと相関が一番高い参照ブロックのフレーム平面状での注目ブロックからの位置ずれを、注目ブロックの動きベクトルとして検出している。
【０００３】
この方法の問題の一つとして、画像の繰り返しや平坦な部分で相関が高い参照ブロックが複数生じて、正しく動きベクトルを求めることができないということがある。この繰り返しや平坦な部分に対して、特許文献１では、全画面の動きベクトルを代用することが提案している。また、特許文献２では、複数生じる動きベクトルの候補の中で、全画面の動きベクトルと一番近いものを、求める動きベクトルとすることが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−７８４５０号公報
【特許文献２】特開２００３−１１１０８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、全画面の動きベクトルを代用して用いる方法では、代用した部分が正しい動きとは限らないため、動きに不自然さが生じる場合がある。また、正しい動きベクトルと全画面の動きベクトルで処理された補間画素間に不連続さを生じて、別の処理画の劣化が生じる場合がある。
【０００６】
また、複数生じる動きベクトルの候補の中で、全画面の動きベクトルと一番近いものを求める動きベクトルとする方法では、近さを相対的に比較して動きベクトルの選択を行っているため、動きベクトルの候補が正しい動きベクトルから離れているとき、本来近いとはいえない動きベクトルが選択されてしまう可能性がある。また全画面の動きベクトルに対する近さを用いているため、全画面の動きとは異なる動きを示す小物体に対して、全画面の動きに応じた動きベクトルが選択されてしまう可能性がある。
【０００７】
そこで、この発明では動きベクトルを正しく検出ことができる動きベクトル検出装置と動きベクトル検出方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
この発明の第１の側面は、第１の画像における複数の画素からなる注目ブロックの画像と、前記注目ブロックを位置ずれさせた画像との誤差から閾値を設定する閾値設定部と、前記第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、前記注目ブロックとの画像の誤差が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが、該検出した動きベクトルの始点を終点とする既に検出されている動きベクトルと等しいとき、または該検出した動きベクトルの終点を始点とする既に検出されている動きベクトルと等しいとき、該検出した動きベクトルを求める動きベクトルとする第１のベクトル検出部と、前記既に検出されている動きベクトルから代表ベクトルを設定する代表ベクトル設定部と、前記注目ブロックの画像と前記参照ブロックの画像との誤差量が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが前記代表ベクトルと等しく、前記第１のベクトル検出部で前記求める動きベクトルが得られていないとき、前記代表ベクトルと等しい動きベクトルを求める動きベクトルとする第２のベクトル検出部とを備える動きベクトル検出装置にある。
【０００９】
この発明において、閾値設定部は、第１の画像における複数の画素からなる注目ブロックを上下方向と左右方向と斜め方向に所定画素例えば１画素分だけ移動して、方向毎に誤差量を算出する。また、閾値設定部は、方向が互いに逆となる２つの移動方向の誤差量から少ない誤差量を選択して、選択した誤差量のなかで最大の誤差量を閾値に設定する。第１のベクトル検出部は、第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、注目ブロックとの画像の誤差が閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、この検出した動きベクトルが、検出した動きベクトルの始点を終点とする既に検出されている動きベクトルと等しいとき、または検出した動きベクトルの終点を始点とする既に検出されている動きベクトルと等しいとき、この検出した動きベクトルを求める動きベクトルとする。代表ベクトル設定部は、既に検出されている動きベクトルから検出頻度の高い動きベクトルを代表ベクトルに設定する。また、代表ベクトル設定部は、検出頻度の高い動きベクトルが複数であるとき、ベクトル間での水平方向と垂直方向の成分の差が予め設定された範囲内とならないように動きベクトルを選択して、選択した動きベクトルを代表ベクトルに設定する。また、第２のベクトル検出部は、誤差量が閾値以下となる参照ブロックの注目ブロックに対する位置から検出された動きベクトルが代表ベクトルと等しく、第１のベクトル検出部で求める動きベクトルが得られていないとき、代表ベクトルと等しい動きベクトルを求める動きベクトルとする。さらに、代表ベクトルが複数であるときは、誤差量が最小となる動きベクトルを、求める動きベクトルとする。
【００１０】
この発明の第２の側面は、閾値設定部において、第１の画像における複数の画素からなる注目ブロックの画像と、前記注目ブロックを位置ずれさせた画像との誤差から閾値を設定する閾値設定ステップと、第１のベクトル検出部において、前記第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、前記注目ブロックとの画像の誤差が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが、該検出した動きベクトルの始点を終点とする既に検出されている動きベクトルと等しいとき、または該検出した動きベクトルの終点を始点とする既に検出されている動きベクトルと等しいとき、該検出した動きベクトルを求める動きベクトルとする第１のベクトル検出ステップと、代表ベクトル設定部において、前記既に検出されている動きベクトルから代表ベクトルを設定する代表ベクトル設定ステップと、第２のベクトル検出部において、前記注目ブロックの画像と前記参照ブロックの画像との誤差量が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが前記代表ベクトルと等しく、前記第１のベクトル検出部で前記求める動きベクトルが得られていないとき、前記代表ベクトルと等しい動きベクトルを求める動きベクトルとする第２のベクトル検出ステップとを有する動きベクトル検出方法にある。
【００１１】
この発明の第３の側面は、情報処理装置で動きベクトルを検出するためのプログラムであって、情報処理装置を、第１の画像における複数の画素からなる注目ブロックの画像と、前記注目ブロックを位置ずれさせた画像との誤差から閾値を設定する機能手段と、前記第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、前記注目ブロックとの画像の誤差が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが、該検出した動きベクトルの始点を終点として既に検出されている動きベクトルと等しいとき、または該検出した動きベクトルの終点を始点として既に検出されている動きベクトルと等しいとき、該検出した動きベクトルを求める動きベクトルとする機能手段、前記既に検出されている動きベクトルから代表ベクトルを設定する機能手段と、前記注目ブロックの画像と前記参照ブロックの画像との誤差量が前記閾値以下となる前記参照ブロックの前記注目ブロックに対する位置から動きベクトルを検出して、該検出した動きベクトルが前記代表ベクトルと等しく、前記第１のベクトル検出部で前記求める動きベクトルが得られていないとき、前記代表ベクトルと等しい動きベクトルを求める動きベクトルとする機能手段して機能させるためのプログラムにある。
【００１２】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な情報処理装置に対して、可読可能な形式で提供する記憶媒体、通信媒体、例えば、光ディスクや磁気ディスク、半導体メモリなどの記憶媒体、あるいは、ネットワークなどの通信媒体によって提供可能なプログラムである。このようなにプログラムを提供することにより、情報処理装置でプログラムに応じた処理が実現される。
【発明の効果】
【００１３】
この発明によれば、第１の画像における複数の画素からなる注目ブロックの画像と、注目ブロックを位置ずれさせた画像との誤差から閾値が設定される。また、第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、注目ブロックとの画像の誤差が閾値以下となる参照ブロックの注目ブロックに対する位置から動きベクトルが検出されて、この検出された動きベクトルが、この検出した動きベクトルの始点を終点として既に検出されている動きベクトルと等しいとき、または検出した動きベクトルの終点を始点として既に検出されている動きベクトルと等しいとき、検出した動きベクトルが求める動きベクトルとされる。また、既に検出されている動きベクトルから代表ベクトルが設定されて、注目ブロックの画像と参照ブロックの画像との誤差量が閾値以下となる参照ブロックの注目ブロックに対する位置から検出した動きベクトルが代表ベクトルと等しく、既に検出されている動きベクトルと、始点または終点が等しい動きベクトルが得られていないとき、代表ベクトルと等しい動きベクトルが求める動きベクトルとされる。
【００１４】
このため、繰り返しや平坦な部分で相関が高くなる参照ブロックが複数生じるような画像であっても、既に検出されている動きベクトルや注目ブロックと注目ブロックを位置ずれさせた画像から設定した閾値を用いて正しく動きベクトルを求めることができるようになる。
【図面の簡単な説明】
【００１５】
【図１】動きベクトルの検出原理を示すフローチャートである。
【図２】ブロックマッチング動作を示す図である。
【図３】閾値Ｔｈａの設定を説明するための図である。
【図４】画素単位以下の動きについて説明するための図である。
【図５】動きベクトル検出装置の構成を示す図である。
【図６】第１の動きベクトル検出動作を示すフローチャートである
【図７】サーチ処理を示すフローチャートである
【図８】第２の動きベクトル検出動作を示すフローチャートである
【発明を実施するための形態】
【００１６】
以下、発明を実施するための形態について説明する。なお、説明は以下の順序で行う。
１．動きベクトルの検出原理
２．動きベクトル検出装置
３．動きベクトル検出動作
【００１７】
＜１．動きベクトルの検出原理＞
図１は、本発明の動きベクトル検出装置や動きベクトル検出方法において行われる動きベクトルの検出原理を示すフローチャートである。なお、以下の説明では、フレーム単位の動画像を用いて未来方向に動きベクトルを求める。また、動きベクトルを検出するフレームを時刻ｔ(0)のフレーム、過去方向である１フレーム前のフレームを時刻ｔ(-1)のフレーム、未来方向である１フレーム後のフレームを時刻ｔ(1)のフレームとする。
【００１８】
ステップＳＴ１では、代表ベクトルＶＣｔの設定を行う。代表ベクトルＶＣｔの設定処理では、１フレーム前の処理で求めた全ての動きベクトル（全過去ベクトル）の中から代表的な動きベクトルを代表ベクトルＶＣｔとする。例えば、図２に示すように、時刻ｔ(-1)のフレームと時刻ｔ(0)のフレームの画像を用いてブロックマッチングを行い、ブロック単位や画素単位で求められている全ての過去ベクトルから、代表的な動きベクトルを代表ベクトルＶＣｔをとしてステップＳＴ２に進む。
【００１９】
代表的な動きベクトルとしては、全ての過去ベクトルの中で例えば検出頻度が最も大きい（等しい動きベクトルの数が最も大きい）動きベクトルを代表ベクトルＶＣｔに設定する。また、代表ベクトルＶＣｔは、複数設定してもよい。さらに、検出頻度の分布において、検出頻度のピークが平坦となるような場合、違いの少ない動きベクトルが複数代表ベクトルＶＣｔと選択されてしまう。したがって、代表ベクトル間で水平方向と垂直方向の成分の差が予め設定された範囲内となることがないように、代表ベクトルＶＣｔの選択を行う。また、動きベクトルの検出を開始したときには、過去ベクトルが求まっていないことから、過去ベクトルを０ベクトルとする。
【００２０】
ステップＳＴ２では、閾値Ｔｈａの設定を行う。閾値Ｔｈａは、画素単位以下の動きがある場合でも、その画素以下動き分誤差をもつ画素単位の動きベクトルを検出できるように設定する。図３は、閾値Ｔｈａの設定を説明するための図である。閾値Ｔｈａの設定では、図３の（Ａ）に示すように注目ブロックを所定画素分だけ移動させて、移動後の注目ブロックの画像と移動前の注目ブロックの画像との誤差量を算出する。所定画素分例えば１画素分の注目ブロックの移動は、上下左右および斜め方向に行い、図３の（Ｂ）に示すように、８つの方向毎の誤差量Ｅ１〜Ｅ８を算出する。この方向毎に誤差量から閾値を設定する。例えば、最大値、最小値、平均値、中央値等を閾値として用いる。
【００２１】
また、移動方向が８つ方向のいずれであるかにかかわらず、誤差量の少ない動きベクトルを検出できるように、８つの方向毎の誤差量から閾値を設定してもよい。例えば、誤差量Ｅ１は右方向に１画素移動した場合の誤差量であり、誤差量Ｅ５は左方向に１画素移動した場合の誤差量である。すなわち誤差量Ｅ１と誤差量Ｅ５は、移動方向が互いに逆となる誤差量（点対称の位置の誤差量）である。ここで、値の少ない誤差量を閾値Ｔｈａの水平方向の候補として選択する。また、上下方向や斜め方向についても同様に、値の小さい誤差量を閾値Ｔｈａの候補として選択する。このような処理を行うと、閾値Ｔｈａの候補となる誤差量は４つとなる。ここで、画素単位以下の動きが水平方向とわかるならば、水平方向の候補を閾値Ｔｈａとすれば良い。しかし、動き方向は特定できないので、４つの候補のなかで値が最も大きい誤差量を閾値Ｔｈａに設定する。
【００２２】
閾値Ｔｈａが画素単位以下の動きに対応できるかを、図４を用いて説明する。時刻ｔ(0)のフレームにおける注目ブロックＢＬａを、動きベクトルに基づいて移動させて、注目ブロックと同一配置の複数の画素からなる参照ブロックＢＬｂを時刻ｔ(1)のフレーム上に設定する。なお、時刻ｔ(1)のフレームにおける領域ＡＲｓは、動きベクトルの探索領域を示している。
【００２３】
画素単位以下の動きがない場合、動きベクトルが正しいときの着目ブロックＢＬａと参照ブロックＢＬｂの画像の誤差量は０となる。したがって、正しい動きベクトルの判定は、誤差量が０となる動きベクトルということになる。しかし、画素単位以下の動きがある場合には、ある値が生じるため、その判定のための閾値が必要となる。ここで、動きベクトルが正しく、画素単位以下の動きがない場合には、着目ブロックＢＬａと、参照ブロックＢＬｂを１画素右にずらしたときの画像の誤差量は、右方向で求めた閾値Ｔｈａと同じ値になる。これは正しい動きベクトルから右に１画素分ずれている場合の誤差量であり、右に画素単位以下ずれた場合の誤差量よりも大きいと考えられるため、右方向で求めた閾値Ｔｈａ以下の誤差量をもつ動きベクトルは、１画素分の誤差を持つ正しい動きベクトル、と判定することが可能となる。
【００２４】
時刻ｔ(0)のフレームにおける注目ブロックＢＬａを動きベクトルに基づいて移動したとき、注目ブロックＢＬａの画素Ｐａの移動後の位置を、図４に示すように時刻ｔ(1)のフレーム上の例えば画素Ｐｂ１とする。また、注目ブロックＢＬａの画素Ｐａと一致する画素の位置は、画素単位以下の動きを含んだ位置Ｐｍとする。この場合、画素Ｐｂ１が位置Ｐｍから「Ｚａ」（０＜Ｚａ＜１）の画素ずれを生じている。また、画素Ｐｂ１から１画素分移動した位置である画素Ｐｂ２は、位置Ｐｍから「１−Ｚａ」の画素のずれを生じる。ここで、「Ｚａ」が「０．５」よりも大きいとき、位置Ｐｍに対する画素ずれは、画素Ｐｂ１よりも画素Ｐｂ２が少なくなる。これは、右方向で求めた閾値Ｔｈａではなく、動きベクトルを右に１画素分ずらし、左の閾値Ｔｈａを用いればよいということを意味している。そもそもＢＭのフルサーチでは、最初の０．５以上ずれた動きベクトルは選択されないため、閾値Ｔｈａとしては、値の少ない方を選べばよいということになる。
【００２５】
ステップＳＴ３では、候補ベクトルＶＣｃの検出を行う。候補ベクトルＶＣｃの検出では、注目ブロックＢＬａと時刻ｔ(1)のフレーム上の探索領域ＡＲｓにおける全ての参照ブロックＢＬｂとの誤差量を求める。さらに、誤差量が閾値Ｔｈａ以下となる参照ブロックＢＬｂと注目ブロックＢＬａとのフレーム平面上での位置ずれを示すベクトルを候補ベクトルＶＣｃとする。なお、探索領域ＡＲｓは、時刻ｔ(1)のフレーム上の一部であってもよく、全画面あってもよい。
【００２６】
ステップＳＴ４では、候補ベクトルＶＣｃの数が「１」以上である場合、ステップＳＴ５に進む。また、候補ベクトルＶＣｃの数が「１」未満であるとき、ステップＳＴ９に進む。
【００２７】
ステップＳＴ５では、過去ベクトルＶＣｐｍの検出を行う。過去ベクトルＶＣｐｍの検出処理では、時刻ｔ(-1)のフレームと時刻ｔ(0)のフレームとの画像から求められている全ての過去ベクトルの中から、注目ブロックＢＬａが終点となる動きベクトルを過去ベクトルＶＣｐｍとしてステップＳＴ６に進む。
【００２８】
ステップＳＴ６では、候補ベクトルＶＣｃと過去ベクトルＶＣｐｍが等しいか否か判別する。ここで、候補ベクトルＶＣｃと過去ベクトルＶＣｐｍが等しくないときはステップＳＴ７に進む。また、候補ベクトルＶＣｃと過去ベクトルＶＣｐが等しいときはステップＳＴ８に進む。
【００２９】
ステップＳＴ７では、候補ベクトルＶＣｃと代表ベクトルＶＣｔが等しいか否か判別する。ここで、候補ベクトルＶＣｃと代表ベクトルＶＣｔが等しいときステップＳＴ８に進む。また、候補ベクトルＶＣｃと代表ベクトルＶＣｔが等しくないときステップＳＴ９に進む。なお、代表ベクトルＶＣｔが複数であるときは、検出頻度の高い代表ベクトルＶＣｔを優先的に用いて候補ベクトルＶＣｃとの比較を行う。代表ベクトルとの一致判定は、水平方向と垂直方向の成分の差が予め設定された範囲内となるものを一致と判定する。
【００３０】
ステップＳＴ８では、候補ベクトルＶＣｃを求める動きベクトルＶＣｍとして、注目ブロックについての動きベクトルの検出を終了する。
【００３１】
ステップＳＴ９では、従来の方法で動きベクトルＶＣｍの検出を行って、注目ブロックについての動きベクトルの検出を終了する。例えば、誤差量が最も少なくなる参照ブロックを検出して、注目ブロックと検出された参照ブロックの位置から動きベクトルを求める。また、代表ベクトルＶＣｔを注目ブロックについての動きベクトルとしてもよい。また、注目ブロックについての動きベクトルを０ベクトルとしてもよい。
【００３２】
なお、上述の説明では、フレーム単位の画像を用いて未来方向に動きベクトルを求めているが、フィールド単位の画像を用いてもよく、過去方向に動きベクトルを求めてもよい。なお、過去方向に動きベクトルを求める場合、過去ベクトルの中から注目ブロックＢＬａを始点とする動きベクトルを過去ベクトルＶＣｐｍとする。
【００３３】
＜２．動きベクトル検出装置＞
図５は、動きベクトル検出装置の構成を示している。動きベクトル検出装置１０は画像メモリ１１、ベクトルメモリ１２、閾値設定部１３、第１のベクトル検出部１４、代表ベクトル設定部１５、第２のベクトル検出部１６、第３のベクトル検出部１７、ベクトル出力部１８を有している。
【００３４】
画像信号ＤＶｎは、画像メモリ１１と第１のベクトル検出部１４と第２のベクトル検出部１６に供給される。画像メモリ１１は、画像信号ＤＶｎを１フレーム期間遅延させるためのメモリであり、１フレーム遅延した画像信号ＤＶｎ−１を閾値設定部１３と第１のベクトル検出部１４と第２のベクトル検出部１６に出力する。例えば画像信号ＤＶｎが図２に示す時刻ｔ(1)のフレームの画像信号であるとき、画像メモリ１１は時刻ｔ(0)のフレームの画像信号を画像信号ＤＶｎ−１として出力する。
【００３５】
ベクトルメモリ１２は、過去と新たに検出された動きベクトル２フレーム分記憶する。新たに検出された動きベクトルは、２フレーム前の過去の動きベクトルの領域に書き込まれることになる。
【００３６】
閾値設定部１３は、閾値Ｔｈａの設定を行う。閾値設定部１３は、第１の画像における複数の画素からなる注目ブロックの画像と、注目ブロックを位置ずれさせた画像との誤差から閾値Ｔｈａを設定する。閾値設定部１３は、例えば画像信号ＤＶｎ−１から注目ブロックの画像信号と、注目ブロックを上下方向と左右方向と斜め方向である８方向に１画素ずらした各ブロックの画像信号を抽出する。閾値設定部１３は、抽出した画像信号を用いて注目ブロックと他のブロックとの誤差量、例えば絶対値誤差和（ＳＡＤ：Sum of Absolute Difference）を算出する。また、閾値設定部１３は、方向が互いに逆となる２つの方向の誤差量（点対称の方向の誤差量）を比較して、小さい誤差量を選択することで４つの誤差量に絞り込む。さらに、閾値設定部１３は、選択された４つの誤差量から値が最も大きい誤差量を閾値Ｔｈａとして、第１のベクトル検出部１４と第２のベクトル検出部１６に出力する。なお、閾値設定部１３で行われる処理は、図１におけるステップＳＴ２の処理に相当する。
【００３７】
第１のベクトル検出部１４は、第１誤差算出部１４１と第１ベクトル選択部１４２を有している。第１のベクトル検出部１４は、第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、注目ブロックとの画像の誤差が閾値Ｔｈａ以下となる参照ブロックの注目ブロックに対する位置から動きベクトルを検出する。第１のベクトル検出部１４は、検出した動きベクトルが、検出した動きベクトルの始点を終点とする過去ベクトルＶＣｐｍと等しいとき、検出した動きベクトルを求める動きベクトルとする。なお、第１のベクトル検出部１４で行われる処理は、図１におけるステップＳＴ３，ＳＴ５，ＳＴ６，ＳＴ８の処理に相当する。
【００３８】
第１誤差算出部１４１は、ベクトルメモリ１２に記憶されている過去ベクトルＶＣｐから例えば注目ブロックを終点（または始点）とする過去ベクトルＶＣｐｍを選択する。また、第１誤差算出部１４１は、選択した過去ベクトルＶＣｐｍに応じて注目ブロックを移動させて、画像信号ＤＶｎに基づく画像すなわち時刻ｔ(1)のフレームの画像上に参照ブロックを設定する。さらに、第１誤差算出部１４１は、注目ブロックの画像と参照ブロックの画像との誤差量例えばＳＡＤを算出して、過去ベクトルＶＣｐｍと誤差量Ｅｐｍを第１ベクトル選択部１４２に出力する。
【００３９】
第１ベクトル選択部１４２は、第１誤差算出部１４１で算出された誤差量Ｅｐｍと、閾値設定部１３で算出された閾値Ｔｈａを比較する。第１ベクトル選択部１４２は、第１誤差算出部１４１で算出された誤差量Ｅｐｍが閾値設定部１３で算出された閾値Ｔｈａ以下であるとき、過去ベクトルＶＣｐｍを検出ベクトルＶＣｓａとして選択する。また、検出ベクトルＶＣｓａに対する選択フラグＦｓａを有効として、選択フラグＦｓａと検出ベクトルＶＣｓａをベクトル出力部１８に出力する。
【００４０】
代表ベクトル設定部１５は、１フレーム前の処理で求めた全ての過去ベクトルＶＣｐの中から代表的な動きベクトル、例えば検出頻度の高い動きベクトルを代表ベクトルＶＣｔと設定して、第２のベクトル検出部１６に出力する。また、検出頻度が大きい動きベクトルが複数あるときには、複数の動きベクトルを代表ベクトルＶＣｔに設定する。また、代表ベクトルを複数設定するときには、代表ベクトル間で水平方向と垂直方向の成分の差が予め設定された範囲内となることがないように代表ベクトルの設定を行う。例えば、代表ベクトル間で水平方向と垂直方向の成分の差がそれぞれ４画素以内となることがないように代表ベクトルの設定を行う。また、動きベクトルの検出を開始したときには、過去ベクトルが求まっていないことから、過去ベクトルを０ベクトルとする。なお、代表ベクトル設定部１５で行われる処理は、図１におけるステップＳＴ１の処理に相当する。
【００４１】
第２のベクトル検出部１６は、第２誤差算出部１６１と候補ベクトル検出部１６２とベクトル比較部１６３および第２ベクトル選択部１６４を有している。第２のベクトル検出部１６は、第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、注目ブロックの画像と参照ブロックの画像との誤差量が閾値Ｔｈａ以下となる参照ブロックの注目ブロックに対する位置から動きベクトルが検出される。この検出された動きベクトルが代表ベクトルＶＣｔと等しく、第１のベクトル検出部１４で求める動きベクトルが得られていないとき、代表ベクトルＶＣｔと等しい動きベクトルを求める動きベクトルとする。なお、第２のベクトル検出部１４で行われる処理は、図１におけるステップＳＴ４，ＳＴ５，ＳＴ６，ＳＴ７，ＳＴ８の処理に相当する。
【００４２】
第２誤差算出部１６１は、時刻ｔ(0)のフレーム上の注目ブロックに対する時刻ｔ(1)のフレーム上の探索領域について動きベクトルを求める。さらに、第２誤差算出部１６１は、探索領域について求めた動きベクトル（以下「探索ベクトル」という）ＶＣａ毎に、注目ブロックの画像と探索ベクトルＶＣａに応じて時刻ｔ(1)のフレーム上の設定した参照ブロックの画像との誤差量Ｅａを算出する。第２誤差算出部１６１は、求めた探索ベクトルＶＣａと誤差量Ｅａを候補ベクトル検出部１６２と第３のベクトル検出部１７に出力する。第２誤差算出部１６１は、例えば誤差量Ｅａとして、注目ブロックの画像と参照ブロックの画像とのＳＡＤを算出する。
【００４３】
候補ベクトル検出部１６２は、探索ベクトルＶＣａから誤差量Ｅａが閾値設定部１３で設定された閾値Ｔｈａ以下となる探索ベクトルを選択して、選択した探索ベクトルを候補ベクトルＶＣｃとしてベクトル比較部１６３に出力する。また、候補ベクトルＶＣｃに対応する誤差量Ｅｃを、ベクトル比較部１６３に出力する。
【００４４】
ベクトル比較部１６３は、代表ベクトルＶＣｔと候補ベクトルＶＣｃを比較して、代表ベクトルＶＣｔと一致する候補ベクトルＶＣｃを、選択候補ベクトルＶＣｇとして第２ベクトル選択部１６４に出力する。また、ベクトル比較部１６３は、選択候補ベクトルＶＣｇに対応する誤差量Ｅｇを第２ベクトル選択部１６４に出力する。
【００４５】
第２ベクトル選択部１６４は、選択候補ベクトルＶＣｇのなかで誤差量Ｅｇが最小となるベクトルの選択を行い、選択した選択候補ベクトルを検出ベクトルＶＣｓｂとする。また、検出ベクトルＶＣｓｂに対する選択フラグＦｓｂを有効として、選択フラグＦｓｂと検出ベクトルＶＣｓｂをベクトル出力部１８に出力する。
【００４６】
第３のベクトル検出部１７は、探索ベクトルＶＣａから１つの動きベクトルを選択して、選択した動きベクトルを検出ベクトルＶＣｓｃとする。また、検出ベクトルＶＣｓｃに対する選択フラグＦｓｃを有効として、選択フラグＦｓｃと検出ベクトルＶＣｓｃをベクトル出力部１８に出力する。なお、第３のベクトル検出部１７で行われる処理は、図１におけるステップＳＴ４，ＳＴ７，ＳＴ９の処理に相当する。
【００４７】
ベクトル出力部１８は、選択フラグが有効されているベクトルから１つのベクトルを選択して注目ブロックについての求める動きベクトルＶＣｍとして出力する。また、次のフレームの画像で上述のように動きベクトルの検出を行うことができるように、動きベクトルＶＣｍをベクトルメモリ１２に記憶させる。ここで、選択フラグの優先順はＦｓａ＞Ｆｓｂ＞Ｆｓｃとする。したがって、第１のベクトル検出部１４で求める動きベクトルが得られないとき、第２のベクトル検出部１６で検出された動きベクトルを求める動きベクトルとして出力される。すなわち、ベクトル出力部１８は、注目ブロックの画像と参照ブロックの画像との誤差量が閾値以下となり、代表ベクトルと等しい動きベクトルを求める動きベクトルとして出力する。また、第１のベクトル検出部１４と第２のベクトル検出部１６で求める動きベクトルが得られないとき、第３のベクトル検出部１７で検出された動きベクトルが求める動きベクトルとして出力される。なお、ベクトル出力部１８で行われる処理は、図１におけるステップＳＴ８の処理を含むものである。また、ベクトル出力部１８は、第１〜第３のベクトル選択部のいずれかに含める構成としてもよい。
【００４８】
このようにすれば、注目ブロックの画像と注目ブロックを位置ずれさせたブロックの画像との誤差から閾値が設定されて、この閾値よりも誤差が少なくなる動きベクトルが候補ベクトルとして検出される。さらに、注目ブロックに対する過去ベクトルや、フレーム内の全過去ベクトルから設定した代表ベクトルと一致する候補ベクトルが求める動きベクトルとされる。このため、画像の繰り返しや平坦な部分で、誤差量の少ない（相関の高い）参照ブロックが複数生じても、正しい動きベクトルを求めることができるようになる。
【００４９】
また、注目ブロックの位置ずれを１画素とすれば、閾値Ｔｈａは１画素以下の誤差量を示すようになり、注目ブロックとの画像の誤差が１画素以下となる動きベクトルを求める動きベクトルとして検出できるようになる。
【００５０】
また、過去ベクトルから求めた代表ベクトルのみを用いて動きベクトルの検出を行う従来の方法では、フレーム画像内の小物体の動きが他の部分と異なっていても、他の部分に対応した代表ベクトルを用いて動きベクトルの検出が行われる。したがって、小物体の動きベクトルを正しく求めることが困難となってしまう場合がある。しかし、第１のベクトル検出部１４では、注目ブロックを終点（または始点）とした過去ベクトルを用いて動きベクトルの検出が行われることから、小物体の動きが他の部分と異なる動きであっても、小物体の動きベクトルを正しく求めることができる。
【００５１】
＜３．動きベクトル検出動作＞
次に、動きベクトル検出をソフトウェアで実行する場合について説明する。ソフトウェアによって動きベクトルの検出を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれた情報処理装置内のメモリにインストールしてＣＰＵ(Central Processing Unit)で実行させる。または、各種処理が実行可能な情報処理装置にプログラムをインストールしてＣＰＵで実行させることが可能である。
【００５２】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【００５３】
なお、プログラムは、上述したようなリムーバブル記録媒体から情報処理装置にインストールする他、ダウンロードサイトから、情報処理装置に無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、情報処理装置に有線で転送する。情報処理装置は、このようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【００５４】
［第１の動きベクトル検出動作］
図６は、第１の動きベクトル検出動作を示すフローチャートである。
【００５５】
ステップＳＴ１１でＣＰＵは、代表ベクトルＶＣｔの設定を行う。代表ベクトルＶＣｔの設定処理では、上述のように、１フレーム前の処理で求めた全ての動きベクトル（過去ベクトル）の中から代表的な動きベクトルを代表ベクトルＶＣｔとしてステップＳＴ１２に進む。
【００５６】
ステップＳＴ１２でＣＰＵは、閾値Ｔｈａの設定を行う。閾値Ｔｈａの算出処理では、上述のように注目ブロックを１画素ずらしたブロックとの誤差量に基づいて閾値Ｔｈａを求める。
【００５７】
ステップＳＴ１３でＣＰＵは、過去ベクトルＶＣｐｍを用いた誤差量Ｅｐｍの算出を行う。ＣＰＵは、注目ブロックを終点とする過去ベクトルＶＣｐｍに応じて、時刻ｔ(0)のフレームの画像上である注目ブロックを移動させて、時刻ｔ(1)のフレームの画像上に参照ブロックを設定する。また、ＣＰＵは、注目ブロックの画像と参照ブロックの画像との誤差量Ｅｐｍ、例えばＳＡＤを算出してステップＳＴ１４に進む。
【００５８】
ステップＳＴ１４でＣＰＵは、誤差量Ｅｐｍが閾値Ｔｈａ以下であるか否か算出する。ＣＰＵは、誤差量Ｅｐｍが閾値Ｔｈａ以下であるときステップＳＴ５１に進み、誤差量Ｅｐｍが閾値Ｔｈａ以下でないときステップＳＴ３０に進みサーチ処理を行う。
【００５９】
図７はサーチ処理を示すフローチャートである。ステップＳＴ３１でＣＰＵは初期化を行う。ＣＰＵは、候補ベクトルについての処理回数を示す変数「ｉ」を「０」とする。ＣＰＵは、誤差最小値Ｅｇｓを「Ｔｈａ＋１」とする。この誤差最小値Ｅｇｓは、代表ベクトルと等しく誤差量が最小である候補ベクトルを選択するための変数である。また、ＣＰＵは、誤差量Ｅｐｍを誤差最小値Ｅａｓ、過去ベクトルＶＣｐｍのノルムを最小ノルムＶＭに設定する。この誤差最小値Ｅａｓと最小ノルムＶＭは、探索ベクトルＶＣａからベクトルのノルムと誤差量が最小となるベクトルを選択するための変数である。
【００６０】
ステップＳＴ３２でＣＰＵは、誤差量Ｅａiの算出を行う。ＣＰＵは「ｉ」番目の探索ベクトルＶＣａiを用いて注目ブロック移動させて参照ブロックを設定する。また、ＣＰＵは設定した参照ブロックの画像と注目ブロックの画像との誤差量Ｅａiを算出してステップＳＴ３３とステップＳＴ４０に進む。
【００６１】
ステップＳＴ３３でＣＰＵは、誤差量Ｅａiが閾値Ｔｈａ以下であるか否か算出する。ＣＰＵは、誤差量Ｅａiが閾値Ｔｈａ以下であるときステップＳＴ３４に進み、誤差量Ｅａiが閾値Ｔｈａ以下でないときステップＳＴ４３に進む。
【００６２】
ステップＳＴ３４でＣＰＵは、変数「ｊ」の初期化を行い、変数「ｊ」を「０」としてステップＳＴ３５に進む。この変数「ｊ」は、代表ベクトルＶＣｔ毎の処理回数を示す変数である。
【００６３】
ステップＳＴ３５でＣＰＵは、探索ベクトルＶＣａiが代表ベクトルＶＣｔjと等しいか否か判別する。ＣＰＵは、探索ベクトルＶＣａiが代表ベクトルＶＣｔjと等しいときステップＳＴ３６に進み、等しくないときステップＳＴ３８に進む。
【００６４】
ステップＳＴ３６でＣＰＵは、誤差量Ｅａiが誤差最小値Ｅｇｓ以下であるか否か判別する。ＣＰＵは、誤差量Ｅａiが誤差最小値Ｅｇｓ以下であるときステップＳＴ３７に進み、誤差量Ｅａiが誤差最小値Ｅｇｓ以下でないときステップＳＴ３８に進む。
【００６５】
ステップＳＴ３７でＣＰＵは、探索ベクトルＶＣａiを検出ベクトルＶＣｓｂ、誤差量Ｅａiを誤差最小値ＥｇｓとしてステップＳＴ３８に進む。
【００６６】
ステップＳＴ３８でＣＰＵは、１つの代表ベクトルについての処理が終了したことから変数「ｊ」に「１」を加算してステップＳＴ３９に進む。
【００６７】
ステップＳＴ３９でＣＰＵは、変数「ｊ」が代表ベクトルの数「ｎｖｔ」と等しいか否か判別する。ここで、ステップＳＴ３５からステップＳＴ３７までの処理を各代表ベクトルに行うと、変数「ｊ」は代表ベクトルの数「ｎｖｔ」となる。したがって、各代表ベクトルについての処理が完了していないときはステップＳＴ３５に戻り、各代表ベクトルについての処理が完了したときステップＳＴ４３に進む。
【００６８】
ステップＳＴ４０でＣＰＵは、誤差量Ｅａiが誤差最小値Ｅａｓよりも小さいか否か判別する。ＣＰＵは、誤差量Ｅａiが誤差最小値Ｅａｓよりも小さくないときステップＳＴ４１に進み、小さいときステップＳＴ４３に進む。
【００６９】
ステップＳＴ４１でＣＰＵは、探索ベクトルＶＣａiのノルムが最小ノルムＶＭよりも小さいか否か判別する。ＣＰＵは、探索ベクトルＶＣａiのノルムが最小ノルムＶＭよりも小さいときステップＳＴ４２に進み、小さくないときステップＳＴ４３に進む。
【００７０】
ステップＳＴ４２でＣＰＵは、探索ベクトルＶＣａiを検出ベクトルＶＣｓｃ、誤差量Ｅａiを誤差最小値Ｅａｓ、探索ベクトルＶＣａiのノルムを最小ノルムＶＭに設定してステップＳＴ４３に進む。
【００７１】
ステップＳＴ４３でＣＰＵは、変数「ｉ」に「１」を加算して、加算後の値を新たに変数「ｉ」としてステップＳＴ４４に進む。
【００７２】
ステップＳＴ４４でＣＰＵは、変数「ｉ」が探索領域内の全参照ブロックの数「ｎｖ」と等しいか否か判別する。ここで、ステップＳＴ３２からステップＳＴ４３までの処理を各探索ベクトルＶＣａiに行うと、変数「ｉ」は探索領域内の全参照ブロックの数「ｎｖ」となる。したがって、各探索ベクトルＶＣａiについての処理が完了していないときはステップＳＴ３２に戻り、各探索ベクトルＶＣａiについての処理が完了したときは、サーチ処理を終了して図６のステップＳＴ５２に進む。
【００７３】
このようにサーチ処理を行うことで、代表ベクトルと等しく誤差量が最小となる探索ベクトルＶＣａiが検出ベクトルＶＣｓｂとして検出される。また、ベクトルのノルムと誤差量が最も小さくなる探索ベクトルＶＣａiが、検出ベクトルＶＣｓｃとして検出される。
【００７４】
図６のステップＳＴ５１でＣＰＵは、過去ベクトルＶＣｐｍを求める動きベクトルＶＣｍとする。
【００７５】
ステップＳＴ５２でＣＰＵは、誤差最小値Ｅｇｓが閾値Ｔｈａ以下となっているか判別する。ＣＰＵは、誤差最小値Ｅｇｓが閾値Ｔｈａ以下となっているときステップＳＴ５３に進み、誤差最小値Ｅｇｓが閾値Ｔｈａ以下となっていないときステップＳＴ５４に進む。
【００７６】
ステップＳＴ５３でＣＰＵは、閾値Ｔｈａよりも誤差量の少ない動きベクトルが検出されていることから、この候補ベクトルである検出ベクトルＶＣｓｂを求める動きベクトルＶＣｍとする。すなわち、ステップＳＴ１４，ＳＴ３０，ＳＴ５２，ＳＴ５３の処理によって、過去ベクトルＶＣｐｍが求める動きベクトルＶＣｍとされていないとき、ＣＰＵは、検出ベクトルＶＣｓｂを求める動きベクトルＶＣｍとする。
【００７７】
ステップＳＴ５４でＣＰＵは、閾値Ｔｈａよりも誤差量の少ない動きベクトルが検出されていないことから、検出ベクトルＶＣｓｃを求める動きベクトルＶＣｍとして処理を終了する。すなわち、ステップＳＴ１４，ＳＴ３０，ＳＴ５２，ＳＴ５４の処理によって、過去ベクトルＶＣｐｍや代表ベクトルＶＣｔと等しい候補ベクトルＶＣｃが求める動きベクトルＶＣｍとされていないとき、ＣＰＵは、検出ベクトルＶＣｓｃを求める動きベクトルＶＣｍとする。
【００７８】
なお、図１に示すフローチャートのステップＳＴ３，ＳＴ４，ＳＴ９の順に行われる処理は、図７に示すフローチャートのステップＳＴ４０〜４２、および図６のステップＳＴ５２，５４の順に行われる処理に相当する。また、図１に示すフローチャートのステップステップＳＴ３，ＳＴ４，ＳＴ５，ＳＴ６，ＳＴ８の順に行われる処理は、図６に示すフローチャートのステップＳＴ１３，ＳＴ１４，ＳＴ５１の順に行われる処理に相当する。さらに、図１に示すフローチャートのステップステップＳＴ３，ＳＴ４，ＳＴ５，ＳＴ６，ＳＴ７，ＳＴ８の順に行われる処理は、図６に示すフローチャートのステップ１３，ＳＴ１４，図７に示すフローチャートのステップＳＴ３１〜３９，ＳＴ４３，ＳＴ４４、図６のステップＳＴ５２，５３の順に行われる処理に相当する。
【００７９】
このようにソフトウェアで動きベクトルの検出を行っても、動きベクトル検出装置１０と同様に、画像の繰り返しや平坦な部分で、誤差量の少ない（相関の高い）参照ブロックが複数生じても、正しい動きベクトルを求めることができるようになる。また、注目ブロックの位置ずれを１画素とすれば、閾値Ｔｈａは１画素以下の誤差量を示すようになり、注目ブロックとの画像の誤差が１画素以下となる動きベクトルを求める動きベクトルとして検出できるようになる。さらに、注目ブロックを終点（または始点）とした過去ベクトルを用いて動きベクトルの検出が行われることから、小物体の動きが他の部分と異なる動きであっても、小物体の動きベクトルを正しく求めることができる。
【００８０】
［第２の動きベクトル検出動作］
ところで、上述の動きベクトル検出方法では、過去ベクトルＶＣｐｍを用いたときの誤差量Ｅｐｍが閾値Ｔｈａ以下であるとき、この過去ベクトルＶＣｐｍを求める動きベクトルＶＣｍとしている。ここで、検出した動きベクトルをベクトルメモリに記憶する際に、検出した動きベクトルの信頼度を示す情報を関係付けて記憶させれば、この信頼度を示す情報を利用して、信頼性の高い動きベクトルの検出が可能となる。
【００８１】
次に、第２の動きベクトル検出として、信頼度を利用した動きベクトル検出方法について、図８のフローチャートを用いて説明する。
【００８２】
ステップＳＴ２１でＣＰＵは、代表ベクトルＶＣｔの設定を行う。ＣＰＵは、１フレーム前の処理で求めた全ての動きベクトル（過去ベクトル）の中から代表的な動きベクトルを代表ベクトルＶＣｔとしてステップＳＴ２２に進む。
【００８３】
ステップＳＴ２２でＣＰＵは、閾値Ｔｈａの設定を行う。ＣＰＵは、着目ブロックを１画素ずらしたブロックとの誤差量に基づいて閾値Ｔｈａを求める。例えば、着目ブロックと、着目ブロックを１画素ずらしたブロックとの誤差量を８方向で求め、方向が互いに逆となる２つの方向の誤差量（点対称の位置の誤差量）を比較して、少ない誤差量を選択することで４つの誤差量に絞り込む。さらに、選択された４つの誤差量から値が最も大きい誤差量を閾値Ｔｈａに設定する。
【００８４】
ステップＳＴ２３でＣＰＵは、過去ベクトルＶＣｐｍに対して信頼度のある動きベクトルであることを示す信頼度フラグＦＰがセットされているか否か判別する。ＣＰＵは、過去ベクトルＶＣｐｍに対して信頼度フラグＦＰがセットされて「ＦＰ＝１」であるときステップＳＴ２４に進み、信頼度フラグＦＰがセットされておらず「Ｆ＝０」であるときステップＳＴ３０に進む。
【００８５】
ステップＳＴ２４でＣＰＵは、過去ベクトルＶＣｐｍを用いた誤差量Ｅｐｍの算出を行う。ＣＰＵは、注目ブロックを終点（または始点）とする過去ベクトルＶＣｐｍに応じて、時刻ｔ(0)のフレームの画像上である注目ブロックを移動させて、時刻ｔ(1)のフレームの画像上に参照ブロックを設定する。また、ＣＰＵは、注目ブロックの画像と参照ブロックの画像との誤差量Ｅｐｍ、例えばＳＡＤを算出してステップＳＴ２５に進む。
【００８６】
ステップＳＴ２５でＣＰＵは、誤差量Ｅｐｍが閾値Ｔｈａ以下であるか否か算出する。ＣＰＵは、誤差量Ｅｐｍが閾値Ｔｈａ以下であるときステップＳＴ６１に進み、誤差量Ｅｐｍが閾値Ｔｈａ以下でないときステップＳＴ３０に進む。
【００８７】
ステップＳＴ３０では、上述の図７に示すサーチ処理を行い、サーチ処理後ステップＳＴ６２に進む。
【００８８】
ステップＳＴ６１でＣＰＵは、過去ベクトルＶＣｐｍを求める動きベクトルＶＣｍとする。また、誤差量Ｅｐｍが閾値Ｔｈａよりも小さいので、求める動きベクトルＶＣｍの信頼度フラグＦｍをセットして「Ｆｍ＝１」とすることで、求めた動きベクトルＶＣｍが信頼度のある動きベクトルであることを識別できるようにする。
【００８９】
ステップＳＴ６２でＣＰＵは、誤差最小値Ｅｇｓが閾値Ｔｈａ以下となっているか判別する。ＣＰＵは、誤差最小値Ｅｇｓが閾値Ｔｈａ以下となっているときステップＳＴ６３に進み、誤差最小値Ｅｇｓが閾値Ｔｈａ以下となっていないときステップＳＴ６４に進む。
【００９０】
ステップＳＴ６３でＣＰＵは、閾値Ｔｈａよりも誤差量の少ない候補ベクトルが検出されていることから、この候補ベクトルである検出ベクトルＶＣｓｂを、動きベクトルＶＣｆとする。また、誤差最小値Ｅｇｓが閾値Ｔｈａよりも小さいので、フラグＦｆをセットして「Ｆｆ＝１」としてステップＳＴ６８に進む。
【００９１】
ステップＳＴ６４でＣＰＵは、閾値Ｔｈａよりも誤差量の少ない動きベクトルが検出されていないことから、検出ベクトルＶＣｓｃを動きベクトルＶＣｆとしてステップＳＴ６５に進む。
【００９２】
ステップＳＴ６５でＣＰＵは、誤差最小値Ｅａｓが閾値Ｔｈａ以下であるか否か判別する。ＣＰＵは、誤差最小値Ｅａｓが閾値Ｔｈａ以下であるときステップＳＴ６６に進み、誤差最小値Ｅａｓが閾値Ｔｈａ以下でないときステップＳＴ６７に進む。
【００９３】
ステップＳＴ６６でＣＰＵは、誤差最小値Ｅａｓが閾値Ｔｈａ以下であり、検出ベクトルＶＣｓｃを用いたときの誤差量が少ないことから、フラグＦｆをセットして「Ｆｆ＝１」としてステップＳＴ６８に進む。
【００９４】
ステップＳＴ６７でＣＰＵは、誤差最小値Ｅａｓが閾値Ｔｈａよりも大きく、検出ベクトルＶＣｓｃを用いたときの誤差量が大きいことから、フラグＦｆをセットせず「Ｆｆ＝０」としてステップＳＴ６８に進む。
【００９５】
ステップＳＴ６８でＣＰＵは、動きベクトルＶＣｆを求める動きベクトルＶＣｍとする。また、フラグＦｆを求める動きベクトルＶＣｍの信頼度フラグＦｍとする。
【００９６】
このようにすれば、誤差量が閾値Ｔｈａ以下となる動きベクトルが信頼度のある動きベクトルとされて、信頼度を示す情報例えば信頼度フラグＦｍの設定が行われる。また、検出された動きベクトルを過去ベクトルとして用いて動きベクトルの検出を行う場合、信頼度を示す情報を利用することで、サーチ処理が行われることなく信頼度のない過去ベクトルが求める動きベクトルとして選択されてしまうことを防止できる。したがって、信頼性の高い動きベクトルの検出が可能となる。また、信頼度を示す情報を動きベクトル検出装置１０で用いるようにして、動きベクトル検出装置で信頼性の高い動きベクトルの検出を行うようにしてもよい。この場合、信頼度を示す情報の生成は、第１のベクトル検出部１４や第２のベクトル検出部１６および第３のベクトル検出部で行う。
【００９７】
なお、本発明は、上述した発明の実施の形態に限定して解釈されるべきではない。この発明の実施の形態は、例示という形態で本発明を開示しており、本発明の要旨を逸脱しない範囲で当業者が実施の形態の修正や代用をなし得ることは自明である。すなわち、本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。
【産業上の利用可能性】
【００９８】
この発明の動きベクトル検出装置と動きベクトル検出方法およびプログラムでは、第１の画像における複数の画素からなる注目ブロックの画像と、注目ブロックを位置ずれさせた画像との誤差から閾値が設定される。また、第１の画像とは時間上の位置が異なる第２の画像に参照ブロックを設け、注目ブロックとの画像の誤差が閾値以下となる参照ブロックの注目ブロックに対する位置から動きベクトルが検出される。この検出された動きベクトルと既に検出されている動きベクトルから、求める動きベクトルが決定される。このため、繰り返しや平坦な部分で相関が高くなる参照ブロックが複数生じるような画像であっても、既に検出されている動きベクトルや、注目ブロックと注目ブロックを位置ずれさせた画像から設定した閾値とを用いて、正しく動きベクトルを求めることができるようになる。したがって、動きベクトルを用いた画像処理例えば画像の補間や符号化等の処理に好適である。
【符号の説明】
【００９９】
１０・・・動きベクトル検出装置、１１・・・画像メモリ、１２・・・ベクトルメモリ、１３・・・閾値設定部、１４・・・第１のベクトル検出部、１５・・・代表ベクトル設定部、１６・・・第２のベクトル検出部、１７・・・第３のベクトル検出部、１８・・・ベクトル出力部、１４１・・・第１誤差算出部、１４２・・・第１ベクトル選択部、１６１・・・第２誤差算出部、１６２・・・候補ベクトル検出部、１６３・・・ベクトル比較部、１６４・・・第２ベクトル選択部
【図１】
2010287022.tif 000003
【図２】
2010287022.tif 000004
【図３】
2010287022.tif 000005
【図４】
2010287022.tif 000006
【図５】
2010287022.tif 000007
【図６】
2010287022.tif 000008
【図７】
2010287022.tif 000009
【図８】
2010287022.tif 000010