本発明の実施形態について、図面を参照しながら以下に詳細に説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態における撮像装置の一構成例を示す機能ブロック図である。
図1に示すように、撮像装置100は2つの撮像素子を備えたデジタルカメラであり、第1の撮像素子である画像を取得する第1カメラ101と、第2の撮像素子である第2カメラ102と、情報を記憶する記憶部103と、様々な情報を表示すると共にユーザーからの入力操作を受け付ける表示・入力部104と、被写体の検出方向を指定する検出方向設定部105と撮影方向を指定する撮影方向指定部106、撮像装置の向きを検知する撮影方向検知部である加速度センサ107、2つの異なる視点からの映像から視差を算出する視差算出部108、及び視差を被写体位置に関する情報であるカメラから被写体までの距離や被写体の長さ、面積、体積等に変換する視差変換部109と、を有している。但し、撮像装置100内に、上記全ての構成要素が含まれている場合に限定されない。第1カメラ101を基準カメラとし、第1カメラ101と第2カメラ102は各カメラの光軸が平行になるように配置されている。記憶部103はハードディスクやフラッシュメモリ、あるいはDRAM(Dynamic Random Access Memory)といった記憶媒体、表示・入力部104はタッチパネル式の液晶パネルや有機EL(Electro Luminescence)パネルで構成可能である。
撮像装置100は、複数のモードを切り替えるモード設定部110を備える。モード設定部110によって設定されるモードは、例えば2つのカメラで立体画像を撮影する3D撮影モード、1つのカメラのみで通常の撮影を行う単眼撮影モード、2つのカメラを利用して被写体の大きさを測定する被写体測定モード等がある。ここでは、表示・入力部104によってユーザーから被写体測定モードを指定され、モード設定部110により被写体測定モードが設定されている場合の動作について詳細を記載する。
ユーザーは、検出方向設定部105により被写体において長さを測定したい方向を設定し、この検出方向に従い撮影方向指定部106は撮影方向を設定する。撮影方向と現在のカメラの方向が一致しているかどうかを撮影方向検知部107により判定し、一致していない場合は表示・入力部104に撮影方向を変えるメッセージを表示し、カメラが撮影方向となるようユーザーを誘導する。そして、撮影方向と現在のカメラ方向が一致した場合、第1カメラ101と第2カメラ102により映像を取得し、記憶部103に保持される各映像から視差算出部108によって視差を算出する。視差算出部108によって算出された視差情報を元に、視差変換部109は記憶部103に保持される2つのカメラの位置関係などを示すカメラパラメータを取得し、ユーザーによって指定された点の距離、あるいは2点間の長さを視差情報とカメラパラメータを元に算出し表示・入力部104へ表示する。
図2は本実施の形態による撮像制御方法の処理の流れを示すフローチャート図であり、これに従い処理の内容について詳細に説明する。モード設定部110により、被写体測定モードが設定された場合、検出方向設定部105はユーザーが検出方向を設定するためのメニューを表示するよう表示・入力部104に指示する。検出方向とは、被写体の大きさを測定する際に、被写体の高さ、あるいは幅など、どの方向について大きさ(長さ)を測定したいかという方向である。
図3にこの際に表示するメニューの一例を示す。図3は表示・入力部104の表示画面であり、記憶部103から読み出された基準カメラである第1カメラ画像がプレビュー表示されており、大きさを測ろうとする被写体111が表示されている。そして、画面の右側に検出方向設定部105によるメニューが表示されており、メニューは被写体の縦方向の長さを測定することを指示するボタン112、横方向の長さを測定することを指示するボタン113、縦・横の両方を表示するボタン114を有している。
いま、撮像装置100は図4に示すように被写体111に向かって、基準カメラである第1カメラは左に、第2カメラは右に位置した状態で撮影している。ユーザーは、被写体においてどの方向の長さを測定するかをこのボタンにより検出方向を設定する(ステップS10)。例えば図3に矢印115で示す縦方向の長さを測定する場合にはボタン112を、矢印116で示す横方向の長さを測定する場合にはボタン113を選択する。尚、ここでの縦、横方向とは図4に示すように水平方向に2つのカメラが並ぶよう撮像装置100が位置している場合であり、垂直方向に2つのカメラが並ぶ場合には、縦と横は入れ替わり、画像の長手方向が縦、短い方向が横となる。
検出方向設定部105から撮影方向指定部106に検出方向が送られる。撮影方向指定部106は、検出方向に従って撮影方向を決定する(ステップS11)。撮影方向とは、被写体に対する2つのカメラの並ぶ方向であり、詳細については後述する。
撮影方向指定部106は現在のカメラの方向を撮影方向検知部107から取得し、カメラの向きと撮影方向が一致しているかどうかを判定する(ステップS12)。もし一致していない場合は、撮影方向指定部106は表示・入力部104にメッセージを表示し、カメラの向きと撮影方向が一致するよう誘導する(ステップS13)。撮影方向検知部107は3軸の加速度センサであることから、重力加速度によりカメラの状態や動きを判別可能であり、これによりカメラの向きを判断する。カメラの傾きに従い、例えば、「カメラを90度時計回りに回転してください」といったメッセージにより誘導する。これにより、撮影方向とカメラの向きを確実に一致させることが可能となる。
撮影方向指定部106は、カメラの向きと撮影方向が一致したことを確認し、視差算出部108に視差の算出を行うよう指示する。視差算出部108は、そのときの第1カメラ101の画像と第2カメラ102の画像を記憶部103より取得し、視差の算出を行う。以下に視差の算出方法について詳細を記載する(ステップS14、ステップS15)。
図5(a)は第1カメラ画像117を、図5(b)は第2カメラ画像118を示している。被写体111における対応点同士の位置を比較すると、被写体111は第2カメラ画像において、第1カメラ画像に対してdの幅だけ左側に撮像されており、この同一被写体の対応点同士のズレ量であるdが視差である。dは画素数で表すものとする。第1カメラ101と第2カメラ102は輻輳を持たない平行な配置としているので、視差は無限遠で0となり、被写体が近づくほど大きな視差となる。また、エピポーラ線は同じ高さの水平な直線となり、対応点は同じ高さの同一のライン上に位置する。なお輻輳とは、眼球運動の一種で対象に視線を交差させようとする両眼の動きであり、カメラにおいては各カメラの光軸が交わることを言う。エピポーラ線とは、図6に示すように、空間中の特徴点1と、2つのカメラ2、3のレンズ中心と、によってできる平面(エピポーラ平面)4と、それぞれのカメラの画像平面5、6との交線が対応する線であり、図6では7、8の点線で示される。カメラの光軸を平行に配置する平行配置の場合は、図6で示したエピポーラ線7、8は、図7に示すように同じ高さの水平な直線となる。よって2つのカメラ画像における対応点は、同一ライン上に位置することとなる。
ここで、図8を用いてステレオマッチングの一種であるSADによるブロックマッチングについて説明する。図8(a)に示す第1カメラ画像117と第2カメラ画像118において、エピポーラ線は一致しているものとし、左右画像上の対応点は水平方向に同一ライン上にあるものとする。第1カメラ画像117上で視差を算出したい画素を中心に3×3のサイズを持つウインドウ120を設定する。ウインドウ119の右端は、第1カメラ画像117の右端からa画素の位置とする。第2カメラ画像118において、このウインドウ119と同一ライン上で画像右端からa+d_maxの距離離れた位置のウインドウ120から、画像右端からaの位置にあるウインドウ121まで、1画素ずつウインドウの位置をずらしながら左画像のウインドウ119に対する相関値を計算することにより、対応点を特定する事が可能となる。図8(b)は、それぞれウインドウ119、120を示しておりX0、X’0などXやX’に数値を付与した記号は、ウインドウの各画素におけるGの画素値を示している。
上記の数式に従い、ウインドウごとの相関値であるSAD値を算出する。これを、ウインドウ119に対し、右画像上でウインドウを移動しながら相関値を算出していき、SAD値が最も小さくなる位置がウインドウ119に対する対応点となり、この位置情報から視差dが算出される。このような操作を、第1カメラ画像117の全ての画像に対して行う事で、第2カメラ画像118に対する視差マップが算出される。
このような対応点探索により視差算出部108において視差の算出が行われるが、被写体の位置によっては視差の算出が出来ない場合がある。図9(a)において、第1カメラ画像117上に示すウインドウ119の位置の対応点探索を行う場合、図9(b)の第2カメラ画像118上に示すようにウインドウ120から121において相関値の算出を行う事となる。この際、ウインドウ120から121における全ての位置の相関値はほぼ同一となってしまい、対応点が複数見つかる為正確な視差を算出出来ない。このように、探索方向とエッジの方向が略同一になる場合には対応点が複数検出され正しい視差が算出できず、長さは視差を元に算出されるためユーザーが被写体の縦方向の長さを知りたいと思っても測定できない事がありうる。例えば図9(a)においてウインドウ119の中心点と、122で示すポイント間の長さを知りたいと思っても、ウインドウ119、ポイント122のどちらも視差が正しく算出されず、長さを知る事が出来ない。
しかし、前述の撮影方向指定部106によって、ユーザーは長さを測定したい方向に応じて撮影方向を設定しカメラの向きを誘導する事により、測定位置における視差の探索方向と画像の特徴量であるエッジの方向が同一にならないように設定され、測定位置における視差を確実に算出できるようにする事が出来る。図9(a)に示したウインドウ119の中心点と、122で示すポイント間の長さ、すなわち図3における115の方向の長さを知りたい場合には、図3におけるボタン112が選択され検出方向設定部105により縦方向の長さを検出するよう検出方向が設定されている。このとき、撮影方向指定部106は、2つのカメラを垂直方向に並ぶよう誘導する。図10はこのときの2つのカメラ画像であり、第1カメラが被写体に対して左、第2カメラが被写体に対して右の位置から、第1カメラが下、第2カメラが上に来るよう半時計周りに90度回転した際の画像である。対応点探索におけるウインドウの移動方向は変わらずBの矢印で示す方向である。この状態でポイント122の視差を算出すると、対応点を見つける事が可能となり正しく視差が算出できる。
図11に検出方向と撮影方向の対応を示す。ここでは図4に示すように、2つのカメラが水平に並んだ状態を基準としており、検出方向における縦とは、画像上の短い方向であり、横は画像の長手方向である。撮影方向における縦とは2つのカメラが垂直方向に並んだ場合であり、横とは、水平方向に2つのカメラが並んだ状態である。検出方向に従い撮影方向を決定し、現在のカメラの状態と一致しているかどうかを判別し誘導する。被写体の縦横両方の長さを同時に求める場合には、2つのカメラが被写体の縦方向、及び横方向に対して斜めに傾くような位置に誘導する。例えば図3における矢印115、116の両方に対して2つのカメラの並ぶ方向が略45度になるような位置に誘導する。このように斜めに配置する場合、被写体を2つのカメラの両方に全てが映るようにするには画角の関係から距離を離す必要が出てくる場合があり、やや距離精度が低下する可能性があるが、同時に縦方向も横方向も長さを算出できるという利点がある。このように、被写体の長さを測定する方向に応じて撮影方向を最適化することにより、被写体における所望の位置の長さを正確かつ確実に測定できるという効果がある。なお、最初の撮影時にカメラが垂直に2つ並ぶ状態だった場合、検出方向は画像の長手方向を縦、短い方向を横とする。これにより撮影方向は図11と同様にすることで対応可能となる。
以下、視差算出後の処理について記載する。視差変換部109は、ユーザーに基準カメラである第1カメラ101の画像上から、被写体の特定の2点を指示するよう促す(ステップS16)。選択された被写体の2点において、視差算出部108によって算出された視差情報と、記憶部103から読み出した2つのカメラのカメラパラメータを元に距離情報に変換し、ユーザーの指定した2点間の長さを算出する(ステップS17)。視差から距離への換算は、2つのカメラ間隔(基線長)をb、各カメラの焦点距離をf、カメラから被写体の注目点までの実際の距離をZとすると、視差dを用いて以下の式で表される。
Z=B×f/d
この被写体の注目点までの距離Zがわかると、カメラのピクセルピッチ、画像上での距離を元に三角測量により被写体における2点間の長さを算出する事が可能である。
そして、視差変換部109は指定された2点間の長さを表示・入力部104に記憶部103から読み出した第1カメラ101の画像と共に表示する(ステップS18)。これによりユーザーは指定した位置の被写体の長さやサイズを知る事が出来る。
なお、本実施形態における視差算出時のウインドウサイズは3×3としたが、5×5、9×9などより大きくてもよく、ウインドウの重心位置が中央からはずれるが4×4などの偶数のウインドウでもよく、このサイズに限定するものではない。探索範囲であるd_maxはカメラ基線長や被写体の距離などの条件に従い、自由に設定する事が可能である。また、探索方向もここでは121から122の方向へ探索を行っているが、この方向に限定するものではない。また、図8(b)にてX0等の値はGの画素値としたが、R(赤)やB(青)など他の色のどれか一つや合計値、あるいは各画素の輝度値、またRGB3色全てを用いてもよく、これに限定されるものではない。また、対応点探索の手法としてSADを用いたがSSD(Sum of Squared Difference)など他の手法を用いても良い。
なお、本実施形態においては、図3において検出方向を設定するメニューを被写体と重畳して右に設定したが、右上に限らず下、左などどの位置であっても構わない。また、被写体と重畳せず最初にメニューだけを表示する形でも良く、別途設定メニューを表示するボタンを用意し、そのボタンによりメニューを呼び出すようにしても良い。また、ここではメニューの各入力領域の記述は縦、横といった記述にしたが、たとえば矢印で方向を示す、あるいは縦横の代わりに高さ、幅など異なる表現方法にしても良く、被写体の検出方向を指示するものであればどのようなものでも良い。
また、ここでは第1カメラを基準カメラとしたが、第2カメラを基準としても良い。第2カメラ基準で視差を算出する際には、探索方向を逆方向にする事で視差が算出可能である。また、ここでは2つのカメラは光軸が平行になるように配置している物としたが、輻輳がついていても良い。この際は、カメラパラメータから輻輳をキャンセルするよう補正処理を行った後、視差を算出する事で実現可能となる。
また、ここでは撮影方向検知部を加速度センサであるとしたが、方位センサやジャイロセンサを用いても良く、これらを併用しても良い。被写体を机上において真上から撮影する場合など、加速度センサだけでは方向が判別出来ない事があるが、方位センサ、あるいはジャイロセンサを用いる事により方向の判別が可能となる。
また、図11における検出方向と撮影方向の対応において、縦横両方向を測定する為には斜めに配置する角度は略45度が好ましいが、これに限定されるものではない。また、図11に示すように検出方向と撮影方向を対応付けるのが最も良いが、縦、あるいは横のどちらかが選択された場合にもカメラの並ぶ方向が斜めにくるように誘導するようにする事も可能である。
また、ここでは被写体の長さを視差変換部109で算出するものとしたが、面積等を算出するようにしてもよい。例えば、検出方向として縦・横が選択された場合には縦方向の長さと横方向の長さから面積の算出が可能である。また、検出方向設定時のメニューも「縦・横」の代わりに「面積」として、「縦・横」が選択された場合と同様の動作をするようにしても良い。
(第2の実施形態)
本発明の第2の実施形態について、図面を参照しながら説明する。
図12は、本発明の実施形態2における撮像装置の構成を示すブロック図である。なお、第1の実施形態と同様の動作をする構成に関しては同一の符号を付してある。図13は、本発明の第2の実施形態における撮像装置における処理の流れを示すフローチャート図である。
撮像装置200は、2つの撮像素子を備えた携帯端末であり、画像を取得する第1カメラ101と、第2カメラ102と、情報を記憶する記憶部103と、様々な情報を表示すると共にユーザーからの入力操作を受け付ける表示・入力部104と、被写体の検出方向を指定する検出方向設定部201と撮影方向を指定する撮影方向指定部202、撮像装置の向きを検知する撮影方向検知部であるエッジ検出部203、2つの異なる視点からの映像から視差を算出する視差算出部108、及び視差を被写体位置に関する情報であるカメラからの距離や長さに変換する視差変換部109を有する。ここでの携帯端末とは、例えば、携帯電話やタブレット端末、小型のパーソナルコンピュータ等である。2つのカメラ101と102は、画像の長手方向と同一の方向に並ぶ形で配置されており、カメラ101が基準カメラであるとする。第1の実施形態と同様、モード設定部110により被写体測定モードが設定されている場合の動作について詳細を記載する。
検出方向設定部201は、表示・入力部104によりユーザーに長さを測定したい2点の位置を入力させる(ステップS20)。この際、表示・入力部104には第1カメラ101の画像が記憶部103を通じて表示されている。この画面上からユーザーは2点をタッチし、タッチパネルである表示・入力部104がその座標を取得することで2点の位置を特定する。
まず、あらかじめ表示・入力部104にメッセージを表示し、第1実施形態の図4と同様、第1カメラ101と第2カメラ101が水平方向に並ぶ状態に誘導してあるものとする。検出方向設定部201は、2点の座標から被写体の検出方向を設定する(ステップS21)。選択した被写体の2点を結ぶ直線において、画像の長手方向となす角度を算出する。このときの角度は2つの直線によってなす角のうち鋭角の角度であることとする。
図14はこの角度に対する説明の図である。第1カメラ画像204上に被写体205が写されており、黒点206、黒点207はユーザーによって指定された長さを測る2点を示している。図中xで示す画像の長手方向に対する角度は図中の記号Aで表される。この角度Aが30度以下である場合には、画像の長手方向の長さ、すなわち現在の画面において横方向の長さを測定するものと判断し検出方向設定部201は検出方向を横方向に設定する。一方、60度以上になる場合には検出方向を縦方向に設定する。それ以外の場合には、検出方向を斜め方向に設定する。このように2点の座標から検出方向を設定することにより、検出方向の設定するための操作を減らし、簡易に行うことが可能となる。
撮影方向指定部202は、検出方向設定部201から送られる検出方向に従い、撮影方向を決定する(ステップS22)。検出方向の視差が算出できるよう撮影方向である2つのカメラの並ぶ向きを決定するが、この際エッジ検出部203によって被写体に対するカメラの向きを判定する。(ステップS23)。検出方向が縦方向であった場合、エッジ検出部203は横方向のエッジ検出フィルタを設定し、指定した2つの点207、208の周辺でエッジの検出を行う。そして検出した横方向のエッジが少なくなるようにカメラの向きを変更するようメッセージを表示・入力部104に表示する(ステップS24)。この際に表示するメッセージは、例えば「カメラを回転してください」といったメッセージである。このように横方向、すなわち画像の長手方向のエッジが少なくなるように移動する理由は、図14に示すように縦方向の長さを測定する場合には横方向のエッジが選択されることが多く、この視差を算出する必要があるが、2つのカメラが並ぶ方向と同一方向のエッジは実施形態1で記載したように視差が算出しにくいためである。そこで、リアルタイムでこの方向のエッジを検出し、この検出成分が少なくなるよう撮影方向を設定することによって、視差が算出できる位置にカメラを誘導することが可能となる。なお、横方向や斜め方向が選択された場合には、その状態で視差が算出できる可能性が高い為、撮影方向指定部202はそのまま撮影し視差を算出するように視差算出部108に指示する。このように、エッジ検出を行いこの結果に従って撮影方向を設定することにより、撮影方向検知部を特別な機構を用いることなく実現できると共に、検出方向の視差を算出しやすくすることが可能となる。
以下、ステップS25以下の処理については、第1の実施形態と同様の処理内容である為、説明は省略する。尚、ステップS26の視差算出において、本実施形態のようにあらかじめ2点が選択されている場合には、その部分のみで視差の算出を行えばよく、これにより処理量を低減する事が可能となる。
なお、実施形態2において、ここでは撮像装置200における2つのカメラが水平方向に並ぶようにした状態を初期状態として説明したが、垂直方向に並ぶ形を初期状態にするようにしても良い。その場合は、画像の長手方向に対する角度Aが30度以下だった場合には検出方向は縦方向となる。この際にはカメラは垂直方向に並んでいるため、そのままの状態で視差の算出が可能である。これは、撮像装置に画像の長手方向に2つのカメラが並ぶよう組み込まれている場合には、長手方向のエッジに対する視差が算出できず、短い方向には算出できるためである。画像の長手方向に2つのカメラが並ぶよう組み込まれている撮像装置を縦に構え、カメラが垂直方向に2つ並ぶ場合、検出方向が横方向の場合に視差が算出できなくなる。このように、撮像装置の配置によって縦、横の概念と視差が算出される方向は変化する。また、検出方向を設定する際の画像長手方向との成す角を30度としたが、この角度は一例であり20度や45度など別の角度を基準としても良い。
また、ここでは2つのカメラが撮影画像における長手方向と同一の方向に並んでいるものとしたが、長手ではなく撮影画像における短い方向と同一の方向に並んでいる構成でも良く、その際は画像における短い方向について視差の算出が困難になる為、この方向を基準にして検出方向と撮影方向の決定を行うこととなる。
なお、ここではユーザーにより2点が選択されて長さを算出する場合について記載しているが、1点のみが選択され、カメラから選択された被写体位置までの距離を算出する場合にも、撮影方向検知部であるエッジ検出部203により、指定された位置の視差が算出可能かどうかを判断し、撮影方向指定部202で視差が算出されやすい方向に撮影方向を指示するようにしても良い。この際には、検出方向設定部201による検出方向の設定は不要である。また、1点、あるいは2点を指定する前にエッジ検出部203により視差が算出出来ない方向のエッジを検出し、その検出量が最も少なくなるよう誘導しても良い。検出方向を指定するのが最も確実であるが、これにより距離、長さを指定する点を選択前にあらかじめ視差を算出しやすい撮影方向に誘導する事が出来る。
(第3の実施形態)
本発明の第3の実施形態について、図面を参照しながら説明する。図15は、本発明の第3の実施形態における画像処理装置の構成を示すブロック図である。なお、実施形態1、2と同様の動作をするものに関しては同一の符号を付してある。
撮像装置300は2つの撮像素子を備えたデジタルカメラであり、画像を取得する第1カメラ101と、第2カメラ102と、情報を記憶する記憶部103と、様々な情報を表示すると共にユーザーからの入力操作を受け付ける表示・入力部104と、被写体の形状を設定する形状設定部301と、被写体の検出方向を指定する検出方向設定部302と、撮影方向を指定する撮影方向指定部106、撮像装置の向きを検知する撮影方向検知部である加速度センサ107、2つの異なる視点からの映像から視差を算出する視差算出部108、及び視差を被写体に関する情報であるカメラからの距離や長さに変換する視差変換部109を有する。2つのカメラ101と102は、画像の長手方向と同一の方向に並ぶ形で配置されており、カメラ101が基準カメラであるとする。実施形態1、2と同様、図示しないモード設定部110により被写体測定モードが設定されている場合の動作について詳細を記載する。
図16は本実施形態の撮像装置における処理の流れを示すフローチャートである。まず、形状設定部301は表示・入力部104に形状を設定する為のメニューを表示し、ユーザーに測定対象である被写体の形状を選択させる(ステップS30)。図17はこのときのメニュー例を示している。画像303は表示・入力部に表示されている画像であり、基準カメラである第1カメラ画像101とメニューが重畳されて表示されている。被写体304が表示され、右側には形状を指定するボタンがあり、円を指定するボタン305、立方体・直方体を指定するボタン306、四角形を指定するボタン307がある。ユーザーは測定する被写体の形状をボタンによって選択する。このときは、円であるのでボタン305を選択する。その後、検出方向設定部302は、選択された形状に従って検出方向を設定する(ステップS31)。円である場合には、どの角度から算出しても視差が算出できるため、撮影方向を全方向に設定する。また、立方体・直方体である場合、または平面の四角形である場合には、検出方向を画像長手方向に対して斜め方向に設定する。撮影方向指定部106は、検出方向に従い撮影方向を設定し(ステップS32)、カメラの向きと撮影方向が一致しているかどうかを確認する(ステップS33)。検出方向が全方向であった場合には、撮影方向も全方向とし、カメラの向きと撮影方向は一致しているものと判定する。それ以外の場合は、撮像装置300を2つのカメラが水平に並ぶようにし、被写体に正対するよう入力・表示部104を通じてユーザーに指示し、その状態から指定した撮影方向になるよう撮像装置300を動かすよう指示する。すなわち、斜め方向に検出方向が設定されている場合、撮影方向も斜め方向とし、初期状態から略45度回転することを加速度センサ107によって検知し、一致した状態で撮影を行う。
このように形状に応じて検出方向、撮影方向を設定する事により、様々な形状の被写体に対して多くの箇所で長さを正確に算出する事が可能となる。
以下ステップS35以降は前述の実施形態と同様である為、詳細な説明は省略する。
なお、本実施形態においては、円・立方体などいくつかの形状について示したが、ここで記載した形状に限定するものではない。また、ここではユーザーによって形状を選択する物としたが、形状設定部が複数の形状のテンプレート画像を保持し、パターンマッチング等の手法により自動で形状を認識するようにしても良い。
なお、上記各実施例では被写体の検出方向に従って撮影方向を指定する例を記載したが、検出方向を指定せず、異なる方向で2回撮影するようにしても良い。この場合、一度撮影を行った後、撮影方向指定部により撮影方向を変更するよう指示し、撮影方向検知部により撮影方向が変更されたことを検知して2回目の撮影を行う。この2回のデータそれぞれで視差を算出することにより、異なる角度で撮影されていることから、ユーザーが長さを測定したい所望の2点においてどちらかの画像により確実に視差が算出できるようになる。また、撮影方向検知部を画像処理部として図18に示すように一回目に撮影した基準画像をあらかじめ決められた角度、例えば90度回転して表示・入力部に半透明で表示し、2回目の撮影画像がこの画像に重なる位置に来た際に撮影方向であると検知し2回目の撮影を行うようにしてもよい。図18(a)は1回目の基準カメラにおける撮影画像を示しており、図18(b)は2回目の撮影をするためのプレビュー画像である。点線308は1回目の撮影画像を回転し半透明で示したもの、実線で示す被写体111は現在撮像している被写体である。これが一致するように撮影を行う。重なったかどうかの判定は回転した画像と現在の画像とで差分をとり、差分があらかじめ定めた閾値以下となった際に重なったと判定し、撮影方向にあったと判断できる。このように、基準画像の大きさを各撮影回で合わせることにより、例えば縦と横の長さを同時に表示したい場合などに、特別な大きさ合わせを行う手間を省く事が出来、位置あわせが容易となる。なお、ここでは回転を90度としたが、45度や30度でも良く、これに限定するものではない。
また、上記各実施例では2眼を例に挙げて説明を行っているが、略同一直線状に2眼以上のカメラがある場合も基準カメラを決めて対象となるカメラ間で同様の処理を行えばよく、2眼のカメラに限定するものではない。
また、撮像装置の撮影方向を変える際、表示部にメッセージとして表示する例を示しているが、音声等で誘導するようにしても良い。
また、本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的部を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
また、本発明の各構成要素は、任意に取捨選択することができ、取捨選択した構成を具備する発明も本発明に含まれるものである。
また、本実施の形態で説明した機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。尚、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また前記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。機能の少なくとも一部は、集積回路などのハードウェアで実現しても良い。