(57)【要約】【課題】  画像処理に係る処理速度及び処理精度を向上する。【解決手段】  基準画像に続く処理対象画像を複数の分割領域に分割する。分割領域に含まれる動きベクトルを取得する。分割領域の動きベクトルから、該分割領域の信頼度を算出する。算出した信頼度に基づいて、複数の分割領域の内、信頼度が高い高信頼度の分割領域を抽出する。抽出した分割領域に含まれる動きベクトルを用いて、処理対象画像における基準画像からの動きを示す動きパラメータを推定する。【選択図】  図３
2015176488.tif 000002
【特許請求の範囲】
【請求項１】
時間的に連続する画像を処理する情報処理装置であって、
基準画像に続く処理対象画像を複数の分割領域に分割する分割手段と、
前記分割手段で分割した前記分割領域に含まれる動きベクトルを取得する取得手段と、
前記取得手段で取得した前記分割領域の動きベクトルから、該分割領域の信頼度を算出する算出手段と、
前記算出手段で算出した信頼度に基づいて、前記複数の分割領域の内、信頼度が高い高信頼度の分割領域を抽出する抽出手段と、
前記抽出手段で抽出した分割領域に含まれる動きベクトルを用いて、前記処理対象画像における前記基準画像からの動きを示す動きパラメータを推定する推定手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記抽出手段は、前記複数の分割領域それぞれに対して、前記算出手段で算出される信頼度の内、上位から一定数の信頼度の分割領域を、前記高信頼度の分割領域として抽出する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記抽出手段は、前記複数の分割領域それぞれに対して、前記算出手段で算出される複数の信頼度の内、信頼度が閾値よりも高い分割領域を、前記高信頼度の分割領域として抽出する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記閾値は、前記算出手段で算出される複数の信頼度を母集団とする統計処理によって決定される
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記母集団は、過去の所定数の画像に対して前記算出手段で算出される信頼度を更に含む
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記信頼度は、前記分割領域に含まれる動きベクトルの分散である
ことを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記信頼度は、前記分割領域に含まれる動きベクトルと、代表ベクトルとの差から計算される
ことを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項８】
前記信頼度は、前記分割領域に含まれる動きベクトルと前記分割領域を代表する動きベクトルである代表ベクトルとの差が第二の閾値以内の動きベクトルの比率である
ことを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項９】
前記信頼度は、前記分割領域に含まれる動きベクトルと前記分割領域を代表する動きベクトルである代表ベクトルとの差が第三の閾値以内のベクトルの比率が特定の範囲に収まる場合の前記第三の閾値である
ことを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項１０】
前記画像を入力する撮像装置の光学素子の制御状態を判定する判定手段と、
前記判定手段の判定の結果、前記光学素子が制御中である場合は、前記推定手段は、前記処理対象画像に含まれる動きベクトルを用いて、前記処理対象画像における前記基準画像からの動きを示す動きパラメータを推定し、
前記判定手段の判定の結果、前記光学素子が制御中でない場合は、前記抽出手段で抽出した分割領域に含まれる動きベクトルを用いて、前記処理対象画像における前記基準画像からの動きを示す動きパラメータを推定する
ことを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記分割領域は、前記処理対象画像をオブジェクト単位で分割した領域である
ことを特徴とする請求項１乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
時間的に連続する画像を処理する情報処理装置の制御方法であって、
基準画像に続く処理対象画像を複数の分割領域に分割する分割工程と、
前記分割工程で分割した前記分割領域に含まれる動きベクトルを取得する取得工程と、
前記取得工程で取得した前記分割領域の動きベクトルから、該分割領域の信頼度を算出する算出工程と、
前記算出工程で算出した信頼度に基づいて、前記複数の分割領域の内、信頼度が高い高信頼度の分割領域を抽出する抽出工程と、
前記抽出工程で抽出した分割領域に含まれる動きベクトルを用いて、前記処理対象画像における前記基準画像からの動きを示す動きパラメータを推定する推定工程と
を備えることを特徴とする情報処理装置の制御方法。
【請求項１３】
時間的に連続する画像を処理する情報処理装置の制御をコンピュータに機能させるためのプログラムであって、
前記コンピュータを、
基準画像に続く処理対象画像を複数の分割領域に分割する分割手段と、
前記分割手段で分割した前記分割領域に含まれる動きベクトルを取得する取得手段と、
前記取得手段で取得した前記分割領域の動きベクトルから、該分割領域の信頼度を算出する算出手段と、
前記算出手段で算出した信頼度に基づいて、前記複数の分割領域の内、信頼度が高い高信頼度の分割領域を抽出する抽出手段と、
前記抽出手段で抽出した分割領域に含まれる動きベクトルを用いて、前記処理対象画像における前記基準画像からの動きを示す動きパラメータを推定する推定手段と
して機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時間的に連続する画像を処理する情報処理技術に関するものである。
【背景技術】
【０００２】
コンピュータの計算性能の向上に伴い、領域分割、位置合わせ等、コンピュータビジョンと呼ばれる分野の画像処理技術の実用性が高まっている。
【０００３】
画像の位置合わせでは、時間的に連続する画像から複数の動きベクトルを算出し、これらの動きベクトルから画像の位置ズレ（画像全体の動き）を表現する動きパラメータを算出する。動きベクトルの算出方法は、ブロックマッチングによる動き探索や、特徴点を検出してその対応を算出し、対応点ペアの座標を動きベクトルとする等の方法がある（特許文献１参照）。
【０００４】
また、動きパラメータは、二次元ベクトルやホモグラフィ行列、回転行列（非特許文献１参照）等を用いて表現できる。しかし、検出した動きベクトルは、全てが正しいとは限らず、誤った動きベクトルが含まれることがあるため、誤りを含むデータからモデルを推定するロバスト推定技術が必要となる。ロバスト推定の代表的なアルゴリズムには、ＲＡＮＳＡＣがある（非特許文献２参照）。ＲＡＮＳＡＣは、計算を繰り返しながら最適なモデルを推定する技術である。しかし、ＲＡＮＳＡＣは、データに誤りの量が多い程、または、推定するパラメータの要素数が多い程、多くの繰り返し（以下、イテレーション）を必要とする。以下、この誤ったデータをアウトライア（ｏｕｔｌｉｅｒ）、正しいデータをインライア（ｉｎｌｉｅｒ）と表現する。
【０００５】
画像の位置合わせ技術は、画像ブレ補正（電子防振）、画像合成、符号化、自由視点生成等、様々に応用できる。例えば、連続する複数のフレームに対し、上記の方法でフレーム間の動きを表現する行列の逆行列をそれぞれ作成する。画像合成には、画像の位置ズレを補正して合成するノイズリダクションや、ハイダイナミックレンジ合成などもある。この複数の逆行列を用いて平滑化し、平滑化した行列を用いて、それぞれの画像を幾何変換することにより、動きブレを補正ができる。行列の平滑化は、行列の移動相乗平均を用いて計算することができる。相乗平均の算出に必要な、行列のべき乗根は、例えば、非特許文献３にある方法を用いて計算できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３３４６２５号公報
【非特許文献】
【０００７】
【非特許文献１】姿勢推定と回転行列、玉木徹、"IEICE Technical Report SIP2009-48, SIS2009-23(2009-09)"
【非特許文献２】"Random sample consensus: A paradigm for model fitting with applications to image analysis and automated cartography"、M.A. Fischler and R.C. Bolles、 "Communications of the ACM, 24(6):381-395, 1981"
【非特許文献３】"Algorithms for the matrix pth root"、 "Dario A. Binia、 Nicholas J. Highamb、and Beatrice Meinia"、NumericalAlgorithms (2005)39: 349-378
【発明の概要】
【発明が解決しようとする課題】
【０００８】
アウトライアを含む動きベクトルから、画像全体の動きを表現する行列を動きパラメータとして算出する場合、ＲＡＮＳＡＣ等のロバスト推定が必要になる。ＲＡＮＳＡＣはデータのアウトライア率が高い場合、多くのイテレーションを必要とし処理に時間がかかる。
【０００９】
本発明は上記の課題を解決するためになされたものであり、画像処理に係る処理速度及び処理精度を向上することができる情報処理技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するための本発明による情報処理装置は以下の構成を備える。即ち、
時間的に連続する画像を処理する情報処理装置であって、
基準画像に続く処理対象画像を複数の分割領域に分割する分割手段と、
前記分割手段で分割した前記分割領域に含まれる動きベクトルを取得する取得手段と、
前記取得手段で取得した前記分割領域の動きベクトルから、該分割領域の信頼度を算出する算出手段と、
前記算出手段で算出した信頼度に基づいて、前記複数の分割領域の内、信頼度が高い高信頼度の分割領域を抽出する抽出手段と、
前記抽出手段で抽出した分割領域に含まれる動きベクトルを用いて、前記処理対象画像における前記基準画像からの動きを示す動きパラメータを推定する推定手段と
を備える。
【発明の効果】
【００１１】
本発明によれば、画像処理に係る処理速度及び処理精度を向上することができる。
【図面の簡単な説明】
【００１２】
【図１】装置構成を説明する図である。
【図２】電子防振処理を示すフローチャートである。
【図３】変換行列の推定処理の詳細を示すフローチャートである。
【図４】画像分割の例を説明する図である。
【図５】回転行列の推定処理の詳細を示すフローチャートである。
【図６】類似動きベクトルの抽出処理の詳細を示すフローチャートである。
【図７】代表ベクトルの算出処理の詳細を示すフローチャートである。
【図８】レンズ制御状態に応じた変換行列の推定処理の詳細を示すフローチャートである。
【図９】オブジェクト単位の領域分割を用いる変換行列の推定処理の詳細を示すフローチャートである。
【図１０】画像がオブジェクト単位で分割された状態と分割領域の番号の例を示す図である。
【図１１】信頼度の算出処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００１４】
＜実施形態１＞
実施形態１では、画像の位置合わせを行うために、時間的に連続する画像から複数の動きベクトルを算出し、これらの動きベクトルから画像全体の動きを表現する動きパラメータを算出する構成について説明する。実施形態１は、画像全体の動き（例えば、位置ズレ）を表現する動きパラメータとして、カメラのパン、チルト、光軸回転を表現する回転行列（非特許文献１参照）を算出することとし、連続する画像からこの回転行列を推定して、画像に対して電子防振処理を行う応用例として説明する。
【００１５】
実施形態１では、ディスプレイ（表示装置）が接続された情報処理装置としてのＰＣ（パーソナルコンピュータ）内で、ＣＰＵ（中央演算処理装置）が撮像画像を解析して特徴点を検出するための各処理を行う。以下、ＰＣの構成と各モジュールの動作について、図１（ａ）を参照して説明する。図１（ａ）は、ＰＣの内部構成を説明する図である。
【００１６】
１０１はバスであり、ＰＣ１００内の各種構成要素を相互に接続し、構成要素間のデータの通信経路を司る。１０２はＲＡＭ（書込可能メモリ）であり、ＣＰＵ１０５のワークエリア等の記憶領域として機能する。１０３はグラフィックプロセッサであり、ディスプレイ１０４に画像を表示する際に必要となる計算処理を行うプロセッサである。グラフィックプロセッサ１０３は、設定された行列に従って、回転等の画像の幾何変換を行うことができる。
【００１７】
１０４はディスプレイであり、ユーザＩ／Ｆ１０６から入力されたコマンドや、それに対するＰＣ１００の応答出力等の情報を表示する表示装置である。１０５はＣＰＵであり、オペレーティングシステム（ＯＳ）やアプリケーションプログラム等のコンピュータプログラムに基づいて他の構成要素と協働し、ＰＣ１００全体の動作を制御する。尚、実施形態１では、ＣＰＵが一つであるとして説明するが、これに限定されず、複数のＣＰＵが存在する構成を採用してもよい。その場合の各処理は、マルチスレッド処理による並列動作が可能である。１０６はユーザＩ／Ｆであり、ユーザからの指示やコマンドの入力を受け付けて、プログラムの起動が行われる。ユーザＩ／Ｆ１０６は、タッチパネル、ポインティングデバイス、キーボード等であるが、特定のデバイスに限定されない。また、ユーザＩ／Ｆ１０６が、タッチパネル、ポインティングデバイスの場合は、ディスプレイ１０４上の任意の座標位置でタッチされたか否かの情報を入力することができる。
【００１８】
１０７は不揮発性の外部ストレージであり、大容量メモリとして機能するとともに、データをファイルとして記録する。実施形態１では、ハードディスク装置（以下、ＨＤと呼ぶ）により実現されるが、ＳＳＤ（フラッシュメモリを使用したソリッドステートドライブ）等の他の記憶装置を用いてもよい。１０８はネットワークＩ／Ｆであり、外部装置とのデータの送受信を中継する。１０９はカメラ等の外部撮像部であり、被写体を撮像して撮像画像を取得することができる。特に、外部撮像部１０９は、例えば、レンズ、センサー、レンズ制御部を含んでいる。レンズ制御部がレンズのズーム、フォーカスを制御して、レンズから取り込んだ光をセンサーが受光し、光信号をＲＧＢ画像データに変換する。その後、ＲＧＢ画像データは、外部撮像部１０９からバス１０１を介して転送され、ＲＡＭ１０２に記憶されたり、外部ストレージ１０７に記録されたりする。
【００１９】
実施形態１では、実行されるプラグラム及びデータは、外部ストレージ１０７に記録されており、これらをＲＡＭ１０２へ入力し、ＣＰＵ１０５が実行及び処理する構成をとる。プログラム及びデータは、バス１０１を介して入出力が行われる。画像データは、特に説明しない限り、外部ストレージ１０７から入力され、入力時に、ＰＣ１００内部で処理するための内部画像フォーマットに変換するものとする。画像データの入力は、外部撮像部１０９やネットワークＩ／Ｆ１０８から行うことも可能である。
【００２０】
実施形態１における内部画像フォーマットはＲＧＢ画像とするが、これに限定されず、ＹＵＶ画像、モノクロの輝度画像でもよい。また、後述の動き検出は輝度画像で行うものとし、内部画像フォーマットがＲＧＢ画像またはＹＵＶ画像の場合には、自動的に輝度画像に変換されて動き検出がなされるものとして説明する。実施形態１では、画像データは、例えば、その画像サイズが１９２０×１０８８、フレームレートが３０ｆｐｓの画像を扱うものとして説明するが、画像サイズやフレームレートは、これに限定されるものではない。ＵＩ（ユーザインターフェース）画面や処理画像結果は、グラフィックプロセッサ１０３を介して、ディスプレイ１０４上に表示することができる。グラフィックプロセッサ１０３は、処理画像データや処理データを、外部ストレージ１０７に記録したり、ＲＡＭ１０２に記憶したりして、他のプログラムと共有することができる。
【００２１】
尚、実施形態１では、電子防振処理を行う情報処理装置をＰＣにより実現する例を説明するが、これに限られない。実施形態１に係る電子防振処理は、撮像装置、組込システム、タブレット端末、スマートフォン等の情報機器を用いて実施することができる。また、全体、または、部分的にハードウェアが実行する構成を採用してもよい。例えば、図１（ｂ）は、撮像装置２００の構成を表している。１１０は撮像部であり、１１１は動き検出部である。尚、図１（ａ）と同一の構成要素については同一の参照番号を付加し、その説明は省略する。図１（ｂ）では、画像を撮像部１１０から入力し、動き検出部１１１は動きベクトルの検出を行う。このように、実施形態１で説明する処理は、撮像装置２００でも実行可能である。以下、専用回路が存在しない場合は、ＣＰＵ１０５が演算を行い、専用回路が存在する場合にはそれぞれの回路が各演算を行うものとして説明する。
【００２２】
連続する画像から画像全体の動きを表現する回転行列を推定して電子防振処理を実行する方法について、図２を参照して具体的に説明する。図２は、電子防振処理を示すフローチャートである。尚、図２のフローチャートは、ＣＰＵ１０５が、外部ストレージ１０７に記録されているプログラムを読み出し実行することで実現される。また、ＣＰＵ１０５は、処理内容に応じて、図１（ａ）あるいは図１（ｂ）に示される各種構成要素と協働して処理を実行する。
【００２３】
以下、フローチャートの説明に関しては、特に説明しない限り、ステップ番号順に、それぞれのステップが実行されるものとして説明する。また、互いに依存関係のない独立した処理については、記載のステップ順に処理を実行する必要はなく、順序を入れ替えて実行したり、複数ＣＰＵや専用処理回路が存在する場合には処理を並列に実行することも可能である。同様に、ステップが存在するサブルーチンに限定はなく、処理結果が同等であれば、異なるサブルーチン内で処理を実行してもよい。また、サブルーチンの構成にも限定はない。
【００２４】
Ｓ２０１０では、ＣＰＵ１０５あるいは動き検出部１１１が、連続する画像をフレームとして順に入力して動き検出を実行する。実施形態１では、第ｃ−１番フレーム、第ｃ番フレームの輝度画像が入力され、第ｃ−１番フレーム（基準画像）から第ｃ番フレーム（処理対象画像）の変換（動き）を表す動きベクトルが検出されるものとして説明する。入力画像のフレーム番号は０から、処理対象のフレーム番号は１から開始され、本ステップが実行される毎にｃの値がインクリメントされるものとして説明する。
【００２５】
動き検出は、特徴点を検出し、特徴点の特徴量を画像間でマッチングし、その対応位置関係を動きベクトルとすることによって行われる。特徴点の検出方法はＦＡＳＴ、特徴量の算出方法はＢＲＩＥＦとするが、これに限定されず、ＳＩＦＴ方式を用いてもよい。動きベクトルの検出数は画面あたり約２０００本となるように、特徴点検出のパラメータが設定されるものとする。また、動き検出のアルゴリズムは、例えば、輝度画像を縦３２×横３２画素単位のブロック（分割領域）に分割し、ブロック単位（分割領域単位）で、ブロックマッチングよる動き探索によって行う構成を採用してもよい。
【００２６】
実施形態１では、一つの動きベクトルは、始点と終点の座標から構成される有向線分であり、一つの動きベクトルを
【００２７】
【数１】
2015176488.tif 000003
【００２８】
と表現する。
【００２９】
但し、Ａ、Ｂは動きベクトルの始点と終点を表す。また、動きベクトルの２次元のベクトル成分を
【００３０】
【数２】
2015176488.tif 000004
【００３１】
と表現する。
【００３２】
複数の動きベクトルの集合をＸとし、Ｘの個別の動きベクトルを識別するインデックス番号をｉとすると、各動きベクトルは、
【００３３】
【数３】
2015176488.tif 000005
【００３４】
と表現される。このとき、Ｘは、
【００３５】
【数４】
2015176488.tif 000006
【００３６】
と表現される。以降、特別な記述がない場合、添え字が共通の
【００３７】
【数５】
2015176488.tif 000007
【００３８】
は、同一の動きベクトル、及び、その要素を表すものとして説明する。実施形態１では、各数値は浮動小数点として扱うものとして説明するが、固定小数点として計算する方法を採用してもよい。また、画像の画素を参照する場合、特別な記述がなければ小数部を切り捨てた数値を座標値として画素を参照するものとする。実施形態１では、集合は配列として実装されるものとし、集合の要素を
【００３９】
【数６】
2015176488.tif 000008
【００４０】
あるいは、
【００４１】
【数７】
2015176488.tif 000009
【００４２】
と表現して、集合の各要素に参照できるものとして説明する。
【００４３】
また、集合の要素数は、集合を｜｜で挟む形式で表現する。例えば、集合Ｘの要素数は、｜Ｘ｜となる。尚、集合は配列として実装することに限定されず、例えば、リストとして実装されても良く、データの集合を扱うデータ構造に限定はない。
【００４４】
Ｓ２０２０では、ＣＰＵ１０５が、動き検出結果から変換行列を推定する。変換行列の推定方法の詳細は、図３を用いて後述する。実施形態１では、第ｃ−１番フレームから第ｃ番フレームの変化を表す変換行列をＨcとする。実施形態１では、Ｈcは３×３の行列である回転行列（非特許文献１参照）として説明する。しかし、行列の形式に限定はなく、アフィン変換行列やホモグラフィ行列等の他の行列であってもよい。
【００４５】
Ｓ２０３０では、ＣＰＵ１０５が、防振行列を生成するために必要な、防振フレーム周期の数以上の変換行列が推定できたかを判定する。防振フレーム周期をｐとすると、ｃ≧ｐが真の場合（Ｓ２０３０でＹＥＳ）、Ｓ２０４０へ遷移し、偽の場合（Ｓ２０３０でＮＯ）、Ｓ２０１０へ遷移する。ｐの値は、例えば、１６であるとするが、ｐの値に限定はなく、長周期のブレを抑制する場合にはｐを大きく設定し、短周期のブレのみ抑制する場合はｐを小さく設定する。
【００４６】
Ｓ２０４０では、ＣＰＵ１０５が、推定した複数の変換行列から防振行列を生成する。防振は、高周波のブレを抑制することが目的であり、変換行列を複数フレームに渡って平滑化したものが防振行列となる。実施形態１では、過去のフレームの変換行列と直前の防振行列から計算する。例えば、第ｃ番フレームの防振行列をＳcとすると、Ｓcは、
【００４７】
【数８】
2015176488.tif 000010
【００４８】
として計算される。尚、行列のべき乗根の計算は近似計算でよく、非特許文献３で説明される方法で計算できる。行列のべき乗根は複数存在する場合があるため、一意の行列が定まる制約を設ける。実施形態１では、行列は回転行列であるため、回転量が最も小さい行列を選択することになる。また、行列のべき乗根が計算できない場合、防振行列Ｓcは単位行列であるものとして処理を進める。尚、行列の平滑の方法はこれに限定されない。
【００４９】
Ｓ２０５０では、ＣＰＵ１０５が、防振行列を用いて画像を幾何変換する。実施形態１では、第ｃ−ｐ＋１番フレームのＲＧＢ画像を入力し、ＲＧＢそれぞれのチャネル毎に処理がなされる。以下、入力画像と出力画像が、それぞれチャネル画像であるものとして説明する。
【００５０】
このとき、幾何変換後の画像である出力画像の画素位置を（ｘout，ｙout）、入力画像の画素位置を（ｘin，ｙin）、出力画像から入力画像への変換行列を
【００５１】
【数９】
2015176488.tif 000011
【００５２】
とすると、（ｘout，ｙout）から（ｘin，ｙin）を計算するｐｒｏｊ関数は下記のように表せる。
【００５３】
【数１０】
2015176488.tif 000012
【００５４】
本ステップでは、出力画像の画素を一画素ずつ走査しながら、Ｍ＝Ｓ-1としたｐｒｏｊ関数を用いて出力画像の走査対象画素に対応する入力画像の対応画素の位置を計算する。この対応画素の画素値を走査対象画素の画素値として、出力画像の全ての画素値を決定する。尚、出力画像の画素位置（ｘout，ｙout）を格子点として算出した場合、入力画像の画素位置（ｘin，ｙin）は小数値を有するため、バイリニアやバイキュービック等の方法を用いて補間し、より精度の高い画素値を計算する方法を採用してもよい。変換された画像は、ＣＰＵ１０５が、ディスプレイ１０４に表示する、あるいは符号化して外部ストレージ１０７に記録する。
【００５５】
Ｓ２０６０では、ＣＰＵ１０５が、全入力画像の処理が終了したか否かを判定する。終了した場合（Ｓ２０６０でＹＥＳ）、処理を終了する。一方、処理が終了していない場合（Ｓ２０６０でＮＯ）、Ｓ２０１０に遷移して、以後、Ｓ２０１０からＳ２０６０の処理を繰り返す。実施形態１では、処理の終了条件として全入力画像の処理が終了したか否かを判定しているが、これに限定されない。例えば、ユーザが処理終了を指示するＵＩ操作が行われたか否かを判定して、処理を終了してもよい。
【００５６】
次に、Ｓ２０２０の変換行列の推定処理の詳細について、図３を参照して説明する。
【００５７】
図３は、変換行列の推定処理の詳細を示すフローチャートである。
【００５８】
Ｓ３０１０では、ＣＰＵ１０５が、入力画像を複数の分割領域に分割する。分割方法については後述する。Ｓ３０２０では、ＣＰＵ１０５が、対象分割領域を走査して、分割領域内毎に分割領域内の動きベクトルの集合を取得する。
【００５９】
以下、分割領域の走査方法について図４を用いて詳細に説明する。図４は画像分割の例を説明する図である。図４（ａ）は、画像の分割方法と分割領域番号を例示する図である。実施形態１では、分割領域を図４（ａ）に示す数値のようにラスター順に従って走査する。つまり、一回目のＳ３０１０が実行される場合には、番号１の分割領域が処理対象となり、以下、２回、３回と実行される毎に分割領域番号２、３の分割領域が処理対象となる。本ステップでは、この対象分割領域内にベクトルの終点（矢印のついた点）が含まれる動きベクトルを取得する。実施形態１では、この分割領域の番号をｄとし、以下、分割領域ｄのように表現して説明する。また、最大分割数をｄmaxと表現する。実施形態１では、ｄmax＝２０である。ｄは１から始まり、Ｓ３０１０が実行される毎にｄがインクリメントされることになる。
【００６０】
図４（ｂ）は、動きベクトルの状態を例示する図である。図４（ｂ）のように、動きベクトルは分割領域をまたぐ場合があるため、実施形態１では、動きベクトルｖの終点が含まれる動きベクトルを分割領域の動きベクトルとして扱う。動きベクトルｖの終点Ｂが、分割領域ｄに含まれるか否かを判定する関数をｉｎ（ｄ，Ｂ）とする。分割領域ｄに含まれるベクトルの集合Ｙdは、
【００６１】
【数１１】
2015176488.tif 000013
【００６２】
と表現される。この記法は、集合Ｘの要素を走査して、「｜」以降で表現された条件を満足する要素を抽出し、抽出された要素の部分集合であるＹdを生成することを示している。以下、部分集合の生成は、同様の記法を用いて説明する。尚、部分集合として新しい配列やリストを生成せず、各要素に部分集合であるか否かを示すフラグを設け、要素の抽出時にフラグを設定する構成を採用してもよい。この構成では、処理毎に上位集合の要素を走査して走査対象の要素のフラグの参照することによって、部分集合である要素のみを取得できる。
【００６３】
尚、Ｙdは、事前に作成しておき、本ステップで入力する構成を採用してもよい。また、実施形態１では、図４のように画像を２０分割したものとして説明しているが、分割方法はこれに限定されない。また、実施形態１では、終点が分割領域に含まれる動きベクトルを入力するとして説明しているが、始点が分割領域に含まれる動きベクトルを入力する構成を採用してもよい。また、分割領域の走査順も、ラスター順に限定されない。さらには、動きベクトルｖの終点Ｂが、分割領域の８近傍の分割領域と自身の領域に含まれる否かを判定する関数をｎｅｉｇｈｂｏｕｒ（ｄ，Ｂ）とすると、
【００６４】
【数１２】
2015176488.tif 000014
【００６５】
という式を用いて、ベクトルの集合Ｙdを作成してもよい。例えば、分割領域番号が９の場合、分割領域の８近傍の分割領域と自身の領域とは、図４（ａ）の太線で囲まれた９つの分割領域になる。但し、近傍領域が画面外に存在する場合には、画面内の領域から、ベクトルの集合Ｙdが作成されることになる。
【００６６】
Ｓ３０３０では、ＣＰＵ１０５が、各分割領域の信頼度を算出する。実施形態１は、下記のように、動きベクトルの重心を算出し、その算出した重心からの距離の分散であるＲ１ｄを信頼度とする。
【００６７】
【数１３】
2015176488.tif 000015
【００６８】
Ｙminは、分割領域あたりの動きベクトルを検出数に応じて設定される。実施形態１では、画面あたり約２０００本の動きベクトルを検出し、画面の分割数は２０であるため、分割領域あたり約１００本の動きベクトルを検出することになる。そのため、Ｙminには、分割領域あたり検出数の１０％にあたる１０を設定する。また、Ｒ１dが３２ｂｉｔの符号あり整数で表現される場合、ＩＮＴ＿ＭＡＸは、２32−１とする。ＩＮＴ＿ＭＡＸは、Ｒ１dが計算不能状態であることを示すコードであり、値そのものに限定はなく、Ｒ１dが表現できる数値の範囲内で、（式５）で算出されない十分に大きな数字を設定すればよい。Ｒ１dが大きいということは、分割領域内の動きベクトルの類似性が低いことを示す。例えば、建物等はエッジがはっきりしており、また、それ自体が静止している被写体を含む領域の動きベクトルは、類似しやすく、グローバルな動きの検出に寄与する度合いが高い。一方、波立つ水面や風で揺れる木の葉の分割領域から検出された動きベクトルは、波や木の葉の個々の動きを表すことが多いため、本ステップで算出する信頼度は低くなる。また、計算不能状態が十分大きな数字で表現されることは信頼度が低いとみなすことになり、後述の処理において特殊な条件分岐を設定せずに、簡易な処理が可能となる。
【００６９】
Ｓ３０４０では、ＣＰＵ１０５が、全分割領域の処理が終了したか否かを判定する。処理が終了している場合（Ｓ３０４０でＹＥＳ）、Ｓ３０５０に遷移する。一方、処理が終了していない場合（ステップＳ３０４０でＮＯ）、Ｓ３０１０に遷移し、以後、Ｓ３０１０からＳ３０４０のステップが繰り返される。
【００７０】
Ｓ３０５０では、ＣＰＵ１０５が、信頼度が高い高信頼度の分割領域を抽出する。具体的には、信頼度はｖａｒd（ｄ＝１、…、ｄmax）を昇順にソートして、Ｒ１dが小さい方向から、全体の所定値（例えば、６７％）以下となるインデックスｄを抽出し、これを信頼度の高い分割領域のインデックスの集合Ｉとする。実施形態１では、ｄmax＝２０であるため、｜Ｉ｜＝ｒｏｕｎｄ（２０×６７／１００）＝１３（但し、ｒｏｕｎｄは小数第一を四捨五入して整数化する関数とする）となる。例えば、ｖａｒdを示すデータ列が下記であるとすると、
【００７１】
【数１４】
2015176488.tif 000016
【００７２】
下記のようにソートされる。
【００７３】
【数１５】
2015176488.tif 000017
【００７４】
ここから、算出される信頼度の内、その上位から一定数（例えば、１３）のインデックスｄを抽出して、インデックスの集合Ｉを作成すると、
Ｉ＝｛９，１３，１５，４，１４，１９，８，５，１０，３，７，１８，２０｝
となる。Ｒ１dが小さいということは信頼度が高いということであり、集合Ｉは、動きベクトルの信頼性が高い分割領域のインデックスの集合といえる。尚、実施形態１では、所定値として、全体の６７％以下となるインデックスｄを抽出しているが、これに限定されない。
【００７５】
Ｓ３０６０では、ＣＰＵ１０５が、抽出された高信頼度の分割領域に含まれる動きベクトルを入力として変換行列を推定する。このとき、高信頼度の分割領域に含まれる動きベクトルの集合をＺと表現すると、Ｚは下記の式で表現できる。
【００７６】
【数１６】
2015176488.tif 000018
【００７７】
変換行列の推定は、図５に示すフローチャートをサブルーチンとしてコールすることによって回転行列を算出することで実現する。このフローおける入力サンプルがＺにあたる。以下、回転行列を算出するサブルーチンの動作について図５を用いて説明する。図５は、ＲＡＮＳＡＣを用いる回転行列の推定処理の詳細を示すフローチャートである。
【００７８】
Ｓ５０１０では、ＣＰＵ１０５が、イテレーション数をインクリメントする。
【００７９】
Ｓ５０２０では、ＣＰＵ１０５が、入力サンプルから４つの動きベクトルを取得する。実施形態１において、入力サンプルとは、図３のフローチャートで抽出した、高信頼度の分割領域に含まれる動きベクトルの集合Ｚである。
【００８０】
Ｓ５０３０では、ＣＰＵ１０５が、取得した４つの動きベクトルから行列を算出する。このとき、取得した動きベクトルを
【００８１】
【数１７】
2015176488.tif 000019
【００８２】
と表現する。算出する行列はＳ２０２０における
【００８３】
【数１８】
2015176488.tif 000020
【００８４】
である。本ステップでは、４つの動きベクトルから得られる１６変数を用いて方程式を解いて下記を満足する回転行列のそれぞれの要素を算出する。
【００８５】
【数１９】
2015176488.tif 000021
【００８６】
尚、回転行列の算出は様々な方法があり、例えば、非特許文献１に記載されている方法を利用できるため、ここでは、詳細な説明は省略する。回転行列の算出方法によっては、サンプルの選び方によって行列が算出できない場合がある。行列算出の失敗を判定して、失敗と判定された場合には、処理をＳ５０１０へ遷移させ、再度、処理が行う構成を採用しても良い。
【００８７】
Ｓ５０４０では、ＣＰＵ１０５が、サンプル全体に対し、動きベクトルの始点を、算出した行列で射影した点と終点との距離を算出し、距離が許容誤差内のデータ数をインライア数としてカウントする。インライアの集合をＶとすると、Ｖは下記計算式で計算できる。
【００８８】
【数２０】
2015176488.tif 000022
【００８９】
許容誤差ｅは画像サイズ等に依存するが、実施形態１では、画像サイズ（画像高×画像幅）における画像高の約３００分の１にあたる３を設定するものとする。尚、この値は、画像高の約３００分の１に限定されるものではない。
【００９０】
Ｓ５０５０では、ＣＰＵ１０５が、現在までのイテレーションでインライア数が最大であるか否かを判定する。最大である場合（Ｓ５０５０でＹＥＳ）、Ｓ５０６０へ遷移する。一方、最大でない場合（Ｓ５０５０でＮＯ）、Ｓ５０７０へ遷移する。尚、例外として、一回目のＳ５０５０の実行では、必ず、Ｓ５０６０へ遷移するものとする。また、実施形態１におけるインライア数は｜Ｖ｜として表現される。
【００９１】
Ｓ５０６０では、ＣＰＵ１０５が、Ｓ５０３０で算出した行列をベストパラメータとして保存する。尚、Ｓ５０６０は、実行される度にベストパラメータが次々に更新されることになる。
【００９２】
Ｓ５０７０では、ＣＰＵ１０５が、イテレーション数が上限数に達したか否かを判定する。上限数に達した場合（Ｓ５０７０でＹＥＳ）、Ｓ５０９０へ遷移する。一方、上限数に達していない場合（Ｓ５０７０でＮＯ）、Ｓ５０８０へ遷移する。
【００９３】
尚、実施形態１では、上限を５０回とする。但し、この回数に限定されるものではない。例えば、入力される画像のフレームレートが３０ｆｐｓの場合、図２のフローチャートは３３ｍｓ以内で完了する必要がある。そのため、ＣＰＵ１０５のスペックや数によって、最適な値が決定される。
【００９４】
Ｓ５０８０では、ＣＰＵ１０５が、イテレーション数が十分であるか否かを判定する。イテレーション数が十分である場合（Ｓ５０８０でＹＥＳ）、Ｓ５０９０に遷移する。一方、不十分である場合（Ｓ５０８０でＮＯ）、Ｓ５０１０へ遷移する。この判定は、イテレーション数が下記式によって算出されるＮ値を超える場合に十分と判定される。
【００９５】
【数２１】
2015176488.tif 000023
【００９６】
ｐsampleは、正しいサンプル（動きベクトル）が最低一つ存在する確率である。実施形態１では、サンプルが９９％の確率で存在すると仮定し、ｐsample＝０．９９とする。ｍは、パラメータの算出に必要な動きベクトルの数である。二次元ベクトルを算出する場合は、ｍ＝１である。また、ホモグラフィ行列や回転行列の場合は、ｍ＝４となる。（式８）は、同じｒinlierであれば、ｍが小さい程、小さいＮ値を導出する式である。つまり、図５のフローチャートでは、ｍが小さい程、イテレーション数が少なくなることになる。（式８）中のｒinlierは、下記の式により算出される。
【００９７】
【数２２】
2015176488.tif 000024
【００９８】
Ｓ５０９０では、ＣＰＵ１０５が、戻り値としてベストパラメータを返す。実施形態１では、Ｓ５０９０が実行される時点での回転行列が返される。
【００９９】
（式８）で計算される通り、インライアの比率（以下、インライア率）が低い動きベクトルを入力とし、ＲＡＮＳＡＣを用いて回転行列やホモグラフィ行列を推定すると、イテレーション数が多くなるという問題がある。また、ロバスト推定技術の一つで比較的処理が軽いとされ、処理時間が短いＭ推定は、アウトライア率が高い場合には十分な推定性能が発揮できない。例えば、水面や風にゆれる木の葉の動きを表現する所定の動きベクトルは、画面全体の動きを表現する動きパラメータに対し、乱雑になることが多い。
【０１００】
そこで、実施形態１では、行列推定の前に分割領域毎に信頼度を算出し、信頼度が高い高信頼度の分割領域を選択する、つまり、可能な限り、所定の動きベクトル（例えば、水面や風にゆれる木の葉の動きを表現する）を含む分割領域を除外して処理が実行されるようにする。このようにして、動きベクトルの信頼度が高い高信頼度の分割領域に含まれる動きベクトルを入力して、ＲＡＮＳＡＣによる回転行列の推定を実施することにより、イテレーション数を減少させる、あるいは、Ｍ推定の推定性能を向上させることができる。
【０１０１】
また、分割領域の信頼度である分散を算出する処理は、複雑な行列演算がないため処理量が非常に少ない。そのため、例えば、ＲＡＮＳＡＣに適用する場合、その前処理として類似動きベクトルを抽出する処理のオーバーヘッドを考慮してもトータルの処理時間の大幅な短縮が可能となる。
【０１０２】
また、例えば、３０ｆｐｓの画像では、一つのフレームの処理を３３ｍｓ以内に完了する必要がある。そのため、イテレーション数に上限を設ける必要があるが、この場合でも、実施形態１を用いれば、イテレーション数が上限に達しにくく、安定的に行列を推定できる。これにより、行列を用いて画像を防振する場合、行列推定の失敗の確率が減り、より安定的で自然な防振が可能となる。尚、実施形態１では、画像の防振を行うことを例に、動きパラメータの推定処理を説明しているが、アプリケーションはこれに限定されず、画像合成等の他のアプリケーションにも適用できる。
【０１０３】
以上説明したように、実施形態１によれば、画像内の大域的な動きを表現する動きパラメータをロバスト推定で算出する際に、信頼度の高いと判定される分割領域に含まれる動きベクトルのみを使ってロバスト推定を行うことにより、アウトライア率を低減させて処理時間を短縮することができる。また、動画処理等の既定時間内に処理を完了させるためにイテレーションの上限回数を設定する場合、イテレーションが上限に達する割合が減少し、推定性能を安定させることができる。
【０１０４】
＜実施形態２＞
実施形態２では、連続する画像から回転行列を推定して電子防振処理を行う構成について説明する。実施形態２では、実施形態１の図３のフローチャート（変換行列の推定処理）に対し、類似動きベクトルを抽出するステップを追加している。この類似動きベクトルを抽出するステップを含む変換行列の推定処理について、図６を参照して説明する。他の処理は、実施形態１に準ずるものとする。
【０１０５】
尚、類似動きベクトルとは、分割領域を代表する動きベクトルである代表ベクトルと、処理対象の動きベクトルのベクトル成分の差分の絶対値が所定範囲以内（許容誤差以内／閾値以内）の動きベクトルである。
【０１０６】
以下、類似動きベクトル抽出処理の動作について、図６を参照して説明する。
【０１０７】
図６は類似動きベクトル抽出処理を含む変換行列の推定処理の詳細を示すフローチャートである。
【０１０８】
Ｓ６０１１では、ＣＰＵ１０５が、対象分割領域を走査しながら、対象分割画像内の動きベクトル数が一定数以上であるか否かを判定する。一定数以上である場合（Ｓ６０１１でＹＥＳ）、Ｓ３０２０へ遷移する。一方、一定数未満である場合（Ｓ６０１１でＮＯ）、Ｓ３０４０へ遷移する。実施形態２では、一定数として、分割領域あたり検出数の１０％にあたる１０以上であるか否かを判定するものとする。但し、この一定数の値は１０に限定されるものではない。
【０１０９】
Ｓ６０２１で、分割領域毎の代表ベクトルを算出する。ここで、代表ベクトルを算出するサブルーチンの動作について図７を用いて説明する。図７は、代表ベクトルの算出処理の詳細を示すフローチャートである。図７のフローチャートは、図５のフローチャートのＳ５０２０、Ｓ５０４０、及びＳ５０６０〜Ｓ５０９０がそれぞれＳ７０２０、Ｓ７０４０、Ｓ７０６０〜Ｓ７０９０に置き代わり、Ｓ５０３０が存在しない以外は、図５と同等の動作を行うものとする。
【０１１０】
Ｓ７０２０では、ＣＰＵ１０５が、サンプル全体からランダムに動きベクトルを取得する。本サブルーチンの動作におけるサンプル全体とは、対象分割領域に含まれる全ての動きベクトルであり、実施形態２では、一つの動きベクトルｓａｍｐｌｅ＿ｖを取得する。
【０１１１】
Ｓ７０４０では、取得した動きベクトルとサンプル全体の動きベクトルとの差を算出し、差が許容誤差内のデータ数をインライア数としてカウントする。実施形態２では、データとは動きベクトルのベクトル成分であり、許容誤算内であるとして抽出された動きベクトルの集合
【０１１２】
【数２３】
2015176488.tif 000025
【０１１３】
は、下記式で表現される。
【０１１４】
【数２４】
2015176488.tif 000026
【０１１５】
このとき、
【０１１６】
【数２５】
2015176488.tif 000027
【０１１７】
がインライア数にあたる。
【０１１８】
Ｓ５０６０では、ＣＰＵ１０５が、Ｓ７０２０で取得した動きベクトルをベストパラメータとして保存する。実施形態２では、ベストパラメータは
【０１１９】
【数２６】
2015176488.tif 000028
【０１２０】
であり、
【０１２１】
【数２７】
2015176488.tif 000029
【０１２２】
として、
【０１２３】
【数２８】
2015176488.tif 000030
【０１２４】
を更新する。
【０１２５】
Ｓ７０７０では、ＣＰＵ１０５が、イテレーション数が上限数に達したか否かを判定する。上限数に達した場合（Ｓ７０７０でＹＥＳ）、Ｓ７０９０へ遷移する。一方、上限数に達していない場合（Ｓ７０７０でＮＯ）、Ｓ７０８０へ遷移する。
【０１２６】
尚、実施形態２では、上限を５０回とする。但し、この回数に限定されるものではない。例えば、入力される画像のフレームレートが６０ｆｐｓの場合、図７のフローチャートは１６ｍｓ以内で完了する必要がある。そのたため、ＣＰＵ１０５の性能や処理条件によって、最適な値が決定される。
【０１２７】
Ｓ７０８０では、ＣＰＵ１０５が、イテレーション数が十分であるか否かを判定する。イテレーション数が十分である場合（Ｓ７０８０でＹＥＳ）、Ｓ７０９０に遷移する。一方、不十分である場合（Ｓ７０８０でＮＯ）、Ｓ５０１０へ遷移する。この判定は、イテレーション数が（式８）によって算出されるＮ値を超える場合に十分と判定される。実施形態２では、二次元のベクトルを算出するため、ｍ＝２である。また、（式８）中のｒinlierは下記式により算出される。
【０１２８】
【数２９】
2015176488.tif 000031
【０１２９】
Ｓ７０９０では、ＣＰＵ１０５が、戻り値としてベストパラメータ
【０１３０】
【数３０】
2015176488.tif 000032
【０１３１】
を返す。
【０１３２】
図６のフローチャートの説明に戻る。
【０１３３】
Ｓ６０２２では、ＣＰＵ１０５が、分割領域内の動きベクトルから代表ベクトルに類似の動きベクトルを抽出する。実施形態２では、Ｓ７０９０で返された
【０１３４】
【数３１】
2015176488.tif 000033
【０１３５】
が分割領域の代表ベクトルにあたる。以下に、抽出した動きベクトルの集合を
【０１３６】
【数３２】
2015176488.tif 000034
【０１３７】
とすると、
【０１３８】
【数３３】
2015176488.tif 000035
【０１３９】
は、以下のように計算される。
【０１４０】
【数３４】
2015176488.tif 000036
【０１４１】
Ｓ６０３０では、ＣＰＵ１０５が、分割領域内の信頼度を取得する。信頼度は下記式で算出する。
【０１４２】
【数３５】
2015176488.tif 000037
【０１４３】
この式は、分割領域のインライア率を算出する式であり、実施形態２における信頼度は、インライア率そのものになる。以下、インライア率が高い分割領域ほど信頼度が高いとみなして処理を行う。
【０１４４】
Ｓ６０５０では、ＣＰＵ１０５が、信頼度を抽出した分割領域から、さらに信頼度が高い高信頼度の分割領域を抽出する。実施形態２では、信頼度はインライア率であるため、インライア率が所定値（例えば、６７％）以上の分割領域を高信頼度の分割領域として抽出する。
【０１４５】
Ｓ６０６０では、ＣＰＵ１０５が、抽出された高信頼度の分割領域に含まれ、代表ベクトルに類似と判定された動きベクトルの集合を使って変換行列を推定する。実施形態２でも、図５に示すフローチャートをサブルーチンとしてコールすることによって回転行列を算出するが、入力サンプルは、代表ベクトルに類似と判定された動きベクトルの集合である
【０１４６】
【数３６】
2015176488.tif 000038
【０１４７】
となる。
【０１４８】
以上説明したように、実施形態２によれば、分割領域の信頼度の算出に、動きベクトルの分散でなく、分割領域を代表する動きベクトルを代表ベクトルとして算出し、分割領域に含まれる動きベクトルの中で代表ベクトルに類似する動きベクトルの比率を信頼度としている。この形態では、単純な分散と比較すると演算量は増加するものの、動き検出の失敗により大きく外れてしまった動きベクトルの影響を除外できるため、よりロバストに信頼度を算出することができる。また、分割領域内の代表ベクトルに類似の動きベクトルを抽出し、その動きベクトルのみを用いて、大域的なパラメータを算出することにより、回転行列の推定の時のアウトライア率をさらに下げることができ、イテレーション回数が少なくなる。
【０１４９】
尚、実施形態２では、信頼度を代表ベクトルに類似する動きベクトルの比率であるとしているが、
【０１５０】
【数３７】
2015176488.tif 000039
【０１５１】
という式のように、分割領域に含まれる各動きベクトルと代表ベクトルの二乗誤差和を信頼度としても同等の効果が得られる。このとき、分割領域の二乗誤差和が小さいほど信頼度が高いとみなして処理を行う。
【０１５２】
＜実施形態３＞
実施形態３では、連続する画像から回転行列を推定して電子防振処理を行う構成について説明する。実施形態３は、実施形態１に対し計算式が異なる変形例である。
【０１５３】
実施形態１では、Ｓ３０５０で、Ｒ１1、・・・、Ｒ１dmaxをソートして、分割領域のインデックスを抽出しているが、実施形態３では、ソートせずに、閾値を設定してＲ１dが閾値よりも小さい分割領域を高信頼度の分割領域とみなして抽出する。具体的には、下記式を用いる。
【０１５４】
【数３８】
2015176488.tif 000040
【０１５５】
以上説明したように、実施形態３によれば、信頼度の計算が可能であった分割領域を抽出して、その集合を母集団Ｒとする。そして、その母集団Ｒに含まれる分割領域の信頼度に統計処理を施して（平均を算出して）、その統計処理結果（平均値）を閾値として、母集団Ｒ内から高信頼度の分割領域を抽出する。Ｉ’は、高信頼度の分割領域のインデックスの集合である。このような構成により、分割領域毎の信頼度をソートする処理を省略することができ、より少ない処理量で高信頼度の分割領域を抽出することができる。
【０１５６】
実施形態３では、現フレームの信頼度を閾値で判定しているがこれに限定されず、連続して入力し処理されたフレームの信頼度の移動平均から信頼度を算出してもよい。実施形態３の変形例を以下に示す。例えば、第ｃ番フレームの処理に対し、過去の連続する所定数のフレーム（例えば、１５フレーム）を母集団とする統計処理を行う（平均を算出する）場合、閾値ｅavgは、下記計算式で計算される。この閾値よりも小さい分割領域を高信頼度の分割領域とみなしてインデックスを抽出する。
【０１５７】
【数３９】
2015176488.tif 000041
【０１５８】
実施形態３では、３０ｆｐｓの画像を入力するものとして説明しているため、０．５秒分のフレーム、つまり、１５フレームの平均を算出している。１５という値に限定はなく、例えば、６０ｆｐｓの画像を入力する場合には、３０フレームの平均を算出するような構成をとってもよい。
【０１５９】
実施形態３では、例えば、カメラの前を人が急に横切るような場合、人にフォーカスが合わずぼやけた画像となり、そこから算出される動きベクトルの精度は低くなりがちである。単フレームの処理では、侵入してきた人の領域の面積に応じて、閾値が大きく変動してしまう。実施形態３のように、数フレームの平均を算出することによって、閾値の変動を抑制することができる。また、Ｒ１1、・・・、Ｒ１dmaxから、偏差値を算出し、例えば、偏差値が５０を下回る分割領域を高信頼度の分割領域とみなしてもよく、本手法は単純な平均値だけでなく、統計的な代表値に基づいて、処理を行ってもよい。
【０１６０】
＜実施形態４＞
実施形態４では、撮像装置２００のレンズの制御状態に応じて、処理内容を切り替えて、回転行列を推定して、電子防振処理を行う構成について説明する。
【０１６１】
実施形態４では、外部撮像部１０９あるいは撮像部１１０から、ズーム中やピント合わせ中で画角が変化するか否か、つまり、光学素子であるレンズを制御中であるか否かの信号（光学制御情報）をＣＰＵ１０５が受信し、その受信した信号に基づいて、変換行列の推定処理を制御する。それ以外の動作は、実施形態１と同様である。
【０１６２】
以下、実施形態４における変換行列の推定処理の詳細について、図８を参照して説明する。
【０１６３】
図８は、レンズ制御状態に応じた変換行列の推定処理の詳細を示すフローチャートである。図８は、図３のフローチャートに対し、Ｓ８０００とＳ８０７０が追加されている以外、その動作は図３のフローチャートと同様である。以下、その差分について説明する。
【０１６４】
Ｓ８０００では、ＣＰＵ１０５が、レンズ制御中であるか否かを判定する。レンズ制御中でない場合（Ｓ８０００でＮＯ）、Ｓ３０１０へ遷移する。一方、レンズ制御中である場合（Ｓ８０００でＹＥＳ）、Ｓ８０７０へ遷移する。
【０１６５】
Ｓ８０７０では、ＣＰＵ１０５が、画像内の動きベクトルを入力として第二の変換行列を推定する。実施形態４では、第二の変換行列はホモグラフィ行列とする。推定方法は、ＲＡＮＳＡＣとする。ここで、Ｓ３０６０で推定する変換行列は、Ｓ８０７０で推定する第二の変換行列に対する第一の変換行列となる。
【０１６６】
レンズ制御中（レンズ制御状態）の動きベクトルは、光軸が存在する画面中央と画面端とを比較した場合、画面中央の動きベクトルの長さが短くなる。そのため、画面中央領域の動きベクトルの分散も小さくなり、画面中央に高信頼度の分割領域が集中してしまうことになる。実施形態４では、レンズ制御中は、Ｓ３０１０からＳ３０６０の処理をバイパスすることにより、この問題を回避している。また、レンズ制御中は画角が変化することから、パン・チルト・光軸回転を表現する回転行列でなく、画像の拡縮を表現可能なホモグラフィ行列を推定している。これにより、回転行列では対応できなかった、光軸方向のブレ、拡縮変化に対するブレも補正できる。
【０１６７】
実施形態４では、レンズ制御中であるか否かを示す信号（制御情報）を、外部撮像部１０９あるいは撮像部１１０から入力する構成としているが、それに限定されない。例えば、外部ストレージ１０７に記録する画像データファイルにレンズ制御中であるか否かのフラグを設定可能な画像フォーマットを採用し、処理画像毎にそのフラグを入力して、レンズ制御中であるか否かを判定してもよい。また、画像データファイルにそれぞれに焦点距離を設定可能な画像フォーマットを採用し、連続する画像間で焦点距離差を計算して、差がある場合にはレンズ制御中であるとして、レンズ制御中であるか否かを判定してもよい。また、レンズ制御中であるか否かは、画像データから解析して、判定する形態をとってもよい。
【０１６８】
実施形態４では、図３のフローチャートに対し、レンズの制御状態に応じて処理を切り替える処理を組み込んでいるが、これに限定されず、例えば、図６のフローチャートに対し、レンズの制御状態に応じて処理を切り替える処理を組み込むことも可能である。
【０１６９】
以上説明したように、実施形態４によれば、実施形態１で説明した効果に加えて、撮像装置の動作状態に応じて、適切な電子防振処理を実行することができる。
【０１７０】
＜実施形態５＞
実施形態５では、インテリジェントな領域分割を用いて分割領域毎に代表ベクトルを算出する構成について説明する。
【０１７１】
図９は、オブジェクト単位の領域分割を用いる変換行列の推定処理の詳細を示すフローチャートである。図９は、実施形態１の図３に対し、Ｓ３０１０がＳ９０１０に置き換わっている。
【０１７２】
Ｓ９０１０では、ＣＰＵ１０５が、入力画像をオブジェクト単位で領域分割する。領域分割方法には様々な方法が存在するが、実施形態５では、ｋ−ｍｅａｎ法を用いて分割するものとする。分割数は８とする。各分割領域には番号が付けられる。番号の順序は任意である。尚、分割アルゴリズムや分割数はこれに限定されず、他の方式、分割数であってもよい。このようにして画像を分割すると、例えば、図１０のように分割される。図１０は、画像がオブジェクト単位で分割された状態と分割領域の番号の例を示す図である。分割領域の番号の振り方に任意である。
【０１７３】
Ｓ９０１０以降は、格子状に区切られた分割領域の代わりに任意の形状の分割領域を対象にする以外は、実施形態１と同様の処理が実行される。
【０１７４】
以上説明したように、実施形態５によれば、オブジェクト単位で画像を分割して、そのオブジェクトの領域毎に、変換行列を推定する。同一オブジェクトに含まれる動きベクトルのベクトル成分は同一になる可能性が高いため、同一の許容誤差であっても代表ベクトルに類似のベクトルを抽出する際のインライア率が高めることができる。このため、変換行列の推定においては、同一の動きを持つオブジェクトの集合の面積が最も大きい集合に含まれる動きベクトルが、画像全体の動きの主要成分となる傾向が強まる。これは、推定した変換行列を用いて防振を行う場合、広い面積が安定して防振されることになり、防振の安定性を高めることができる。
【０１７５】
＜実施形態６＞
実施形態６では、連続する画像から回転行列を推定して電子防振処理を行う構成について説明する。実施形態６では、実施形態２に対し計算式が異なる変形例である。
【０１７６】
実施形態６におけるＳ６０３０では、図１１で示すフローチャートをサブルーチンとして呼び出し、その戻り値を分割領域ｄの信頼度Ｒ４dとする。
【０１７７】
図１１は、実施形態６における信頼度の算出処理の詳細を示すフローチャートである。
【０１７８】
Ｓ１１０１０では、ＣＰＵ１０５が、ｋに１を代入する。
【０１７９】
Ｓ１１０２０では、ＣＰＵ１０５が、許容誤差をｅkとして、分割領域ｄのインライア率ｉｎｌｉｅｒ＿ｒａｔｉｏd,kを算出する。具体的には、以下の式で算出する。
【０１８０】
【数４０】
2015176488.tif 000042
【０１８１】
（式１９）は、ｋ値毎の動きベクトルの集合である
【０１８２】
【数４１】
2015176488.tif 000043
【０１８３】
を生成している。また、閾値であるｅkは、２のべき乗で計算できるものとして説明しているが、ｋ値に対し正の相関が存在すれば、計算方法に限定はない。さらに、生成したベクトル集合から、下記のインライア率を算出するする。
【０１８４】
【数４２】
2015176488.tif 000044
【０１８５】
Ｓ１１０３０では、ＣＰＵ１０５が、ｋ＞＝７あるいはｉｎｌｉｅｒ＿ｒａｔｉｏd,k＞＝０．５である否かを判定する。判定結果が真である場合（Ｓ１１０３０でＹＥＳ）、Ｓ１１０５０へ遷移する。一方、判定結果が偽である場合（Ｓ１１０３０でＮＯ）、Ｓ１１０４０へ遷移する。尚、実施形態６では、ｉｎｌｉｅｒ＿ｒａｔｉｏd,k＞＝０．５の場合に処理を打ち切るとしているが、０．５、つまり、インライア率５０％以上とすることに限定はない。
【０１８６】
Ｓ１１０４０では、ＣＰＵ１０５が、ｋ値を１インクリメントする。以下、Ｓ１１０３０の判定で処理が打ち切られるまで、Ｓ１１０２０からＳ１１０４０の処理が繰り返される。
【０１８７】
Ｓ１１０５０では、ＣＰＵ１０５が、ｅkを戻り値としてサブルーチンのコール元に返す。ｋ値は、Ｓ１１０３０で処理が打ち切られた時点でｋ値が確定する。
【０１８８】
実施形態６の信頼度は、インライア率が５０％を超えるインライア判定時の最低の誤差を信頼度としており、値が小さいほど信頼度が高いとして処理を行う。このように、実施形態６における処理においても、信頼度を算出することができる。
【０１８９】
以上説明したように、実施形態６によれば、分割領域に含まれる動きベクトルと前記分割領域を代表する動きベクトルである代表ベクトルとの差が所定範囲以内（閾値以内）の動きベクトルの比率が特定の範囲内に収まる場合の、その閾値を信頼度として算出する。これにより、実施形態２で説明した効果に加えて、信頼度の精度をより向上することができる。
【０１９０】
尚、以上の実施形態の機能は以下の構成によっても実現することができる。つまり、本実施形態の処理を行うためのプログラムコードをシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）がプログラムコードを実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することとなり、またそのプログラムコードを記憶した記憶媒体も本実施形態の機能を実現することになる。
【０１９１】
また、本実施形態の機能を実現するためのプログラムコードを、１つのコンピュータ（ＣＰＵ、ＭＰＵ）で実行する場合であってもよいし、複数のコンピュータが協働することによって実行する場合であってもよい。さらに、プログラムコードをコンピュータが実行する場合であってもよいし、プログラムコードの機能を実現するための回路等のハードウェアを設けてもよい。またはプログラムコードの一部をハードウェアで実現し、残りの部分をコンピュータが実行する場合であってもよい。
【図１】
2015176488.tif 000045
【図２】
2015176488.tif 000046
【図３】
2015176488.tif 000047
【図４】
2015176488.tif 000048
【図５】
2015176488.tif 000049
【図６】
2015176488.tif 000050
【図７】
2015176488.tif 000051
【図８】
2015176488.tif 000052
【図９】
2015176488.tif 000053
【図１０】
2015176488.tif 000054
【図１１】
2015176488.tif 000055