以下、本発明に係る3次元形状測定装置のキャリブレーション方法の一実施形態について図面を参照しながら説明する。図1は、本発明に係る3次元形状測定装置の全体構成を模式的に示すブロック図である。なお、本明細書において参照する各図は、本発明の理解を容易にするために一部の構成要素を誇張して表わすなど模式的に表している。このため、各構成要素間の寸法や比率などは異なっていることがある。
(3次元形状測定装置の構成)
この3次元形状測定装置は、1台の表示装置11、および2台のカメラ12R,12L、がコンピュータ装置13にそれぞれ接続されて構成されている。表示装置11は、コンピュータ装置13から出力される既知パターン画像Kおよびグレイコード画像Sを表示させるための装置であり、支持具11aによって支持されている。本実施形態においては、表示装置11は、解像度がSXGA(1280×1024)の液晶型ディスプレイ(LCD:Liquid Crystal Display)で構成されている。支持具11aは、手動操作により表示装置11を図示上下左右方向に任意の角度で傾斜させることができるとともに、同傾斜位置にて表示画面の向きを固定することができる支持装置である。なお、表示装置11は、既知パターン画像Kおよびグレイコード画像Sを表示可能であれば、どのような形式の表示装置であってもよい。
カメラ12R,12Lは、光エネルギーを電気エネルギーに変換(光電変換)するフォトダイオードからなる複数の受光素子を備え、図示しない被測定物の3次元形状を撮像する装置であり、コンピュータ装置13によって作動が制御される。本実施形態においては、カメラ12R,12Lは、有効画素数が1280×1024画素のCMOS(Complementary Metal Oxide Semiconductor)センサで構成されている。このカメラ12R,12Lは、表示装置11の表示画面を撮像可能な互いに異なる位置および向きで、かつ相対的な位置関係が固定された状態で配置されている。なお、カメラ12R,12Lは、被測定物の3次元形状測定を行なうことができる撮像装置であれば、どのような形式、例えば、CCD(Charge Coupled Device Image Sensor)素子を用いた撮像装置であってもよい。
コンピュータ装置13は、CPU、ROM、RAM、ハードディスクなどからなるマイクロコンピュータによって構成されたコンピュータ本体14と、キーボードおよびマウスからなる入力装置15と、液晶ディスプレイからなる表示装置16とを備えたパーソナルコンピュータ(所謂パソコン)である。このコンピュータ装置13は、前記表示装置11およびカメラ12R,12Lの作動をそれぞれ制御するとともに、図2に示すキャリブレーションプログラムを実行することによりカメラ12R,12Lのキャリブレーションを行う。また、コンピュータ装置13は、図示しないプログラムを実行することにより前記図示しない被測定物の3次元形状測定を行う。
なお、コンピュータ装置13は、表示装置11およびカメラ12R,12Lの作動をそれぞれ制御するとともに、カメラ12R,12Lのキャリブレーションおよび図示しない被測定物の3次元形状測定を行うことができれば、どのような形式のコンピュータ装置であってもよい。また、カメラ12R,12Lのキャリブレーションを行うためのキャリブレーションプログラムは、作業者により予めコンピュータ本体31におけるハードディスクに記憶されている。
(3次元形状測定装置の作動)
次に、このように構成した3次元形状測定装置におけるカメラ12R,12Lのキャリブレーション作業について説明する。ここで、カメラ12R,12Lのキャリブレーションとは、ステレオ法の原理を用いた3次元形状測定の理論値と、現実に用いるカメラ12R,12Lのコンディションに基づく測定値(算出値)との差を最小化するための各種パラメータを規定する作業である。
まず、作業者は、コンピュータ装置13の入力装置15を操作してカメラ12R,12Lのキャリブレーションの実行をコンピュータ本体14に指示する。この指示に応答して、コンピュータ装置13(コンピュータ本体14)は、図2に示すキャリブレーションプログラムの実行をステップS100にて開始して、ステップS102にて既知パターン画像撮像データKDの入力を待つ。ここで既知パターン画像撮像データKDとは、図3に示すように、既知パターン画像Kをカメラ12R,12Lで互いに異なる5つの位置から撮像した撮像画像データである。
既知パターン画像Kは、一辺が30mm平方の黒色および白色の各方形画像が縦横方向に交互に配置された市松模様からなる図柄であり、後述するカメラ12R,12Lの内部パラメータAおよび外部パラメータ[R,t]を算出するためのものである。この既知パターン画像Kにおける各方形画像がそれぞれ接する各交点(図において1箇所だけ丸で囲んで示す)は、内部パラメータAおよび外部パラメータ[R,t]を算出するための特徴点Pとして用いられる。すなわち、既知パターン画像Kにおける各特徴点Pの座標は既知である。
作業者は、図3の中央部に示すように、表示装置11を図示正面に向けた状態でコンピュータ装置13を操作することにより表示装置11に既知パターン画像Kを表示させる。そして、作業者は、コンピュータ装置13を操作することにより表示装置11に表示された既知パターン画像Kをカメラ12R,12Lによって撮像する。これにより、カメラ12R,12Lごとに正面視による既知パターン画像Kを表す既知パターン画像撮像データKDがコンピュータ装置11に記憶される。
次に、コンピュータ装置13は、ステップ104にて、グレースケール画像撮像データGDを取得する。ここでグレースケール画像撮像データGDとは、図4,図5に示すように、画像の濃淡が同一平面における一方から他方に向って連続的に変化するグレースケール画像Gをカメラ12R,12Lで互いに異なる5つの位置から撮像した撮像画像データである。このグレースケール画像Gは、図6に示すように、明部と暗部とが交互に連続する縞状のグレイコード画像Sを縞の間隔を縮小しながら複数ビット分撮像して、各撮像画像を合成することにより生成される空間コード値(濃淡の程度)が0〜255の256段階(階調)で変化する空間コード画像である。本実施形態においては、8ビット分のグレイコード画像Sを合成してグレースケール画像Gを得る。なお、図6においては、4ビット分のグレイコード画像を示している。
作業者は、前記ステップ102における表示装置11の向きと同一の向きの状態でコンピュータ装置13を操作することによりグレイコード画像Sを8ビット分連続的表示させるとともに、各ビットごとのグレイコード画像Sをカメラ12R,12Lによって撮像する。この場合、作業者は、グレイコード画像Sを縦方向(図示上下方向)および横方向(図示左右方向)の向きでそれぞれ表示させてそれぞれ撮像する。これにより、図4,図5の各中央図に示すように、画像の濃淡(空間コード値)が図示左右方向および図示上下方向にそれぞれ連続的に変化するグレースケール画像Gがそれぞれ生成される。
次に、コンピュータ装置13は、ステップS106にて、既知パターン画像Kおよびグレースケール画像Gを表す各撮像画像データKD,GDをそれぞれ互いに異なる5つの位置(視点)から撮像したか否かを判定する。したがって、このステップS106における判定処理においては、既知パターン画像Kおよびグレースケール画像Gを表す各撮像画像データKD,GDをそれぞれ互いに異なる5つの位置から撮像するまでの間、「No」と判定されて、ステップS102に戻る。一方、既知パターン画像Kおよびグレースケール画像Gを表す各撮像画像データKD,GDをそれぞれ互いに異なる5つの位置から撮像した場合には、同判定処理にて「Yes」と判定されてステップS108に進む。
このステップS106による判定処理によってステップS102に戻った場合、コンピュータ装置13は、再び、ステップS102〜S106の各処理を実行する。したがって、作業者は、ステップS102に戻るごとに表示装置11の向きを変えて既知パターン画像Kおよびグレースケール画像Gの撮像を繰り返し行う。本実施形態においては、ステップS102に戻るごとに表示装置11を図示右側、図示左側、図示上側および図示下側にそれぞれ任意の量だけ傾けて、各傾斜位置ごとに既知パターン画像Kおよびグレースケール画像Gを連続して撮像する。
これらステップS102〜S104が繰り返し5回実行されることにより、互いに異なる5つの位置でカメラ12R,12Lごとに既知パターン画像Kおよびグレースケール画像Gがそれぞれ撮像される。これにより、コンピュータ装置13には、カメラ12R,12Lの5つの撮像位置ごとに既知パターン画像撮像データKDおよびグレースケール画像撮像データGDがカメラ12R,12Lごとにそれぞれ記憶される。
なお、画像の濃淡が図示左右方向および図示上下方向にそれぞれ連続的に変化する2つのグレイコード画像Sを用いる理由は、傾斜した状態のグレースケール画像Gを表すグレースケール画像撮像データGDにおいて各画素を特定する際に、グレースケール画像Gの傾斜方向に沿って濃淡が変化していないと、すなわち、空間コード値に変化がしないと各画素を特定できないからである。
そして、コンピュータ装置13は、ステップS106による判定処理における「No」との判定結果に基づいてステップS108に進む。すなわち、これら繰り返し実行されるステップS102,S104が本発明に係る既知パターン撮像ステップおよびグレースケール画像撮像ステップにそれぞれ相当する。
なお、本実施形態においてはカメラ12R,12Lの位置は固定されており、実際にはカメラ12R,12Lの撮像位置を変化させていない。しかし、カメラ12R,12Lと表示装置11との位置や向きの関係は相対的なものであるため、表示装置11およびカメラ12R,12Lのどちから一方の位置や向きを変更すれば、表示装置11およびカメラ12R,12Lのどちらの位置や向きを変更しても撮像結果は実質的に同一である。したがって、本明細書では、表示装置11の向きの変更をカメラ12R,12Lによる撮像位置(視点)の変更と敢えて表現する。
次に、コンピュータ装置13は、ステップS108にて、内部パラメータAおよび外部パラメータ[R,t]を計算する。ここで、内部パラメータAとは、カメラ12R,12Lの各焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2などの内部的な特性である。また、外部パラメータ[R,t]とは、表示装置11における所定の位置(例えば、表示画面の中心位置)を原点とするワールド座標系内でのカメラ12R,12Lの光軸の向きおよび位置(例えば、レンズの画像中心座標)を表す回転ベクトルRおよび並進ベクトルtである。
このステップS108における内部パラメータAおよび外部パラメータ[R,t]の計算は、既知パターン画像Kにおける前記特徴点Pを用いた公知の計算方法によって行われる(例えば、非特許文献1参照)。したがって、内部パラメータAおよび外部パラメータ[R,t]の算出処理の詳しい説明は省略するが、算出の手順を簡単に説明しておく。
手順1:まず、コンピュータ装置13は、前記ステップS102にて取得した既知パターン画像撮像データKDにおいて既知パターン画像Kにおける各格子点を表す座標を特徴点Pの座標として特定する。本実施形態においては、88個の格子点の座標を特徴点Pとして検出し特定する。
手順2:次に、コンピュータ装置13は、射影変換行列Hを算出する。ここで射影変換行列Hは、下記数1に示すように、ワールド座標系における座標Mをカメラ12R,12Lの2次元画像座標系(受光素子平面での座標)における座標mに変換するための座標変換係数であり、前記内部パラメータAおよび外部パラメータ[R,t]で構成される。この射影変換行列Hは、前記特徴点Pの2次元画像座標系での座標と同座標に対応するワールド座標系での座標とを用いて計算される。なお、下記数1において「〜」は、行列式において1次元拡張した同次元表現を意味する。また、「s」は、スケール因子である。これにより、撮像画像枚数分の射影変換行列Hが算出される。
手順3:次に、コンピュータ装置13は、内部パラメータAを算出する。この内部パラメータAの計算は、前記取得した既知パターン画像撮像データKDの数の射影変換行列H、すなわち、5つの射影変換行列Hにより計算することができる。
手順4:次に、コンピュータ装置13は、外部パラメータ[R,t]を算出する。この外部パラメータ[R,t]の計算は、前記5つの射影変換行列Hと前記手順3にて算出した内部パラメータAを用いて計算することができる。
手順5:そして、コンピュータ装置13は、内部パラメータAと外部パラメータ[R,t]とを最適化する。この内部パラメータAおよび外部パラメータ[R,t]の最適化は、特徴点Pの2次元画像座標系での座標と、前記算出した内部パラメータAおよび外部パラメータ[R,t]を用いてワールド座標系での座標を2次元画像座標系での座標値に変換した座標との差が最小となるように非線形最小二乗法(L−M法:Levenberg-Marquardt法)を用いて行う。
手順6:次に、コンピュータ装置13は、レンズ歪み係数k1,k2を算出する。このレンズ歪み係数k1,k2は、前記算出された内部パラメータAと外部パラメータ[R,t]、特徴点Pの2次元画像座標系での座標、および同座標をカメラ12R,12Lの焦点面を座標平面としたカメラ座標系での座標を用いて計算することができる。これらの手順1〜手順6の各処理の実行により、カメラ12R,12Lの内部パラメータAおよび外部パラメータ[R,t]が各撮像位置ごとに算出される。このステップS108による内部パラメータAおよび外部パラメータ[R,t]の計算処理が、本発明に係るパラメータ計算ステップに相当する。また、回転ベクトルRおよび並進ベクトルtが、本発明に係るカメラ向き情報およびカメラ位置情報に相当する。
次に、コンピュータ装置13は、ステップS110にて、回転ベクトルRvnおよび並進ベクトルtvnを計算する。ここで、回転ベクトルRvnおよび並進ベクトルtvnは、既知パターン画像Kおよびグレースケール画像G(グレイコード画像S)を撮像した5つの撮像位置のうちの1つの視点を基準視点として、同基準視点に他の4つの視点から撮像した各既知パターン画像Kの向きを合わせるための座標の回転成分および平行移動成分をベクトルによって表した情報である。本実施形態においては、表示装置11を図示正面に向けた視点を基準視点として、他の4つの視点、具体的には、図示左右方向および図示上下方向にそれぞれ表示装置11を傾斜させた視点で撮像した既知パターン画像Kを同基準視点に合わせるための回転ベクトルRvnおよび並進ベクトルtvnを計算する。
具体的には、回転ベクトルRvnは、下記数2の値と下記数3の値との和(合算値)が最小となる回転行列Rmn(3×3行列)を非線形最小二乗法(L−M法)により算出する。下記数2および下記数3において(tR0,tL0)は、前記基準視点におけるカメラ12R,12Lのワールド座標系での各位置(座標)を表しており、(tRn,tLn)は前記他の4つの各視点のうちのいずれかの視点におけるカメラ12R,12Lのワールド座標系での各位置(座標)を表している。すなわち、下付文字における「R,L」は図示左右に配置されたカメラ12R,12Lを表し、「0」は基準視点を表し、「n」は他の4つの視点のいずれかを表している(n=1〜4)。
そして、コンピュータ装置13は、上記数2,数3により算出した回転行列RmnをRodriguesの公式により回転ベクトルRvnに変換する。この回転ベクトルRvnの計算処理においては、上記数2の値と上記数3の値との和の最小値に基づいて1つの回転ベクトルRvnを特定している。これは、カメラ12Rおよびカメラ12Lごとに回転ベクトルRvnを特定すると、互いに異なる回転ベクトルRvnが特定された場合、座標変換後のカメラ12Rとカメラ12Lとの相対的な位置関係が変化する。これを防止するため、本実施形態においては、カメラ12Rとカメラ12Lとで共通の回転ベクトルRvnを特定することにしている。そして、この場合、共通の回転ベクトルRvnを特定するに際して、カメラ12Rとカメラ12Lとの座標変換誤差の和が最小となる回転ベクトルRvnを特定することにより、一方の座標変換誤差に偏らない調和のとれた回転ベクトルRvnを特定することができる。換言すれば、カメラ12Rとカメラ12Lとの相対的な位置関係を固定した状態で回転ベクトルRvnを算出している。
一方、並進ベクトルtvnは、下記数4の値と下記数5の値との和(合算値)が最小となる並進ベクトルtvnを非線形最小二乗法(L−M法)により算出する。この場合においても、前記回転ベクトルRvnの算出と同様に、カメラ12Rとカメラ12Lとの相対的な位置関係を固定した状態で並進ベクトルtvnを算出している。これにより、前記他の4つの視点ごとに回転ベクトルRvnおよび並進ベクトルtvnがそれぞれ算出される。このステップS018による回転ベクトルRvnおよび並進ベクトルtvnを計算処理が、本発明に係る回転・並進成分情報計算ステップに相当する。すなわち、回転ベクトルRvnおよび並進ベクトルtvnは、本発明に係る回転成分情報および並進成分情報に相当する。
なお、カメラ12Rとカメラ12Lとの相対的な位置関係を固定せずに回転ベクトルRvnおよび並進ベクトルtvnを算出することも可能である。例えば、各カメラ12R,12Lごとに回転ベクトルRvnおよび並進ベクトルtvnをそれぞれ特定することも可能であるし、各カメラ12R,12Lごとに特定した回転ベクトルRvnおよび並進ベクトルtvnの一方をカメラ12R,12Lの共通の回転ベクトルRvnおよび並進ベクトルtvnとすることも可能である。
次に、コンピュータ装置13は、ステップS112にて、基準視点におけるカメラ12R,12Lの外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルベクトルRvnおよび並進ベクトルtvnをそれぞれ最適化する。このステップS112における外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルベクトルRvnおよび並進ベクトルtvnの最適化は、前記他の4つの視点にてそれぞれ取得した既知パターン画像撮像データKDnにおける既知パターン画像K中の各特徴点Pの向きを基準視点に合わせた射影特徴点画像PKnを表す射影特徴点画像データPKDnと、基準視点にて取得した既知パターン画像撮像データKDにおける各特徴点Pを表す座標の差に基づいて行われる。
具体的には、コンピュータ装置13は、前記他の4つの各視点にてそれぞれ取得した既知パターン画像撮像データKDnにおける既知パターン画像K中の各特徴点Pを表すワールド座標系での各座標PMR,PMLを下記数6を用いて基準視点に向きを合わせた座標PMR’,PML’にそれぞれ変換する。
次に、コンピュータ装置13は、基準視点におけるカメラ12R,12Lの内部パラメータAR0,AL0および外部パラメータ[R,t]R0,[R,t]L0を下記数7に代入して、前記基準視点に合わせた各特徴点Pの座標PMR’,PML’を基準視点におけるカメラ12R,12Lの2次元画像座標系での座標PmR’,PmL’に変換する。これにより、前記他の4つの視点にてそれぞれ取得された各特徴点Pを表す座標PMR,PMLは、基準視点におけるカメラ12R,12Lの2次元画像座標系に投影されて射影特徴点画像データPKDnを構成する座標PmR’,PmL’に変換されたことになる。
この場合、基準視点におけるカメラ12R,12Lの各2次元画像座標系に投影された座標PmR’,PmL’と、基準視点にて取得された各特徴点Pの各2次元画像座標系における座標PmR0,PmL0とは、本来、同一座標で互いに一致するはずである。しかし、実際には、既知パターン画像撮像データKDの取得から座標PmR’,PmL’の算出に至る過程において様々な誤差が存在するため、座標PmR’,PmL’と座標PmR0,PmL0との間には差が生じる。したがって、コンピュータ装置13は、各特徴点Pごとに座標PmR’,PmL’と座標PmR0,PmL0との差を計算するとともに、同各差の総和が最小となる外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルベクトルRvnおよび並進ベクトルtvnを非線形最小二乗法(L−M法)を用いて特定する。
この場合、コンピュータ装置13は、1つの外部パラメータ[R,t]R0,[R,t]L0と、前記他の4つの視点の各回転ベクトルベクトルRvnおよび並進ベクトルtvnとを同時に用いて、これらを同時に非線形最小二乗法(L−M法)により最適化する。これにより、1つの視点に偏らずに外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルベクトルRvnおよび並進ベクトルtvnを最適化することができる。このステップS112における外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルベクトルRvnおよび並進ベクトルtvnの最適化処理が、本発明に係るサブ最適化ステップに相当する。
なお、このステップS112による外部パラメータ[R,t]R0,[R,t]L0の最適化処理は、前記ステップS108において算出する外部パラメータ[R,t]の算出精度が低いと考えられることに起因する。すなわち、内部パラメータAが少なくとも3つの視点での撮像処理によって1組算出されるのに対して、外部パラメータ[R,t]は1つの視点での撮像処理によって1組算出される。このため、外部パラメータ[R,t]は、誤差の影響を受け易く算出精度の安定性が低いと考えられるためである。このステップS112による外部パラメータ[R,t]R0,[R,t]L0の最適化処理によって、以降の外部パラメータ[R,t]R0,[R,t]L0を用いた各計算処理の精度を向上させることができる。また、外部パラメータ[R,t]R0,[R,t]L0の算出誤差が無視できる場合には、このステップS112による外部パラメータ[R,t]R0,[R,t]L0の最適化処理を省略することもできる。
次に、コンピュータ装置13は、ステップS114にて、前記他の4つの視点におけるカメラ12R,12Lの外部パラメータ[R,t]Rn,[R,t]Lnを最適化する。具体的には、下記数8に示すように、前記ステップS112にて最適化した外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルベクトルRvnおよび並進ベクトルtvnを用いて外部パラメータ[R,t]Rn,[R,t]Lnを最適化する。すなわち、外部パラメータ[R,t]Rn,[R,t]Lnは、最適化された外部パラメータ[R,t]R0,[R,t]L0を回転ベクトルベクトルRvnおよび並進ベクトルtvnを用いて逆変換することにより算出される。
次に、コンピュータ装置13は、ステップS116〜S122にて、基準視点でのカメラ12R,12Lの内部パラメータAR0,AL0の最適化を行う。本実施形態においては、内部パラメータAR0,AL0を構成する各焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2を適宜組み合わせて段階的に最適化する。これらのステップS116〜S122における内部パラメータAR0,AL0の最適化は、前記他の4つの視点にてそれぞれ取得したグレースケール画像撮像データGDnによって表されるグレースケール画像Gn(n=1〜4)の向きを基準視点に合わせた射影グレースケール画像PGnを表す射影グレースケール画像データPGDnと、基準視点にて取得したグレースケール画像撮像データGD0との比較、具体的には、画素値の差に基づいて行われる。
まず、コンピュータ装置13は、ステップS116にて、内部パラメータAR0,AL0における線形成分である各焦点距離f、画像中心座標Cx,Cy、せん断係数γについて最適化を行う。具体的には、コンピュータ装置13は、前記他の4つの視点ごとにそれぞれ取得したグレースケール画像撮像データGDnにおける各座標GMRn,GMLnを同4つの視点に対応する各回転ベクトルベクトルRvn(Rmn)および並進ベクトルtvnを用いて下記式9により座標値GMRn’,GMLn’に座標変換する。これにより、前記他の4つの視点ごとに撮像したグレースケール画像Gnの向きがカメラ12R,12Lごとに基準視点に合わせられる。
次に、コンピュータ装置13は、基準視点に向きが合わせられたカメラ12R,12Lごとのグレースケール画像Gnを、基準視点におけるカメラ12R,12Lの内部パラメータAR0,AL0および外部パラメータ[R,t]R0,[R,t]L0を用いて下記式10により、基準視点におけるカメラ12R,12Lの2次元画像座標系での座標値GmR’,GmL’に変換する。これにより、前記他の4つの視点にてそれぞれ取得されたグレースケール画像撮像データGDnを構成する各座標GMRn,GMLnは、基準視点におけるカメラ12R,12Lの2次元画像座標系に投影されて射影グレースケール画像データPGDnを構成する各座標値GmR’,GmL’に変換されたことになる。
この場合、基準視点におけるカメラ12R,12Lの2次元画像座標系に投影された射影グレースケール画像撮像データPGDnにおける各座標値GmR’,GmL’の画素値(空間コード値)と、基準視点にて取得されたグレースケール画像撮像データGD0の2次元画像座標系での各座標値GmR0,GmL0の画素値(空間コード値)とは、本来、同一座標で互いに一致するはずである。しかし、実際には様々な誤差により、これらは一致しない。
したがって、コンピュータ装置13は、射影グレースケール画像撮像データPGDnにおける各画素値と、基準視点にて取得されたグレースケール画像撮像データGD0における各画素値との絶対差(差の絶対値)を各画素ごとに算出するとともに、同絶対差の総和を画素数で除した平均値MAD(Mean of Absolute Difference)が最小となる焦点距離f、画像中心座標Cx,Cy、せん断係数γを非線形最小二乗法(L−M法)を用いて特定する。
この場合、コンピュータ装置13は、前記他の4つの視点における各焦点距離f、画像中心座標Cx,Cy、せん断係数γを同時に用いて、これらを同時に非線形最小二乗法(L−M法)により最適化する。これにより、1つの視点に偏らずに焦点距離f、画像中心座標Cx,Cy、せん断係数γを最適化することができる。
なお、このステップS116における焦点距離f、画像中心座標Cx,Cy、せん断係数γについて最適化処理においては、内部パラメータAR0,AL0を構成する他のパラメータ、具体的には、レンズ歪み係数k1,k2、外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルベクトルRvnおよび並進ベクトルtvnの各値は固定である。このステップS116における焦点距離f、画像中心座標Cx,Cy、せん断係数γについての最適化処理が、本発明に係る線形パラメータ最適化ステップに相当する。
次に、コンピュータ装置13は、ステップS118にて、内部パラメータAR0,AL0を構成する総てのパラメータ、すなわち、焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2について最適化を行う。このステップS118における最適化処理は、前記ステップS116における焦点距離f、画像中心座標Cx,Cy、せん断係数γの最適化処理にレンズ歪み係数k1,k2を加えたものである。すなわち、ステップS118においてコンピュータ装置13は、前記画素値の平均値MADが最小となる焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2を非線形最小二乗法(L−M法)を用いて特定する。
この場合、コンピュータ装置13は、前記他の4つの視点における各焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2を同時に用いて、これらを同時に非線形最小二乗法(L−M法)により最適化する。これにより、1つの視点に偏らずに焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2を最適化することができる。このステップS118における焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2についての最適化処理が、本発明に係る第1の線形・歪パラメータ最適化ステップに相当する。
次に、コンピュータ装置13は、ステップS120にて、内部パラメータAR0,AL0における非線形成分であるレンズ歪み係数k1,k2について最適化を行う。このステップS120においてコンピュータ装置13は、前記画素値の平均値MADに換えて画素値の分散値VMAD(Variance of MAD)を用いてレンズ歪み係数k1,k2の最適化を行う。ここで、画素値の分散値VMADは、基準視点におけるカメラ12R,12Lの2次元画像座標系に投影された射影グレースケール画像撮像データPGDn、および同基準視点にて取得されたグレースケール画像撮像データGD0をそれぞれ複数の画素からなる複数の小ブロックに分けた各小ブロックごとに計算した画素値の平均値MADの全小ブロックにおける分散値(偏差値)である。本実施形態においては、射影グレースケール画像撮像データPGDnおよびグレースケール画像撮像データGD0をそれぞれ16×16画素の小ブロックごとに分けて画素値の分散値VMADを計算する。
そして、コンピュータ装置13は、このステップS120においては、前記画素値の分散値VMADが最小となるレンズ歪み係数k1,k2を非線形最小二乗法(L−M法)を用いて特定する。このように、画素値の分散値VMADを用いることにより、比較対象である射影グレースケール画像データPGDnとグレースケール画像データGD0とにおける各画素値の差が不均一に分布する状態、換言すれば、グレースケール画像G0に対する射影グレースケール画像PGnの傾き(平行度)が最小となるようにレンズ歪み係数k1,k2が最適化される。また、この場合、コンピュータ装置13は、前記他の4つの視点における各レンズ歪み係数k1,k2を同時に用いて、これらを同時に非線形最小二乗法(L−M法)により最適化する。これにより、1つの視点に偏らずにレンズ歪み係数k1,k2を最適化することができる。このステップS120にレンズ歪み係数k1,k2について最適化処理が、本発明に係るレンズ歪みパラメータ最適化ステップに相当する。
次に、コンピュータ装置13は、ステップS122にて、内部パラメータAR0,AL0を構成する総てのパラメータ、すなわち、焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2について最適化を行う。このステップS122における最適化処理は、前記ステップS118における最適化処理と同じ処理である。すなわち、このステップS122における最適化処理は、前記ステップS120にて最適化されたレンズ歪み係数k1,k2を含めて再度、焦点距離f、画像中心座標Cx,Cyおよびせん断係数γを最適化することにより内部パラメータAR0,AL0をより真値に近づけようとするものである。
具体的には、コンピュータ装置13は、前記画素値の平均値MADが最小となる焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2を非線形最小二乗法(L−M法)を用いて特定する。この場合、コンピュータ装置13は、前記他の4つの視点における各焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2を同時に用いて、これらを同時に非線形最小二乗法(L−M法)により最適化する。これにより、1つの視点に偏らずに焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2を最適化することができる。このステップS118における焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2についての最適化処理が、本発明に係る第2の線形・歪パラメータ最適化ステップに相当する。
これらのステップS116〜S122の各処理が実行されることにより、内部パラメータAR0,AL0の最適化が行われる。そして、これらステップS116〜S122による内部パラメータAR0,AL0の最適化は、前記ステップS112における特徴点に基づいた特徴点ベースの最適化とは異なり、グレースケール画像撮像データGDを構成する総ての画素値に基づいて行われる画像ベースの最適化である。これにより、特徴点ベースの最適化に比べて真値に近い内部パラメータAR0,AL0を算出することができる。
次に、コンピュータ装置13は、ステップS124〜S126にて、外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnの最適化を行う。これらのステップS124〜S126における外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnの最適化は、前記ステップS116〜S122における内部パラメータAR0,AL0の最適化と同様に、前記他の4つの視点にてそれぞれ取得したグレースケール画像撮像データGDによって表されるグレースケール画像Gn(n=1〜4)の向きを基準視点に合わせた射影グレースケール画像データPGDnと、基準視点にて撮像したグレースケール画像撮像データGD0との画素値の差に基づいて行われる。
コンピュータ装置13は、ステップS124にて、外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnを最適化する。具体的には、コンピュータ装置13は、画素値の分散値VMAD+を計算した後、この画素値の分散値VMAD+が最小となる回転ベクトルRRo,RL0、並進ベクトルtR0,tLo、回転ベクトルRvnおよび並進ベクトルtvnを非線形最小二乗法(L−M法)を用いて特定する。
このように、外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnを最適化に画素値の分散値VMADを用いることにより、比較対象である射影グレースケール画像データPGDnとグレースケール画像データGD0とにおける各画素値の差が不均一に分布する状態、換言すれば、グレースケール画像G0に対する射影グレースケール画像PGnの傾き(平行度)が最小化される。
ここで、画素値の分散値VMAD+は、下記数11に示すように、画素値の分散値VMADRLと画素値の分散値VMADLRとを画素値の分散値VMADに合算した分散値である。ここで、画素値の分散値VMADRLは、カメラ12Rで撮像したグレースケール画像G(またはカメラ12Rの2次元画像座標系に投影された射影グレースケール画像PGn)をカメラ12Lの2次元画像座標系に投影した射影グレースケール画像PGDnと基準視点におけるカメラ12Lによる撮像によって取得したグレースケール画像撮像データGD0との間で算出した画素値の分散値VMADである。また、画素値の分散値VMADLRは、カメラ12Lで撮像されたグレースケール画像G(またはカメラ12Lの2次元画像座標系に投影された射影グレースケール画像PGn)をカメラ12Rの2次元画像座標系に投影した射影グレースケール画像PDnと基準視点におけるカメラ12Rによる撮像によって取得したグレースケール画像撮像データGD0との間で算出した画素値の分散値VMADである。
そして、この場合、コンピュータ装置13は、前記他の4つの視点における各回転ベクトルRvnおよび並進ベクトルtvnを同時に用いて、これらを同時に非線形最小二乗法(L−M法)により最適化する。これにより、1つの視点に偏らずに回転ベクトルRRo,RL0、並進ベクトルtR0,tLo、回転ベクトルRvnおよび並進ベクトルtvnを最適化することができる。このステップS124における外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnを最適化処理が、本発明に係る第1の外部パラメータ最適化ステップに相当する。
次に、コンピュータ装置13は、ステップS126にて、外部パラメータ[R,t]R0,[R,t]L0における並進ベクトルtR0,tL0と、並進ベクトルtvnとをそれぞれ最適化する。具体的には、コンピュータ装置13は、画素値の平均値MAD+を計算した後、この画素値の平均値MAD+が最小となる並進ベクトルtR0,tL0および並進ベクトルtvnを非線形最小二乗法(L−M法)を用いて特定する。
ここで、画素値の平均値MAD+は、下記数12に示すように、画素値の平均値MADRLと画素値の平均値MADLRとを画素値の平均値MADに合算した分散値である。ここで、画素値の平均値MADRLは、カメラ12Rで撮像されたグレースケール画像G(またはカメラ12Rの2次元画像座標系に投影された射影グレースケール画像PGn)をカメラ12Lの2次元画像座標系に投影した射影グレースケール画像PGDnと基準視点におけるカメラ12Lによる撮像によって取得したグレースケール画像撮像データGD0との間で算出した画素値の平均値MADである。また、画素値の平均値MADLRは、カメラ12Lで撮像されたグレースケール画像G(またはカメラ12Lの2次元画像座標系に投影された射影グレースケール画像PGn)をカメラ12Rの2次元画像座標系に投影した射影グレースケール画像PGDnと基準視点におけるカメラ12Rによる撮像によって取得したグレースケール画像撮像データGD0との間で算出した画素値の平均値MADである。
そして、この場合、コンピュータ装置13は、前記他の4つの視点における各並進ベクトルtvnを同時に用いて、これらを同時に非線形最小二乗法(L−M法)により最適化する。これにより、1つの視点に偏らずに並進ベクトルtR0,tL0および並進ベクトルtvnを最適化することができる。
なお、このステップS126における並進ベクトルtR0,tL0および並進ベクトルtvnについて最適化処理においては、外部パラメータ[R,t]R0,[R,t]L0を構成する他のパラメータである回転ベクトルRRo,RL0、回転ベクトルRvnおよび内部パラメータAR0,AL0の各値は固定である。これにより、グレースケール画像G0に対する射影グレースケール画像PGnの傾きを変化させることなく、射影グレースケール画像PGを平行移動させてグレースケール画像Gにより接近させることができる。このステップS126における並進ベクトルtR0,tL0および並進ベクトルtvnについて最適化処理が、本発明に係る第2の外部パラメータ最適化ステップに相当する。
これらのステップS124〜S126の各処理が実行されることにより、外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnの最適化が行われる。そして、これらステップS124〜S126による外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnの最適化は、前記ステップS112における特徴点に基づいた特徴点ベースの最適化とは異なり、グレースケール画像撮像データを構成する総ての画素値に基づいて行われる画像ベースの最適化である。これにより、特徴点ベースの最適化に比べて真値に近い外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnを算出することができる。また、外部パラメータ[R,t]R0,[R,t]L0の最適化とともに回転ベクトルRvnおよび並進ベクトルtvnを最適化しているため、外部パラメータ[R,t]R0,[R,t]L0をより真値に近づけることができる。
次に、コンピュータ装置13は、ステップ128にて、画像ベースによる内部パラメータAR0,AL0、外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnの最適化処理を3回実行したか否かを判定する。したがって、このステップS128における判定処理においては、画像ベースによる内部パラメータAR0,AL0、外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnの最適化処理を3回通して実行するまでの間、「No」と判定されて、ステップS116に戻る。この場合、2回目以降のステップS116〜S126の各処理は、前記と同様であるので、その説明は省略する。このように、ステップS116〜S126の各処理が3回繰り返し実行されることにより、内部パラメータAR0,AL0、外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnがより真値に収束するようになる。
そして、コンピュータ装置13は、画像ベースによる内部パラメータAR0,AL0、外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnの最適化処理を3回繰り返し実行した場合には、同判定処理にて「Yes」と判定してステップS130に進み、このキャリブレーションプログラムの実行を終了する。これにより、カメラ12R,12Lのキャリブレーション作業が終了する。
上記作動説明からも理解できるように、上記実施形態によれば、既知パターン画像Kにおける複数の特徴点Pに基づいた内部パラメータAおよび外部パラメータ[R,t]を用いて各視点ごとに撮像したグレースケール画像Gを基準視点に合わせるための回転ベクトルRvnおよび並進ベクトルtvnを計算して、これら回転ベクトルRvnおよび並進ベクトルtvnを用いてグレースケール画像Gを基準視点に合わせた射影グレースケール画像PDnを表す射影グレースケール撮像画像データPGDnと基準視点にて撮像したグレースケール画像Gを表すグレースケール撮像画像データGD0との差を用いて前記内部パラメータAおよび外部パラメータ[R,t]を最適化している。この場合、最適化に用いる射影グレースケール撮像画像データPGDnおよびグレースケール撮像画像データGDnの画素値の数は特徴点Pの数よりも多い。すなわち、本発明は、従来技術により算出した特徴点ベースの内部パラメータAおよび外部パラメータ[R,t]を、特徴点Pの数より多い数の画素値を用いて最適化している。これにより、特徴点P以外の位置での被測定物の測定精度の低下、および1つの特徴点の測定誤差が与える内部パラメータAおよび外部パラメータ[R,t]の計算精度の低下を抑制することができる。すなわち、従来技術に比べてより真値に近い内部パラメータAおよび外部パラメータ[R,t]を算出することができる。その結果、被測定物の測定精度を向上させることができる。
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
例えば、上記実施形態においては、キャリブレーションプログラムにおけるステップS102〜S106において既知パターン画像Kおよびグレースケール画像G(グレイコード画像S)をそれぞれ互いに異なる5つの位置(視点)から撮像した。しかし、既知パターン画像Kおよびグレースケール画像Gを撮像する互いに異なる位置(視点)の数は、内部パラメータAおよび外部パラメータ[R,t]が算出できれば、上記実施形態に限定されるものではない。すなわち、少なくとも、互いに異なる3つの位置(視点)から撮像すればよい。これによっても、上記実施形態と同様の効果が期待できる。
また、上記実施形態においては、既知パターン画像Kを市松模様で構成した。しかし、既知パターン画像Kは、ワールド座標系での位置が既知の複数の特徴点を画像処理により特定できる図柄であれば、上記実施形態に限定されるものではない。例えば、複数の方形画像に換えて複数の円形画像によって既知パターン画像を構成して、各円形画像の中心位置を特徴点として用いるようにしてもよい。これによっても、上記実施形態と同様の効果が期待できる。
また、上記実施形態においては、縞の間隔が狭くなる複数枚のグレイコード画像Sを連続して撮像することによりグレースケール画像Gを生成した。しかし、グレースケール画像Gは、画像の濃淡が同一平面上において一方から他方に向って連続的に変化する画像であれば、上記実施形態に限定されるものではない。例えば、グレースケール画像G自体を表示装置11の画面に表示させてもよいし、画像の濃淡が変化する方向も図示斜め方向、同心円方向などであってもよい。これらによっても、上記実施形態と同様の効果が期待できる。
また、上記実施形態においては、内部パラメータAを、カメラ12R,12Lの各焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2で構成するとともに、外部パラメータ[R,t]は、カメラ12R,12Lの光軸の向きおよび位置(例えば、レンズの画像中心座標)を表す回転ベクトルRおよび並進ベクトルtで構成した。しかし、内部パラメータAおよび外部パラメータ[R,t]は、カメラ12R,12Lの内部的特性および外部環境を表すものであればよく、必ずしも上記実施形態に限定されるものではない。すなわち、上記実施形態における内部パラメータAおよび外部パラメータ[R,t]を構成する各種パラメータの数を減じてもよいし、これら以外の他のパラメータ(例えば、アスペクト比αなど)を加えても良い。なお、上記実施形態で用いたレンズ歪み係数k1,k2は、内部パラメータAおよび外部パラメータ[R,t]の最適化に対する影響(支配性)が小さいことがあるため、レンズ歪み係数k1,k2の最適化を省略することにより最適化に要する処理負担を軽減することができる。
また、上記実施形態においては、射影グレースケール撮像画像データPGDnおよびグレースケール撮像画像データGDnを構成する総ての画素の画素値を用いて内部パラメータAおよび外部パラメータ[R,t]の最適化するように構成した。しかし、内部パラメータAおよび外部パラメータ[R,t]の最適化処理に用いる画素の数は、少なくとも既知パターン画像Kにおける特徴点Pの数よりも多ければ、上記実施形態に限定されるものではない。これによっても、上記実施形態と同様の効果が期待できる。
また、上記実施形態においては、内部パラメータAの最適化の処理を内部パラメータAを構成する各焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2を組み合わせた複数のステップによって段階的に行うように構成した。これは、最適化される焦点距離f、画像中心座標Cx,Cy、せん断係数γおよびレンズ歪み係数k1,k2が真値に収束または近似せずに局所解に収束することを避けるためである。すなわち、本発明者らは、実験により、内部パラメータAが「カメラの焦点距離f」、「画像中心Cx,Cy」、「せん断係数γ」、および「レンズ歪み係数k1,k2」を含む場合には、内部パラメータAの最適化は、前記ステップS116〜S122に示す処理内容および処理順番で実行することにより局所解への収束を効果的に防止できることを見出したものである。
また、上記実施形態においては、外部パラメータ[R,t]の最適化の処理を回転ベクトル成分と並進ベクトル成分とを同時に最適化した後、更に、並進ベクトル成分のみを最適化するように構成した(ステップS124,ステップS126)。これは、外部パラメータ[R,t]における回転ベクトル成分と並進ベクトル成分とを分散値VMADを用いて同時に最適化した場合、グレースケール画像G0に対する射影グレースケール画像PGnの傾き(平行度)が最小化される一方で、グレースケール画像G0に対する射影グレースケール画像PGnの位置が離れることがあるためである。
したがって、上記実施形態においては、外部パラメータ[R,t]の最適化の処理を回転ベクトル成分と並進ベクトル成分とを同時に最適化した後、更に、並進ベクトル成分のみを最適化することにより、グレースケール画像G0に対する射影グレースケール画像PGnの位置を一致させるようにしている。しかし、本発明者らによる実験によれば、外部パラメータ[R,t]における回転ベクトル成分および並進ベクトル成分の最適化による並進ベクトル成分のずれ量は致命的なほど大きくはないため、並進ベクトル成分のみの最適化処理を省略することもできる。
また、上記実施形態においては、外部パラメータ[R,t]の最適化処理においては、外部パラメータ[R,t]R0,[R,t]L0の最適化処理に伴い、回転ベクトルRvnおよび並進ベクトルtvnも最適化した。しかし、本発明者らによる実験によれば、外部パラメータ[R,t]の最適化処理に際して、回転ベクトルRvnおよび並進ベクトルtvnの最適化を行なわなくても、上記実施形態に準じた精度で外部パラメータ[R,t]を最適化することができることを確認している。
なお、本発明者らによる実験によれば、上記実施形態のように構成される内部パラメータAおよび外部パラメータ[R,t]においては、前記ステップS116〜S126に示す処理内容および処理順番で実行することにより局所解への収束を効果的に防止できることを見出している。
ただし、本発明は、前記ステップS116〜S126に示す処理内容および処理順番で実行することに限定するものではない。内部パラメータAおよび外部パラメータ[R,t]を最適化するための上記処理内容および処理順番は、被測定物の測定に必要な精度に応じて適宜決定されるものである。すなわち、内部パラメータAおよび外部パラメータ[R,t]を同時に最適化するように構成してもよいし、内部パラメータAを構成するパラメータ同士を同時に最適化した後、外部パラメータ[R,t]を構成するパラメータ同士を同時に最適化するようにしてもよいし、外部パラメータ[R,t]を最適化した後に内部パラメータAを最適化するように構成することもできる。
また、ステップS116〜S126における内部パラメータAおよび外部パラメータ[R,t]の最適化処理を繰り返し複数回実行する回数も、被測定物の測定に必要な精度に応じて適宜決定されるものであり、必ずしも上記実施形態に限定されるものではい。すなわち、内部パラメータAおよび外部パラメータ[R,t]の最適化処理をそれぞれ1回のみ実行するようにしてもよいし、内部パラメータAおよび外部パラメータ[R,t]の最適化処理を4回以上繰り返し実行するようにしてもよい。
また、上記実施形態においては、ステップS120におけるレンズ歪み係数k1,k2の最適化処理、およびステップS124における外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnを最適化処理において、画素値の分散値VMADを用いた。しかし、本発明者らによる実験によれば、これらの各最適化処理において画素値の平均値MADを用いてもレンズ歪み係数k1,k2、外部パラメータ[R,t]R0,[R,t]L0、回転ベクトルRvnおよび並進ベクトルtvnを上記実施形態に準じた精度で最適化可能であることを確認している。