(57)【特許請求の範囲】
【請求項１】
異なる位置で被写体を撮像することにより得られる第１画像と第２画像とを取得する画像取得手段と、
前記第１画像上から複数の第１特徴点を抽出するとともに、抽出した複数の第１特徴点に対応する前記第２画像上の複数の第２特徴点を抽出する特徴点抽出手段と、
前記抽出された第１特徴点と第２特徴点とに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおけるカメラの位置関係を示す座標変換パラメータを取得する第１取得手段と、
前記座標変換パラメータに基づいて取得した前記カメラとの距離に基づいて、前記抽出された第１特徴点及び当該第１特徴点に対応する第２特徴点のうち、撮像時における前記カメラとの距離が近い第１特徴点と第２特徴点との組み合わせを選択する特徴点選択手段と、
前記選択された第１特徴点と第２特徴点との組み合わせに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおける前記カメラの位置関係を示す座標変換パラメータを再取得する第２取得手段と、
前記再取得された座標変換パラメータに基づいて、前記特徴点抽出手段が抽出した複数の第１特徴点及び第２特徴点の三次元情報を取得する三次元情報取得手段と、
前記取得された複数の第１特徴点及び第２特徴点の三次元情報に基づいて、三次元モデルを作成する三次元モデル作成手段と、
を備えることを特徴とする三次元モデリング装置。
【請求項２】
前記特徴点選択手段は、前記カメラとの距離に基づいて、前記抽出された複数の第１特徴点と第２特徴点とを２つのクラスタにクラスタリングし、前記カメラとの距離が近い方のクラスタに属する第１特徴点と第２特徴点との組み合わせを選択する、
ことを特徴とする請求項１に記載の三次元モデリング装置。
【請求項３】
前記特徴点選択手段は、前記抽出された複数の第１特徴点と第２特徴点とに、前記カメラとの距離が近いほど高い評価値を示す所定の評価式によるロバスト推定法を適用して推定された特徴点を選択する、
ことを特徴とする請求項１又は２に記載の三次元モデリング装置。
【請求項４】
三次元モデリング方法であって、
異なる位置で被写体を撮像することにより得られる第１画像と第２画像とを取得する画像取得ステップと、
前記第１画像上から複数の第１特徴点を抽出するとともに、抽出した複数の第１特徴点に対応する前記第２画像上の複数の第２特徴点を抽出する特徴点抽出ステップと、
前記抽出された第１特徴点と第２特徴点とに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおけるカメラの位置関係を示す座標変換パラメータを取得する第１取得ステップと、
前記座標変換パラメータに基づいて取得した前記カメラとの距離に基づいて、前記抽出された第１特徴点及び当該第１特徴点に対応する第２特徴点のうち、撮像時における前記カメラとの距離が近い第１特徴点と第２特徴点との組み合わせを選択する特徴点選択ステップと、
前記選択された第１特徴点と第２特徴点との組み合わせに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおける前記カメラの位置関係を示す座標変換パラメータを再取得する第２取得ステップと、
前記再取得された座標変換パラメータに基づいて、前記特徴点抽出ステップで抽出した複数の第１特徴点及び第２特徴点の三次元情報を取得する三次元情報取得ステップと、
前記取得された複数の第１特徴点及び第２特徴点の三次元情報に基づいて、三次元モデルを作成する三次元モデル作成ステップと、を含む、
ことを特徴とする三次元モデリング方法。
【請求項５】
コンピュータに、
異なる位置で被写体を撮像することにより得られる第１画像と第２画像とを取得する画像取得機能、
前記第１画像上から複数の第１特徴点を抽出するとともに、抽出した複数の第１特徴点に対応する前記第２画像上の複数の第２特徴点を抽出する特徴点抽出機能、
前記抽出された第１特徴点と第２特徴点とに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおけるカメラの位置関係を示す座標変換パラメータを取得する第１取得機能、
前記座標変換パラメータに基づいて取得した前記カメラとの距離に基づいて、前記抽出された第１特徴点及び当該第１特徴点に対応する第２特徴点のうち、撮像時における前記カメラとの距離が近い第１特徴点と第２特徴点との組み合わせを選択する特徴点選択機能、
前記選択された第１特徴点と第２特徴点との組み合わせに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおける前記カメラの位置関係を示す座標変換パラメータを再取得する第２取得機能、
前記再取得された座標変換パラメータに基づいて、前記特徴点抽出機能が抽出した複数の第１特徴点及び第２特徴点の三次元情報を取得する三次元情報取得機能、
前記取得された複数の第１特徴点及び第２特徴点の三次元情報に基づいて、三次元モデルを作成する三次元モデル作成機能、を実現させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、被写体を適切に三次元モデリングするための三次元モデリング装置、三次元モデリング方法、ならびに、プログラムに関する。
【背景技術】
【０００２】
人間、動物、あるいは、美術品などの被写体を、右眼用撮像部と左目用撮像部とを備えるステレオカメラを用いて撮像し、撮像により得られた右眼用画像と左眼用画像（ステレオ画像）に基づいて、被写体の三次元モデルを作成する技術が知られている。このような技術は、例えば、特許文献１や非特許文献１に開示されている。
【０００３】
また、撮像位置を変えて複数回撮像したステレオ画像から複数の三次元モデルを作成し、作成した複数の三次元モデルを合成することで、より精度の高い三次元モデルを作成する技術が知られている。
【０００４】
また、単眼カメラを移動前後で平行ステレオになるように移動させると共に、移動の前後に単眼カメラで撮像した２つの画像を用いて、撮像された対象物の三次元画像を生成する技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第２９５３１５４号公報
【非特許文献】
【０００６】
【非特許文献１】佐藤  洋一  著、「デジタル画像処理」、ＣＧ−ＡＲＴＳ協会出版
【発明の概要】
【発明が解決しようとする課題】
【０００７】
複数の三次元モデルを精度良く合成するためには、各三次元モデルから抽出した複数の特徴点の三次元位置情報に基づいて、各三次元モデル間で撮像時のカメラ位置を推定する必要がある。同様に、単眼カメラで撮像した各画像から精度の良い三次元モデルを作成するためには、各画像から抽出した複数の特徴点の三次元位置情報に基づいて、各画像間で撮像時のカメラ位置を推定する必要がある。
【０００８】
しかしながら、特徴点の三次元位置情報には比較的ノイズが多く含まれている。従って、このようなノイズの多く含まれている特徴点の三次元位置情報に基づいて求めたカメラ位置も不正確になりがちであり、作成される三次元モデルは精度の面で問題があった。
【０００９】
本発明は、上記実情に鑑みてなされたものであり、精度良く三次元モデル作成をすることを特徴とする三次元モデリング装置、三次元モデリング方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため本発明の三次元モデリング装置は、
異なる位置で被写体を撮像することにより得られる第１画像と第２画像とを取得する画像取得手段と、
前記第１画像上から複数の第１特徴点を抽出するとともに、抽出した複数の第１特徴点に対応する前記第２画像上の複数の第２特徴点を抽出する特徴点抽出手段と、
前記抽出された第１特徴点と第２特徴点とに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおけるカメラの位置関係を示す座標変換パラメータを取得する第１取得手段と、
前記座標変換パラメータに基づいて取得した前記カメラとの距離に基づいて、前記抽出された第１特徴点及び当該第１特徴点に対応する第２特徴点のうち、撮像時における前記カメラとの距離が近い第１特徴点と第２特徴点との組み合わせを選択する特徴点選択手段と、
前記選択された第１特徴点と第２特徴点との組み合わせに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおける前記カメラの位置関係を示す座標変換パラメータを再取得する第２取得手段と、
前記再取得された座標変換パラメータに基づいて、前記特徴点抽出手段が抽出した複数の第１特徴点及び第２特徴点の三次元情報を取得する三次元情報取得手段と、
前記取得された複数の第１特徴点及び第２特徴点の三次元情報に基づいて、三次元モデルを作成する三次元モデル作成手段と、
を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、カメラとの距離が近い特徴点を優先的に用いて三次元モデルを作成する。従って、精度良く三次元モデルを作成することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】（Ａ）は、本発明の第１の実施形態に係るステレオカメラの前面の様子を表す外観図である。（Ｂ）は、本発明の第１の実施形態に係るステレオカメラの背面の様子を表す外観図である。
【図２】本発明の第１の実施形態に係るステレオカメラの構成を示すブロック図である。
【図３】本発明の第１の実施形態に係るステレオカメラの主要部の構成を示すブロック図である。
【図４】本発明の第１の実施形態に係るステレオカメラが実行する三次元モデリング処理を示すフローチャートである。
【図５】図４に示す三次元モデル生成処理を示すフローチャートである。
【図６】図４に示すカメラ位置推定処理を示すフローチャートである。
【図７】図６に示す特徴点選択処理を示すフローチャートである。
【図８】第１撮像部と第２撮像部とにおける透視投影モデルを示した図である。
【図９】図６に示す座標変換パラメータ取得処理を示すフローチャートである。
【図１０】図４に示す三次元モデル合成処理を示すフローチャートである。
【図１１】本発明の第２の実施形態に係るステレオカメラの構成を示すブロック図である。
【図１２】本発明の第２の実施形態に係るステレオカメラが実行する三次元モデリング処理を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の各実施形態について、図面を参照しながら詳細に説明する。本実施形態では、本発明をデジタル式のステレオカメラに適用した例を示す。なお、本発明は下記の実施形態及び図面によって限定されるものではない。また、本発明の要旨を変更しない範囲で下記の各実施形態及び図面に変更を加えることが出来る。また、図中同一または相当部分には同一符号を付す。
【００１４】
（第１の実施形態）
始めに、第１の実施形態について説明する。図１（Ａ）、（Ｂ）は、第１の実施形態に係るステレオカメラ１の外観図である。図１（Ａ）に示すように、このステレオカメラ１の前面には、レンズ１１１Ａと、レンズ１１１Ｂと、ストロボ発光部４００と、が設けられ、上面には、シャッターボタン３３１が設けられている。レンズ１１１Ａとレンズ１１１Ｂは、シャッターボタン３３１が上になる方向で、ステレオカメラ１を水平にした場合に、各々の中心位置が水平方向で同一線上となるように、所定の間隔を隔てて配置されている。ストロボ発光部４００は、必要に応じて被写体に向けてストロボ光を照射する。ストロボ発光部４００の構成については、後述する。シャッターボタン３３１は、ユーザからのシャッタ動作指示を受け付けるためのボタンである。
【００１５】
ステレオカメラ１の背面には、図１（Ｂ）に示すように、表示部３１０と、操作キー３３２と、電源キー３３３と、が設けられている。表示部３１０は、例えば、液晶表示装置等から構成され、ステレオカメラ１を操作するために必要な種々の画面や、撮影時のライブビュー画像、撮像画像等を表示するための電子ビューファインダとして機能する。
【００１６】
操作キー３３２は、十字キーや決定キー等を含み、モード切替や表示切替等、ユーザからの各種の操作を受け付ける。電源キー３３３は、ステレオカメラ１の電源のオン・オフをユーザから受け付けるためのボタンである。
【００１７】
図２は、ステレオカメラ１の電気的構成を示すブロック図である。図２に示すように、ステレオカメラ１は、第１撮像部１００Ａと、第２撮像部１００Ｂと、データ処理部２００と、インターフェース部３００と、ストロボ発光部４００と、を備える。なお、図面において、適宜、インターフェース部のことをＩ／Ｆ部と表記する。
【００１８】
第１撮像部１００Ａ及び第２撮像部１００Ｂは、それぞれ被写体を撮像する機能を担う部分である。ステレオカメラ１は、いわゆる複眼カメラであり、このように２つの撮像部を有する構成であるが、第１撮像部１００Ａと第２撮像部１００Ｂは同一の構成である。以下、第１撮像部１００Ａについての構成には参照符号の末尾に「Ａ」を付し、第２撮像部１００Ｂについての構成には参照符号の末尾に「Ｂ」を付す。
【００１９】
図２に示すように、第１撮像部１００Ａ（第２撮像部１００Ｂ）は、光学装置１１０Ａ（１１０Ｂ）、及び、イメージセンサ部１２０Ａ（１２０Ｂ）等から構成されている。光学装置１１０Ａ（１１０Ｂ）は、例えば、レンズ、絞り機構、シャッタ機構、等を含み、撮像に係る光学的動作を行う。即ち、光学装置１１０Ａ（１１０Ｂ）の動作により、入射光が集光されるとともに、焦点距離、絞り、シャッタスピード等といった、画角やピント、露出等にかかる光学的要素の調整がなされる。
【００２０】
なお、光学装置１１０Ａ（１１０Ｂ）に含まれるシャッタ機構はいわゆるメカニカルシャッタであり、イメージセンサの動作のみでシャッタ動作をおこなう場合には、光学装置１１０Ａ（１１０Ｂ）にシャッタ機構が含まれていなくてもよい。また、光学装置１１０Ａ（１１０Ｂ）は、後述する制御部２１０による制御によって動作する。
【００２１】
イメージセンサ部１２０Ａ（１２０Ｂ）は、光学装置１１０Ａ（１１０Ｂ）によって集光された入射光に応じた電気信号を生成する。イメージセンサ部１２０Ａ（１２０Ｂ）は、例えば、ＣＣＤ（Charge Coupled Device）やＣＭＯＳ（Complementally Metal Oxide Semiconductor）等のイメージセンサから構成され、光電変換を行うことで、受光した光の強度に応じた電気信号を生成し、生成した電気信号をデータ処理部２００に出力する。
【００２２】
なお、上述したように、第１撮像部１００Ａと第２撮像部１００Ｂとは同一の構成である。より詳細には、レンズの焦点距離ｆやＦ値、絞り機構の絞り範囲、イメージセンサのサイズや画素数、配列、画素面積等の各仕様が全て同一である。第１撮像部１００Ａと第２撮像部１００Ｂとを同時に動作させた場合、同一被写体について２つの画像（ペア画像）が撮像されるが、光軸位置は横方向で異なっている。
【００２３】
データ処理部２００は、第１撮像部１００Ａ及び第２撮像部１００Ｂによる撮像動作によって生成された電気信号を処理し、撮像画像を示すデジタルデータを生成すると共に、撮像画像に対する画像処理等を行う。データ処理部２００は、制御部２１０、画像処理部２２０、画像メモリ２３０、画像出力部２４０、記憶部２５０、外部記憶部２６０、等から構成される。
【００２４】
制御部２１０は、例えば、ＣＰＵ（Central Processing Unit）等のプロセッサや、ＲＡＭ（Random Access Memory）等の主記憶装置等から構成され、記憶部２５０等に格納されているプログラムを実行することで、ステレオカメラ１の各部を制御する。また、本実施形態では、所定のプログラムを実行することで、後述する三次元モデリング処理等にかかる機能が制御部２１０によって実現する。
【００２５】
画像処理部２２０は、例えば、ＡＤＣ（Analog-Digital Converter）、バッファメモリ、画像処理用のプロセッサ（いわゆる、画像処理エンジン）等から構成され、イメージセンサ部１２０Ａ及び１２０Ｂによって生成された電気信号に基づいて、撮像画像を示すデジタルデータを生成する。即ち、イメージセンサ部１２０Ａ（１２０Ｂ）から出力されたアナログ電気信号をＡＤＣがデジタル信号に変換して順次バッファメモリに格納すると、バッファされたデジタルデータに対し、画像処理エンジンが、いわゆる現像処理等を行うことで、画質の調整やデータ圧縮等を行う。
【００２６】
画像メモリ２３０は、例えば、ＲＡＭやフラッシュメモリ等の記憶装置から構成され、画像処理部２２０によって生成された撮像画像データや、制御部２１０によって処理される画像データ等を一時的に保存する。
【００２７】
画像出力部２４０は、例えば、ＲＧＢ信号を生成する回路等から構成され、画像メモリ２３０に格納された画像データをＲＧＢ信号等に変換して表示画面（表示部３１０等）に出力する。
【００２８】
記憶部２５０は、例えば、ＲＯＭ（Read Only Memory）やフラッシュメモリ等の記憶装置から構成され、ステレオカメラ１の動作に必要なプログラムやデータやカウンタ等を格納する。本実施形態では、制御部２１０等が実行する動作プログラムや、その実行時に必要となるパラメータや演算式等のデータが記憶部２５０に格納されているものとする。
【００２９】
外部記憶部２６０は、例えば、メモリカード等といった、ステレオカメラ１に着脱可能な記憶装置から構成され、ステレオカメラ１で撮像した画像データ、三次元モデルデータ等を格納する。
【００３０】
インターフェース部３００は、ステレオカメラ１と、ユーザあるいは外部装置との間のインターフェースに係る機能を担う処理部であり、表示部３１０、外部インターフェース部３２０、操作部３３０等から構成される。
【００３１】
表示部３１０は、上述したように、例えば、液晶表示装置等から構成され、ユーザがステレオカメラ１を操作するために必要な種々の画面や、撮影時のライブビュー画像、撮像画像等を表示出力する。本実施形態では、画像出力部２４０からの画像信号（ＲＧＢ信号）等に基づいて撮像画像等の表示出力が行われる。
【００３２】
外部インターフェース部３２０は、例えば、ＵＳＢ（Universal Serial Bus）コネクタやビデオ出力端子等から構成され、外部のコンピュータ装置への画像データの出力や外部モニタ装置への撮像画像の表示出力等を行う。
【００３３】
操作部３３０は、ステレオカメラ１の外面上に設けられている各種ボタン等によって構成され、ユーザによる操作に応じた入力信号を生成して制御部２１０に送出する。操作部３３０を構成するボタンには、上述したように、シャッターボタン３３１、操作キー３３２、電源キー３３３等が含まれる。
【００３４】
ストロボ発光部４００は、例えば、キセノンランプ（キセノンフラッシュ）により構成される。ストロボ発光部４００は、制御部２１０の制御に従って被写体にストロボ光を照射する。
【００３５】
以上、本発明を実現するために必要となるステレオカメラ１の構成について説明したが、ステレオカメラ１は、このほかにも、一般的なステレオカメラの機能を実現するための構成を備えているものとする。
【００３６】
ここで、図３を参照して、ステレオカメラ１の動作のうち、三次元モデリングに係る動作について説明する。
【００３７】
図３は、ステレオカメラ１の主要部の構成、つまり、三次元モデリングに係る動作を実現するための構成を示すブロック図である。
【００３８】
図３に示すように、ステレオカメラ１は、画像受付部１１、三次元モデル生成部１２、三次元モデル選択部１３、特徴点抽出部１４、特徴点選択部１５、座標変換パラメータ取得部１６、座標変換部１７、三次元モデル合成部１８を備える。これらの要素は、例えば、制御部２１０により構成される。
【００３９】
画像受付部１１は、一度の撮像により一組の画像を取得するステレオカメラ１を用いて、被写体を異なる角度から複数回撮像することにより得られる複数の画像の組の入力を受け付ける。
【００４０】
三次元モデル生成部１２は、受け付けられた複数の画像の組のそれぞれに基づいて、被写体の三次元モデルを複数生成する。
【００４１】
三次元モデル選択部１３は、生成された複数の三次元モデルの中から、被合成三次元モデルと当該被合成三次元モデルに合成する合成三次元モデルとを選択する。
【００４２】
特徴点抽出部１４は、選択された被合成三次元モデルから複数の第１特徴点を抽出するとともに、選択された合成三次元モデルから複数の第２特徴点を抽出する。
【００４３】
特徴点選択部１５は、抽出された複数の第１特徴点と第２特徴点の中から、ステレオカメラ１との距離が近い特徴点を優先的に選択する。
【００４４】
座標変換パラメータ取得部１６は、選択された複数の第１特徴点と複数の第２特徴点とに基づいて、当該合成三次元モデルの座標を当該被合成三次元モデルの座標系の座標に変換するための座標変換パラメータを取得する。
【００４５】
座標変換部１７は、取得された座標変換パラメータを用いて、合成三次元モデルの座標を被合成三次元モデルの座標系の座標に変換する。
【００４６】
三次元モデル合成部１８は、変換後の合成三次元モデルを当該被合成三次元モデルに合成する。
【００４７】
続いて、図４に示すフローチャートを用いて、ステレオカメラ１が実行する三次元モデリング処理について説明する。ステレオカメラ１は、操作キー３３２などの操作により、動作モードが三次元モデリングモードに設定されると、図４に示す三次元モデリング処理を実行する。
【００４８】
本実施形態においては、シャッターボタン３３１が押圧されている間、被写体の撮像、三次元モデルの生成、生成された三次元モデルの合成、合成後の三次元モデルのプレビュー表示、などが繰り返して実行される。ここで、最初の撮像により得られる三次元モデルであって、合成の基礎となる三次元モデルを、被合成三次元モデルという。また、２回目以降の撮像により得られる三次元モデルであって、被合成三次元モデルに合成される三次元モデルを、合成三次元モデルという。そして、三次元モデリング処理においては、撮像回数分の三次元モデルを合成して得られる三次元モデルが順次生成される。なお、被写体は、撮像毎に異なる角度から撮像されるものとする。
【００４９】
まず、制御部２１０は、シャッターボタン３３１が押圧されたか否かを判別する（ステップＳ１０１）。制御部２１０は、シャッターボタン３３１が押圧されていないと判別すると（ステップＳ１０１：ＮＯ）、再度、ステップＳ１０１の処理を実行する。一方、制御部２１０は、シャッターボタン３３１が押圧されたと判別すると（ステップＳ１０１：ＹＥＳ）、撮像回数カウンタＮを１に初期化する（ステップＳ１０２）。なお、撮像回数カウンタＮは、例えば、記憶部２５０に記憶されている。
【００５０】
続いて、制御部２１０は、第１撮像部１００Ａ、第２撮像部１００Ｂ、及び、画像処理部２２０等を制御して、被写体を撮像する（ステップＳ１０３）。制御部２１０により被写体が撮像されると、２枚の平行同位画像（ペア画像）が得られる。取得されたペア画像は、例えば、画像メモリ２３０に記憶される。なお、ペア画像のうち、第１撮像部１００Ａによる撮像により得られた画像を画像Ａ、第２撮像部１００Ｂによる撮像により得られた画像を画像Ｂとする。
【００５１】
続いて、制御部２１０は、画像メモリ２３０に記憶されているペア画像に基づいて、三次元モデル生成処理を実行する（ステップＳ１０４）。
【００５２】
ここで、図５に示すフローチャートを参照して、三次元モデル生成処理について説明する。なお、三次元モデル生成処理は、一組のペア画像に基づいて三次元モデルを生成する処理である。つまり、三次元モデル生成処理は、一つのカメラ位置から見た三次元モデルを生成する処理と考えることができる。
【００５３】
まず、制御部２１０は、特徴点の候補を抽出する（ステップＳ２０１）。例えば、制御部２１０は、画像Ａに対してコーナー検出を行う。コーナー検出においては、ハリスなどのコーナー特徴量が、所定閾値以上かつ所定半径内で最大になる点がコーナー点として選択される。従って、被写体の先端など、他の点に対して特徴のある点が特徴点として抽出される。
【００５４】
続いて、制御部２１０は、ステレオマッチングを実行し、画像Ａの特徴点に対応する点（対応点）を画像Ｂから探す（ステップＳ２０２）。具体的には、制御部２１０は、テンプレートマッチングにより類似度が所定閾値以上かつ最大のもの（相違度が所定閾値以下かつ最小のもの）を対応点とする。テンプレートマッチングには、例えば、残差絶対値和（ＳＡＤ）、残差平方和（ＳＳＤ）、正規化相関（ＮＣＣやＺＮＣＣ）、方向符号相関など、様々な既知の技法が利用可能である。
【００５５】
続いて、制御部２１０は、ステップＳ２０２において見つけられた対応点の視差情報、第１撮像部１００Ａおよび第２撮像部１００Ｂの画角、基線長などから、特徴点の三次元位置情報を算出する（ステップＳ２０３）。算出された特徴点の三次元位置情報は、例えば、記憶部２５０に記憶される。
【００５６】
続いて、制御部２１０は、ステップＳ２０３において算出された特徴点の三次元位置情報をもとにドロネー三角形分割を実行し、ポリゴン化を実行する（ステップＳ２０４）。生成されたポリゴン情報（三次元モデル）は、例えば、記憶部２５０に記憶される。制御部２１０は、ステップＳ２０４の処理を完了すると、三次元モデル生成処理を終了する。
【００５７】
なお、特徴点の数が少ないと、被写体の形状情報が欠損し、被写体の忠実な三次元モデルが得られない。一方、より多くの特徴点が得られるように、特徴点の候補を抽出する条件やステレオマッチングの条件を緩くすると、不適切な点が特徴点の候補に含まれたり、ステレオマッチングで誤対応が発生したりして、位置精度が低下、つまり、モデリング精度が悪化する。このため、モデリング精度の悪化を防ぎつつ、被写体の忠実な三次元モデルを得ることができるように、適切な数の特徴点を抽出する必要がある。
【００５８】
また、三次元モデル（三次元情報）は、例えば、以下の３つの式を用いて、ペア画像から求められる。ペア画像から三次元情報を取得する方法の詳細については、例えば、非特許文献１、デジタル画像処理、２００６年３月１日発行、ＣＧ−ＡＲＴＳ協会、に開示されている。
Ｘ＝（ｂ＊ｕ）／（ｕ−ｕ’）
Ｙ＝（ｂ＊ｖ）／（ｕ−ｕ’）
Ｚ＝（ｂ＊ｆ）／（ｕ−ｕ’）
ここで、ｂは、光学装置１１０Ａと１１０Ｂとの間の距離で、基線長と呼ばれる。（ｕ，ｖ）は、光学装置１１０Ａにより撮像された被写体の画像上の座標を示し、（ｕ’，ｖ’）は光学装置１１０Ｂにより撮像された被写体の画像上の座標を示す。上記３つの式における（ｕ−ｕ’）は、光学装置１１０Ａと光学装置１１０Ｂとから、同じ被写体を撮像したときに得られる２つの画像上における被写体の座標の差であり、視差と呼ばれる。ｆは、光学装置１１０Ａの焦点距離を示す。既に説明したとおり、光学装置１１０Ａと１１０Ｂとは同じ構成であり、焦点距離ｆも等しい。
【００５９】
図４に戻り、三次元モデル生成処理（ステップＳ１０４）が終了すると、制御部２１０は、撮像回数カウンタＮが１であるか否かを判別する（ステップＳ１０５）。ここで、撮像回数カウンタＮが１であることは、最初の撮像の直後であることを示す。制御部２１０は、撮像回数カウンタＮが１であると判別すると（ステップＳ１０５：ＹＥＳ）、ステップＳ１０４の処理により生成された三次元モデルを、被合成三次元モデルに設定する（ステップＳ１０６）。
【００６０】
一方、制御部２１０は、撮像回数カウンタＮが１ではない、つまり、最初の撮像の直後ではないと判別すると（ステップＳ１０５：ＮＯ）、カメラ位置推定処理を実行する（ステップＳ１０７）。ここで、カメラ位置推定処理の詳細について、図６のフローチャートを参照して説明する。なお、カメラ位置推定処理においては、最初の撮像時のステレオカメラ１の位置に対する、今回の撮像時のステレオカメラ１の相対的な位置が求められる。なお、この相対的な位置が求められることは、今回の撮像により得られた三次元モデルの座標を、最初の撮像により得られた三次元モデルの座標系の座標に変換する座標変換パラメータが求められることと同様である。
【００６１】
まず、制御部２１０は、被合成三次元モデルおよび合成三次元モデルの双方から、カメラ位置（座標変換パラメータ）算出に用いる三次元空間上の特徴点を選択する特徴点選択処理を実行する。（ステップＳ３０１）。ここで、特徴点選択処理について、図７のフローチャートを参照して説明する。
【００６２】
まず、制御部２１０は、被合成三次元モデルおよび合成三次元モデルの双方から三次元空間上の特徴点を取得する（ステップＳ４０１）。例えば、制御部２１０は、被合成三次元モデル（もしくは、合成三次元モデル）の特徴点のうち、コーナー強度が高く、ステレオマッチングの一致度が高いものを取得する。または、制御部２１０は、ペア画像間でエピ線拘束を考慮した上で、ＳＵＲＦ（Ｓｐｅｅｄｅｄ−Ｕｐ Ｒｏｂｕｓｔ Ｆｅａｔｕｒｅｓ）特徴量によるマッチングを実行することで、特徴点を取得するようにしてもよい。または、前述した三次元モデル作成処理（図５）で被合成三次元モデル（もしくは、合成三次元モデル）を作成した際に、ステップＳ２０１で抽出した特徴点の候補を、被合成三次元モデル（もしくは、合成三次元モデル）から取得してもよい。
【００６３】
続いて、制御部２１０は、被合成三次元モデルから取得した各特徴点を、ステレオカメラ１との距離に基づいて、２つの集合（クラスタ）に分類（クラスタリング）する（ステップＳ４０２）。第１撮像部１００Ａと第２撮像部１００Ｂとにおける透視投影モデルを図８に示す。この図において、特徴点とステレオカメラ１との距離は、第１撮像部１００Ａのレンズ主点であるＣ１を原点とする座標としたときのＺ軸方向の座標値として表せる。なお、クラスタリングの手法としては、例えば、判別分析法を用いればよい。判別分析法は、２つのクラスタ間の分散が最大になるようにクラスタリングする手法である。このようにステレオカメラ１との距離（Ｚ座標）に基づいてクラスタリングすることで、ステレオカメラ１に近い被写体に対応する特徴点から構成されるクラスタと、ステレオカメラ１から遠い背景に対応する特徴点から構成されるクラスタとが作成されることとなる。なお、最短距離法、最長距離法、群平均法などの他の手法を用いてクラスタリングしてもよい。
【００６４】
図７に戻り、続いて、制御部２１０は、合成三次元モデルに対しても、同様に、取得した各特徴点候補を、ステレオカメラ１との距離（図８でのＺ座標）に基づいて、２つの集合（クラスタ）に分類（クラスタリング）する（ステップＳ４０３）。
【００６５】
続いて、制御部２１０は、ステップＳ４０２とステップＳ４０３との処理でそれぞれクラスタリングした２つのクラスタのうち、ステレオカメラとの距離が近い方のクラスタに属する特徴点のみを、後述するカメラ位置（座標変換パラメータ）を算出するために用いる特徴点として選択する（ステップＳ４０４）。以上で、特徴点選択処理は終了する。特徴点選択処理により、カメラから近い特徴点が優先的に選択される。
【００６６】
図６に戻り、制御部２１０は、特徴点選択処理（ステップＳ３０１）が終了すると、該特徴点選択処理で選択された被合成三次元モデルの特徴点のうちから、３つの特徴点を選択する（ステップＳ３０２）。ここで、選択される３つの特徴点は、以下に示す（Ａ）および（Ｂ）の条件を満たすものが選択される。（Ａ）の条件は、３つの特徴点を頂点とする三角形の面積が小さすぎないことであり、（Ｂ）の条件は、３つの特徴点を頂点とする三角形が極端に鋭角な角を持たないことである。例えば、制御部２１０は、上記（Ａ）および（Ｂ）の条件を満たす３つの特徴点が選択されるまで、ランダムに３つの特徴点を選択する。なお、（Ａ）および（Ｂ）の条件を満たすか否かの判別は、三角形の面積や角度を所定の閾値と比較することで行えばよい。
【００６７】
続いて、制御部２１０は、特徴点選択処理（ステップＳ３０１）で選択された合成三次元モデルの特徴点を３つの頂点とする三角形の中から、ステップＳ３０２において選択された３つの特徴点を頂点とする三角形と合同な三角形を探索する（ステップＳ３０３）。例えば、３辺の長さがほぼ等しい場合、２つの三角形は合同であると判別される。ステップＳ３０３の処理は、合成三次元モデルの特徴点のうち、ステップＳ３０２において被合成三次元モデルから選択された３つの特徴点に対応すると考えられる３つの特徴点を探索する処理と考えることもできる。なお、制御部２１０は、特徴点やその周辺の色情報、またはＳＵＲＦ特徴量などで三角形の候補をあらかじめ絞ることで、探索を高速化してもよい。探索された三角形を示す情報（典型的には、当該三角形の頂点を構成する３つの特徴点の三次元空間上の座標を示す情報）は、例えば、記憶部２５０に記憶される。合同な三角形が複数ある場合、全ての三角形を示す情報が、記憶部２５０に記憶される。
【００６８】
続いて、制御部２１０は、ステップＳ３０３の探索において、少なくとも１つの合同な三角形が探索されたか否かを判別する（ステップＳ３０４）。なお、探索された合同な三角形が多すぎる場合、合同な三角形が探索されなかったものとみなしてもよい。
【００６９】
制御部２１０は、少なくとも１つの合同な三角形が探索されたと判別すると（ステップＳ３０４：ＹＥＳ）、合同な三角形を一つ選択する（ステップＳ３０５）。一方、制御部２１０は、合同な三角形が１つも探索されなかったと判別すると（ステップＳ３０４：ＮＯ）、ステップＳ３０２に処理を戻す。
【００７０】
ステップＳ３０５の処理を完了すると、制御部２１０は、座標変換パラメータ取得処理を実行する（ステップＳ３０６）。座標変換パラメータ取得処理については、図９に示すフローチャートを参照して、詳細に説明する。なお、座標変換パラメータ取得処理は、合成三次元モデルの座標を被合成三次元モデルの座標系の座標に変換するための、座標変換パラメータを取得する処理である。なお、座標変換パラメータ取得処理は、ステップＳ３０２において選択された３つの特徴点と、ステップＳ３０３において選択された合同な三角形と、の組み合わせ毎に実行される。ここで、座標変換パラメータは、式（１）および（２）で与えられる対応点ペア（特徴点ペア、頂点ペア）に対して、式（３）を満たす回転行列Ｒと移動ベクトルｔとを求める処理である。式（１）および（２）のｐとｐ’とは、各々のカメラ視線から見た三次元空間上の座標を持つ。なお、Ｎは、対応点ペアのペア数である。
【数１】
0005263437.tif 000002
【数２】
0005263437.tif 000003
【数３】
0005263437.tif 000004
【００７１】
まず、制御部２１０は、式（４）および（５）に示すように、対応点ペアを設定する（ステップＳ５０１）。ここで、ｃ１とｃ２とは、対応する列ベクトルが対応点の座標になる行列である。この行列から回転行列Ｒと移動ベクトルｔとを直接求めることは難しい。しかしながら、ｐとｐ’との分布がほぼ等しいことから、対応点の重心を合わせてから回転すれば、対応点を重ね合わせることができる。このことを利用して、回転行列Ｒと移動ベクトルｔとを求める。
【数４】
0005263437.tif 000005
【数５】
0005263437.tif 000006
【００７２】
つまり、制御部２１０は、式（６）および（７）を用いて、特徴点の重心である重心ｔ１およびｔ２を求める（ステップＳ５０２）。
【数６】
0005263437.tif 000007
【数７】
0005263437.tif 000008
【００７３】
次に、制御部２１０は、式（８）および（９）を用いて、特徴点の分布である分布ｄ１およびｄ２を求める（ステップＳ５０３）。ここで、上述したように、分布ｄ１と分布ｄ２との間には、式（１０）の関係がある。
【数８】
0005263437.tif 000009
【数９】
0005263437.tif 000010
【数１０】
0005263437.tif 000011
【００７４】
次に、制御部２１０は、式（１１）および（１２）を用いて、分布ｄ１およびｄ２の特異値分解を実行する（ステップＳ５０４）。特異値は、降順に並べられているものとする。ここで、記号＊は複素共役転置を表す。
【数１１】
0005263437.tif 000012
【数１２】
0005263437.tif 000013
【００７５】
なお、制御部２１０は、ステップＳ５０４で特異値分解した分布ｄ１およびｄ２が二次元以上（即ち、立体である）か否かを判別し、二次元以上でなければ、回転行列Ｒを求めることができないので、エラーとして処理は終了する。特異値は、分布の広がり具合に対応している。従って、最大の特異値とそれ以外の特異値との比率や、特異値の大きさを用いて分布が二次元以上であるか否かを判定すればよい。例えば、２番目に大きい特異値が、所定値以上かつ最大の特異値との比率が所定範囲内である場合に、分布が二次元以上と判定される。
【００７６】
続いて、制御部２１０は、関連付けＫを求める（ステップＳ５０５）。式（１０）〜（１２）から、回転行列Ｒは、式（１３）のように表すことができる。ここで、関連付けＫを、式（１４）のように定義すると、回転行列Ｒは、式（１５）のようになる。
【数１３】
0005263437.tif 000014
【数１４】
0005263437.tif 000015
【数１５】
0005263437.tif 000016
【００７７】
ここで、固有ベクトルＵは、分布ｄ１およびｄ２の固有ベクトルに相当し、関連付けＫにより関連付けられる。関連付けＫの要素は、固有ベクトルが対応する場合は１か−１が、そうでない場合は０が与えられる。ところで、分布ｄ１およびｄ２が等しいことから、特異値も等しい。つまり、Ｓも等しい。実際には、分布ｄ１と分布ｄ２とには誤差が含まれているので、誤差を丸める。以上を考慮すると、関連付けＫは、式（１６）のようになる。つまり、制御部２１０は、ステップＳ５０５において、式（１６）を計算する。
【数１６】
0005263437.tif 000017
【００７８】
続いて、制御部２１０は、回転行列Ｒを計算する（ステップＳ５０６）。具体的には、制御部２１０は、式（１５）と式（１６）とに基づいて、回転行列Ｒを計算する。計算により得られた回転行列Ｒを示す情報は、例えば、記憶部２５０に記憶される。
【００７９】
続いて、制御部２１０は、移動ベクトルｔを計算し（ステップＳ５０７）、座標変換パラメータ取得処理は終了する。分布ｄ１およびｄ２が二次元ではない場合（即ち、三次元である場合）、ｐとｐ’とは、式（１７）の関係を満たす。式（１７）を変形すると、式（１８）のようになる。式（１８）と式（３）との対応から、移動ベクトルｔは式（１９）のようになる。
【数１７】
0005263437.tif 000018
【数１８】
0005263437.tif 000019
【数１９】
0005263437.tif 000020
【００８０】
なお、分布ｄ１およびｄ２が二次元である場合（即ち、分布が平面である場合）、関連付けＫの一部が破壊されている可能性がある。従って、この場合、制御部２１０は、外積関係を確認する。なお、ここでいう外積関係の確認とは、回転行列Ｒの列ベクトル（および、行ベクトル）が座標系による制約を満たすことの確認である。そして、外積関係を検証した結果、問題があれば、制御部２１０は、関連付けＫを修正し、修正したＫを用いて回転行列Ｒを再計算してから、移動ベクトルｔを計算する。
【００８１】
図６に戻り、座標変換パラメータ取得処理（ステップＳ３０６）が終了すると、制御部２１０は、取得された座標変換パラメータを用いて、座標系を合わせる（ステップＳ３０７）。具体的には、式（３）を用いて、合成三次元モデルの特徴点の座標を、被合成三次元モデルの座標系の座標に変換する。
【００８２】
続いて、制御部２１０は、特徴点ペアを記憶する（ステップＳ３０８）。ここで、特徴点ペアは、被合成三次元モデルの特徴点と、座標変換後の合成三次元モデルの特徴点のうち、当該被合成三次元モデルの特徴点との距離が所定値以下かつ最近傍である特徴点と、から構成される。ここで、特徴点ペアの数が多いほど、ステップＳ３０２における３つの特徴点の選択、ならびに、ステップＳ３０５における合同な三角形の選択が適切であったと推定される。なお、特徴点ペアは、座標変換パラメータの取得条件（ステップＳ３０２における３つの特徴点の選択、ならびに、ステップＳ３０５における合同な三角形の選択）とともに、記憶部２５０などに記憶すればよい。
【００８３】
続いて、制御部２１０は、ステップＳ３０３において探索された全ての合同な三角形が、ステップＳ３０５において選択されたか否かを判別する（ステップＳ３０９）。
【００８４】
制御部２１０は、いずれかの合同な三角形が選択されていないと判別すると（ステップＳ３０９：ＮＯ）、ステップＳ３０５に処理を戻す。
【００８５】
一方、制御部２１０は、全ての合同な三角形が選択されたと判別すると（ステップＳ３０９：ＹＥＳ）、終了条件を満たすか否かを判別する（ステップＳ３１０）。本実施形態では、終了条件は、所定個数以上の条件について座標変換パラメータを取得したこととする。
【００８６】
制御部２１０は、終了条件を満たしていないと判別すると（ステップＳ３１０：ＮＯ）、ステップＳ３０２に処理を戻す。
【００８７】
一方、制御部２１０は、終了条件を満たしていると判別すると（ステップＳ３１０：ＹＥＳ）、最適な座標変換パラメータを特定し（ステップＳ３１１）、カメラ位置推定処理を終了する。具体的には、特徴点ペアが最も多く取得された座標変換パラメータが特定される。言い換えれば、ステップＳ３０２における３つの特徴点の選択、ならびに、ステップＳ３０５における合同な三角形の選択が最適であるものが特定される。なお、座標変換パラメータは、回転行列Ｒと移動ベクトルｔとである。なお、ステップＳ３１１では、特徴点ペアの平均距離が最も小さくなる座標変換パラメータが特定されてもよい。
【００８８】
図４に戻り、カメラ位置推定処理（ステップＳ１０７）が終了すると、制御部２１０は、三次元モデル合成処理を実行する（ステップＳ１０８）。三次元モデル合成処理については、図１０のフローチャートを参照して説明する。
【００８９】
まず、制御部２１０は、カメラ位置推定処理（ステップＳ１０７）で特定した座標変換パラメータを用いて、全ての三次元モデルを重ねる（ステップＳ６０１）。例えば、２回目の撮像の場合、１回目に撮像されたペア画像に基づいて生成された被合成三次元モデルに、２回目に撮像されたペア画像に基づいて生成された座標変換後の合成三次元モデルが重ねられる。また、３回目の撮像の場合、１回目に撮像されたペア画像に基づいて生成された被合成三次元モデルに、２回目に撮像されたペア画像に基づいて生成された座標変換後の合成三次元モデルが重ねられ、さらに、３回目に撮像されたペア画像に基づいて生成された座標変換後の合成三次元モデルが重ねられる。
【００９０】
続いて、制御部２１０は、各特徴点の重なり具合から信頼性の低い特徴点を除去する（ステップＳ６０２）。例えば、ある三次元モデルの注目特徴点に対する、他の三次元モデルの最近傍の特徴点の分布から、当該注目特徴点のマハラノビス距離が計算され、このマハラノビス距離が所定値以上の場合は当該注目特徴点の信頼性が低いと判別される。なお、注目特徴点からの距離が所定値以上の特徴点は、最近傍の特徴点に含めないようにしても良い。また、最近傍の特徴点の数が少ない場合、信頼性が低いものと見なされてもよい。なお、特徴点を実際に除去する処理は、全ての特徴点に対して、除去するか否かが判別された後に、実行されるものとする。
【００９１】
続いて、制御部２１０は、同一と見なせる特徴点を統合する（ステップＳ６０３）。例えば、所定距離以内の特徴点は、全て同一の特徴点を表すグループに属するものとして扱われ、これらの特徴点の重心が新たな特徴点とされる。
【００９２】
続いて、制御部２１０は、ポリゴンメッシュを再構成する（ステップＳ６０４）。つまりステップＳ６０３において求められた新たな特徴点に基づいて、ポリゴン（三次元モデル）が生成される。以上で、三次元モデル合成処理は終了する。
【００９３】
なお、三次元モデル生成処理（ステップＳ１０４）において生成された三次元モデルを示す情報（典型的には、特徴点の座標情報）は、シャッターボタン３３１が押圧されている間は、全撮像分（全視線分）保持され、基本的に変更されない。つまり、三次元モデル合成処理（ステップＳ１０８）においては、全撮像分の三次元モデルに基づいて、表示用もしくは保存用の高精細な三次元モデルを別途作成する処理である。
【００９４】
図４に戻り、三次元モデル合成処理（ステップＳ１０８）が終了すると、制御部２１０は、撮像回数カウンタＮの値を１つ増加させる（ステップＳ１０９）。
【００９５】
続いて、制御部２１０は、合成後の三次元モデルを表示する（ステップＳ１１０）。具体的には、制御部２１０は、三次元モデル合成処理（ステップＳ１０８）において取得された三次元モデルを、表示部３１０に表示する。これにより、ユーザは、現在までの撮像において、どの程度正確な三次元モデルが生成されているかを知ることができる。
【００９６】
続いて、制御部２１０は、シャッターボタン３３１が離されたか否かを判別する（ステップＳ１１１）。制御部２１０は、シャッターボタン３３１が離されたと判別すると（ステップＳ１１１：ＹＥＳ）、合成後の三次元モデルを外部記憶部２６０などに保存した後（ステップＳ１１２）、三次元モデリング処理を完了する。一方、制御部２１０は、シャッターボタン３３１が離されていないと判別すると（ステップＳ１１１：ＮＯ）、ステップＳ１０３に処理を戻す。
【００９７】
このように、第１の実施形態に係るステレオカメラ１によれば、複数の三次元モデルが合成されるので、形状情報の欠損を抑えつつ、高精度な三次元モデリングが可能になる。また、第１の実施形態に係るステレオカメラ１によれば、信頼性が低いと考えられる特徴点が除去され、さらに、同一と見なせる特徴点が統合されて、三次元モデリングがなされるため、適切な三次元モデリングが可能となる。さらに、本実施形態に係るステレオカメラ１は、同時に様々な角度から被写体を撮像する構成ではないため、小型化が可能である。また、ユーザは、表示部３１０に表示されたポリゴンを見ることで、どの程度正確な三次元モデルが生成されているかを知ることができる。従って、ユーザは、十分に三次元モデリングがなされたか、あるいは、十分な三次元モデリングのために、どのような角度から撮像する必要があるかなどを判断することができる。
【００９８】
さらに、本実施形態に係るステレオカメラ１によれば、各三次元モデルの特徴点からカメラ位置（座標変換パラメータ）を算出する際に、ステレオカメラ１に近い特徴点を優先的に用いて計算を行う。一般的に、三次元モデルの特徴点は、ステレオカメラ１に近い点ほど被写体上の点に対応し、位置精度が高い。従って、このようにすることで、より正確なカメラ位置を算出できるため、より高精度な三次元モデリングが可能となる。
【００９９】
（第２の実施形態）
第１の実施形態では、撮像部が２つあるステレオカメラ１を用いて三次元モデルを作成した。しかしながら、本発明は、撮像部が１つしか無い単眼カメラ２にも適用することが可能である。単眼カメラ２を用いて三次元モデルを作成する三次元モデリング処理について、図１１、図１２を参照して説明する。
【０１００】
図１１は、単眼カメラ２の電気的構成を示すブロック図である。前述したステレオカメラ１では第１撮像部１００Ａと第２撮像部１００Ｂとの２つの撮像部を備えるのに対し、単眼カメラ２は、１つの撮像部１００のみを備える。撮像部１００は、光学装置１１０とイメージサンサ部１２０とを備える。なお、単眼カメラ２のその他の構成は、ステレオカメラ１と同様であるため、同一の符号を付し、説明は省略する。
【０１０１】
続いて、図１２に示すフローチャートを用いて、単眼カメラ２が実行する三次元モデリング処理について説明する。単眼カメラ２は、操作キー３３２などの操作により、動作モードが三次元モデリングモードに設定されると、図１２に示す三次元モデリング処理を実行する。
【０１０２】
三次元モデリング処理が開始されると、まず、制御部２１０は、撮像部１００を制御して、被写体を撮像した画像（以下、第１画像という）を取得（撮像）する（ステップＳ７０１）。取得された画像は、例えば、画像メモリ２３０に記憶される。
【０１０３】
ステップＳ７０１の処理が完了した後、ユーザによって、単眼カメラ２は、第１画像を撮影した撮影位置と異なる撮影位置へ移動させられる。そして、所定時間が経過した後、又は、ユーザからの所定の指示操作に応答して、単眼カメラ２の制御部２１０は、ステップＳ７０１と同様に、撮像部１００を制御して、被写体を撮像した画像（以下、第２画像という）を取得（撮像）する（ステップＳ７０２）。取得された画像は、例えば、画像メモリ２３０に記憶される。
【０１０４】
続いて、制御部２１０は、対象物上の同じ点を表した第１画像上の特徴点と、第２画像上の特徴点とを対応させた点（対応点）を取得する（ステップＳ７０３）。具体的には、制御部２１０は、第１画像及び第２画像に対してハリスのコーナー検出法を用いることで、第１画像上の特徴点（以下、第１特徴点という）と、第２画像上の特徴点（以下、第２特徴点という）とを取得する。次に、第１特徴点と第２特徴点との間で、特徴点から所定の距離にある画像領域（特徴点近傍画像）に対するテンプレート照合を行うと共に、テンプレート照合で算出した照合度が所定の閾値以上であり、かつ最も高い値となる第１特徴点と第２特徴点とを対応させて、それぞれを対応点とする。或いは、ＳＵＲＦ特徴量によるマッチングを実行することで、対応点をとっても良い。
【０１０５】
続いて、制御部２１０は、取得した特徴点の対応から、下記式（２０）で表せる基礎行列Ｅを取得する（ステップＳ７０４）。なお、ｔは移動ベクトル、Ｒは回転行列であり、第２画像の画像座標系を第１画像の画像座標系に変換するための座標変換パラメータである。また、記号×は外積を表す。
【数２０】
0005263437.tif 000021
【０１０６】
具体的には、制御部２１０は、第１画像の撮像時における撮像部１００の主点と焦点との間の焦点距離を、撮像部１００のレンズ駆動状態から算出する。そして、制御部２１０は、各特徴点の画像位置と焦点距離と用いて、基礎行列Ｅを算出すればよい。
【０１０７】
続いて、制御部２１０は、基礎行列Ｅを分解して、移動ベクトルｔと回転行列Ｒとを取得する（ステップＳ７０５）。具体的には、制御部２１０は、行列「ｔｒａｎｓ（Ｅ）・Ｅ」の最小固有値の固有ベクトルを移動ベクトルｔとして算出する。なお、ｔｒａｎｓは、行列の転置を示す記号である。続いて、制御部２１０は、以下の式（２１）を用いて、算出対象とする回転行列Ｒ及び既に算出した移動ベクトルｔとの外積と、既に算出した基礎行列Ｅとの誤差が最小になるように、最小二乗法等を用いて回転行列Ｒを算出する。なお、式（２１）において、記号Σは行列の全要素の和を表し、記号⇒ｍｉｎは左辺の値を最小化することを表す。
【数２１】
0005263437.tif 000022
【０１０８】
続いて、制御部２１０は、第１画像、第２画像各々の、カメラ座標系への射影行列（カメラ射影パラメータ）を取得する（ステップＳ７０６）。第１画像のカメラ座標系への射影行列（カメラ射影パラメータ）をＰとすると、Ｐは、カメラ内部の状態を示すカメラ内部パラメータＡと、カメラの位置を示すカメラ外部パラメータ［Ｒ｜ｔ］との内積として式（２２）のように表せる。また、カメラ内部パラメータＡは、カメラの焦点距離ｆや、光軸位置（ｕ０，ｖ０）等により、式（２３）のように表せる。
【数２２】
0005263437.tif 000023
【数２３】
0005263437.tif 000024
【０１０９】
ここでは、第１画像の撮像位置を基準としたカメラ射影パラメータを求めるため、移動ベクトルｔと回転行列Ｒとは座標変換しないことを示すベクトル及び行列となる。従って、式（２２）は、式（２４）のように表せ、これを計算することで、第１画像のカメラ座標系への射影行列（カメラ射影パラメータ）Ｐを求めることができる。
【数２４】
0005263437.tif 000025
【０１１０】
また、第２画像のカメラ座標系への射影行列（カメラ射影パラメータ）Ｐ’は、ステップＳ７０５で取得した移動ベクトルｔと回転行列Ｒとを用いて、式（２５）のように求めることができる。なお、記号｜は行列の連結を示す記号である。
【数２５】
0005263437.tif 000026
【０１１１】
続いて、制御部２１０は、ステップＳ７０５で取得した移動ベクトルｔと回転行列Ｒ、及び、ステップＳ７０６で取得したカメラ射影パラメータＰ，Ｐ’とを用いて、各特徴点の三次元情報を取得する（ステップＳ７０７）。言い換えれば、この処理は、第１画像撮像時の単眼カメラ２の撮像位置を原点とする各特徴点の世界座標（Ｘ，Ｙ，Ｚ）を取得する処理である。
【０１１２】
例えば、第１画像上の特徴点の位置を（ｕ，ｖ）、この特徴点に対応する第２画像上の特徴点の位置を（ｕ’，ｖ’）とする。この場合、各特徴点の三次元情報（世界座標（Ｘ，Ｙ，Ｚ））は式（２６）を満たす。従って、最小２乗法等の手法を用いて、式（２６）から、世界座標（Ｘ，Ｙ，Ｚ）を、求めることが可能となる。そして、この計算を、ステップＳ７０３で特定した全ての対応する特徴点の組に対して行えばよい。
【数２６】
0005263437.tif 000027
なお、記号〜は両辺が定数倍の違いを許して等しいことを表す。
【０１１３】
続いて、制御部２１０は、このようにして三次元情報を取得した各特徴点を、単眼カメラ２との距離（世界座標系におけるＺ座標）に基づいて、２つの集合（クラスタ）に分類（クラスタリング）する（ステップＳ７０８）。クラスタリングの手法としては、例えば、判別分析法を用いればよい。
【０１１４】
続いて、制御部２１０は、クラスタリングした２つのクラスタのうち、単眼カメラ２との距離が近い方のクラスタを構成する特徴点を選択する（ステップＳ７０９）。
【０１１５】
続いて、制御部２１０は、ステップＳ７０９で選択した特徴点のみを用いて、再度、基礎行列Ｅを求め（ステップＳ７１０）、移動ベクトルｔと回転行列Ｒとを求め（ステップＳ７１１）、射影行列（カメラ射影パラメータ）を求める（ステップＳ７１２）。なお、ステップＳ７１０〜ステップＳ７１２の処理は、用いる特徴点が異なる（選別されている）以外は、ステップＳ７０４〜ステップＳ７０６の処理と実質的に同じである。
【０１１６】
続いて、制御部２１０は、ステップＳ７１１で取得した移動ベクトルｔと回転行列Ｒ、及び、ステップＳ７１２で取得したカメラ射影パラメータＰ，Ｐ’とを用いて、各特徴点の三次元情報を取得する（ステップＳ７１３）。なお、ここでは、ステップＳ７０９で選択した特徴点では無く、ステップＳ７０３で取得した全ての特徴点に対して、三次元情報を取得する。
【０１１７】
続いて、制御部２１０は、ステップＳ７１３で取得した各特徴点の三次元情報をもとにドロネー三角形分割を実行し、ポリゴン化を実行する（ステップＳ７１４）。生成されたポリゴン情報は、例えば、記憶部２５０に記憶される。以上で、単眼カメラ２による三次元モデル生成処理を終了する。
【０１１８】
このように、第２の実施形態に係る単眼カメラ２によれば、異なる位置で撮像された各画像から複数の特徴点を取得し、所得した特徴点からカメラ位置を推定し、推定したカメラ位置から特徴点の三次元情報を算出する。そして、取得した特徴点のうち、単眼カメラ２に近い特徴点を優先的に用いて、再度カメラ位置を推定し、再推定したカメラ位置から特徴点の三次元情報を再計算し、再計算された特徴点の三次元情報から三次元モデルを作成する。一般的に、撮像画像の特徴点は、単眼カメラ２に近い特徴点ほど被写体上の点に対応し、位置精度が高い。従って、このようにすることで、より正確なカメラ位置を算出できるため、より高精度な三次元モデリングが可能となる。
【０１１９】
（変形例）
なお、本発明は、上記各実施形態に限定されず、本発明の要旨を逸脱しない範囲での種々の変更は勿論可能である。
【０１２０】
例えば、第１の実施形態では、図７に示す特徴点選択処理において、ステップＳ４０１で特徴点を取得し、ステップＳ４０２及びステップＳ４０３で取得した特徴点をステレオカメラ１との距離に基づいて２つのクラスタにクラスタリングした。そして、ステップＳ４０４でステレオカメラ１に近い方のクラスタに属する特徴点を選択した。しかしながら、クラスタリングをせず、ステレオカメラ１との距離が所定の閾値以内の特徴点を選択してもよい。また、ステレオカメラ１との距離が所定の閾値以内の各特徴点に対してＲＡＮＳＡＣ（RANdom SAmple Consensus）法等のロバスト手法を適用して、選択する特徴点を決定してもよい。また、ステップＳ４０１で取得した特徴点のうち、ステレオカメラ１との距離が近いものから上位所定割合の特徴点を選択してもよい。また、ステップＳ４０１で取得した特徴点に対して、ステレオカメラ１との距離が近いほど高い評価値を示す所定の評価式を用いたＲＡＮＳＡＣ法等のロバスト推定法を適用して推定された特徴点を選択してもよい。要するに、ステレオカメラ１との距離が近い特徴点から優先的に特徴点を選択できればよい。
【０１２１】
また、第２実施形態の実施形態では、図１２に示す三次元モデリング処理において、ステップＳ７０８で特徴点をクラスタリングした。そして、ステップＳ７０９で単眼カメラ２に近い方のクラスタの特徴点を選択した。しかしながら、クラスタリングをせず、単眼カメラ２との距離が所定の閾値以内の特徴点を選択してもよい。また、単眼カメラ２との距離が所定の閾値以内の各特徴点に対してＲＡＮＳＡＣ法等のロバスト手法を適用して、選択する特徴点を決定してもよい。また、ステップＳ７０３で取得した特徴点のうち、単眼カメラ２との距離が近いものから上位所定割合の特徴点を選択してもよい。また、ステップＳ７０３で取得した特徴点に対して、単眼カメラ２との距離が近いほど高い評価値を示す所定の評価式を用いたＲＡＮＳＡＣ法等のロバスト手法を適用して、特徴点を選択してもよい。要するに、単眼カメラ２との距離が近い特徴点から優先的に特徴点を選択できればよい。
【０１２２】
また、既存のステレオカメラや単眼カメラ等を本発明に係る三次元モデリング装置として機能させることも可能である。即ち、上述した制御部２１０が実行したようなプログラムを既存のステレオカメラや単眼カメラ等に適用し、そのステレオカメラや単眼カメラ等のＣＰＵ等が当該プログラムを実行することで、当該ステレオカメラや単眼カメラ等を本発明に係る三次元モデリング装置として機能させることができる。
【０１２３】
このようなプログラムの配布方法は任意であり、例えば、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto Optical Disk）、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネットなどの通信ネットワークを介して配布してもよい。
【０１２４】
この場合、上述した本発明に係る機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などでは、アプリケーションプログラム部分のみを記録媒体等に格納してもよい。
【０１２５】
これまで、本発明のいくつかの実施形態を説明したが、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【０１２６】
（付記１）
一度の撮像により一組の画像を取得するステレオカメラを用いて、被写体を異なる角度から複数回撮像することにより得られる複数の画像の組の入力を受け付ける画像受付手段と、
前記受け付けられた複数の画像の組のそれぞれに基づいて、前記被写体の三次元モデルを複数生成する三次元モデル生成手段と、
前記生成された複数の三次元モデルの中から、被合成三次元モデルと当該被合成三次元モデルに合成する合成三次元モデルとを選択する三次元モデル選択手段と、
前記選択された被合成三次元モデルから複数の第１特徴点を抽出するとともに、前記選択された合成三次元モデルから複数の第２特徴点を抽出する特徴点抽出手段と、
前記抽出された複数の第１特徴点と第２特徴点のうち前記ステレオカメラとの距離が近い特徴点を優先的に選択する特徴点選択手段と、
前記選択された複数の第１特徴点と第２特徴点とに基づいて、当該合成三次元モデルの座標を当該被合成三次元モデルの座標系の座標に変換する座標変換パラメータを取得する座標変換パラメータ取得手段と、
前記取得された座標変換パラメータを用いて、前記合成三次元モデルの座標を前記被合成三次元モデルの座標系の座標に変換する座標変換手段と、
前記座標変換後の合成三次元モデルを前記被合成三次元モデルに合成する合成手段と、を備える、
ことを特徴とする三次元モデリング装置。
【０１２７】
（付記２）
前記特徴点選択手段は、前記ステレオカメラとの距離に基づいて、前記抽出された複数の第１特徴点と第２特徴点とを２つのクラスタにクラスタリングし、前記ステレオカメラとの距離が近い方のクラスタに属する第１特徴点と第２特徴点を選択する、
ことを特徴とする付記１に記載の三次元モデリング装置。
【０１２８】
（付記３）
前記特徴点選択手段は、前記抽出された複数の第１特徴点と第２特徴点とに、前記ステレオカメラとの距離が近いほど高い評価値を示す所定の評価式によるロバスト推定法を適用して推定された特徴点を選択する、
ことを特徴とする付記１又は２に記載の三次元モデリング装置。
【０１２９】
（付記４）
カメラを移動させて異なる位置で被写体を撮像することにより得られる第１画像と第２画像とを取得する画像取得手段と、
前記第１画像上から複数の第１特徴点を抽出するとともに、抽出した複数の第１特徴点に対応する前記第２画像上の複数の第２特徴点を抽出する特徴点抽出手段と、
前記抽出された第１特徴点と第２特徴点のうち、撮像時における前記カメラとの距離が近い第１特徴点と第２特徴点とを優先的に選択する特徴点選択手段と、
前記選択された第１特徴点と第２特徴点とに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおける前記カメラの位置関係を示す座標変換パラメータを取得する座標変換パラメータ取得手段と、
前記取得された座標変換パラメータに基づいて、前記特徴点抽出手段が抽出した複数の第１特徴点及び第２特徴点の三次元情報を取得する三次元情報取得手段と、
前記取得された複数の第１特徴点及び第２特徴点の三次元情報に基づいて、三次元モデルを作成する三次元モデル作成手段と、
を備えることを特徴とする三次元モデリング装置。
【０１３０】
（付記５）
三次元モデリング方法であって、
一度の撮像により一組の画像を取得するステレオカメラを用いて、被写体を異なる角度から複数回撮像することにより得られる複数の画像の組の入力を受け付ける画像受付ステップと、
前記受け付けられた複数の画像の組のそれぞれに基づいて、前記被写体の三次元モデルを複数生成する三次元モデル生成ステップと、
前記生成された複数の三次元モデルの中から、被合成三次元モデルと当該被合成三次元モデルに合成する合成三次元モデルとを選択する三次元モデル選択ステップと、
前記選択された被合成三次元モデルから複数の第１特徴点を抽出するとともに、前記選択された合成三次元モデルから複数の第２特徴点を抽出する特徴点抽出ステップと、
前記抽出された複数の第１特徴点と第２特徴点のうち前記ステレオカメラとの距離が近い特徴点を優先的に選択する特徴点選択ステップと、
前記選択された複数の第１特徴点と第２特徴点とに基づいて、当該合成三次元モデルの座標を当該被合成三次元モデルの座標系の座標に変換する座標変換パラメータを取得する座標変換パラメータ取得ステップと、
前記取得された座標変換パラメータを用いて、前記合成三次元モデルの座標を前記被合成三次元モデルの座標系の座標に変換する座標変換ステップと、
前記座標変換後の合成三次元モデルを前記被合成三次元モデルに合成する合成ステップと、を含む、
ことを特徴とする三次元モデリング方法。
【０１３１】
（付記６）
三次元モデリング方法であって、
カメラを移動させて異なる位置で被写体を撮像することにより得られる第１画像と第２画像とを取得する画像取得ステップと、
前記第１画像上から複数の第１特徴点を抽出するとともに、抽出した複数の第１特徴点に対応する前記第２画像上の複数の第２特徴点を抽出する特徴点抽出ステップと、
前記抽出された第１特徴点と第２特徴点のうち、撮像時における前記カメラとの距離が近い第１特徴点と第２特徴点とを優先的に選択する特徴点選択ステップと、
前記選択された第１特徴点と第２特徴点とに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおける前記カメラの位置関係を示す座標変換パラメータを取得する座標変換パラメータ取得ステップと、
前記取得された座標変換パラメータに基づいて、前記特徴点抽出ステップで抽出した複数の第１特徴点及び第２特徴点の三次元情報を取得する三次元情報取得ステップと、
前記取得された複数の第１特徴点及び第２特徴点の三次元情報に基づいて、三次元モデルを作成する三次元モデル作成ステップと、を含む、
ことを特徴とする三次元モデリング方法。
【０１３２】
（付記７）
コンピュータに、
一度の撮像により一組の画像を取得するステレオカメラを用いて、被写体を異なる角度から複数回撮像することにより得られる複数の画像の組の入力を受け付ける画像受付機能、
前記受け付けられた複数の画像の組のそれぞれに基づいて、前記被写体の三次元モデルを複数生成する三次元モデル生成機能、
前記生成された複数の三次元モデルの中から、被合成三次元モデルと当該被合成三次元モデルに合成する合成三次元モデルとを選択する三次元モデル選択機能、
前記選択された被合成三次元モデルから複数の第１特徴点を抽出するとともに、前記選択された合成三次元モデルから複数の第２特徴点を抽出する特徴点抽出機能、
前記抽出された複数の第１特徴点と第２特徴点のうち前記ステレオカメラとの距離が近い特徴点を優先的に選択する特徴点選択機能、
前記選択された複数の第１特徴点と第２特徴点とに基づいて、当該合成三次元モデルの座標を当該被合成三次元モデルの座標系の座標に変換する座標変換パラメータを取得する座標変換パラメータ取得機能、
前記取得された座標変換パラメータを用いて、前記合成三次元モデルの座標を前記被合成三次元モデルの座標系の座標に変換する座標変換機能、
前記座標変換後の合成三次元モデルを前記被合成三次元モデルに合成する合成機能、を実現させる、
ことを特徴とするプログラム。
【０１３３】
（付記８）
コンピュータに、
カメラを移動させて異なる位置で被写体を撮像することにより得られる第１画像と第２画像とを取得する画像取得機能、
前記第１画像上から複数の第１特徴点を抽出するとともに、抽出した複数の第１特徴点に対応する前記第２画像上の複数の第２特徴点を抽出する特徴点抽出機能、
前記抽出された第１特徴点と第２特徴点のうち、撮像時における前記カメラとの距離が近い第１特徴点と第２特徴点とを優先的に選択する特徴点選択機能、
前記選択された第１特徴点と第２特徴点とに基づいて、前記第１画像撮像時と前記第２画像撮像時とにおける前記カメラの位置関係を示す座標変換パラメータを取得する座標変換パラメータ取得機能、
前記取得された座標変換パラメータに基づいて、前記特徴点抽出機能が抽出した複数の第１特徴点及び第２特徴点の三次元情報を取得する三次元情報取得機能、
前記取得された複数の第１特徴点及び第２特徴点の三次元情報に基づいて、三次元モデルを作成する三次元モデル作成機能、を実現させる、
ことを特徴とするプログラム。
【符号の説明】
【０１３４】
１１・・・画像受付部、１２・・・三次元モデル生成部、１３・・・三次元モデル選択部、１４・・・特徴点抽出部、１５・・・特徴点選択部、１６・・・座標変換パラメータ取得部、１７・・・座標変換部、１８・・・三次元モデル合成部、１００Ａ・・・第１撮像部、１００Ｂ・・・第２撮像部、１１０Ａ，１１０Ｂ・・・光学装置、１１１Ａ，１１１Ｂ・・・レンズ、１２０Ａ，１２０Ｂ・・・イメージセンサ部、２００・・・データ処理部、２１０・・・制御部、２２０・・・画像処理部、２３０・・・画像メモリ、２４０・・・画像出力部、２５０・・・記憶部、２６０・・・外部記憶部、３００・・・インターフェース部、３１０・・・表示部、３２０・・・外部インターフェース部、３３０・・・操作部、３３１・・・シャッターボタン、３３２・・・操作キー、３３３・・・電源キー、４００・・・ストロボ発光部、１・・・ステレオカメラ
【図１】
0005263437.tif 000028
【図２】
0005263437.tif 000029
【図３】
0005263437.tif 000030
【図４】
0005263437.tif 000031
【図５】
0005263437.tif 000032
【図６】
0005263437.tif 000033
【図７】
0005263437.tif 000034
【図８】
0005263437.tif 000035
【図９】
0005263437.tif 000036
【図１０】
0005263437.tif 000037
【図１１】
0005263437.tif 000038
【図１２】
0005263437.tif 000039