(57)【要約】【課題】撮像装置または照度変化に由来して複数の画像間に輝度差が生じる場合でも、精度良く動きベクトルを検出する。【解決手段】第一の画像上の複数の領域について、第一の画像とは異なる第二の画像との間の動きベクトルを検出する動きベクトル検出装置は、複数の領域ごとに、第二の画像上で相関性の高い領域を求めることによって、第一の画像と第二の画像との間の第一の動きベクトルを算出する第一動きベクトル算出部１０１と、第一の動きベクトルの信頼性を判定する信頼性判定部１０２と、第一の動きベクトルの信頼性が高いと判定された領域内の画素について、第一の画像と第二の画像との間の輝度差を算出する輝度差算出部１０４と、輝度差を用いて、第一の動きベクトルの信頼性が低いと判定された領域の第二の動きベクトルを算出する第二動きベクトル算出部１０６とを備える。【選択図】図１
2012068842.tif 000002
【特許請求の範囲】
【請求項１】
第一の画像上の複数の領域について、前記第一の画像とは異なる第二の画像との間の動きベクトルを検出する動きベクトル検出装置であって、
前記第１の画像上に設定された複数の領域ごとに、前記第二の画像上で相関性の高い領域を求めることによって、前記第一の画像と前記第二の画像との間の第一の動きベクトルを算出する第一動きベクトル算出部と、
前記第一の動きベクトルの信頼性を判定する信頼性判定部と、
前記第一の動きベクトルの信頼性が高いと判定された領域内の画素について、前記第一の画像と前記第二の画像との間の輝度差を算出する輝度差算出部と、
前記輝度差を用いて、前記第一の動きベクトルの信頼性が低いと判定された領域の第二の動きベクトルを算出する第二動きベクトル算出部と、
を備えることを特徴とする動きベクトル検出装置。
【請求項２】
前記信頼性が高いと判定された第一の動きベクトルに基づいて、前記第二の動きベクトルの候補となる候補動きベクトルを算出する候補動きベクトル算出部と、
前記第一の動きベクトルの信頼性が低いと判定された領域について、前記第一の動きベクトルおよび前記候補動きベクトルのそれぞれに基づいて、前記第一の画像と前記第二の画像との間の相関性を示す相関値をそれぞれ算出する相関値算出部と、
前記輝度差に基づいて、前記第一の動きベクトルに基づいた相関値および前記候補動きベクトルに基づいた相関値の差と比較するための閾値を算出する閾値算出部と、
をさらに備え、
前記第二動きベクトル算出部は、前記第一の動きベクトルに基づいた相関値および前記候補動きベクトルに基づいた相関値の差と前記閾値とを比較することによって、前記候補動きベクトルを前記第二の動きベクトルとして採用するか否かを判定する、
ことを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項３】
前記閾値算出部は、前記輝度差に基づいて第一の仮閾値を算出するとともに、前記信頼性が低いと判定された領域内の画素の輝度値に応じたノイズレベルに基づいて第二の仮閾値を算出し、前記第一の仮閾値および前記第二の仮閾値のうちのいずれか一方を、前記相関値と比較するための閾値とする、
ことを特徴とする請求項２に記載の動きベクトル検出装置。
【請求項４】
前記閾値算出部は、前記輝度差と前記ノイズレベルとを比較し、ノイズレベルの方が大きい場合に、前記第二の仮閾値を前記相関値と比較するための閾値とする、
ことを特徴とする請求項３に記載の動きベクトル検出装置。
【請求項５】
前記輝度差に基づいて、前記第一の画像および前記第二の画像間の輝度差を補正する輝度補正部をさらに有し、
前記第二動きベクトル算出部は、前記輝度補正部によって輝度差が補正された第一の画像および第二の画像の間において、前記第二の動きベクトルを算出する、
ことを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項６】
前記輝度差算出部は、前記第一の動きベクトルの信頼性が高いと判定された領域内の画素の輝度値とともに、画像上の画素位置に基づいて、前記第一の画像と前記第二の画像との間の輝度差を算出する、
ことを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項７】
第一の画像上の複数の領域について、前記第一の画像とは異なる第二の画像との間の動きベクトルを検出する動きベクトル検出方法であって、
前記第１の画像上に設定された複数の領域ごとに、前記第二の画像上で相関性の高い領域を求めることによって、前記第一の画像と前記第二の画像との間の第一の動きベクトルを算出するステップと、
前記第一の動きベクトルの信頼性を判定するステップと、
前記第一の動きベクトルの信頼性が高いと判定された領域内の画素について、前記第一の画像と前記第二の画像との間の輝度差を算出するステップと、
前記輝度差を用いて、前記第一の動きベクトルの信頼性が低いと判定された領域の第二の動きベクトルを算出するステップと、
を備えることを特徴とする動きベクトル検出方法。
【請求項８】
第一の画像上の複数の領域について、前記第一の画像とは異なる第二の画像との間の動きベクトルを検出するための動きベクトル検出プログラムであって、
前記第１の画像上に設定された複数の領域ごとに、前記第二の画像上で相関性の高い領域を求めることによって、前記第一の画像と前記第二の画像との間の第一の動きベクトルを算出するステップと、
前記第一の動きベクトルの信頼性を判定するステップと、
前記第一の動きベクトルの信頼性が高いと判定された領域内の画素について、前記第一の画像と前記第二の画像との間の輝度差を算出するステップと、
前記輝度差を用いて、前記第一の動きベクトルの信頼性が低いと判定された領域の第二の動きベクトルを算出するステップと、
をコンピュータに実行させるための動きベクトル検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の画像間における動きベクトルを検出する技術に関する。
【背景技術】
【０００２】
従来、ブロックマッチング法によって、２つの画像間の動きベクトルを求める技術が知られている（特許文献１参照）。ブロックマッチング法では、通常、画素値として輝度値を利用しており、画像間の輝度値の差分に基づく相関を利用しているので、動きベクトルを検出する対象画像間の同一被写体位置において、輝度レベルが一致していることが重要である。
【０００３】
しかしながら、商用電源で駆動される照明下で撮影された画像は、画像間や画像内でフリッカによる輝度差が発生することがある。特許文献２には、被写体や撮像装置に動きがあっても精度良くフリッカを補正するために、画像上に複数のフリッカ検出枠を設定して、各枠のフリッカ成分と信頼度を検出し、信頼度の高い枠のフリッカ成分に基づいて、フリッカ補正を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−９９２６０号公報
【特許文献２】特開２００９−１３０８４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では、露光時間のわずかなばらつきなどの撮像装置由来の輝度差が生じる場合や、照度変化の周期を検出できないわずかな照度差による画面全体の輝度変化が存在する場合には、フリッカ補正を精度良く行うことができない。
【０００６】
本発明は、撮像装置に由来して複数の画像間に輝度差が生じる場合や、照度変化の周期を検出できないわずかな照度差による輝度変化が存在する場合でも、精度良く動きベクトルを検出する技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のある態様に係る動きベクトル検出装置は、第一の画像上の複数の領域について、前記第一の画像とは異なる第二の画像との間の動きベクトルを検出する動きベクトル検出装置であって、前記第１の画像上に設定された複数の領域ごとに、前記第二の画像上で相関性の高い領域を求めることによって、前記第一の画像と前記第二の画像との間の第一の動きベクトルを算出する第一動きベクトル算出部と、前記第一の動きベクトルの信頼性を判定する信頼性判定部と、前記第一の動きベクトルの信頼性が高いと判定された領域内の画素について、前記第一の画像と前記第二の画像との間の輝度差を算出する輝度差算出部と、前記輝度差を用いて、前記第一の動きベクトルの信頼性が低いと判定された領域の第二の動きベクトルを算出する第二動きベクトル算出部と、を備える。
【０００８】
本発明の別の態様に係る動きベクトル検出方法は、第一の画像上の複数の領域について、前記第一の画像とは異なる第二の画像との間の動きベクトルを検出する動きベクトル検出方法であって、前記第１の画像上に設定された複数の領域ごとに、前記第二の画像上で相関性の高い領域を求めることによって、前記第一の画像と前記第二の画像との間の第一の動きベクトルを算出するステップと、前記第一の動きベクトルの信頼性を判定するステップと、前記第一の動きベクトルの信頼性が高いと判定された領域内の画素について、前記第一の画像と前記第二の画像との間の輝度差を算出するステップと、前記輝度差を用いて、前記第一の動きベクトルの信頼性が低いと判定された領域の第二の動きベクトルを算出するステップと、を備える。
【０００９】
本発明のさらに別の態様に係る動きベクトル検出プログラムは、第一の画像上の複数の領域について、前記第一の画像とは異なる第二の画像との間の動きベクトルを検出するための動きベクトル検出プログラムであって、前記第１の画像上に設定された複数の領域ごとに、前記第二の画像上で相関性の高い領域を求めることによって、前記第一の画像と前記第二の画像との間の第一の動きベクトルを算出するステップと、前記第一の動きベクトルの信頼性を判定するステップと、前記第一の動きベクトルの信頼性が高いと判定された領域内の画素について、前記第一の画像と前記第二の画像との間の輝度差を算出するステップと、前記輝度差を用いて、前記第一の動きベクトルの信頼性が低いと判定された領域の第二の動きベクトルを算出するステップと、をコンピュータに実行させる。
【発明の効果】
【００１０】
本発明によれば、撮像装置に由来して複数の画像間に輝度差が生じる場合や、照度変化の周期を検出できないわずかな照度差による輝度変化が存在する場合でも、精度良く動きベクトルを検出することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態における動きベクトル検出装置を搭載した撮像装置の構成を示すブロック図である。
【図２】動きベクトル検出部が基準画像および探索画像間の動きベクトルを検出して、画像処理部に出力するまでの処理の流れを示すフローチャートである。
【図３】図３（ａ）は、基準画像上に設定された複数のブロック３１の一例を示す図であり、図３（ｂ）は、探索画像上で動きベクトルを求める方法を説明するための図である。
【図４】画像座標と輝度値との関係、および、画像座標とＳＡＤ値との関係を示す図である。
【図５】ＳＡＤ値の計算過程を示す図である。
【図６】第二の動きベクトルを算出する詳細な方法を示すフローチャートである。
【図７】画像処理部に出力する動きベクトルの詳しい選択方法を示すフローチャートである。
【図８】第３の実施形態における動きベクトル検出装置を搭載した撮像装置の構成を示すブロック図である。
【図９】第３の実施形態における動きベクトル検出装置によって行われるステップＳ７０の処理の詳細な内容を示すフローチャートである。
【図１０】第３の実施形態において、出力選択部が画像処理部に出力する動きベクトルの詳しい選択方法を示すフローチャートである。
【発明を実施するための形態】
【００１２】
−第１の実施形態−
図１は、第１の実施形態における動きベクトル検出装置を搭載した撮像装置の構成を示すブロック図である。この撮像装置は、例えば、デジタルカメラであって、画像取得部１０と、フレームメモリ１１と、動きベクトル検出部１２と、画像処理部１３と、メインコントローラ１４とを備える。
【００１３】
画像取得部１０は、図示しないレンズや撮像素子等を含み、撮影によって、時間的に連続した複数の画像を取得し、画像の座標位置に応じた画素値をデジタルデータとしてフレームメモリ１１に格納する。このとき、オプティカルブラック減算処理など、撮像装置で一般的に行われる処理も行われる。
【００１４】
フレームメモリ１１に格納される複数の画像には、動きベクトルを検出するための基準となる画像(以下、基準画像と呼ぶ)と、基準画像に対して動きベクトルを検出するための画像（以下、探索画像と呼ぶ）がある。
【００１５】
フレームメモリ１１に画像を格納する前に、必要に応じて、基準画像および探索画像間における輝度レベル合わせを行っておく。例えば、露光時間の異なる複数の画像を合成することによって、ダイナミックレンジの広い合成画像を生成する場合等のように、意図的に露光レベルが大きく異なる画像間で動きベクトルを求める場合には、意図した露光レベル差に基づいて輝度レベルを合わせる補正処理を行っておく。
【００１６】
なお、フレームメモリ１１に画像を格納する前に、商用電源を用いた照明の周期的な照度変動によるフリッカを補正するために、既知のフリッカ補正処理を行うようにしてもよい。
【００１７】
動きベクトル検出部１２は、フレームメモリ１１から基準画像および探索画像を読み出して、両画像間の動きベクトルを算出する。このため、動きベクトル検出部１２は、ブロック設定部１００と、第一ベクトル算出部１０１と、第一ベクトル信頼性判定部１０２と、ブロック輝度差算出部１０４と、第二ベクトル算出部１０６と、出力選択部１０７とを備える。第二ベクトル算出部１０６は、閾値算出部１３０と、候補ベクトル算出部１３１と、相関値算出部１３２と、比較部１３３とを備える。各部で行われる処理の詳細については後述する。
【００１８】
画像処理部１３は、動きベクトル検出部１２で検出された動きベクトルに基づいて、フレームメモリ１１に格納されている基準画像および探索画像の間の位置ずれを補正した後、両画像を加算する等の処理を行う。画像処理部１３は、また、動きベクトルを利用しない処理も行う。画像処理部１３によって加算処理等が施された画像は、図示しない記録装置に記録される。記録装置は、例えばカメラ本体に着脱可能なメモリカードからなる記録媒体であるが、これに限定されるものではない。
【００１９】
メインコントローラ１４は、ＤＳＰやＣＰＵ等によって構成され、撮像装置内部の処理を制御する。
【００２０】
図２は、動きベクトル検出部１２が基準画像および探索画像間の動きベクトルを検出して、画像処理部１３に出力するまでの処理の流れを示すフローチャートである。
【００２１】
ステップＳ１０では、画像取得部１０によって取得された基準画像および探索画像をフレームメモリ１１に格納する。
【００２２】
ステップＳ２０からステップＳ８０までの処理は、動きベクトル検出部１２によって行われる。ステップＳ２０において、ブロック設定部１００は、基準画像上に複数のブロックを設定する。
【００２３】
図３（ａ）は、基準画像３０上に設定された複数のブロック３１の一例を示す図であり、図３（ｂ）は、探索画像４０上で、ブロックの動きベクトルを求める方法を説明するための図である。図３（ａ）に示すように、ブロック３１は、所定の大きさの矩形領域であり、格子状に設定される。図３（ａ）に示す例では、画素数がｘ軸方向にｐ、ｙ軸方向にｑの基準画像３０上に、ブロック３１をｍ列ｎ行に配置している。図３（ａ）において、（ｘ、ｙ）は、各画素の座標を表しており、［ｉ，ｊ］はブロックの位置を表している。
【００２４】
ステップＳ３０において、第一ベクトル算出部１０１は、ブロック設定部１００で設定されたブロックごとに、既知のブロックマッチング法を用いて第一の動きベクトルを算出する。ブロックマッチング法は、基準画像３０に設定された各ブロック３１について、探索画像の対応箇所から一定範囲内において相関値を計算し、相関値が最も高い位置を求める手法である。ここでは、相関値として、基準画像および探索画像間の画素値（輝度値）の差分の絶対値和であるＳＡＤを算出する。基準画像３０上のあるブロックから（Ｖｘ，Ｖｙ）だけずれた位置における探索画像上の同一サイズのブロック（図３（ｂ）に示す探索画像４０上のブロック４１）との間のＳＡＤは、次式（１）より求まる。
【００２５】
ＳＡＤ（Ｖｘ，Ｖｙ）＝Σ｜Ｌｓ（ｂｅｘ＋Ｖｘ＋ｘ，ｂｅｙ＋Ｖｙ＋ｙ）−Ｌｅ（ｂｅｘ＋ｘ，ｂｅｙ＋ｙ）｜  （ただし、ｘ＝−ｂｈ／２〜＋ｂｈ／２、ｙ＝−ｂｖ／２〜＋ｂｖ／２）                （１）
【００２６】
式（１）において、ｂｈ、ｂｖは、ブロック３１の水平方向、垂直方向の画素数である。（ｂｅｘ，ｂｅｙ）は、基準画像上の指定ブロックの中心位置を示す。Ｌｅ（ｘ，ｙ）は、基準画像における座標（ｘ，ｙ）の輝度値、Ｌｓ（ｘ，ｙ）は、探索画像における座標（ｘ，ｙ）の輝度値である。
【００２７】
探索画像４０において、基準画像３０のブロック３１と対応する位置を中心とする一定範囲内における全ての（Ｖｘ，Ｖｙ）について、式（１）よりＳＡＤを算出し、ＳＡＤが最小となる（Ｖｘ，Ｖｙ）を求める。この（Ｖｘ，Ｖｙ）が第一の動きベクトルとなる。第一ベクトル算出部１０１は、ブロック設定部１００で設定された全てのブロックについて、第一の動きベクトルを算出する。
【００２８】
なお、第一ベクトル算出部１０１は、相関値としてＳＡＤを算出したが、画素値の差分の自乗和である誤差自乗和ＳＳＤ等を相関値として算出することもできる。
【００２９】
ステップＳ４０において、第一ベクトル信頼性判定部１０２は、第一ベクトル算出部１０１で算出された第一の動きベクトルの確からしさを示す信頼性を判定する。動きベクトルの信頼性を判定する方法には、様々な方法があるが、ここでは、ブロックマッチング法で算出した相関値を利用して、動きベクトルの信頼性を判定する。具体的には、下記（ｉ）、（ｉｉ）の基準により、動きベクトルの信頼性が高いか低いかを判定する。
【００３０】
（ｉ）ブロック内の画像の模様が一様なパターンの場合、異なる（Ｖｘ，Ｖｙ）ごとのＳＡＤの差は小さく、信頼性は低い。従って、ＳＡＤの最小値と、値が小さい所定数のＳＡＤの平均値（例えば、２番目〜８番目に小さいＳＡＤの平均値）との差が所定の閾値より小さい場合には、信頼性が低いと判断する。
【００３１】
（ｉｉ）画像の模様が繰り返しパターンの場合、一致するパターン位置ごとにＳＡＤが極小値をとる。従って、その極小値となる各ＳＡＤ値の差が所定の値より小さければ、信頼性は低いと判断する。
【００３２】
動きベクトルの信頼性を判定する方法は、上記（ｉ）、（ｉｉ）の方法に限定されることはない。第一ベクトル信頼性判定部１０２は、相関値を用いた他の方法により信頼性を判定してもよいし、相関値を用いない方法、例えば、処理対象の動きベクトルと近傍の動きベクトルの類似度によって信頼性を判定することもできる。
【００３３】
ここで、第一ベクトル信頼性判定部１０２によって信頼性が高いと判定された動きベクトルが１つ以下の場合には、ステップＳ４０より後の処理を行わないようにする。また、信頼性が高いと判定された動きベクトルの数や位置に基づいて、ステップＳ４０より後の処理を行うか否かを判断し、処理を行うと判断した場合にのみ、ステップＳ５０以後の処理を行うようにしてもよい。
【００３４】
ステップＳ５０において、ブロック輝度差算出部１０４は、基準画像と探索画像において、信頼性が高いと判定されたブロック内の輝度平均値Ｌｂｍ＿ｅ［ｉ，ｊ］、Ｌｂｍ＿ｓ［ｉ，ｊ］を求める。ただし、Ｌｂｍ＿ｅ［ｉ，ｊ］は、基準画像のブロック［ｉ，ｊ］内の輝度平均値を表し、Ｌｂｍ＿ｓ［ｉ，ｊ］は、基準画像のブロック［ｉ，ｊ］に対応する探索画像のブロックの位置から、動きベクトル（Ｖｘ，Ｖｙ）だけずらした位置のブロック内、すなわち、基準画像のブロック［ｉ，ｊ］と最も相関の高い探索画像のブロックの輝度平均値を表している。
【００３５】
なお、ここでは、ブロック内の輝度の単純な平均値を算出するようにしているが、ブロック内の輝度を正確に反映できる値であれば、単純な平均値に限定されることはない。例えば、ブロックの中央からの距離に応じた加重平均によって被写体の動きの影響を軽減するようにしてもよい。
【００３６】
ステップＳ６０において、ブロック輝度差算出部１０４は、ステップＳ５０で算出した基準画像の輝度平均値Ｌｂｍ＿ｅ［ｉ，ｊ］を用いて、基準画像の輝度補正式を算出する。このため、まず始めに、基準画像の輝度値と探索画像の輝度値との間の近似式を求める。ここでは、回帰分析を利用して、次式（２）による一次式にて、ステップＳ５０で求めた基準画像の輝度平均値Ｌｂｍ＿ｅ［ｉ，ｊ］と探索画像の輝度平均値Ｌｂｍ＿ｓ［ｉ，ｊ］との関係式を定義する。
【００３７】
Ｌｂｍ＿ｓ［ｉ，ｊ］＝ａ＋ｂ×Ｌｂｍ＿ｅ［ｉ，ｊ］          （２）
【００３８】
式（２）において、係数ａ、ｂは、最小二乗法によって求めることができる。基準画像の輝度補正式は、係数ａ，ｂを用いて、次式（３）のように表せる。ただし、式（３）において、Ｌ’ｅ（ｘ，ｙ）は、基準画像における座標（ｘ，ｙ）の画素の補正後の輝度値であり、Ｌｅ（ｘ，ｙ）は、基準画像における座標（ｘ，ｙ）の画素の補正前の輝度値である。
【００３９】
Ｌ’ｅ（ｘ，ｙ）＝ａ＋ｂ×Ｌｅ（ｘ，ｙ）                    （３）
【００４０】
式（３）で表される補正式は、同一被写体と推定される位置の基準画像と探索画像との間の輝度の変化量のみから得られるため、被写体の動きに影響を受けず、基準画像と探索画像との間の露光量のばらつきや、外部照明のわずかな変動による輝度変化のみを補正することが可能となる。
【００４１】
なお、式（２）で表される回帰式、および、式（３）で表される補正式は、一次式に限定されることはなく、例えば、二次以上の多項式で表してもよい。
【００４２】
ブロック輝度差算出部１０４は、画像上の任意の位置（ｘ，ｙ）の輝度値Ｌｅ（ｘ，ｙ）について、式（３）より、補正後の輝度値Ｌ’ｅ（ｘ，ｙ）を求めることができる。ブロック輝度差算出部１０４はさらに、次式（４）より、補正前後の輝度差ΔＬ（ｘ，ｙ）を算出する。
【００４３】
ΔＬ（ｘ，ｙ）＝Ｌ’ｅ（ｘ，ｙ）−Ｌｅ（ｘ，ｙ）            （４）
【００４４】
式（４）から求められる輝度差ΔＬ（ｘ，ｙ）は、基準画像と探索画像との間の撮像装置の露光時間や照明のわずかな変化により引き起こされる、同一被写体と推定される位置の輝度値の変化の推定値を表している。
【００４５】
ここで、画像間の輝度差ΔＬが相関値の誤差に影響を与えることについて、図４および図５を用いて説明する。画像やベクトルは二次元データであるが、図４および図５では、説明を容易にするため、一次元データとして取り扱っている。
【００４６】
図４は、画像座標と輝度値との関係、および、動きベクトル座標とＳＡＤとの関係を示す図である。図４では、基準画像上において、シェーディング等で輝度値が緩やかに変化している部位にブロックＢが配置されている例を示している。撮像装置や被写体の動き等により、基準画像上のブロックＢに対して、対応する探索画像上のブロックは、ベクトルＶｒだけずれているものとする。また、露光時間のわずかな変化により、基準画像の輝度レベルに対して、探索画像の輝度レベルは、ΔＬだけ高いものとする。
【００４７】
図４に示すグラフＧは、探索画像上において、ブロックＢを用いて算出されるＳＡＤの変化を示している。上述したように、基準画像上のブロックＢに対して、対応する探索画像上のブロックは、ベクトルＶｒだけずれているので、基準画像上のブロックＢに対応する基準点から、ベクトルＶｒだけ離れた位置でＳＡＤは最小値となるはずである。しかし、基準画像と探索画像との間で、輝度レベルがΔＬずれているので、図４に示す例では、基準点からベクトルＶｗ離れた位置において、ＳＡＤが最小値となっている。
【００４８】
図５は、基準画像および探索画像の同一被写体位置におけるＳＡＤの計算過程を示す図である。図５（ａ）〜（ｃ）は、基準画像と探索画像との間の輝度差ΔＬがほとんどない場合の図であり、図５（ｄ）〜（ｆ）は、基準画像と探索画像との間の輝度差ΔＬがランダムノイズレベルより大きい場合の図である。
【００４９】
図５（ａ）および図５（ｄ）は、基準画像および探索画像の輝度Ｌを示す図であり、実線が基準画像の輝度Ｌを、点線が探索画像の輝度Ｌをそれぞれ示している。
【００５０】
図５（ｂ）および図５（ｅ）は、基準画像と探索画像との間の輝度の差分を示している。
【００５１】
図５（ｃ）および図５（ｆ）は、基準画像と探索画像との間の輝度差分の絶対値を示している。図５（ｃ）および図５（ｆ）では、輝度差分の絶対値の平均値を斜線で表している。輝度差分の絶対値の積分値がＳＡＤとなる。
【００５２】
基準画像と探索画像との間の輝度差ΔＬが小さい場合には、図５（ｃ）に示すように、輝度差分の絶対値も小さい。この場合、ＳＡＤは、ランダムノイズレベルに比例する。
【００５３】
一方、基準画像と探索画像との間の輝度差ΔＬがランダムノイズより大きい場合には、図５（ｆ）に示すように、輝度差分の絶対値も大きい。この場合、ＳＡＤは、輝度差ΔＬにほぼ等しくなる。
【００５４】
このように、輝度差ΔＬがランダムノイズより大きい場合には、相関値であるＳＡＤの誤差は、画像間の輝度差によって発生する。従って、図４を参照しながら説明すると、信頼性の高いブロックＢの動きベクトルＶｒを推定した場合に、動きベクトルＶｒの位置におけるＳＡＤおよび第一ベクトル算出部１０１で算出された動きベクトルＶｗの位置におけるＳＡＤの差ΔＳＡＤと、ブロック内の輝度差ΔＬの和とを比較することによって、動きベクトルＶｒの正しさを判定することができる。すなわち、相関値であるＳＡＤの差ΔＳＡＤがブロック内の輝度差ΔＬの和より小さければ、動きベクトルＶｒの精度は高いと判定する。
【００５５】
図２に示すフローチャートに戻って説明を続ける。ステップＳ７０において、第二ベクトル算出部１０６は、第一の動きベクトルの信頼性が低いと判定されたブロックを対象として、第二の動きベクトルを算出する。第二の動きベクトルを算出する詳細な方法を図６に示すフローチャートを用いて説明する。
【００５６】
図６に示すフローチャートのステップＳ６００において、第二ベクトル算出部１０６の閾値算出部１３０は、第一の動きベクトルの信頼性が低いと判定されたブロックごとに、次式（５）より、閾値ＴＨ＿ＳＡＤを算出する。
【００５７】
ＴＨ＿ＳＡＤ＝｜ΣΔＬ（ｘｂ，ｙｂ）｜                （５）
【００５８】
ただし、（ｘｂ，ｙｂ）は、第一の動きベクトルの信頼性が低いと判定された、第二の動きベクトルの算出対象ブロック内の画素の座標である。
【００５９】
なお、上述したように、第一ベクトル算出部１０１が算出する相関値は、ＳＡＤに限定されることはない。ただし、ＳＡＤ以外の相関値を算出する場合には、式（５）で定義される閾値ＴＨ＿ＳＡＤの代わりに、その相関値に応じた閾値を算出する必要がある。例えば、相関値としてＳＳＤを算出する場合には、輝度差ΔＬの和の絶対値ではなく、輝度差ΔＬの和の二乗値を閾値として算出する。
【００６０】
ステップＳ６１０において、候補ベクトル算出部１３１は、第一の動きベクトルの信頼性が低いと判定されたブロックの近傍に位置する信頼性の高いブロックの第一の動きベクトルに基づいて、第二の動きベクトルの候補となる第二の動きベクトル候補を求める。具体的には、第一の動きベクトルの信頼性が低いと判定されたブロックの近傍に位置する信頼性の高い動きベクトルを平均することによって、第二の動きベクトル候補を算出する。
【００６１】
なお、第二の動きベクトル候補を算出する方法は、上述した方法に限定されることはなく、他の方法を採用することもできる。例えば、画像全体の動きを示すグローバルベクトルの一例である高信頼性かつ最頻度の動きベクトルを、第二の動きベクトル候補としてもよい。
【００６２】
ステップＳ６２０において、相関値算出部１３２は、第一の動きベクトルの信頼性が低いと判定されたブロックごとに、第二の動きベクトル候補の位置におけるＳＡＤを算出し、算出した第二の動きベクトル候補の位置におけるＳＡＤと、第一ベクトル算出部１０１で算出されたＳＡＤとの差ΔＳＡＤを算出する。
【００６３】
ステップＳ６３０において、比較部１３３は、相関値算出部１３２によって算出された相関値の差ΔＳＡＤが閾値ＴＨ＿ＳＡＤより小さければ、第二の動きベクトル候補を第二の動きベクトルとして採用すると判断する。第二の動きベクトル候補の採用判定結果は、出力選択部１０７に送られる。
【００６４】
図２に示すフローチャートに戻って説明を続ける。ステップＳ８０において、出力選択部１０７は、第一ベクトル信頼性判定部１０２で判定された第一の動きベクトルの信頼性、および、比較部１３３による第二の動きベクトル候補の採用判定結果に基づいて、ブロックごとに、画像処理部１３に出力する動きベクトルを選択する。画像処理部１３に出力する動きベクトルの詳しい選択方法を図７に示すフローチャートを用いて説明する。
【００６５】
図７に示すフローチャートのステップＳ７００では、第一ベクトル信頼性判定部１０２から入力される第一の動きベクトルの信頼性が高いか否かを判定する。第一の動きベクトルの信頼性が高いと判定すると、ステップＳ７１０に進む。ステップＳ７１０では、信頼性が高いと判定された第一の動きベクトルを画像処理部１３に出力する。
【００６６】
一方、ステップＳ７００において、第一の動きベクトルの信頼性が低いと判定すると、ステップＳ７２０に進む。ステップＳ７２０では、比較部１３３から入力される第二の動きベクトル候補の採用判定結果に基づいて、第二の動きベクトル候補が採用と判定されたか否かを判定する。第二の動きベクトル候補が採用と判定された場合には、ステップＳ７３０に進み、不採用と判定された場合には、ステップＳ７４０に進む。
【００６７】
ステップＳ７３０では、第二の動きベクトル候補を第二の動きベクトルとして、画像処理部１３に出力する。すなわち、信頼性の低い第一の動きベクトルの代わりに、第二の動きベクトルが出力される。
【００６８】
一方、ステップＳ７４０では、動きが無いことを示すゼロベクトルを画像処理部１３に出力する。
【００６９】
なお、出力選択部１０７は、動きベクトルだけでなく、動きベクトルの信頼性の判定結果も画像処理部１３に出力するようにしてもよい。すなわち、第一の動きベクトルまたは第二の動きベクトルを画像処理部１３に出力する場合には、信頼性が高いという判定結果も合わせて画像処理部１３に出力する。また、ゼロベクトルを画像処理部１３に出力する場合には、信頼性が低いという判定結果も合わせて画像処理部１３に出力する。
【００７０】
この後、画像処理部１３は、画像のノイズを低減するために、出力選択部１０７から出力された各ブロックの動きベクトルに基づいて、フレームメモリ１１に格納されている基準画像および探索画像の間の位置ずれを補正した後、両画像を加算して、合成画像を生成する。具体的には、探索画像の各ブロックを対応する動きベクトルでずらして基準画像と位置合わせをして、基準画像と同じ座標の画素同士で加算平均処理を行う。
【００７１】
以上、第１の実施形態における動きベクトル検出装置によれば、第一の画像上に、動きベクトルを検出するための複数の領域を設定し、複数の領域ごとに、第二の画像上で相関性の高い領域を求めることによって、第一の画像と第二の画像との間の第一の動きベクトルを算出する。また、第一の動きベクトルの信頼性を判定し、信頼性が高いと判定された領域内の画素について、第一の画像と第二の画像との間の輝度差を算出し、算出した輝度差を用いて、第一の動きベクトルの信頼性が低いと判定された領域の第二の動きベクトルを算出する。これにより、第一の動きベクトルの信頼性が低いと判定された領域について、被写体の動き等に起因しない露光時間のバラツキ等による画像間の輝度差を正確に算出することができ、算出した輝度差を用いて、信頼性が低いと判定された第一の動きベクトルより正確な第二の動きベクトルを算出することができる。
【００７２】
特に、信頼性が高いと判定された第一の動きベクトルに基づいて、第二の動きベクトルの候補となる候補動きベクトルを算出し、第一の動きベクトルの信頼性が低いと判定された領域について、第一の動きベクトルおよび候補動きベクトルのそれぞれに基づいて、第一の画像と第二の画像との間の相関性を示す相関値をそれぞれ算出する。そして、上述した輝度差に基づいて閾値を算出し、算出した閾値と、二つの相関値の差とを比較することによって、候補動きベクトルを第二の動きベクトルとして採用するか否かを判定する。これにより、画像間の輝度差が相関値の誤差の主原因である場合に、候補動きベクトルを採用するか否かを正確に判断することができる。
【００７３】
−第２の実施形態−
第２の実施形態における動きベクトル検出装置の構成は、第１の実施形態における動きベクトル検出装置の構成と同じである。第２の実施形態における動きベクトル検出装置が第１の実施形態における動きベクトル検出装置と異なるのは、閾値算出部１３０による閾値ＴＨ＿ＳＡＤの設定方法である。
【００７４】
図５を用いて説明したように、第一の動きベクトルの位置におけるＳＡＤと、第二の動きベクトル候補の位置におけるＳＡＤとの差ΔＳＡＤは、基準画像と探索画像との間の輝度差がランダムノイズより大きい場合には、輝度差に起因する誤差が支配的になる。一方、基準画像と探索画像との間の輝度差がランダムノイズより十分小さい場合には、ランダムノイズに起因する誤差が支配的となる。従って、第２の実施形態における動きベクトル検出装置では、輝度差に起因する誤差、および、ランダムノイズに起因する誤差のうち、大きい方を閾値ＴＨ＿ＳＡＤに設定する。すなわち、閾値ＴＨ＿ＳＡＤは、次式（６）により算出する。
【００７５】
ＴＨ＿ＳＡＤ＝ｍａｘ（Ａ×√（ΣＬｅ（ｘｂ，ｙｂ）×Ｇ）、｜ΣΔＬ（ｘｂ，ｙｂ）｜）          （６）
【００７６】
ただし、（ｘｂ，ｙｂ）は、第一の動きベクトルの信頼性が低いと判定された、第二の動きベクトルの算出対象ブロック内の画素の座標である。また、Ａは、主に画像取得部１０のノイズ特性によって決まる比例定数であり、画像取得部１０によって取得される画像データから実験的に求めておく。Ｇは、画像取得部１０のゲインである。
【００７７】
式（６）において、Ａ×√（ΣＬｅ（ｘｂ，ｙｂ）×Ｇは、ランダムノイズに起因する誤差を表しており、｜ΣΔＬ（ｘｂ，ｙｂ）｜は、輝度差に起因する誤差を表している。ここでは、画像のランダムノイズはショットノイズであり、ノイズ量が基準画像の輝度値の平方根に比例するという理論的な関係を用いて求めているが、基準画像の輝度値とノイズ量との関係を実験的に求めてテーブルデータとして用意しておき、テーブルデータを参照することによって、ノイズ量を求めるようにしてもよい。
【００７８】
以上、第２の実施形態における動きベクトル検出装置によれば、輝度差に基づいて第一の仮閾値を算出するとともに、信頼性が低いと判定された領域内の画素の輝度値に応じたノイズレベルに基づいて第二の仮閾値を算出し、第一の仮閾値および第二の仮閾値のうちのいずれか一方を、相関値と比較するための閾値として設定する。これにより、相関値の誤差に大きく影響を与える要素に基づいて、第二の動きベクトル候補を採用するか否かを適切に判定することができるので、信頼性の高い動きベクトルを第二の動きベクトルとして求めることができる。
【００７９】
−第３の実施形態−
図８は、第３の実施形態における動きベクトル検出装置を搭載した撮像装置の構成を示すブロック図である。図１に示す第１の実施形態における動きベクトル検出装置を搭載した撮像装置の構成と同じ構成要素については、同一の符号を付して詳しい説明は省略する。
【００８０】
第３の実施形態における動きベクトル検出部１２は、ブロック設定部１００と、第一ベクトル算出部１０１と、第一ベクトル信頼性判定部１０２と、ブロック輝度差算出部１０４と、第二ベクトル算出部１０６と、出力選択部１０７と、輝度補正部１５０と、第二ベクトル信頼性判定部１５１と、を備える。
【００８１】
輝度補正部１５０は、基準画像と探索画像との間における輝度差に基づいて、基準画像の各画素の輝度値を補正した画像データを生成する。ここでは、輝度値を補正した基準画像を輝度補正後基準画像と呼ぶ。
【００８２】
なお、輝度補正部１５０は、ブロック内の画素のみを輝度補正すればよいため、基準画像の画素の輝度値を補正しているが、探索画像の画素の輝度値を補正するようにしてもよいし、基準画像および探索画像の双方の画素の輝度値を補正するようにしてもよい。
【００８３】
第二ベクトル算出部１０６は、第一ベクトル信頼性判定部１０２によって第一の動きベクトルの信頼性が低いと判定されたブロックを対象に、輝度補正後基準画像と探索画像との間でブロックマッチング法を用いて、第二の動きベクトルを算出する。
【００８４】
第二ベクトル信頼性判定部１５１は、第二ベクトル算出部１０６で算出された第二の動きベクトルの信頼性を判定する。
【００８５】
第３の実施形態における動きベクトル検出装置で行われる処理の流れは、図２に示すフローチャートの処理の流れと同じである。ただし、第３の実施形態における動きベクトル検出装置では、ステップＳ７０で行われる処理とステップＳ８０で行われる処理の内容が異なる。
【００８６】
図９は、第３の実施形態における動きベクトル検出装置によって行われるステップＳ７０の処理の詳細な内容を示すフローチャートである。ステップＳ９００において、輝度補正部１５０は、第一ベクトル信頼性判定部１０２によって第一の動きベクトルの信頼性が低いと判定されたブロック内の画素について、上式（３）より、基準画像と探索画像との間における輝度差を補正した輝度値を算出して、輝度補正後基準画像を生成する。
【００８７】
ステップＳ９１０において、第二ベクトル算出部１０６は、第一ベクトル信頼性判定部１０２によって第一の動きベクトルの信頼性が低いと判定されたブロックを対象に、輝度補正後基準画像と探索画像との間でブロックマッチング法を用いて、第二の動きベクトルを算出する。
【００８８】
なお、ここでは、処理を速くするために、信頼性が低いと判定されたブロックを対象に第二の動きベクトルを算出するようにしているが、処理の簡易化のために、全てのブロックを対象として第二の動きベクトルを算出するようにしてもよい。
【００８９】
ステップＳ９２０において、第二ベクトル信頼性判定部１５１は、第二ベクトル算出部１０６で算出された第二の動きベクトルの信頼性を判定する。第二の動きベクトルの信頼性は、例えば、周辺ブロックの動きベクトルとの相関に基づいて、または、相関値の大きさに基づいて判定する。周辺ブロックの動きベクトルとの相関に基づいて信頼性を判定する場合には、周辺ブロックの動きベクトルとの相関が低ければ、その動きベクトルの信頼性は低いと判定する。また、相関値の大きさに基づいて信頼性を判定する場合には、相関値ＳＡＤが所定の判定値より大きい場合に、その動きベクトルの信頼性は低いと判定する。ただし、第二の動きベクトルの信頼性を判定する方法は、上述した方法に限定されることはない。
【００９０】
なお、第一ベクトル算出部１０１と第二ベクトル算出部１０６、および、第一ベクトル信頼性判定部１０２と第二ベクトル信頼性判定部１５１は、それぞれ別の機能ブロックとしているが、ハードウェア規模の縮小のために、共用するようにしてもよい。
【００９１】
出力選択部１０７は、第一ベクトル信頼性判定部１０２によって判定された信頼性、および、第二ベクトル信頼性判定部１５１によって判定された信頼性に基づいて、ブロックごとに、画像処理部１３に出力する動きベクトルを選択する。出力選択部１０７が画像処理部１３に出力する動きベクトルの詳しい選択方法を、図１０に示すフローチャートを用いて説明する。
【００９２】
図１０に示すフローチャートのステップＳ１０００では、第一ベクトル信頼性判定部１０２から入力される第一の動きベクトルの信頼性が高いか否かを判定する。第一の動きベクトルの信頼性が高いと判定すると、ステップＳ１０１０に進む。ステップＳ１０１０では、信頼性が高いと判定された第一の動きベクトルを画像処理部１３に出力する。
【００９３】
一方、ステップＳ１０００において、第一の動きベクトルの信頼性が低いと判定すると、ステップＳ１０２０に進む。ステップＳ１０２０では、第二ベクトル信頼性判定部１５１から入力される第二の動きベクトルの信頼性が高いか否かを判定する。第二の動きベクトルの信頼性が高いと判定すると、ステップＳ１０３０に進み、第二の動きベクトルの信頼性が低いと判定すると、ステップＳ１０４０に進む。
【００９４】
ステップＳ１０３０では、信頼性が高いと判定された第二の動きベクトルを画像処理部１３に出力する。一方、ステップＳ１０４０では、動きが無いことを示すゼロベクトルを画像処理部１３に出力する。
【００９５】
なお、出力選択部１０７は、動きベクトルだけでなく、動きベクトルの信頼性の判定結果も画像処理部１３に出力するようにしてもよい。すなわち、第一の動きベクトルまたは第二の動きベクトルを画像処理部１３に出力する場合には、信頼性が高いという判定結果も合わせて画像処理部１３に出力する。また、ゼロベクトルを画像処理部１３に出力する場合には、信頼性が低いという判定結果も合わせて画像処理部１３に出力する。
【００９６】
以上、第３の実施形態における動きベクトル検出装置によれば、信頼性が高いと判定された領域内の画素の輝度値に基づいて算出される第一の画像と第二の画像との間の輝度差に基づいて、第一の画像および第二の画像間の輝度差を補正し、輝度差が補正された第一の画像および第二の画像の間において、第二の動きベクトルを算出する。輝度差を補正した画像間において、第二の動きベクトルを算出するので、より正確な動きベクトルを再計算により求めることができる。
【００９７】
−第４の実施形態−
第１〜第３の実施形態における動きベクトル検出装置では、式（２）および式（３）より、補正後の基準画像の輝度値を算出した。第４の実施形態における動きベクトル検出装置では、画像間の輝度差が画像の座標位置に応じて変化する場合に、画像の座標位置も考慮して、補正後の基準画像の輝度値を算出する。
【００９８】
例えば、画像間の輝度差が画像の座標位置に線形に依存する場合には、図３に示す座標系を用いて、基準画像のブロック［ｉ，ｊ］内の輝度平均値Ｌｂｍ＿ｅ［ｉ，ｊ］と、探索画像のブロック［ｉ，ｊ］内の輝度平均値Ｌｂｍ＿ｓ［ｉ，ｊ］との関係を次式（７）によって近似する。
【００９９】
Ｌｂｍ＿ｓ［ｉ，ｊ］＝ａ＋ｂ×Ｌｂｍ＿ｅ［ｉ，ｊ］＋ｃ×（ｈ×ｉ＋ｂｅｘ［０，０］）＋ｄ×（ｖ×ｊ＋ｂｅｙ［０，０］）                （７）
【０１００】
ただし、式（７）において、ｈおよびｖは、各ブロックの横および縦の配置間隔を画素座標単位で示したものである（図３（ａ）参照）。また、ｂｅｘ［０，０］およびｂｅｙ［０，０］はそれぞれ、ブロック［０，０］の中心のｘ軸方向における画素座標値およびｙ軸方向における画素座標値である。
【０１０１】
式（７）において、係数ａ、ｂ、ｃ、ｄは、最小二乗法によって求めることができる。基準画像の輝度補正式は、係数ａ，ｂ，ｃ，ｄを用いて、次式（８）のように表せる。ただし、式（８）において、Ｌ’ｅ（ｘ，ｙ）は、基準画像における座標（ｘ，ｙ）の画素の補正後の輝度値であり、Ｌｅ（ｘ，ｙ）は、基準画像における座標（ｘ，ｙ）の画素の補正前の輝度値である。
【０１０２】
Ｌ’ｅ（ｘ，ｙ）＝ａ＋ｂ×Ｌｅ（ｘ，ｙ）＋ｃ×ｘ＋ｄ×ｙ        （８）
【０１０３】
なお、上述した説明では、画像間の輝度差が画像の座標位置に線形に依存する場合について説明したが、像高シェーディングが生じる場合等のように、輝度差が画像の中心からの距離に依存する場合等についても、適切な関係式を設定することにより、補正後の基準画像の輝度値を求めることができる。
【０１０４】
また、ブロックを複数含むいくつかの領域に画像を分割し、分割した領域ごとに式（２）および式（３）を適用することによって、領域ごとに、輝度値の補正式を求めるようにしてもよい。この方法でも、画像の座標位置に応じた輝度差に基づいて、補正後の輝度値を求めることができる。
【０１０５】
以上、第４の実施形態における動きベクトル検出装置によれば、画像上の画素位置も考慮して、第一の画像と前記第二の画像との間の輝度差を算出するので、画像間の輝度差が画像上の位置に依存している場合でも、正確に輝度差を算出することができる。これにより、輝度差を用いて、信頼性が低いと判定された第一の動きベクトルより正確な第二の動きベクトルを算出することができる。
【０１０６】
なお、上述した第１〜第４の実施形態の説明では、動きベクトル検出装置が行う処理としてハードウェアによる処理を前提としていたが、このような構成に限定される必要はない。例えば、別途ソフトウェアにて処理する構成も可能である。この場合、動きベクトル検出装置は、ＣＰＵ、ＲＡＭ等の主記憶装置、上記処理の全て或いは一部を実現させるためのプログラムが記憶されたコンピュータ読み取り可能な記憶媒体を備えている。ここでは、このプログラムを動きベクトル検出プログラムと呼ぶ。そして、ＣＰＵが上記記憶媒体に記憶されている動きベクトル検出プログラムを読み出して、情報の加工・演算処理を実行することにより、上述の動きベクトル検出装置と同様の処理を実現させる。
【０１０７】
ここで、コンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、この動きベクトル検出プログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該動きベクトル検出プログラムを実行するようにしても良い。
【０１０８】
本発明は、上述した第１〜第４の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【符号の説明】
【０１０９】
１０…画像取得部
１００…ブロック設定部
１０１…第一ベクトル算出部（相関値算出部、第一動きベクトル算出部）
１０２…第一ベクトル信頼性判定部（信頼性判定部）
１０４…ブロック輝度差算出部（輝度差算出部）
１０６…第二ベクトル算出部（第二動きベクトル算出部）
１０７…出力選択部
１３０…閾値算出部
１３１…候補ベクトル算出部（候補動きベクトル算出部）
１３２…相関値算出部（相関値算出部）
１５０…輝度補正部
【図１】
2012068842.tif 000003
【図２】
2012068842.tif 000004
【図３】
2012068842.tif 000005
【図４】
2012068842.tif 000006
【図５】
2012068842.tif 000007
【図６】
2012068842.tif 000008
【図７】
2012068842.tif 000009
【図８】
2012068842.tif 000010
【図９】
2012068842.tif 000011
【図１０】
2012068842.tif 000012