(57)【特許請求の範囲】
【請求項１】
カメラの姿勢を求めるため該カメラに対する傾斜、軸方向を求める対象の面として被写体上に定めた選択平面に、該選択平面のＸ軸またはＹ軸の軸方向を求めるための、複数の方向参照点を設定すると共に、前記選択平面と直交する複数の平行線を姿勢参照平行線として設定し、
前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影して単写真を得る第１ステップと、
前記第１ステップで撮影した前記単写真上に２次元座標系を定義し、その際に、前記選択平面上の前記方向参照点および前記姿勢参照平行線それぞれの上に複数の平行参照点を特定して、前記単写真を一画面上に表示した状態から座標を得る第２ステップと、
前記第２ステップで得た前記方向参照点および前記平行参照点の座標に基づいて
前記第２ステップで得られた座標を、全て前記カメラの特性に応じて前記被写体の投影を想定した仮想撮像面の２次元座標に変換し、
前記姿勢参照平行線少なくとも２線上の前記平行参照点少なくとも２点ずつの座標に基づいて前記仮想撮像面上で前記姿勢参照平行線の像またはその延長が交差する点である消失点の座標を求め、
前記カメラの位置と前記消失点とを結ぶ方向となる前記姿勢参照平行線が延びる方向に基づいて前記仮想撮像面の３次元座標系を定義し、前記カメラの光軸を含み互いに直交する２面に投影される２つの傾斜状態から前記選択平面の傾斜を求め、
更に、得られた前記２つの傾斜状態および前記方向参照点の座標の少なくとも２つに基づき前記仮想撮像面の前記３次元座標系における前記方向参照点の３次元座標２つ、から前記カメラの姿勢を示す要素のうち前記選択平面の基本軸方向を確定できる座標を求めることにより、前記選択平面に対するカメラ姿勢を求める第３ステップとをさらに備える、ことを特徴とするカメラ姿勢把握方法。
【請求項２】
前記第１ステップでは、さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影して前記単写真を取得し、
前記第２ステップでは、さらに前記単写真上で前記補助点の座標を取得し、
前記第３ステップでは、さらに前記角度α及び前記補助点の座標を参照して、前記補助平面に対するカメラ姿勢を求める、ことを特徴とする請求項１に記載のカメラ姿勢把握方法。
【請求項３】
前記姿勢参照平行線及び前記選択平面の前記方向参照点を特定できる図形を配した標識を、前記被写体に設置して前記第１ステップを実行する、ことを特徴とする請求項１または２に記載のカメラ姿勢把握方法。
【請求項４】
被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の３次元座標を求める写真測量方法であって、
請求項１または２に記載のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の３次元座標を求める、ことを特徴とする写真測量方法。
【請求項５】
前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の３次元座標を求める、ことを特徴とする請求項４に記載の写真測量方法。
【請求項６】
カメラの姿勢を求めるため該カメラに対する傾斜、軸方向を求める対象の面として被写体上に定めた選択平面に、該選択平面のＸ軸またはＹ軸の軸方向を求めるための、複数の方向参照点を設定すると共に、前記選択平面と直交する複数の平行線を姿勢参照平行線として設定し、
前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影した単写真の画像を読み込む第１処理と、
前記第１ステップで撮影した前記単写真上に２次元座標系を定義し、その際に、前記選択平面上の前記方向参照点および前記姿勢参照平行線それぞれの上に複数の平行参照点を特定して、前記単写真を一画面上に表示した状態から座標を得る第２処理と、
前記第２ステップで得た前記方向参照点および前記平行参照点の座標に基づいて
前記第２ステップで得られた座標を、全て前記カメラの特性に応じて前記被写体の投影を想定した仮想撮像面の２次元座標に変換し、
前記姿勢参照平行線少なくとも２線上の前記平行参照点少なくとも２点ずつの座標に基づいて前記仮想撮像面上で前記姿勢参照平行線の像またはその延長が交差する点である消失点の座標を求め、
前記カメラの位置と前記消失点とを結ぶ方向となる前記姿勢参照平行線が延びる方向にに基づいて前記仮想撮像面の３次元座標系を定義し、前記カメラの光軸を含み互いに直交する２面に投影される２つの傾斜状態から前記選択平面の傾斜を求め、
更に、得られた前記２つの傾斜状態および前記方向参照点の座標の少なくとも２つに基づき前記仮想撮像面の前記３次元座標系における前記方向参照点の３次元座標２つ、から前記カメラの姿勢を示す要素のうち前記選択平面の基本軸方向を確定できる座標を求めることにより、前記選択平面に対するカメラ姿勢を求める第３処理とをコンピュータに実行させることを特徴とするカメラ姿勢把握用のプログラム。
【請求項７】
さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影した単写真の画像を読み込み、
さらに前記単写真上で前記補助点の座標を取得し、
さらに前記角度α及び前記補助点の座標に基づいて、前記補助平面に対するカメラ姿勢を求める、ことを特徴とする請求項６に記載のカメラ姿勢把握用のプログラム。
【請求項８】
被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の３次元座標を求める写真測量のプログラムであって、
請求項１または２に記載のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の３次元座標を求める処理をコンピュータに実行させることを特徴とする写真測量のプログラム。
【請求項９】
前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の３次元座標を求める処理をコンピュータに実行させることを特徴とする請求項８に記載の写真測量のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カメラで被写体を撮影（撮像と称される場合もある）したときに、撮影した写真からカメラ姿勢を把握する方法に関する。また、この方法を用いて測量対象物（被写体）を精度よく測量する写真測量技術に関する。
【背景技術】
【０００２】
カメラで撮影した被写体の写真からカメラ姿勢を精度よく把握（検出）する技術は、汎用性が高い重要な技術である。例えば、写真測量を行う場合には被写体に対するカメラの姿勢を正確に把握しておかないと、正確な測量を行うことができない。また、最近においては急速にロボット技術が進歩しており、ペットロボット、搬送ロボット、掃除ロボットなど多種、多機能な自立型ロボットが提供されるようになっている。このような自律型ロボットは、一般に目に相当する部分にＣＣＤカメラなどが搭載されており、動作対象物体（被写体）の形状等を把握して所定の動作を行う。よって、ロボットに搭載されたカメラについても、その姿勢を正確に把握することが重要である。カメラ姿勢の把握が不正確な場合には、ロボットが被写体の位置や形状等を誤って認識することになるので誤動作の原因となる。例えば、ロボットがコップを把持する動作では、コップを正確に把持できないなどの問題が発生する。さらに被写体が平面であった場合に、カメラ姿勢を正確に把握できればこの平面上の点の位置を正確に検出できるので入力装置などにも活用できる。以上の説明から、カメラ姿勢を把握する技術は汎用性が高く、重要な技術であることが理解される。
【０００３】
なお、上記「カメラ姿勢」とは、撮影を行った被写体上に任意で定めた一平面に対するカメラの姿勢である。より詳細には、被写体が置かれる空間に３次元座標系を定義したときに、上記平面に対するカメラの光軸の角度、またこの光軸回りのカメラの回転角度により定量的に特定されるものである。よって、カメラ姿勢は、上記平面を基準としてカメラがこの平面に対してどのような姿勢で撮影したかを示すことになる。なお、被写体の平面とカメラとは相対的な位置関係にあることから、カメラ姿勢は平面の姿勢を示していると見ることもできる。
【０００４】
従来から、カメラ（撮像手段）のカメラ姿勢（撮像姿勢）を把握するための技術が検討されている。例えば特許文献１は、撮像手段で撮像した画像データの情報から被写体の所定平面の姿勢位置や平面上の被検出位置を検出する方法等について開示する。特許文献１は、被写体の平面上に矩形形状を特徴づける特徴点として４点を設定している。平面上に矩形形状を設定すると２組の平行線が存在するので、これらの平行線の消失点を算出することにより平面姿勢を求めている。この特許文献１では、この技術を活用するとスクリーンなどの表示画面上で指示した位置などを直接入力することができるとしている。
【０００５】
また、特許文献２は、所定のマーカを平面上に配置して撮像手段で斜方向から撮影して画像情報を得、この画像情報に基づいて二値化画像処理を実施する方法を開示する。このマーカは２個の正方形部が一つの頂点で接するようにして横方向に並べて表示である。このマーカの全体像がＣＣＤカメラ等の撮影視野内に歪みなく取り込まれる。この画像情報を処理してカメラの位置姿勢認識を行っている。この特許文献２の技術を自立型のロボット等に活用すると、対象物体に確実に近付き、マニピュレータ等でその物体を正確に把持する等の動作を行える。
【０００６】
【特許文献１】特開平２００１−１４８０２５号公報
【特許文献２】特開平７−９８２１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記特許文献１及び特許文献２では、カメラ姿勢の把握をするため平面上に平行線を含んだ矩形形状或いはマーカ（正方形部）が設定されている。ところで、被写体に対するカメラの傾斜を検出する場合には前記矩形形状等が傾斜していること、すなわち矩形形状等に対してカメラを斜めの姿勢で撮影するのが好ましい。一方、矩形形状等と同一平面上にある参照点の座標を求める場合には、上記関係が逆となる。すなわちカメラをこの平面に対して正対に近い状態、つまり平面に対してカメラを真正面に近い姿勢で撮影することが望ましい。
【０００８】
カメラ姿勢を把握するためには、平面に対するカメラの傾斜及び平面上の参照点の座標を求めることが必要である。しかしながら、特許文献１、２で示す従来技術にあっては、カメラ傾斜を求めるために用いる平面上に座標を求める参照点が配置されている。よって、カメラ傾斜の検出に好ましいカメラ位置と参照点の座標算出に好ましいカメラ位置とが相反する関係となっている。そのために精度よくカメラ姿勢を検出できない事態が発生するという問題がある。
【０００９】
また、前述したようにカメラ姿勢を把握しようとするのは、カメラで捉えた被写体を測量したり、被写体の位置、形状等を特定するためである。よって、カメラ姿勢を正確に把握できない場合、その結果として被写体の測量、位置特定、形状特定等を精度良く実行できないという問題が生じる。また、従来の方法ではより精度が良くなる撮影をするためには２対の平行線方向について遠近深くする必要があり撮影方向の選定に困難がある。例えば建物の水平および垂直の平行線構造または模様を利用する場合では、水平に移動し良い場所を探すとともに垂直の平行線を遠近深く撮影するため上空または地下方向から撮影しなければならない。
【００１０】
したがって、本発明の主な目的は、簡単な構成でカメラ姿勢を把握できるカメラ姿勢把握方法を提供することである。
【課題を解決するための手段】
【００１１】
上記目的は、カメラの姿勢を求めるため該カメラに対する傾斜、軸方向を求める対象の面として被写体上に定めた選択平面に、該選択平面のＸ軸またはＹ軸の軸方向を求めるための、複数の方向参照点を設定すると共に、前記選択平面と直交する複数の平行線を姿勢参照平行線として設定し、
前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影して単写真を得る第１ステップと、
前記第１ステップで撮影した前記単写真上に２次元座標系を定義し、その際に、前記選択平面上の前記方向参照点および前記姿勢参照平行線それぞれの上に複数の平行参照点を特定して、前記単写真を一画面上に表示した状態から座標を得る第２ステップと、
前記第２ステップで得た前記方向参照点および前記平行参照点の座標に基づいて
前記第２ステップで得られた座標を、全て前記カメラの特性に応じて前記被写体の投影を想定した仮想撮像面の２次元座標に変換し、
前記姿勢参照平行線少なくとも２線上の前記平行参照点少なくとも２点ずつの座標に基づいて前記仮想撮像面上で前記姿勢参照平行線の像またはその延長が交差する点である消失点の座標を求め、
前記カメラの位置と前記消失点とを結ぶ方向となる前記姿勢参照平行線が延びる方向に基づいて前記仮想撮像面の３次元座標系を定義し、前記カメラの光軸を含み互いに直交する２面に投影される２つの傾斜状態から前記選択平面の傾斜を求め、
更に、得られた前記２つの傾斜状態および前記方向参照点の座標の少なくとも２つに基づき前記仮想撮像面の前記３次元座標系における前記方向参照点の３次元座標２つ、から前記カメラの姿勢を示す要素のうち前記選択平面の基本軸方向を確定できる座標を求めることにより、前記選択平面に対するカメラ姿勢を求める第３ステップとをさらに備える、ことを特徴とするカメラ姿勢把握方法により達成できる。
【００１２】
本発明によると、姿勢参照平行線は選択平面に対して直交して配置されており、カメラの傾斜は単写真に撮影されている姿勢参照平行線に基づいて求めることができる。一方、カメラの選択平面に対する軸方向は、単写真に撮影されている選択平面上の方向参照点に基づいて求めることができる。カメラ姿勢は、これらカメラの傾斜と軸方向とによって把握できる。このようにカメラの傾斜を求めるときに使用する面（姿勢参照平行線を含む面）と軸方向を求めるときに使用する面（選択平面）とが互いに直交しており、同一面ではないので上述した相反関係とならない。よって、本発明によると、一枚の単写真を用いてカメラ姿勢を精度良く把握できる。
【００１４】
また、前記第１ステップでは、さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影して前記単写真を取得し、前記第２ステップでは、さらに前記単写真上で前記補助点の座標を取得し、前記第３ステップでは、さらに前記角度α及び前記補助点の座標を参照して、前記補助平面に対するカメラ姿勢を求めるようにしもよい。このようにすると、本発明の適用範囲をさらに広げることができる。
【００１５】
また、前記姿勢参照平行線及び前記選択平面の前記方向参照点を特定できる図形を配した標識を、前記被写体に設置して前記第１ステップを実行するようにしてもよい。この場合には、形状等に特徴がない被写体であっても簡単にカメラ姿勢を把握できる。
【００１６】
また、被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の３次元座標を求める写真測量方法であって、前述のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の３次元座標を求めることを特徴とする写真測量方法として応用してもよい。この写真測量方法は、カメラ姿勢が正確に把握されているので精度良い測量結果を得ることができる。
【００１７】
さらに、前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の３次元座標を求める写真測量方法としてもよい。
【００１８】
また、上記目的は、カメラの姿勢を求めるため該カメラに対する傾斜、軸方向を求める対象の面として被写体上に定めた選択平面に、該選択平面のＸ軸またはＹ軸の軸方向を求めるための、複数の方向参照点を設定すると共に、前記選択平面と直交する複数の平行線を姿勢参照平行線として設定し、
前記選択平面に対して正対に近い状態の撮影姿勢で、前記選択平面及び前記姿勢参照平行線を含むようにして前記被写体をカメラで撮影した単写真の画像を読み込む第１処理と、
前記第１ステップで撮影した前記単写真上に２次元座標系を定義し、その際に、前記選択平面上の前記方向参照点および前記姿勢参照平行線それぞれの上に複数の平行参照点を特定して、前記単写真を一画面上に表示した状態から座標を得る第２処理と、
前記第２ステップで得た前記方向参照点および前記平行参照点の座標に基づいて
前記第２ステップで得られた座標を、全て前記カメラの特性に応じて前記被写体の投影を想定した仮想撮像面の２次元座標に変換し、
前記姿勢参照平行線少なくとも２線上の前記平行参照点少なくとも２点ずつの座標に基づいて前記仮想撮像面上で前記姿勢参照平行線の像またはその延長が交差する点である消失点の座標を求め、
前記カメラの位置と前記消失点とを結ぶ方向となる前記姿勢参照平行線が延びる方向に基づいて前記仮想撮像面の３次元座標系を定義し、前記カメラの光軸を含み互いに直交する２面に投影される２つの傾斜状態から前記選択平面の傾斜を求め、
更に、得られた前記２つの傾斜状態および前記方向参照点の座標の少なくとも２つに基づき前記仮想撮像面の前記３次元座標系における前記方向参照点の３次元座標２つ、から前記カメラの姿勢を示す要素のうち前記選択平面の基本軸方向を確定できる座標を求めることにより、前記選択平面に対するカメラ姿勢を求める第３処理とをコンピュータに実行させることを特徴とするカメラ姿勢把握用のプログラムによっても同様に達成できる。
【００１９】
また、カメラ姿勢把握用のプログラムは、さらに前記選択平面と角度αを成して配置した補助平面を設定すると共に、前記選択平面と前記補助平面との交線上に複数の補助点を設定して、前記補助平面及び前記補助点も含むようにしてカメラで前記被写体を撮影した単写真の画像を読み込み、さらに前記単写真上で前記補助点の座標を取得し、さらに前記角度α及び前記補助点の座標に基づいて、前記補助平面に対するカメラ姿勢を求めるものとしてもよい。
【００２０】
また、被測量点を含む被写体に位置が既知である複数の測量参照点および間隔が既知である寸法参照点を設定して、前記被写体をカメラで撮影した単写真を用いて前記被測量点の３次元座標を求める写真測量のプログラムであって、前述のカメラ姿勢把握方法によりカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の３次元座標を求める処理をコンピュータに実行させることを特徴とする写真測量のプログラムであれば、被写体を精度よく測量できる。
【００２１】
さらに、前記被写体を複数方向からカメラで撮影した複数の単写真を用い、単写真毎にカメラ姿勢を求めるカメラ姿勢把握処理を一部に含んで、前記被測量点の３次元座標を求める処理をコンピュータに実行させることを特徴とする写真測量のプログラムとしてもよい。
【発明の効果】
【００２２】
本発明によれば、簡単な構成でカメラ姿勢を把握できるカメラ姿勢把握方法を提供できる。また、より精度がよくなる撮影をするためには１対の平行線方向について遠近深くするよう気を配ることで足りるので撮影方向の選定が従来と比べて容易である。例えば、建物の水平線構造または模様を利用する場合では、地上を水平に移動してよい場所を探すことで足りる。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照して本発明の一実施形態を説明する。ここで示す実施例はカメラで被写体を撮影し、この写真（画像データ）に基づいてカメラ姿勢を把握するものである。なお、ここでは通常の単眼カメラで被写体を一方向から撮影して得た写真を単写真と称する。よって、以下で示す実施例は被写体の単写真からカメラ姿勢を把握するものである。
【００２４】
また、前述したようにカメラ姿勢は、被写体上に定めた一平面に対するカメラの姿勢である。以下では、この一平面を特に選択平面と称して説明する。カメラ姿勢は、選択平面とカメラとの相対的な位置関係を示している。仮に基準位置に固定した選択平面を撮影したときに把握される姿勢は、まさしくカメラ姿勢を示すものとなる。一方、これとは逆に基準位置にカメラを固定して、選択平面を撮影した場合に把握される姿勢は選択平面に関するものとなる。本明細書では、このような場合を区別することなくカメラ姿勢と称している。ただし、以下で示す実施例では、理解を容易とするため、カメラの位置を固定して選択平面の姿勢を求める場合について説明している。
【００２５】
具体的な実施例を説明する前に、技術的理解を容易とするため本発明のポイントとなる概念を図１及び図２を参照して説明する。なお、カメラ姿勢を求めるためには、選択平面の傾斜と、選択平面の軸方向を求めることが必要である。選択平面上に設定した少なくとも２個の参照点の座標を算出することで、選択平面の基準点と基準方向を確定して軸方向を求めることができる。以下、選択平面の軸方向を定めるための参照点を方向参照点と称して説明する。なお、方向参照点には基準点など位置を確定する役割もある。
【００２６】
ここで、選択平面の傾斜を求めること、及び選択平面上の基点と軸方向を定めるための方向参照点の座標を求めることにより、カメラの姿勢を求められることについて説明する。カメラを固定して、選択平面を基盤とする３次元座標系を表現できればよい。なお、カメラの固定とはカメラを基準として３次元座標系を定義することである。
【００２７】
例えば、カメラの位置を基準点、レンズの光軸方向をＺ軸、撮像面の横軸方向をＸ軸、縦方向をＹ軸方向とする第１の３次元座標系を定義する。その一方、例えば方向参照点の１つＰｈ１を基準点とする。そして、この方向参照点Ｐｈ１ともう一つの方向参照点Ｐｈ２とを結ぶ方向をＸ軸とする。また、選択平面上でＸ軸に直交する方向をＹ軸とし、選択平面に直交する方向をＺ軸とする第２の３次元座標系を定義する。
【００２８】
ここで、方向参照点Ｐｈ１、Ｐｈ２の第１の３次元座標系での座標値が判明すれば、第２の３次元座標系の基準点およびＸ軸が確定する。更に、第１の３次元座標系で表される選択平面の傾斜が判明すれば、選択平面上で第２の３次元座標系でのＸ軸に直交するＹ軸方向および選択平面に直交するＺ軸方向が確定する。よって、選択平面の傾斜と軸方向とをパラメータとして、カメラ姿勢を表わすことができる。
【００２９】
図１は、従来の手法で単写真からカメラ姿勢を求める場合について示した図である。選択平面１の傾斜を算出するため４個の参照点Ａ１〜Ａ４が設定されている。参照点Ａ１〜Ａ４のそれぞれは、矩形形状（長方形）の頂点に配置されている。（Ａ１−Ａ２）線と（Ａ３−Ａ４）線とが一対の平行線、また（Ａ１−Ａ３）線と（Ａ２−Ａ４）線とが一対の平行線となる。また、選択平面１には軸方向を求めるために２個の方向参照点Ｂ１、Ｂ２が設定される。なお、図１では、点Ａ１と点Ｂ１、点Ａ２と点Ｂ２とを共用した場合について例示している。
【００３０】
図１で示す選択平面１を全ての参照点Ａ、Ｂを含むようにして、カメラ１０で撮影して単写真を得る。単写真に写った参照点Ａの像の位置に基づいて選択平面１の傾斜を算出し、更に単写真に写った方向参照点Ｂの像に基づいて３次元座標を算出して選択平面１の軸方向を求める処理を順に行う。これによりカメラ姿勢を把握する。このように従来にあっては、選択平面１上に点Ａ、Ｂの全てが配置されている。そのために、先に課題として指摘したような問題が発生することになる。すなわち、選択平面１の傾斜をより正確に検出しようと傾斜をより大きくすると、方向参照点Ｂの座標値の検出精度が低下するので軸方向の正確性が劣化する。これとは逆に、軸方向の正確性をより向上させようと傾斜をより小さくすると選択平面１の傾斜検出の精度が劣化する。結局、より精度よくカメラ姿勢を把握することが困難となっていた。
【００３１】
図２は、単写真からカメラ姿勢を求める本発明の場合について示した図である。カメラ姿勢を算出するための参照点Ａ、Ｂを役割別に配置する。選択平面１の傾斜を求めるための平行線上に配置する参照点Ａ１〜Ａ４は選択平面１とは別に設定されている。具体的には、選択平面１上の軸方向を求めるための方向参照点Ｂ１、Ｂ２は選択平面１上に設定されるが、参照点（平行参照点）Ａ１〜Ａ４は選択平面１と直交する平行線Ｋ１、Ｋ２上に設定する。以下、この平行線Ｋ１、Ｋ２を姿勢参照平行線と称する。
【００３２】
ここで、カメラ１０を選択平面１に対しては正対に近い撮影姿勢に設定する。このようにすると、姿勢参照平行線Ｋ１、Ｋ２は選択平面１に直交しているので、カメラ１０の光軸は姿勢参照平行線Ｋ１、Ｋ２に対しては平行に近い状態となる。このような状態のときに、本明細書では、特にカメラ１０に対して姿勢参照平行線Ｋ１、Ｋ２は「遠近深い状態」であると称し、またカメラ１０に対する選択平面１の配置を「遠近浅い状態」であると称することとする。
【００３３】
上記説明から明らかなように、本発明では方向参照点Ｂ１、Ｂ２が置かれる選択平面１と姿勢参照平行線Ｋ１、Ｋ２とは互いに直行する配置に設定されている。そして、方向参照点Ｂ１、Ｂ２及び姿勢参照平行線Ｋ１、Ｋ２上の参照点Ａ１〜Ａ４を含むようにしてカメラ撮影が行われる。よって、従来において問題となった相反関係を解消できる。
【００３４】
すなわち、図２で示す本発明の手法は選択平面１の傾斜を検出するための姿勢参照平行線Ｋ１、Ｋ２を遠近深い状態にできるため、これら参照平行線Ｋ１、Ｋ２の方向を精度よく検出できる。ここで選択平面１は姿勢参照平行線Ｋ１、Ｋ２と直交しているので、結果として選択平面１の傾斜を正確に検出できることになる。また、選択平面１にはカメラとの方向関係を検出するための方向参照点Ｂ１、Ｂ２が配置されている。選択平面１は、カメラ１０に対して正対に近い状態、すなわち遠近浅い状態にあるので方向参照点の３次元座標も高い精度で算出できることになる。このように本発明は被写体の選択平面１と直交する姿勢参照平行線Ｋ１、Ｋ２を設定するという新規な構成を採用するので、カメラ姿勢を高い精度で把握できる。
【００３５】
なお、参照点Ａは姿勢参照平行線Ｋの線上の任意の点であればよい。つまり、参照点Ａを特定する必要はなく、姿勢参照平行線Ｋ上の点であればよい。また、姿勢参照平行線Ｋは、図２で例示するように２本である場合に限らない。すなわち、姿勢参照平行線Ｋは３本以上としてもよい。また、姿勢参照平行線Ｋは互いに平行であればよく、同一の面上に存在しなくてもよい。より多くの姿勢参照平行線Ｋを参照するとより精度高くしてカメラ姿勢を把握できる。
【００３６】
なお、方向参照点Ｂは選択平面１上に２点以上を設定する。この選択平面１は被写体の一面である。実際にカメラ姿勢の把握を行うときには被写体の状況により、カメラから全面が見える選択平面１を設定できないという場合もある。このように選択平面１が被写体中に確認し難い場合であっても次のようにして対処できる。例えば、方向参照点Ｂは姿勢参照平行線Ｋと直交する線（選択平面１の要素である線）上の点とすることができる。また、方向参照点Ｂは姿勢参照平行線Ｋと選択平面１が交差する点（選択平面１の要素である点）としてもよい。つまり、選択平面１の全貌が見えなくても姿勢参照平行線ＫとＫに直交する１つの直線との交点が２点以上見えるのでもよい。以上のように、図２で示す本発明の手法は参照する点の配置に関する要件が単純であり設定し易い。また、姿勢参照平行線及びこれと直交する選択平面１や直線は造営物によくある形状または模様を活用でるのでカメラ姿勢を簡便に把握できることになる。以上で説明したことを前提として実施例を説明する。
【００３７】
図３から図１１を参照して単写真からカメラ姿勢を把握する場合の処理について具体的にして説明する。ただし、この実施例は単写真からカメラ姿勢を把握して、被写体を写真測量する場合ついて説明する。すなわち、この実施例はカメラ姿勢の把握を写真測量に応用した場合の例について述べる。以下では、１方向から撮影した単写真を用いての写真測量、および２方向（複数方向）から撮影した２枚（複数）の単写真を用いて写真測量の一例について説明する。
【００３８】
図３は共同住宅を被写体２０としてカメラ撮影を行い、カメラ姿勢を把握してから測量を行う様子を示した図である。図３では２つの方向それぞれからカメラ１０で被写体２０を撮影して、２枚の単写真を得ている。まず、一方のカメラ１０ａで撮影した単写真１５ａを用いてカメラ姿勢を求める場合について説明する。図３の下側には、カメラ１０ａで撮影した単写真１５ａと、カメラ１０ｂで撮影した単写真１５ｂを示している。
【００３９】
図４は、被写体２０の撮影を行ってカメラ姿勢を求め、さらに写真測量を行うまでの処理をまとめたフローチャートである。このフローチャートに沿って、図３を参照して説明する。まずステップＳ１０２では図３のカメラ１０ａで被測量点ＰＮが置かれた被写体２０を撮影する。被写体２０はほぼ直方体と見られる四階建ての共同住宅である。ここでは被測量点ＰＮが置かれた共同住宅の正面（ベランダの手すりなどがある前面）が選択平面２２とされている。カメラ１０ａは選択平面２２に対して遠近浅い状態（正対に近い状態）となるように撮影姿勢が設定される。被写体２０の左の平面（住宅の左壁面）２１は水平の直線模様に姿勢参照平行線Ｋ１、Ｋ２等が設定される参照平面である。この参照平面２１に対してはカメラ１０ａの撮影姿勢が遠近深くなるように設定されている。このように設定して撮影したのが図３の単写真１５ａである。なお、図３中の１５ｂも、同様に設定して異なる方向から撮影した単写真である。
【００４０】
この共同住宅は、正面（選択平面２２）と、その側面（参照平面２１）が直角である。よって、参照平面２１上に設定した水平の直線模様である姿勢参照平行線Ｋ１およびＫ２は、選択平面２２と直交する平行線となる。姿勢参照平行線Ｋ１およびＫ２は、参照平面２１に存在する線状模様等を利用して設定すればよい。ただし、姿勢参照平行線Ｋ１、Ｋ２は選択平面２２と直交している平行線であれば、必ずしも参照平面２１上でなくてもよい。例えば単写真１５ａに写っていれば屋上の縁Ｋ３、Ｋ４でもよい。また、２本以上の複数本を設定してもよい。同様に、選択平面２２は姿勢参照平行線Ｋ１、Ｋ２と直交している平面であればよい。例えばベランダの手すりがある面の他、その奥の窓２２ｐのある面でもよい。
【００４１】
方向参照点Ｐｈ１、Ｐｈ２を選択平面２２上に設定する。選択平面２２が被写体上で見え難い場合もある。例えば参照平面２１は見えるが、選択平面２２は見難く姿勢参照平行線Ｋ１、Ｋ２と直交する線（この線は選択平面２２の一部である）は確認できるという場合がある。このような場合は姿勢参照平行線Ｋ１、Ｋ２に直交する１つの線上の２点Ｐｈ３、Ｐｈ４を方向参照点としてもよい。また、姿勢参照平行線Ｋ１、Ｋ２と直交する１つの線（この線も選択平面２２の一部である）と、この平行線Ｋ１、Ｋ２とが交差する位置の参照点Ｐｈ５、Ｐｈ６としてもよい。
【００４２】
なお、上記姿勢参照平行線Ｋ１、Ｋ２については、建物屋内であれば天井、床、壁にある目地などの平行線があるので、これらを利用してもよい。同様に、敷地内に方形の石畳がある場合にはその目地を利用してもよい。
【００４３】
選択平面２２には測量の際に用いる寸法参照点Ｐｓ１、Ｐｓ２が設定されている。寸法参照点Ｐｓ１、Ｐｓ２の間隔Ｌｓ（参照寸法）を実測しておく。被写体２０に設定した、選択平面２２、参照平面２１が入るようにして、カメラ１０ａで被写体２０を撮影して単写真を得る。カメラ１０ａがデジタルカメラ等のようにデータを保存できるものである場合には、画像データをＩＣカード等に保存する。また、カメラ１０ａがフィルムを用いたものである場合には撮影したフィルム或いは写真をスキャナで読取って画像データ化する。
【００４４】
ここで、本実施例を実施するのに好適であるハードウエアについて簡単に説明しておく。図５は、この実施例を実施するのに好適であるハードウエア構成の一例を示すブロック図である。装置としてはパーソナルコンピュータ３０等の情報処理装置を使用する。システム全体を制御する中央演算処理装置(ＣＰＵ)３２には、入出力制御部（インターフェース）２３を介してキーボード２５、マウス２７、表示装置（ＣＲＴ、ＬＣＤなど）２９、プリンタ３１、ＩＣカード読み取り装置３３等が接続される。例えば、デジタルカメラで撮影された画像はＩＣカード３４を介して入力される。画像は表示装置（ディスプレイ）２９により観察できる。通常のカメラで撮影された写真は、フィルムスキャナ３５によってデジタル画像化して入力される。
【００４５】
上記コンピュータ３０は、カメラ姿勢を求めるためのプログラム及び被写体を測量するためのプログラム、並びにこれらのプログラムを実行するのに必要なデータ、測量で実測したデータ等はＨＤＤ３７に格納することができる。コンピュータ３０は、必要なデータをＨＤＤ３７から読み出して所定の処理を実行する。なお、図示を省略しているが、上記ＣＰＵ３２は所定のメモリを備えている。このメモリにプログラム等を格納してもよい。
【００４６】
ステップＳ１０４以降は上記コンピュータ３０を用いて実行されるデータ処理作業である。このステップＳ１０４ではステップＳ１０２で得られた画像が、例えば図５のＩＣカードリーダ３３によりコンピュータ３０に読み込まれる。参照寸法Ｌｓはキーボード２５により入力される。各データはハードディスクＨＤＤ３７などに保存される。
【００４７】
ステップＳ１０６ではステップＳ１０４で読み込まれた単写真１５ａがディスプレイ２９に表示される。姿勢参照平行線Ｋ１についてはその直線像上の任意の参照点ＰＬ１、ＰＬ２を、Ｋ２については参照点ＰＬ３、ＰＬ４を特定する。これらの参照点ＰＬ１〜ＰＬ４を平行参照点と称する。ディスプレイ２９に表示している単写真画像上で２次元座標系を定義して、平行参照点ＰＬ１〜ＰＬ４をマウス２７で指示して座標を入力する。この座標をピクセル座標と称する。上記平行参照点ＰＬ１〜ＰＬ４のそれぞれは姿勢参照平行線Ｋ１、Ｋ２の末端に設定すると検出精度を向上させることができる。
【００４８】
続いて、被測量点Ｐｎ、方向参照点Ｐｈ１、Ｐｈ２および寸法参照点Ｐｓ１、Ｐｓ２についても特定してマウスでピクセル座標を入力する。入力された各ピクセル座標はカメラ特性データにより仮想撮像面Ｆｆ上の座標に変換され保存される。なお、仮想撮像面Ｆｆはカメラ１０の前方一定距離Ｌにカメラ１０の光軸と直交すると想定した平面であり、この仮想撮像面Ｆｆに像が結ばれるものと仮想したものである。
【００４９】
ここで、ピクセル座標と仮想撮像面Ｆｆ上の座標との関係について説明しておく。ピクセル座標とは、得られた写真のデータを画面に表示した場合、画面上に横をＸｄ軸、縦をＹｄ軸、座標値の単位を画素数（ピクセル）と定義して像の位置を表す２次元座標である。写真または本当の撮像面上の像位置が表されるのでカメラのレンズの歪も含まれている。一方、仮想撮像面座標はピンホールカメラのように光学系に歪がないものとして被写体の像が結ばれるように仮想した撮像面の上に定義した２次元座標であり、横軸をＸｆ軸、縦軸をＹｆ軸、焦点距離をＬとし座標値をＬと同じ単位（実寸法ｍｍなど）で表す。また、カメラ特性データとは、ピクセル座標と仮想撮像面座標との間の変換に用い、カメラの設定およびレンズの特性に基づき作成される数表である。更に詳細な説明は本題からはずれるので省略する。以降、像が特定されマウスで入力されたピクセル座標は光学系の歪を無くし実寸法で表された仮想撮像面座標に変換されたものとして説明する。
【００５０】
次のステップＳ１０８では上記ステップＳ１０６で得た姿勢参照平行線Ｋ１、Ｋ２上の平行参照点ＰＬ１〜ＰＬ４の仮想撮像面座標および選択平面２２上の方向参照点Ｐｈ１、Ｐｈ２の仮想撮像面座標に基づきカメラ姿勢を算出する。
【００５１】
まず、仮想撮像面上の姿勢参照平行線Ｋ１、Ｋ２の像から消失点Ｐｖの座標ｘｖ、ｙｖを算出する。図６はその概念図である。この図６の写真上に直線ｋ１（ＰＬ１−ＰＬ２）および直線ｋ２（ＰＬ３−ＰＬ４）の平行線の像がある。平行線を傾斜させて撮影されており、写真上ではそれらの線像の延長が交差する所に消失点Ｐｖが存在する。消失点は平行線の撮像である線の延長が集合する点もしくは交点である。平面上の直線の一般式はｙｆＬｎ＝Ａｋｎ・ｘｆＬｎ＋Ｃｋｎである。ここで、ｘｆおよびｙｆは直線上の点の仮想撮像面上での座標値、Ａ、Ｃは直線の式のパラメータ、添え字ｋｎは線像の区別、Ｌｎは線上の点の添え字と同じで点の区別を示す。各線に属する点の座標を条件として代入する。
【００５２】
線ｋ１においては下記式（１）、（２）
ｙｆＬ１＝Ａｋ１・ｘｆＬ１＋Ｃｋ１                            （１）
ｙｆＬ２＝Ａｋ１・ｘｆＬ２＋Ｃｋ１                            （２）
線ｋ２においては下記式（３）、（４）
ｙｆＬ３＝Ａｋ２・ｘｆＬ３＋Ｃｋ２                            （３）
ｙｆＬ４＝Ａｋ２・ｘｆＬ４＋Ｃｋ２                            （４）
の式を立てることができる。
【００５３】
上記各線でのパラメータＡｋｎ、Ｃｋｎを求めると式（１）、（２）については、下記式（５）、（６）、
Ａｋ１＝（ｙｆＬ１−ｙｆＬ２）／（ｘｆＬ１−ｘｆＬ２）        （５）
Ｃｋ１＝（ｘｆＬ１・ｙｆＬ２−ｘｆＬ２・ｙｆＬ１）／（ｘｆＬ１−ｘｆＬ２）
（６）
また、式（３）、（４）については、下記式（７）、（８）、
Ａｋ２＝（ｙｆＬ３−ｙｆＬ４）／（ｘｆＬ３−ｘｆＬ４）        （７）
Ｃｋ２＝（ｘｆＬ３・ｙｆＬ４−ｘｆＬ４・ｙｆＬ３）／（ｘｆＬ３−ｘｆＬ４）
（８）
となる。
【００５４】
以上で求めた写真上での２直線の方程式のパラメータから、それらの交差点すなわち写真上の消失点Ｐｖの座標を求める。条件を２本の線においてｙｖが同一として式（９）（１０）を立てる。
ｙｖ＝Ａｋ１・ｘｖ＋Ｃｋ１                                      （９）
ｙｖ＝Ａｋ２・ｘｖ＋Ｃｋ２                                      （１０）
上記２式を解くと、下記式（１１）、（１２）を得る。
ｘｖ＝（Ｃｋ２−Ｃｋ１）／（−Ａｋ２＋Ａｋ１）                  （１１）
ｙｖ＝（−Ｃｋ１・Ａｋ２＋Ｃｋ２・Ａｋ１）／（−Ａｋ２＋Ａｋ１）
（１２）
【００５５】
消失点Ｐｖの座標ｙｖ、ｘｖに基づき選択平面２２の方程式を求める。図７は仮想撮像面Ｆｆ上の消失点Ｐｖと選択平面２２の関係等を示した幾何図である。カメラ１０の光軸方向をＺ軸、仮想撮像面座標のＸｆ軸をＸ軸、仮想撮像面座標のＹｆ軸をＹ軸とした３次元座標で示している。図７の（Ａ）、（Ｂ）は、各投影図を示している。
【００５６】
上記仮想撮像面Ｆｆはカメラ１０の前方で焦点距離Ｌに置かれ被写体の像が歪み無く結ばれると仮想した面である。逆にカメラ１０とＦｆ上の像（Ｐｆｎ等）を結ぶ直線を前方に延長すれば像の実体に至る。ところで、消失点とは実体が無く、平行線を撮影した場合に延長先が無限遠にあり一点に集束したように見えるものである。すなわち、ここでの消失点は単なる点というのではなく方向性を示すものである。その消失点の方向は同一の方向である平行線全ての向く方向に共通である。つまり、カメラ１０とＰｖを結ぶ直線は平行線の方向である。この方向が分かれば直行する面すなわち選択平面２２の傾きを求められる。選択平面２２の傾斜はＸＺ断面投影における傾斜ａおよびＸＹ断面投影における傾斜ｂで表される。
【００５７】
よって、図７から選択平面２２の一般式は下記式（１３）となる。
ｚ＝Ａｘ＋Ｂｙ＋Ｃ                                      （１３）
そして、図７から選択平面２２のＸＺ座標面投影傾斜ａおよびＹＺ座標面投影傾斜ｂは下記式（１４）、（１５）となる。
ａ＝ｘｖ／Ｌ                                             （１４）
ｂ＝ｙｖ／Ｌ                                             （１５）
【００５８】
先の一般式（１３）に、式（１４）、（１５）を当てはめると、下記式（１６）を得ることができる。
ｚ＝−ａｘ−ｂｙ＋Ｃ                                     （１６）
（Ａ＝−ａ、Ｂ＝−ｂ）
【００５９】
上記式（１６）により選択平面２２のカメラ１０ａに対する傾きが判明する。ここでＣはまだ決定されないので仮に「１」とした模型式にしておく。この式（１６）に基づいて単写真平面上の点像位置、即ち仮想撮像面座標値ｘｆ、ｙｆから選択平面２２上の点の３次元座標を求めることができる。すなわち、下記式（１７）によりｘ、下記式（１８）によりｙ、下記式（１９）によりｚを得ることができる。（ＰｆｎとＰＮとの関係は図７を参照）
【数１】
0004846304.tif 000002
【００６０】
次に、上記選択平面２２の座標の軸方向を確定する。そのために方向参照点Ｐｈ１、Ｐｈ２を使用する。例えば、選択平面２２上の線分Ｐｈ２−Ｐｈ１方向をＸ軸またはＹ軸などとして方向を設定する（図３参照）。このようにして、方向参照点Ｐｈ２、Ｐｈ１の３次元座標を求めることで選択平面２２上の座標の軸方向を確定できる。
【００６１】
上記式（１７）〜（１９）に方向参照点Ｐｈ１、Ｐｈ２の仮想撮像面座標を代入することで、３次元座標が求められる。これで選択平面２２上の座標軸方向が判明する。以上のようにしてカメラ姿勢が把握（検出）される。ただし、まだ模型としての把握であるので、必要に応じて後述するステップＳ１１２のように実寸の座標を得る方法を基にＣを求め実寸の式を得てもよい。
【００６２】
続いて、上記で得た結果を測量へ応用する場合について説明する。先ず、１方向から撮影した１枚の写真（すなわち、単写真）を用いた写真測量について説明する。ステップＳ１１０において選択平面２２上にある被測量点ＰＮについては式（１７）〜（１９）にＰｎの仮想撮像面座標を代入することにより３次元座標を算出できる。次のステップＳ１１２では模型で扱ってきた座標を実寸に変換する。
【００６３】
図３で示している寸法参照点２点（Ｐｓ１，Ｐｓ２）について式（１７）〜（１９）により座標を求める。その間隔ｌｓを次の式（２０）により求める。なお、添字ｓ１，ｓ２は寸法参照点Ｐｓ１，Ｐｓ２の模型の座標であることを示す。
ｌｓ＝√{（xs1−xs2）2+（ys1−ys2）2+（zs1−zs2）2}              (２０)
【００６４】
次いで、予めステップＳ１０２で実測した間隔Ｌｓ（参照寸法）とｌｓとの比を求め、この比を求めた模型の各座標値に掛ける。以上のステップにより、被測量点Ｐｎの実際の３次元座標値が算出される。以上のようにして１方向から撮影した１枚の写真により写真測量を行える。
【００６５】
さらに、以下では２方向から撮影した２枚（複数）の写真により測量する写真測量に応用する例について説明する。ここでの各ステップは上記で説明した１方向から撮影した１枚の写真による写真測量とほぼ同様なので同じ図を流用して説明する。
【００６６】
図４のフロー図に沿って説明する。ステップＳ１０２では図３のようにカメラ１０ａおよびカメラ１０ｂで撮影し写真１５ａおよび１５ｂの２枚を得る。撮影方法は１枚の写真による場合と同様である。カメラ１０ａとカメラ１０ｂの位置は水平または垂直に離れた方向から撮影する。例えば３０°方向を変えて撮影する。ステップＳ１０２〜Ｓ１０８は１枚の写真による場合と同様に行いそれぞれのカメラ姿勢を求める。
【００６７】
ステップＳ１１０ではＳ１０８で求められた写真毎のカメラ姿勢を用いて２つのカメラ姿勢を合併する場合の一例を説明する。ステップＳ１０８では写真毎に独立した座標系でカメラ姿勢を求めている。そのため座標系および模型座標の縮尺が一致していない。よって、これらを対応させることが必要である。概要としては、２つの方向から撮影した２枚の写真１５ａおよび１５ｂそれぞれからカメラ姿勢として得られた方向参照点Ｐｈ１、Ｐｈ２の模型座標を一致させるよう座標を適宜に回転させ、また伸縮させる。この回転、伸縮に伴ってカメラの位置Ｃｃａ、Ｃｃｂ（当初の座標の要素ｘ、ｙ、ｚは０）およびカメラの向きがどうなるかを求める。カメラの向きとしてはカメラの光軸が平面２２と交差する点Ｃ０ａ、Ｃ０ｂ（当初の座標の要素ｘ、ｙは０、ｚはＣａまたはＣｂ）の座標を用いる。
【００６８】
上記による回転、伸縮はカメラ姿勢として得られた平面２２の模型の方程式のパラメータＡａ、Ｂａ、Ｃａ、Ａｂ、Ｂｂ、Ｃｂ（写真と同じ添え字ａおよびｂを付した）に基づいて行う。
【００６９】
図８（Ａ）は合併された各点の配置を概念的に示した図である。ここで符号７はカメラ基軸（カメラの主点Ｃｃａ、Ｃｃｂを結ぶ線）、また符合９ａ、９ｂはそれぞれのカメラの光軸方向を示している。また、図８（Ｂ）はカメラの光軸方向の線９ａ、９ｂをカメラ基軸の直交断面に投影した線２（９ａの投影）、３（９ｂの投影）を示した図である。
【００７０】
図８を参照して説明する。ステップＳ１０８で写真毎に算出した平面２２の模型の方程式では、前述したようにＣをとりあえず１としてあるので縮尺が合致していない。これらを合せるには、２つの方向参照点の模型座標上の間隔を２つの写真間で揃えるようパラメータＣａまたはＣｂに係数を掛けることで行う。方向参照点間の模型上の間隔ｅａ、ｅｂを次の式（２１）、（２２）により求める。なお、添え字ａ、ｂは関係する写真１５ａ、１５ｂと同じ添え字を付している。方向参照点の模型座標は式（１７）〜（１９）で求めたｘ、ｙ、ｚである。添え字は方向参照点ｈ１、ｈ２の区別、また写真の添え字ａ、ｂの区別を示している。
ｅａ＝√{（xh2a−xh1a）2+（yh2a−yh1a）2+（zh2a−zh1a）2}    （２１）
ｅｂ＝√{（xh2b−xh1b）2+（yh2b−yh1b）2+（zh2b−zh1b）2}    （２２）
【００７１】
パラメータＣａを１に固定する場合には、Ｃｂに係数ｅａ/ｅｂを掛けて修正すればよい。これにより２つの平面２２の模型の方程式の縮尺が一致する。Ｃｂ修正後の式で、模型の３次元座標を計算する。
【００７２】
ここで、どのような座標系に統合するかであるが、図８（Ａ）のように平面２２にＸＹ軸を置き、平面２２の鉛直方向をＺ軸、方向参照点のＰｈ１を基点、方向参照点のＰｈ１からＰｈ２を見た方向をＸ軸とする例を次に示す。
【００７３】
各点の座標について各写真（１５ａ、１５ｂ）毎に以下の座標変換をする。各点の座標とは各カメラ１０ａ、１０ｂにおけるＰｈ１ａ（ｘｈ１ａ、ｙｈ１ａ，ｚｈ１ａ）、Ｐｈ１ｂ（ｘｈ１ｂ、ｙｈ１ｂ、ｚｈ１ｂ）、Ｐｈ２ａ（ｘｈ２ａ、ｙｈ２ａ、ｚｈ２ａ）、Ｐｈ２ｂ（ｘｈ２ｂ、ｙｈ２ｂ、ｚｈ２ｂ）、Ｃｃａ（ｘ＝０、ｙ＝０、ｚ＝０）、Ｃｃｂ（ｘ＝０、ｙ＝０、ｚ＝０）、Ｃ０ａ（ｘ＝０、ｙ＝０、ｚ＝Ｃａ）、Ｃ０ｂ（ｘ＝０、ｙ＝０、ｚ＝Ｃｂ）である。なお、写真１５ａ、１５ｂ、方向参照点Ｐｈ１、Ｐｈ２に関するものとして同じ添え字を付している。
【００７４】
座標変換１：Ｐｈ１を基点にする。Ｐｈ１ａまたはＰｈ１ｂの座標ｘ、ｙ、ｚの行列を［Ｐｈ１］、基点変更前の各点のｘ、ｙ、ｚ行列を［Ｘ０］、変更後を［Ｘ１］とすると、下式（２３）となる。
［Ｘ１］＝［Ｘ０］−［Ｐｈ１］                        （２３）
【００７５】
座標変換２：Ｘ軸を面２２に合せる。回転前の各点のｘ、ｙ、ｚ行列を［Ｘ１］、回転後を［Ｘ２］とすると、下式（２４）となる。
［Ｘ２］＝［Ｒ１］［Ｘ１］                            （２４）
ここで、［Ｒ１］は下式（２５）で、
ｕ＝ｔａｎ−１（Ａ）                                    （２５）
Ａは写真別にパラメータＡａまたはＡｂを代入して得ることができる。
とすれば、
【数２】
0004846304.tif 000003
である。
【００７６】
座標変換３：Ｙ軸を面２２に合せる。回転前の各点のｘ、ｙ、ｚ行列を［Ｘ２］、回転後を［Ｘ３］とすると下記式（２７）となる。
［Ｘ３］＝［Ｒ２］［Ｘ２］                                （２７）
また、
［Ｒ２］は下記式（２８）となり、
【数３】
0004846304.tif 000004
ＡおよびＢは写真別にパラメータＡａ、ＢａまたはＡｂ、Ｂｂを代入する。
とすれば、下記式（２９）となる。
【数４】
0004846304.tif 000005
【００７７】
座標変換４：Ｘ軸をＰｈ２−Ｐｈ１に合せる。回転前の各点のｘ、ｙ、ｚ行列を［Ｘ３］、回転後を［Ｘ４］とすると、下記式（３０）となる。
［Ｘ４］＝［Ｒ３］［Ｘ３］                                  （３０）
また、
［Ｒ３］は下記式（３１）となる。
【数５】
0004846304.tif 000006
上の式中ｘ、ｙ値は［Ｘ３］における方向参照点Ｐｈ２の座標値である。関係する点と同じ添え字を付している。
とすれば、下記式（３２）を得る。
【数６】
0004846304.tif 000007
【００７８】
以上を２つの写真毎に行うとカメラの位置Ｃｃａ、Ｃｃｂは図８の（Ａ）のように同じ座標系になり相互の位置関係が明らかになる。この結果から以降の写真測量計算をやり易くするため次のパラメータを設定する。図８および図９により説明する。なお、図９は測量のために撮影しているカメラと被写体の配置および２つのカメラ１０ａ、ｂにおける撮像と被写体上の点との関係を示している。カメラ１０ａについて詳しく記してある。（Ａ）はカメラ基軸７の直交断面にカメラの光軸の線９ａ、９ｂおよびＰｎ方向線を投影した図である。（Ｂ）はステップ１０２における撮影の様子とカメラにおける撮像と点の幾何関係を概念的に示す図である。（Ｃ）はＦｆ上の仮想撮像であるが、カメラの傾きσａ逆転してカメラ基軸の仮想撮像をＸ軸に合せた図である。（Ｄ）は仮想撮像座標Ｆｆ上の仮想撮像である。１５は画面のＸ軸、１３はカメラ基軸の仮想撮像でＸ軸１５に対してカメラの傾きσを成している。Ｐｃｃはもう一方のカメラ１０の位置が写ったとした場合の仮想像（画面内に入るとは限らない）である。
【００７９】
図８（Ａ）で２枚の写真を撮影した２つのカメラの位置を結ぶ線をカメラ基軸７とする。カメラの光軸の方向をカメラ１０ａからカメラ１０ｂを見た方向を基準にしてカメラ基軸と成す角度をαａ０、αｂ０。図８（Ｂ）でカメラ基軸を軸に回転する角度でカメラ１０ａの光軸方向９ａを基準にしたカメラ１０ｂの光軸方向９ｂをβとする。カメラの光軸を軸にしたカメラの回転でカメラ基軸に対してカメラの仮想撮像面の横軸（撮像のＸ軸）が傾く角度σａ、σｂ（図９の（Ｄ）のσを参照）を求める。これらのパラメータをアングル定数と称する。
【００８０】
上記αａ、αｂ、βは合併した座標について次の座標変換をして求める。基点をカメラ１０ａ、カメラ基軸をＺ軸、カメラ基軸を軸にして回転する角度の基準をカメラ１０ａの光軸方向とするよう座標を変換する。
【００８１】
座標変換５：基点をカメラ１０ａにする。合併した［Ｘ４］中Ｃｃａの座標ｘ、ｙ、ｚの行列を［Ｃｃａ］、基点変更前の各点のｘ、ｙ、ｚ行列を［Ｘ４］、変更後を［Ｘ５］とすると、下記式（３３）となる。
［Ｘ５］＝［Ｘ４］−［Ｃｃａ］                              （３３）
【００８２】
座標変換６：Ｘ軸をカメラ基軸（１０ｂ−１０ａ）のＸＹ面投影方向に合せる。回転前の各点のｘ、ｙ、ｚ行列を［Ｘ５］、回転後を［Ｘ６］とすると、下記式（３４）となる。
［Ｘ６］＝［Ｒ４］［Ｘ５］                                  （３４）
［Ｒ４］は
【数７】
0004846304.tif 000008
上の式中ｘ、ｙ値はＣｃｂの［Ｘ５］における座標値である。Ｃｃｂと同じ添え字を付している。
とすると、下記式（３６）を得る。
【数８】
0004846304.tif 000009
【００８３】
座標変換７：Ｚ軸をカメラ基軸（１０ｂ−１０ａ）の方向に合せる。回転前の各点のｘ、ｙ、ｚ行列を［Ｘ６］、回転後を［Ｘ７］とすると
［Ｘ７］＝［Ｒ５］［Ｘ６］                                （３７）
【００８４】
また、［Ｒ５］は、
【数９】
0004846304.tif 000010
上の式中ｘ、ｚ値はＣｃｂの［Ｘ６］における座標値である。Ｃｃｂと同じ添え字を付している。
とすると、
【数１０】
0004846304.tif 000011
である。
【００８５】
座標変換８：Ｘ軸をカメラ１０ａの光軸のＸＹ面投影方向に合せる。回転前の各点のｘ、ｙ、ｚ行列を［Ｘ７］、回転後を［Ｘ８］とすると、下記式(４０)を得る。
［Ｘ８］＝［Ｒ６］［Ｘ７］                            （４０）
【００８６】
また、［Ｒ６］は、
【数１１】
0004846304.tif 000012
上の式中ｘ、ｙ値はＣ０ａの［Ｘ７］における座標値である。Ｃ０ａと同じ添え字を付している。
とすると、下記式（４２）を得る。
【数１２】
0004846304.tif 000013
【００８７】
そして、求めたいパラメータは次の各式で求められる。
【数１３】
0004846304.tif 000014
上の式中ｘ、ｚ値はＣ０ａの［Ｘ８］における座標値である。Ｃ０ａと同じ添え字を付している。
【数１４】
0004846304.tif 000015
上の式中ｘ、ｙ、ｚ値はＣ０ｂ、Ｃｃｂの［Ｘ８］における座標値である。関係する点と同じ添え字を付している。
【数１５】
0004846304.tif 000016
上の式中ｘ、ｙ値はＣ０ｂの［Ｘ８］における座標値である。Ｃ０ｂと同じ添え字を付している。
【００８８】
次にσａ、σｂである。σａは合併したカメラ１０ｂの座標をカメラ１０ａの元の座標系に戻して求める。つまり、ＣｃａおよびＣｃｂの［Ｘ４］について、カメラ１０ａ関係の座標を合併するために用いた座標変換の逆を次式（４６）のように行う。
[Ｘ１]＝[Ｒ１ａ]−１[Ｒ２ａ]−１[Ｒ３ａ]−１[Ｘ４]                （４６）
添え字のａは式（２６）、（２９）、（３２）のカメラ１０ａに関する回転を意味している。
【００８９】
［Ｘ０］＝［Ｘ１］−［Ｃｃａ］                            （４７）
上記［Ｃｃａ］は［Ｘ１］におけるカメラ１０ａのｘ、ｙ、ｚ座標値の行列である。式（４７）では［Ｘ１］［Ｘ０］はＣｃｂだけ行えばよい。σａ０はカメラの光軸を軸にしたカメラの回転であって、カメラ基軸に対してカメラ（撮像面のＸ軸）が傾く角度で表せる。カメラの撮像で見ればもう一つのカメラの方向（カメラ基軸の撮像で実像は無い）が撮像面のＸ軸と成す角度でもある（符号が負となるが）。したがって次式（４８）で表せる。
【数１６】
0004846304.tif 000017
上式中ｘ、ｙ値は式（４７）におけるＣｃｂの［Ｘ０］の座標値である。Ｃｃｂと同じ添え字を付している。
【００９０】
同様にσｂは合併したカメラ１０ａの座標をカメラ１０ｂの元の座標系に戻して求める。つまり、ＣｃａおよびＣｃｂの［Ｘ４］についてカメラ１０ｂ関係の座標を合併するために用いた座標変換の逆を次式（４９）のように行う。
[Ｘ１]＝[Ｒ１ｂ]−１[Ｒ２ｂ]−１[Ｒ３ｂ]−１[Ｘ４]                （４９）
添え字ｂは式（２６）、（２９）、（３２）のカメラ１０ｂに関する回転を意味する。
【００９１】
［Ｘ０］＝［Ｘ１］−［Ｃｃｂ］                            （５０）
上記［Ｃｃｂ］は［Ｘ１］におけるカメラ１０ｂのｘ、ｙ、ｚ座標値の行列である。上式（５０）では［Ｘ１］、［Ｘ０］はＣｃａだけ行えばよい。
【００９２】
そして、σｂは次式で表せる。
【数１７】
0004846304.tif 000018
上式中ｘ、ｙ値は式（５０）におけるＣｃａの［Ｘ０］の座標値である。Ｃｃａと同じ添え字を付している。以上でアングル定数が求まる。つまり、２つのカメラ姿勢が合併されたことになる。
【００９３】
以上はカメラ姿勢を合併する方法で本発明を実施する一例である。カメラ姿勢の把握には従来の方法として共面条件を用いる方法、視差を消去する方法、共線条件を用いる方法等がある。従来の方法でカメラ姿勢を求める方法と本発明である単写真毎のカメラ姿勢把握を組み合わせるのもよい。例えば、従来の方法でカメラ姿勢を求める方法の中で本発明を一部に含んで精度向上の補助をさせるのでもよい。要するに計算の方法は問わない。
【００９４】
以上のようにアングル定数が求まったら、アングル定数および被測量点Ｐｎの仮想撮像面座標に基づき三角測量計算ができるようになる。まず３次元の三角測量計算に必要なデータを準備する。すなわち、カメラ１０ａからカメラ１０ｂを見た方向を基準にした被測量点Ｐｎ方向の角度αａｎ，αｂｎおよびカメラ基軸を軸にした角度でカメラ１０ａ，ｂに共通の基準方向とした被測量点Ｐｎの回転角βａｎ、βｂｎを求める。三角測量計算は被測量点Ｐｎの他、寸法参照点Ｐｓ１，Ｐｓ２についても行われるが、代表して被測量点Ｐｎで説明する。計算に際してはステップＳ１０６で示したとおりＰｎについてカメラ特性データを用いてピクセル座標を仮想撮像面座標ｘｆｎ、ｙｆｎに変換してある。
【００９５】
αａｎ、βａｎは先に示した図９に示す幾何関係から次式で算出することができる。
【数１８】
0004846304.tif 000019
αｂｎ、βｂｎについても同様に求められる。
【００９６】
回転角βに関しては、式（５９）から角βａｎ，βｂｎが得られるが、これらはそれぞれのカメラの光軸線９ａ，９ｂを基準とした回転角である。どちらを基準にするかで採用すればよい。本説明では９ａを基準にしているのでβａｎを採用する。
【００９７】
以上に基づいて、被測量点Ｐｎの３次元の模型座標を算出する。三角測量のためにはカメラ１０ａ，ｂ間の距離Ｅも必要であるが、当面不明なので仮に１としておき相似形の３次元座標（模型と記す）を求める。図１０に示すように、カメラ１０ａを原点とした被測量点Ｐｎの直交座標（ｘ，ｙ，ｚ）は、三角測量の原理から次の式によって求められる。図１０（Ｂ）に示すように、カメラ基軸７をＸ軸方向、紙面をＸ−Ｙ平面、それに直交する軸をＺ軸方向、カメラ１０ａ，ｂ間距離をＥ、図１０（Ａ）に示すようにＸ軸から鉛直に被測量点Ｐｎまでの距離をＨとする。
【数１９】
0004846304.tif 000020
【００９８】
以上の式で被測量点Ｐｎおよび寸法参照点Ｐｓ１、Ｐｓ２の模型座標を求める。ステップＳ１１０では、ステップＳ１１２でＥが判明するまで以上の式で寸法参照点の模型座標だけを算出しておくのでもよい。ステップＳ１１２では、仮の値とした距離Ｅを実際の値を求める。それにはまず、ステップＳ１１０で求められた寸法参照点Ｐｓ１，Ｐｓ２の模型座標値から次の式（６４）によりその間隔ｌｓを求める。なお、添字ｓ１，ｓ２は寸法参照点Ｐｓ１，Ｐｓ２の模型の座標であることを示す。
ｌｓ＝√{（xs1−xs2）2+（ys1−ys2）2+（zs1−zs2）2}            （６４）
【００９９】
次いで、ステップＳ１０２で実測した参照寸法Ｌｓとｌｓとの比を求める。この比を求めた各模型座標値に掛ける。または、ステップＳ１１０に戻り上記式（６０）のＥに掛けて被測量点Ｐｎの実寸法の座標を直接求めてもよい。以上のステップにより、カメラ１０ａを原点とした、被測量点Ｐｎの３次元座標の実際の値が算出される。
【０１００】
以上の方法により２方向からの写真による写真測量ができる。２方向からの写真による写真測量には、共面条件を用いる方法、視差を消去する方法、共線条件を用いる方法といった従来の方法がある。いずれも２方向の撮影する方向に差を設けることにより生じた被写体の像の違い、すなわち視差を基にカメラの姿勢を求めている。本実施例では２方向の差に関係なくカメラの姿勢が求められる。カメラの姿勢を求める精度も２方向の差に関係ない。２方向の写真の視差を基にカメラの姿勢を求める従来の写真測量方法では、カメラの姿勢を算出する精度が２方向の差が小さくなるにつれて低下していた。本実施例の方法によれば、２方向の差が少ない場合の測量においてもカメラ姿勢を精度よく算出できる。
【０１０１】
また、従来の方法ではカメラの姿勢を算出する際に逐次近似法、すなわち繰り返し計算のステップがあり計算に時間を要していた。本実施例による場合は繰り返しがないので計算が早くなる。また、従来の方法と組み合わせたとしても初期値を解近傍に設定できるので計算が早くなる。
【０１０２】
上記から明らかなようにカメラ姿勢を求めることが目的である場合は図４のステップＳ１０２からステップＳ１０８までを実行すればよい。これを利用して写真測量を実行する場合には、更にステップＳ１１０およびステップＳ１１２を実行すればよい。ステップＳ１０２〜Ｓ１０８によってカメラ姿勢が正確に把握できるので、これを利用した測量ステップＳ１１０、Ｓ１１２では精度よく被写体を測量できる。
【０１０３】
上記実施例は、共同住宅を被写体に設定した場合を例示したので種々の点を参照点に利用できる。しかし、被写体が自然の造形物などである場合には、参照点が設定し難いというときが想定される。このようなときには、図１１で示すような標識を被写体に添えて撮影してもよい。図１１（Ａ）、（Ｂ）は、被写体に適用する標識の例を示した図である。（Ａ）、（Ｂ）で示すように正確な平行線である２本以上の直線一対(例えばＫ１、Ｋ２)または平行線の特定に利用できる点（例えばＰＬ１〜ＰＬ４）を形状または模様として配し、かつ、一対の平行線に鉛直に交差する直線（Ｋ３）線上の点(例えばＰｈ１、Ｐｈ２)が形状または模様として配されたものであればよい。
【０１０４】
また、標識に設定する姿勢参照平行線Ｋ１、Ｋ２は線間隔に比べ長さが長いのがよい。例えば１．５倍以上で使用勝手が悪くならない限り長く設定するのがよい。このように姿勢参照平行線Ｋ１、Ｋ２を相対的に長く設定すると、撮影で上記のように遠近が深い状態に配しても平行線の撮像が大きく（長く）写るので、方向の検出精度を上げることができる。
【０１０５】
また、方向参照点Ｐｈ１およびＰｈ２を寸法参照点Ｐｓ１、Ｐｓ２と兼ねてその間隔Ｌｓを実測または規定値としてもよい。点および線を光り反射率の高い印として特定しやすくするのもよい。この標識を被写体全体に対してできるだけ幅広く写るように、かつ姿勢参照平行線Ｋ１、Ｋ２が撮影の遠近方向におおよそ向くように地面、床に置くまたは壁等に掲げる。以上の姿勢参照平行線のあり方については被写体の構造、模様を利用する場合も同様である。
【０１０６】
上記実施例では単写真からカメラ姿勢を把握し、これを測量に応用する場合について述べた。しかし、カメラ姿勢を把握する技術は、前述したように測量以外でも、ロボット、入力装置等の他の分野でも広く活用できる。例えばカメラに直接関係するものでは、カメラを据え付けた機器など物体の姿勢、または被写体を機器など物体とした場合の姿勢把握等に採用できる。また、姿勢参照平行線や種々の参照点を高輝度にするなどして画像から自動検出する方法等と組み合わせれば、機器または物体の高精度な姿勢の動的自動検出もしくは機器または物体の自動姿勢制御にも応用できる。
【０１０７】
さらに図１２を参照して上述した実施例の応用例について簡単に説明する。選択平面２２の傾斜を確認した以後について説明する。選択平面２２を第１平面として、この第１平面と交差する第２平面を設定する。この第２平面を補助平面４０と称する。図１２は、第１平面としての選択平面２２と第２平面としての補助平面４０との配置関係を示した図である。補助平面４０は、選択平面２２に対して次の関係を持って配置されている。
【０１０８】
選択平面２２に対して、補助平面４０は角度αで交差されている。そして、これら２面の交線上に共有する２個の補助点Ｐｃ１、Ｐｃ２が設定されている。カメラ撮影を行う際に、さらに角度α、補助点Ｐｃ１、Ｐｃ２を含むようにして単写真を得る。角度α、補助点Ｐｃ１、Ｐｃ２を用いれば、選択平面２２との接続関係からカメラ１０に対する補助平面４０の傾斜を算出できる。また、Ｐｃ１、Ｐｃ２は選択平面２２上の点として３次元座標を算出できる。Ｐｃ１、Ｐｃ２は補助平面４０上の方向参照点Ｐｈ１、Ｐｈ２としても併用できる。上記のように選択平面２２のカメラ姿勢は把握できる。よって、補助平面４０のカメラ姿勢を把握できる。
【０１０９】
上記補助平面４０を用いることによりカメラの姿勢を把握する場合の基準平面、すなわち基準座標系を選択平面２２以外にも設定することができる。写真測量で１方向から撮影した写真１枚による写真測量の実施例でカメラとの姿勢関係が把握された選択平面２２上の被測量点を測量する方法について既に述べた。カメラとの姿勢関係が把握された補助平面４０上についても同様に被測量点を測量できる。つまり１方向から撮影した写真一枚による写真測量でも、補助平面４０を組み合わせれば選択平面２２以外の平面上、さらには複数の平面上にある被測量点の測量が可能になる。図１２で示すように、選択平面２２に対して更に補助平面４０を設定するようにすれば、本発明の汎用性が向上するので適用範囲を広げることができる。
【０１１０】
以上本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【０１１１】
【図１】従来の手法で単写真からカメラ姿勢を求める場合について示した図である。
【図２】単写真からカメラ姿勢を求める本発明の場合について示した図である。
【図３】共同住宅を被写体としてカメラ撮影を行い、カメラ姿勢を把握してから測量を行う実施例について示した図である。
【図４】被写体の撮影を行ってカメラ姿勢を求め、さらに写真測量を行うまでの処理をまとめたフローチャートである。
【図５】実施例を実施するのに好適であるハードウエア構成の例を示したブロック図である。
【図６】姿勢参照平行線の消失点を算出する概念について示した図である。
【図７】仮想撮像面上の消失点と選択平面との関係を示した幾何図である。
【図８】（Ａ）は合併された各点の配置を概念的に示した図、（Ｂ）はカメラの光軸方向の線をカメラ基軸の直交断面に投影した線の図である。
【図９】測量のために撮影しているカメラと被写体の配置および２つのカメラにおける撮像と被写体上の点との関係を示した図である。
【図１０】三角測量の原理について示した図である。
【図１１】被写体に適用する標識の例を示した図である。
【図１２】実施例の応用例について示した図である。
【符号の説明】
【０１１２】
１                    選択平面
１０                  カメラ
１５ａ、１５ｂ        単写真
２０                  被写体（共同住宅）
２２                  選択平面
Ｋ１、Ｋ２            姿勢参照平行線
Ｐｈ１、Ｐｈ２        方向参照点
ＰＬ１〜ＰＬ４        平行参照点
ＰＮ                  被測量点
Ｐｓ１、Ｐｓ２        寸法参照点
【図１】
0004846304.tif 000021
【図２】
0004846304.tif 000022
【図３】
0004846304.tif 000023
【図４】
0004846304.tif 000024
【図５】
0004846304.tif 000025
【図６】
0004846304.tif 000026
【図７】
0004846304.tif 000027
【図８】
0004846304.tif 000028
【図９】
0004846304.tif 000029
【図１０】
0004846304.tif 000030
【図１１】
0004846304.tif 000031
【図１２】
0004846304.tif 000032