(57)【要約】      （修正有）【課題】背景に含まれる動きベクトルと非背景に含まれる動きベクトルの分類性能を向上させるための技術を提供する。【解決手段】画像処理装置は、画像における動きベクトル群を取得し、取得した動きベクトル群に基づいて、異なる複数の背景部分の動きを推定する。動きベクトル群のうち、推定された異なる複数の背景部分の動きにいずれも対応していない動きベクトルを非背景の動きベクトルとして特定する。【選択図】図２
2016126576.tif 000002
【特許請求の範囲】
【請求項１】
画像における動きベクトル群を取得する取得手段と、
前記取得手段によって取得された動きベクトル群に基づいて、異なる複数の背景部分の動きを推定する推定手段と、
前記取得手段によって取得された動きベクトル群のうち、前記推定手段によって推定された異なる複数の背景部分の動きにいずれも対応していない動きベクトルを非背景の動きベクトルとして特定する特定手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記特定手段により、前記動きベクトル群のうち、ある背景部分の動きに対応しないアウトライアベクトルとなる動きベクトル群を特定し、さらに前記推定手段により、前記特定されたアウトライアベクトルから異なる背景部分の動きを推定し、該推定された異なる背景部分に対応しないアウトライアベクトルとなる動きベクトル群を特定する処理を繰り返し行うことにより、非背景の動きベクトルを特定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
更に、
前記取得手段によって取得された動きベクトル群のうち、信頼度の高い動きベクトル群と信頼度の低い動きベクトル群とに分類する分類手段を有し、
前記推定手段は、前記分類手段によって分類された信頼度の高い動きベクトル群に基づいて前記異なる複数の背景部分を特定することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記特定手段は、
前記分類手段によって分類された信頼度の低い動きベクトル群のうち、前記推定手段によって推定された前記異なる複数の背景部分の動きに対応しない動きベクトルを特定することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記特定手段は、前記背景部分の動きに対応するベクトルの数と、前回の処理において異なる背景部分の動きに対応するベクトルの数と、の比に基づいて繰り返し処理をおこなうかどうかを決定することを特徴とする請求項２に記載の画像処理装置。
【請求項６】
前記特定手段は、互いに類似する所定数以上の動きベクトルの集合を、前記画像における非背景の動きベクトルの集合として特定することを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項７】
更に、
前記画像を撮像する撮像手段を備えることを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項８】
画像処理装置が行う画像処理方法であって、
画像における動きベクトル群を取得する取得工程と、
前記取得工程で取得された動きベクトル群に基づいて、異なる複数の背景部分の動きを推定する推定工程と、
前記取得工程で取得された動きベクトル群のうち、前記推定工程で推定された異なる複数の背景部分の動きにいずれも対応していない動きベクトルを非背景の動きベクトルとして特定する特定工程と
を備えることを特徴とする画像処理方法。
【請求項９】
コンピュータを、請求項１乃至７の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像から検出した動きベクトルから非背景に含まれる動きベクトルを分類するための技術に関するものである。
【背景技術】
【０００２】
動体検出方法には、背景差分法や検出した動きベクトルを解析する方法などがある。背景差分法は、その処理負荷は少ないものの、撮影中のカメラにパン・チルトなどの操作がなされた場合、あるいは、手ブレが発生した場合、動体領域の差分を正しく検出できないという問題がある。一方、近年は動きベクトル解析処理が重要になってきている。従来、高精度の動きベクトル解析処理は負荷の重い処理であり、高いハードウェアコストが必要であったが、半導体プロセス技術の向上に伴い、低コストでの実装が可能となってきている。
【０００３】
動きベクトル解析してカメラのパン・チルト・ブレに対応した動体検出を行うためには、カメラの動き（背景の動き）推定を行うことにより、カメラの動きと動体の動き（前景の動き）を分類する必要がある。以降の説明では、画像の広い範囲を占める、地面、壁、空、静止体の集合を背景と表現し、動体と区別して説明する。
【０００４】
カメラの動き推定は、時間的に連続する画像から複数の動きベクトルを算出し、これらの動きベクトルから背景の動きを表現する射影変換行列をロバスト推定によって算出することによってなされる。射影変換行列の一つに、３次元空間内の平面を異なる平面に射影するホモグラフィ行列がある。ホモグラフィ行列によってカメラの動きを表現する場合、背景とみなす被写体が十分に遠い位置にあり、カメラの動きと背景の動きが対応するという前提が存在する。
【０００５】
動きベクトルの算出方法は、ブロックマッチングによる動き探索や、特徴点とその特徴量を算出して、特徴点の対応を求め、対応した特徴点の座標を動きベクトルとするなどの方法がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2007-334625号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
動きベクトルからカメラの動きを表現する射影変換行列を推定し、背景と動体の動きベクトルとして分類する画像処理方法において、カメラが動き且つ撮影対象の構図に奥行きがある場合、背景成分に含まれる動きベクトルであっても、被写体の奥行き位置によって再投影誤差が大きくなり、動体の動きベクトルと分類されてしまうことがあった。
【０００８】
本発明はこのような問題に鑑みてなされたものであり、背景に含まれる動きベクトルと非背景に含まれる動きベクトルの分類性能を向上させるための技術を提供する。
【課題を解決するための手段】
【０００９】
本発明の一様態は、画像における動きベクトル群を取得する取得手段と、前記取得手段によって取得された動きベクトル群に基づいて、異なる複数の背景部分の動きを推定する推定手段と、前記取得手段によって取得された動きベクトル群のうち、前記推定手段によって推定された異なる複数の背景部分の動きにいずれも対応していない動きベクトルを非背景の動きベクトルとして特定する特定手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明の構成によれば、背景に含まれる動きベクトルと非背景に含まれる動きベクトルの分類性能を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】画像処理装置の構成例を示すブロック図。
【図２】画像処理装置が行う処理のフローチャート。
【図３】動きベクトル情報のフォーマット例を示す図。
【図４】ステップＳ２０２０における処理の詳細を示すフローチャート。
【図５】ステップＳ２０４０における処理の詳細を示すフローチャート。
【図６】ステップＳ２０９０における処理の詳細を示すフローチャート。
【図７】画像処理装置が行う処理のフローチャート。
【図８】画像処理装置が行う処理のフローチャート。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の１つである。
【００１３】
［第１の実施形態］
本実施形態では、動画像を構成する各フレームの画像や、それぞれ異なる時刻に撮像された静止画像など、時間的に連続して撮像された複数枚の画像を対象とし、該画像から検出した動きベクトル群から非背景部分の動きベクトル群を抽出する技術について説明する。
【００１４】
先ず、本実施形態に係る画像処理装置の構成例について、図１（ａ）のブロック図を用いて説明する。図１（ａ）に示した構成を有する画像処理装置が適用可能な装置には様々な装置が考えられ、例えば、一般のＰＣ（パーソナルコンピュータ）に適用可能である。本実施形態では、画像処理装置はカメラ（外部撮像部１０９）が接続されているＰＣであるものとして説明する。しかし、画像処理装置は、カメラ装置、組込みシステム、タブレット端末、スマートフォン等の情報機器を用いて実施することもできる。また、以下では、ＣＰＵ１０５がコンピュータプログラムやデータを用いて処理を実行することで、目的とする処理を実現するケースについて説明するが、一部の処理を専用のハードウェアに実行させるようにしても構わない。
【００１５】
ＣＰＵ１０５は、ＲＡＭ１０２に格納されているコンピュータプログラムやデータを用いて処理を実行することで、画像処理全体の動作制御を行うと共に、画像処理装置が行うものとして後述する各処理を実行若しくは制御する。なお、本実施形態では、画像処理装置に搭載されているＣＰＵ１０５の数を１として説明するが、複数であっても構わない。画像処理装置に複数のＣＰＵ１０５が搭載されている場合、以下に説明する各処理はマルチスレッド処理による並列動作によって達成されることになる。
【００１６】
ＲＡＭ１０２は、外部ストレージ１０７からロードされたコンピュータプログラムやデータ、ネットワークＩ／Ｆ（インターフェース）１０８を介して外部から受信したコンピュータプログラムやデータ、を記憶するためのエリアを有する。さらに、ＲＡＭ１０２は、外部撮像部１０９から入力された画像を記憶するためのエリアや、ＣＰＵ１０５やグラフィックプロセッサ１０３が各種の処理を実行する際に用いるワークエリアを有する。すなわち、ＲＡＭ１０２は、各種のエリアを適宜提供することができる。
【００１７】
外部ストレージ１０７は、ハーディスクドライブ装置等の大容量情報記憶装置の一例であり、ＯＳ（オペレーティングシステム）や、画像処理装置が行うものとして後述する各処理をＣＰＵ１０５に実行若しくは制御させるためのコンピュータプログラムやデータが保存されている。また、外部ストレージ１０７には、以下の説明において既知の情報として取り扱う情報についても保存されている。外部ストレージ１０７に保存されているコンピュータプログラムやデータは、ＣＰＵ１０５による制御に従って適宜ＲＡＭ１０２にロードされ、ＣＰＵ１０５による処理対象となる。なお、外部ストレージ１０７は、大容量情報記憶装置として機能するものであれば如何なる記憶装置であってもよく、ＳＳＤ（フラッシュメモリを使用したソリッドステートドライブ）等の他の記憶装置であっても良い。
【００１８】
ネットワークＩ／Ｆ１０８は、本装置をＬＡＮやインターネットなどのネットワークに接続するためのものであり、画像処理装置は該ネットワークＩ／Ｆ１０８を介して、該ネットワークに接続されている他の機器とのデータ通信を行うことができる。なお、外部ストレージ１０７からＲＡＭ１０２にロードされるものとして後述するコンピュータプログラムやデータの一部若しくは全部を、ネットワークＩ／Ｆ１０８を介して外部の機器からダウンロードするようにしても構わない。
【００１９】
外部撮像部１０９は、バス１０１に接続されている機器であり、動画像や静止画像を撮像可能な装置である。本実施形態では、外部撮像部１０９は、上記の如く、動画像や、それぞれ異なる撮像時刻の静止画像など、連続して複数枚の画像を撮像可能な装置である。外部撮像部１０９によって撮像された画像は、バス１０１を介してＲＡＭ１０２や外部ストレージ１０７に格納される。
【００２０】
グラフィックプロセッサ１０３は、画像に対する様々な画像処理、例えば、画像に対してマトリクスを用いて回転変換などの幾何変換処理を行うものであり、グラフィックプロセッサ１０３によって処理された画像は、ＲＡＭ１０２や外部ストレージ１０７に格納され、ディスプレイ１０４に表示される。
【００２１】
ディスプレイ１０４は、ＣＰＵ１０５やグラフィックプロセッサ１０３による処理結果を画像や文字などでもって表示することができる装置である。
【００２２】
ユーザＩ／Ｆ１０６は、マウスやキーボード、タッチパネルなどの機器により構成されており、ユーザが操作することで各種の指示をＣＰＵ１０５に対して入力することができる機器である。なお、ユーザＩ／Ｆ１０６がタッチパネルである場合、ユーザＩ／Ｆ１０６は、ディスプレイ１０４の表示面に重ねて配置されることになり、ユーザによるタッチパネル上のタッチ操作位置を検出する。
【００２３】
上記のＲＡＭ１０２、外部ストレージ１０７、ネットワークＩ／Ｆ１０８、外部撮像部１０９、グラフィックプロセッサ１０３、ＣＰＵ１０５、ユーザＩ／Ｆ１０６は何れも、バス１０１に接続されている。
【００２４】
次に、図２を用いて本実施形態に係る画像処理装置の処理フローチャートを説明する。図２では、時間的に前後して撮影された２枚の画像から、平面とみなされる背景部分の動きを表現する射影変換行列を推定して、該画像から検出した動きベクトル群から非背景部分の動きベクトル群を抽出する処理が説明されている。なお、以下に説明する「背景部分」とは、３次元の実空間上では静止しているが、撮像装置であるカメラが動いたときに相対的な動きベクトルを有する背景部分（領域あるいは物体）を指す。また、「非背景」「前景」は、３次元の実空間上で移動している物体のことを指す。
【００２５】
なお、以下では、フローチャートに関しては、特記のない限り、図で説明した矢印の順番に、それぞれのステップが実行されるものとして説明する。また、互いに依存関係のない独立した処理については記載のステップ順に処理を実行する必要はなく、順序を入れ替えて実行したり、複数のＣＰＵや専用処理回路が存在する場合には処理を並列に実行したりすることも可能である。同様に、ステップが存在するサブルーチンも限定はなく、処理結果が同等以上であれば、異なるサブルーチン内で処理を実行してもよく、また、サブルーチンの構成にも限定はない。
【００２６】
＜ステップＳ２０１０＞
外部撮像部１０９によって撮影された撮像画像は順次、ＲＡＭ１０２や外部ストレージ１０７に格納される。ここで、外部撮像部１０９から出力される撮像画像はＲＧＢ画像であっても、ＹＵＶ画像であっても、モノクロの輝度画像であっても構わないが、本ステップでは、外部撮像部１０９による撮像画像から動きベクトル群を抽出するので、ＲＡＭ１０２や外部ストレージ１０７に格納する際には、輝度画像に変換する必要がある。もちろん、外部撮像部１０９が撮像画像として輝度画像を出力するようにしても構わない。また、動きベクトル群を抽出する段階で撮像画像を輝度画像に変換するようにしても構わない。また、撮像画像サイズについては特定の画像サイズに限るものではなく、１９２０×１０８８等、如何なる画像サイズであっても構わない。また、外部撮像部１０９が動画像を撮像する場合、その動画像のフレームレートについても特定のフレームレートに限るものではなく、３０ｆｐｓ等、如何なるフレームレートを採用しても構わない。
【００２７】
ＣＰＵ１０５は、ＲＡＭ１０２や外部ストレージ１０７に格納されている撮像画像群のうち撮像時刻が隣接する２枚の撮像画像（動画像の場合は隣接するフレームの画像）から動きベクトル群を抽出する（もちろん、１フレームおきなど、隣接した撮像時刻の撮像画像でなくても良い）。
【００２８】
動きベクトル群の抽出では、撮像時刻が隣接する２枚の撮像画像のそれぞれから特徴点を検出し、該２枚の撮像画像間で「特徴量の非類似度が最も小さい（類似性が高い）特徴点のペア」を複数検索する。そして、それぞれのペアについて、該ペアにおける一方の特徴点を始点、他方の特徴点を終点、とする動きベクトルを求める。
【００２９】
特徴点の検出方法には、例えば、ＦＡＳＴ方式が適用可能であり、特徴量の算出方法には、ＢＲＩＥＦが適用可能である。この場合、非類似度は、ＢＲＩＥＦにより生成された２つのバイナリ特徴量データのハミング距離となる。しかし、方式はこれに限るものではなく、ＳＩＦＴ方式を用いてもよく、その場合の非類似度は多次元ベクトルであるＳＩＦＴ特徴量のＬ２ノルムとなる。また、本実施形態では、特徴点の検出では、そのアルゴリズムのスコアを使って上位２０００点を抽出するものとする。よって動きベクトルの数も最大２０００本になる。ただし、２０００本という数に限定はなく、画面解像度、処理時間などを考慮して設定すればよい。
【００３０】
また、動き検出は次のようにして行ってもよい。画像を縦３２画素×横３２画素のブロックに分割する。このブロック単位でＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）やＳＳＤ（Ｓｕｍ  ｏｆ  Ｓｑｕａｒｅｄ  Ｄｉｆｆｅｒｅｎｃｅ）が最小となる動きベクトルを探索して動きベクトルを決定する。動き探索を用いた場合の非類似度は、ＳＡＤまたはＳＳＤとなる。
【００３１】
このようにして、ＣＰＵ１０５は、撮像時刻が隣接する２枚の撮像画像から動きベクトル群を抽出する。そしてＣＰＵ１０５は、抽出したそれぞれの動きベクトルについて、該動きベクトルに係る情報を動きベクトル情報として生成してＲＡＭ１０２や外部ストレージ１０７に格納する。
【００３２】
ＲＡＭ１０２や外部ストレージ１０７に格納するそれぞれの動きベクトルの動きベクトル情報のフォーマット例について、図３（ａ）を用いて説明する。
【００３３】
「非信頼度」は、動きベクトルを求めた際に求めた特徴点間の非類似度であり、その値が小さいほど、信頼性が高い動きベクトルとみなされる。「始点Ｘ座標」は、動きベクトルの始点におけるｘ座標値である。「始点Ｙ座標」は、動きベクトルの始点におけるｙ座標値である。「終点Ｘ座標」は、動きベクトルの終点におけるｘ座標値である。「終点Ｙ座標」は、動きベクトルの終点におけるｙ座標値である。
【００３４】
なお、動きベクトル情報のフォーマットは図３（ａ）に示したフォーマットに限るものではない。例えば、動きベクトルの始点及び終点の座標の型は「符号有りの整数型」に限るものではない。また、非信頼度（非類似度）の代わりに、信頼度（類似度）を用いても構わず、同義である。
【００３５】
ここで、以下の説明において用いる記法について説明する。本実施形態では、一つの動きベクトルは始点と終点の座標から構成される有向線分であり、一つの動きベクトルに対応する動きベクトル情報ｖをｖ＝（Ａ，Ｂ，Ｕ）＝（（ｘ’、ｙ’）、（ｘ、ｙ）、Ｕ）と表現する。このとき、Ａ，Ｂはそれぞれ、動きベクトルの始点と終点を表す。Ｕは、動きベクトルの非信頼度を表す。また、動きベクトル情報ｖに対応する動きベクトルの始点Ａ及び終点Ｂのそれぞれの座標は、関数ｓｔａｒｔ（ｖ）、ｅｎｄ（ｖ）により取得可能とし、該動きベクトルの非信頼度をｕｎｒｅｌｉａｂｉｌｉｔｙ（ｖ）により取得可能とする。また、動きベクトル情報ｖに対応する動きベクトルの２次元のベクトル成分をｖ→＝ＡＢ→＝（ｘ−ｘ’、ｙ−ｙ’）＝ｖｅｃ（ｖ）と表現する。また、画像から抽出したそれぞれの動きベクトルの動きベクトル情報ｖ１，ｖ２，ｖ３，…の集合をＸ＝｛ｖ１，ｖ２，ｖ３，…｝としたとき、集合Ｘに含まれるｉ番目の動きベクトル情報ｖｉは、ｖｉ＝（Ａｉ，Ｂｉ，Ｕｉ）＝（（ｘｉ’、ｙｉ’）、（ｘｉ、ｙｉ）、Ｕｉ）と表記することができる。以下では、ｖ、Ａ、Ｂ、Ｕ、ｘ’、ｙ’、ｘ、ｙ、Ｕのように添え字がない場合は、特に触れない限りは、同じ動きベクトルに対するものであるとする。
【００３６】
＜ステップＳ２０２０＞
ＣＰＵ１０５は、ステップＳ２０１０で抽出した動きベクトル情報の集合Ｘを、信頼度が高い動きベクトル情報の集合Ｖ０と、信頼度が低い集合である集合（集合Ｘから集合Ｖ０を取り除いた残りの集合）Ｒと、に分類する。この処理は、データ量を削減することによって後工程の処理負荷を削減する効果がある。ステップＳ２０２０における処理の詳細については、図４のフローチャートを用いて後述する。
【００３７】
＜ステップＳ２０３０＞
ＣＰＵ１０５は、以下の処理で用いる変数ｉの値を０に初期化する。
【００３８】
＜ステップＳ２０４０＞
ＣＰＵ１０５は、集合Ｖｉに含まれている動きベクトル情報を用いてロバスト推定を行い、ある平面から異なる平面への背景部分の動きを表現する射影変換行列であるホモグラフィ行列Ｈｉを推定する。ホモグラフィ行列Ｈｉの推定処理については、図５のフローチャートを用いて後述する。
【００３９】
更にＣＰＵ１０５は、集合Ｖｉに含まれている動きベクトル情報のうち、ホモグラフィ行列Ｈｉを求める際にアウトライアベクトルとなった動きベクトルの動きベクトル情報の集合Ｖｉ＋１を生成する。なお、アウトライアベクトルとは、ホモグラフィ行列Ｈｉに対応する平面とみなされた背景部分の動きに対応していないベクトルのことを指す。
【００４０】
＜ステップＳ２０５０＞
ＣＰＵ１０５は、ステップＳ２０４０で推定したホモグラフィ行列Ｈｉを用いて、信頼度が高い動きベクトル情報の集合が除かれた集合Ｒに含まれているそれぞれの動きベクトル情報に対応する動きベクトルの再投影誤差を計算する。そして、ＣＰＵ１０５は、集合Ｒに含まれているそれぞれの動きベクトル情報のうち、再投影誤差が閾値以下となった動きベクトル情報を、集合Ｒから削除する。以下に説明するロバスト推定では、動きベクトルの始点座標を射影変換行列で変換し、終点と変換された始点との座標の誤差（再投影誤差）が閾値以下の動きベクトルをインライアベクトル、それ以外をアウトライアベクトルと呼ぶ。インライアベクトルおよびアウトライアベクトルの分類方法は再投影誤差に基づく方法以外の方法を用いてもよい。
【００４１】
以下に、具体的な再投影誤差の計算方法について説明する。なお、以下の（式１）、（式２）、（式３）、（式５）、（式６）、（式７）に従った計算は、浮動小数点で計算され、整数で表現された座標値も浮動小数に変換されてから計算がなされるものとして説明する。先ず、再投影誤差を計算する射影変換行列Ｍを以下のように定義する。
【００４２】
｜ｍ１１  ｍ１２  ｍ１３｜
Ｍ＝｜ｍ２１  ｍ２２  ｍ２３｜
｜ｍ３１  ｍ３２  ｍ３３｜
また、入力座標を（ｘｉｎ，ｙｉｎ）、行列Ｈｉによる射影変換後の座標を（ｘｏｕｔ，ｙｏｕｔ）とすると、射影変換関数ｐｒｏｊは下記のように表せる。これは同次座標系の変換を示すものである。
【００４３】
【数１】
2016126576.tif 000003
【００４４】
また、ベクトルのＬ２ノルムは下記のように表現されるものとする。
【００４５】
【数２】
2016126576.tif 000004
【００４６】
ここで、集合Ｘのうち条件ｃｏｎｄｉｔｉｏｎを満足する部分集合を｛ｖ∈Ｘ｜ｃｏｎｄｉｔｉｏｎ｝と表記する。また、集合Ｘ，Ｙに対し、「Ｘ＋Ｙ」、「Ｘ−Ｙ」という表現は、それぞれ和集合（集合Ｘに属する要素と集合Ｙに属する要素とから成る集合）、差集合（集合Ｘに属する要素のうち集合Ｙに属する要素を取り除いた残りの要素から成る集合）を表すものとし、Ｘ＝Ｘ−Ｙといった代入は、集合Ｘを差集合（Ｘ−Ｙ）に置き換えることを表す。つまり、ＸからＹを除外していることになる。これらからすれば、ステップＳ２０５０では、以下の（式３）を計算していることになる。
【００４７】
【数３】
2016126576.tif 000005
【００４８】
この式によれば、集合Ｒから、「集合Ｒに属する動きベクトル情報ｖであって、始点の座標をホモグラフィ行列Ｈｉで変換した変換済み座標から終点の座標を差し引いた結果の大きさが閾値ｅ以下となる動きベクトルに対応する動きベクトル情報ｖ」を削除することで、該集合Ｒを更新する。すなわち、ホモグラフィ行列Ｈｉに対応する平面とみなされる背景部分とみなされる動きベクトルを集合Ｒから除く。この閾値ｅは、予め定められたものであり、例えば、１である。
【００４９】
なお、上記の集合を用いた演算の結果をＲＡＭ１０２や外部ストレージ１０７上で管理する方法には様々な方法が考えられるが、本実施形態では、「集合」は配列としてＲＡＭ１０２や外部ストレージ１０７上で管理する。また、本実施形態では、集合同士の加算や減算等の演算を行った場合、演算元の集合を管理する配列はそのまま残し、別途配列を用意して該配列で該演算の結果を管理する。また、本実施形態では、（式３）のように、集合の部分集合を求めた場合、該部分集合も、別途配列を用意して該配列で該部分集合を管理する。（式３）の場合、本実施形態では、集合Ｒを管理する配列はそのまま残し、（式３）の右辺の演算結果を、集合Ｒを管理する配列とは別個の配列で管理する。しかし、動きベクトル情報のフォーマットとして図３（ｂ）のフォーマットを採用した場合には、別途配列を用意する必要はない。図３（ｂ）のフォーマットは、図３（ａ）のフォーマットに「除外フラグ」が追加されており、「除外フラグ」は１ビットの符号なし整数のデータ型で表現される。この「除外フラグ」の初期値は「０」であり、ステップＳ２０５０において上記の条件「集合Ｒに属する動きベクトル情報ｖであって、始点の座標をホモグラフィ行列Ｈｉで変換した変換済み座標から終点の座標を差し引いた結果の大きさが閾値ｅ以下となる動きベクトルに対応する動きベクトル情報ｖ」に該当する場合には、「除外フラグ」は「１」に更新され、以降の処理では、「除外フラグ」が「１」の動きベクトル情報は以下の処理に使用しないものとする。
【００５０】
このように、配列の要素を除外した配列を再生成することなく、集合Ｒを管理する配列内で「除外フラグ」の更新のみを行うことで、（式３）の右辺の演算結果を集合Ｒを管理する配列で管理することができる。
【００５１】
なお、動きベクトル情報のフォーマットとして図３（ａ）のフォーマットを採用するのか、それとも図３（ｂ）のフォーマットを採用するのかについては、ＣＰＵ１０５の性能や処理データの数に応じて決定する。処理データの数が多い場合は、配列を再生成するよりも除外フラグを用いたほうが速度的に有利である。
【００５２】
なお、配列を用いて集合を管理する方法は上記の方法に限るものではない。また、集合は配列を用いて管理することに限るものではなく、例えばリストとして管理されても良く、データの集合を取り扱うデータ構造は特定のデータ構造に限るものではない。
【００５３】
＜ステップＳ２０６０＞
ＣＰＵ１０５は、変数ｉの値を１つインクリメントする。
【００５４】
＜ステップＳ２０７０＞
ＣＰＵ１０５は、２つの判定式の論理積を取り、該論理積の結果が真（該２つの判定式が共に満たされている）であるか否かを判断する。この判断の結果、真である場合には、処理はステップＳ２０４０に進み、偽（該２つの判定式のうち少なくとも一方は満たされてない）の場合には、処理はステップＳ２０８０に進む。
【００５５】
ここで、２つの判定式のうち、第一の条件式である「ｉ＜Ｎ」について説明する。この条件式では、変数ｉの値が、ステップＳ２０４０〜Ｓ２０６０のループ処理の既定回数Ｎ未満であるかを判定している。Ｎは２以上の整数であり、外部撮像部１０９による撮像画像における奥行きの度合いや、プロセッサの性能に応じて設定される（例えば、規定時間内に処理が完了するように）。本実施形態ではＮ＝４とする。
【００５６】
次に、第二の条件式である「ｉ＞１  ＆＆  （｜Ｖ０｜−｜Ｖ１｜）＊ｒａｔｉｏ＜｜Ｖｉ−１｜−｜Ｖｉ｜」について説明する。ここで、｜Ｐ｜は、ベクトルＰの要素数を表す。第二の条件式において、「ｉ＞１」は、一回目のループの判定でｉ＝１であるため、最低２回のループ処理がなされることを保証する条件である。「｜Ｖ０｜−｜Ｖ１｜」は、ホモグラフィ行列Ｈ０に対応するインライアベクトルの数、｜Ｖｉ−１｜−｜Ｖｉ｜は、ホモグラフィ行列Ｈｉ−１に対応するインライアベクトルの数である。なお、ｒａｔｉｏについては、本実施形態では０．３（１未満の正の係数）とするが、その値は様々な条件に応じて適宜設定すればよい。また、インライアベクトルとは、ホモグラフィ行列Ｈｉおよびホモグラフィ行列Ｈｉ−１にそれぞれ対応する平面とみなされる背景部分の動きに起因して生じたとみなされるベクトルのことを指す。すなわち、インライアベクトルが多ければ、背景部分の動きを表現する寄与度が高いといえる。第二の条件式では、Ｈ０に対応するインライアベクトルの数とＨｉ−１に対応するインライアベクトルの数の比を計算することによって、相対的な寄与度が十分であるかを判定する。相対的な寄与度が十分でないと判定されたときには、繰り返しの処理を終了し、非背景部分の動きベクトルを特定する処理に進むことになる。一方、相当な寄与度が十分である場合、繰り返し処理が継続される。
【００５７】
＜ステップＳ２０８０＞
ステップＳ２０８０に処理が進んだ時点で、（変数ｉの値−１）がＮＮ（２≦ＮＮ＜Ｎ）であったとすると、ＣＰＵ１０５は、集合ＶＮＮに属する動きベクトル情報群と、集合Ｒに含まれている動きベクトル情報群と、を要素とする集合Ｄ（集合ＶＮＮと集合Ｒとの和集合）を生成する。この処理は、以下の（式４）によって表される。
【００５８】
【数４】
2016126576.tif 000006
【００５９】
＜ステップＳ２０９０＞
ＣＰＵ１０５は、集合Ｄに含まれている動きベクトル情報群から、時間的および空間的に近接した動きベクトルの動きベクトル情報を抽出し、該抽出した動きベクトル情報から成る集合Ｄ’を、非背景部分（すなわち前景オブジェクト）の動きベクトル群に対応する動きベクトル情報の集合として生成する。すなわち、集合Ｄから集合Ｄ’を求める処理とは、集合Ｄから、誤った動きベクトルの動きベクトル情報を除去する処理である。非背景部分とは、背景以外の画像領域を指し、例えば、動体が写っている部分である。
【００６０】
そしてＣＰＵ１０５は、生成した集合Ｄ’を、外部ストレージ１０７に保存したり、ネットワークＩ／Ｆ１０８を介して外部の機器に対して送信したりする。集合Ｄ’の出力先は特定の出力先に限るものではない。また、ＣＰＵ１０５は、生成した集合Ｄ’を用いて、撮像画像から非背景領域を認識するなど、適当な処理を実行してもよい。ステップＳ２０９０における処理の詳細については、図６のフローチャートを用いて後述する。
【００６１】
次に、上記のステップＳ２０２０における処理の詳細について、図４のフローチャートを用いて説明する。
【００６２】
＜ステップＳ４０１０＞
ＣＰＵ１０５は、集合Ｘに属するそれぞれの動きベクトル情報を、非類似度が低い順（信頼性が高い順）にソートする。
【００６３】
＜ステップＳ４０２０＞
ＣＰＵ１０５は、ステップＳ４０１０でソートされた動きベクトル情報のうち上位（最も非類似度が低い）から順にＮ＿ＲＡＮＳＡＣ個の動きベクトル情報を抽出し、該抽出したＮ＿ＲＡＮＳＡＣ個の動きベクトル情報から成る集合Ｖ０を生成する。本実施形態では、Ｎ＿ＲＡＮＳＡＣ＝３００とする。
【００６４】
次に、上記のステップＳ２０４０において実行される、平面とみなされる背景部分の動きを推定するためのホモグラフィ行列の推定処理について、図５のフローチャートを用いて説明する。
【００６５】
＜ステップＳ５０００＞
ＣＰＵ１０５は、何回繰り返し処理されたかを示すイタレーション（Iteration）数をカウントするための変数Ｌの値を１つインクリメントする。変数Ｌの値は、図５のフローチャートに従った処理が開始されるたびに０に初期化される。
【００６６】
＜ステップＳ５０１０＞
ＣＰＵ１０５は、集合Ｖｉに属する動きベクトル情報群からランダムに複数の動きベクトル情報を取得し、該取得した複数の動きベクトル情報から仮のホモグラフィ行列Ｈｉを算出する。本実施形態では、４つの動きベクトル情報から得られる座標を示す１６変数から方程式を解いてホモグラフィ行列のそれぞれの要素を算出する。ホモグラフィ行列の算出方法には様々な方法があり、如何なる方法を採用しても構わない。なお、ホモグラフィ行列の算出方法によっては、動きベクトル情報の選び方によってはホモグラフィ行列が算出できない場合がある。ホモグラフィ行列の算出が不可能か否かを判定して、失敗と判定された場合には、処理をステップＳ５０１０へ遷移させ、再度、処理が行われるなどの構成をとってもよい。
【００６７】
＜ステップＳ５０２０＞
ＣＰＵ１０５は、集合Ｖｉに属するそれぞれの動きベクトル情報について、ステップＳ５０１０で求めたホモグラフィ行列Ｈｉを用いて再投影誤差を求める。そして、集合Ｖｉに属するそれぞれの動きベクトル情報のうち再投影誤差が許容誤差内の動きベクトル情報の数をインライアベクトル数としてカウントする。ホモグラフィ行列をＨ、インライアベクトルの集合をＷとすると、Ｗは以下の（式５）を計算することで求めることができる。
【００６８】
【数５】
2016126576.tif 000007
【００６９】
一般に、ロバスト推定を行う場合にはｅ＝３とすることが多いが、本実施形態では、背景と非背景の動きを正確に分類するという考えからｅ＝１としている。なお、許容誤差は、解像度などにも依存する項目であり、一般的なロバスト推定よりも、小さい値を設定することが好ましいが、１に限定されるものではない。インライアベクトル数は｜Ｗ｜であり、Ｗの要素数をカウントすることにより得られる。
【００７０】
＜ステップＳ５０３０＞
ＣＰＵ１０５は、ステップＳ５０２０で求めたインライアベクトル数が、ＲＡＭ１０２や外部ストレージ１０７に保持している最大インライアベクトル数よりも大きいか否かを判断する。この判断の結果、ステップＳ５０２０で求めたインライアベクトル数が最大インライアベクトル数よりも大きい場合には、処理はステップＳ５０４０に進み、ステップＳ５０２０で求めたインライアベクトル数が最大インライアベクトル数以下である場合には、処理はステップＳ５０５０に進む。なお、例外として、一回目のステップＳ５０３０では、このような判断を行うことなく処理は必ずステップＳ５０４０に進む。
【００７１】
＜ステップＳ５０４０＞
ＣＰＵ１０５は、ステップＳ５０２０で求めたインライアベクトル数を最大インライアベクトル数としてＲＡＭ１０２や外部ストレージ１０７に格納すると共に、ステップＳ５０１０で求めたホモグラフィ行列ＨｉをベストパラメータとしてＲＡＭ１０２や外部ストレージ１０７に格納する。なお、ＲＡＭ１０２や外部ストレージ１０７にすでにベストパラメータとしてホモグラフィ行列が格納されていた場合には、ステップＳ５０４０では、すでに格納されているホモグラフィ行列に上書きして格納する。
【００７２】
このように、ステップＳ５０４０の処理を行うたびに、ＲＡＭ１０２や外部ストレージ１０７に格納されているホモグラフィ行列は、最新のベストパラメータであるホモグラフィ行列に更新される。
【００７３】
＜ステップＳ５０５０＞
ＣＰＵ１０５は、変数Ｌの値が上限数に達したか否かを判断する。本実施形態では、上限値を１０００とするが、この値に限るものではない。例えば、外部撮像部１０９から入力される動画像のフレームレートが３０ｆｐｓであって、この動画像をリアルタイムに処理する場合、図２のフローチャートに従った処理は３３ｍｓ以内で完了する必要がある。そのたため、上限値は、ＣＰＵ１０５の処理性能に応じて、時間内に処理が終了する最適な値に設定すればよい。変数Ｌの値が上限値に達した場合には、処理はステップＳ５０７０に進み、変数Ｌの値が上限値に達していない場合には、処理はステップＳ５０６０に進む。
【００７４】
＜ステップＳ５０６０＞
ＣＰＵ１０５は、変数Ｌの値が十分であるか否かを判断する。より具体的には、変数Ｌの値が、以下の（式６）によって求まる値ＬＮを超えた場合には十分と判断し、超えていない場合には十分ではないと判断する。
【００７５】
【数６】
2016126576.tif 000008
【００７６】
ここで、ｐｓａｍｐｌｅは、正しい動きベクトル情報が最低一つ存在する確率である。本実施形態では、９９％の確率で存在すると仮定し、ｐｓａｍｐｌｅ＝０．９９とする。ｍは、パラメータの算出に必要な動きベクトルの数である。ホモグラフィ行列の場合は、ｍ＝４となる。（式６）は、同じｒｉｎｌｉｅｒであれば、ｍが小さいほど小さいＬＮを導出する式である。つまり、図５のフローチャートに従った処理では、ｍが小さいほどイタレーション数が少なくなることになる。（式６）中のｒｉｎｌｉｅｒ（インライア率）は下記の式により算出される。
【００７７】
【数７】
2016126576.tif 000009
【００７８】
この判断の結果、変数Ｌの値が十分と判断した場合には、処理はステップＳ５０７０に進む。一方、変数Ｌの値が十分ではないと判断した場合には、処理はステップＳ５０００に進む。
【００７９】
＜ステップＳ５０７０＞
ＣＰＵ１０５は、ステップＳ５０４０でＲＡＭ１０２や外部ストレージ１０７に格納したベストパラメータであるホモグラフィ行列を、以降で用いるホモグラフィ行列とする。
【００８０】
次に、上記のステップＳ２０９０における類似ベクトルの抽出処理の詳細について、図６のフローチャートを用いて説明する。なお、図６のフローチャートに従った処理の開始段階（少なくとも、初めてステップＳ６０８０の処理を行う前）において、集合Ｄ’を空集合に初期化する。実際には、集合Ｄ’を管理する配列の各要素を０やＮＵＬＬなどの適当な値で初期化する。
【００８１】
＜ステップＳ６０１０＞
ＣＰＵ１０５は、以下の処理で用いる変数ｋの値を０に初期化する。
【００８２】
＜ステップＳ６０２０＞
ＣＰＵ１０５は、以下の処理で用いる変数ｊの値を（ｋ＋１）に初期化すると共に、以下の処理で用いる変数ｃｏｕｎｔの値を０に初期化する。
【００８３】
＜ステップＳ６０３０＞
集合Ｄに含まれているそれぞれの動きベクトル情報のうちｋ番目の動きベクトル情報をＤ［ｋ］と表記した場合、ＣＰＵ１０５は、「集合Ｄに含まれているそれぞれの動きベクトル情報のうちｋ番目の動きベクトル情報に含まれている始点の座標と、ｊ番目の動きベクトル情報に含まれている始点の座標と、の差分（距離）が閾値ｄｉｓｔ未満、且つｋ番目の動きベクトル情報に含まれているベクトル成分（ｘ成分及びｙ成分）と、ｊ番目の動きベクトル情報に含まれているベクトル成分（ｘ成分及びｙ成分）と、の差分（距離）が閾値ｖｄｉｓｔ未満」という条件が満たされているか否かを判断する。本実施形態では、ｄｉｓｔ＝９６、ｖｄｉｓｔ＝４とするが、ｄｉｓｔ、ｖｄｉｓｔの値はこれに限るものではない。
【００８４】
そしてこの判断の結果、この条件が満たされている場合には、処理はステップＳ６０４０に進む。一方、この条件が満たされていない場合には、処理はステップＳ６０５０に進む。
【００８５】
なお、ステップＳ６０３０では、ｋ番目の動きベクトル情報が規定する動きベクトルとｊ番目の動きベクトル情報が規定する動きベクトルとがほぼ同じ位置にあり且つほぼ同じサイズを有する動きベクトルであるか否かを判断することができれば良いため、ステップＳ６０３０で使用する条件は上記の条件に限るものではない。例えば、上記の条件において「ｋ番目の動きベクトル情報に含まれているベクトル成分（ｘ成分及びｙ成分）と、ｊ番目の動きベクトル情報に含まれているベクトル成分（ｘ成分及びｙ成分）と、の差分（距離）が閾値ｖｄｉｓｔ未満」を、「ｋ番目の動きベクトル情報に含まれている終点の座標と、ｊ番目の動きベクトル情報に含まれている終点の座標と、の差分（距離）が閾値ｅｄｉｓｔ未満」に置き換えても構わない。
【００８６】
＜ステップＳ６０４０＞
ＣＰＵ１０５は、変数ｃｏｕｎｔの値を１つインクリメントする。このカウントアップにより、ｋ番目の動きベクトル情報が規定する動きベクトルとほぼ同じ位置に位置しており、且つほぼ同じサイズを有する動きベクトルの数を計数している。
【００８７】
＜ステップＳ６０５０＞
ＣＰＵ１０５は、変数ｊの値を１つインクリメントする。
【００８８】
＜ステップＳ６０６０＞
ＣＰＵ１０５は、変数ｊの値が、集合Ｄに含まれている動きベクトル情報の数＝｜Ｄ｜に達したか否かを判断する。この判断の結果、達した場合には、処理はステップＳ６０７０に進み、未だ達していない場合には、処理はステップＳ６０３０に進む。
【００８９】
＜ステップＳ６０７０＞
ＣＰＵ１０５は、変数ｃｏｕｎｔの値が閾値ｃｏｕｎｔ＿ｔｈより大きいか否かを判断する。本実施形態では、ｃｏｕｎｔ＿ｔｈの値は４とするが、ｃｏｕｎｔ＿ｔｈの値は４に限るものではない。
【００９０】
この判断の結果、変数ｃｏｕｎｔの値が閾値ｃｏｕｎｔ＿ｔｈより大きい場合には、処理はステップＳ６０８０に進み、変数ｃｏｕｎｔの値が閾値ｃｏｕｎｔ＿ｔｈ以下である場合には、処理はステップＳ６０９０に進む。
【００９１】
＜ステップＳ６０８０＞
ＣＰＵ１０５は、集合Ｄ’に、集合Ｄに含まれているそれぞれの動きベクトル情報のうちｋ番目の動きベクトル情報を登録する。
【００９２】
＜ステップＳ６０９０＞
ＣＰＵ１０５は、変数ｋの値を１つインクリメントする。
【００９３】
＜ステップＳ６１００＞
ＣＰＵ１０５は、変数ｋの値が、集合Ｄに含まれている動きベクトル情報の数＝｜Ｄ｜に達したか否かを判断する。この判断の結果、達した場合には、図６のフローチャートに従った処理は完了すると共に、図２のフローチャートに従った処理も完了する。一方、未だ達していない場合には、処理はステップＳ６０２０に進む。
【００９４】
以上の処理を行うことで、集合Ｄ’には、集合Ｄから乱雑な動きベクトルの動きベクトル情報を除いた残りの動きベクトル情報のうち近接領域で類似している動きベクトルの動きベクトル情報（集合Ｄに属する動きベクトル群において、互いに類似する動きベクトルの数が所定数以上となる動きベクトル）が登録されることになる。同じ被写体に属する動きベクトルは類似するので、集合Ｄ’にはこのような動体の動きベクトルの動きベクトル情報が含まれていることになる。
【００９５】
パン・チルトなどのカメラワークでカメラ自体が動いた場合には、撮像画面上は背景も動いたこととみなされ、ゼロベクトルでない動きベクトルが発生する。連続する撮像画像の動きベクトルからホモグラフィ行列をロバスト推定により推定するということは、撮像画像内の背景の動きに起因する動きベクトルを抽出しながら、３次元空間内の背景とみなされる平面の射影変換、つまり、背景の動きをホモグラフィ行列として算出することである。ロバスト推定は、動きベクトルの集合から、動体の動きベクトル、誤検出された動きベクトルを除去しながら、背景の動きに起因する動きベクトルから背景の動きを表現するホモグラフィ行列を推定する動作である。このとき、背景に分類される全ての静止被写体の位置がカメラに対して十分に遠い場合、全ての被写体が無限遠にある平面上に存在するとみなすことができるものとすると、背景の動きを代表する十分に精度の高いホモグラフィ行列を一つ算出することができる。よって、入力された動きベクトル群から、推定したホモグラフィ行列での再投影誤差が閾値以下のベクトルを除去した場合、残りの動きベクトルは、動体の動きベクトルと誤検出された動きベクトルの集合となる。誤検出された動きベクトルは、ベクトルの長さや方向が乱雑であるため、動きが乱雑な動きベクトルを除去すれば、動体の動きベクトルを抽出することができる。しかし、背景とみなされるべき静止被写体がカメラの位置に対し近距離と遠距離に存在し、カメラをパン・チルトさせた場合、２次元画像上での移動量は異なり、一つのホモグラフィ行列で背景の動きを代表させることは難しい。然るに本実施形態では、段階的に複数のホモグラフィ行列を推定し、それぞれのホモグラフィ行列で再投影誤差が閾値より大きい動きベクトルを抽出している。これにより、入力された動きベクトルから背景の動きベクトルをより多く除去でき、奥行きのあるシーンにおいても動体の動きベクトルの抽出能力が向上する。
【００９６】
すなわち、本実施形態に係る画像処理装置の構成及び動作を要約すれば、以下のようになる。先ず、画像における動きベクトル群を、動きベクトルの信頼度が高い第１の動きベクトル群と、該第１の動きベクトル群以外の第２の動きベクトル群と、に分類する。そして、第１の動きベクトル群のうち、背景とみなされる平面から平面への射影変換を行うためのホモグラフィ行列を求める際にアウトライアベクトルとなる動きベクトル群を第１の対象動きベクトル群として特定（第１の特定）し、第２の動きベクトル群のうち、ホモグラフィ行列に基づく再投影誤差が規定値よりも大きくなる動きベクトル群を第２の対象動きベクトル群として特定（第２の特定）する。そして、第１の対象動きベクトル群及び第２の対象動きベクトル群のうち、他と類似する対象動きベクトルの集合を、画像における非背景部分の動きベクトルの集合として特定（第３の特定）する。
【００９７】
そしてこの第１の特定では、次のような処理を行っていることになる。
【００９８】
（Ａ）  第１の動きベクトル群のうち、該第１の動きベクトル群に基づくホモグラフィ行列を求める際に背景の動きに対応しないアウトライアベクトルとなる動きベクトル群を特定する。
【００９９】
（Ｂ）  （Ａ）において特定された背景の動きに対応しないアウトライアベクトルとなる動きベクトル群のうち、新たなホモグラフィ行列を求める際にアウトライアベクトルとなる動きベクトル群を特定する。
【０１００】
（Ｃ）  （Ｂ）を繰り返して複数回行うことで得られる動きベクトル群を、第１の対象動きベクトル群として特定する。つまり、第1の対象動きベクトルは前景としてみなされるオブジェクトの動きに基づくベクトル群である。
【０１０１】
また、第２の特定では、次のような処理を行っていることになる。
【０１０２】
（Ｄ）  第２の動きベクトル群のうち、第１の動きベクトル群から推定されたホモグラフィ行列に基づく再投影誤差が規定値よりも大きくなる動きベクトル群を特定する。
【０１０３】
（Ｅ）  （Ｄ）の後、第１の特定でホモグラフィ行列を推定するたびに、第２の特定で前回特定した動きベクトル群のうち、該ホモグラフィ行列に基づく再投影誤差が規定値よりも大きくなる動きベクトル群を特定する。
【０１０４】
（Ｆ）  （Ｅ）により得られる動きベクトル群を、前景としてみなされるオブジェクトの動きに基づくベクトル群の１つである第２の対象動きベクトル群として特定する。
【０１０５】
［第２の実施形態］
本実施形態では、図２のフローチャートに従った処理の代わりに、図７のフローチャートに従った処理を行う点が、第１の実施形態と異なる。以下では、第１の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第１の実施形態と同様であるものとして説明する。図７において図２と同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【０１０６】
ステップＳ７０７０では、図２のステップＳ２０７０と比して、第二の条件式が、（ｉ＜Ｎ  ＆＆  （ｉ＞１  ＆＆  （｜Ｖｉ−２｜−｜Ｖｉ−１｜）＊ｒａｔｉｏ２＜｜Ｖｉ−１｜−｜Ｖｉ｜）という条件式に変更されている。ｒａｔｉｏ２は、０．７（１未満の正の係数）とするが、この値に限らない。
【０１０７】
第１の実施形態では、Ｈ０に対応するインライアベクトルの数とＨｉ−１に対応するインライアベクトルの数の比を計算していたが、本実施形態では、Ｈ（ｉ−２）に対応するインライアベクトルの数とＨｉ−１に対応するインライアベクトルの数の比を計算しており、このような条件式の変更によっても、第１の実施形態と同様の効果を奏することができる。
【０１０８】
［第３の実施形態］
本実施形態では、図２のフローチャートに従った処理の代わりに、図８のフローチャートに従った処理を行う点が、第１の実施形態と異なる。以下では、第１の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第１の実施形態と同様であるものとして説明する。図８において図２と同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【０１０９】
＜ステップＳ８０２０＞
ＣＰＵ１０５は、集合Ｘを複製したものを集合Ｒとして生成する。すなわち、集合Ｒは、集合Ｘに属する全ての動きベクトル情報から成る集合である。なお、集合Ｒを生成するのは、オリジナルの集合である集合Ｘを何らかの目的で残しておきたいというケースに対処するものであって、このようなケースを想定しなくても良い場合には、集合Ｒを生成することなく、以下の処理では集合Ｒではなく集合Ｘそのものを用いればよい。
【０１１０】
＜ステップＳ８０３５＞
ＣＰＵ１０５は、集合Ｒに属するそれぞれの動きベクトル情報を、非類似度が低い順（信頼性が高い順）にソートし、該ソートされた動きベクトル情報のうち上位（最も非類似度が低い）から順にＮ＿ＲＡＮＳＡＣ個の動きベクトル情報を抽出し、該抽出したＮ＿ＲＡＮＳＡＣ個の動きベクトル情報から成る集合Ｖ’を生成する。本実施形態でも、Ｎ＿ＲＡＮＳＡＣ＝３００とする。
【０１１１】
この場合、ステップＳ２０４０では、集合Ｖｉの代わりに集合Ｖ’を用いる点が、第１の実施形態と異なる。すなわち、集合Ｖ’に含まれている動きベクトル情報を用いてロバスト推定を実施してホモグラフィ行列Ｈｉを推定し、集合Ｖ’に含まれている動きベクトル情報のうち、ホモグラフィ行列Ｈｉを求める際にアウトライアベクトルとなった動きベクトルの動きベクトル情報の集合Ｖｉ＋１を生成する。なお、本実施形態ではＶ０＝０とする。
【０１１２】
本実施形態では、ホモグラフィ行列を求めるために用いる動きベクトル情報の数が常にＮ＿ＲＡＮＳＡＣ個（本実施形態では３００個）となり、十分な数を維持できることから、ホモグラフィ行列の推定性能が向上する。
【０１１３】
その後、ステップＳ８０３５では、ステップＳ２０５０において更新された集合Ｒを対象として処理を行う。なお、本実施形態においても、ステップＳ２０７０は、ステップＳ７０７０で置き換えても構わない。
【０１１４】
すなわち、本実施形態に係る画像処理装置の構成及び動作を要約すれば、以下のようになる。先ず、画像における動きベクトル群のうち動きベクトルの信頼度が高い上位の所定数の動きベクトル群から背景とみなされる平面から平面への射影変換を行うためのホモグラフィ行列を求める。その際にアウトライアベクトルとなる動きベクトル群を第１の対象動きベクトル群として特定する（第１の特定）。また、該画像における動きベクトル群から、ホモグラフィ行列に基づく再投影誤差が規定値よりも大きくなる動きベクトル群を第２の対象動きベクトル群として特定する（第２の特定）。そして、第１の対象動きベクトル群及び第２の対象動きベクトル群のうち、他と類似する対象動きベクトルの集合を、画像における非背景部分の動きベクトルの集合として特定する（第３の特定）。
【０１１５】
そしてこの第１の特定では、次のような処理を行っていることになる。
【０１１６】
（Ａ）  画像における動きベクトル群のうち信頼性の高い上位の所定数の動きベクトルに基づくホモグラフィ行列を求める際に背景の動きに対応しないアウトライアベクトルとなる動きベクトル群を特定する。
【０１１７】
（Ｂ）  （Ａ）において特定された背景の動きに対応しないアウトライアベクトルとなる動きベクトル群のうちさらに信頼性の高い上位の所定数の動きベクトルに基づく新たなホモグラフィ行列を求める際にアウトライアベクトルとなる動きベクトル群を特定する。
【０１１８】
（Ｃ）  （Ｂ）を繰り返して複数回行うことで得られる動きベクトル群を、第１の対象動きベクトル群として特定する。つまり、第1の対象動きベクトルは前景としてみなされるオブジェクトの動きに基づくベクトル群である。
【０１１９】
また、第２の特定では、次のような処理を行っていることになる。
【０１２０】
（Ｄ）  画像における動きベクトル群から、該動きベクトル群のうち信頼性の高い上位の所定数の動きベクトルから推定されたホモグラフィ行列に基づく再投影誤差が規定値よりも大きくなる動きベクトル群を特定する。
【０１２１】
（Ｅ）  （Ｄ）の後、第１の特定でホモグラフィ行列を推定するたびに、第２の特定で前回特定した動きベクトル群のうち、該ホモグラフィ行列に基づく再投影誤差が規定値よりも大きくなる動きベクトル群を特定する。
【０１２２】
（Ｆ）  （Ｅ）により得られる動きベクトル群を、前景としてみなされるオブジェクトの動きに基づくベクトル群の１つである第２の対象動きベクトル群として特定する。
【０１２３】
［第４の実施形態］
第１〜３の実施形態において説明した処理は、図１（ｂ）に示した構成を有する画像処理装置によっても達成可能である。図１（ｂ）に示した構成は、例えば、撮像装置に適用可能な構成である。図１（ｂ）において、図１（ａ）に示した機能部と同じ機能部については同じ参照番号を付しており、該機能部に係る説明は省略する。
【０１２４】
撮像部１１０は、レンズ、センサ、レンズ制御部、を有するものであり、レンズ制御部により駆動制御されたレンズを介して受光した外界からの光をセンサで受光し、該受光した光に基づく撮像画像を周知の方法でもって生成して出力する。撮像部１１０は更に、絞りやズーム量などのレンズの制御状態をも出力する。撮像部１１０から出力された撮像画像及びレンズの制御状態は、ＲＡＭ１０２や外部ストレージ１０７に格納される。
【０１２５】
動き検出部１１１は、ＲＡＭ１０２や外部ストレージ１０７に格納されている撮像画像群のうち撮像時刻が隣接する２枚の撮像画像（動画像の場合は隣接するフレームの画像）から動きベクトル群を抽出する（もちろん、１フレームおきなど、隣接した撮像時刻の撮像画像でなくても良い）。
【０１２６】
なお、画像処理装置の構成が図１（ａ）に示した構成であろうと、図１（ｂ）に示した構成であろうと、その一部若しくは全部を１つのチップ上にまとめてハードウェア化して実装しても良い。例えば、ＣＰＵ１０５、ＲＡＭ１０２、外部ストレージ１０７、グラフィックプロセッサ１０３、ネットワークＩ／Ｆ１０８を配置したチップを構成しても良く、該チップとその他の機能部と、を有する画像処理装置を形成しても構わない。
【０１２７】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１２８】
１０５：ＣＰＵ
【図１】
2016126576.tif 000010
【図２】
2016126576.tif 000011
【図３】
2016126576.tif 000012
【図４】
2016126576.tif 000013
【図５】
2016126576.tif 000014
【図６】
2016126576.tif 000015
【図７】
2016126576.tif 000016
【図８】
2016126576.tif 000017