(57)【要約】【課題】複数の視差候補の中から最適な視差を精度よく選択することができる画像処理装置等を提供する。【解決手段】画像取得部１１は、同一被写体について視差のある２つの画像を取得する。特徴点候補取得部１２は、画像取得部１１により取得された一方の画像から特徴点候補を取得する。視差候補取得部１３は、ステレオマッチングを行い、他方の画像から特徴点候補毎の視差候補をそれぞれ取得する。特徴点選択部１４は、取得された特徴点候補の中から所定の条件を満たすものを特徴点として選択する。隣接点取得部１５は、特徴点選択部１４により選択された特徴点に隣接する隣接点を、特徴点毎にそれぞれ取得する。視差決定部１６は、特徴点と、視差候補と、隣接点と、に基づいて、確率伝搬法によるアルゴリズムを用いた処理を実行し、各特徴点に対応する視差を決定する。【選択図】図３
2012073930.tif 000002
【特許請求の範囲】
【請求項１】
同一被写体について視差のある２以上の画像を取得する画像取得手段と、
該画像取得手段が取得した画像の一方から特徴点候補を取得する特徴点候補取得手段と、
該特徴点候補取得手段により取得された特徴点候補と、前記画像の他方と、に基づいて、ステレオマッチングを行い、前記画像の他方から前記特徴点候補毎の視差候補をそれぞれ取得する視差候補取得手段と、
前記特徴点候補の中から所定の条件を満たすものを特徴点として選択する特徴点選択手段と、
該特徴点選択手段により選択された前記特徴点に隣接する隣接点を、前記特徴点毎にそれぞれ取得する隣接点取得手段と、
前記特徴点と、前記視差候補と、前記隣接点と、に基づいて、確率伝搬法によるアルゴリズムを用いた処理を実行し、各特徴点に対応する視差を決定する視差決定手段と、を備える、
ことを特徴とする画像処理装置。
【請求項２】
前記視差候補取得手段は、前記ステレオマッチングで得られた複数の対応点の中から、前記視差候補を、当該特徴点候補との相違度が予め設定した第１の閾値以下となるものの下位から予め設定した視差候補最大数を限度として選択するか、又は、当該特徴点候補との類似度が予め設定した第２の閾値以上となるものの上位から前記視差候補最大数を限度として選択する、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記視差候補取得手段は、前記ステレオマッチングで得られた複数の対応点の中から、当該特徴点候補との相違度が極小値となる対応点、又は、当該特徴点候補との類似度が極大値となる対応点を視差候補として選択する、
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記特徴点選択手段は、前記視差候補取得手段により取得された前記特徴点候補毎の各視差候補において、対応する特徴点候補との相違度が、前記第１の閾値より小さい第３の閾値を下回るものが存在しない場合、又は、当該特徴点候補との類似度が、前記第２の閾値より大きい第４の閾値を上回るものが存在しない場合には、当該特徴点候補を特徴点として選択しない、
ことを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
同一被写体について視差のある２以上の画像を取得する画像取得ステップと、
該画像取得ステップで取得された画像の一方から特徴点候補を取得する特徴点候補取得ステップと、
該特徴点候補取得ステップにより取得された特徴点候補と、前記画像の他方と、に基づいて、ステレオマッチングを行い、前記画像の他方から前記特徴点候補毎の視差候補をそれぞれ取得する視差候補取得ステップと、
前記特徴点候補の中から所定の条件を満たすものを特徴点として選択する特徴点選択ステップと、
該特徴点選択ステップで選択された前記特徴点に隣接する隣接点を、前記特徴点毎にそれぞれ取得する隣接点取得ステップと、
前記特徴点と、前記視差候補と、前記隣接点と、に基づいて、確率伝搬法によるアルゴリズムを用いた処理を実行し、各特徴点に対応する視差を決定する視差決定ステップと、を有する、
ことを特徴とする画像処理方法。
【請求項６】
画像処理装置を制御するコンピュータに、
同一被写体について視差のある２以上の画像を取得する画像取得機能と、
該画像取得機能で取得された画像の一方から特徴点候補を取得する特徴点候補取得機能と、
該特徴点候補取得機能で取得された特徴点候補と、前記画像の他方と、に基づいて、ステレオマッチングを行い、前記画像の他方から前記特徴点候補毎の視差候補をそれぞれ取得する視差候補取得機能と、
前記特徴点候補の中から所定の条件を満たすものを特徴点として選択する特徴点選択機能と、
該特徴点選択機能で選択された前記特徴点に隣接する隣接点を、前記特徴点毎にそれぞれ取得する隣接点取得機能と、
前記特徴点と、前記視差候補と、前記隣接点と、に基づいて、確率伝搬法によるアルゴリズムを用いた処理を実行し、各特徴点に対応する視差を決定する視差決定機能と、を実現させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、被写体を適切に３次元モデリングするための技術に関する。
【背景技術】
【０００２】
人間、動物、あるいは、美術品などの被写体を、右眼用撮像部と左目用撮像部とを備えるステレオカメラを用いて撮像し、撮像により得られた右眼用画像と左眼用画像とに基づいて、被写体の３次元モデルを構築する技術が知られている。
【０００３】
具体的には、右眼用画像と左眼用画像とに対してステレオマッチングが実施され、被写体上の同じ点を表している対応点が求められる。次に、求められた対応点と、右眼用撮像部と左眼用撮像部との間隔と、に基づいて、三角測量の要領で、ステレオカメラと対応点との距離（撮影距離）が求められる。そして、求められた撮影距離から対応点の３次元座標が求められることで、被写体の３次元モデルが構築される。このような技術は、例えば、特許文献１や非特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第２９５３１５４号公報
【非特許文献】
【０００５】
【非特許文献１】デジタル画像処理、２００６年３月１日発行、ＣＧ−ＡＲＴＳ協会
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来、ステレオマッチングでは、テンプレートマッチングなどにより、類似度が最も高い（即ち、相違度が最も低い）対応点の位置を探索することで視差を求めている。そして、類似度が所定閾値より低い場合は、点対応が取れないものとして、当該特徴点を除外している。
【０００７】
ところで、ノイズやオクルージョンなどによって類似度の精度が低下することもあるが、そのような場合では、類似度の最も高い視差が正しい視差であるとは必ずしもいえない。しかし、類似度の最も高いものと近い類似度をもつ視差が複数ある場合に、どの視差が最も適切であるかを判定することは、従来においては困難であった。
【０００８】
そのため、従来では、類似度の最も高いものと二番目に高いものの差が、予め決められた閾値以上でない場合には、点対応が取れないものとして、当該特徴点を除外していた。つまり、他の視差に対して類似度が圧倒的に高い視差が選択されていた。
【０００９】
例えば、位置精度を高めることを目的として、上記条件を厳しくすると、特徴点の数が減ってしまい、被写体の形状情報が欠損してしまう。一方、上記条件を緩くすると、正しくない視差により位置精度が低下、つまりモデリング精度が悪化するおそれがある。
【００１０】
本発明は、上記問題に鑑みてなされたものであり、複数の視差候補の中から最適な視差を精度よく選択することができる画像処理装置、画像処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の観点に係る画像処理装置は、
同一被写体について視差のある２以上の画像を取得する画像取得手段と、
該画像取得手段が取得した画像の一方から特徴点候補を取得する特徴点候補取得手段と、
該特徴点候補取得手段により取得された特徴点候補と、前記画像の他方と、に基づいて、ステレオマッチングを行い、前記画像の他方から前記特徴点候補毎の視差候補をそれぞれ取得する視差候補取得手段と、
前記特徴点候補の中から所定の条件を満たすものを特徴点として選択する特徴点選択手段と、
該特徴点選択手段により選択された前記特徴点に隣接する隣接点を、前記特徴点毎にそれぞれ取得する隣接点取得手段と、
前記特徴点と、前記視差候補と、前記隣接点と、に基づいて、確率伝搬法によるアルゴリズムを用いた処理を実行し、各特徴点に対応する視差を決定する視差決定手段と、を備える、ことを特徴とする。
【００１２】
上記構成の画像処理装置において、
前記視差候補取得手段は、前記ステレオマッチングで得られた複数の対応点の中から、前記視差候補を、当該特徴点候補との相違度が予め設定した第１の閾値以下となるものの下位から予め設定した視差候補最大数を限度として選択するか、又は、当該特徴点候補との類似度が予め設定した第２の閾値以上となるものの上位から前記視差候補最大数を限度として選択する、ようにしてもよい。
【００１３】
また、上記構成の画像処理装置において、
前記視差候補取得手段は、前記ステレオマッチングで得られた複数の対応点の中から、当該特徴点候補との相違度が極小値となる対応点、又は、当該特徴点候補との類似度が極大値となる対応点を視差候補として選択する、ようにしてもよい。
【００１４】
また、上記構成の画像処理装置において、
前記特徴点選択手段は、前記視差候補取得手段により取得された前記特徴点候補毎の各視差候補において、対応する特徴点候補との相違度が、前記第１の閾値より小さい第３の閾値を下回るものが存在しない場合、又は、当該特徴点候補との類似度が、前記第２の閾値より大きい第４の閾値を上回るものが存在しない場合には、当該特徴点候補を特徴点として選択しない、ようにしてもよい。
【００１５】
本発明の第２の観点に係る画像処理方法は、
同一被写体について視差のある２以上の画像を取得する画像取得ステップと、
該画像取得ステップで取得された画像の一方から特徴点候補を取得する特徴点候補取得ステップと、
該特徴点候補取得ステップで取得された特徴点候補と、前記画像の他方と、に基づいて、ステレオマッチングを行い、前記画像の他方から前記特徴点候補毎の視差候補をそれぞれ取得する視差候補取得ステップと、
前記特徴点候補の中から所定の条件を満たすものを特徴点として選択する特徴点選択ステップと、
該特徴点選択ステップで選択された前記特徴点に隣接する隣接点を、前記特徴点毎にそれぞれ取得する隣接点取得ステップと、
前記特徴点と、前記視差候補と、前記隣接点と、に基づいて、確率伝搬法によるアルゴリズムを用いた処理を実行し、各特徴点に対応する視差を決定する視差決定ステップと、を有する、ことを特徴とする。
【００１６】
本発明の第３の観点に係るプログラムは、
画像処理装置を制御するコンピュータに、
同一被写体について視差のある２以上の画像を取得する画像取得機能と、
該画像取得機能で取得された画像の一方から特徴点候補を取得する特徴点候補取得機能と、
該特徴点候補取得機能で取得された特徴点候補と、前記画像の他方と、に基づいて、ステレオマッチングを行い、前記画像の他方から前記特徴点候補毎の視差候補をそれぞれ取得する視差候補取得機能と、
前記特徴点候補の中から所定の条件を満たすものを特徴点として選択する特徴点選択機能と、
該特徴点選択機能で選択された前記特徴点に隣接する隣接点を、前記特徴点毎にそれぞれ取得する隣接点取得機能と、
前記特徴点と、前記視差候補と、前記隣接点と、に基づいて、確率伝搬法によるアルゴリズムを用いた処理を実行し、各特徴点に対応する視差を決定する視差決定機能と、を実現させる、ことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、複数の視差候補の中から最適な視差を精度よく選択することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係るステレオカメラの外観構成を示す図であり、（ａ）は、前面側を示し、（ｂ）は背面側を示す。
【図２】本実施形態のステレオカメラの電気的構成を示すブロック図である。
【図３】本実施形態のステレオカメラにおいて、ステレオ撮影モードに係る主要な機能構成を示すブロック図である。
【図４】本実施形態における３次元モデリング処理の手順を示すフローチャートである。
【図５】本実施形態における３次元モデル生成処理の手順を示すフローチャートである。
【図６】本実施形態における視差候補の選択について説明するためのグラフであり、（ａ）は、極値のものに限定した場合を示し、（ｂ）は、極値のものに限定しない場合を示す。
【図７】本実施形態における確率伝搬法に基づく処理の手順を示すフローチャートである。
【図８】本発明の効果を説明するためのグラフであり、（ａ）は、ある特徴点と各対応点との相違度を示し、（ｂ）及び（Ｃ）は、この特徴点の隣接点と各対応点との相違度を示す。
【発明を実施するための形態】
【００１９】
以下、本発明の一実施形態について、図面を参照して説明する。本実施形態では、本発明をデジタル式のステレオカメラに適用した例を示す。
【００２０】
図１（ａ）、（ｂ）は、本実施形態に係るステレオカメラ１の外観図である。図１（ａ）に示すように、このステレオカメラ１の前面には、レンズ１１１Ａと、レンズ１１１Ｂと、ストロボ発光部４００と、が設けられ、上面には、シャッタボタン３３１が設けられている。レンズ１１１Ａとレンズ１１１Ｂは、シャッタボタン３３１が上になる方向で、ステレオカメラ１を水平にした場合に、各々の中心位置が水平方向で同一線上となるように、所定の間隔を隔てて配置されている。ストロボ発光部４００は、必要に応じて被写体に向けてストロボ光を照射する。シャッタボタン３３１は、ユーザからのシャッタ動作指示を受け付けるためのボタンである。
【００２１】
ステレオカメラ１の背面には、図１（ｂ）に示すように、表示部３１０と、操作キー３３２と、電源ボタン３３３と、が設けられている。表示部３１０は、例えば、液晶表示装置等から構成され、ステレオカメラ１を操作するために必要な種々の画面や、撮影時のライブビュー画像、撮像画像等を表示するための電子ビューファインダとして機能する。
【００２２】
操作キー３３２は、十字キーや決定キー等を含み、モード切替や表示切替等、ユーザからの各種の操作を受け付ける。電源ボタン３３３は、ステレオカメラ１の電源のオン・オフをユーザから受け付けるためのボタンである。
【００２３】
図２は、ステレオカメラ１の電気的構成を示すブロック図である。図２に示すように、ステレオカメラ１は、第１撮像部１００Ａと、第２撮像部１００Ｂと、データ処理部２００と、Ｉ／Ｆ部３００と、ストロボ発光部４００と、を備える。
【００２４】
第１撮像部１００Ａ及び第２撮像部１００Ｂは、それぞれ被写体を撮像する機能を担う部分である。ステレオカメラ１は、いわゆる複眼カメラであり、このように２つの撮像部を有する構成であるが、第１撮像部１００Ａと第２撮像部１００Ｂは同一の構成である。以下、第１撮像部１００Ａについての構成には参照符号の末尾に「Ａ」を付し、第２撮像部１００Ｂについての構成には参照符号の末尾に「Ｂ」を付す。
【００２５】
図２に示すように、第１撮像部１００Ａ（第２撮像部１００Ｂ）は、光学装置１１０Ａ（１１０Ｂ）やイメージセンサ部１２０Ａ（１２０Ｂ）等から構成されている。光学装置１１０Ａ（１１０Ｂ）は、例えば、レンズ、絞り機構、シャッタ機構等を含み、撮像に係る光学的動作を行う。即ち、光学装置１１０Ａ（１１０Ｂ）の動作により、入射光が集光されるとともに、焦点距離、絞り、シャッタスピード等といった、画角やピント、露出等にかかる光学的要素の調整がなされる。
【００２６】
なお、光学装置１１０Ａ（１１０Ｂ）に含まれるシャッタ機構はいわゆるメカニカルシャッタであり、イメージセンサの動作のみでシャッタ動作をおこなう場合には、光学装置１１０Ａ（１１０Ｂ）にシャッタ機構が含まれていなくてもよい。また、光学装置１１０Ａ（１１０Ｂ）は、後述する制御部２１０による制御によって動作する。
【００２７】
イメージセンサ部１２０Ａ（１２０Ｂ）は、光学装置１１０Ａ（１１０Ｂ）によって集光された入射光に応じた電気信号を生成する。イメージセンサ部１２０Ａ（１２０Ｂ）は、例えば、ＣＣＤ（Charge Coupled Device）やＣＭＯＳ（Complementally Metal Oxide Semiconductor）等のイメージセンサから構成され、光電変換を行うことで、受光した光の強度に応じた電気信号を生成し、生成した電気信号をデータ処理部２００に出力する。
【００２８】
上述したように、第１撮像部１００Ａと第２撮像部１００Ｂは同一の構成である。より詳細には、レンズの焦点距離ｆやＦ値、絞り機構の絞り範囲、イメージセンサのサイズや画素数、配列、画素面積等の各仕様が全て同一である。第１撮像部１００Ａと第２撮像部１００Ｂとを同時に動作させた場合、同一被写体について２つの画像（ペア画像）が撮像されるが、光軸位置は横方向で異なっている。
【００２９】
データ処理部２００は、第１撮像部１００Ａ及び第２撮像部１００Ｂによる撮像動作によって生成された電気信号を処理し、撮像画像を示すデジタルデータを生成すると共に、撮像画像に対する画像処理等を行う。データ処理部２００は、制御部２１０、画像処理部２２０、画像メモリ２３０、画像出力部２４０、記憶部２５０、外部記憶部２６０等から構成される。
【００３０】
制御部２１０は、例えば、ＣＰＵ（Central Processing Unit）等のプロセッサや、ＲＡＭ（Random Access Memory）等の主記憶装置等から構成され、記憶部２５０等に格納されているプログラムを実行することで、ステレオカメラ１の各部を制御する。また、本実施形態では、所定のプログラムを実行することで、後述する３次元モデリング処理等にかかる機能が制御部２１０によって実現する。
【００３１】
画像処理部２２０は、例えば、ＡＤＣ（Analog-Digital Converter）、バッファメモリ、画像処理用のプロセッサ（いわゆる、画像処理エンジン）等から構成され、イメージセンサ部１２０Ａ及び１２０Ｂによって生成された電気信号に基づいて、撮像画像を示すデジタルデータを生成する。即ち、イメージセンサ部１２０Ａ（１２０Ｂ）から出力されたアナログ電気信号をＡＤＣがデジタル信号に変換して順次バッファメモリに格納すると、バッファされたデジタルデータに対し、画像処理エンジンが、いわゆる現像処理等を行うことで、画質の調整やデータ圧縮等を行う。
【００３２】
画像メモリ２３０は、例えば、ＲＡＭやフラッシュメモリ等の記憶装置から構成され、画像処理部２２０によって生成された撮像画像データや、制御部２１０によって処理される画像データ等を一時的に保存する。
【００３３】
画像出力部２４０は、例えば、ＲＧＢ信号を生成する回路等から構成され、画像メモリ２３０に格納された画像データをＲＧＢ信号等に変換して表示画面（表示部３１０等）に出力する。
【００３４】
記憶部２５０は、例えば、ＲＯＭ（Read Only Memory）やフラッシュメモリ等の記憶装置から構成され、ステレオカメラ１の動作に必要なプログラムやデータ等を格納する。本実施形態では、制御部２１０等が実行する動作プログラムや、その実行時に必要となるパラメータや演算式等のデータが記憶部２５０に格納されているものとする。
【００３５】
外部記憶部２６０は、例えば、メモリカード等といった、ステレオカメラ１に着脱可能な記憶装置から構成され、ステレオカメラ１で撮像した画像データ、３次元モデルデータ等を格納する。
【００３６】
Ｉ／Ｆ部３００は、ステレオカメラ１と、ユーザあるいは外部装置との間のインタフェースに係る機能を担う処理部であり、表示部３１０、外部Ｉ／Ｆ部３２０、操作部３３０等から構成される。
【００３７】
表示部３１０は、上述したように、例えば、液晶表示装置等から構成され、ユーザがステレオカメラ１を操作するために必要な種々の画面や、撮影時のライブビュー画像、撮像画像等を表示出力する。本実施形態では、画像出力部２４０からの画像信号（ＲＧＢ信号）等に基づいて撮像画像等の表示出力が行われる。
【００３８】
外部Ｉ／Ｆ部３２０は、例えば、ＵＳＢ（Universal Serial Bus）コネクタやビデオ出力端子等から構成され、外部のコンピュータ装置への画像データの出力や外部モニタ装置への撮像画像の表示出力等を行う。
【００３９】
操作部３３０は、ステレオカメラ１の外面上に設けられている各種ボタン等によって構成され、ユーザによる操作に応じた入力信号を生成して制御部２１０に送出する。操作部３３０を構成するボタンには、上述したように、シャッタボタン３３１、操作キー３３２、電源ボタン３３３等が含まれる。
【００４０】
ストロボ発光部４００は、例えば、キセノンランプ（キセノンフラッシュ）により構成される。ストロボ発光部４００は、制御部２１０の制御に従って被写体にストロボ光を照射する。
【００４１】
以上、本発明を実現するために必要となるステレオカメラ１の構成について説明したが、ステレオカメラ１は、このほかにも、一般的なステレオカメラの機能を実現するための構成を備えているものとする。
【００４２】
続いて、ステレオカメラ１の動作の内、ステレオ撮影モードに係る動作について説明する。
【００４３】
図３は、ステレオカメラ１における、ステレオ撮影モードに係る動作を実現するための主要な機能構成を示すブロック図である。この動作において、図３に示すように、ステレオカメラ１は、画像取得部１１、特徴点候補取得部１２、視差候補取得部１３、特徴点選択部１４、隣接点取得部１５、視差決定部１６と、を備える。
【００４４】
画像取得部１１は、同一被写体について視差のある２つの画像（ペア画像）を取得する。特徴点候補取得部１２は、画像取得部１１により取得された一方の画像（例えば、第１撮像部１００Ａによる撮像の結果得られた画像）から特徴点の候補（特徴点候補）を取得する。視差候補取得部１３は、ステレオマッチングを行い、他方の画像（例えば、第２撮像部１００Ｂによる撮像の結果得られた画像）から特徴点候補毎の視差候補をそれぞれ取得する。
【００４５】
特徴点選択部１４は、取得された特徴点候補の中から所定の条件を満たすものを特徴点として選択する。隣接点取得部１５は、特徴点選択部１４により選択された特徴点に隣接する特徴点（隣接点）を、特徴点毎にそれぞれ取得する。視差決定部１６は、特徴点と、視差候補と、隣接点と、に基づいて、確率伝搬法によるアルゴリズムを用いた処理を実行し、各特徴点に対応する視差を決定する。
【００４６】
図４は、ステレオ撮影モードに係る動作時の処理（３次元モデリング処理）の手順を示すフローチャートである。この３次元モデリング処理は、ユーザが、操作キー３３２等の操作部３３０を操作することで、ステレオ撮影モードが選択されたことを契機に開始される。
【００４７】
ステップＳ１０１では、制御部２１０により、終了イベントの発生有無が判定される。終了イベントは、例えば、ユーザにより、再生モード等へのモード移行操作が行われた場合や、ステレオカメラ１の電源がオフされた場合等に発生する。
【００４８】
終了イベントが発生している場合（ステップＳ１０１；ＹＥＳ）、本処理は終了する。一方、終了イベントが発生していない場合（ステップＳ１０１；ＮＯ）、制御部２１０は、一方の撮像部（例えば、第１撮像部１００Ａ）を介して得られた画像データに基づく画像（いわゆる、ライブビュー画像）を表示部３１０に表示する（ステップＳ１０２）。
【００４９】
ステップＳ１０３では、制御部２１０は、シャッタボタン３３１が押下されているか否かを判定する。シャッタボタン３３１が押下されていない場合（ステップＳ１０３；ＮＯ）、制御部２１０は、再度、ステップＳ１０１の処理を実行する。一方、シャッタボタン３３１が押下されている場合（ステップＳ１０３；ＹＥＳ）、制御部２１０は、第１撮像部１００Ａ、第２撮像部１００Ｂ、画像処理部２２０を制御して、被写体を撮像する（ステップＳ１０４）。その結果、２枚の平行同位画像（ペア画像）が得られる。取得されたペア画像は、例えば、画像メモリ２３０に保存される。なお、以降の説明において、ペア画像の内、第１撮像部１００Ａによる撮像の結果得られた画像を画像Ａ、第２撮像部１００Ｂによる撮像の結果得られた画像を画像Ｂとする。
【００５０】
制御部２１０は、画像メモリ２３０に保存されているペア画像に基づいて、３次元モデル生成処理を実行する（ステップＳ１０５）。
【００５１】
ここで、図５に示すフローチャートを参照して、３次元モデル生成処理について説明する。なお、３次元モデル生成処理は、一組のペア画像に基づいて３次元モデルを生成する処理である。つまり、３次元モデル生成処理は、一のカメラ位置から見た３次元モデルを生成する処理と考えることができる。
【００５２】
まず、制御部２１０は、特徴点候補を取得する（ステップＳ２０１）。特徴点候補は、一方の画像（例えば、画像Ａ）から抽出して取得する。本実施形態では、特徴点候補は、コーナー点ではなく、画像上に敷き詰めた所定の大きさの正三角形の頂点など、機械的かつ均等に割り当てられるようにする。これは、コーナー点では、配置が偏るため、３次元モデルの品質（滑らかさ等）が低下する可能性が高くなるからである。また、均等に割り当てることで、処理時間の短縮化も図れる。
【００５３】
次に、制御部２１０は、ステレオマッチングを実行し（ステップＳ２０２）、画像Ａの各特徴点候補に対応する点（対応点）を画像Ｂから探す。具体的には、制御部２１０は、ペア画像間でエピ線拘束を考慮した上で、テンプレートマッチングにより、当該特徴点候補から所定の視差範囲における対応点を検出し、検出した各対応点との相違度（あるいは類似度）を求める。テンプレートマッチングには、例えば残差絶対値和（ＳＡＤ）、残差平方和（ＳＳＤ）、正規化相関（ＮＣＣやＺＮＣＣ）や方向符号相関等、様々な既知の技法が採用可能である。
【００５４】
制御部２１０は、特徴点候補毎に、上記検出した複数の対応点の中から、視差として採用する可能性のある候補（視差候補）を選択する（ステップＳ２０３）。従来のステレオマッチングでは、相違度が最も低い（あるいは類似度が最も高い）視差を選択していたが、本発明では、最適な視差を選択できるようにするため、複数の視差を視差候補として選択する。実際には、ステップＳ２０２で検出された複数の対応点の中から、当該特徴点候補との相違度が所定の閾値（第１の閾値）以下となるものの下位から予め設定した視差候補最大数を限度として選択する。あるいは、類似度が所定の閾値（第２の閾値）以上となるものの上位から視差候補最大数を限度として選択する。
【００５５】
また、制御部２１０は、上記の選択において、極値（相違度においては極小値、類似度においては極大値）となる視差候補を選択する。図６は、所定の視差範囲における、ある特徴点と各対応点との相違度を表したグラフである。図６において、黒丸は、視差候補を示している。ここで、図６（ｂ）に示すように、極値のものに限定しない場合には、正しくない視差候補と、その視差候補に近似する視差候補で上記の視差候補最大数分の枠が占有されてしまい、最も適した視差が候補から漏れてしまう事態が発生する可能性がある。そうすると、モデリング精度が悪化してしまうおそれもある。特に、テクスチャがぼやけ気味な箇所でかかる現象が発生しやすいといえる。
【００５６】
本実施形態では、図６（ａ）に示すように、選択する視差候補を極値のものに限定するため、上記のような問題を回避することができる。
【００５７】
次に、制御部２１０は、ステップＳ２０１で取得した特徴点候補の中から特徴点の選択を行う（ステップＳ２０４）。ここでは、単純に、ステップＳ２０３の処理の結果、視差候補がない特徴点候補の削除を行う。つまり削除されなかったものが選択された特徴点となる。
【００５８】
次に、制御部２１０は、グラフの作成を行う（ステップＳ２０５）。ここでは、ステップＳ２０４で選択した各特徴点に対し、それぞれ隣接した辺を求めてグラフを作成する。制御部２１０は、例えば、ドロネー三角形分割を実行する。この際、辺の長さが所定値以上の場合には、対応する隣接点が存在しないとみなして、この辺を削除するようにするのが好ましい。
【００５９】
制御部２１０は、上記グラフを作成すると、評価関数の計算を行う（ステップＳ２０６）。ここでは、ステップＳ２０５で作成した各特徴点におけるグラフの各辺に対して、例えば、下記の式（１）のようなギブス分布による確率を与える式を計算する。式（１)において、Ｗは評価関数、ｉは特徴点、ｊは隣接点、ｄは視差、ｍは相違度、ｃは特徴点に接続される辺の数、ｗａはマッチングの重み付け係数、ｗｂは視差の差に対する重み付け係数である。式（１）は、ｉとｊの視差候補の組み合わせ分計算する必要がある。つまりグラフの辺毎に評価関数行列Ｗｉ，ｊを持つ。
【００６０】
【数１】
2012073930.tif 000003
【００６１】
次に、制御部２１０は、確率伝搬法に基づく処理を実行する（ステップＳ２０７）。ここで、図７に示すフローチャートを参照して、確率伝搬法に基づく処理について説明する。各特徴点の各視差候補を与えた場合のグラフ全体の尤度（確率）は、辺毎に式（１）を計算したものを全て掛け合わせたものになる。グラフ全体の尤度が最大になる視差候補の組み合わせが求めるべき視差である。しかし、視差候補の組み合わせは膨大であり直接解を求めることが事実上不可能である。このため、本発明では、確率伝搬法によるアルゴリズムを用いて各特徴点の視差候補の周辺確率を計算することで解を求める。
【００６２】
確率伝搬法では、グラフの辺の頂点の一方から他方へと向かうメッセージというものを求める。そして、ある頂点の周辺確率はその頂点に向かうメッセージを掛け合わせることで計算することができる。メッセージの総数はグラフの辺の数の倍あり、各メッセージの要素数は向かう頂点の状態数に等しい。
【００６３】
先ず、制御部２１０は、メッセージの初期化を行う（ステップＳ３０１）。例えば、各メッセージの要素に状態数の逆数を設定する。次に、制御部２１０は、更新前のメッセージと、図５のステップＳ２０６にて計算した評価関数行列を使って、メッセージの更新を行う（ステップＳ３０２）。各々のメッセージの更新は独立しているので、処理の並列化が容易であり、処理の高速化がしやすい。これは確率伝搬法の利点である。
【００６４】
制御部２１０は、メッセージが収束したか否かの判定（ステップＳ３０３）と、所定回数メッセージを更新したか否かの判定（ステップＳ３０４）を行い、メッセージ更新を終了するか否かを判定する。一般的に、メッセージの更新を繰り返すと収束するが、極まれに一部のメッセージが収束しない場合があるので、本実施形態では、更新の上限回数を設けている。
【００６５】
メッセージ更新を終了しない場合（ステップＳ３０３でＮＯかつステップＳ３０４でＮＯ）、制御部２１０は、ステップＳ３０２の処理に戻り、メッセージの更新を行う。
【００６６】
一方、メッセージが収束した場合（ステップＳ３０３でＹＥＳ）や所定回数メッセージを更新した場合（ステップＳ３０４でＹＥＳ）、制御部２１０は、メッセージの更新を終了し、各特徴点の周辺確率、つまり、視差候補の確率計算を行う（ステップＳ３０５）。
【００６７】
図５のフローに戻り、上記の確率伝搬法に基づく処理を終了すると、制御部２１０は、各特徴点における視差の決定を行う（ステップＳ２０８）。ここでは、制御部２１０は、上記の確率伝播法に基づく処理の結果に基づいて、各特徴点において周辺確率が最も高い視差候補を、当該特徴点に対応する視差として決定する。
【００６８】
制御部２１０は、上記決定した各特徴点毎の視差と、第１撮像部１００Ａ及び第２撮像部１００Ｂの画角、基線長等と、に基づいて、各特徴点に対応する撮影距離を計算し、各特徴点の位置情報を取得する（ステップＳ２０９）。
【００６９】
そして、制御部２１０は、取得した各特徴点の位置情報に基づいて、ドロネー三角形分割を実行し、ポリゴン化処理を実行する（ステップＳ２１０）。この処理により生成されたポリゴン情報（３次元モデルデータ）は、例えば、記憶部２５０に保存される。制御部２１０は、ポリゴン化処理を完了すると、３次元モデル生成処理を終了する。
【００７０】
図４に戻り、制御部２１０は、上記の３次元モデル生成処理（ステップＳ１０５）を終了すると、生成した３次元モデルデータを表示する（ステップＳ１０６）。具体的には、制御部２１０は、生成した３次元モデルデータを確認用の２次元データに変換して表示部３１０に表示する。そして、制御部２１０は、３次元モデルデータを外部記憶部２６０等に保存し（ステップＳ１０７）、ステップＳ１０１の処理に戻る。
【００７１】
上記の３次元モデリング処理によって、正しい視差が選択されるケースの一例を、図８を参照して説明する。図８（ａ）は、所定の視差範囲における、ある特徴点と各対応点との相違度を表したグラフである。図８（ｂ）は、上記と同一の視差範囲における、上記の特徴点の隣接点と各対応点との相違度を表したグラフである。
【００７２】
図８（ａ）において、最も相違度が低くなる視差は、Ｐ１で示される対応点との間の視差となるが、図８（ｂ）及び（ｃ）を見ると、当該視差は適切でないことが理解できる。本発明においては、複数の視差候補の中から、当該特徴点に隣接する特徴点の視差を考慮して、最も適切な視差（図８（ａ）のＰ２で示される対応点との間の視差）が選択される。即ち、本発明では、隣接した特徴点との視差の差がなるべく小さくなるように、加えて、各特徴点のマッチングがなるべく良好になるように視差候補から視差を選択する。このため、各特徴点に正しい視差を与えることが可能となり、密で滑らかな３次元モデルを生成することが可能になる。
【００７３】
なお、本発明は、上記実施形態に限定されず、本発明の要旨を逸脱しない範囲での種々の変更は勿論可能である。
【００７４】
例えば、上記実施形態では、３次元モデル生成処理における視差候補の選択（図５のステップＳ２０３）において、極値のものに限定していたが、かかる限定は必須ではない。但し、極値のものに限定することで、上述したような問題が回避できると共に、次のような効果も奏する。つまり、多くの特徴点において視差候補が減少するため、評価関数行列のサイズが小さくなり、その結果、確率伝搬法によるアルゴリズムの計算量が減少する。したがって、処理の高速化が図れる。
【００７５】
また、３次元モデル生成処理における特徴点の選択（図５のステップＳ２０４）の際、特徴点候補毎の各視差候補において、対応する特徴点候補との相違度が、上述した第１の閾値より小さい第３の閾値を下回るものが存在しない場合、又は、当該特徴点候補との類似度が、上述した第２の閾値より大きい第４の閾値を上回るものが存在しない場合には、当該特徴点候補を特徴点として選択しないようにしてもよい。一般的に、視差候補選択において、閾値条件をぎりぎり満たす視差候補が僅かばかり存在する場合には、この視差候補の中に正しい視差が含まれていない可能性が高く、ひいては、３次元モデリングの精度低下を招くおそれがある。したがって、上記のように特徴点選択用の閾値を設けることで、そのような場合の特徴点候補を除外することができる。
【００７６】
また、確率伝播法では、不正解のみが含まれる特徴点は、隣接点を通じて、周辺の特徴点に悪影響を与えると共に、メッセージの収束性を低下させるおそれがあるが、上記のように特徴点選択用の閾値を設けることで、かかる問題も回避でき、特徴点自体が減ることと、メッセージの収束性の向上により、処理の高速化が期待できる。
【００７７】
さらに、既存のステレオカメラ等を本発明に係る画像処理装置として機能させることも可能である。即ち、上述した制御部２１０が実行したようなプログラムを既存のステレオカメラ等に適用し、そのステレオカメラ等のＣＰＵ等が当該プログラムを実行することで、当該ステレオカメラ等を本発明に係る画像処理装置として機能させることができる。
【００７８】
このようなプログラムの配布方法は任意であり、例えば、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto Optical Disk）、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネットなどの通信ネットワークを介して配布してもよい。
【００７９】
この場合、上述した本発明に係る機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などでは、アプリケーションプログラム部分のみを記録媒体等に格納してもよい。
【符号の説明】
【００８０】
１…ステレオカメラ、１１…画像取得部、１２…特徴点候補取得部、１３…視差候補取得部、１４…特徴点選択部、１５…隣接点取得部、１６…視差決定部、１００Ａ…第１撮像部、１００Ｂ…第２撮像部、１１０Ａ，１１０Ｂ…光学装置、１１１Ａ，１１１Ｂ…レンズ、１２０Ａ，１２０Ｂ…イメージセンサ部、２００…データ処理部、２１０…制御部、２２０…画像処理部、２３０…画像メモリ、２４０…画像出力部、２５０…記憶部、２６０…外部記憶部、３００…Ｉ／Ｆ部、３１０…表示部、３２０…外部Ｉ／Ｆ部、３３０…操作部、３３１…シャッタボタン、３３２…操作キー、３３３…電源ボタン、４００…ストロボ発光部
【図１】
2012073930.tif 000004
【図２】
2012073930.tif 000005
【図３】
2012073930.tif 000006
【図４】
2012073930.tif 000007
【図５】
2012073930.tif 000008
【図６】
2012073930.tif 000009
【図７】
2012073930.tif 000010
【図８】
2012073930.tif 000011