カメラ姿勢把握方法及びこれを用いた写真測量方法、これらのプログラム
【課題】 簡単な構成でカメラ姿勢を把握できるカメラ姿勢把握方法を提供する。
【解決手段】 被写体20上に定めた選択平面22に複数の方向参照点Ph1、Ph2を設定すると共に、前記選択平面22と直交する姿勢参照平行線K1,K2を設定し、前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面22及び前記姿勢参照平行線K1,K2を含むようにして前記被写体20をカメラ10で撮影して単写真を得る第1ステップを少なくとも含むカメラ姿勢把握方法である。カメラ姿勢はカメラの傾斜と軸方向とによって把握できる。カメラの傾斜を求めるときに使用する面と軸方向を求めるときに使用する面が互いに直交して、同一面ではないのでカメラ姿勢を精度よく把握できる。
【解決手段】 被写体20上に定めた選択平面22に複数の方向参照点Ph1、Ph2を設定すると共に、前記選択平面22と直交する姿勢参照平行線K1,K2を設定し、前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面22及び前記姿勢参照平行線K1,K2を含むようにして前記被写体20をカメラ10で撮影して単写真を得る第1ステップを少なくとも含むカメラ姿勢把握方法である。カメラ姿勢はカメラの傾斜と軸方向とによって把握できる。カメラの傾斜を求めるときに使用する面と軸方向を求めるときに使用する面が互いに直交して、同一面ではないのでカメラ姿勢を精度よく把握できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、カメラで被写体を撮影(撮像と称される場合もある)したときに、撮影した写真からカメラ姿勢を把握する方法に関する。また、この方法を用いて測量対象物(被写体)を精度よく測量する写真測量技術に関する。
【背景技術】
【0002】
カメラで撮影した被写体の写真からカメラ姿勢を精度よく把握(検出)する技術は、汎用性が高い重要な技術である。例えば、写真測量を行う場合には被写体に対するカメラの姿勢を正確に把握しておかないと、正確な測量を行うことができない。また、最近においては急速にロボット技術が進歩しており、ペットロボット、搬送ロボット、掃除ロボットなど多種、多機能な自立型ロボットが提供されるようになっている。このような自律型ロボットは、一般に目に相当する部分にCCDカメラなどが搭載されており、動作対象物体(被写体)の形状等を把握して所定の動作を行う。よって、ロボットに搭載されたカメラについても、その姿勢を正確に把握することが重要である。カメラ姿勢の把握が不正確な場合には、ロボットが被写体の位置や形状等を誤って認識することになるので誤動作の原因となる。例えば、ロボットがコップを把持する動作では、コップを正確に把持できないなどの問題が発生する。さらに被写体が平面であった場合に、カメラ姿勢を正確に把握できればこの平面上の点の位置を正確に検出できるので入力装置などにも活用できる。以上の説明から、カメラ姿勢を把握する技術は汎用性が高く、重要な技術であることが理解される。
【0003】
なお、上記「カメラ姿勢」とは、撮影を行った被写体上に任意で定めた一平面に対するカメラの姿勢である。より詳細には、被写体が置かれる空間に3次元座標系を定義したときに、上記平面に対するカメラの光軸の角度、またこの光軸回りのカメラの回転角度により定量的に特定されるものである。よって、カメラ姿勢は、上記平面を基準としてカメラがこの平面に対してどのような姿勢で撮影したかを示すことになる。なお、被写体の平面とカメラとは相対的な位置関係にあることから、カメラ姿勢は平面の姿勢を示していると見ることもできる。
【0004】
従来から、カメラ(撮像手段)のカメラ姿勢(撮像姿勢)を把握するための技術が検討されている。例えば特許文献1は、撮像手段で撮像した画像データの情報から被写体の所定平面の姿勢位置や平面上の被検出位置を検出する方法等について開示する。特許文献1は、被写体の平面上に矩形形状を特徴づける特徴点として4点を設定している。平面上に矩形形状を設定すると2組の平行線が存在するので、これらの平行線の消失点を算出することにより平面姿勢を求めている。この特許文献1では、この技術を活用するとスクリーンなどの表示画面上で指示した位置などを直接入力することができるとしている。
【0005】
また、特許文献2は、所定のマーカを平面上に配置して撮像手段で斜方向から撮影して画像情報を得、この画像情報に基づいて二値化画像処理を実施する方法を開示する。このマーカは2個の正方形部が一つの頂点で接するようにして横方向に並べて表示である。このマーカの全体像がCCDカメラ等の撮影視野内に歪みなく取り込まれる。この画像情報を処理してカメラの位置姿勢認識を行っている。この特許文献2の技術を自立型のロボット等に活用すると、対象物体に確実に近付き、マニピュレータ等でその物体を正確に把持する等の動作を行える。
【0006】
【特許文献1】特開平2001−148025号公報
【特許文献2】特開平7−98214号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
上記特許文献1及び特許文献2では、カメラ姿勢の把握をするため平面上に平行線を含んだ矩形形状或いはマーカ(正方形部)が設定されている。ところで、被写体に対するカメラの傾斜を検出する場合には前記矩形形状等が傾斜していること、すなわち矩形形状等に対してカメラを斜めの姿勢で撮影するのが好ましい。一方、矩形形状等と同一平面上にある参照点の座標を求める場合には、上記関係が逆となる。すなわちカメラをこの平面に対して正対に近い状態、つまり平面に対してカメラを真正面に近い姿勢で撮影することが望ましい。
【0008】
カメラ姿勢を把握するためには、平面に対するカメラの傾斜及び平面上の参照点の座標を求めることが必要である。しかしながら、特許文献1、2で示す従来技術にあっては、カメラ傾斜を求めるために用いる平面上に座標を求める参照点が配置されている。よって、カメラ傾斜の検出に好ましいカメラ位置と参照点の座標算出に好ましいカメラ位置とが相反する関係となっている。そのために精度よくカメラ姿勢を検出できない事態が発生するという問題がある。
【0009】
また、前述したようにカメラ姿勢を把握しようとするのは、カメラで捉えた被写体を測量したり、被写体の位置、形状等を特定するためである。よって、カメラ姿勢を正確に把握できない場合、その結果として被写体の測量、位置特定、形状特定等を精度良く実行できないという問題が生じる。また、従来の方法ではより精度が良くなる撮影をするためには2対の平行線方向について遠近深くする必要があり撮影方向の選定に困難がある。例えば建物の水平および垂直の平行線構造または模様を利用する場合では、水平に移動し良い場所を探すとともに垂直の平行線を遠近深く撮影するため上空または地下方向から撮影しなければならない。
【0010】
したがって、本発明の主な目的は、簡単な構成でカメラ姿勢を把握できるカメラ姿勢把握方法を提供することである。
【課題を解決するための手段】
【0011】
上記目的は、被写体上に定めた選択平面に複数の方向参照点を設定すると共に、前記選択平面と直交する姿勢参照平行線を設定し、前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影して単写真を得る第1ステップを少なくとも含む、ことを特徴とするカメラ姿勢把握方法により達成できる。
【0012】
本発明によると、姿勢参照平行線は選択平面に対して直交して配置されており、カメラの傾斜は単写真に撮影されている姿勢参照平行線に基づいて求めることができる。一方、カメラの選択平面に対する軸方向は、単写真に撮影されている選択平面上の方向参照点に基づいて求めることができる。カメラ姿勢は、これらカメラの傾斜と軸方向とによって把握できる。このようにカメラの傾斜を求めるときに使用する面(姿勢参照平行線を含む面)と軸方向を求めるときに使用する面(選択平面)とが互いに直交しており、同一面ではないので上述した相反関係とならない。よって、本発明によると、一枚の単写真を用いてカメラ姿勢を精度良く把握できる。
【0013】
また、カメラ姿勢把握方法は、前記第1ステップと、前記第1ステップで撮影した前記単写真上に2次元座標系を定義し、前記選択平面上の前記方向参照点および前記姿勢参照平行線上に定めた平行参照点を特定して座標を得る第2ステップと前記第2ステップで得た前記方向参照点および前記平行参照点の座標に基づいて、前記選択平面に対するカメラ姿勢を求める第3ステップとをさらに備えるものとしてもよい。被写体を撮影した単写真をこのように処理すれば確実にカメラ姿勢を求めることができる。
【0014】
また、前記第1ステップでは、さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影して前記単写真を取得し、前記第2ステップでは、さらに前記単写真上で前記補助点の座標を取得し、前記第3ステップでは、さらに前記角度α及び前記補助点の座標を参照して、前記補助平面に対するカメラ姿勢を求めるようにしもよい。このようにすると、本発明の適用範囲をさらに広げることができる。
【0015】
また、前記姿勢参照平行線及び前記選択平面の前記方向参照点を特定できる図形を配した標識を、前記被写体に設置して前記第1ステップを実行するようにしてもよい。この場合には、形状等に特徴がない被写体であっても簡単にカメラ姿勢を把握できる。
【0016】
また、被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の3次元座標を求める写真測量方法であって、前述のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求めることを特徴とする写真測量方法として応用してもよい。この写真測量方法は、カメラ姿勢が正確に把握されているので精度良い測量結果を得ることができる。
【0017】
さらに、前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める写真測量方法としてもよい。
【0018】
また、上記目的は、被写体上に定めた選択平面に複数の方向参照点を設定すると共に、前記選択平面と直交する姿勢参照平行線を設定し、前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影した単写真の画像を読み込む第1処理と、前記単写真上に2次元座標系を定義し、前記選択平面上の前記方向参照点および前記姿勢参照平行線上に定めた平行参照点を特定して座標を得る第2処理と、前記方向参照点および前記平行参照点の座標に基づいて、前記選択平面に対するカメラ姿勢を求める第3処理とをコンピュータに実行させることを特徴とするカメラ姿勢把握用のプログラムによっても同様に達成できる。
【0019】
また、カメラ姿勢把握用のプログラムは、さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影した単写真の画像を読み込み、さらに前記単写真上で前記補助点の座標を取得し、さらに前記角度α及び前記補助点の座標に基づいて、前記補助平面に対するカメラ姿勢を求めるものとしてもよい。
【0020】
また、被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の3次元座標を求める写真測量のプログラムであって、前述のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める処理をコンピュータに実行させることを特徴とする写真測量のプログラムであれば、被写体を精度よく測量できる。
【0021】
さらに、前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める処理をコンピュータに実行させることを特徴とする写真測量のプログラムとしてもよい。
【発明の効果】
【0022】
本発明によれば、簡単な構成でカメラ姿勢を把握できるカメラ姿勢把握方法を提供できる。また、より精度がよくなる撮影をするためには1対の平行線方向について遠近深くするよう気を配ることで足りるので撮影方向の選定が従来と比べて容易である。例えば、建物の水平線構造または模様を利用する場合では、地上を水平に移動してよい場所を探すことで足りる。
【発明を実施するための最良の形態】
【0023】
以下、図面を参照して本発明の一実施形態を説明する。ここで示す実施例はカメラで被写体を撮影し、この写真(画像データ)に基づいてカメラ姿勢を把握するものである。なお、ここでは通常の単眼カメラで被写体を一方向から撮影して得た写真を単写真と称する。よって、以下で示す実施例は被写体の単写真からカメラ姿勢を把握するものである。
【0024】
また、前述したようにカメラ姿勢は、被写体上に定めた一平面に対するカメラの姿勢である。以下では、この一平面を特に選択平面と称して説明する。カメラ姿勢は、選択平面とカメラとの相対的な位置関係を示している。仮に基準位置に固定した選択平面を撮影したときに把握される姿勢は、まさしくカメラ姿勢を示すものとなる。一方、これとは逆に基準位置にカメラを固定して、選択平面を撮影した場合に把握される姿勢は選択平面に関するものとなる。本明細書では、このような場合を区別することなくカメラ姿勢と称している。ただし、以下で示す実施例では、理解を容易とするため、カメラの位置を固定して選択平面の姿勢を求める場合について説明している。
【0025】
具体的な実施例を説明する前に、技術的理解を容易とするため本発明のポイントとなる概念を図1及び図2を参照して説明する。なお、カメラ姿勢を求めるためには、選択平面の傾斜と、選択平面の軸方向を求めることが必要である。選択平面上に設定した少なくとも2個の参照点の座標を算出することで、選択平面の基準点と基準方向を確定して軸方向を求めることができる。以下、選択平面の軸方向を定めるための参照点を方向参照点と称して説明する。なお、方向参照点には基準点など位置を確定する役割もある。
【0026】
ここで、選択平面の傾斜を求めること、及び選択平面上の基点と軸方向を定めるための方向参照点の座標を求めることにより、カメラの姿勢を求められることについて説明する。カメラを固定して、選択平面を基盤とする3次元座標系を表現できればよい。なお、カメラの固定とはカメラを基準として3次元座標系を定義することである。
【0027】
例えば、カメラの位置を基準点、レンズの光軸方向をZ軸、撮像面の横軸方向をX軸、縦方向をY軸方向とする第1の3次元座標系を定義する。その一方、例えば方向参照点の1つPh1を基準点とする。そして、この方向参照点Ph1ともう一つの方向参照点Ph2とを結ぶ方向をX軸とする。また、選択平面上でX軸に直交する方向をY軸とし、選択平面に直交する方向をZ軸とする第2の3次元座標系を定義する。
【0028】
ここで、方向参照点Ph1、Ph2の第1の3次元座標系での座標値が判明すれば、第2の3次元座標系の基準点およびX軸が確定する。更に、第1の3次元座標系で表される選択平面の傾斜が判明すれば、選択平面上で第2の3次元座標系でのX軸に直交するY軸方向および選択平面に直交するZ軸方向が確定する。よって、選択平面の傾斜と軸方向とをパラメータとして、カメラ姿勢を表わすことができる。
【0029】
図1は、従来の手法で単写真からカメラ姿勢を求める場合について示した図である。選択平面1の傾斜を算出するため4個の参照点A1〜A4が設定されている。参照点A1〜A4のそれぞれは、矩形形状(長方形)の頂点に配置されている。(A1−A2)線と(A3−A4)線とが一対の平行線、また(A1−A3)線と(A2−A4)線とが一対の平行線となる。また、選択平面1には軸方向を求めるために2個の方向参照点B1、B2が設定される。なお、図1では、点A1と点B1、点A2と点B2とを共用した場合について例示している。
【0030】
図1で示す選択平面1を全ての参照点A、Bを含むようにして、カメラ10で撮影して単写真を得る。単写真に写った参照点Aの像の位置に基づいて選択平面1の傾斜を算出し、更に単写真に写った方向参照点Bの像に基づいて3次元座標を算出して選択平面1の軸方向を求める処理を順に行う。これによりカメラ姿勢を把握する。このように従来にあっては、選択平面1上に点A、Bの全てが配置されている。そのために、先に課題として指摘したような問題が発生することになる。すなわち、選択平面1の傾斜をより正確に検出しようと傾斜をより大きくすると、方向参照点Bの座標値の検出精度が低下するので軸方向の正確性が劣化する。これとは逆に、軸方向の正確性をより向上させようと傾斜をより小さくすると選択平面1の傾斜検出の精度が劣化する。結局、より精度よくカメラ姿勢を把握することが困難となっていた。
【0031】
図2は、単写真からカメラ姿勢を求める本発明の場合について示した図である。カメラ姿勢を算出するための参照点A、Bを役割別に配置する。選択平面1の傾斜を求めるための平行線上に配置する参照点A1〜A4は選択平面1とは別に設定されている。具体的には、選択平面1上の軸方向を求めるための方向参照点B1、B2は選択平面1上に設定されるが、参照点(平行参照点)A1〜A4は選択平面1と直交する平行線K1、K2上に設定する。以下、この平行線K1、K2を姿勢参照平行線と称する。
【0032】
ここで、カメラ10を選択平面1に対しては正対に近い撮影姿勢に設定する。このようにすると、姿勢参照平行線K1、K2は選択平面1に直交しているので、カメラ10の光軸は姿勢参照平行線K1、K2に対しては平行に近い状態となる。このような状態のときに、本明細書では、特にカメラ10に対して姿勢参照平行線K1、K2は「遠近深い状態」であると称し、またカメラ10に対する選択平面1の配置を「遠近浅い状態」であると称することとする。
【0033】
上記説明から明らかなように、本発明では方向参照点B1、B2が置かれる選択平面1と姿勢参照平行線K1、K2とは互いに直行する配置に設定されている。そして、方向参照点B1、B2及び姿勢参照平行線K1、K2上の参照点A1〜A4を含むようにしてカメラ撮影が行われる。よって、従来において問題となった相反関係を解消できる。
【0034】
すなわち、図2で示す本発明の手法は選択平面1の傾斜を検出するための姿勢参照平行線K1、K2を遠近深い状態にできるため、これら参照平行線K1、K2の方向を精度よく検出できる。ここで選択平面1は姿勢参照平行線K1、K2と直交しているので、結果として選択平面1の傾斜を正確に検出できることになる。また、選択平面1にはカメラとの方向関係を検出するための方向参照点B1、B2が配置されている。選択平面1は、カメラ10に対して正対に近い状態、すなわち遠近浅い状態にあるので方向参照点の3次元座標も高い精度で算出できることになる。このように本発明は被写体の選択平面1と直交する姿勢参照平行線K1、K2を設定するという新規な構成を採用するので、カメラ姿勢を高い精度で把握できる。
【0035】
なお、参照点Aは姿勢参照平行線Kの線上の任意の点であればよい。つまり、参照点Aを特定する必要はなく、姿勢参照平行線K上の点であればよい。また、姿勢参照平行線Kは、図2で例示するように2本である場合に限らない。すなわち、姿勢参照平行線Kは3本以上としてもよい。また、姿勢参照平行線Kは互いに平行であればよく、同一の面上に存在しなくてもよい。より多くの姿勢参照平行線Kを参照するとより精度高くしてカメラ姿勢を把握できる。
【0036】
なお、方向参照点Bは選択平面1上に2点以上を設定する。この選択平面1は被写体の一面である。実際にカメラ姿勢の把握を行うときには被写体の状況により、カメラから全面が見える選択平面1を設定できないという場合もある。このように選択平面1が被写体中に確認し難い場合であっても次のようにして対処できる。例えば、方向参照点Bは姿勢参照平行線Kと直交する線(選択平面1の要素である線)上の点とすることができる。また、方向参照点Bは姿勢参照平行線Kと選択平面1が交差する点(選択平面1の要素である点)としてもよい。つまり、選択平面1の全貌が見えなくても姿勢参照平行線KとKに直交する1つの直線との交点が2点以上見えるのでもよい。以上のように、図2で示す本発明の手法は参照する点の配置に関する要件が単純であり設定し易い。また、姿勢参照平行線及びこれと直交する選択平面1や直線は造営物によくある形状または模様を活用でるのでカメラ姿勢を簡便に把握できることになる。以上で説明したことを前提として実施例を説明する。
【0037】
図3から図11を参照して単写真からカメラ姿勢を把握する場合の処理について具体的にして説明する。ただし、この実施例は単写真からカメラ姿勢を把握して、被写体を写真測量する場合ついて説明する。すなわち、この実施例はカメラ姿勢の把握を写真測量に応用した場合の例について述べる。以下では、1方向から撮影した単写真を用いての写真測量、および2方向(複数方向)から撮影した2枚(複数)の単写真を用いて写真測量の一例について説明する。
【0038】
図3は共同住宅を被写体20としてカメラ撮影を行い、カメラ姿勢を把握してから測量を行う様子を示した図である。図3では2つの方向それぞれからカメラ10で被写体20を撮影して、2枚の単写真を得ている。まず、一方のカメラ10aで撮影した単写真15aを用いてカメラ姿勢を求める場合について説明する。図3の下側には、カメラ10aで撮影した単写真15aと、カメラ10bで撮影した単写真15bを示している。
【0039】
図4は、被写体20の撮影を行ってカメラ姿勢を求め、さらに写真測量を行うまでの処理をまとめたフローチャートである。このフローチャートに沿って、図3を参照して説明する。まずステップS102では図3のカメラ10aで被測量点PNが置かれた被写体20を撮影する。被写体20はほぼ直方体と見られる四階建ての共同住宅である。ここでは被測量点PNが置かれた共同住宅の正面(ベランダの手すりなどがある前面)が選択平面22とされている。カメラ10aは選択平面22に対して遠近浅い状態(正対に近い状態)となるように撮影姿勢が設定される。被写体20の左の平面(住宅の左壁面)21は水平の直線模様に姿勢参照平行線K1、K2等が設定される参照平面である。この参照平面21に対してはカメラ10aの撮影姿勢が遠近深くなるように設定されている。このように設定して撮影したのが図3の単写真15aである。なお、図3中の15bも、同様に設定して異なる方向から撮影した単写真である。
【0040】
この共同住宅は、正面(選択平面22)と、その側面(参照平面21)が直角である。よって、参照平面21上に設定した水平の直線模様である姿勢参照平行線K1およびK2は、選択平面22と直交する平行線となる。姿勢参照平行線K1およびK2は、参照平面21に存在する線状模様等を利用して設定すればよい。ただし、姿勢参照平行線K1、K2は選択平面22と直交している平行線であれば、必ずしも参照平面21上でなくてもよい。例えば単写真15aに写っていれば屋上の縁K3、K4でもよい。また、2本以上の複数本を設定してもよい。同様に、選択平面22は姿勢参照平行線K1、K2と直交している平面であればよい。例えばベランダの手すりがある面の他、その奥の窓22pのある面でもよい。
【0041】
方向参照点Ph1、Ph2を選択平面22上に設定する。選択平面22が被写体上で見え難い場合もある。例えば参照平面21は見えるが、選択平面22は見難く姿勢参照平行線K1、K2と直交する線(この線は選択平面22の一部である)は確認できるという場合がある。このような場合は姿勢参照平行線K1、K2に直交する1つの線上の2点Ph3、Ph4を方向参照点としてもよい。また、姿勢参照平行線K1、K2と直交する1つの線(この線も選択平面22の一部である)と、この平行線K1、K2とが交差する位置の参照点Ph5、Ph6としてもよい。
【0042】
なお、上記姿勢参照平行線K1、K2については、建物屋内であれば天井、床、壁にある目地などの平行線があるので、これらを利用してもよい。同様に、敷地内に方形の石畳がある場合にはその目地を利用してもよい。
【0043】
選択平面22には測量の際に用いる寸法参照点Ps1、Ps2が設定されている。寸法参照点Ps1、Ps2の間隔Ls(参照寸法)を実測しておく。被写体20に設定した、選択平面22、参照平面21が入るようにして、カメラ10aで被写体20を撮影して単写真を得る。カメラ10aがデジタルカメラ等のようにデータを保存できるものである場合には、画像データをICカード等に保存する。また、カメラ10aがフィルムを用いたものである場合には撮影したフィルム或いは写真をスキャナで読取って画像データ化する。
【0044】
ここで、本実施例を実施するのに好適であるハードウエアについて簡単に説明しておく。図5は、この実施例を実施するのに好適であるハードウエア構成の一例を示すブロック図である。装置としてはパーソナルコンピュータ30等の情報処理装置を使用する。システム全体を制御する中央演算処理装置(CPU)32には、入出力制御部(インターフェース)23を介してキーボード25、マウス27、表示装置(CRT、LCDなど)29、プリンタ31、ICカード読み取り装置33等が接続される。例えば、デジタルカメラで撮影された画像はICカード34を介して入力される。画像は表示装置(ディスプレイ)29により観察できる。通常のカメラで撮影された写真は、フィルムスキャナ35によってデジタル画像化して入力される。
【0045】
上記コンピュータ30は、カメラ姿勢を求めるためのプログラム及び被写体を測量するためのプログラム、並びにこれらのプログラムを実行するのに必要なデータ、測量で実測したデータ等はHDD37に格納することができる。コンピュータ30は、必要なデータをHDD37から読み出して所定の処理を実行する。なお、図示を省略しているが、上記CPU32は所定のメモリを備えている。このメモリにプログラム等を格納してもよい。
【0046】
ステップS104以降は上記コンピュータ30を用いて実行されるデータ処理作業である。このステップS104ではステップS102で得られた画像が、例えば図5のICカードリーダ33によりコンピュータ30に読み込まれる。参照寸法Lsはキーボード25により入力される。各データはハードディスクHDD37などに保存される。
【0047】
ステップS106ではステップS104で読み込まれた単写真15aがディスプレイ29に表示される。姿勢参照平行線K1についてはその直線像上の任意の参照点PL1、PL2を、K2については参照点PL3、PL4を特定する。これらの参照点PL1〜PL4を平行参照点と称する。ディスプレイ29に表示している単写真画像上で2次元座標系を定義して、平行参照点PL1〜PL4をマウス27で指示して座標を入力する。この座標をピクセル座標と称する。上記平行参照点PL1〜PL4のそれぞれは姿勢参照平行線K1、K2の末端に設定すると検出精度を向上させることができる。
【0048】
続いて、被測量点Pn、方向参照点Ph1、Ph2および寸法参照点Ps1、Ps2についても特定してマウスでピクセル座標を入力する。入力された各ピクセル座標はカメラ特性データにより仮想撮像面Ff上の座標に変換され保存される。なお、仮想撮像面Ffはカメラ10の前方一定距離Lにカメラ10の光軸と直交すると想定した平面であり、この仮想撮像面Ffに像が結ばれるものと仮想したものである。
【0049】
ここで、ピクセル座標と仮想撮像面Ff上の座標との関係について説明しておく。ピクセル座標とは、得られた写真のデータを画面に表示した場合、画面上に横をXd軸、縦をYd軸、座標値の単位を画素数(ピクセル)と定義して像の位置を表す2次元座標である。写真または本当の撮像面上の像位置が表されるのでカメラのレンズの歪も含まれている。一方、仮想撮像面座標はピンホールカメラのように光学系に歪がないものとして被写体の像が結ばれるように仮想した撮像面の上に定義した2次元座標であり、横軸をXf軸、縦軸をYf軸、焦点距離をLとし座標値をLと同じ単位(実寸法mmなど)で表す。また、カメラ特性データとは、ピクセル座標と仮想撮像面座標との間の変換に用い、カメラの設定およびレンズの特性に基づき作成される数表である。更に詳細な説明は本題からはずれるので省略する。以降、像が特定されマウスで入力されたピクセル座標は光学系の歪を無くし実寸法で表された仮想撮像面座標に変換されたものとして説明する。
【0050】
次のステップS108では上記ステップS106で得た姿勢参照平行線K1、K2上の平行参照点PL1〜PL4の仮想撮像面座標および選択平面22上の方向参照点Ph1、Ph2の仮想撮像面座標に基づきカメラ姿勢を算出する。
【0051】
まず、仮想撮像面上の姿勢参照平行線K1、K2の像から消失点Pvの座標xv、yvを算出する。図6はその概念図である。この図6の写真上に直線k1(PL1−PL2)および直線k2(PL3−PL4)の平行線の像がある。平行線を傾斜させて撮影されており、写真上ではそれらの線像の延長が交差する所に消失点Pvが存在する。消失点は平行線の撮像である線の延長が集合する点もしくは交点である。平面上の直線の一般式はyfLn=Akn・xfLn+Cknである。ここで、xfおよびyfは直線上の点の仮想撮像面上での座標値、A、Cは直線の式のパラメータ、添え字knは線像の区別、Lnは線上の点の添え字と同じで点の区別を示す。各線に属する点の座標を条件として代入する。
【0052】
線k1においては下記式(1)、(2)
yfL1=Ak1・xfL1+Ck1 (1)
yfL2=Ak1・xfL2+Ck1 (2)
線k2においては下記式(3)、(4)
yfL3=Ak2・xfL3+Ck2 (3)
yfL4=Ak2・xfL4+Ck2 (4)
の式を立てることができる。
【0053】
上記各線でのパラメータAkn、Cknを求めると式(1)、(2)については、下記式(5)、(6)、
Ak1=(yfL1−yfL2)/(xfL1−xfL2) (5)
Ck1=(xfL1・yfL2−xfL2・yfL1)/(xfL1−xfL2)
(6)
また、式(3)、(4)については、下記式(7)、(8)、
Ak2=(yfL3−yfL4)/(xfL3−xfL4) (7)
Ck2=(xfL3・yfL4−xfL4・yfL3)/(xfL3−xfL4)
(8)
となる。
【0054】
以上で求めた写真上での2直線の方程式のパラメータから、それらの交差点すなわち写真上の消失点Pvの座標を求める。条件を2本の線においてyvが同一として式(9)(10)を立てる。
yv=Ak1・xv+Ck1 (9)
yv=Ak2・xv+Ck2 (10)
上記2式を解くと、下記式(11)、(12)を得る。
xv=(Ck2−Ck1)/(−Ak2+Ak1) (11)
yv=(−Ck1・Ak2+Ck2・Ak1)/(−Ak2+Ak1)
(12)
【0055】
消失点Pvの座標yv、xvに基づき選択平面22の方程式を求める。図7は仮想撮像面Ff上の消失点Pvと選択平面22の関係等を示した幾何図である。カメラ10の光軸方向をZ軸、仮想撮像面座標のXf軸をX軸、仮想撮像面座標のYf軸をY軸とした3次元座標で示している。図7の(A)、(B)は、各投影図を示している。
【0056】
上記仮想撮像面Ffはカメラ10の前方で焦点距離Lに置かれ被写体の像が歪み無く結ばれると仮想した面である。逆にカメラ10とFf上の像(Pfn等)を結ぶ直線を前方に延長すれば像の実体に至る。ところで、消失点とは実体が無く、平行線を撮影した場合に延長先が無限縁にあり一点に集束したように見えるものである。すなわち、ここでの消失点は単なる点というのでははなく方向性を示すものである。その消失点の方向は同一の方向である平行線全ての向く方向に共通である。つまり、カメラ10とPvを結ぶ直線は平行線の方向である。この方向が分かれば直行する面すなわち選択平面22の傾きを求められる。選択平面22の傾斜はXZ断面投影における傾斜aおよびXY断面投影における傾斜bで表される。
【0057】
よって、図7から選択平面22の一般式は下記式(13)となる。
z=Ax+By+C (13)
そして、図7から選択平面22のXZ座標面投影傾斜aおよびYZ座標面投影傾斜bは下記式(14)、(15)となる。
a=xv/L (14)
b=yv/L (15)
【0058】
先の一般式(13)に、式(14)、(15)を当てはめると、下記式(16)を得ることができる。
z=−ax−by+C (16)
(A=−a、B=−b)
【0059】
上記式(16)により選択平面22のカメラ10aに対する傾きが判明する。ここでCはまだ決定されないので仮に「1」とした模型式にしておく。この式(16)に基づいて単写真平面上の点像位置、即ち仮想撮像面座標値xf、yfから選択平面22上の点の3次元座標を求めることができる。すなわち、下記式(17)によりx、下記式(18)によりy、下記式(19)によりzを得ることができる。(PfnとPNとの関係は図7を参照)
【数1】
【0060】
次に、上記選択平面22の座標の軸方向を確定する。そのために方向参照点Ph1、Ph2を使用する。例えば、選択平面22上の線分Ph2−Ph1方向をX軸またはY軸などとして方向を設定する(図3参照)。このようにして、方向参照点Ph2、Ph1の3次元座標を求めることで選択平面22上の座標の軸方向を確定できる。
【0061】
上記式(17)〜(19)に方向参照点Ph1、Ph2の仮想撮像面座標を代入することで、3次元座標が求められる。これで選択平面22上の座標軸方向が判明する。以上のようにしてカメラ姿勢が把握(検出)される。ただし、まだ模型としての把握であるので、必要に応じて後述するステップS112のように実寸の座標を得る方法を基にCを求め実寸の式を得てもよい。
【0062】
続いて、上記で得た結果を測量へ応用する場合について説明する。先ず、1方向から撮影した1枚の写真(すなわち、単写真)を用いた写真測量について説明する。ステップS110において選択平面22上にある被測量点PNについては式(17)〜(19)にPnの仮想撮像面座標を代入することにより3次元座標を算出できる。次のステップS112では模型で扱ってきた座標を実寸に変換する。
【0063】
図3で示している寸法参照点2点(Ps1,Ps2)について式(17)〜(19)により座標を求める。その間隔lsを次の式(20)により求める。なお、添字s1,s2は寸法参照点Ps1,Ps2の模型の座標であることを示す。
ls=√{(xs1−xs2)2+(ys1−ys2)2+(zs1−zs2)2} (20)
【0064】
次いで、予めステップS102で実測した間隔Ls(参照寸法)とlsとの比を求め、この比を求めた模型の各座標値に掛ける。以上のステップにより、被測量点Pnの実際の3次元座標値が算出される。以上のようにして1方向から撮影した1枚の写真により写真測量を行える。
【0065】
さらに、以下では2方向から撮影した2枚(複数)の写真により測量する写真測量に応用する例について説明する。ここでの各ステップは上記で説明した1方向から撮影した1枚の写真による写真測量とほぼ同様なので同じ図を流用して説明する。
【0066】
図4のフロー図に沿って説明する。ステップS102では図3のようにカメラ10aおよびカメラ10bで撮影し写真15aおよび15bの2枚を得る。撮影方法は1枚の写真による場合と同様である。カメラ10aとカメラ10bの位置は水平または垂直に離れた方向から撮影する。例えば30°方向を変えて撮影する。ステップS102〜S108は1枚の写真による場合と同様に行いそれぞれのカメラ姿勢を求める。
【0067】
ステップS110ではS108で求められた写真毎のカメラ姿勢を用いて2つのカメラ姿勢を合併する場合の一例を説明する。ステップS108では写真毎に独立した座標系でカメラ姿勢を求めている。そのため座標系および模型座標の縮尺が一致していない。よって、これらを対応させることが必要である。概要としては、2つの方向から撮影した2枚の写真15aおよび15bそれぞれからカメラ姿勢として得られた方向参照点Ph1、Ph2の模型座標を一致させるよう座標を適宜に回転させ、また伸縮させる。この回転、伸縮に伴ってカメラの位置Cca、Ccb(当初の座標の要素x、y、zは0)およびカメラの向きがどうなるかを求める。カメラの向きとしてはカメラの光軸が平面22と交差する点C0a、C0b(当初の座標の要素x、yは0、zはCaまたはCb)の座標を用いる。
【0068】
上記による回転、伸縮はカメラ姿勢として得られた平面22の模型の方程式のパラメータAa、Ba、Ca、Ab、Bb、Cb(写真と同じ添え字aおよびbを付した)に基づいて行う。
【0069】
図8(A)は合併された各点の配置を概念的に示した図である。ここで符号7はカメラ基軸(カメラの主点Cca、Ccbを結ぶ線)、また符合9a、9bはそれぞれのカメラの光軸方向を示している。また、図8(B)はカメラの光軸方向の線9a、9bをカメラ基軸の直交断面に投影した線2(9aの投影)、3(9bの投影)を示した図である。
【0070】
図8を参照して説明する。ステップS108で写真毎に算出した平面22の模型の方程式では、前述したようにCをとりあえず1としてあるので縮尺が合致していない。これらを合せるには、2つの方向参照点の模型座標上の間隔を2つの写真間で揃えるようパラメータCaまたはCbに係数を掛けることで行う。方向参照点間の模型上の間隔ea、ebを次の式(21)、(22)により求める。なお、添え字a、bは関係する写真15a、15bと同じ添え字を付している。方向参照点の模型座標は式(17)〜(19)で求めたx、y、zである。添え字は方向参照点h1、h2の区別、また写真の添え字a、bの区別を示している。
ea=√{(xh2a−xh1a)2+(yh2a−yh1a)2+(zh2a−zh1a)2} (21)
eb=√{(xh2b−xh1b)2+(yh2b−yh1b)2+(zh2b−zh1b)2} (22)
【0071】
パラメータCaを1に固定する場合には、Cbに係数ea/ebを掛けて修正すればよい。これにより2つの平面22の模型の方程式の縮尺が一致する。Cb修正後の式で、模型の3次元座標を計算する。
【0072】
ここで、どのような座標系に統合するかであるが、図8(A)のように平面22にXY軸を置き、平面22の鉛直方向をZ軸、方向参照点のPh1を基点、方向参照点のPh1からPh2を見た方向をX軸とする例を次に示す。
【0073】
各点の座標について各写真(15a、15b)毎に以下の座標変換をする。各点の座標とは各カメラ10a、10bにおけるPh1a(xh1a、yh1a,zh1a)、Ph1b(xh1b、yh1b、zh1b)、Ph2a(xh2a、yh2a、zh2a)、Ph2b(xh2b、yh2b、zh2b)、Cca(x=0、y=0、z=0)、Ccb(x=0、y=0、z=0)、C0a(x=0、y=0、z=Ca)、C0b(x=0、y=0、z=Cb)である。なお、写真15a、15b、方向参照点Ph1、Ph2に関するものとして同じ添え字を付している。
【0074】
座標変換1:Ph1を基点にする。Ph1aまたはPh1bの座標x、y、zの行列を[Ph1]、基点変更前の各点のx、y、z行列を[X0]、変更後を[X1]とすると、下式(23)となる。
[X1]=[X0]−[Ph1] (23)
【0075】
座標変換2:X軸を面22に合せる。回転前の各点のx、y、z行列を[X1]、回転後を[X2]とすると、下式(24)となる。
[X2]=[R1][X1] (24)
ここで、[R1]は下式(25)で、
u=tan−1(A) (25)
Aは写真別にパラメータAaまたはAbを代入して得ることができる。
とすれば、
【数2】
である。
【0076】
座標変換3:Y軸を面22に合せる。回転前の各点のx、y、z行列を[X2]、回転後を[X3]とすると下記式(27)となる。
[X3]=[R2][X2] (27)
また、
[R2]は下記式(28)となり、
【数3】
AおよびBは写真別にパラメータAa、BaまたはAb、Bbを代入する。
とすれば、下記式(29)となる。
【数4】
【0077】
座標変換4:X軸をPh2−Ph1に合せる。回転前の各点のx、y、z行列を[X3]、回転後を[X4]とすると、下記式(30)となる。
[X4]=[R3][X3] (30)
また、
[R3]は下記式(31)となる。
【数5】
上の式中x、y値は[X3]における方向参照点Ph2の座標値である。関係する点と同じ添え字を付している。
とすれば、下記式(32)を得る。
【数6】
【0078】
以上を2つの写真毎に行うとカメラの位置Cca、Ccbは図8の(A)のように同じ座標系になり相互の位置関係が明らかになる。この結果から以降の写真測量計算をやり易くするため次のパラメータを設定する。図8および図9により説明する。なお、図9は測量のために撮影しているカメラと被写体の配置および2つのカメラ10a、bにおける撮像と被写体上の点との関係を示している。カメラ10aについて詳しく記してある。(A)はカメラ基軸7の直交断面にカメラの光軸の線9a、9bおよびPn方向線を投影した図である。(B)はステップ102における撮影の様子とカメラにおける撮像と点の幾何関係を概念的に示す図である。(C)はFf上の仮想撮像であるが、カメラの傾きσa逆転してカメラ基軸の仮想撮像をX軸に合せた図である。(D)は仮想撮像座標Ff上の仮想撮像である。15は画面のX軸、13はカメラ基軸の仮想撮像でX軸15に対してカメラの傾きσを成している。Pccはもう一方のカメラ10の位置が写ったとした場合の仮想像(画面内に入るとは限らない)である。
【0079】
図8(A)で2枚の写真を撮影した2つのカメラの位置を結ぶ線をカメラ基軸7とする。カメラの光軸の方向をカメラ10aからカメラ10bを見た方向を基準にしてカメラ基軸と成す角度をαa0、αb0。図8(B)でカメラ基軸を軸に回転する角度でカメラ10aの光軸方向9aを基準にしたカメラ10bの光軸方向9bをβとする。カメラの光軸を軸にしたカメラの回転でカメラ基軸に対してカメラの仮想撮像面の横軸(撮像のX軸)が傾く角度σa、σb(図9の(D)のσを参照)を求める。これらのパラメータをアングル定数と称する。
【0080】
上記αa、αb、βは合併した座標について次の座標変換をして求める。基点をカメラ10a、カメラ基軸をZ軸、カメラ基軸を軸にして回転する角度の基準をカメラ10aの光軸方向とするよう座標を変換する。
【0081】
座標変換5:基点をカメラ10aにする。合併した[X4]中Ccaの座標x、y、zの行列を[Cca]、基点変更前の各点のx、y、z行列を[X4]、変更後を[X5]とすると、下記式(33)となる。
[X5]=[X4]−[Cca] (33)
【0082】
座標変換6:X軸をカメラ基軸(10b−10a)のXY面投影方向に合せる。回転前の各点のx、y、z行列を[X5]、回転後を[X6]とすると、下記式(34)となる。
[X6]=[R4][X5] (34)
[R4]は
【数7】
上の式中x、y値はCcbの[X5]における座標値である。Ccbと同じ添え字を付している。
とすると、下記式(36)を得る。
【数8】
【0083】
座標変換7:Z軸をカメラ基軸(10b−10a)の方向に合せる。回転前の各点のx、y、z行列を[X6]、回転後を[X7]とすると
[X7]=[R5][X6] (37)
【0084】
また、[R5]は、
【数9】
上の式中x、z値はCcbの[X6]における座標値である。Ccbと同じ添え字を付している。
とすると、
【数10】
である。
【0085】
座標変換8:X軸をカメラ10aの光軸のXY面投影方向に合せる。回転前の各点のx、y、z行列を[X7]、回転後を[X8]とすると、下記式(40)を得る。
[X8]=[R6][X7] (40)
【0086】
また、[R6]は、
【数11】
上の式中x、y値はC0aの[X7]における座標値である。C0aと同じ添え字を付している。
とすると、下記式(42)を得る。
【数12】
【0087】
そして、求めたいパラメータは次の各式で求められる。
【数13】
上の式中x、z値はC0aの[X8]における座標値である。C0aと同じ添え字を付している。
【数14】
上の式中x、y、z値はC0b、Ccbの[X8]における座標値である。関係する点と同じ添え字を付している。
【数15】
上の式中x、y値はC0bの[X8]における座標値である。C0bと同じ添え字を付している。
【0088】
次にσa、σbである。σaは合併したカメラ10bの座標をカメラ10aの元の座標系に戻して求める。つまり、CcaおよびCcbの[X4]について、カメラ10a関係の座標を合併するために用いた座標変換の逆を次式(46)のように行う。
[X1]=[R1a]−1[R2a]−1[R3a]−1[X4] (46)
添え字のaは式(26)、(29)、(32)のカメラ10aに関する回転を意味している。
【0089】
[X0]=[X1]−[Cca] (47)
上記[Cca]は[X1]におけるカメラ10aのx、y、z座標値の行列である。式(47)では[X1][X0]はCcbだけ行えばよい。σa0はカメラの光軸を軸にしたカメラの回転であって、カメラ基軸に対してカメラ(撮像面のX軸)が傾く角度で表せる。カメラの撮像で見ればもう一つのカメラの方向(カメラ基軸の撮像で実像は無い)が撮像面のX軸と成す角度でもある(符号が負となるが)。したがって次式(48)で表せる。
【数16】
上式中x、y値は式(47)におけるCcbの[X0]の座標値である。Ccbと同じ添え字を付している。
【0090】
同様にσbは合併したカメラ10aの座標をカメラ10bの元の座標系に戻して求める。つまり、CcaおよびCcbの[X4]についてカメラ10b関係の座標を合併するために用いた座標変換の逆を次式(49)のように行う。
[X1]=[R1b]−1[R2b]−1[R3b]−1[X4] (49)
添え字bは式(26)、(29)、(32)のカメラ10bに関する回転を意味する。
【0091】
[X0]=[X1]−[Ccb] (50)
上記[Ccb]は[X1]におけるカメラ10bのx、y、z座標値の行列である。上式(50)では[X1]、[X0]はCcaだけ行えばよい。
【0092】
そして、σbは次式で表せる。
【数17】
上式中x、y値は式(50)におけるCcaの[X0]の座標値である。Ccaと同じ添え字を付している。以上でアングル定数が求まる。つまり、2つのカメラ姿勢が合併されたことになる。
【0093】
以上はカメラ姿勢を合併する方法で本発明を実施する一例である。カメラ姿勢の把握には従来の方法として共面条件を用いる方法、視差を消去する方法、共線条件を用いる方法等がある。従来の方法でカメラ姿勢を求める方法と本発明である単写真毎のカメラ姿勢把握を組み合わせるのもよい。例えば、従来の方法でカメラ姿勢を求める方法の中で本発明を一部に含んで精度向上の補助をさせるのでもよい。要するに計算の方法は問わない。
【0094】
以上のようにアングル定数が求まったら、アングル定数および被測量点Pnの仮想撮像面座標に基づき三角測量計算ができるようになる。まず3次元の三角測量計算に必要なデータを準備する。すなわち、カメラ10aからカメラ10bを見た方向を基準にした被測量点Pn方向の角度αan,αbnおよびカメラ基軸を軸にした角度でカメラ10a,bに共通の基準方向とした被測量点Pnの回転角βan、βbnを求める。三角測量計算は被測量点Pnの他、寸法参照点Ps1,Ps2についても行われるが、代表して被測量点Pnで説明する。計算に際してはステップS106で示したとおりPnについてカメラ特性データを用いてピクセル座標を仮想撮像面座標xfn、yfnに変換してある。
【0095】
αan、βanは先に示した図9に示す幾何関係から次式で算出することができる。
【数18】
αbn、βbnについても同様に求められる。
【0096】
回転角βに関しては、式(59)から角βan,βbnが得られるが、これらはそれぞれのカメラの光軸線9a,9bを基準とした回転角である。どちらを基準にするかで採用すればよい。本説明では9aを基準にしているのでβanを採用する。
【0097】
以上に基づいて、被測量点Pnの3次元の模型座標を算出する。三角測量のためにはカメラ10a,b間の距離Eも必要であるが、当面不明なので仮に1としておき相似形の3次元座標(模型と記す)を求める。図10に示すように、カメラ10aを原点とした被測量点Pnの直交座標(x,y,z)は、三角測量の原理から次の式によって求められる。図10(B)に示すように、カメラ基軸7をX軸方向、紙面をX−Y平面、それに直交する軸をZ軸方向、カメラ10a,b間距離をE、図10(A)に示すようにX軸から鉛直に被測量点Pnまでの距離をHとする。
【数19】
【0098】
以上の式で被測量点Pnおよび寸法参照点Ps1、Ps2の模型座標を求める。ステップS110では、ステップS112でEが判明するまで以上の式で寸法参照点の模型座標だけを算出しておくのでもよい。ステップS112では、仮の値とした距離Eを実際の値を求める。それにはまず、ステップS110で求められた寸法参照点Ps1,Ps2の模型座標値から次の式(64)によりその間隔lsを求める。なお、添字s1,s2は寸法参照点Ps1,Ps2の模型の座標であることを示す。
ls=√{(xs1−xs2)2+(ys1−ys2)2+(zs1−zs2)2} (64)
【0099】
次いで、ステップS102で実測した参照寸法Lsとlsとの比を求める。この比を求めた各模型座標値に掛ける。または、ステップS110に戻り上記式(60)のEに掛けて被測量点Pnの実寸法の座標を直接求めてもよい。以上のステップにより、カメラ10aを原点とした、被測量点Pnの3次元座標の実際の値が算出される。
【0100】
以上の方法により2方向からの写真による写真測量ができる。2方向からの写真による写真測量には、共面条件を用いる方法、視差を消去する方法、共線条件を用いる方法といった従来の方法がある。いずれも2方向の撮影する方向に差を設けることにより生じた被写体の像の違い、すなわち視差を基にカメラの姿勢を求めている。本実施例では2方向の差に関係なくカメラの姿勢が求められる。カメラの姿勢を求める精度も2方向の差に関係ない。2方向の写真の視差を基にカメラの姿勢を求める従来の写真測量方法では、カメラの姿勢を算出する精度が2方向の差が小さくなるにつれて低下していた。本実施例の方法によれば、2方向の差が少ない場合の測量においてもカメラ姿勢を精度よく算出できる。
【0101】
また、従来の方法ではカメラの姿勢を算出する際に逐次近似法、すなわち繰り返し計算のステップがあり計算に時間を要していた。本実施例による場合は繰り返しがないので計算が早くなる。また、従来の方法と組み合わせたとしても初期値を解近傍に設定できるので計算が早くなる。
【0102】
上記から明らかなようにカメラ姿勢を求めることが目的である場合は図4のステップS102からステップS108までを実行すればよい。これを利用して写真測量を実行する場合には、更にステップS110およびステップS112を実行すればよい。ステップS102〜S108によってカメラ姿勢が正確に把握できるので、これを利用した測量ステップS110、S112では精度よく被写体を測量できる。
【0103】
上記実施例は、共同住宅を被写体に設定した場合を例示したので種々の点を参照点に利用できる。しかし、被写体が自然の造形物などである場合には、参照点が設定し難いというときが想定される。このようなときには、図11で示すような標識を被写体に添えて撮影してもよい。図11(A)、(B)は、被写体に適用する標識の例を示した図である。(A)、(B)で示すように正確な平行線である2本以上の直線一対(例えばK1、K2)または平行線の特定に利用できる点(例えばPL1〜PL4)を形状または模様として配し、かつ、一対の平行線に鉛直に交差する直線(K3)線上の点(例えばPh1、Ph2)が形状または模様として配されたものであればよい。
【0104】
また、標識に設定する姿勢参照平行線K1、K2は線間隔に比べ長さが長いのがよい。例えば1.5倍以上で使用勝手が悪くならない限り長く設定するのがよい。このように姿勢参照平行線K1、K2を相対的に長く設定すると、撮影で上記のように遠近が深い状態に配しても平行線の撮像が大きく(長く)写るので、方向の検出精度を上げることができる。
【0105】
また、方向参照点Ph1およびPh2を寸法参照点Ps1、Ps2と兼ねてその間隔Lsを実測または規定値としてもよい。点および線を光り反射率の高い印として特定しやすくするのもよい。この標識を被写体全体に対してできるだけ幅広く写るように、かつ姿勢参照平行線K1、K2が撮影の遠近方向におおよそ向くように地面、床に置くまたは壁等に掲げる。以上の姿勢参照平行線のあり方については被写体の構造、模様を利用する場合も同様である。
【0106】
上記実施例では単写真からカメラ姿勢を把握し、これを測量に応用する場合について述べた。しかし、カメラ姿勢を把握する技術は、前述したように測量以外でも、ロボット、入力装置等の他の分野でも広く活用できる。例えばカメラに直接関係するものでは、カメラを据え付けた機器など物体の姿勢、または被写体を機器など物体とした場合の姿勢把握等に採用できる。また、姿勢参照平行線や種々の参照点を高輝度にするなどして画像から自動検出する方法等と組み合わせれば、機器または物体の高精度な姿勢の動的自動検出もしくは機器または物体の自動姿勢制御にも応用できる。
【0107】
さらに図12を参照して上述した実施例の応用例について簡単に説明する。選択平面22の傾斜を確認した以後について説明する。選択平面22を第1平面として、この第1平面と交差する第2平面を設定する。この第2平面を補助平面40と称する。図12は、第1平面としての選択平面22と第2平面としての補助平面40との配置関係を示した図である。補助平面40は、選択平面22に対して次の関係を持って配置されている。
【0108】
選択平面22に対して、補助平面40は角度αで交差されている。そして、これら2面の交線上に共有する2個の補助点Pc1、Pc2が設定されている。カメラ撮影を行う際に、さらに角度α、補助点Pc1、Pc2を含むようにして単写真を得る。角度α、補助点Pc1、Pc2を用いれば、選択平面22との接続関係からカメラ10に対する補助平面40の傾斜を算出できる。また、Pc1、Pc2は選択平面22上の点として3次元座標を算出できる。Pc1、Pc2は補助平面40上の方向参照点Ph1、Ph2としても併用できる。上記のように選択平面22のカメラ姿勢は把握できる。よって、補助平面40のカメラ姿勢を把握できる。
【0109】
上記補助平面40を用いることによりカメラの姿勢を把握する場合の基準平面、すなわち基準座標系を選択平面22以外にも設定することができる。写真測量で1方向から撮影した写真1枚による写真測量の実施例でカメラとの姿勢関係が把握された選択平面22上の被測量点を測量する方法について既に述べた。カメラとの姿勢関係が把握された補助平面40上についても同様に被測量点を測量できる。つまり1方向から撮影した写真一枚による写真測量でも、補助平面40を組み合わせれば選択平面22以外の平面上、さらには複数の平面上にある被測量点の測量が可能になる。図12で示すように、選択平面22に対して更に補助平面40を設定するようにすれば、本発明の汎用性が向上するので適用範囲を広げることができる。
【0110】
以上本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【0111】
【図1】従来の手法で単写真からカメラ姿勢を求める場合について示した図である。
【図2】単写真からカメラ姿勢を求める本発明の場合について示した図である。
【図3】共同住宅を被写体としてカメラ撮影を行い、カメラ姿勢を把握してから測量を行う実施例について示した図である。
【図4】被写体の撮影を行ってカメラ姿勢を求め、さらに写真測量を行うまでの処理をまとめたフローチャートである。
【図5】実施例を実施するのに好適であるハードウエア構成の例を示したブロック図である。
【図6】姿勢参照平行線の消失点を算出する概念について示した図である。
【図7】仮想撮像面上の消失点と選択平面との関係を示した幾何図である。
【図8】(A)は合併された各点の配置を概念的に示した図、(B)はカメラの光軸方向の線をカメラ基軸の直交断面に投影した線の図である。
【図9】測量のために撮影しているカメラと被写体の配置および2つのカメラにおける撮像と被写体上の点との関係を示した図である。
【図10】三角測量の原理について示した図である。
【図11】被写体に適用する標識の例を示した図である。
【図12】実施例の応用例について示した図である。
【符号の説明】
【0112】
1 選択平面
10 カメラ
15a、15b 単写真
20 被写体(共同住宅)
22 選択平面
K1、K2 姿勢参照平行線
Ph1、Ph2 方向参照点
PL1〜PL4 平行参照点
PN 被測量点
Ps1、Ps2 寸法参照点
【技術分野】
【0001】
本発明は、カメラで被写体を撮影(撮像と称される場合もある)したときに、撮影した写真からカメラ姿勢を把握する方法に関する。また、この方法を用いて測量対象物(被写体)を精度よく測量する写真測量技術に関する。
【背景技術】
【0002】
カメラで撮影した被写体の写真からカメラ姿勢を精度よく把握(検出)する技術は、汎用性が高い重要な技術である。例えば、写真測量を行う場合には被写体に対するカメラの姿勢を正確に把握しておかないと、正確な測量を行うことができない。また、最近においては急速にロボット技術が進歩しており、ペットロボット、搬送ロボット、掃除ロボットなど多種、多機能な自立型ロボットが提供されるようになっている。このような自律型ロボットは、一般に目に相当する部分にCCDカメラなどが搭載されており、動作対象物体(被写体)の形状等を把握して所定の動作を行う。よって、ロボットに搭載されたカメラについても、その姿勢を正確に把握することが重要である。カメラ姿勢の把握が不正確な場合には、ロボットが被写体の位置や形状等を誤って認識することになるので誤動作の原因となる。例えば、ロボットがコップを把持する動作では、コップを正確に把持できないなどの問題が発生する。さらに被写体が平面であった場合に、カメラ姿勢を正確に把握できればこの平面上の点の位置を正確に検出できるので入力装置などにも活用できる。以上の説明から、カメラ姿勢を把握する技術は汎用性が高く、重要な技術であることが理解される。
【0003】
なお、上記「カメラ姿勢」とは、撮影を行った被写体上に任意で定めた一平面に対するカメラの姿勢である。より詳細には、被写体が置かれる空間に3次元座標系を定義したときに、上記平面に対するカメラの光軸の角度、またこの光軸回りのカメラの回転角度により定量的に特定されるものである。よって、カメラ姿勢は、上記平面を基準としてカメラがこの平面に対してどのような姿勢で撮影したかを示すことになる。なお、被写体の平面とカメラとは相対的な位置関係にあることから、カメラ姿勢は平面の姿勢を示していると見ることもできる。
【0004】
従来から、カメラ(撮像手段)のカメラ姿勢(撮像姿勢)を把握するための技術が検討されている。例えば特許文献1は、撮像手段で撮像した画像データの情報から被写体の所定平面の姿勢位置や平面上の被検出位置を検出する方法等について開示する。特許文献1は、被写体の平面上に矩形形状を特徴づける特徴点として4点を設定している。平面上に矩形形状を設定すると2組の平行線が存在するので、これらの平行線の消失点を算出することにより平面姿勢を求めている。この特許文献1では、この技術を活用するとスクリーンなどの表示画面上で指示した位置などを直接入力することができるとしている。
【0005】
また、特許文献2は、所定のマーカを平面上に配置して撮像手段で斜方向から撮影して画像情報を得、この画像情報に基づいて二値化画像処理を実施する方法を開示する。このマーカは2個の正方形部が一つの頂点で接するようにして横方向に並べて表示である。このマーカの全体像がCCDカメラ等の撮影視野内に歪みなく取り込まれる。この画像情報を処理してカメラの位置姿勢認識を行っている。この特許文献2の技術を自立型のロボット等に活用すると、対象物体に確実に近付き、マニピュレータ等でその物体を正確に把持する等の動作を行える。
【0006】
【特許文献1】特開平2001−148025号公報
【特許文献2】特開平7−98214号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
上記特許文献1及び特許文献2では、カメラ姿勢の把握をするため平面上に平行線を含んだ矩形形状或いはマーカ(正方形部)が設定されている。ところで、被写体に対するカメラの傾斜を検出する場合には前記矩形形状等が傾斜していること、すなわち矩形形状等に対してカメラを斜めの姿勢で撮影するのが好ましい。一方、矩形形状等と同一平面上にある参照点の座標を求める場合には、上記関係が逆となる。すなわちカメラをこの平面に対して正対に近い状態、つまり平面に対してカメラを真正面に近い姿勢で撮影することが望ましい。
【0008】
カメラ姿勢を把握するためには、平面に対するカメラの傾斜及び平面上の参照点の座標を求めることが必要である。しかしながら、特許文献1、2で示す従来技術にあっては、カメラ傾斜を求めるために用いる平面上に座標を求める参照点が配置されている。よって、カメラ傾斜の検出に好ましいカメラ位置と参照点の座標算出に好ましいカメラ位置とが相反する関係となっている。そのために精度よくカメラ姿勢を検出できない事態が発生するという問題がある。
【0009】
また、前述したようにカメラ姿勢を把握しようとするのは、カメラで捉えた被写体を測量したり、被写体の位置、形状等を特定するためである。よって、カメラ姿勢を正確に把握できない場合、その結果として被写体の測量、位置特定、形状特定等を精度良く実行できないという問題が生じる。また、従来の方法ではより精度が良くなる撮影をするためには2対の平行線方向について遠近深くする必要があり撮影方向の選定に困難がある。例えば建物の水平および垂直の平行線構造または模様を利用する場合では、水平に移動し良い場所を探すとともに垂直の平行線を遠近深く撮影するため上空または地下方向から撮影しなければならない。
【0010】
したがって、本発明の主な目的は、簡単な構成でカメラ姿勢を把握できるカメラ姿勢把握方法を提供することである。
【課題を解決するための手段】
【0011】
上記目的は、被写体上に定めた選択平面に複数の方向参照点を設定すると共に、前記選択平面と直交する姿勢参照平行線を設定し、前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影して単写真を得る第1ステップを少なくとも含む、ことを特徴とするカメラ姿勢把握方法により達成できる。
【0012】
本発明によると、姿勢参照平行線は選択平面に対して直交して配置されており、カメラの傾斜は単写真に撮影されている姿勢参照平行線に基づいて求めることができる。一方、カメラの選択平面に対する軸方向は、単写真に撮影されている選択平面上の方向参照点に基づいて求めることができる。カメラ姿勢は、これらカメラの傾斜と軸方向とによって把握できる。このようにカメラの傾斜を求めるときに使用する面(姿勢参照平行線を含む面)と軸方向を求めるときに使用する面(選択平面)とが互いに直交しており、同一面ではないので上述した相反関係とならない。よって、本発明によると、一枚の単写真を用いてカメラ姿勢を精度良く把握できる。
【0013】
また、カメラ姿勢把握方法は、前記第1ステップと、前記第1ステップで撮影した前記単写真上に2次元座標系を定義し、前記選択平面上の前記方向参照点および前記姿勢参照平行線上に定めた平行参照点を特定して座標を得る第2ステップと前記第2ステップで得た前記方向参照点および前記平行参照点の座標に基づいて、前記選択平面に対するカメラ姿勢を求める第3ステップとをさらに備えるものとしてもよい。被写体を撮影した単写真をこのように処理すれば確実にカメラ姿勢を求めることができる。
【0014】
また、前記第1ステップでは、さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影して前記単写真を取得し、前記第2ステップでは、さらに前記単写真上で前記補助点の座標を取得し、前記第3ステップでは、さらに前記角度α及び前記補助点の座標を参照して、前記補助平面に対するカメラ姿勢を求めるようにしもよい。このようにすると、本発明の適用範囲をさらに広げることができる。
【0015】
また、前記姿勢参照平行線及び前記選択平面の前記方向参照点を特定できる図形を配した標識を、前記被写体に設置して前記第1ステップを実行するようにしてもよい。この場合には、形状等に特徴がない被写体であっても簡単にカメラ姿勢を把握できる。
【0016】
また、被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の3次元座標を求める写真測量方法であって、前述のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求めることを特徴とする写真測量方法として応用してもよい。この写真測量方法は、カメラ姿勢が正確に把握されているので精度良い測量結果を得ることができる。
【0017】
さらに、前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める写真測量方法としてもよい。
【0018】
また、上記目的は、被写体上に定めた選択平面に複数の方向参照点を設定すると共に、前記選択平面と直交する姿勢参照平行線を設定し、前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影した単写真の画像を読み込む第1処理と、前記単写真上に2次元座標系を定義し、前記選択平面上の前記方向参照点および前記姿勢参照平行線上に定めた平行参照点を特定して座標を得る第2処理と、前記方向参照点および前記平行参照点の座標に基づいて、前記選択平面に対するカメラ姿勢を求める第3処理とをコンピュータに実行させることを特徴とするカメラ姿勢把握用のプログラムによっても同様に達成できる。
【0019】
また、カメラ姿勢把握用のプログラムは、さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影した単写真の画像を読み込み、さらに前記単写真上で前記補助点の座標を取得し、さらに前記角度α及び前記補助点の座標に基づいて、前記補助平面に対するカメラ姿勢を求めるものとしてもよい。
【0020】
また、被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の3次元座標を求める写真測量のプログラムであって、前述のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める処理をコンピュータに実行させることを特徴とする写真測量のプログラムであれば、被写体を精度よく測量できる。
【0021】
さらに、前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める処理をコンピュータに実行させることを特徴とする写真測量のプログラムとしてもよい。
【発明の効果】
【0022】
本発明によれば、簡単な構成でカメラ姿勢を把握できるカメラ姿勢把握方法を提供できる。また、より精度がよくなる撮影をするためには1対の平行線方向について遠近深くするよう気を配ることで足りるので撮影方向の選定が従来と比べて容易である。例えば、建物の水平線構造または模様を利用する場合では、地上を水平に移動してよい場所を探すことで足りる。
【発明を実施するための最良の形態】
【0023】
以下、図面を参照して本発明の一実施形態を説明する。ここで示す実施例はカメラで被写体を撮影し、この写真(画像データ)に基づいてカメラ姿勢を把握するものである。なお、ここでは通常の単眼カメラで被写体を一方向から撮影して得た写真を単写真と称する。よって、以下で示す実施例は被写体の単写真からカメラ姿勢を把握するものである。
【0024】
また、前述したようにカメラ姿勢は、被写体上に定めた一平面に対するカメラの姿勢である。以下では、この一平面を特に選択平面と称して説明する。カメラ姿勢は、選択平面とカメラとの相対的な位置関係を示している。仮に基準位置に固定した選択平面を撮影したときに把握される姿勢は、まさしくカメラ姿勢を示すものとなる。一方、これとは逆に基準位置にカメラを固定して、選択平面を撮影した場合に把握される姿勢は選択平面に関するものとなる。本明細書では、このような場合を区別することなくカメラ姿勢と称している。ただし、以下で示す実施例では、理解を容易とするため、カメラの位置を固定して選択平面の姿勢を求める場合について説明している。
【0025】
具体的な実施例を説明する前に、技術的理解を容易とするため本発明のポイントとなる概念を図1及び図2を参照して説明する。なお、カメラ姿勢を求めるためには、選択平面の傾斜と、選択平面の軸方向を求めることが必要である。選択平面上に設定した少なくとも2個の参照点の座標を算出することで、選択平面の基準点と基準方向を確定して軸方向を求めることができる。以下、選択平面の軸方向を定めるための参照点を方向参照点と称して説明する。なお、方向参照点には基準点など位置を確定する役割もある。
【0026】
ここで、選択平面の傾斜を求めること、及び選択平面上の基点と軸方向を定めるための方向参照点の座標を求めることにより、カメラの姿勢を求められることについて説明する。カメラを固定して、選択平面を基盤とする3次元座標系を表現できればよい。なお、カメラの固定とはカメラを基準として3次元座標系を定義することである。
【0027】
例えば、カメラの位置を基準点、レンズの光軸方向をZ軸、撮像面の横軸方向をX軸、縦方向をY軸方向とする第1の3次元座標系を定義する。その一方、例えば方向参照点の1つPh1を基準点とする。そして、この方向参照点Ph1ともう一つの方向参照点Ph2とを結ぶ方向をX軸とする。また、選択平面上でX軸に直交する方向をY軸とし、選択平面に直交する方向をZ軸とする第2の3次元座標系を定義する。
【0028】
ここで、方向参照点Ph1、Ph2の第1の3次元座標系での座標値が判明すれば、第2の3次元座標系の基準点およびX軸が確定する。更に、第1の3次元座標系で表される選択平面の傾斜が判明すれば、選択平面上で第2の3次元座標系でのX軸に直交するY軸方向および選択平面に直交するZ軸方向が確定する。よって、選択平面の傾斜と軸方向とをパラメータとして、カメラ姿勢を表わすことができる。
【0029】
図1は、従来の手法で単写真からカメラ姿勢を求める場合について示した図である。選択平面1の傾斜を算出するため4個の参照点A1〜A4が設定されている。参照点A1〜A4のそれぞれは、矩形形状(長方形)の頂点に配置されている。(A1−A2)線と(A3−A4)線とが一対の平行線、また(A1−A3)線と(A2−A4)線とが一対の平行線となる。また、選択平面1には軸方向を求めるために2個の方向参照点B1、B2が設定される。なお、図1では、点A1と点B1、点A2と点B2とを共用した場合について例示している。
【0030】
図1で示す選択平面1を全ての参照点A、Bを含むようにして、カメラ10で撮影して単写真を得る。単写真に写った参照点Aの像の位置に基づいて選択平面1の傾斜を算出し、更に単写真に写った方向参照点Bの像に基づいて3次元座標を算出して選択平面1の軸方向を求める処理を順に行う。これによりカメラ姿勢を把握する。このように従来にあっては、選択平面1上に点A、Bの全てが配置されている。そのために、先に課題として指摘したような問題が発生することになる。すなわち、選択平面1の傾斜をより正確に検出しようと傾斜をより大きくすると、方向参照点Bの座標値の検出精度が低下するので軸方向の正確性が劣化する。これとは逆に、軸方向の正確性をより向上させようと傾斜をより小さくすると選択平面1の傾斜検出の精度が劣化する。結局、より精度よくカメラ姿勢を把握することが困難となっていた。
【0031】
図2は、単写真からカメラ姿勢を求める本発明の場合について示した図である。カメラ姿勢を算出するための参照点A、Bを役割別に配置する。選択平面1の傾斜を求めるための平行線上に配置する参照点A1〜A4は選択平面1とは別に設定されている。具体的には、選択平面1上の軸方向を求めるための方向参照点B1、B2は選択平面1上に設定されるが、参照点(平行参照点)A1〜A4は選択平面1と直交する平行線K1、K2上に設定する。以下、この平行線K1、K2を姿勢参照平行線と称する。
【0032】
ここで、カメラ10を選択平面1に対しては正対に近い撮影姿勢に設定する。このようにすると、姿勢参照平行線K1、K2は選択平面1に直交しているので、カメラ10の光軸は姿勢参照平行線K1、K2に対しては平行に近い状態となる。このような状態のときに、本明細書では、特にカメラ10に対して姿勢参照平行線K1、K2は「遠近深い状態」であると称し、またカメラ10に対する選択平面1の配置を「遠近浅い状態」であると称することとする。
【0033】
上記説明から明らかなように、本発明では方向参照点B1、B2が置かれる選択平面1と姿勢参照平行線K1、K2とは互いに直行する配置に設定されている。そして、方向参照点B1、B2及び姿勢参照平行線K1、K2上の参照点A1〜A4を含むようにしてカメラ撮影が行われる。よって、従来において問題となった相反関係を解消できる。
【0034】
すなわち、図2で示す本発明の手法は選択平面1の傾斜を検出するための姿勢参照平行線K1、K2を遠近深い状態にできるため、これら参照平行線K1、K2の方向を精度よく検出できる。ここで選択平面1は姿勢参照平行線K1、K2と直交しているので、結果として選択平面1の傾斜を正確に検出できることになる。また、選択平面1にはカメラとの方向関係を検出するための方向参照点B1、B2が配置されている。選択平面1は、カメラ10に対して正対に近い状態、すなわち遠近浅い状態にあるので方向参照点の3次元座標も高い精度で算出できることになる。このように本発明は被写体の選択平面1と直交する姿勢参照平行線K1、K2を設定するという新規な構成を採用するので、カメラ姿勢を高い精度で把握できる。
【0035】
なお、参照点Aは姿勢参照平行線Kの線上の任意の点であればよい。つまり、参照点Aを特定する必要はなく、姿勢参照平行線K上の点であればよい。また、姿勢参照平行線Kは、図2で例示するように2本である場合に限らない。すなわち、姿勢参照平行線Kは3本以上としてもよい。また、姿勢参照平行線Kは互いに平行であればよく、同一の面上に存在しなくてもよい。より多くの姿勢参照平行線Kを参照するとより精度高くしてカメラ姿勢を把握できる。
【0036】
なお、方向参照点Bは選択平面1上に2点以上を設定する。この選択平面1は被写体の一面である。実際にカメラ姿勢の把握を行うときには被写体の状況により、カメラから全面が見える選択平面1を設定できないという場合もある。このように選択平面1が被写体中に確認し難い場合であっても次のようにして対処できる。例えば、方向参照点Bは姿勢参照平行線Kと直交する線(選択平面1の要素である線)上の点とすることができる。また、方向参照点Bは姿勢参照平行線Kと選択平面1が交差する点(選択平面1の要素である点)としてもよい。つまり、選択平面1の全貌が見えなくても姿勢参照平行線KとKに直交する1つの直線との交点が2点以上見えるのでもよい。以上のように、図2で示す本発明の手法は参照する点の配置に関する要件が単純であり設定し易い。また、姿勢参照平行線及びこれと直交する選択平面1や直線は造営物によくある形状または模様を活用でるのでカメラ姿勢を簡便に把握できることになる。以上で説明したことを前提として実施例を説明する。
【0037】
図3から図11を参照して単写真からカメラ姿勢を把握する場合の処理について具体的にして説明する。ただし、この実施例は単写真からカメラ姿勢を把握して、被写体を写真測量する場合ついて説明する。すなわち、この実施例はカメラ姿勢の把握を写真測量に応用した場合の例について述べる。以下では、1方向から撮影した単写真を用いての写真測量、および2方向(複数方向)から撮影した2枚(複数)の単写真を用いて写真測量の一例について説明する。
【0038】
図3は共同住宅を被写体20としてカメラ撮影を行い、カメラ姿勢を把握してから測量を行う様子を示した図である。図3では2つの方向それぞれからカメラ10で被写体20を撮影して、2枚の単写真を得ている。まず、一方のカメラ10aで撮影した単写真15aを用いてカメラ姿勢を求める場合について説明する。図3の下側には、カメラ10aで撮影した単写真15aと、カメラ10bで撮影した単写真15bを示している。
【0039】
図4は、被写体20の撮影を行ってカメラ姿勢を求め、さらに写真測量を行うまでの処理をまとめたフローチャートである。このフローチャートに沿って、図3を参照して説明する。まずステップS102では図3のカメラ10aで被測量点PNが置かれた被写体20を撮影する。被写体20はほぼ直方体と見られる四階建ての共同住宅である。ここでは被測量点PNが置かれた共同住宅の正面(ベランダの手すりなどがある前面)が選択平面22とされている。カメラ10aは選択平面22に対して遠近浅い状態(正対に近い状態)となるように撮影姿勢が設定される。被写体20の左の平面(住宅の左壁面)21は水平の直線模様に姿勢参照平行線K1、K2等が設定される参照平面である。この参照平面21に対してはカメラ10aの撮影姿勢が遠近深くなるように設定されている。このように設定して撮影したのが図3の単写真15aである。なお、図3中の15bも、同様に設定して異なる方向から撮影した単写真である。
【0040】
この共同住宅は、正面(選択平面22)と、その側面(参照平面21)が直角である。よって、参照平面21上に設定した水平の直線模様である姿勢参照平行線K1およびK2は、選択平面22と直交する平行線となる。姿勢参照平行線K1およびK2は、参照平面21に存在する線状模様等を利用して設定すればよい。ただし、姿勢参照平行線K1、K2は選択平面22と直交している平行線であれば、必ずしも参照平面21上でなくてもよい。例えば単写真15aに写っていれば屋上の縁K3、K4でもよい。また、2本以上の複数本を設定してもよい。同様に、選択平面22は姿勢参照平行線K1、K2と直交している平面であればよい。例えばベランダの手すりがある面の他、その奥の窓22pのある面でもよい。
【0041】
方向参照点Ph1、Ph2を選択平面22上に設定する。選択平面22が被写体上で見え難い場合もある。例えば参照平面21は見えるが、選択平面22は見難く姿勢参照平行線K1、K2と直交する線(この線は選択平面22の一部である)は確認できるという場合がある。このような場合は姿勢参照平行線K1、K2に直交する1つの線上の2点Ph3、Ph4を方向参照点としてもよい。また、姿勢参照平行線K1、K2と直交する1つの線(この線も選択平面22の一部である)と、この平行線K1、K2とが交差する位置の参照点Ph5、Ph6としてもよい。
【0042】
なお、上記姿勢参照平行線K1、K2については、建物屋内であれば天井、床、壁にある目地などの平行線があるので、これらを利用してもよい。同様に、敷地内に方形の石畳がある場合にはその目地を利用してもよい。
【0043】
選択平面22には測量の際に用いる寸法参照点Ps1、Ps2が設定されている。寸法参照点Ps1、Ps2の間隔Ls(参照寸法)を実測しておく。被写体20に設定した、選択平面22、参照平面21が入るようにして、カメラ10aで被写体20を撮影して単写真を得る。カメラ10aがデジタルカメラ等のようにデータを保存できるものである場合には、画像データをICカード等に保存する。また、カメラ10aがフィルムを用いたものである場合には撮影したフィルム或いは写真をスキャナで読取って画像データ化する。
【0044】
ここで、本実施例を実施するのに好適であるハードウエアについて簡単に説明しておく。図5は、この実施例を実施するのに好適であるハードウエア構成の一例を示すブロック図である。装置としてはパーソナルコンピュータ30等の情報処理装置を使用する。システム全体を制御する中央演算処理装置(CPU)32には、入出力制御部(インターフェース)23を介してキーボード25、マウス27、表示装置(CRT、LCDなど)29、プリンタ31、ICカード読み取り装置33等が接続される。例えば、デジタルカメラで撮影された画像はICカード34を介して入力される。画像は表示装置(ディスプレイ)29により観察できる。通常のカメラで撮影された写真は、フィルムスキャナ35によってデジタル画像化して入力される。
【0045】
上記コンピュータ30は、カメラ姿勢を求めるためのプログラム及び被写体を測量するためのプログラム、並びにこれらのプログラムを実行するのに必要なデータ、測量で実測したデータ等はHDD37に格納することができる。コンピュータ30は、必要なデータをHDD37から読み出して所定の処理を実行する。なお、図示を省略しているが、上記CPU32は所定のメモリを備えている。このメモリにプログラム等を格納してもよい。
【0046】
ステップS104以降は上記コンピュータ30を用いて実行されるデータ処理作業である。このステップS104ではステップS102で得られた画像が、例えば図5のICカードリーダ33によりコンピュータ30に読み込まれる。参照寸法Lsはキーボード25により入力される。各データはハードディスクHDD37などに保存される。
【0047】
ステップS106ではステップS104で読み込まれた単写真15aがディスプレイ29に表示される。姿勢参照平行線K1についてはその直線像上の任意の参照点PL1、PL2を、K2については参照点PL3、PL4を特定する。これらの参照点PL1〜PL4を平行参照点と称する。ディスプレイ29に表示している単写真画像上で2次元座標系を定義して、平行参照点PL1〜PL4をマウス27で指示して座標を入力する。この座標をピクセル座標と称する。上記平行参照点PL1〜PL4のそれぞれは姿勢参照平行線K1、K2の末端に設定すると検出精度を向上させることができる。
【0048】
続いて、被測量点Pn、方向参照点Ph1、Ph2および寸法参照点Ps1、Ps2についても特定してマウスでピクセル座標を入力する。入力された各ピクセル座標はカメラ特性データにより仮想撮像面Ff上の座標に変換され保存される。なお、仮想撮像面Ffはカメラ10の前方一定距離Lにカメラ10の光軸と直交すると想定した平面であり、この仮想撮像面Ffに像が結ばれるものと仮想したものである。
【0049】
ここで、ピクセル座標と仮想撮像面Ff上の座標との関係について説明しておく。ピクセル座標とは、得られた写真のデータを画面に表示した場合、画面上に横をXd軸、縦をYd軸、座標値の単位を画素数(ピクセル)と定義して像の位置を表す2次元座標である。写真または本当の撮像面上の像位置が表されるのでカメラのレンズの歪も含まれている。一方、仮想撮像面座標はピンホールカメラのように光学系に歪がないものとして被写体の像が結ばれるように仮想した撮像面の上に定義した2次元座標であり、横軸をXf軸、縦軸をYf軸、焦点距離をLとし座標値をLと同じ単位(実寸法mmなど)で表す。また、カメラ特性データとは、ピクセル座標と仮想撮像面座標との間の変換に用い、カメラの設定およびレンズの特性に基づき作成される数表である。更に詳細な説明は本題からはずれるので省略する。以降、像が特定されマウスで入力されたピクセル座標は光学系の歪を無くし実寸法で表された仮想撮像面座標に変換されたものとして説明する。
【0050】
次のステップS108では上記ステップS106で得た姿勢参照平行線K1、K2上の平行参照点PL1〜PL4の仮想撮像面座標および選択平面22上の方向参照点Ph1、Ph2の仮想撮像面座標に基づきカメラ姿勢を算出する。
【0051】
まず、仮想撮像面上の姿勢参照平行線K1、K2の像から消失点Pvの座標xv、yvを算出する。図6はその概念図である。この図6の写真上に直線k1(PL1−PL2)および直線k2(PL3−PL4)の平行線の像がある。平行線を傾斜させて撮影されており、写真上ではそれらの線像の延長が交差する所に消失点Pvが存在する。消失点は平行線の撮像である線の延長が集合する点もしくは交点である。平面上の直線の一般式はyfLn=Akn・xfLn+Cknである。ここで、xfおよびyfは直線上の点の仮想撮像面上での座標値、A、Cは直線の式のパラメータ、添え字knは線像の区別、Lnは線上の点の添え字と同じで点の区別を示す。各線に属する点の座標を条件として代入する。
【0052】
線k1においては下記式(1)、(2)
yfL1=Ak1・xfL1+Ck1 (1)
yfL2=Ak1・xfL2+Ck1 (2)
線k2においては下記式(3)、(4)
yfL3=Ak2・xfL3+Ck2 (3)
yfL4=Ak2・xfL4+Ck2 (4)
の式を立てることができる。
【0053】
上記各線でのパラメータAkn、Cknを求めると式(1)、(2)については、下記式(5)、(6)、
Ak1=(yfL1−yfL2)/(xfL1−xfL2) (5)
Ck1=(xfL1・yfL2−xfL2・yfL1)/(xfL1−xfL2)
(6)
また、式(3)、(4)については、下記式(7)、(8)、
Ak2=(yfL3−yfL4)/(xfL3−xfL4) (7)
Ck2=(xfL3・yfL4−xfL4・yfL3)/(xfL3−xfL4)
(8)
となる。
【0054】
以上で求めた写真上での2直線の方程式のパラメータから、それらの交差点すなわち写真上の消失点Pvの座標を求める。条件を2本の線においてyvが同一として式(9)(10)を立てる。
yv=Ak1・xv+Ck1 (9)
yv=Ak2・xv+Ck2 (10)
上記2式を解くと、下記式(11)、(12)を得る。
xv=(Ck2−Ck1)/(−Ak2+Ak1) (11)
yv=(−Ck1・Ak2+Ck2・Ak1)/(−Ak2+Ak1)
(12)
【0055】
消失点Pvの座標yv、xvに基づき選択平面22の方程式を求める。図7は仮想撮像面Ff上の消失点Pvと選択平面22の関係等を示した幾何図である。カメラ10の光軸方向をZ軸、仮想撮像面座標のXf軸をX軸、仮想撮像面座標のYf軸をY軸とした3次元座標で示している。図7の(A)、(B)は、各投影図を示している。
【0056】
上記仮想撮像面Ffはカメラ10の前方で焦点距離Lに置かれ被写体の像が歪み無く結ばれると仮想した面である。逆にカメラ10とFf上の像(Pfn等)を結ぶ直線を前方に延長すれば像の実体に至る。ところで、消失点とは実体が無く、平行線を撮影した場合に延長先が無限縁にあり一点に集束したように見えるものである。すなわち、ここでの消失点は単なる点というのでははなく方向性を示すものである。その消失点の方向は同一の方向である平行線全ての向く方向に共通である。つまり、カメラ10とPvを結ぶ直線は平行線の方向である。この方向が分かれば直行する面すなわち選択平面22の傾きを求められる。選択平面22の傾斜はXZ断面投影における傾斜aおよびXY断面投影における傾斜bで表される。
【0057】
よって、図7から選択平面22の一般式は下記式(13)となる。
z=Ax+By+C (13)
そして、図7から選択平面22のXZ座標面投影傾斜aおよびYZ座標面投影傾斜bは下記式(14)、(15)となる。
a=xv/L (14)
b=yv/L (15)
【0058】
先の一般式(13)に、式(14)、(15)を当てはめると、下記式(16)を得ることができる。
z=−ax−by+C (16)
(A=−a、B=−b)
【0059】
上記式(16)により選択平面22のカメラ10aに対する傾きが判明する。ここでCはまだ決定されないので仮に「1」とした模型式にしておく。この式(16)に基づいて単写真平面上の点像位置、即ち仮想撮像面座標値xf、yfから選択平面22上の点の3次元座標を求めることができる。すなわち、下記式(17)によりx、下記式(18)によりy、下記式(19)によりzを得ることができる。(PfnとPNとの関係は図7を参照)
【数1】
【0060】
次に、上記選択平面22の座標の軸方向を確定する。そのために方向参照点Ph1、Ph2を使用する。例えば、選択平面22上の線分Ph2−Ph1方向をX軸またはY軸などとして方向を設定する(図3参照)。このようにして、方向参照点Ph2、Ph1の3次元座標を求めることで選択平面22上の座標の軸方向を確定できる。
【0061】
上記式(17)〜(19)に方向参照点Ph1、Ph2の仮想撮像面座標を代入することで、3次元座標が求められる。これで選択平面22上の座標軸方向が判明する。以上のようにしてカメラ姿勢が把握(検出)される。ただし、まだ模型としての把握であるので、必要に応じて後述するステップS112のように実寸の座標を得る方法を基にCを求め実寸の式を得てもよい。
【0062】
続いて、上記で得た結果を測量へ応用する場合について説明する。先ず、1方向から撮影した1枚の写真(すなわち、単写真)を用いた写真測量について説明する。ステップS110において選択平面22上にある被測量点PNについては式(17)〜(19)にPnの仮想撮像面座標を代入することにより3次元座標を算出できる。次のステップS112では模型で扱ってきた座標を実寸に変換する。
【0063】
図3で示している寸法参照点2点(Ps1,Ps2)について式(17)〜(19)により座標を求める。その間隔lsを次の式(20)により求める。なお、添字s1,s2は寸法参照点Ps1,Ps2の模型の座標であることを示す。
ls=√{(xs1−xs2)2+(ys1−ys2)2+(zs1−zs2)2} (20)
【0064】
次いで、予めステップS102で実測した間隔Ls(参照寸法)とlsとの比を求め、この比を求めた模型の各座標値に掛ける。以上のステップにより、被測量点Pnの実際の3次元座標値が算出される。以上のようにして1方向から撮影した1枚の写真により写真測量を行える。
【0065】
さらに、以下では2方向から撮影した2枚(複数)の写真により測量する写真測量に応用する例について説明する。ここでの各ステップは上記で説明した1方向から撮影した1枚の写真による写真測量とほぼ同様なので同じ図を流用して説明する。
【0066】
図4のフロー図に沿って説明する。ステップS102では図3のようにカメラ10aおよびカメラ10bで撮影し写真15aおよび15bの2枚を得る。撮影方法は1枚の写真による場合と同様である。カメラ10aとカメラ10bの位置は水平または垂直に離れた方向から撮影する。例えば30°方向を変えて撮影する。ステップS102〜S108は1枚の写真による場合と同様に行いそれぞれのカメラ姿勢を求める。
【0067】
ステップS110ではS108で求められた写真毎のカメラ姿勢を用いて2つのカメラ姿勢を合併する場合の一例を説明する。ステップS108では写真毎に独立した座標系でカメラ姿勢を求めている。そのため座標系および模型座標の縮尺が一致していない。よって、これらを対応させることが必要である。概要としては、2つの方向から撮影した2枚の写真15aおよび15bそれぞれからカメラ姿勢として得られた方向参照点Ph1、Ph2の模型座標を一致させるよう座標を適宜に回転させ、また伸縮させる。この回転、伸縮に伴ってカメラの位置Cca、Ccb(当初の座標の要素x、y、zは0)およびカメラの向きがどうなるかを求める。カメラの向きとしてはカメラの光軸が平面22と交差する点C0a、C0b(当初の座標の要素x、yは0、zはCaまたはCb)の座標を用いる。
【0068】
上記による回転、伸縮はカメラ姿勢として得られた平面22の模型の方程式のパラメータAa、Ba、Ca、Ab、Bb、Cb(写真と同じ添え字aおよびbを付した)に基づいて行う。
【0069】
図8(A)は合併された各点の配置を概念的に示した図である。ここで符号7はカメラ基軸(カメラの主点Cca、Ccbを結ぶ線)、また符合9a、9bはそれぞれのカメラの光軸方向を示している。また、図8(B)はカメラの光軸方向の線9a、9bをカメラ基軸の直交断面に投影した線2(9aの投影)、3(9bの投影)を示した図である。
【0070】
図8を参照して説明する。ステップS108で写真毎に算出した平面22の模型の方程式では、前述したようにCをとりあえず1としてあるので縮尺が合致していない。これらを合せるには、2つの方向参照点の模型座標上の間隔を2つの写真間で揃えるようパラメータCaまたはCbに係数を掛けることで行う。方向参照点間の模型上の間隔ea、ebを次の式(21)、(22)により求める。なお、添え字a、bは関係する写真15a、15bと同じ添え字を付している。方向参照点の模型座標は式(17)〜(19)で求めたx、y、zである。添え字は方向参照点h1、h2の区別、また写真の添え字a、bの区別を示している。
ea=√{(xh2a−xh1a)2+(yh2a−yh1a)2+(zh2a−zh1a)2} (21)
eb=√{(xh2b−xh1b)2+(yh2b−yh1b)2+(zh2b−zh1b)2} (22)
【0071】
パラメータCaを1に固定する場合には、Cbに係数ea/ebを掛けて修正すればよい。これにより2つの平面22の模型の方程式の縮尺が一致する。Cb修正後の式で、模型の3次元座標を計算する。
【0072】
ここで、どのような座標系に統合するかであるが、図8(A)のように平面22にXY軸を置き、平面22の鉛直方向をZ軸、方向参照点のPh1を基点、方向参照点のPh1からPh2を見た方向をX軸とする例を次に示す。
【0073】
各点の座標について各写真(15a、15b)毎に以下の座標変換をする。各点の座標とは各カメラ10a、10bにおけるPh1a(xh1a、yh1a,zh1a)、Ph1b(xh1b、yh1b、zh1b)、Ph2a(xh2a、yh2a、zh2a)、Ph2b(xh2b、yh2b、zh2b)、Cca(x=0、y=0、z=0)、Ccb(x=0、y=0、z=0)、C0a(x=0、y=0、z=Ca)、C0b(x=0、y=0、z=Cb)である。なお、写真15a、15b、方向参照点Ph1、Ph2に関するものとして同じ添え字を付している。
【0074】
座標変換1:Ph1を基点にする。Ph1aまたはPh1bの座標x、y、zの行列を[Ph1]、基点変更前の各点のx、y、z行列を[X0]、変更後を[X1]とすると、下式(23)となる。
[X1]=[X0]−[Ph1] (23)
【0075】
座標変換2:X軸を面22に合せる。回転前の各点のx、y、z行列を[X1]、回転後を[X2]とすると、下式(24)となる。
[X2]=[R1][X1] (24)
ここで、[R1]は下式(25)で、
u=tan−1(A) (25)
Aは写真別にパラメータAaまたはAbを代入して得ることができる。
とすれば、
【数2】
である。
【0076】
座標変換3:Y軸を面22に合せる。回転前の各点のx、y、z行列を[X2]、回転後を[X3]とすると下記式(27)となる。
[X3]=[R2][X2] (27)
また、
[R2]は下記式(28)となり、
【数3】
AおよびBは写真別にパラメータAa、BaまたはAb、Bbを代入する。
とすれば、下記式(29)となる。
【数4】
【0077】
座標変換4:X軸をPh2−Ph1に合せる。回転前の各点のx、y、z行列を[X3]、回転後を[X4]とすると、下記式(30)となる。
[X4]=[R3][X3] (30)
また、
[R3]は下記式(31)となる。
【数5】
上の式中x、y値は[X3]における方向参照点Ph2の座標値である。関係する点と同じ添え字を付している。
とすれば、下記式(32)を得る。
【数6】
【0078】
以上を2つの写真毎に行うとカメラの位置Cca、Ccbは図8の(A)のように同じ座標系になり相互の位置関係が明らかになる。この結果から以降の写真測量計算をやり易くするため次のパラメータを設定する。図8および図9により説明する。なお、図9は測量のために撮影しているカメラと被写体の配置および2つのカメラ10a、bにおける撮像と被写体上の点との関係を示している。カメラ10aについて詳しく記してある。(A)はカメラ基軸7の直交断面にカメラの光軸の線9a、9bおよびPn方向線を投影した図である。(B)はステップ102における撮影の様子とカメラにおける撮像と点の幾何関係を概念的に示す図である。(C)はFf上の仮想撮像であるが、カメラの傾きσa逆転してカメラ基軸の仮想撮像をX軸に合せた図である。(D)は仮想撮像座標Ff上の仮想撮像である。15は画面のX軸、13はカメラ基軸の仮想撮像でX軸15に対してカメラの傾きσを成している。Pccはもう一方のカメラ10の位置が写ったとした場合の仮想像(画面内に入るとは限らない)である。
【0079】
図8(A)で2枚の写真を撮影した2つのカメラの位置を結ぶ線をカメラ基軸7とする。カメラの光軸の方向をカメラ10aからカメラ10bを見た方向を基準にしてカメラ基軸と成す角度をαa0、αb0。図8(B)でカメラ基軸を軸に回転する角度でカメラ10aの光軸方向9aを基準にしたカメラ10bの光軸方向9bをβとする。カメラの光軸を軸にしたカメラの回転でカメラ基軸に対してカメラの仮想撮像面の横軸(撮像のX軸)が傾く角度σa、σb(図9の(D)のσを参照)を求める。これらのパラメータをアングル定数と称する。
【0080】
上記αa、αb、βは合併した座標について次の座標変換をして求める。基点をカメラ10a、カメラ基軸をZ軸、カメラ基軸を軸にして回転する角度の基準をカメラ10aの光軸方向とするよう座標を変換する。
【0081】
座標変換5:基点をカメラ10aにする。合併した[X4]中Ccaの座標x、y、zの行列を[Cca]、基点変更前の各点のx、y、z行列を[X4]、変更後を[X5]とすると、下記式(33)となる。
[X5]=[X4]−[Cca] (33)
【0082】
座標変換6:X軸をカメラ基軸(10b−10a)のXY面投影方向に合せる。回転前の各点のx、y、z行列を[X5]、回転後を[X6]とすると、下記式(34)となる。
[X6]=[R4][X5] (34)
[R4]は
【数7】
上の式中x、y値はCcbの[X5]における座標値である。Ccbと同じ添え字を付している。
とすると、下記式(36)を得る。
【数8】
【0083】
座標変換7:Z軸をカメラ基軸(10b−10a)の方向に合せる。回転前の各点のx、y、z行列を[X6]、回転後を[X7]とすると
[X7]=[R5][X6] (37)
【0084】
また、[R5]は、
【数9】
上の式中x、z値はCcbの[X6]における座標値である。Ccbと同じ添え字を付している。
とすると、
【数10】
である。
【0085】
座標変換8:X軸をカメラ10aの光軸のXY面投影方向に合せる。回転前の各点のx、y、z行列を[X7]、回転後を[X8]とすると、下記式(40)を得る。
[X8]=[R6][X7] (40)
【0086】
また、[R6]は、
【数11】
上の式中x、y値はC0aの[X7]における座標値である。C0aと同じ添え字を付している。
とすると、下記式(42)を得る。
【数12】
【0087】
そして、求めたいパラメータは次の各式で求められる。
【数13】
上の式中x、z値はC0aの[X8]における座標値である。C0aと同じ添え字を付している。
【数14】
上の式中x、y、z値はC0b、Ccbの[X8]における座標値である。関係する点と同じ添え字を付している。
【数15】
上の式中x、y値はC0bの[X8]における座標値である。C0bと同じ添え字を付している。
【0088】
次にσa、σbである。σaは合併したカメラ10bの座標をカメラ10aの元の座標系に戻して求める。つまり、CcaおよびCcbの[X4]について、カメラ10a関係の座標を合併するために用いた座標変換の逆を次式(46)のように行う。
[X1]=[R1a]−1[R2a]−1[R3a]−1[X4] (46)
添え字のaは式(26)、(29)、(32)のカメラ10aに関する回転を意味している。
【0089】
[X0]=[X1]−[Cca] (47)
上記[Cca]は[X1]におけるカメラ10aのx、y、z座標値の行列である。式(47)では[X1][X0]はCcbだけ行えばよい。σa0はカメラの光軸を軸にしたカメラの回転であって、カメラ基軸に対してカメラ(撮像面のX軸)が傾く角度で表せる。カメラの撮像で見ればもう一つのカメラの方向(カメラ基軸の撮像で実像は無い)が撮像面のX軸と成す角度でもある(符号が負となるが)。したがって次式(48)で表せる。
【数16】
上式中x、y値は式(47)におけるCcbの[X0]の座標値である。Ccbと同じ添え字を付している。
【0090】
同様にσbは合併したカメラ10aの座標をカメラ10bの元の座標系に戻して求める。つまり、CcaおよびCcbの[X4]についてカメラ10b関係の座標を合併するために用いた座標変換の逆を次式(49)のように行う。
[X1]=[R1b]−1[R2b]−1[R3b]−1[X4] (49)
添え字bは式(26)、(29)、(32)のカメラ10bに関する回転を意味する。
【0091】
[X0]=[X1]−[Ccb] (50)
上記[Ccb]は[X1]におけるカメラ10bのx、y、z座標値の行列である。上式(50)では[X1]、[X0]はCcaだけ行えばよい。
【0092】
そして、σbは次式で表せる。
【数17】
上式中x、y値は式(50)におけるCcaの[X0]の座標値である。Ccaと同じ添え字を付している。以上でアングル定数が求まる。つまり、2つのカメラ姿勢が合併されたことになる。
【0093】
以上はカメラ姿勢を合併する方法で本発明を実施する一例である。カメラ姿勢の把握には従来の方法として共面条件を用いる方法、視差を消去する方法、共線条件を用いる方法等がある。従来の方法でカメラ姿勢を求める方法と本発明である単写真毎のカメラ姿勢把握を組み合わせるのもよい。例えば、従来の方法でカメラ姿勢を求める方法の中で本発明を一部に含んで精度向上の補助をさせるのでもよい。要するに計算の方法は問わない。
【0094】
以上のようにアングル定数が求まったら、アングル定数および被測量点Pnの仮想撮像面座標に基づき三角測量計算ができるようになる。まず3次元の三角測量計算に必要なデータを準備する。すなわち、カメラ10aからカメラ10bを見た方向を基準にした被測量点Pn方向の角度αan,αbnおよびカメラ基軸を軸にした角度でカメラ10a,bに共通の基準方向とした被測量点Pnの回転角βan、βbnを求める。三角測量計算は被測量点Pnの他、寸法参照点Ps1,Ps2についても行われるが、代表して被測量点Pnで説明する。計算に際してはステップS106で示したとおりPnについてカメラ特性データを用いてピクセル座標を仮想撮像面座標xfn、yfnに変換してある。
【0095】
αan、βanは先に示した図9に示す幾何関係から次式で算出することができる。
【数18】
αbn、βbnについても同様に求められる。
【0096】
回転角βに関しては、式(59)から角βan,βbnが得られるが、これらはそれぞれのカメラの光軸線9a,9bを基準とした回転角である。どちらを基準にするかで採用すればよい。本説明では9aを基準にしているのでβanを採用する。
【0097】
以上に基づいて、被測量点Pnの3次元の模型座標を算出する。三角測量のためにはカメラ10a,b間の距離Eも必要であるが、当面不明なので仮に1としておき相似形の3次元座標(模型と記す)を求める。図10に示すように、カメラ10aを原点とした被測量点Pnの直交座標(x,y,z)は、三角測量の原理から次の式によって求められる。図10(B)に示すように、カメラ基軸7をX軸方向、紙面をX−Y平面、それに直交する軸をZ軸方向、カメラ10a,b間距離をE、図10(A)に示すようにX軸から鉛直に被測量点Pnまでの距離をHとする。
【数19】
【0098】
以上の式で被測量点Pnおよび寸法参照点Ps1、Ps2の模型座標を求める。ステップS110では、ステップS112でEが判明するまで以上の式で寸法参照点の模型座標だけを算出しておくのでもよい。ステップS112では、仮の値とした距離Eを実際の値を求める。それにはまず、ステップS110で求められた寸法参照点Ps1,Ps2の模型座標値から次の式(64)によりその間隔lsを求める。なお、添字s1,s2は寸法参照点Ps1,Ps2の模型の座標であることを示す。
ls=√{(xs1−xs2)2+(ys1−ys2)2+(zs1−zs2)2} (64)
【0099】
次いで、ステップS102で実測した参照寸法Lsとlsとの比を求める。この比を求めた各模型座標値に掛ける。または、ステップS110に戻り上記式(60)のEに掛けて被測量点Pnの実寸法の座標を直接求めてもよい。以上のステップにより、カメラ10aを原点とした、被測量点Pnの3次元座標の実際の値が算出される。
【0100】
以上の方法により2方向からの写真による写真測量ができる。2方向からの写真による写真測量には、共面条件を用いる方法、視差を消去する方法、共線条件を用いる方法といった従来の方法がある。いずれも2方向の撮影する方向に差を設けることにより生じた被写体の像の違い、すなわち視差を基にカメラの姿勢を求めている。本実施例では2方向の差に関係なくカメラの姿勢が求められる。カメラの姿勢を求める精度も2方向の差に関係ない。2方向の写真の視差を基にカメラの姿勢を求める従来の写真測量方法では、カメラの姿勢を算出する精度が2方向の差が小さくなるにつれて低下していた。本実施例の方法によれば、2方向の差が少ない場合の測量においてもカメラ姿勢を精度よく算出できる。
【0101】
また、従来の方法ではカメラの姿勢を算出する際に逐次近似法、すなわち繰り返し計算のステップがあり計算に時間を要していた。本実施例による場合は繰り返しがないので計算が早くなる。また、従来の方法と組み合わせたとしても初期値を解近傍に設定できるので計算が早くなる。
【0102】
上記から明らかなようにカメラ姿勢を求めることが目的である場合は図4のステップS102からステップS108までを実行すればよい。これを利用して写真測量を実行する場合には、更にステップS110およびステップS112を実行すればよい。ステップS102〜S108によってカメラ姿勢が正確に把握できるので、これを利用した測量ステップS110、S112では精度よく被写体を測量できる。
【0103】
上記実施例は、共同住宅を被写体に設定した場合を例示したので種々の点を参照点に利用できる。しかし、被写体が自然の造形物などである場合には、参照点が設定し難いというときが想定される。このようなときには、図11で示すような標識を被写体に添えて撮影してもよい。図11(A)、(B)は、被写体に適用する標識の例を示した図である。(A)、(B)で示すように正確な平行線である2本以上の直線一対(例えばK1、K2)または平行線の特定に利用できる点(例えばPL1〜PL4)を形状または模様として配し、かつ、一対の平行線に鉛直に交差する直線(K3)線上の点(例えばPh1、Ph2)が形状または模様として配されたものであればよい。
【0104】
また、標識に設定する姿勢参照平行線K1、K2は線間隔に比べ長さが長いのがよい。例えば1.5倍以上で使用勝手が悪くならない限り長く設定するのがよい。このように姿勢参照平行線K1、K2を相対的に長く設定すると、撮影で上記のように遠近が深い状態に配しても平行線の撮像が大きく(長く)写るので、方向の検出精度を上げることができる。
【0105】
また、方向参照点Ph1およびPh2を寸法参照点Ps1、Ps2と兼ねてその間隔Lsを実測または規定値としてもよい。点および線を光り反射率の高い印として特定しやすくするのもよい。この標識を被写体全体に対してできるだけ幅広く写るように、かつ姿勢参照平行線K1、K2が撮影の遠近方向におおよそ向くように地面、床に置くまたは壁等に掲げる。以上の姿勢参照平行線のあり方については被写体の構造、模様を利用する場合も同様である。
【0106】
上記実施例では単写真からカメラ姿勢を把握し、これを測量に応用する場合について述べた。しかし、カメラ姿勢を把握する技術は、前述したように測量以外でも、ロボット、入力装置等の他の分野でも広く活用できる。例えばカメラに直接関係するものでは、カメラを据え付けた機器など物体の姿勢、または被写体を機器など物体とした場合の姿勢把握等に採用できる。また、姿勢参照平行線や種々の参照点を高輝度にするなどして画像から自動検出する方法等と組み合わせれば、機器または物体の高精度な姿勢の動的自動検出もしくは機器または物体の自動姿勢制御にも応用できる。
【0107】
さらに図12を参照して上述した実施例の応用例について簡単に説明する。選択平面22の傾斜を確認した以後について説明する。選択平面22を第1平面として、この第1平面と交差する第2平面を設定する。この第2平面を補助平面40と称する。図12は、第1平面としての選択平面22と第2平面としての補助平面40との配置関係を示した図である。補助平面40は、選択平面22に対して次の関係を持って配置されている。
【0108】
選択平面22に対して、補助平面40は角度αで交差されている。そして、これら2面の交線上に共有する2個の補助点Pc1、Pc2が設定されている。カメラ撮影を行う際に、さらに角度α、補助点Pc1、Pc2を含むようにして単写真を得る。角度α、補助点Pc1、Pc2を用いれば、選択平面22との接続関係からカメラ10に対する補助平面40の傾斜を算出できる。また、Pc1、Pc2は選択平面22上の点として3次元座標を算出できる。Pc1、Pc2は補助平面40上の方向参照点Ph1、Ph2としても併用できる。上記のように選択平面22のカメラ姿勢は把握できる。よって、補助平面40のカメラ姿勢を把握できる。
【0109】
上記補助平面40を用いることによりカメラの姿勢を把握する場合の基準平面、すなわち基準座標系を選択平面22以外にも設定することができる。写真測量で1方向から撮影した写真1枚による写真測量の実施例でカメラとの姿勢関係が把握された選択平面22上の被測量点を測量する方法について既に述べた。カメラとの姿勢関係が把握された補助平面40上についても同様に被測量点を測量できる。つまり1方向から撮影した写真一枚による写真測量でも、補助平面40を組み合わせれば選択平面22以外の平面上、さらには複数の平面上にある被測量点の測量が可能になる。図12で示すように、選択平面22に対して更に補助平面40を設定するようにすれば、本発明の汎用性が向上するので適用範囲を広げることができる。
【0110】
以上本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【0111】
【図1】従来の手法で単写真からカメラ姿勢を求める場合について示した図である。
【図2】単写真からカメラ姿勢を求める本発明の場合について示した図である。
【図3】共同住宅を被写体としてカメラ撮影を行い、カメラ姿勢を把握してから測量を行う実施例について示した図である。
【図4】被写体の撮影を行ってカメラ姿勢を求め、さらに写真測量を行うまでの処理をまとめたフローチャートである。
【図5】実施例を実施するのに好適であるハードウエア構成の例を示したブロック図である。
【図6】姿勢参照平行線の消失点を算出する概念について示した図である。
【図7】仮想撮像面上の消失点と選択平面との関係を示した幾何図である。
【図8】(A)は合併された各点の配置を概念的に示した図、(B)はカメラの光軸方向の線をカメラ基軸の直交断面に投影した線の図である。
【図9】測量のために撮影しているカメラと被写体の配置および2つのカメラにおける撮像と被写体上の点との関係を示した図である。
【図10】三角測量の原理について示した図である。
【図11】被写体に適用する標識の例を示した図である。
【図12】実施例の応用例について示した図である。
【符号の説明】
【0112】
1 選択平面
10 カメラ
15a、15b 単写真
20 被写体(共同住宅)
22 選択平面
K1、K2 姿勢参照平行線
Ph1、Ph2 方向参照点
PL1〜PL4 平行参照点
PN 被測量点
Ps1、Ps2 寸法参照点
【特許請求の範囲】
【請求項1】
被写体上に定めた選択平面に複数の方向参照点を設定すると共に、前記選択平面と直交する姿勢参照平行線を設定し、
前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影して単写真を得る第1ステップを少なくとも含む、ことを特徴とするカメラ姿勢把握方法。
【請求項2】
前記第1ステップと、
前記第1ステップで撮影した前記単写真上に2次元座標系を定義し、前記選択平面上の前記方向参照点および前記姿勢参照平行線上に定めた平行参照点を特定して座標を得る第2ステップと
前記第2ステップで得た前記方向参照点および前記平行参照点の座標に基づいて、前記選択平面に対するカメラ姿勢を求める第3ステップとをさらに備える、ことを特徴とする請求項1に記載のカメラ姿勢把握方法。
【請求項3】
前記第1ステップでは、さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影して前記単写真を取得し、
前記第2ステップでは、さらに前記単写真上で前記補助点の座標を取得し、
前記第3ステップでは、さらに前記角度α及び前記補助点の座標を参照して、前記補助平面に対するカメラ姿勢を求める、ことを特徴とする請求項2に記載のカメラ姿勢把握方法。
【請求項4】
前記姿勢参照平行線及び前記選択平面の前記方向参照点を特定できる図形を配した標識を、前記被写体に設置して前記第1ステップを実行する、ことを特徴とする請求項1から3のいずれかに記載のカメラ姿勢把握方法。
【請求項5】
被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の3次元座標を求める写真測量方法であって、
請求項1から3のいずれかに記載のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める、ことを特徴とする写真測量方法。
【請求項6】
前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める、ことを特徴とする請求項5に記載の写真測量方法。
【請求項7】
被写体上に定めた選択平面に複数の方向参照点を設定すると共に、前記選択平面と直交する姿勢参照平行線を設定し、前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影した単写真の画像を読み込む第1処理と、
前記単写真上に2次元座標系を定義し、前記選択平面上の前記方向参照点および前記姿勢参照平行線上に定めた平行参照点を特定して座標を得る第2処理と、
前記方向参照点および前記平行参照点の座標に基づいて、前記選択平面に対するカメラ姿勢を求める第3処理とをコンピュータに実行させることを特徴とするカメラ姿勢把握用のプログラム。
【請求項8】
さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影した単写真の画像を読み込み、
さらに前記単写真上で前記補助点の座標を取得し、
さらに前記角度α及び前記補助点の座標に基づいて、前記補助平面に対するカメラ姿勢を求める、ことを特徴とする請求項7に記載のカメラ姿勢把握用のプログラム。
【請求項9】
被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の3次元座標を求める写真測量のプログラムであって、
請求項1から3のいずれかに記載のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める処理をコンピュータに実行させることを特徴とする写真測量のプログラム。
【請求項10】
前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める処理をコンピュータに実行させることを特徴とする請求項9に記載の写真測量のプログラム。
【請求項1】
被写体上に定めた選択平面に複数の方向参照点を設定すると共に、前記選択平面と直交する姿勢参照平行線を設定し、
前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影して単写真を得る第1ステップを少なくとも含む、ことを特徴とするカメラ姿勢把握方法。
【請求項2】
前記第1ステップと、
前記第1ステップで撮影した前記単写真上に2次元座標系を定義し、前記選択平面上の前記方向参照点および前記姿勢参照平行線上に定めた平行参照点を特定して座標を得る第2ステップと
前記第2ステップで得た前記方向参照点および前記平行参照点の座標に基づいて、前記選択平面に対するカメラ姿勢を求める第3ステップとをさらに備える、ことを特徴とする請求項1に記載のカメラ姿勢把握方法。
【請求項3】
前記第1ステップでは、さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影して前記単写真を取得し、
前記第2ステップでは、さらに前記単写真上で前記補助点の座標を取得し、
前記第3ステップでは、さらに前記角度α及び前記補助点の座標を参照して、前記補助平面に対するカメラ姿勢を求める、ことを特徴とする請求項2に記載のカメラ姿勢把握方法。
【請求項4】
前記姿勢参照平行線及び前記選択平面の前記方向参照点を特定できる図形を配した標識を、前記被写体に設置して前記第1ステップを実行する、ことを特徴とする請求項1から3のいずれかに記載のカメラ姿勢把握方法。
【請求項5】
被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の3次元座標を求める写真測量方法であって、
請求項1から3のいずれかに記載のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める、ことを特徴とする写真測量方法。
【請求項6】
前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める、ことを特徴とする請求項5に記載の写真測量方法。
【請求項7】
被写体上に定めた選択平面に複数の方向参照点を設定すると共に、前記選択平面と直交する姿勢参照平行線を設定し、前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影した単写真の画像を読み込む第1処理と、
前記単写真上に2次元座標系を定義し、前記選択平面上の前記方向参照点および前記姿勢参照平行線上に定めた平行参照点を特定して座標を得る第2処理と、
前記方向参照点および前記平行参照点の座標に基づいて、前記選択平面に対するカメラ姿勢を求める第3処理とをコンピュータに実行させることを特徴とするカメラ姿勢把握用のプログラム。
【請求項8】
さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影した単写真の画像を読み込み、
さらに前記単写真上で前記補助点の座標を取得し、
さらに前記角度α及び前記補助点の座標に基づいて、前記補助平面に対するカメラ姿勢を求める、ことを特徴とする請求項7に記載のカメラ姿勢把握用のプログラム。
【請求項9】
被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の3次元座標を求める写真測量のプログラムであって、
請求項1から3のいずれかに記載のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める処理をコンピュータに実行させることを特徴とする写真測量のプログラム。
【請求項10】
前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の3次元座標を求める処理をコンピュータに実行させることを特徴とする請求項9に記載の写真測量のプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2007−71570(P2007−71570A)
【公開日】平成19年3月22日(2007.3.22)
【国際特許分類】
【出願番号】特願2005−256190(P2005−256190)
【出願日】平成17年9月5日(2005.9.5)
【出願人】(301056100)
【Fターム(参考)】
【公開日】平成19年3月22日(2007.3.22)
【国際特許分類】
【出願日】平成17年9月5日(2005.9.5)
【出願人】(301056100)
【Fターム(参考)】
[ Back to top ]