撮像装置、長さ測定方法、及びプログラム
【課題】被写体上の指定された2点間の長さを精度良く測定する撮像装置を提供する。
【解決手段】被写体の指定された2点間の長さを測定する。撮像動作部100は、同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する。表示部310は、取得されたペア画像の少なくとも一方の画像に基づく表示画像を表示する。操作部330は、表示画像上における被写体上の始点及び終点の指定を受け付ける。制御部210は、1又は複数組のペア画像に基づいて、指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、被写体上の始点から終点までの長さを取得する。
【解決手段】被写体の指定された2点間の長さを測定する。撮像動作部100は、同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する。表示部310は、取得されたペア画像の少なくとも一方の画像に基づく表示画像を表示する。操作部330は、表示画像上における被写体上の始点及び終点の指定を受け付ける。制御部210は、1又は複数組のペア画像に基づいて、指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、被写体上の始点から終点までの長さを取得する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、被写体の長さを測定する撮像装置と測定方法、及びプログラムに関する。
【背景技術】
【0002】
2つの撮像部を備え立体視用の画像を撮像できる、いわゆるステレオカメラはよく知られている(例えば、特許文献1参照)。このステレオカメラでは、各撮像部によって同一の被写体を同時に撮像し、右眼用画像と左眼用画像との2種類の画像を取得する。
【0003】
また、複数のステレオカメラを同時に使用することで被写体までの距離を測定する技術が知られている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平6−3122号公報
【特許文献2】特開2004−093457号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、ステレオカメラ等の撮像装置を用いて、被写体上のユーザが指定した2点間の長さを精度良く測定する技術について、未だ有益な提案がなされていないのが実情である。
【0006】
本発明は上記実情に鑑みてなされたものであり、被写体上の指定された2点間の長さを精度良く測定する撮像装置と測定方法ならびにこれらをコンピュータ上で実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明の第1の観点に係る撮像装置は、
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部と、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示部と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付部と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得部と、を備えることを特徴とする。
【0008】
上記構成の撮像装置において、
前記長さ取得部は、前記指定された被写体上の始点及び終点が1組の前記ペア画像中に収まる場合、当該1組のペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ようにしてもよい。
【0009】
また、上記構成の撮像装置において、
前記長さ取得部は、前記指定された被写体上の始点及び終点が同じ組の前記ペア画像中に収まっていない場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における前記被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ようにしてもよい。
【0010】
また、上記構成の撮像装置において、
前記長さ取得部は、前記被写体までの距離と奥行きの精度との相対誤差を算出し、算出した相対誤差が所定値よりも大きい場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における、前記被写体より手前に存在する他の被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ようにしてもよい。
【0011】
上記の場合、前記相対誤差(ΔZ/Z)は、(p/B)・(Z/f)であり、Zは被写体までの距離、ΔZは奥行きの精度、Bは平行移動距離、fは焦点距離、pは撮像素子のピクセルサイズ、であることが好ましい。
【0012】
また、上記構成の撮像装置において、
前記表示部は、前記受付部によって受け付けられた被写体上の始点及び終点を、前記表示画像上に重畳して表示する、ようにしてもよい。
【0013】
上記目的を達成するために、本発明の第2の観点に係る長さ測定方法は、
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置で前記被写体上における指定された2点間の長さを測定する長さ測定方法であって、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示ステップと、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付ステップと、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得ステップと、を含むことを特徴とする。
【0014】
上記目的を達成するために、本発明の第3の観点に係るプログラムは、
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置を制御するコンピュータに、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示機能と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付機能と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得機能と、を実現させることを特徴とする。
【発明の効果】
【0015】
本発明によれば、被写体上の指定された2点間の長さを精度良く測定することが可能となる。
【図面の簡単な説明】
【0016】
【図1A】本発明の実施形態にかかるデジタルカメラの外観構成を示す図である。
【図1B】本発明の実施形態における平行ステレオの概念を示す図である。
【図2】本発明の実施形態にかかるデジタルカメラの構成を示すブロック図である。
【図3】長さ測定処理を説明するためのフローチャートである。
【図4】図3に示す「長さ測定処理」で実行される測定モード1の処理を説明するためのフローチャートである。
【図5】三次元モデル生成処理を説明するためのフローチャートである。
【図6】図3に示す「長さ測定処理」で実行される測定モード2の処理を説明するためのフローチャートである。
【図7】カメラ位置推定処理を説明するためのフローチャートである。
【図8】座標変換パラメータ取得処理を説明するためのフローチャートである。
【図9】測定モード3の処理を説明するためのフローチャートである。
【図10】本発明の被写体の測定開始位置及び測定終了位置の指定方法について説明するための図であり、(a)は、タッチパネルで指定する場合を示し、(b)は、十字ボタンを使用して指定する場合を示す。
【図11】測定モード3の処理について説明するための図である。
【図12】測定結果の表示例を示す図である。
【図13】位置情報の算出について説明するための図(その1)である。
【図14】位置情報の算出について説明するための図(その2)である。
【発明を実施するための形態】
【0017】
本発明にかかる実施形態を、図面を参照して以下に説明する。本実施形態では、本発明をデジタルスチルカメラ(以下、デジタルカメラという)によって実現した場合を例示する。図1Aに示す本実施形態に係るデジタルカメラ1は、一般的なデジタルカメラが有する機能を備えると共に、撮像にかかる構成を2つ備えた、いわゆる複眼カメラ(ステレオカメラ)である。デジタルカメラ1は、このようなステレオカメラとしての構成を、いわゆるコンパクトカメラとして実現したものである。
【0018】
デジタルカメラ1は、撮像した画像を用いて三次元モデリング(3Dモデリング)を行う機能を有している。この3Dモデリング機能において、本実施形態に係るデジタルカメラ1では、3Dモデリングに好適な撮像画像が得られるよう、パターン投影法が採用されている。
【0019】
図2は、デジタルカメラ1の構成を示すブロック図である。デジタルカメラ1は、図示するように、撮像動作部100、データ処理部200、インタフェース(I/F)部300、などにより構成される。
【0020】
撮像動作部100は、撮像時の動作を行う部分であり、図2に示すように、第1撮像部110、第2撮像部120、などから構成される。
【0021】
上述したように、デジタルカメラ1はステレオカメラ(複眼カメラ)であって、第1撮像部110と第2撮像部120とを有する。第1撮像部110と第2撮像部120の構成は同一である。
【0022】
以下、第1撮像部110についての構成には110番台の参照符号、第2撮像部120についての構成には120番台の参照符号をそれぞれ付す。これらの参照符号において1桁目が同値となるものは同一の構成であることを示す。
【0023】
図2に示すように、第1撮像部110(第2撮像部120)は、光学装置111(121)やイメージセンサ部112(122)などから構成される。
【0024】
光学装置111(121)は、例えば、レンズ、絞り機構、シャッタ機構、などを含み、撮像にかかる光学的動作を行う。即ち、光学装置111(121)の動作により、入射光が集光されるとともに、焦点距離、絞り、シャッタスピードなどといった、画角やピント、露出などにかかる光学的要素の調整がなされる。
【0025】
なお、光学装置111(121)に含まれるシャッタ機構はいわゆるメカニカルシャッタである。しかし、イメージセンサの動作のみでシャッタ動作を行う場合には、光学装置111(121)にシャッタ機構が含まれていなくてもよい。また、光学装置111(121)は、後述する制御部210による制御によって動作する。
【0026】
イメージセンサ部112(122)は、光学装置111(121)によって集光された入射光に応じた電気信号を生成する。イメージセンサ部112(122)は、例えば、CCD(Charge Coupled Device)やCMOS(Complementally Metal Oxide Semiconductor)などのイメージセンサから構成される。イメージセンサ部112(122)は、光電変換を行うことで、受光に応じた電気信号を発生してデータ処理部200に出力する。
【0027】
上述したように、第1撮像部110と第2撮像部120は同一の構成である。より詳細には、レンズの焦点距離fやF値、絞り機構の絞り範囲、イメージセンサのサイズや画素数、配列、画素面積などの各仕様がすべて同一である。
【0028】
図1Aに示すように、光学装置111が備えるレンズと光学装置121が備えるレンズは、デジタルカメラ1の外面における同一面上に設けられている。
【0029】
より詳細には、これらのレンズは、シャッタボタンが上になる方向でデジタルカメラ1を水平にした場合に、各々の中心位置が水平方向で同一線上となるように、所定の間隔を隔てて配置されている。つまり、第1撮像部110と第2撮像部120とを同時に動作させた場合、同一被写体についての2つの画像(ペア画像)が撮像される。この場合、各画像における光軸位置が横方向にずれている画像となる。
【0030】
より詳細には、第1撮像部110と第2撮像部120は、図1Bの透視射影モデルに示すような光学的特性が得られるように配置される。図1Bに示す透視射影モデルは、X、Y、Zからなる三次元直交座標系に基づくものであり、第1撮像部110についてのこの座標系を以下「カメラ座標」と呼ぶ。図1Bでは、第1撮像部110の光学中心を原点としたカメラ座標を示している。
【0031】
カメラ座標においては、Z軸をカメラの光学方向に一致する方向とし、X軸とY軸はそれぞれ画像の横方向と縦方向に平行する。ここで、光軸と画像座標面の交点を原点(即ち、光学中心)とし、イメージセンサの画素間隔を換算してカメラ座標と長さの単位を合わせた場合、第1撮像部110についての画像座標面で被写体A1を示す画像座標を(u1,v1)とし、第2撮像部120についての画像座標面では(u'1,v'1)とする。
【0032】
第1撮像部110と第2撮像部120は、それぞれの光軸が互いに平行(即ち、輻輳角が0)になり、かつ、第1撮像部110についての画像座標u軸と第2撮像部120についての画像座標u'軸が同一線上で同じ方向となるよう配置される(即ち、エピポーラ線が一致)。また、上述したように、第1撮像部110および第2撮像部120の焦点距離fや画素間隔は同じであり、光軸と画像座標面とが垂直に交わっている。このような構成は「平行ステレオ」と呼ばれ、デジタルカメラ1の第1撮像部110と第2撮像部120は平行ステレオの構成となっている。
【0033】
図2に戻り、デジタルカメラ1の構成説明を続ける。データ処理部200は、第1撮像部110および第2撮像部120による撮像動作によって生成された電気信号を処理し、撮像画像を示すデジタルデータを生成する。さらに、データ処理部200は、撮像画像に対する画像処理などを行う。図2に示すように、データ処理部200は、制御部210、画像処理部220、画像メモリ230、画像出力部240、記憶部250、外部記憶部260、などから構成される。
【0034】
制御部210は、例えば、CPU(Central Processing Unit)などのプロセッサや、RAM(Random Access Memory)などの主記憶装置などから構成される。制御部210は、後述する記憶部250などに格納されているプログラムを実行することで、デジタルカメラ1の各部を制御する。また、本実施形態では、所定のプログラムを実行することで、後述する各処理にかかる機能が制御部210によって実現される。本実施形態では、後述する各処理にかかる動作を制御部210が行うものとするが、制御部210とは独立した専用プロセッサなどが行うように構成してもよい。
【0035】
画像処理部220は、例えば、ADC(Analog-Digital Converter)、バッファメモリ、画像処理用のプロセッサ(いわゆる、画像処理エンジン)などから構成され、イメージセンサ部112および122によって生成された電気信号に基づいて、撮像画像を示すデジタルデータを生成する。
【0036】
即ち、ADCが、イメージセンサ部112(122)から出力されたアナログ電気信号をデジタル信号に変換して順次バッファメモリに格納する。そして、画像処理エンジンが、バッファされたデジタルデータに対し、いわゆる現像処理などを行う。これにより、画質の調整やデータ圧縮などが行われる。
【0037】
画像メモリ230は、例えば、RAMやフラッシュメモリなどの記憶装置から構成され、画像処理部220によって生成された撮像画像データや、制御部210によって処理される画像データなどを一時的に格納する。
【0038】
画像出力部240は、例えば、RGB信号の生成回路などから構成され、画像メモリ230に展開された画像データをRGB信号などに変換して表示画面(後述する表示部310など)に出力する。
【0039】
記憶部250は、例えば、ROM(Read Only Memory)やフラッシュメモリなどの記憶装置から構成され、デジタルカメラ1の動作に必要なプログラムやデータなどを格納する。本実施形態では、制御部210などが実行する動作プログラムや、動作プログラムの実行時に必要となるパラメータや演算式などのデータが記憶部250に格納されている。
【0040】
外部記憶部260は、例えば、メモリカードなどといった、デジタルカメラ1に着脱可能な記憶装置から構成され、デジタルカメラ1で撮像した画像データなどを格納する。
【0041】
I/F(インタフェース)部300は、デジタルカメラ1と、ユーザあるいは外部装置との間のインタフェースに係る機能を担う処理部である。I/F部300は、表示部310、外部I/F部320、操作部330などから構成される。
【0042】
表示部310は、例えば、液晶表示装置などから構成され、デジタルカメラ1を操作するために必要な種々の画面や、撮像時のライブビュー画像(ファインダ画像)、撮像画像、などを表示出力する。本実施形態では、表示部310は、画像出力部240からの画像信号(RGB信号)などに基づいて撮像画像等の表示出力を行う。
【0043】
外部I/F部320は、例えば、USB(Universal Serial Bus)コネクタやビデオ出力端子などから構成され、画像データなどを外部のコンピュータ装置へ転送したり、撮像画像などを外部のモニタ装置に表示出力したりする。
【0044】
操作部330は、デジタルカメラ1の外面上に設けられている各種ボタンなどによって構成され、デジタルカメラ1の使用者による操作に応じた入力信号を生成して制御部210に送出する。操作部330を構成するボタンには、例えば、シャッタ動作を指示するためのシャッタボタンや、デジタルカメラ1の動作モードを指定するためのモードボタン、各種の設定操作を行うための十字キーや機能ボタン、などが含まれる。
【0045】
以上、本発明を実現するために必要となるデジタルカメラ1の構成について説明したが、デジタルカメラ1は、このほかにも、一般的なデジタルカメラの機能を実現するための構成を備えているものとする。
【0046】
次に、図3〜図9に示すフローチャートを参照して、上記構成のデジタルカメラ1が実行する長さ測定処理について説明する。
【0047】
まず、制御部210は、ユーザにより測定開始位置が指定されたか否かを判別する(ステップS101)。制御部210は、測定開始位置が指定されていないと判別すると(ステップS101:NO)、再度ステップS101の処理を実行する。一方、制御部210は、測定開始位置が指定されたと判別すると(ステップS101:YES)、被写体の撮像を行う(ステップS102)。取得した撮像画像は、例えば、画像メモリ230に記憶される。
【0048】
ここで、測定開始位置及び測定終了位置の指定方法について、図10を参照して説明する。図10(a)は、表示部310のタッチパネル画面で、被写体400上における測定開始位置と測定終了位置をタッチすることにより指定する方法を示している。また、図10(b)は、画面上に表示されるポインタをデジタルカメラ1の十字ボタン331により動かして、被写体400上における測定開始位置と測定終了位置を指定する方法を示している。
【0049】
撮像後、制御部210は測定開始位置が一定以上動いたか否かを判別する(ステップS103)。例えば、ライブビュー画像(ファインダ画像)において、測定開始位置が前回の撮像時から所定ピクセル以上移動したか否かが判別される。なお、測定開始位置がライブビュー画像に含まれていない(即ち、測定開始位置がフレーミングアウトしている)場合には、ライブビュー画像中の被写体400の位置が前回の撮像時から所定ピクセル以上移動したか否かを判別する。このようにして判別した結果、このようにして判別した結果、測定開始位置が一定以上動いた場合(ステップS103:YES)、制御部210は、再度撮像を行う(ステップS104)。測定開始位置が一定以上動いていない場合(ステップS103:NO)又はステップS104の処理後、制御部210は、ユーザにより測定終了位置が指定されたかどうか判別する(ステップS105)。制御部210は、ユーザにより測定終了位置が指定されたと判別すると(ステップS105:YES)、ステップS106の処理を行う。
【0050】
一方、制御部210は、ユーザにより測定終了位置が指定されていないと判別すると(ステップS105:NO)、再度ステップS103の処理を実行する。
【0051】
制御部210は、ステップS105の処理を完了した後、撮像回数が1回であるか否かを判別する(ステップS106)。撮像回数が1回であると判別すると(ステップS106:YES)、測定モード1の処理を行う(ステップS107)。
【0052】
ここで、図4に示すフローチャートを参照して、測定モード1の処理について説明する。本実施形態のデジタルカメラ1は、被写体上における任意の2点間の長さを測定する。また、その際、デジタルカメラ1は、被写体までの距離や被写体の大きさに応じて測定方法(測定モード)を変えることができる。測定モード1の処理は、撮像位置から被写体までの距離が近く、且つ1組のペア画像中に被写体が収まる場合に対応した処理である。この処理では、1組のペア画像における視差により長さを測定する。まず、制御部210は、三次元モデル生成処理を実行する(ステップS201)。
【0053】
図5に示すフローチャートを参照して、三次元モデル生成処理について説明する。なお、三次元モデル生成処理は、1組のペア画像に基づいて三次元モデルを生成する処理である。つまり、三次元モデル生成処理は、一つのカメラ位置から見た三次元モデルを生成する処理と考えることができる。
【0054】
まず、制御部210は、特徴点の候補を抽出する(ステップS301)。例えば、制御部210は、画像A(第1撮像部110による撮像の結果得られた画像)に対してコーナー検出を行う。コーナー検出においては、ハリスなどのコーナー特徴量が、所定閾値以上かつ所定半径内で最大になる点がコーナー点として選択される。従って、被写体の先端など、他の点に対して特徴のある点が特徴点として抽出される。
【0055】
制御部210は、ステップS301の処理を完了すると、ステレオマッチングを実行することで、画像Aの特徴点に対応する点(対応点)を画像B(第2撮像部120による撮像の結果得られた画像)から探す(ステップS302)。具体的には、制御部210は、テンプレートマッチングにより類似度が所定閾値以上かつ最大のもの(相違度が所定閾値以下かつ最小のもの)を対応点とする。テンプレートマッチングには、例えば、残差絶対値和(SAD)、残差平方和(SSD)、正規化相関(NCCやZNCC)、方向符号相関など、様々な既知の技法が利用可能である。
【0056】
制御部210は、ステップS302の処理を完了すると、ステップS302において見つけられた対応点の視差情報、第1撮像部110および第2撮像部120の画角、基線長などから、特徴点の位置情報を算出する(ステップS303)。生成された特徴点の位置情報は、例えば、記憶部250に記憶される。
【0057】
ここで、位置情報の算出について、詳細に説明する。図13は、テンプレートマッチングを行った際の画像Aおよび画像Bの例を示している。図13において、画像Aの被写体400上の特徴点(u1,v1)についてのテンプレートマッチングにより画像Bの被写体400上でマッチングがとれた位置が(u'1,v'1)であることが示されている。本実施形態に係るデジタルカメラ1は、第1撮像部110と第2撮像部120の光軸が水平方向に異なる平行ステレオカメラであるため、画像Aと画像Bとの間には、マッチングがとれた位置についての視差(u’−u)が生じている。
【0058】
ここで、テンプレートマッチングによってマッチングのとれた(照合された)特徴点に対応する実際の位置を、図1Bに示したカメラ座標でA1(X1、Y1、Z1)とした場合、A1の座標(X1、Y1、Z1)はそれぞれ、以下の式(1)〜式(3)で表される。上述したように、(u1,v1)は、第1撮像部110についての画像座標面(即ち、対象画像)への射影点を示している。(u'1,v'1)は、第2撮像部120についての画像座標面(即ち、参照画像)への射影点を示している。また、bは、第1撮像部110および第2撮像部120の光軸間の長さ(基線長)を示す。
【0059】
[数1]
X1=(b*u1)/(u'1−u1) (1)
【0060】
[数2]
Y1=(b*v1)/(u'1−u1) (2)
【0061】
[数3]
Z1=(b*f)/(u'1−u1) (3)
【0062】
この式(3)は、三角測量の原理によって導かれるものである。三角測量の原理を、図14を参照して説明する。
【0063】
図14は、図1Bに示した平行ステレオ構成におけるカメラ座標を上から見た模式図である。第1撮像部110による視点がカメラ座標となっているので、位置A1のX軸方向の座標はカメラ座標上のX1で与えられ、この数値は図14に示した式(A)で求められる。
【0064】
一方、第2撮像部120からの視点におけるA1のX軸方向の座標は、基線長bとカメラ座標のX1との和であり、図14に示した式(B)で求められ、式(A)と式(B)から、上記式(3)が導き出される。
【0065】
制御部210は、ステップS303の処理を完了すると、ステップS303において算出された特徴点の位置情報を基にドロネー三角形分割を実行し、ポリゴン化を実行する(ステップS304)。生成されたポリゴン情報は、例えば、記憶部250に記憶される。制御部210は、ステップS304の処理を完了すると、三次元モデル生成処理を終了する。
【0066】
なお、特徴点の数が少ない場合、被写体の形状情報が欠損し、被写体の忠実な三次元モデルが得られない。一方、より多くの特徴点が得られるように、特徴点の候補を抽出する条件やステレオマッチングの条件を緩くした場合、次のような不都合が生じる。即ち、不適切な点が特徴点の候補に含まれたり、ステレオマッチングで誤対応が発生したりして、位置精度が低下、つまり、モデリング精度が悪化する。このため、モデリング精度の悪化を防ぎつつ、被写体の忠実な三次元モデルを得ることができるように、適切な数の特徴点が抽出されるようにする必要がある。
【0067】
図4のフローに戻って、制御部210は、相対誤差を計算する(ステップS202)。
【0068】
ここで、相対誤差について説明する。相対誤差は以下の式(4)を用いて求められる。
【0069】
[数4]
ΔZ/Z=(p/B)・(Z/f) (4)
【0070】
なお、Zは、被写体までの距離、ΔZは奥行きの精度、ΔZ/Zは相対誤差、Bは平行移動距離、fは焦点距離、pはイメージセンサのピクセルサイズを表す。すると、(p/B)が精度となり、これに倍率(Z/f)を乗算することで、相対誤差ΔZ/Zが求められる。
【0071】
制御部210は、相対誤差が基準値以下であると判別すると(ステップS203:YES)、測定モード1の処理を終了する。図3のフローに戻り、制御部210は、三次元モデル上の測定開始位置及び測定終了位置の座標より求めた長さと相対誤差を表示して(ステップS109)、処理を終了する。
【0072】
ステップS109では、例えば、図12に示すように、相対誤差が20%以下の場合、測定した長さとそのときの相対誤差が画面に表示される。
【0073】
なお、相対誤差の値によっては、もう少し近くで撮像することで精度を上げることができるなどのアドバイスをユーザに提示しても良い。
【0074】
図4のフローにおいて、制御部210は、相対誤差が基準値を超えると判別すると(ステップS203:NO)、測定方法を変えた測定を行う。このため、ユーザにその旨を通知し、カメラ位置をずらしてもう1回、被写体を撮像するように促す(ステップS204)。
【0075】
その後、ユーザにより測定終了位置が指定された場合(ステップS205:YES)、制御部210は、被写体の撮像を行う(ステップS206)。
【0076】
それから、制御部210は、三次元モデル生成処理を行う(ステップS207)。その後、制御部210は、測定モード3の処理を行って(ステップS208)、測定モード1の処理を終了する。測定モード3の処理については、後で詳述する。
【0077】
図3のフローに戻り、撮像回数が1回でない場合、つまり測定終了位置が記録されるまでに複数回の撮像が行われた場合(ステップS106:NO)、制御部210は、測定モード2の処理を行う(ステップS108)。
【0078】
ここで、図6のフローチャートを参照して、測定モード2の処理について説明する。測定モード2の処理は、撮像位置から被写体までの距離が近く、且つ被写体が大きくて1組のペア画像中に測定開始位置と測定終了位置が収まらない場合に対応した処理である。
【0079】
例として、1回目で被写体の測定開始位置を撮像し、カメラ位置をずらして2回目で測定終了位置を撮像した場合、撮像された2組のペア画像の中から少なくとも3つの同じ特徴点を検出する。そして、これらの特徴点から、最初のカメラ位置に対する相対的な位置を取得し、それにより測定開始位置と測定終了位置の座標を得て、三角測量の原理により長さを測定する。なお、2回の撮像では始点(測定開始位置)と終点(測定終了位置)が収まらない場合には、始点から終点までを追跡するようにして複数回撮像を行い、上記と同じようにして、始点と終点との間の長さを測定する。
【0080】
ここでは、2組のペア画像からカメラ位置を計算する方法について考える。まず、制御部210は、三次元モデル生成処理を行う(ステップS401)。制御部210は、ステップS401の処理を完了すると、カメラ位置推定処理を行う(ステップS402)。
【0081】
ここで、図7のフローチャートを参照して、カメラ位置推定処理について説明する。まず、制御部210は、被合成三次元モデルおよび合成三次元モデルの双方から三次元空間上の特徴点を取得する(ステップS501)。例えば、制御部210は、被合成三次元モデル(もしくは、合成三次元モデル)の特徴点のうち、コーナー強度が高く、ステレオマッチングの一致度が高いものを選択する。または、制御部210は、ペア画像間でエピ線拘束を考慮した上で、SURF(Speeded−Up Robust Features)特徴量によるマッチングを実行することで、特徴点を取得するようにしてもよい。ここで、最初の撮像により得られる三次元モデルであって、合成の基礎となる三次元モデルを被合成三次元モデルという。また、2回目以降の撮像により得られる三次元モデルであって、被合成三次元モデルに合成される三次元モデルを合成三次元モデルという。
【0082】
制御部210は、ステップS501の処理を完了すると、被合成三次元モデルから3つの特徴点を選択する(ステップS502)。ここで、選択される3つの特徴点は、以下に示す(A)および(B)の条件を満たすものが選択される。(A)の条件は、3つの特徴点を頂点とする三角形の面積が小さすぎないこと、即ち、予め決められた面積以上であることである。(B)の条件は、3つの特徴点を頂点とする三角形が極端に鋭角な角を持たないこと、即ち、予め決められた角度以上であることである。例えば、制御部210は、上記(A)および(B)の条件を満たす3つの特徴点が選択されるまで、ランダムに3つの特徴点を選択する。
【0083】
制御部210は、ステップS502の処理を完了すると、合成三次元モデルが有する3つの特徴点を3つの頂点とする三角形の中から、ステップS502において選択された3つの特徴点を3つの頂点とする三角形と合同な三角形を探索する(ステップS503)。例えば、3辺の長さがほぼ等しい場合、2つの三角形は合同であると判別される。ステップS503の処理は、合成三次元モデルの特徴点のうち、ステップS502において被合成三次元モデルから選択された3つの特徴点に対応すると考えられる3つの特徴点を探索する処理と考えることもできる。なお、制御部210は、特徴点や周辺の色情報、またはSURF特徴量などで三角形の候補をあらかじめ絞ることで、探索を高速化してもよい。探索された三角形を示す情報(典型的には、当該三角形の頂点を構成する3つの特徴点の三次元空間上の座標を示す情報)は、例えば、記憶部250に記憶される。合同な三角形が複数ある場合、全ての三角形を示す情報が、記憶部250に記憶される。
【0084】
制御部210は、ステップS503の処理を完了すると、ステップS503において、少なくとも1つの合同な三角形が探索されたか否かを判別する(ステップS504)。なお、探索された合同な三角形が多すぎる場合、合同な三角形が探索されなかったものとみなす仕様にしてもよい。
【0085】
制御部210は、少なくとも1つの合同な三角形が探索されたと判別すると(ステップS504:YES)、合同な三角形を一つ選択する(ステップS505)。一方、制御部210は、合同な三角形が1つも探索されなかったと判別すると(ステップS504:NO)、ステップS502に処理を戻す。
【0086】
制御部210は、ステップS505の処理を終了すると、座標変換パラメータ取得処理を実行する(ステップS506)。座標変換パラメータ取得処理については、図8に示すフローチャートを参照して、詳細に説明する。なお、座標変換パラメータ取得処理は、合成三次元モデルの座標を被合成三次元モデルの座標系の座標に変換するための、座標変換パラメータを取得する処理である。座標変換パラメータ取得処理は、ステップS502において選択された3つの特徴点と、ステップS505において選択された合同な三角形と、の組み合わせ毎に実行される。ここで、座標変換パラメータ取得処理は、以下の式(5)および式(6)で与えられる対応点ペア(特徴点ペア、頂点ペア)に対して、式(7)を満たす回転行列Rと移動ベクトルtとを求める処理である。式(5)および式(6)のpとp'とは、各々のカメラ視線から見た三次元空間上の座標を持つ。なお、Nは、対応点ペアのペア数である。
【0087】
【数5】
【0088】
【数6】
【0089】
【数7】
【0090】
まず、制御部210は、以下の式(8)および式(9)に示すように、対応点ペアを設定する(ステップS601)。ここで、c1とc2とは、対応する列ベクトルが対応点の座標になる行列である。この行列から回転行列Rと移動ベクトルtとを直接求めることは難しい。しかしながら、pとp'との分布がほぼ等しいことから、対応点の重心を合わせてから回転すれば、対応点を重ね合わせることができる。このことを利用して、回転行列Rと移動ベクトルtとを求める。
【0091】
【数8】
【0092】
【数9】
【0093】
つまり、制御部210は、以下の式(10)および式(11)を用いて、特徴点の重心である重心t1およびt2を求める(ステップS602)。
【0094】
【数10】
【0095】
【数11】
【0096】
次に、制御部210は、以下の式(12)および式(13)を用いて、特徴点の分布である分布d1およびd2を求める(ステップS603)。ここで、上述したように、分布d1と分布d2との間には、式(14)の関係がある。
【0097】
【数12】
【0098】
【数13】
【0099】
【数14】
【0100】
次に、制御部210は、以下の式(15)および式(16)を用いて、分布d1およびd2の特異値分解を実行する(ステップS604)。特異値は、降順に並べられているものとする。ここで、記号*は複素共役転置を表す。
【0101】
【数15】
【0102】
【数16】
【0103】
次に、制御部210は、分布d1およびd2が二次元以上であるか否かを判別する(ステップS605)。特異値は、分布の広がり具合に対応している。従って、最大の特異値とそれ以外の特異値との比率や、特異値の大きさを用いて判定がなされる。例えば、2番目に大きい特異値が、所定値以上かつ最大の特異値との比率が所定範囲内である場合に、分布が二次元以上と判定される。
【0104】
制御部210は、分布d1およびd2が二次元以上でないと判別すると(ステップS605:NO)、回転行列Rを求めることができないので、エラー処理を実行し(ステップS613)、座標変換パラメータ取得処理を終了する。
【0105】
一方、制御部210は、分布d1およびd2が二次元以上であると判別すると(ステップS605:YES)、関連付けKを求める(ステップS606)。式(14)〜(16)から、回転行列Rは、以下の式(17)のように表すことができる。ここで、関連付けKを、式(18)のように定義すると、回転行列Rは、式(19)のようになる。
【0106】
【数17】
【0107】
【数18】
【0108】
【数19】
【0109】
ここで、固有ベクトルUは、分布d1およびd2の固有ベクトルに相当し、関連付けKにより関連付けられる。関連付けKの要素は、固有ベクトルが対応する場合は1か−1が、そうでない場合は0が与えられる。ところで、分布d1およびd2が等しいことから、特異値も等しい。つまり、Sも等しい。実際には、分布d1と分布d2とには誤差が含まれているので、誤差を丸める。以上を考慮すると、関連付けKは、以下の式(20)のようになる。つまり、制御部210は、ステップS606において、式(20)を計算する。
【0110】
【数20】
【0111】
制御部210は、ステップS606の処理を完了すると、回転行列Rを計算する(ステップS607)。具体的には、制御部210は、式(19)と式(20)とに基づいて、回転行列Rを計算する。計算により得られた回転行列Rを示す情報は、例えば、記憶部250に記憶される。
【0112】
制御部210は、ステップS607の処理を完了すると、分布d1およびd2が二次元であるか否かを判別する(ステップS608)。例えば、最小の特異値が、所定値以下または最大の特異値との比率が所定範囲外である場合、分布d1およびd2は二次元であると判別される。
【0113】
制御部210は、分布d1およびd2が二次元ではないと判別すると(ステップS608:NO)、移動ベクトルtを計算する(ステップS614)。ここで、分布d1およびd2が二次元ではないことは、分布d1およびd2が三次元であることを示す。ここで、pとp'は、以下の式(21)の関係を満たす。式(21)を変形すると、式(22)のようになる。式(22)と式(7)との対応から、移動ベクトルtは、以下の式(23)のようになる。
【0114】
【数21】
【0115】
【数22】
【0116】
【数23】
【0117】
一方、制御部210は、分布d1およびd2が二次元であると判別すると(ステップS608:YES)、回転行列Rを検証し、回転行列Rが正常であるか否かを判別する(ステップS609)。分布が二次元の場合、特異値の1つが0になるので、式(18)から判るように、関連付けが不定になる。つまり、Kの3行3列目の要素が1か−1のどちらかであるが、式(20)では正しい符号を割り当てる保証がない。そこで、回転行列Rの検証が必要になる。検証は、回転行列Rの外積関係の確認や式(14)による検算などである。ここでいう外積関係の確認とは、回転行列Rの列ベクトル(および、行ベクトル)が座標系による制約を満たすことの確認である。右手座標系では、1列目のベクトルと2列目のベクトルの外積は、3列目のベクトルに等しくなる。
【0118】
制御部210は、回転行列Rが正常であると判別すると(ステップS609:YES)、移動ベクトルtを計算し(ステップS614)、座標変換パラメータ取得処理を終了する。
【0119】
一方、制御部210は、回転行列Rが正常ではないと判別すると(ステップS609:NO)、関連付けKを修正する(ステップS610)。ここでは、関連付けKの3行3列目の要素の符号を反転する。
【0120】
制御部210は、ステップS610の処理を完了すると、修正された関連付けKを用いて回転行列Rを計算する(ステップS611)。
【0121】
制御部210は、ステップS611の処理を完了すると、念のため、再度、回転行列Rが正常であるか否かを判別する(ステップS612)。
【0122】
制御部210は、回転行列Rが正常であると判別すると(ステップS612:YES)、移動ベクトルtを計算し(ステップS614)、座標変換パラメータ取得処理を終了する。
【0123】
一方、制御部210は、回転行列Rが正常ではないと判別すると(ステップS612:NO)、エラー処理を実行し(ステップS613)、座標変換パラメータ取得処理を終了する。
【0124】
図7のフローに戻り、制御部210は、座標変換パラメータ取得処理(ステップS506)を終了すると、取得された座標変換パラメータを用いて、座標系を合わせる(ステップS507)。具体的には、式(7)を用いて、合成三次元モデルの特徴点の座標を、被合成三次元モデルの座標系の座標に変換する。
【0125】
次に、制御部210は、ステップS507の処理を終了すると、特徴点ペアを記憶する(ステップS508)。ここで、特徴点ペアは、被合成三次元モデルの特徴点と、座標変換後の合成三次元モデルの特徴点のうち、当該被合成三次元モデルの特徴点との距離が所定値以下かつ最近傍である特徴点と、から構成される。ここで、特徴点ペアの数が多いほど、ステップS502における3つの特徴点の選択、ならびに、ステップS505における合同な三角形の選択が適切であったと推定される。なお、特徴点ペアは、座標変換パラメータの取得条件(ステップS502における3つの特徴点の選択、ならびに、ステップS505における合同な三角形の選択)とともに、記憶部250などに記憶される。
【0126】
制御部210は、ステップS508の処理を終了すると、ステップS503において探索された全ての合同な三角形が、ステップS505において選択されたか否かを判別する(ステップS509)。
【0127】
制御部210は、いずれかの合同な三角形が選択されていないと判別すると(ステップS509:NO)、ステップS505に処理を戻す。
【0128】
一方、制御部210は、全ての合同な三角形が選択されたと判別すると(ステップS509:YES)、終了条件を満たすか否かを判別する(ステップS510)。本実施形態では、終了条件は、所定個数以上の条件について座標変換パラメータを取得したこととする。
【0129】
制御部210は、終了条件を満たしていないと判別すると(ステップS510:NO)、ステップS502に処理を戻す。
【0130】
一方、制御部210は、終了条件を満たしていると判別すると(ステップS510:YES)、最適な座標変換パラメータを特定する(ステップS511)。具体的には、特徴点ペアが最も多く取得された座標変換パラメータが特定される。言い換えれば、ステップS502における3つの特徴点の選択、ならびに、ステップS505における合同な三角形の選択が最適であるものが特定される。なお、座標変換パラメータには、回転行列Rと移動ベクトルtとが含まれる。
【0131】
制御部210は、ステップS511の処理を終了すると、カメラ位置推定処理を終了する。
【0132】
図6のフローに戻り、制御部210は、相対誤差を計算する(ステップS403)。制御部210は、相対誤差が基準値以下であると判別すると(ステップS404:YES)、測定モード2の処理を終了する。そして、図3のフローに戻り、制御部210は、三次元モデル上の測定開始位置及び測定終了位置の座標より求めた長さと相対誤差を表示して、長さ測定処理を終了する(ステップS109)。
【0133】
一方、制御部210は、相対誤差が基準値を超えると判別すると(ステップS404:NO)、測定モード3の処理を行って(ステップS405)、測定モード2の処理を終了する。
【0134】
続いて、図9に示すフローチャートを参照して、測定モード3の処理について説明する。測定モード3の処理は、撮像位置から測定対象の被写体までの距離が遠い場合に対応した処理である。
【0135】
図11に示すように、測定モード3の処理では、制御部210は、測定対象の被写体400よりもデジタルカメラ1の近くにある被写体(基準被写体410)を用いてカメラ位置を求める。そして、その結果に基づいて、制御部210は、測定対象の被写体400における指定された長さを測定する。
【0136】
まず、制御部210は、基準被写体410に基づいて、カメラ位置推定処理を実行する(ステップS701)。
【0137】
図11を参照して説明する。制御部210は、最初のカメラ位置A、移動後のカメラ位置Bでのそれぞれの撮像において、デジタルカメラ1までの距離が近く、各々の位置で、デジタルカメラ1の2つのレンズの画角内に収まる被写体を基準被写体410として決定する。そして、制御部210は、撮像された2組のペア画像の中から、基準被写体410において、少なくとも3点の共通する特徴点を取得する。これにより、カメラ位置Aとカメラ位置Bの相対的な位置関係が取得できる。つまり、カメラ位置Aにおけるaレンズと、カメラ位置Bにおけるbレンズの主点位置関係を取得できる。次に、レンズ主点位置関係、つまりカメラ位置Aにおけるaレンズからの(回転行列、並進ベクトルからなる)運動パラメータより、カメラ射影パラメータを生成する。
【0138】
そして、以下の式(24)より、画像Aのカメラ射影パラメータP、画像Bのカメラ射影パラメータP'を求め、例えば、以下の式(25)及び式(26)から最小二乗法にて三次元情報(X1,Y1、Z1)を求める。
【0139】
【数24】
【0140】
[数25]
trans(u1,v1,1)〜P ・trans(X1,Y1,Z1,1) (25)
【0141】
[数26]
trans(u'1,v'1,1)〜P'・trans(X1,Y1,Z1,1)(26)
【0142】
なお、式(25)、式(26)において、画像座標、世界座標ともに同次座標で表しており、記号“〜”は、その両辺が定数倍の違いを許して等しいことを表す。
【0143】
これにより測定開始位置(始点)と測定終了位置(終点)の座標が得られ、測定対象の被写体400における指定された長さが求められる。
【0144】
なお、2回の撮像では、始点と終点が収まらない場合には始点から終点までを追跡するようにして複数回撮像を行い、上記と同じようにして、始点と終点との間の長さを測定する。
【0145】
制御部210は、カメラ位置推定処理を完了した後、そのときの相対誤差を計算し(ステップS702)、測定モード3の処理を終了する。
【0146】
制御部210は、測定モード3の処理を終了すると、図3のフローに戻って、三次元モデル上の測定開始位置及び測定終了位置の座標より求めた長さと相対誤差を表示して(ステップS109)、長さ測定処理を終了する。
【0147】
(変形例)
本発明は、上記実施形態に開示したものに限られない。
【0148】
上記実施形態では、制御部210は、相対誤差が基準値を超えている場合には測定モード3への移行を自動的に行った。しかし、直ちにモード移行するのではなく、制御部210は、使用者に対して、被写体400との撮像間距離を短くすることを促す旨のメッセージを表示部310を介して表示しても良い。即ち、使用者が被写体400に近づけば、デジタルカメラ1と被写体400との距離が短くなることによって測定精度が向上するからである。そして、メッセージを表示してから一定時間経過しても、相対誤差が基準値を超えている場合には、制御部210は、測定モード3の処理を行うようにすればよい。
【0149】
以上説明したように、本発明の上記実施形態に係るデジタルカメラ1は、ユーザがそれぞれ指定した被写体上の2点(始点及び終点)間の長さを、3Dモデリングによって得られた座標位置に基づいて求めることがきる。
【0150】
その際、デジタルカメラ1は、3つの測定モードから何れかの測定モードを適宜選択して、長さ測定処理を実行する。例えば、デジタルカメラ1から測定対象の被写体までの距離が短く、且つ、第1撮像部110及び第2撮像部120の同時撮像により得られた1組のペア画像中に始点及び終点が収まっている場合、測定モード1が選択される。測定モード1の処理では、1回の撮像結果に基づく被写体の3Dモデリングによって、上記2点間の長さが求まる。
【0151】
また、デジタルカメラ1から測定対象の被写体までの距離が短いが、被写体が大きく、上記の同時撮像により得られた1組のペア画像中に始点及び終点が収まらない場合、測定モード2が選択される。測定モード2の処理では、複数のカメラ位置での複数回の撮像結果に基づく被写体の3Dモデリングによって、上記2点間の長さが求まる。
【0152】
また、デジタルカメラ1から測定対象の被写体までの距離が長く、上記の同時撮像により得られた1組のペア画像中に始点及び終点が収まっているものの、被写体までの距離と奥行きの精度との相対誤差が所定値よりも大きい場合、測定モード3が選択される。測定モード3の処理では、複数のカメラ位置での複数回の撮像結果から、測定対象の被写体よりも手前に存在する他の被写体の画像部分に基づいて、カメラ位置(移動ベクトル、回転ベクトル)を算出する。これにより、デジタルカメラ1から測定対象の被写体までの距離が長い場合でも、上記2点間の長さを精度良く算出することができる。
【0153】
また、使用者によって指定された被写体上の始点及び終点を表示画像上に重畳して表示するので、使用者は、被写体上の始点及び終点の位置を容易に認識することができる。
【0154】
なお、本発明に係る撮像装置は、既存のステレオカメラ等を用いても実現可能である。即ち、上述した制御部210が実行したようなプログラムを既存のステレオカメラ等に適用し、そのステレオカメラ等のCPU等(コンピュータ)が当該プログラムを実行することで、当該ステレオカメラ等を本発明に係る撮像装置として機能させることができる。
【0155】
このようなプログラムの配布方法は任意であり、例えば、フレキシブルディスク、CD−ROM(Compact Disk Read−Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよい。あるいは、インターネット等の通信ネットワーク上のサーバ装置が有するディスク装置等に上記プログラムを格納しておき、かかるサーバ装置から、当該通信ネットワークを介して、上記プログラムを搬送波に重畳させて配信してもよい。
【0156】
この場合、上述した本発明に係る機能を、OS(オペレーティングシステム)とアプリケーションプログラムの分担、またはOSとアプリケーションプログラムとの協働により実現する場合などでは、アプリケーションプログラム部分のみを記録媒体等に格納してもよい。
【0157】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【0158】
以下に本願の当初の特許請求の範囲に記載された発明を付記する。
【0159】
(付記1)
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部と、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示部と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付部と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得部と、を備えることを特徴とする撮像装置。
【0160】
(付記2)
前記長さ取得部は、前記指定された被写体上の始点及び終点が1組の前記ペア画像中に収まる場合、当該1組のペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ことを特徴とする付記1に記載の撮像装置。
【0161】
(付記3)
前記長さ取得部は、前記指定された被写体上の始点及び終点が同じ組の前記ペア画像中に収まっていない場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における前記被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ことを特徴とする付記1又は2に記載の撮像装置。
【0162】
(付記4)
前記長さ取得部は、前記被写体までの距離と奥行きの精度との相対誤差を算出し、算出した相対誤差が所定値よりも大きい場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における、前記被写体より手前に存在する他の被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ことを特徴とする付記1乃至3の何れかに記載の撮像装置。
【0163】
(付記5)
前記相対誤差(ΔZ/Z)は、(p/B)・(Z/f)であり、Zは被写体までの距離、ΔZは奥行きの精度、Bは平行移動距離、fは焦点距離、pは撮像素子のピクセルサイズ、である、ことを特徴とする付記4に記載の撮像装置。
【0164】
(付記6)
前記表示部は、前記受付部によって受け付けられた被写体上の始点及び終点を、前記表示画像上に重畳して表示する、ことを特徴とする付記1乃至5の何れかに記載の撮像装置。
【0165】
(付記7)
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置で前記被写体上における指定された2点間の長さを測定する長さ測定方法であって、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示ステップと、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付ステップと、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得ステップと、を含むことを特徴とする長さ測定方法。
【0166】
(付記8)
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置を制御するコンピュータに、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示機能と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付機能と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得機能と、を実現させることを特徴とするプログラム。
【符号の説明】
【0167】
1…デジタルカメラ、110…第1撮像部、111…光学装置、112…イメージセンサ部、120…第2撮像部、121…光学装置、122…イメージセンサ部、200…データ処理部、210…制御部、220…画像処理部、230…画像メモリ、240…画像出力部、250…記憶部、260…外部記憶部、300…インタフェース(I/F)部、310…表示部、331…十字ボタン、320…外部インタフェース(I/F)部、330…操作部、400…被写体、410…基準被写体
【技術分野】
【0001】
本発明は、被写体の長さを測定する撮像装置と測定方法、及びプログラムに関する。
【背景技術】
【0002】
2つの撮像部を備え立体視用の画像を撮像できる、いわゆるステレオカメラはよく知られている(例えば、特許文献1参照)。このステレオカメラでは、各撮像部によって同一の被写体を同時に撮像し、右眼用画像と左眼用画像との2種類の画像を取得する。
【0003】
また、複数のステレオカメラを同時に使用することで被写体までの距離を測定する技術が知られている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平6−3122号公報
【特許文献2】特開2004−093457号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、ステレオカメラ等の撮像装置を用いて、被写体上のユーザが指定した2点間の長さを精度良く測定する技術について、未だ有益な提案がなされていないのが実情である。
【0006】
本発明は上記実情に鑑みてなされたものであり、被写体上の指定された2点間の長さを精度良く測定する撮像装置と測定方法ならびにこれらをコンピュータ上で実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明の第1の観点に係る撮像装置は、
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部と、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示部と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付部と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得部と、を備えることを特徴とする。
【0008】
上記構成の撮像装置において、
前記長さ取得部は、前記指定された被写体上の始点及び終点が1組の前記ペア画像中に収まる場合、当該1組のペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ようにしてもよい。
【0009】
また、上記構成の撮像装置において、
前記長さ取得部は、前記指定された被写体上の始点及び終点が同じ組の前記ペア画像中に収まっていない場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における前記被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ようにしてもよい。
【0010】
また、上記構成の撮像装置において、
前記長さ取得部は、前記被写体までの距離と奥行きの精度との相対誤差を算出し、算出した相対誤差が所定値よりも大きい場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における、前記被写体より手前に存在する他の被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ようにしてもよい。
【0011】
上記の場合、前記相対誤差(ΔZ/Z)は、(p/B)・(Z/f)であり、Zは被写体までの距離、ΔZは奥行きの精度、Bは平行移動距離、fは焦点距離、pは撮像素子のピクセルサイズ、であることが好ましい。
【0012】
また、上記構成の撮像装置において、
前記表示部は、前記受付部によって受け付けられた被写体上の始点及び終点を、前記表示画像上に重畳して表示する、ようにしてもよい。
【0013】
上記目的を達成するために、本発明の第2の観点に係る長さ測定方法は、
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置で前記被写体上における指定された2点間の長さを測定する長さ測定方法であって、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示ステップと、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付ステップと、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得ステップと、を含むことを特徴とする。
【0014】
上記目的を達成するために、本発明の第3の観点に係るプログラムは、
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置を制御するコンピュータに、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示機能と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付機能と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得機能と、を実現させることを特徴とする。
【発明の効果】
【0015】
本発明によれば、被写体上の指定された2点間の長さを精度良く測定することが可能となる。
【図面の簡単な説明】
【0016】
【図1A】本発明の実施形態にかかるデジタルカメラの外観構成を示す図である。
【図1B】本発明の実施形態における平行ステレオの概念を示す図である。
【図2】本発明の実施形態にかかるデジタルカメラの構成を示すブロック図である。
【図3】長さ測定処理を説明するためのフローチャートである。
【図4】図3に示す「長さ測定処理」で実行される測定モード1の処理を説明するためのフローチャートである。
【図5】三次元モデル生成処理を説明するためのフローチャートである。
【図6】図3に示す「長さ測定処理」で実行される測定モード2の処理を説明するためのフローチャートである。
【図7】カメラ位置推定処理を説明するためのフローチャートである。
【図8】座標変換パラメータ取得処理を説明するためのフローチャートである。
【図9】測定モード3の処理を説明するためのフローチャートである。
【図10】本発明の被写体の測定開始位置及び測定終了位置の指定方法について説明するための図であり、(a)は、タッチパネルで指定する場合を示し、(b)は、十字ボタンを使用して指定する場合を示す。
【図11】測定モード3の処理について説明するための図である。
【図12】測定結果の表示例を示す図である。
【図13】位置情報の算出について説明するための図(その1)である。
【図14】位置情報の算出について説明するための図(その2)である。
【発明を実施するための形態】
【0017】
本発明にかかる実施形態を、図面を参照して以下に説明する。本実施形態では、本発明をデジタルスチルカメラ(以下、デジタルカメラという)によって実現した場合を例示する。図1Aに示す本実施形態に係るデジタルカメラ1は、一般的なデジタルカメラが有する機能を備えると共に、撮像にかかる構成を2つ備えた、いわゆる複眼カメラ(ステレオカメラ)である。デジタルカメラ1は、このようなステレオカメラとしての構成を、いわゆるコンパクトカメラとして実現したものである。
【0018】
デジタルカメラ1は、撮像した画像を用いて三次元モデリング(3Dモデリング)を行う機能を有している。この3Dモデリング機能において、本実施形態に係るデジタルカメラ1では、3Dモデリングに好適な撮像画像が得られるよう、パターン投影法が採用されている。
【0019】
図2は、デジタルカメラ1の構成を示すブロック図である。デジタルカメラ1は、図示するように、撮像動作部100、データ処理部200、インタフェース(I/F)部300、などにより構成される。
【0020】
撮像動作部100は、撮像時の動作を行う部分であり、図2に示すように、第1撮像部110、第2撮像部120、などから構成される。
【0021】
上述したように、デジタルカメラ1はステレオカメラ(複眼カメラ)であって、第1撮像部110と第2撮像部120とを有する。第1撮像部110と第2撮像部120の構成は同一である。
【0022】
以下、第1撮像部110についての構成には110番台の参照符号、第2撮像部120についての構成には120番台の参照符号をそれぞれ付す。これらの参照符号において1桁目が同値となるものは同一の構成であることを示す。
【0023】
図2に示すように、第1撮像部110(第2撮像部120)は、光学装置111(121)やイメージセンサ部112(122)などから構成される。
【0024】
光学装置111(121)は、例えば、レンズ、絞り機構、シャッタ機構、などを含み、撮像にかかる光学的動作を行う。即ち、光学装置111(121)の動作により、入射光が集光されるとともに、焦点距離、絞り、シャッタスピードなどといった、画角やピント、露出などにかかる光学的要素の調整がなされる。
【0025】
なお、光学装置111(121)に含まれるシャッタ機構はいわゆるメカニカルシャッタである。しかし、イメージセンサの動作のみでシャッタ動作を行う場合には、光学装置111(121)にシャッタ機構が含まれていなくてもよい。また、光学装置111(121)は、後述する制御部210による制御によって動作する。
【0026】
イメージセンサ部112(122)は、光学装置111(121)によって集光された入射光に応じた電気信号を生成する。イメージセンサ部112(122)は、例えば、CCD(Charge Coupled Device)やCMOS(Complementally Metal Oxide Semiconductor)などのイメージセンサから構成される。イメージセンサ部112(122)は、光電変換を行うことで、受光に応じた電気信号を発生してデータ処理部200に出力する。
【0027】
上述したように、第1撮像部110と第2撮像部120は同一の構成である。より詳細には、レンズの焦点距離fやF値、絞り機構の絞り範囲、イメージセンサのサイズや画素数、配列、画素面積などの各仕様がすべて同一である。
【0028】
図1Aに示すように、光学装置111が備えるレンズと光学装置121が備えるレンズは、デジタルカメラ1の外面における同一面上に設けられている。
【0029】
より詳細には、これらのレンズは、シャッタボタンが上になる方向でデジタルカメラ1を水平にした場合に、各々の中心位置が水平方向で同一線上となるように、所定の間隔を隔てて配置されている。つまり、第1撮像部110と第2撮像部120とを同時に動作させた場合、同一被写体についての2つの画像(ペア画像)が撮像される。この場合、各画像における光軸位置が横方向にずれている画像となる。
【0030】
より詳細には、第1撮像部110と第2撮像部120は、図1Bの透視射影モデルに示すような光学的特性が得られるように配置される。図1Bに示す透視射影モデルは、X、Y、Zからなる三次元直交座標系に基づくものであり、第1撮像部110についてのこの座標系を以下「カメラ座標」と呼ぶ。図1Bでは、第1撮像部110の光学中心を原点としたカメラ座標を示している。
【0031】
カメラ座標においては、Z軸をカメラの光学方向に一致する方向とし、X軸とY軸はそれぞれ画像の横方向と縦方向に平行する。ここで、光軸と画像座標面の交点を原点(即ち、光学中心)とし、イメージセンサの画素間隔を換算してカメラ座標と長さの単位を合わせた場合、第1撮像部110についての画像座標面で被写体A1を示す画像座標を(u1,v1)とし、第2撮像部120についての画像座標面では(u'1,v'1)とする。
【0032】
第1撮像部110と第2撮像部120は、それぞれの光軸が互いに平行(即ち、輻輳角が0)になり、かつ、第1撮像部110についての画像座標u軸と第2撮像部120についての画像座標u'軸が同一線上で同じ方向となるよう配置される(即ち、エピポーラ線が一致)。また、上述したように、第1撮像部110および第2撮像部120の焦点距離fや画素間隔は同じであり、光軸と画像座標面とが垂直に交わっている。このような構成は「平行ステレオ」と呼ばれ、デジタルカメラ1の第1撮像部110と第2撮像部120は平行ステレオの構成となっている。
【0033】
図2に戻り、デジタルカメラ1の構成説明を続ける。データ処理部200は、第1撮像部110および第2撮像部120による撮像動作によって生成された電気信号を処理し、撮像画像を示すデジタルデータを生成する。さらに、データ処理部200は、撮像画像に対する画像処理などを行う。図2に示すように、データ処理部200は、制御部210、画像処理部220、画像メモリ230、画像出力部240、記憶部250、外部記憶部260、などから構成される。
【0034】
制御部210は、例えば、CPU(Central Processing Unit)などのプロセッサや、RAM(Random Access Memory)などの主記憶装置などから構成される。制御部210は、後述する記憶部250などに格納されているプログラムを実行することで、デジタルカメラ1の各部を制御する。また、本実施形態では、所定のプログラムを実行することで、後述する各処理にかかる機能が制御部210によって実現される。本実施形態では、後述する各処理にかかる動作を制御部210が行うものとするが、制御部210とは独立した専用プロセッサなどが行うように構成してもよい。
【0035】
画像処理部220は、例えば、ADC(Analog-Digital Converter)、バッファメモリ、画像処理用のプロセッサ(いわゆる、画像処理エンジン)などから構成され、イメージセンサ部112および122によって生成された電気信号に基づいて、撮像画像を示すデジタルデータを生成する。
【0036】
即ち、ADCが、イメージセンサ部112(122)から出力されたアナログ電気信号をデジタル信号に変換して順次バッファメモリに格納する。そして、画像処理エンジンが、バッファされたデジタルデータに対し、いわゆる現像処理などを行う。これにより、画質の調整やデータ圧縮などが行われる。
【0037】
画像メモリ230は、例えば、RAMやフラッシュメモリなどの記憶装置から構成され、画像処理部220によって生成された撮像画像データや、制御部210によって処理される画像データなどを一時的に格納する。
【0038】
画像出力部240は、例えば、RGB信号の生成回路などから構成され、画像メモリ230に展開された画像データをRGB信号などに変換して表示画面(後述する表示部310など)に出力する。
【0039】
記憶部250は、例えば、ROM(Read Only Memory)やフラッシュメモリなどの記憶装置から構成され、デジタルカメラ1の動作に必要なプログラムやデータなどを格納する。本実施形態では、制御部210などが実行する動作プログラムや、動作プログラムの実行時に必要となるパラメータや演算式などのデータが記憶部250に格納されている。
【0040】
外部記憶部260は、例えば、メモリカードなどといった、デジタルカメラ1に着脱可能な記憶装置から構成され、デジタルカメラ1で撮像した画像データなどを格納する。
【0041】
I/F(インタフェース)部300は、デジタルカメラ1と、ユーザあるいは外部装置との間のインタフェースに係る機能を担う処理部である。I/F部300は、表示部310、外部I/F部320、操作部330などから構成される。
【0042】
表示部310は、例えば、液晶表示装置などから構成され、デジタルカメラ1を操作するために必要な種々の画面や、撮像時のライブビュー画像(ファインダ画像)、撮像画像、などを表示出力する。本実施形態では、表示部310は、画像出力部240からの画像信号(RGB信号)などに基づいて撮像画像等の表示出力を行う。
【0043】
外部I/F部320は、例えば、USB(Universal Serial Bus)コネクタやビデオ出力端子などから構成され、画像データなどを外部のコンピュータ装置へ転送したり、撮像画像などを外部のモニタ装置に表示出力したりする。
【0044】
操作部330は、デジタルカメラ1の外面上に設けられている各種ボタンなどによって構成され、デジタルカメラ1の使用者による操作に応じた入力信号を生成して制御部210に送出する。操作部330を構成するボタンには、例えば、シャッタ動作を指示するためのシャッタボタンや、デジタルカメラ1の動作モードを指定するためのモードボタン、各種の設定操作を行うための十字キーや機能ボタン、などが含まれる。
【0045】
以上、本発明を実現するために必要となるデジタルカメラ1の構成について説明したが、デジタルカメラ1は、このほかにも、一般的なデジタルカメラの機能を実現するための構成を備えているものとする。
【0046】
次に、図3〜図9に示すフローチャートを参照して、上記構成のデジタルカメラ1が実行する長さ測定処理について説明する。
【0047】
まず、制御部210は、ユーザにより測定開始位置が指定されたか否かを判別する(ステップS101)。制御部210は、測定開始位置が指定されていないと判別すると(ステップS101:NO)、再度ステップS101の処理を実行する。一方、制御部210は、測定開始位置が指定されたと判別すると(ステップS101:YES)、被写体の撮像を行う(ステップS102)。取得した撮像画像は、例えば、画像メモリ230に記憶される。
【0048】
ここで、測定開始位置及び測定終了位置の指定方法について、図10を参照して説明する。図10(a)は、表示部310のタッチパネル画面で、被写体400上における測定開始位置と測定終了位置をタッチすることにより指定する方法を示している。また、図10(b)は、画面上に表示されるポインタをデジタルカメラ1の十字ボタン331により動かして、被写体400上における測定開始位置と測定終了位置を指定する方法を示している。
【0049】
撮像後、制御部210は測定開始位置が一定以上動いたか否かを判別する(ステップS103)。例えば、ライブビュー画像(ファインダ画像)において、測定開始位置が前回の撮像時から所定ピクセル以上移動したか否かが判別される。なお、測定開始位置がライブビュー画像に含まれていない(即ち、測定開始位置がフレーミングアウトしている)場合には、ライブビュー画像中の被写体400の位置が前回の撮像時から所定ピクセル以上移動したか否かを判別する。このようにして判別した結果、このようにして判別した結果、測定開始位置が一定以上動いた場合(ステップS103:YES)、制御部210は、再度撮像を行う(ステップS104)。測定開始位置が一定以上動いていない場合(ステップS103:NO)又はステップS104の処理後、制御部210は、ユーザにより測定終了位置が指定されたかどうか判別する(ステップS105)。制御部210は、ユーザにより測定終了位置が指定されたと判別すると(ステップS105:YES)、ステップS106の処理を行う。
【0050】
一方、制御部210は、ユーザにより測定終了位置が指定されていないと判別すると(ステップS105:NO)、再度ステップS103の処理を実行する。
【0051】
制御部210は、ステップS105の処理を完了した後、撮像回数が1回であるか否かを判別する(ステップS106)。撮像回数が1回であると判別すると(ステップS106:YES)、測定モード1の処理を行う(ステップS107)。
【0052】
ここで、図4に示すフローチャートを参照して、測定モード1の処理について説明する。本実施形態のデジタルカメラ1は、被写体上における任意の2点間の長さを測定する。また、その際、デジタルカメラ1は、被写体までの距離や被写体の大きさに応じて測定方法(測定モード)を変えることができる。測定モード1の処理は、撮像位置から被写体までの距離が近く、且つ1組のペア画像中に被写体が収まる場合に対応した処理である。この処理では、1組のペア画像における視差により長さを測定する。まず、制御部210は、三次元モデル生成処理を実行する(ステップS201)。
【0053】
図5に示すフローチャートを参照して、三次元モデル生成処理について説明する。なお、三次元モデル生成処理は、1組のペア画像に基づいて三次元モデルを生成する処理である。つまり、三次元モデル生成処理は、一つのカメラ位置から見た三次元モデルを生成する処理と考えることができる。
【0054】
まず、制御部210は、特徴点の候補を抽出する(ステップS301)。例えば、制御部210は、画像A(第1撮像部110による撮像の結果得られた画像)に対してコーナー検出を行う。コーナー検出においては、ハリスなどのコーナー特徴量が、所定閾値以上かつ所定半径内で最大になる点がコーナー点として選択される。従って、被写体の先端など、他の点に対して特徴のある点が特徴点として抽出される。
【0055】
制御部210は、ステップS301の処理を完了すると、ステレオマッチングを実行することで、画像Aの特徴点に対応する点(対応点)を画像B(第2撮像部120による撮像の結果得られた画像)から探す(ステップS302)。具体的には、制御部210は、テンプレートマッチングにより類似度が所定閾値以上かつ最大のもの(相違度が所定閾値以下かつ最小のもの)を対応点とする。テンプレートマッチングには、例えば、残差絶対値和(SAD)、残差平方和(SSD)、正規化相関(NCCやZNCC)、方向符号相関など、様々な既知の技法が利用可能である。
【0056】
制御部210は、ステップS302の処理を完了すると、ステップS302において見つけられた対応点の視差情報、第1撮像部110および第2撮像部120の画角、基線長などから、特徴点の位置情報を算出する(ステップS303)。生成された特徴点の位置情報は、例えば、記憶部250に記憶される。
【0057】
ここで、位置情報の算出について、詳細に説明する。図13は、テンプレートマッチングを行った際の画像Aおよび画像Bの例を示している。図13において、画像Aの被写体400上の特徴点(u1,v1)についてのテンプレートマッチングにより画像Bの被写体400上でマッチングがとれた位置が(u'1,v'1)であることが示されている。本実施形態に係るデジタルカメラ1は、第1撮像部110と第2撮像部120の光軸が水平方向に異なる平行ステレオカメラであるため、画像Aと画像Bとの間には、マッチングがとれた位置についての視差(u’−u)が生じている。
【0058】
ここで、テンプレートマッチングによってマッチングのとれた(照合された)特徴点に対応する実際の位置を、図1Bに示したカメラ座標でA1(X1、Y1、Z1)とした場合、A1の座標(X1、Y1、Z1)はそれぞれ、以下の式(1)〜式(3)で表される。上述したように、(u1,v1)は、第1撮像部110についての画像座標面(即ち、対象画像)への射影点を示している。(u'1,v'1)は、第2撮像部120についての画像座標面(即ち、参照画像)への射影点を示している。また、bは、第1撮像部110および第2撮像部120の光軸間の長さ(基線長)を示す。
【0059】
[数1]
X1=(b*u1)/(u'1−u1) (1)
【0060】
[数2]
Y1=(b*v1)/(u'1−u1) (2)
【0061】
[数3]
Z1=(b*f)/(u'1−u1) (3)
【0062】
この式(3)は、三角測量の原理によって導かれるものである。三角測量の原理を、図14を参照して説明する。
【0063】
図14は、図1Bに示した平行ステレオ構成におけるカメラ座標を上から見た模式図である。第1撮像部110による視点がカメラ座標となっているので、位置A1のX軸方向の座標はカメラ座標上のX1で与えられ、この数値は図14に示した式(A)で求められる。
【0064】
一方、第2撮像部120からの視点におけるA1のX軸方向の座標は、基線長bとカメラ座標のX1との和であり、図14に示した式(B)で求められ、式(A)と式(B)から、上記式(3)が導き出される。
【0065】
制御部210は、ステップS303の処理を完了すると、ステップS303において算出された特徴点の位置情報を基にドロネー三角形分割を実行し、ポリゴン化を実行する(ステップS304)。生成されたポリゴン情報は、例えば、記憶部250に記憶される。制御部210は、ステップS304の処理を完了すると、三次元モデル生成処理を終了する。
【0066】
なお、特徴点の数が少ない場合、被写体の形状情報が欠損し、被写体の忠実な三次元モデルが得られない。一方、より多くの特徴点が得られるように、特徴点の候補を抽出する条件やステレオマッチングの条件を緩くした場合、次のような不都合が生じる。即ち、不適切な点が特徴点の候補に含まれたり、ステレオマッチングで誤対応が発生したりして、位置精度が低下、つまり、モデリング精度が悪化する。このため、モデリング精度の悪化を防ぎつつ、被写体の忠実な三次元モデルを得ることができるように、適切な数の特徴点が抽出されるようにする必要がある。
【0067】
図4のフローに戻って、制御部210は、相対誤差を計算する(ステップS202)。
【0068】
ここで、相対誤差について説明する。相対誤差は以下の式(4)を用いて求められる。
【0069】
[数4]
ΔZ/Z=(p/B)・(Z/f) (4)
【0070】
なお、Zは、被写体までの距離、ΔZは奥行きの精度、ΔZ/Zは相対誤差、Bは平行移動距離、fは焦点距離、pはイメージセンサのピクセルサイズを表す。すると、(p/B)が精度となり、これに倍率(Z/f)を乗算することで、相対誤差ΔZ/Zが求められる。
【0071】
制御部210は、相対誤差が基準値以下であると判別すると(ステップS203:YES)、測定モード1の処理を終了する。図3のフローに戻り、制御部210は、三次元モデル上の測定開始位置及び測定終了位置の座標より求めた長さと相対誤差を表示して(ステップS109)、処理を終了する。
【0072】
ステップS109では、例えば、図12に示すように、相対誤差が20%以下の場合、測定した長さとそのときの相対誤差が画面に表示される。
【0073】
なお、相対誤差の値によっては、もう少し近くで撮像することで精度を上げることができるなどのアドバイスをユーザに提示しても良い。
【0074】
図4のフローにおいて、制御部210は、相対誤差が基準値を超えると判別すると(ステップS203:NO)、測定方法を変えた測定を行う。このため、ユーザにその旨を通知し、カメラ位置をずらしてもう1回、被写体を撮像するように促す(ステップS204)。
【0075】
その後、ユーザにより測定終了位置が指定された場合(ステップS205:YES)、制御部210は、被写体の撮像を行う(ステップS206)。
【0076】
それから、制御部210は、三次元モデル生成処理を行う(ステップS207)。その後、制御部210は、測定モード3の処理を行って(ステップS208)、測定モード1の処理を終了する。測定モード3の処理については、後で詳述する。
【0077】
図3のフローに戻り、撮像回数が1回でない場合、つまり測定終了位置が記録されるまでに複数回の撮像が行われた場合(ステップS106:NO)、制御部210は、測定モード2の処理を行う(ステップS108)。
【0078】
ここで、図6のフローチャートを参照して、測定モード2の処理について説明する。測定モード2の処理は、撮像位置から被写体までの距離が近く、且つ被写体が大きくて1組のペア画像中に測定開始位置と測定終了位置が収まらない場合に対応した処理である。
【0079】
例として、1回目で被写体の測定開始位置を撮像し、カメラ位置をずらして2回目で測定終了位置を撮像した場合、撮像された2組のペア画像の中から少なくとも3つの同じ特徴点を検出する。そして、これらの特徴点から、最初のカメラ位置に対する相対的な位置を取得し、それにより測定開始位置と測定終了位置の座標を得て、三角測量の原理により長さを測定する。なお、2回の撮像では始点(測定開始位置)と終点(測定終了位置)が収まらない場合には、始点から終点までを追跡するようにして複数回撮像を行い、上記と同じようにして、始点と終点との間の長さを測定する。
【0080】
ここでは、2組のペア画像からカメラ位置を計算する方法について考える。まず、制御部210は、三次元モデル生成処理を行う(ステップS401)。制御部210は、ステップS401の処理を完了すると、カメラ位置推定処理を行う(ステップS402)。
【0081】
ここで、図7のフローチャートを参照して、カメラ位置推定処理について説明する。まず、制御部210は、被合成三次元モデルおよび合成三次元モデルの双方から三次元空間上の特徴点を取得する(ステップS501)。例えば、制御部210は、被合成三次元モデル(もしくは、合成三次元モデル)の特徴点のうち、コーナー強度が高く、ステレオマッチングの一致度が高いものを選択する。または、制御部210は、ペア画像間でエピ線拘束を考慮した上で、SURF(Speeded−Up Robust Features)特徴量によるマッチングを実行することで、特徴点を取得するようにしてもよい。ここで、最初の撮像により得られる三次元モデルであって、合成の基礎となる三次元モデルを被合成三次元モデルという。また、2回目以降の撮像により得られる三次元モデルであって、被合成三次元モデルに合成される三次元モデルを合成三次元モデルという。
【0082】
制御部210は、ステップS501の処理を完了すると、被合成三次元モデルから3つの特徴点を選択する(ステップS502)。ここで、選択される3つの特徴点は、以下に示す(A)および(B)の条件を満たすものが選択される。(A)の条件は、3つの特徴点を頂点とする三角形の面積が小さすぎないこと、即ち、予め決められた面積以上であることである。(B)の条件は、3つの特徴点を頂点とする三角形が極端に鋭角な角を持たないこと、即ち、予め決められた角度以上であることである。例えば、制御部210は、上記(A)および(B)の条件を満たす3つの特徴点が選択されるまで、ランダムに3つの特徴点を選択する。
【0083】
制御部210は、ステップS502の処理を完了すると、合成三次元モデルが有する3つの特徴点を3つの頂点とする三角形の中から、ステップS502において選択された3つの特徴点を3つの頂点とする三角形と合同な三角形を探索する(ステップS503)。例えば、3辺の長さがほぼ等しい場合、2つの三角形は合同であると判別される。ステップS503の処理は、合成三次元モデルの特徴点のうち、ステップS502において被合成三次元モデルから選択された3つの特徴点に対応すると考えられる3つの特徴点を探索する処理と考えることもできる。なお、制御部210は、特徴点や周辺の色情報、またはSURF特徴量などで三角形の候補をあらかじめ絞ることで、探索を高速化してもよい。探索された三角形を示す情報(典型的には、当該三角形の頂点を構成する3つの特徴点の三次元空間上の座標を示す情報)は、例えば、記憶部250に記憶される。合同な三角形が複数ある場合、全ての三角形を示す情報が、記憶部250に記憶される。
【0084】
制御部210は、ステップS503の処理を完了すると、ステップS503において、少なくとも1つの合同な三角形が探索されたか否かを判別する(ステップS504)。なお、探索された合同な三角形が多すぎる場合、合同な三角形が探索されなかったものとみなす仕様にしてもよい。
【0085】
制御部210は、少なくとも1つの合同な三角形が探索されたと判別すると(ステップS504:YES)、合同な三角形を一つ選択する(ステップS505)。一方、制御部210は、合同な三角形が1つも探索されなかったと判別すると(ステップS504:NO)、ステップS502に処理を戻す。
【0086】
制御部210は、ステップS505の処理を終了すると、座標変換パラメータ取得処理を実行する(ステップS506)。座標変換パラメータ取得処理については、図8に示すフローチャートを参照して、詳細に説明する。なお、座標変換パラメータ取得処理は、合成三次元モデルの座標を被合成三次元モデルの座標系の座標に変換するための、座標変換パラメータを取得する処理である。座標変換パラメータ取得処理は、ステップS502において選択された3つの特徴点と、ステップS505において選択された合同な三角形と、の組み合わせ毎に実行される。ここで、座標変換パラメータ取得処理は、以下の式(5)および式(6)で与えられる対応点ペア(特徴点ペア、頂点ペア)に対して、式(7)を満たす回転行列Rと移動ベクトルtとを求める処理である。式(5)および式(6)のpとp'とは、各々のカメラ視線から見た三次元空間上の座標を持つ。なお、Nは、対応点ペアのペア数である。
【0087】
【数5】
【0088】
【数6】
【0089】
【数7】
【0090】
まず、制御部210は、以下の式(8)および式(9)に示すように、対応点ペアを設定する(ステップS601)。ここで、c1とc2とは、対応する列ベクトルが対応点の座標になる行列である。この行列から回転行列Rと移動ベクトルtとを直接求めることは難しい。しかしながら、pとp'との分布がほぼ等しいことから、対応点の重心を合わせてから回転すれば、対応点を重ね合わせることができる。このことを利用して、回転行列Rと移動ベクトルtとを求める。
【0091】
【数8】
【0092】
【数9】
【0093】
つまり、制御部210は、以下の式(10)および式(11)を用いて、特徴点の重心である重心t1およびt2を求める(ステップS602)。
【0094】
【数10】
【0095】
【数11】
【0096】
次に、制御部210は、以下の式(12)および式(13)を用いて、特徴点の分布である分布d1およびd2を求める(ステップS603)。ここで、上述したように、分布d1と分布d2との間には、式(14)の関係がある。
【0097】
【数12】
【0098】
【数13】
【0099】
【数14】
【0100】
次に、制御部210は、以下の式(15)および式(16)を用いて、分布d1およびd2の特異値分解を実行する(ステップS604)。特異値は、降順に並べられているものとする。ここで、記号*は複素共役転置を表す。
【0101】
【数15】
【0102】
【数16】
【0103】
次に、制御部210は、分布d1およびd2が二次元以上であるか否かを判別する(ステップS605)。特異値は、分布の広がり具合に対応している。従って、最大の特異値とそれ以外の特異値との比率や、特異値の大きさを用いて判定がなされる。例えば、2番目に大きい特異値が、所定値以上かつ最大の特異値との比率が所定範囲内である場合に、分布が二次元以上と判定される。
【0104】
制御部210は、分布d1およびd2が二次元以上でないと判別すると(ステップS605:NO)、回転行列Rを求めることができないので、エラー処理を実行し(ステップS613)、座標変換パラメータ取得処理を終了する。
【0105】
一方、制御部210は、分布d1およびd2が二次元以上であると判別すると(ステップS605:YES)、関連付けKを求める(ステップS606)。式(14)〜(16)から、回転行列Rは、以下の式(17)のように表すことができる。ここで、関連付けKを、式(18)のように定義すると、回転行列Rは、式(19)のようになる。
【0106】
【数17】
【0107】
【数18】
【0108】
【数19】
【0109】
ここで、固有ベクトルUは、分布d1およびd2の固有ベクトルに相当し、関連付けKにより関連付けられる。関連付けKの要素は、固有ベクトルが対応する場合は1か−1が、そうでない場合は0が与えられる。ところで、分布d1およびd2が等しいことから、特異値も等しい。つまり、Sも等しい。実際には、分布d1と分布d2とには誤差が含まれているので、誤差を丸める。以上を考慮すると、関連付けKは、以下の式(20)のようになる。つまり、制御部210は、ステップS606において、式(20)を計算する。
【0110】
【数20】
【0111】
制御部210は、ステップS606の処理を完了すると、回転行列Rを計算する(ステップS607)。具体的には、制御部210は、式(19)と式(20)とに基づいて、回転行列Rを計算する。計算により得られた回転行列Rを示す情報は、例えば、記憶部250に記憶される。
【0112】
制御部210は、ステップS607の処理を完了すると、分布d1およびd2が二次元であるか否かを判別する(ステップS608)。例えば、最小の特異値が、所定値以下または最大の特異値との比率が所定範囲外である場合、分布d1およびd2は二次元であると判別される。
【0113】
制御部210は、分布d1およびd2が二次元ではないと判別すると(ステップS608:NO)、移動ベクトルtを計算する(ステップS614)。ここで、分布d1およびd2が二次元ではないことは、分布d1およびd2が三次元であることを示す。ここで、pとp'は、以下の式(21)の関係を満たす。式(21)を変形すると、式(22)のようになる。式(22)と式(7)との対応から、移動ベクトルtは、以下の式(23)のようになる。
【0114】
【数21】
【0115】
【数22】
【0116】
【数23】
【0117】
一方、制御部210は、分布d1およびd2が二次元であると判別すると(ステップS608:YES)、回転行列Rを検証し、回転行列Rが正常であるか否かを判別する(ステップS609)。分布が二次元の場合、特異値の1つが0になるので、式(18)から判るように、関連付けが不定になる。つまり、Kの3行3列目の要素が1か−1のどちらかであるが、式(20)では正しい符号を割り当てる保証がない。そこで、回転行列Rの検証が必要になる。検証は、回転行列Rの外積関係の確認や式(14)による検算などである。ここでいう外積関係の確認とは、回転行列Rの列ベクトル(および、行ベクトル)が座標系による制約を満たすことの確認である。右手座標系では、1列目のベクトルと2列目のベクトルの外積は、3列目のベクトルに等しくなる。
【0118】
制御部210は、回転行列Rが正常であると判別すると(ステップS609:YES)、移動ベクトルtを計算し(ステップS614)、座標変換パラメータ取得処理を終了する。
【0119】
一方、制御部210は、回転行列Rが正常ではないと判別すると(ステップS609:NO)、関連付けKを修正する(ステップS610)。ここでは、関連付けKの3行3列目の要素の符号を反転する。
【0120】
制御部210は、ステップS610の処理を完了すると、修正された関連付けKを用いて回転行列Rを計算する(ステップS611)。
【0121】
制御部210は、ステップS611の処理を完了すると、念のため、再度、回転行列Rが正常であるか否かを判別する(ステップS612)。
【0122】
制御部210は、回転行列Rが正常であると判別すると(ステップS612:YES)、移動ベクトルtを計算し(ステップS614)、座標変換パラメータ取得処理を終了する。
【0123】
一方、制御部210は、回転行列Rが正常ではないと判別すると(ステップS612:NO)、エラー処理を実行し(ステップS613)、座標変換パラメータ取得処理を終了する。
【0124】
図7のフローに戻り、制御部210は、座標変換パラメータ取得処理(ステップS506)を終了すると、取得された座標変換パラメータを用いて、座標系を合わせる(ステップS507)。具体的には、式(7)を用いて、合成三次元モデルの特徴点の座標を、被合成三次元モデルの座標系の座標に変換する。
【0125】
次に、制御部210は、ステップS507の処理を終了すると、特徴点ペアを記憶する(ステップS508)。ここで、特徴点ペアは、被合成三次元モデルの特徴点と、座標変換後の合成三次元モデルの特徴点のうち、当該被合成三次元モデルの特徴点との距離が所定値以下かつ最近傍である特徴点と、から構成される。ここで、特徴点ペアの数が多いほど、ステップS502における3つの特徴点の選択、ならびに、ステップS505における合同な三角形の選択が適切であったと推定される。なお、特徴点ペアは、座標変換パラメータの取得条件(ステップS502における3つの特徴点の選択、ならびに、ステップS505における合同な三角形の選択)とともに、記憶部250などに記憶される。
【0126】
制御部210は、ステップS508の処理を終了すると、ステップS503において探索された全ての合同な三角形が、ステップS505において選択されたか否かを判別する(ステップS509)。
【0127】
制御部210は、いずれかの合同な三角形が選択されていないと判別すると(ステップS509:NO)、ステップS505に処理を戻す。
【0128】
一方、制御部210は、全ての合同な三角形が選択されたと判別すると(ステップS509:YES)、終了条件を満たすか否かを判別する(ステップS510)。本実施形態では、終了条件は、所定個数以上の条件について座標変換パラメータを取得したこととする。
【0129】
制御部210は、終了条件を満たしていないと判別すると(ステップS510:NO)、ステップS502に処理を戻す。
【0130】
一方、制御部210は、終了条件を満たしていると判別すると(ステップS510:YES)、最適な座標変換パラメータを特定する(ステップS511)。具体的には、特徴点ペアが最も多く取得された座標変換パラメータが特定される。言い換えれば、ステップS502における3つの特徴点の選択、ならびに、ステップS505における合同な三角形の選択が最適であるものが特定される。なお、座標変換パラメータには、回転行列Rと移動ベクトルtとが含まれる。
【0131】
制御部210は、ステップS511の処理を終了すると、カメラ位置推定処理を終了する。
【0132】
図6のフローに戻り、制御部210は、相対誤差を計算する(ステップS403)。制御部210は、相対誤差が基準値以下であると判別すると(ステップS404:YES)、測定モード2の処理を終了する。そして、図3のフローに戻り、制御部210は、三次元モデル上の測定開始位置及び測定終了位置の座標より求めた長さと相対誤差を表示して、長さ測定処理を終了する(ステップS109)。
【0133】
一方、制御部210は、相対誤差が基準値を超えると判別すると(ステップS404:NO)、測定モード3の処理を行って(ステップS405)、測定モード2の処理を終了する。
【0134】
続いて、図9に示すフローチャートを参照して、測定モード3の処理について説明する。測定モード3の処理は、撮像位置から測定対象の被写体までの距離が遠い場合に対応した処理である。
【0135】
図11に示すように、測定モード3の処理では、制御部210は、測定対象の被写体400よりもデジタルカメラ1の近くにある被写体(基準被写体410)を用いてカメラ位置を求める。そして、その結果に基づいて、制御部210は、測定対象の被写体400における指定された長さを測定する。
【0136】
まず、制御部210は、基準被写体410に基づいて、カメラ位置推定処理を実行する(ステップS701)。
【0137】
図11を参照して説明する。制御部210は、最初のカメラ位置A、移動後のカメラ位置Bでのそれぞれの撮像において、デジタルカメラ1までの距離が近く、各々の位置で、デジタルカメラ1の2つのレンズの画角内に収まる被写体を基準被写体410として決定する。そして、制御部210は、撮像された2組のペア画像の中から、基準被写体410において、少なくとも3点の共通する特徴点を取得する。これにより、カメラ位置Aとカメラ位置Bの相対的な位置関係が取得できる。つまり、カメラ位置Aにおけるaレンズと、カメラ位置Bにおけるbレンズの主点位置関係を取得できる。次に、レンズ主点位置関係、つまりカメラ位置Aにおけるaレンズからの(回転行列、並進ベクトルからなる)運動パラメータより、カメラ射影パラメータを生成する。
【0138】
そして、以下の式(24)より、画像Aのカメラ射影パラメータP、画像Bのカメラ射影パラメータP'を求め、例えば、以下の式(25)及び式(26)から最小二乗法にて三次元情報(X1,Y1、Z1)を求める。
【0139】
【数24】
【0140】
[数25]
trans(u1,v1,1)〜P ・trans(X1,Y1,Z1,1) (25)
【0141】
[数26]
trans(u'1,v'1,1)〜P'・trans(X1,Y1,Z1,1)(26)
【0142】
なお、式(25)、式(26)において、画像座標、世界座標ともに同次座標で表しており、記号“〜”は、その両辺が定数倍の違いを許して等しいことを表す。
【0143】
これにより測定開始位置(始点)と測定終了位置(終点)の座標が得られ、測定対象の被写体400における指定された長さが求められる。
【0144】
なお、2回の撮像では、始点と終点が収まらない場合には始点から終点までを追跡するようにして複数回撮像を行い、上記と同じようにして、始点と終点との間の長さを測定する。
【0145】
制御部210は、カメラ位置推定処理を完了した後、そのときの相対誤差を計算し(ステップS702)、測定モード3の処理を終了する。
【0146】
制御部210は、測定モード3の処理を終了すると、図3のフローに戻って、三次元モデル上の測定開始位置及び測定終了位置の座標より求めた長さと相対誤差を表示して(ステップS109)、長さ測定処理を終了する。
【0147】
(変形例)
本発明は、上記実施形態に開示したものに限られない。
【0148】
上記実施形態では、制御部210は、相対誤差が基準値を超えている場合には測定モード3への移行を自動的に行った。しかし、直ちにモード移行するのではなく、制御部210は、使用者に対して、被写体400との撮像間距離を短くすることを促す旨のメッセージを表示部310を介して表示しても良い。即ち、使用者が被写体400に近づけば、デジタルカメラ1と被写体400との距離が短くなることによって測定精度が向上するからである。そして、メッセージを表示してから一定時間経過しても、相対誤差が基準値を超えている場合には、制御部210は、測定モード3の処理を行うようにすればよい。
【0149】
以上説明したように、本発明の上記実施形態に係るデジタルカメラ1は、ユーザがそれぞれ指定した被写体上の2点(始点及び終点)間の長さを、3Dモデリングによって得られた座標位置に基づいて求めることがきる。
【0150】
その際、デジタルカメラ1は、3つの測定モードから何れかの測定モードを適宜選択して、長さ測定処理を実行する。例えば、デジタルカメラ1から測定対象の被写体までの距離が短く、且つ、第1撮像部110及び第2撮像部120の同時撮像により得られた1組のペア画像中に始点及び終点が収まっている場合、測定モード1が選択される。測定モード1の処理では、1回の撮像結果に基づく被写体の3Dモデリングによって、上記2点間の長さが求まる。
【0151】
また、デジタルカメラ1から測定対象の被写体までの距離が短いが、被写体が大きく、上記の同時撮像により得られた1組のペア画像中に始点及び終点が収まらない場合、測定モード2が選択される。測定モード2の処理では、複数のカメラ位置での複数回の撮像結果に基づく被写体の3Dモデリングによって、上記2点間の長さが求まる。
【0152】
また、デジタルカメラ1から測定対象の被写体までの距離が長く、上記の同時撮像により得られた1組のペア画像中に始点及び終点が収まっているものの、被写体までの距離と奥行きの精度との相対誤差が所定値よりも大きい場合、測定モード3が選択される。測定モード3の処理では、複数のカメラ位置での複数回の撮像結果から、測定対象の被写体よりも手前に存在する他の被写体の画像部分に基づいて、カメラ位置(移動ベクトル、回転ベクトル)を算出する。これにより、デジタルカメラ1から測定対象の被写体までの距離が長い場合でも、上記2点間の長さを精度良く算出することができる。
【0153】
また、使用者によって指定された被写体上の始点及び終点を表示画像上に重畳して表示するので、使用者は、被写体上の始点及び終点の位置を容易に認識することができる。
【0154】
なお、本発明に係る撮像装置は、既存のステレオカメラ等を用いても実現可能である。即ち、上述した制御部210が実行したようなプログラムを既存のステレオカメラ等に適用し、そのステレオカメラ等のCPU等(コンピュータ)が当該プログラムを実行することで、当該ステレオカメラ等を本発明に係る撮像装置として機能させることができる。
【0155】
このようなプログラムの配布方法は任意であり、例えば、フレキシブルディスク、CD−ROM(Compact Disk Read−Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよい。あるいは、インターネット等の通信ネットワーク上のサーバ装置が有するディスク装置等に上記プログラムを格納しておき、かかるサーバ装置から、当該通信ネットワークを介して、上記プログラムを搬送波に重畳させて配信してもよい。
【0156】
この場合、上述した本発明に係る機能を、OS(オペレーティングシステム)とアプリケーションプログラムの分担、またはOSとアプリケーションプログラムとの協働により実現する場合などでは、アプリケーションプログラム部分のみを記録媒体等に格納してもよい。
【0157】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【0158】
以下に本願の当初の特許請求の範囲に記載された発明を付記する。
【0159】
(付記1)
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部と、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示部と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付部と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得部と、を備えることを特徴とする撮像装置。
【0160】
(付記2)
前記長さ取得部は、前記指定された被写体上の始点及び終点が1組の前記ペア画像中に収まる場合、当該1組のペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ことを特徴とする付記1に記載の撮像装置。
【0161】
(付記3)
前記長さ取得部は、前記指定された被写体上の始点及び終点が同じ組の前記ペア画像中に収まっていない場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における前記被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ことを特徴とする付記1又は2に記載の撮像装置。
【0162】
(付記4)
前記長さ取得部は、前記被写体までの距離と奥行きの精度との相対誤差を算出し、算出した相対誤差が所定値よりも大きい場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における、前記被写体より手前に存在する他の被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、ことを特徴とする付記1乃至3の何れかに記載の撮像装置。
【0163】
(付記5)
前記相対誤差(ΔZ/Z)は、(p/B)・(Z/f)であり、Zは被写体までの距離、ΔZは奥行きの精度、Bは平行移動距離、fは焦点距離、pは撮像素子のピクセルサイズ、である、ことを特徴とする付記4に記載の撮像装置。
【0164】
(付記6)
前記表示部は、前記受付部によって受け付けられた被写体上の始点及び終点を、前記表示画像上に重畳して表示する、ことを特徴とする付記1乃至5の何れかに記載の撮像装置。
【0165】
(付記7)
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置で前記被写体上における指定された2点間の長さを測定する長さ測定方法であって、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示ステップと、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付ステップと、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得ステップと、を含むことを特徴とする長さ測定方法。
【0166】
(付記8)
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置を制御するコンピュータに、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示機能と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付機能と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得機能と、を実現させることを特徴とするプログラム。
【符号の説明】
【0167】
1…デジタルカメラ、110…第1撮像部、111…光学装置、112…イメージセンサ部、120…第2撮像部、121…光学装置、122…イメージセンサ部、200…データ処理部、210…制御部、220…画像処理部、230…画像メモリ、240…画像出力部、250…記憶部、260…外部記憶部、300…インタフェース(I/F)部、310…表示部、331…十字ボタン、320…外部インタフェース(I/F)部、330…操作部、400…被写体、410…基準被写体
【特許請求の範囲】
【請求項1】
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部と、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示部と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付部と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得部と、を備える、
ことを特徴とする撮像装置。
【請求項2】
前記長さ取得部は、前記指定された被写体上の始点及び終点が1組の前記ペア画像中に収まる場合、当該1組のペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、
ことを特徴とする請求項1に記載の撮像装置。
【請求項3】
前記長さ取得部は、前記指定された被写体上の始点及び終点が同じ組の前記ペア画像中に収まっていない場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における前記被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、
ことを特徴とする請求項1又は2に記載の撮像装置。
【請求項4】
前記長さ取得部は、前記被写体までの距離と奥行きの精度との相対誤差を算出し、算出した相対誤差が所定値よりも大きい場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における、前記被写体より手前に存在する他の被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、
ことを特徴とする請求項1乃至3の何れか1項に記載の撮像装置。
【請求項5】
前記相対誤差(ΔZ/Z)は、(p/B)・(Z/f)であり、Zは被写体までの距離、ΔZは奥行きの精度、Bは平行移動距離、fは焦点距離、pは撮像素子のピクセルサイズ、である、
ことを特徴とする請求項4に記載の撮像装置。
【請求項6】
前記表示部は、前記受付部によって受け付けられた被写体上の始点及び終点を、前記表示画像上に重畳して表示する、
ことを特徴とする請求項1乃至5の何れか1項に記載の撮像装置。
【請求項7】
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置で前記被写体上における指定された2点間の長さを測定する長さ測定方法であって、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示ステップと、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付ステップと、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得ステップと、を含む、
ことを特徴とする長さ測定方法。
【請求項8】
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置を制御するコンピュータに、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示機能と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付機能と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得機能と、を実現させる、
ことを特徴とするプログラム。
【請求項1】
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部と、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示部と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付部と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得部と、を備える、
ことを特徴とする撮像装置。
【請求項2】
前記長さ取得部は、前記指定された被写体上の始点及び終点が1組の前記ペア画像中に収まる場合、当該1組のペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、
ことを特徴とする請求項1に記載の撮像装置。
【請求項3】
前記長さ取得部は、前記指定された被写体上の始点及び終点が同じ組の前記ペア画像中に収まっていない場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における前記被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、
ことを特徴とする請求項1又は2に記載の撮像装置。
【請求項4】
前記長さ取得部は、前記被写体までの距離と奥行きの精度との相対誤差を算出し、算出した相対誤差が所定値よりも大きい場合、前記撮像部による複数回の撮像によって得られた複数組の前記ペア画像における、前記被写体より手前に存在する他の被写体の画像部分に基づいて、前記始点が収まっているペア画像が撮像された位置に対する前記終点が収まっているペア画像が撮像された位置の相対座標を算出し、算出した相対座標に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出する、
ことを特徴とする請求項1乃至3の何れか1項に記載の撮像装置。
【請求項5】
前記相対誤差(ΔZ/Z)は、(p/B)・(Z/f)であり、Zは被写体までの距離、ΔZは奥行きの精度、Bは平行移動距離、fは焦点距離、pは撮像素子のピクセルサイズ、である、
ことを特徴とする請求項4に記載の撮像装置。
【請求項6】
前記表示部は、前記受付部によって受け付けられた被写体上の始点及び終点を、前記表示画像上に重畳して表示する、
ことを特徴とする請求項1乃至5の何れか1項に記載の撮像装置。
【請求項7】
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置で前記被写体上における指定された2点間の長さを測定する長さ測定方法であって、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示ステップと、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付ステップと、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得ステップと、を含む、
ことを特徴とする長さ測定方法。
【請求項8】
同一の被写体に対する1回の撮像で、視差のある1組のペア画像を取得する撮像部を有する撮像装置を制御するコンピュータに、
前記ペア画像の少なくとも一方の画像に基づく表示画像を表示する表示機能と、
前記表示画像上における前記被写体上の始点及び終点の指定を受け付ける受付機能と、
1又は複数組の前記ペア画像に基づいて、前記指定された被写体上の始点及び終点における実空間上のそれぞれの位置を算出し、算出した実空間上の始点及び終点位置に基づいて、前記被写体上の始点から終点までの長さを取得する長さ取得機能と、を実現させる、
ことを特徴とするプログラム。
【図1A】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図14】
【図10】
【図11】
【図12】
【図13】
【図1B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図14】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2011−232330(P2011−232330A)
【公開日】平成23年11月17日(2011.11.17)
【国際特許分類】
【出願番号】特願2011−80828(P2011−80828)
【出願日】平成23年3月31日(2011.3.31)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】
【公開日】平成23年11月17日(2011.11.17)
【国際特許分類】
【出願日】平成23年3月31日(2011.3.31)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】
[ Back to top ]