(57)【特許請求の範囲】
【請求項１】
ターゲット画像に設定された複数のターゲットブロックの各々において被写体の動きベクトルを検出して、当該動きベクトルに応じて元画像における前記被写体の位置ずれを補正する画像処理装置であって、
前記ターゲット画像についてその解像度を変化させて得られた複数のベクトル検出対象画像において前記解像度が低いベクトル検出対象画像から順に前記動きベクトルを検出するベクトル検出手段と、
前記動きベクトルの信頼度が所定の信頼度以下となったベクトル検出対象画像よりも解像度が低いベクトル検出対象画像で検出された動きベクトルを合成して合成動きベクトルを生成する生成手段と、
前記合成動きベクトルに応じて前記元画像における前記被写体の位置ずれを補正する補正手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記ベクトル検出手段は、検出された動きベクトルの信頼度が前記所定の信頼度以下となった場合、当該所定の信頼度以下の動きベクトルが検出されたベクトル検出対象画像よりも解像度が高いベクトル検出対象画像において前記所定の信頼度以下の動きベクトルが検出されたベクトル検出対象画像のターゲットブロックに対応するターゲットブロックで動きベクトルの検出を行わないことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記生成手段は、前記ベクトル検出対象画像の各々において前記動きベクトルが検出されたターゲットブロックの数を求めて、前記ターゲットブロックの数に対する前記動きベクトルが検出されたターゲットブロックの数との割合に応じて、前記動きベクトルを合成する際に前記動きベクトルを用いるか否かを判定するための誤差閾値を変更することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記誤差閾値は、撮像によって前記元画像を得た際の撮像装置のぶれに起因する動きベクトルの影響を除くための閾値であることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記生成手段は、前記ベクトル検出対象画像において前記ターゲットブロックの数に対する前記動きベクトルが検出されたターゲットブロックの数の割合を示す第１のブロック割合が所定の第１の割合閾値よりも大きいと、前記誤差閾値として予め定められた第１の誤差閾値を設定することを特徴とする請求項３又は４のいずれか１項に記載の画像処理装置。
【請求項６】
前記生成手段は、前記第１のブロック割合が前記第１の割合閾値以下である場合、前記解像度が予め設定された解像度よりも高いベクトル検出対象画像において前記ターゲットブロックの数に対する前記動きベクトルが検出されたターゲットブロックの数との割合を示す第２のブロック割合が所定の第２の割合閾値よりも大きいと前記第１の誤差閾値よりも大きい第２の誤差閾値を設定することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記生成手段は、前記第２のブロック割合が前記第２の割合閾値以下である場合、前記第２の誤差閾値よりも大きい第３の誤差閾値を設定することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記生成手段は、前記第２のブロック割合が前記第２の割合閾値以下である場合、前記予め設定された解像度以下の解像度のベクトル検出対象画像で検出された動きベクトルを用いないと決定し、前記第２の誤差閾値を設定することを特徴とする請求項６に記載の画像処理装置。
【請求項９】
ターゲット画像に設定された複数のターゲットブロックの各々において被写体の動きベクトルを検出して、当該動きベクトルに応じて元画像における前記被写体の位置ずれを補正する画像処理装置の制御方法であって、
前記ターゲット画像についてその解像度を変化させて得られた複数のベクトル検出対象画像において前記解像度が低いベクトル検出対象画像から順に前記動きベクトルを検出するベクトル検出ステップと、
前記動きベクトルの信頼度が所定の信頼度以下となったベクトル検出対象画像よりも解像度が低いベクトル検出対象画像で検出された動きベクトルを合成して合成動きベクトルを生成する生成ステップと、
前記合成動きベクトルに応じて前記元画像における前記被写体の位置ずれを補正する補正ステップと、
を有することを特徴とする制御方法。
【請求項１０】
ターゲット画像に設定された複数のターゲットブロックの各々において被写体の動きベクトルを検出して、当該動きベクトルに応じて元画像における前記被写体の位置ずれを補正する画像処理装置で用いられる制御プログラムであって、
前記画像処理装置が備えるコンピュータに、
前記ターゲット画像についてその解像度を変化させて得られた複数のベクトル検出対象画像において前記解像度が低いベクトル検出対象画像から順に前記動きベクトルを検出するベクトル検出ステップと、
前記動きベクトルの信頼度が所定の信頼度以下となったベクトル検出対象画像よりも解像度が低いベクトル検出対象画像で検出された動きベクトルを合成して合成動きベクトルを生成する生成ステップと、
前記合成動きベクトルに応じて前記元画像における前記被写体の位置ずれを補正する補正ステップと、
を実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、その制御方法、および制御プログラムに関し、特に、撮像装置の動きに起因して生じる被写体像のずれを補正する画像処理装置に関する。
【背景技術】
【０００２】
一般に、デジタルカメラなどの撮像装置では、撮像の際にユーザの手ぶれなどによる撮像装置の動きによって被写体像がぶれてしまうことを防ぐため、手ぶれ補正機構が備えられている。そして、手ぶれ補正機構では、例えば、光学式手ぶれ補正又は電子式手ぶれ補正が用いられている。
【０００３】
電子式手ぶれ補正においては、撮像の結果得られた複数の画像について被写体像のずれを画像処理によって補正する。例えば、被写体像のずれを補正する際、元の画像を縮小した縮小画像においてベクトルサーチした結果を用いて、元の画像においてベクトルサーチする範囲を限定するようにしたものがある（特許文献１参照）。これによって、特許文献１では、サーチ範囲を拡大することなく実質的に広い範囲をサーチしつつ、サブピクセル単位の動きベクトルを検出するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−８１５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところが、特許文献１に記載の補正手法では、縮小画像のターゲットブロックにおいてパターンマッチングに適した模様が存在していたとしても、元の画像のターゲットブロックにおいてはこのような模様がないことがある。この場合、元の画像において動きベクトルが正しく求めることは困難である。なお、画像を複数の矩形領域（ブロック）に分割した際、これら複数のブロックの各々をターゲットブロックという。
【０００６】
例えば、低コントラストの被写体の場合には、縮小画像のターゲットブロックにおいて被写体の輪郭を特徴的な模様として検出することができるとしても、元画像のターゲットブロックにおいてはこのような特徴的な模様が検出できないことがある。
【０００７】
また、繰り返しパターンの被写体の場合にも、縮小画像のターゲットブロックで被写体輪郭を特徴的な模様として検出できるとしても、元画像のターゲットブロックでは同様の模様が複数存在して正しく動きベクトルを特定できないことがある。そして、正しく特定できなかった動きベクトルを除いてしまうと、位置ずれ補正処理に利用可能な動きベクトルの数が少なくなって、精度よく位置ずれ補正を行うことができない。
【０００８】
そこで、本発明の目的は、常に被写体像の位置ずれを精度よく補正することのできる画像処理装置、その制御方法、および制御プログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記の目的を達成するため、本発明による画像処理装置は、ターゲット画像に設定された複数のターゲットブロックの各々において被写体の動きベクトルを検出して、当該動きベクトルに応じて元画像における前記被写体の位置ずれを補正する画像処理装置であって、前記ターゲット画像についてその解像度を変化させて得られた複数のベクトル検出対象画像において前記解像度が低いベクトル検出対象画像から順に前記動きベクトルを検出するベクトル検出手段と、前記動きベクトルの信頼度が所定の信頼度以下となったベクトル検出対象画像よりも解像度が低いベクトル検出対象画像で検出された動きベクトルを合成して合成動きベクトルを生成する生成手段と、前記合成動きベクトルに応じて前記元画像における前記被写体の位置ずれを補正する補正手段と、を有することを特徴とする。
【００１０】
本発明による制御方法は、ターゲット画像に設定された複数のターゲットブロックの各々において被写体の動きベクトルを検出して、当該動きベクトルに応じて元画像における前記被写体の位置ずれを補正する画像処理装置の制御方法であって、前記ターゲット画像についてその解像度を変化させて得られた複数のベクトル検出対象画像において前記解像度が低いベクトル検出対象画像から順に前記動きベクトルを検出するベクトル検出ステップと、前記動きベクトルの信頼度が所定の信頼度以下となったベクトル検出対象画像よりも解像度が低いベクトル検出対象画像で検出された動きベクトルを合成して合成動きベクトルを生成する生成ステップと、前記合成動きベクトルに応じて前記元画像における前記被写体の位置ずれを補正する補正ステップと、を有することを特徴とする。
【００１１】
本発明による制御プログラムは、ターゲット画像に設定された複数のターゲットブロックの各々において被写体の動きベクトルを検出して、当該動きベクトルに応じて元画像における前記被写体の位置ずれを補正する画像処理装置で用いられる制御プログラムであって、前記画像処理装置が備えるコンピュータに、前記ターゲット画像についてその解像度を変化させて得られた複数のベクトル検出対象画像において前記解像度が低いベクトル検出対象画像から順に前記動きベクトルを検出するベクトル検出ステップと、前記動きベクトルの信頼度が所定の信頼度以下となったベクトル検出対象画像よりも解像度が低いベクトル検出対象画像で検出された動きベクトルを合成して合成動きベクトルを生成する生成ステップと、前記合成動きベクトルに応じて前記元画像における前記被写体の位置ずれを補正する補正ステップと、を実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、動きベクトルの信頼度が所定の信頼度以下となった動きベクトルが検出されたベクトル検出対象画像よりも解像度が低いベクトル検出対象画像で検出された動きベクトルを合成して合成動きベクトルを生成する。これによって、常に被写体像の位置ずれを精度よく補正することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態による画像処理装置の１つである撮像装置についてその構成を示すブロック図である。
【図２】図１に示す画像処理部の構成についてその一例を示すブロック図である。
【図３】図２に示す階層ベクトルサーチ部で設定されるターゲットブロックの一例を示す図である。
【図４】従来の階層ブロックマッチング処理の概要を説明するための図である。
【図５】図２に示す階層ベクトルサーチ部で行われる階層ベクトルサーチを説明するためのフローチャートである。
【図６】図２に示す階層ベクトルサーチ部で用いられるＳＡＤテーブルについて説明するための図である。
【図７】図２に示すベクトル選択部の動作を説明するためのフローチャートである。
【図８】本発明の第２の実施形態に係るカメラにおけるベクトル選択処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
以下に、本発明の実施の形態による画像処理装置の一例について図面を参照して説明する。
【００１５】
［第１の実施形態］
図１は、本発明の第１の実施形態による画像処理装置の１つである撮像装置についてその構成を示すブロック図である。
【００１６】
図示の撮像装置は、例えば、デジタルカメラ（以下単にカメラと呼ぶ）１００であり、ＣＰＵなどの制御部１０１を有している。制御部１０１はＲＯＭ１０２から動作プログラムを読み出してＲＡＭ１０３に展開して実行する。これによって、制御部１０１はカメラ１００の動作を制御する。
【００１７】
ＲＯＭ１０２は、例えば、書き換え可能な不揮発性メモリである。ＲＯＭ１０２には、カメラ１００の動作プログラムに加えて、カメラ１００の動作に必要なパラメータなどが記憶されている。ＲＡＭ１０３は、書き換え可能な揮発性メモリであり、画僧データなどのデータの一時的な記憶領域として用いられる。ここでは、ＲＡＭ１０３には、例えば、カメラ１００の動きに起因して生じる参照画像における被写体像のずれを検出するために必要となるターゲット画像が記憶される。さらには、ＲＡＭ１０３には補正前の参照画像などが一時的に記憶される。
【００１８】
撮像部１０５には、ＣＣＤ又はＣＭＯＳセンサなどの撮像素子が備えられている。撮像部１０５は、光学系１０４を介して撮像素子に結像した光学像を光電変換してアナログ画像信号を出力する。そして、このアナログ画像信号はＡ／Ｄ変換部１０６によってＡ／Ｄ変換処理されて、デジタル画像データ（画像データ）としてＲＡＭ１０３に記憶される。
【００１９】
図示の例では、画像処理部１０７は、画像データにおいて撮像の際にカメラ１００の動き（ぶれ）によって生じた被写体像の位置ずれを補正する補正処理を行う。
【００２０】
図２は、図１に示す画像処理部１０７の構成についてその一例を示すブロック図である。
【００２１】
図示のように、画像処理部１０７は、階層ベクトルサーチ部２０１、ベクトル選択部２０２、アフィン係数算出部２０３およびアフィン変換部２０４を有している。そして、画像処理部１０７には参照画像およびターゲット画像が入力され、後述するように、参照画像における被写体像の位置ずれを補正して補正画像を出力する。
【００２２】
なお、ここでは、参照画像は、撮像の際にカメラ１００の動きによって生じた被写体像の位置ずれを補正する対象の元画像であり、ターゲット画像は被写体の位置ずれを検出する際に用いられ補正の基準となる画像である。そして、参照画像およびターゲット画像は、制御部１０１によってＲＡＭ１０３から読み出されて画像処理部１０７に入力される。
【００２３】
以下の説明では、前述の特許文献１に記載の階層化ブロックマッチング処理による動きベクトル検出を階層ベクトルサーチと呼ぶことにする。階層ベクトルサーチ部２０１は、ターゲットブロック毎に階層化ブロックマッチング処理を行ってターゲット画像における被写体像の動きベクトルを検出する。
【００２４】
図３は、図２に示す階層ベクトルサーチ部２０１で設定されるターゲットブロックの一例を示す図である。
【００２５】
階層ベクトルサーチ部２０１は、ターゲット画像３０１において予め定められた位置に複数の矩形領域（ターゲットブロック）３０２を配置する（ここでは、３６個のターゲットブロック３０２が配置されている）。そして、階層ベクトルサーチ部２０１は、後述するようにして、ターゲットブロック３０２の各々において階層化ブロックマッチング処理を行う。
【００２６】
ここで、階層ベクトルサーチ部２０１で行われる階層ベクトルサーチの理解を容易にするため、従来の階層ブロックマッチング処理の概要について説明する。
【００２７】
図４は、従来の階層ブロックマッチング処理の概要を説明するための図である。なお、図４においては、ターゲット画像を基底面参照フレームと呼び、ターゲット画像を縮小処理した画像を縮小面参照フレームと呼ぶ。
【００２８】
図４に示すように、基底面参照フレーム１１３４において、動き検出原点１１０５とサーチ範囲１１０６が決定されたとする。縮小面参照フレーム１１３５は、基底面参照フレーム１１３４を水平方向に１／ｎ倍、そして、垂直方向に１／ｎ倍に縮小処理した画像である（ｎは１を超える数）。つまり、縮小面参照フレーム１１３５は、解像度を変化させた画像である。
【００２９】
例えば、ｎ＝１であると、水平１／ｎ倍の縮小処理は、４画素毎に３画素を間引いて１画素を出力することによって行われる。この際、間引きによるエイリアシングを防ぐため、予め水平方向について所定のローパスフィルタ処理が行われる。垂直１／ｎ倍の縮小処理についても同様にして行われる。
【００３０】
縮小面ターゲットブロック（図示せず）を縮小面参照フレーム１１３５に規定された縮小面サーチ範囲１１３７においてずらしつつブロックマッチングが行われる。そして、ブロックマッチングの相関が最高となる動き原点１１０５からのずれ量および方向を縮小面参照ベクトル１１３８として検出する。なお、縮小面サーチ範囲１１３７は、サーチ範囲１１０６を１／ｎ×１／ｎに縮小したサーチ範囲である。
【００３１】
さらに、縮小面参照ベクトル１１３８を水平ｎ倍、そして、垂直ｎ倍に拡大した動きベクトル（基底面参照ベクトル１１４１）が指し示す位置を中心として、基底面サーチ範囲１１４０を設定する。基底面ターゲットブロックを基底面参照フレーム１１４２の基底面サーチ範囲１１４０でずらしながらブロックマッチングを行う。そして、ブロックマッチングの相関が最高となる基底面参照ベクトル１１４１からのずれ量および方向を基底面局所ベクトルとして検出する。
【００３２】
さらに、基底面参照ベクトル１１４１と基底面局所ベクトルとをベクトル合成する。そして、動き検出原点１１０５を中心とする基底面ターゲットブロックと最も相関が高い基底面参照ブロック１１４２との位置ずれ量および方向を、当該基底面ターゲットブロックの基底面動きベクトルとして検出する。
【００３３】
例えば、ｎ＝４、縮小面参照ベクトル＝（１，２）、そして、基底面局所ベクトル＝（２，３）とする。この場合、基底面動きベクトル＝縮小面参照ベクトル×ｎ＋基底面局所ベクトル＝（１，２）×４＋（２，３）＝（６，１１）で示すように、ベクトル合成されて基底面動きベクトルが得られることになる。
【００３４】
図４においては、１つの縮小面参照フレーム１１３５のみが示されている。一方、図２に示す階層ベクトルサーチ部２０１においては、複数の縮小面参照フレーム、つまり、縮小率が異なる複数の縮小画像について階層ベクトルサーチが行われる。例えば、階層ベクトルサーチ部２０１は、ターゲット画像を水平１／１６倍および垂直１／１６倍とした縮小画像（第１の縮小画像）を用いて階層ベクトルサーチを行う。さらに、階層ベクトルサーチ部２０１はターゲット画像を水平１／４倍および垂直１／４倍とした縮小画像（第２の縮小画像）を用いて階層ベクトルサーチを行う。
【００３５】
なお、第１の縮小画像を、”×１６階層”と呼び、第２の縮小画像を”×４階層”、そして、ターゲット画像、つまり、基底面を”×１階層”と呼ぶ。これら”×１６階層””×４階層”、および”×１階層”の画像はベクトル検出対象画像である。
【００３６】
ベクトル選択部２０２は、階層ベクトルサーチ部２０１の出力を受けて、被写体の移動に起因しカメラ１００の移動（ぶれ）と無関係の動きベクトルを検出し、カメラ１００の移動に起因する動きベクトルのみを選択する。
【００３７】
ベクトル選択部２０２に選択された動きベクトルはアフィン係数算出部２０３に与えられる。アフィン係数算出部２０３はターゲット画像に設定された複数のターゲットブロックの各々における動きベクトルを用いて座標変換係数であるアフィン係数を算出する（座標変換係数算出）。
【００３８】
アフィン変換部２０４は、アフィン係数算出部２０３で求められたアフィン係数を用いて参照画像における被写体像の位置ずれを補正する。なお、アフィン係数算出および位置ずれ補正に用いられる手法として、例えば、特開２００９−２５８８６８公報に記載の手法が用いられる。
【００３９】
図５は、図２に示す階層ベクトルサーチ部２０１で行われる階層ベクトルサーチを説明するためのフローチャートである。
【００４０】
階層ベクトルサーチを開始すると、階層ベクトルサーチ部２０１は、図３に示すターゲットブロック３０２の全てにおいて動きベクトルの検出処理が終了したか否かを判定する（ステップＳ４０１）。ターゲットブロック３０２の全てにおいて動きベクトルの検出処理が終了していると（ステップＳ４０１において、ＹＥＳ）、階層ベクトルサーチ部２０１は階層ベクトルサーチを終了する。なお、階層ベクトルサーチを開始した時点では、ターゲットブロック３０２のいずれについても動きベクトルの検出処理が行われていないので、階層ベクトルサーチ部２０１は、後述するステップＳ４０２の処理に進む。
【００４１】
ターゲットブロック３０２の全てにおいて動きベクトルの検出処理が終了してないと（ステップＳ４０１において、ＮＯ）、階層ベクトルサーチ部２０１は、まず、広いサーチ範囲でサーチを行うため、解像度の低い”×１６階層”において動きベクトルを検出する。この際、階層ベクトルサーチ部２０１は、後述するＳＡＤテーブル補間を用いて、”×１６階層”におけるサブピクセル精度の動きベクトルを検出する（ステップＳ４０２）。なお、ＳＡＤテーブル補間によるサブピクセル精度の動きベクトル検出する際に用いられる手法として、例えば、前述の特許文献１に記載の手法が用いられる。
【００４２】
図６は、図２に示す階層ベクトルサーチ部２０１で用いられるＳＡＤテーブルについて説明するための図である。
【００４３】
図６において、Ｓｍｉｎは最も相関が強いＳＡＤ値であり、Ｓｘ１およびＳｘ２はＳｍｉｎの水平方向に隣接するＳＡＤ値である。また、Ｓｙ１およびＳｙ２はＳｍｉｎの垂直方向に隣接するＳＡＤ値である。Ｓｍｉｎに対応する参照ブロックのずれ量におけるサブピクセル成分（Ｘｓｕｂ，Ｙｓｕｂ）を２次曲線近似補間で計算すると、以下の式（１）および式（２）で表される。
【００４４】
Ｘｓｕｂ＝１／２×（Ｓｘ２−Ｓｘ１）／（Ｓｘ２−２Ｓｍｉｎ＋Ｓｘ１）（１）
Ｙｓｕｂ＝１／２×（Ｓｙ２−Ｓｙ１）／（Ｓｙ２−２Ｓｍｉｎ＋Ｓｙ１）（２）
ここでは、サブピクセル成分（Ｘｓｕｂ，Ｙｓｕｂ）を少数部４ビット（２進数）で出力することによって、１／１６画素単位でＳＡＤテーブルを補間する。
【００４５】
例えば、”×１階層”で見た場合、ターゲットブロックと最も相関が強い参照ブロックのずれ量が（１００，２００）であるとする。さらに、ずれ量のサブピクセル成分が”×１階層”ＳＡＤテーブルと式（１）および式（２）とから（１／１６，３／１６）であるとする。この場合、基底面動きベクトルは（１００＋１／１６，２００＋３／１６）となって、基底面（ターゲット画像）において１／１６画素単位の精度で動きベクトルを求めることができる。
【００４６】
さらに、”×４階層”で見た場合、ターゲットブロックと最も相関が強い参照ブロックのずれ量が（２５，５０）であるとする。さらに、ずれ量のサブピクセル成分が”×４階層”ＳＡＤテーブルと式（１）および式（２）とから（１／１６，３／１６）であるとする。この場合、基底面動きベクトルは（２５＋１／１６，５０＋３／１６）×４＝（１００＋１／４，２００＋３／４）となって、基底面において１／４画素単位の精度で動きベクトルが求めることができる。
【００４７】
また、”×１６階層”で見た場合、ターゲットブロックと最も相関が強い参照ブロックのずれ量が（７，１３）であるとする。さらに、ずれ量のサブピクセル成分が”×１６階層”ＳＡＤテーブルと式（１）および式（２）とから（１／１６，３／１６）であるとする。この場合、基底面動きベクトルは（７＋１／１６，１３＋３／１６）×１６＝（１１２＋１，２０８＋３）＝（１１３，２１１）となって、基底面において１画素単位の精度で動きベクトルが求めることができる。
【００４８】
続いて、階層ベクトルサーチ部２０１は、ステップＳ４０２の処理で得られた動きベクトルの信頼度が所定の信頼度よりも高いか否かを判定する（ステップＳ４０３）。なお、信頼度判定に当たって、信頼度を求める場合の手法については、例えば、特開２００９−２５８８６８号公報に記載の手法が用いられる。
【００４９】
“×１６階層”における動きベクトルの信頼度が所定の信頼度以下であると、階層ベクトルサーチ部２０１は、利用可能な動きベクトルが存在しないとして、動きベクトルを出力しない（ステップＳ４０５）。そして、階層ベクトルサーチ部２０１はステップＳ４０１の処理に戻る。
【００５０】
一方、”×１６階層”における動きベクトルの信頼度が所定の信頼度よりも高いと（ステップＳ４０３において、ＹＥＳ）、階層ベクトルサーチ部２０１は、”×４階層”においてベクトルサーチする範囲を特定することができるとして、一つ解像度の高い”×４階層”において動きベクトルの検出を行う（ステップＳ４０４）。そして、階層ベクトルサーチ部２０１は、ステップＳ４０４の処理で得られた動きベクトルの信頼度が所定の信頼度よりも高いか否かを判定する（ステップＳ４０６）。
【００５１】
“×４階層”における動きベクトルの信頼度が所定の信頼度以下であると（ステップＳ４０６において、ＮＯ）、階層ベクトルサーチ部２０１は、”×４階層”の動きベクトルは利用できないが、”×１６階層”の動きベクトルを利用することができるとする。そして、階層ベクトルサーチ部２０１は、”×１６階層”の動きベクトルを出力する（ステップＳ４０８）。
【００５２】
この際、”×１６階層”の動きベクトルは、１／１６に縮小された大きさで検出されているので、階層ベクトルサーチ部２０１は基底面と同一の解像度となるように動きベクトルを１６倍に拡大して出力する。その後、階層ベクトルサーチ部２０１はステップＳ４０１の処理に戻る。
【００５３】
一方、”×４階層”における動きベクトルの信頼度が所定の信頼度よりも高いと（ステップＳ４０６において、ＹＥＳ）、階層ベクトルサーチ部２０１は、”×１階層”においてベクトルサーチする範囲を特定することができるとして、一つ解像度の高い”×１階層”において動きベクトルの検出を行う（ステップＳ４０７）。そして、階層ベクトルサーチ部２０１は、ステップＳ４０７の処理で得られた動きベクトルの信頼度が所定の信頼度よりも高いか否かを判定する（ステップＳ４０９）。
【００５４】
“×１階層”における動きベクトルの信頼度が所定の信頼度以下であると（ステップＳ４０９において、ＮＯ）、階層ベクトルサーチ部２０１は、”×１階層”の動きベクトルは利用できないが、”×４階層”および”×１６階層”の動きベクトルを利用することができるとする。そして、階層ベクトルサーチ部２０１は、”×４階層”および”×１６階層”の動きベクトルを合成して合成動きベクトルとして出力する（ステップＳ４１１）。
【００５５】
この際、階層ベクトルサーチ部２０１は”×１６階層”の動きベクトルを１６倍に拡大し、”×４階層”の動きベクトルを４倍に拡大して、基底面と同一の解像度として合成を行う。その後、階層ベクトルサーチ部２０１はステップＳ４０１の処理に戻る。
【００５６】
一方、”×１階層”における動きベクトルの信頼度が所定の信頼度よりも高いと（ステップＳ４０９において、ＹＥＳ）、階層ベクトルサーチ部２０１は、”×１階層”、”×４階層”、および”×１６階層”の動きベクトルを利用することができるとする。そして、階層ベクトルサーチ部２０１は”×１階層”、”×４階層”、および”×１６階層”の動きベクトルを合成して出力する（ステップＳ４１０）。
【００５７】
この際、階層ベクトルサーチ部２０１は”×１６階層”の動きベクトルを１６倍に拡大し、”×４階層”の動きベクトルを４倍に拡大して、基底面と同一の解像度として合成を行う。その後、階層ベクトルサーチ部２０１はステップＳ４０１の処理に戻る。
【００５８】
このようにして、階層ベクトルサーチ部２０１は、階層ベクトルサーチにおける階層毎にサブピクセル精度の動きベクトルを検出する。これによって、ある階層の動きベクトルが利用できない場合であっても、より解像度が低い階層で検出した動きベクトルを利用することができる。この結果、動きベクトルを検出して出力可能なターゲットブロック数を増加させることができる。
【００５９】
図７は、図２に示すベクトル選択部２０２の動作を説明するためのフローチャートである。
【００６０】
動きベクトル選択処理を開始すると、ベクトル選択部２０２は、後述するようにして、解像度毎に動きベクトルが検出されたターゲットブロックの数を求める。まず、ベクトル選択部２０２は、全階層（”×１６階層”、”×４階層”、および”×１階層”）の動きベクトルが合成されたターゲットブロック数（以下第１のブロック数と呼ぶ）を求める。つまり、ベクトル選択部２０２は、全階層において動きベクトルが検出されたターゲットブロック数を求める。そして、ベクトル選択部２０１は、全てのターゲットブロックの数に対する第１のブロック数の割合（第１のブロック割合）が予め設定された第１の割合閾値Ｒ１を超えているか否かを判定する（ステップＳ５０１）。
【００６１】
第１のブロック割合が第１の割合閾値Ｒ１を超えていると（ステップＳ５０１において、ＹＥＳ）、ベクトル選択部２０２は誤差閾値をＥ１（第１の誤差閾値）とする（ステップＳ５０２）。一方、第１のブロック割合が第１の割合閾値Ｒ１以下（第１の割合閾値以下）であると（ステップＳ５０１において、ＮＯ）、ベクトル選択部２０２は、”×１６階層”および”×４階層”の動きベクトルが合成されたターゲットブロック数（以下第２のブロック数と呼ぶ）を求める。そして、ベクトル選択部２０２は、全てのターゲットブロックの数に対する第１のブロック数および第２のブロック数の割合（第２のブロック割合）が予め設定された第２の割合閾値Ｒ２を超えているか否かを判定する（ステップＳ５０３）。
【００６２】
第２のブロック割合が第２の割合閾値Ｒ２を超えていると（ステップＳ５０３において、ＹＥＳ）、ベクトル選択部２０２は誤差閾値をＥ２（第２の誤差閾値）とする（ステップＳ５０４）。一方、第２のブロック割合が第２の割合閾値Ｒ２以下であると（ステップＳ５０３において、ＮＯ）、ベクトル選択部２０２は誤差閾値をＥ３（第３の誤差閾値）とする（ステップＳ５０５）。
【００６３】
前述の第１の誤差閾値Ｅ１、第２の誤差閾値Ｅ２、および第３の誤差閾値Ｅ３は、後述の合格対応点選択処理において合格判定を行う際に用いられる。なお、誤差閾値を小さくすると、選択される動きベクトルの誤差は小さくなるが、選択される動きベクトルの数は少なくなる。
【００６４】
ステップＳ５０２、Ｓ５０４、又はＳ５０５の処理の後、ベクトル選択部２０２は、誤差閾値を用いて合格対応点選択処理によってカメラ１００の移動（ぶれ）に起因する動きベクトルのみを選択する（ステップＳ５０６）。そして、ベクトル選択部２０３は動きベクトル選択処理を終了する。なお、合格対応点選択処理の手法については、例えば、特開２００６−２２９８６８号公報に記載の手法が用いられる。
【００６５】
ここで、Ｒ１＝Ｒ２＝０．８、Ｅ１＝１．５画素、Ｅ２＝２．５画素、Ｅ３＝４．５画素とする。いま、ケース１として次の場合を考える。
【００６６】
第１のブロック数＝３０、第２のブロック数＝４個、そして、”×１６階層”の動きベクトルが検出されたターゲットブロック数（第３のブロック数と呼ぶ）＝２とする。この場合、第１のブロック割合は約０．８３となって、第１の割合閾値Ｒ１（ここでは、０．８）を超える。よって、ベクトル選択部２０２は誤差閾値をＥ１＝１．５画素とする。
【００６７】
さらに、ケース２として次の場合を考える。
【００６８】
第１のブロック数＝１５、第２のブロック数＝１５、そして、第３のブロック数＝６とする。この場合、第１のブロック割合は約０．４２となって、第１の寄合閾値Ｒ１以下となる。一方、第２のブロック割合は約０．８３となって、第２の割合Ｒ２（ここでは、０．８）を超える。よって、ベクトル選択部２０２は誤差閾値をＥ２＝２．５画素とする。
【００６９】
また、ケース３として次の場合を考える。
【００７０】
第１のブロック数＝７、第２のブロック数＝８、そして、第３のブロック数＝２１とする。この場合、第１のブロック割合は約０．１９となって、第１の割合閾値Ｒ１以下となる。さらに、第２のブロック割合は約０．４２となって、同様に、第１の割合閾値Ｒ１以下となる。よって、ベクトル選択部２０２は誤差閾値をＥ３＝４．５画素とする。
【００７１】
前述のケース１の場合には、高解像度の画像（ターゲット画像）から得られた”×１階層”の動きベクトルが大多数であり、誤差閾値を小さい値にしても合格対応点の数は十分確保できる。
【００７２】
一方、ケース２の場合には、高解像度の画像から得られた”×１階層”の動きベクトルが大多数ではなく、誤差閾値が小さいと合格対応点の数が十分確保できなくなる。このため、誤差閾値を大き目とすることによって合格対応点の数を十分確保できるようにする。
【００７３】
さらに、ケース３の場合には、低解像度の画像（縮小画像）から得られた”×１６階層”の動きベクトルが増加するので、誤差閾値をさらに大きくして合格対応点の数を確保できるようにする。
【００７４】
このように、本発明の第１の実施形態では、ターゲットブロックの各々において、いずれの階層で検出された動きベクトルであるかを判定する。そして、その割合に応じて誤差閾値を変更することによって安定して合格対応点の動きベクトル数を確保することができる。
【００７５】
［第２の実施形態］
続いて、本発明の第２の実施形態に係るカメラの一例について説明する。なお、第２の実施形態に係るカメラの構成は、図１および図２に示すカメラと同様であり、階層ベクトルサーチは図３〜図６で説明したようにして行われる。
【００７６】
図８は、本発明の第２の実施形態に係るカメラにおけるベクトル選択処理を説明するためのフローチャートである。なお、図８において、図７に示すステップと同一のステップについては同一の参照符号を付して説明を省略する。
【００７７】
第２のブロック割合が第２の割合閾値Ｒ２以下であると（ステップＳ５０３において、ＮＯ）、ベクトル選択部２０２は、”×１６階層”における動きベクトル（予め設定された解像度以下の解像度のベクトル検出対象画像で検出された動きベクトル）を除く（ステップＳ６０５）。そして、ベクトル選択部２０２はステップＳ５０４の処理に進む。なお、ステップＳ５０２又はＳ５０４の処理の後、ステップＳ５０６の処理が行われる。
【００７８】
第２の実施形態において、前述のケース１の場合には、第１の実施形態と同様に、ベクトル選択部２０２は誤差閾値をＥ１＝１．５画素とする。ケース２の場合にも、第１の実施形態と同様に、ベクトル選択部２０２は誤差閾値をＥ２＝２．５画素とする。
【００７９】
一方、ケース３の場合には、第１のブロック割合は約０．１９であり、第２のブロック割合は約０．４２であるので、ベクトル選択部２０２は、ステップＳ６０５の処理に進んで、”×１６階層”の動きベクトルを除いて、ステップＳ５０４において、誤差閾値をＥ２＝２．５画素とする。
【００８０】
第２の実施形態においては、第１の実施形態と同様に、ケース１の場合には、誤差閾値を小さい値にしても合格対応点の数は十分確保できる。また、ケース２の場合には、合格対応点数を十分確保するための、誤差閾値を大き目にする。
【００８１】
ところで、ケース１およびケース２のように、”×１６階層”の動きベクトルが少数であれば、合格対応点をカウントする際にカメラの移動はあまり影響を及ぼさない。一方、ケース３のように、”×１６階層”の動きベクトルが多数となると、合格対応点をカウントする際にカメラの移動は悪影響を及ぼすことがある。
【００８２】
このため、ケース３のような場合は、ベクトル選択部２０２は、”×１６階層”ベクトルを除いて合格対応点判定に悪影響が及ばないようにする。
【００８３】
このように、本発明の第２の実施形態では、第１の実施形態と同様に、ターゲットブロックの各々において、いずれの階層で検出された動きベクトルであるかを判定する。そして、その割合に応じて誤差閾値を変更することによって安定して合格対応点の動きベクトル数を確保することができる。
【００８４】
さらに、第２の実施形態では、低解像度の画像で検出された動きベクトルが多い場合には、このような動きベクトルを除いて、合格対応点判定に悪影響を及ぼさないようにすることができる。
【００８５】
上述の説明から明らかなように、図２に示す例においては、階層ベクトルサーチ部２０１が動きベクトル検出手段として機能し、ベクトル選択部２０２が生成手段として機能する。また、アフィン係数算出部２０３およびアフィン変換部２０４は補正手段として機能する。
【００８６】
以上、本発明について実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【００８７】
また、上記の実施の形態の機能を制御方法として、この制御方法を画像処理装置に実行させるようにすればよい。また、上述の実施の形態の機能を有するプログラムを制御プログラムとして、当該制御プログラムを画像処理装置が備えるコンピュータに実行させるようにしてもよい。なお、制御プログラムは、例えば、コンピュータに読み取り可能な記録媒体に記録される。
【００８８】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給する。そして、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８９】
１０１  制御部
１０４  光学系
１０５  撮像部
１０６  Ａ／Ｄ変換部
１０７  画像処理部
１０８  記録媒体
２０１  階層ベクトルサーチ部
２０２  ベクトル選択部
２０３  アフィン係数算出部
２０４  アフィン変換部
【図１】
0006532328.tif 000002
【図２】
0006532328.tif 000003
【図３】
0006532328.tif 000004
【図４】
0006532328.tif 000005
【図５】
0006532328.tif 000006
【図６】
0006532328.tif 000007
【図７】
0006532328.tif 000008
【図８】
0006532328.tif 000009