以下、本発明の実施形態について図面に基づいて説明する。
(第1の実施形態)
第1の実施形態に係る三次元計測システムは、複数の平面から構成される校正用物体を用いて、プロジェクタの内部パラメータ及びカメラに対するプロジェクタの位置(相対位置)及び姿勢(相対姿勢)のキャリブレーションを行う。本実施形態に係る三次元計測システムは、スケール情報として、校正用物体としての平面間の距離を利用する。また、三次元計測システムは、キャリブレーションとして、プロジェクタの内部パラメータ、カメラに対するプロジェクタの位置及び姿勢、カメラに対する平面パラメータの概略値を補正する。ここで、プロジェクタの内部パラメータ、カメラに対するプロジェクタの位置及び姿勢、カメラに対する平面パラメータの概略値は、三次元計測システムに与えられるものとする。また、カメラの内部パラメータは、例えば非特許文献1で開示される方法により予めキャリブレーションされているものとする。
図1は、三次元計測システム10を示す図である。三次元計測システム10は、三次元計測装置100と、情報処理装置としての校正装置110とを有している。三次元計測装置100と校正装置110は、通信可能に接続している。三次元計測装置100は、撮像部としてのカメラ101と、照明部としてのプロジェクタ102と、制御部103とを有している。カメラ101及びプロジェクタ102の位置は、固定されている。すなわち、カメラ101とプロジェクタ102の間の位置関係及びカメラ101による撮像方向とプロジェクタ102による投影方向の関係(以下姿勢関係と称する)は、固定である。
カメラ101は、濃淡画像又はカラー画像を撮像するカメラである、プロジェクタ102は、濃淡又はカラー画像を照射する投影型のプロジェクタである。プロジェクタ102が照射する照射パターンは、制御装置103によって制御される。本実施形態においては、プロジェクタ102は空間コード化法(井口,佐藤,「三次元画像計測」,昭晃堂,1990)で利用される縞状の照射パターンを投影するものとする。空間コード化法は、複数の画像を投影・撮像するものである。プロジェクタ102による照射パターンの投影の制御やカメラ101による、照射パターンが投影された物体の撮像は、制御装置103が行う。校正装置110は、カメラ101に対するプロジェクタ102の位置及び姿勢と、プロジェクタ102の内部パラメータのキャリブレーションを行う。
図2は、制御装置103のハードウェア構成を示す図である。制御装置103は、CPU201と、ROM202と、RAM203と、HDD204と、表示部205と、入力部206とを有している。CPU201は、ROM202に記憶された制御プログラムを読み出して各種処理を実行する。RAM203は、CPU201の主メモリ、ワークエリア等の一時記憶領域として用いられる。HDD204は、画像データや各種プログラム等各種情報を記憶する。表示部205は、各種情報を表示する。入力部206は、キーボードやマウスを有し、ユーザによる各種操作を受け付ける。なお、後述する制御装置103の機能や処理は、CPU201がROM202又はHDD204に格納されているプログラムを読み出し、このプログラムを実行することにより実現されるものである。なお、校正装置110のハードウェア構成は、図2を参照しつつ説明した制御装置103のハードウェア構成と同様である。
図3は、制御装置103及び校正装置110のソフトウェア構成を示す図である。制御装置103は、撮像制御部300と、照明制御部301と、校正情報保存部302と、座標算出部303とを有している。撮像制御部300は、カメラ101を制御する。照明制御部301は、プロジェクタ102を制御する。校正情報保存部302は、カメラ101及びプロジェクタ102の内部パラメータとカメラに対するプロジェクタの位置及び姿勢を保存している。座標算出部303は、照射パターンが投影された物体が撮像して得られたパターン撮像画像を元に、校正情報保存部302に保存されている校正情報を用いて三次元計測を行う。
校正装置110は、画像受付部310と、パターン対応付部311と、スケール情報保存部312と、概略値受付部313と、パラメータ算出部314とを有している。画像受付部310は、三次元計測装置100から、カメラ101により撮像されたパターン撮像画像の入力を受け付ける。なお、他の例としては、画像受付部310は、不図示の記憶媒体に保存されたパターン撮像画像の入力を受け付けてもよい。
パターン対応付部311は、複数の縞の照射パターンの画像を照射・撮像する空間コード化法によりプロジェクタ102が照射する画像上の位置座標とカメラ101が撮像する画像上の位置座標との対応付けを行う。以下、プロジェクタが照射する画像をプロジェクタ画像(パターン画像)、プロジェクタ画像上の位置座標をプロジェクタ画像座標と呼ぶ。同様に、カメラが撮像する画像をカメラ画像(撮像画像)、カメラ画像上の位置座標をカメラ画像座標と呼ぶ。パターン対応付部311は、具体的にはプロジェクタ102が照射する照射パターン内の点に相当する点をカメラ画像から検出する。そして、パターン対応付部311は、対応付けの結果として得られた、各点毎のカメラ画像座標とプロジェクタ画像座標の組を対応情報として保持する。
対応付けは、次のように行われる。すなわち、まず、プロジェクタ102による照射パターンの水平ラインと撮像画像上の各画素との対応をとるために、プロジェクタ102は、複数の水平方向の二値の縞の照射パターンを時系列に照射する。縞の照射パターンは例えばグレイコードパターンである。そしてカメラ101は、各照射パターンの撮像画像を得る。パターン対応付部311は、各撮像画像を二値化することにより、画素毎の符号を得る。パターン対応付部311は、この符号を対応する照射パターンの符号と照合することで、撮像画像上の各画素とプロジェクタ画像上の水平ラインとを対応付けることができる。パターン対応付部311は、同様の処理を垂直方向についても行うことで、撮像画像上の各画素とプロジェクタ画像上の垂直ラインとを対応付けることができる。
パターン対応付部311は、これらの結果をもとに、撮像画像上においてプロジェクタ画像の水平/垂直ラインの境界を検出することで、プロジェクタ画像上の境界の座標と撮像画像上の座標を対応付ける。パターン対応付部311は、さらに、水平/垂直方向の境界の交点を検出することで、カメラ画像上における交点の座標とプロジェクタ画像上における交点の座標を対応付けることができる。
すなわち、パターン対応付部311は、三次元計測装置100の制御装置103から得られる照射パターンの情報をもとに、プロジェクタ102が照射する水平・垂直方向の照射パターンの交点のプロジェクタ画像座標をカメラ画像座標に対応付ける。さらに、パターン対応付部311は、各交点がどの位置に配置された平面に照射されたのかをスケール情報保存部312に保存されている平面の識別子により決定し、平面の識別子(平面ID)をプロジェクタ画像座標とカメラ画像座標の組に紐付ける。
なお、プロジェクタ画像座標とカメラ画像座標の対応付け方法は空間コード化法に限るものではなく、プロジェクタ画像座標とカメラ画像座標の対応が1対1でとれれば他の対応付け方法であってもよい。パターン対応付部311は、例えば、位相シフト法により対応付けを行ってもよいし、疑似ランダムドットパターンのような2次元パターンを利用して対応付けを行ってもよい。
スケール情報保存部312は、スケール情報として、キャリブレーションに利用する校正用物体に関する情報を保持する。スケール情報保存部312は、校正用物体を構成する平面の数と各平面の平面ID、各平面間の距離に関する情報を保持する。すなわち、スケール情報は、校正用物体の実空間の2以上の位置の位置関係を示す情報である。図4は、本実施形態に係る校正用物体400の説明図である。図4(a)は、校正用物体400を斜め上から見た図であり、図4(b)は、校正用物体400の側面図である。本実施形態に係る校正用物体は、複数位置に配置される平面とする。各位置に配置された平面は、平行であると仮定する。本実施形態では、移動量(ΔZ)を制御可能な移動ステージに一つの平面を固定し、固定された平面を移動ステージによって同一方向に等間隔で移動させることによって複数の平面からなる校正用物体を実現する。なお、各位置に配置された平面は、厳密な意味で平行である必要はない。許容される平面の平行性はキャリブレーションに要求される精度に依存する。
また、本実施形態においては、平面IDは、基準となる位置からの移動ステージの移動量とする。平面間の距離に関する情報としては、移動ステージに与えた移動量を保持する。なお、校正用物体の実現方法はこれに限るものではなく、他の例としては、物理的に複数の平行な平面を構成する物体を用いてもよい。
また、本実施例形態においては、移動ステージによる平面の移動方向は平面の法線方向と一致しているものとする。ここで、平面の法線方向は、カメラ101の撮像方向に直交しないものとする。すなわち、本実施形態に係るスケール情報は、実空間において、カメラ101の撮像方向に異なる2以上の異なる位置の位置関係を示す情報である。また、カメラ101により得られるパターン撮像画像は、実空間において、カメラ101の撮像方向に異なる位置に配置された校正用物体(平面)それぞれの画像となる。なお、移動方向は、法線方向の移動を含むものであればよく、法線方向に限定されるものではない。ただし、この場合も、法線方向の移動量が既知であるものとする。法線方向の移動量の計測方法としては、例えば接触式の三次元座標計測機を用いて計測される平面上の点の三次元座標から移動前と移動後の平面パラメータを算出して平面間の距離を計測してもよい。
概略値受付部313は、プロジェクタ102の内部パラメータ、カメラ101に対するプロジェクタ102の位置及び姿勢、カメラ101に対する平面パラメータの概略値の入力を受け付ける。パラメータ算出部314は、パターン対応付部311によって得られたプロジェクタ画像座標、カメラ画像座標及び校正物体中の平面の対応をもとに、プロジェクタ102の内部パラメータ及びカメラ101に対するプロジェクタ102の位置及び姿勢を算出する。そして、プロジェクタの内部パラメータ及びプロジェクタの位置及び姿勢から、プロジェクタの校正に利用する校正情報を算出し、これを、校正情報保存部302に保存する。
次に、本実施例におけるカメラ101とプロジェクタ102の投影モデルについて説明する。まずカメラ101の投影モデルについて説明する。図5に示すように、カメラ座標系(3次元)は、Z軸がカメラ101の光軸と一致し、X軸、Y軸がそれぞれカメラ画像の水平方向、垂直方向と平行になるようにとる。プロジェクタ座標系(3次元)もカメラ座標系と同様にとる。カメラ座標系における3次元座標が(X
c,Y
c,Z
c)の点は、ピンホールカメラモデルによって(式1)に示す正規化座標(x
c,y
c)に投影される。
ここで正規化座標とは、カメラ座標系においてZ=1の位置に画像面を設定したときの画像面上での位置である。正規化画像座標系の原点は光軸(Z軸)と画像面の交点であり、X軸、Y軸はそれぞれ画像の水平方向、垂直方向と平行であるとする。正規化画像座標が(x
c,y
c)の点の実画像上での座標(ピクセル座標)(u
c,v
c)は(式2)で表される。
ここで、f
cx,f
cyは夫々画像の水平・垂直方向の焦点距離、C
cx,C
cyは画像中心の座標(正規化画像座標系の原点の実画像上での座標(以下、ピクセル座標))である。
実際のカメラ101を通して撮像された場合のピクセル座標(u'
c,v'
c)はレンズ歪みの影響が加わった座標である。このため、(式3)に示すように正規化画像座標(x'
c,y'
c)に変換された後、(式4)のようにレンズ歪みの影響が含まれていない正規化画像座標(x
c,y
c)に補正される。
ただし、
である。また、k
c1,k
c2,k
c3は、カメラ101の半径方向の歪み係数、p
c1,p
c2は、接線方向の歪み係数である。歪み係数と焦点距離、画像中心を含めてカメラ101の内部パラメータと呼ぶ。(式4)で補正された正規化画像座標を(式2)によりピクセル座標に変換することで、歪みのないピクセル座標(u
c,v
c)を算出することができる。
次にプロジェクタ102の投影モデルについて説明する。プロジェクタ102が照射する画像上の点のピクセル座標を(u
p,v
p)とする。ピクセル座標(u
p,v
p)は、(式5)により正規化画像座標(x
p,y
p)に変換される。
ここで、f
px、f
pyは夫々画像の水平・垂直方向の焦点距離、c
px、c
pyは画像中心の座標(正規化画像座標系の原点のピクセル座標)である。レンズを用いた光学系としてプロジェクタ102を見た場合、カメラ101との違いはレンズを通して画像を入力するか出力するかの違いだけであると言える。そのため、プロジェクタ102の投影モデルは基本的にはカメラ101と同様のモデルによって記述することができる。
ここで、図6を参照しつつ、カメラ101及びプロジェクタ102の歪みについて説明する。図6(a)は、カメラの歪みを示す図である。図6(b)は、プロジェクタの歪みを示す図である。このように、プロジェクタ102の場合には、レンズへの入出力がカメラ101と逆になる。このため、歪みなしの正規化画像座標(x
p,y
p)と歪みありの正規化画像座標(x'
p,y'
p)との関係もカメラ101と逆になる。すなわち、(x
p,y
p)と(x'
p,y'
p)との関係は、(式6)のようになる。
ただし、
である。また、k
p1,k
p2,k
p3はプロジェクタ102の半径方向の歪み係数、p
p1,p
p2は接線方向の歪み係数である。歪み係数と焦点距離、画像中心を含めてプロジェクタ102の内部パラメータと呼ぶ。
次に、プロジェクタ102から出射する光線が空間中の平面に投影されてカメラ101に入射する場合の、プロジェクタ画像のピクセル座標のカメラ画像のピクセル座標への変換について説明する。プロジェクタ座標(3次元)A
pからカメラ座標(3次元)A
cへの座標変換は、(式7)のように表すことができる。
ここで、R
cpは、回転を表す3×3行列、t
cpは、平行移動を表す3次元ベクトルである。言い換えれば、R
cpはカメラ101に対するプロジェクタ102の姿勢を表す3×3行列、t
cpは位置を表す3次元ベクトルである。プロジェクタ座標系の原点であるプロジェクタ102の光学中心から出て画像面Z=1上の点l
p=(x
p,y
p,1)
tを通る直線は、カメラ座標系においては、(式8)のように表せる。
ただし、l
c=R
cpl
pであり、αは任意の実数である。校正用物体を構成するある平面のカメラ座標系における方程式を(式9)で表す。
ここでn
c=(n
cx,n
cy,n
cz)
tは平面の法線ベクトル、d
cは原点から平面までの符号付き距離(法線ベクトル方向が正)である。また、A
c=(X
c,Y
c,Z
c)
tである。プロジェクタ102から照射される光線(式8)が(式9)で表される平面と交わる場合、(式8)を(式9)に代入することにより、αは次のようになる。
そのため、プロジェクタ102から照射される光線と該平面との交点のカメラ座標は(式10)のように表すことができる。
図7は、校正装置110による校正処理を示すフローチャートである。なお、校正処理の実行前に以下に示す初期化処理が完了しているものとする。初期化処理において、校正装置110は、校正用物体に関する情報を不図示の記憶装置から読み込んで、スケール情報保存部312に保存する。前述したように、スケール情報保存部312が保存する情報は、校正用物体を構成する平面の数と、基準となる平面の位置と、平面間の距離である。ここで、各平面は、カメラ101の撮像方向に異なる位置本実施形態においては、三次元計測装置100は、校正用物体としての平面を、移動ステージを用いて等間隔に移動させ、各位置においてパターン撮像画像の撮像を行う。すなわち、隣接する平面間の距離は等間隔である。なお、平面間の距離は、等間隔でなくともよい。その場合には、例えば接触式の3次元計測機等を用いて平面間の距離をあらかじめ計測しておき、その値をスケール情報保存部312に保持させてもよい。
さらに、初期化処理においては、概略値受付部313を介して、プロジェクタ102の内部パラメータ、カメラ101とプロジェクタ102の相対的な位置及び姿勢、カメラ101に対する平面パラメータの概略値の入力を受け付ける。本実施形態においては、プロジェクタ102の内部パラメータ、カメラ101に対するプロジェクタ102の位置及び姿勢の概略値としては設計値が入力される。また、カメラ101に対する平面パラメータの概略値としては、校正用物体を構成する平面上に位置関係が既知な指標を配置し、指標の画像座標と平面上の座標との対応をもとに推定した値が用いられる。
校正処理においては、まずS700において、画像受付部310は、カメラ101により撮像されたパターン撮像画像の入力を受け付ける(画像受付処理)。本実施形態においては、空間コード化法において、1回の計測で複数の照射パターンを照射することに対応し、画像受付部310は、複数のパターン撮像画像を受け付ける。なお、校正用物体としてカメラ101により撮像される複数のパターン撮像画像に示される平面は、Z軸の方向、すなわちカメラ101の撮像方向に異なる位置に配置されたものである。すなわち、画像受付部310が受け付ける撮像画像は、撮像方向に異なる位置が撮像された撮像画像である。
次に、S701において、パターン対応付部311は、S700において受け付けたパターン撮像画像をもとに、照射された水平・垂直方向の照射パターンの、複数の交点のカメラ画像座標とプロジェクタ画像座標とを対応付けて、対応情報を生成する。ここで、S701の処理は、撮像画像上の2以上の位置それぞれと、プロジェクタ102により照射されたプロジェクタ画像上(パターン画像上)の、撮像装置上の位置に対応する2以上の位置と、を対応付ける対応付処理の一例である。対応付けは次のように行う。まず、パターン対応付部311は、水平・垂直方向の縞パターンが照射された校正用物体を撮像した画像から、それぞれの方向のパターンの境界を空間コード化法により検出する。次に、パターン対応付部311は、各方向での境界検出の結果をもとに、パターンの境界の交点のカメラ画像座標を算出する。
そして、パターン対応付部311は、算出されたカメラ画像座標を、予めわかっているパターンの境界の交点のプロジェクタ画像座標と対応付ける。パターン対応付部311は、このようにして得られた各交点のプロジェクタ画像座標とカメラ画像座標の対応に、さらに交点が投影されている校正用物体中の平面を対応付けて、対応情報として保持する。本実施形態においては、パターン対応付部311は、各パターン撮像画像が撮像された時の移動ステージの基準となる位置からの移動量を記録しておく。そして、パターン対応付部311は、スケール情報保存部312に保存されている移動量と平面IDとの対応に基づいて平面との対応付けを行う。対応点の情報は、交点のプロジェクタ画像座標
と、カメラ画像座標
と、校正用物体中の平面ID(π
i)と、して保持される。
なお、カメラ画像座標とプロジェクタ画像座標とを平面に対応付けるための処理は、実施形態に限定されるものではない。他の例としては、パターン対応付部311は、校正装置110の入力部206に対して入力されたユーザからの指示に従い、座標と平面との対応付けを行ってもよい。
次に、S702において、パラメータ算出部314は、S701において得られた対応点の情報(a
pi,a
ci,π
i)をもとに、プロジェクタ102の内部パラメータ、カメラ101に対するプロジェクタ102の位置及び姿勢を算出する。パラメータ算出部314は、対応点の情報を平面ID(π
i)毎に分けて処理を行う。校正用物体を構成するN個の平面のうち1つの平面を基準平面P
0とし、それ以外の平面をP
1〜P
N-1とする。カメラ座標系における基準平面P
0の方程式を
とする。ここで、平面パラメータである法線ベクトルn
c=(n
cx,n
cy,n
cz)
t及び法線ベクトル方向の距離d
cは、未知パラメータである。既知である平面間の距離をΔdとすると、基準平面を含めた平面の方程式は、(式11)のように表すことができる。
平面の法線ベクトルが共通でありかつ平面間の距離が既知であるため、平面に関する未知パラメータは、基準平面P0の法線ベクトルと法線ベクトル方向の距離dcとなる。なお、基準平面の数は必ずしも1つでなくてもよく、複数あってもよい。その場合には、各基準平面に平行な平面が存在する校正用物体を用い、各基準平面の平面パラメータを未知パラメータとして推定する。
プロジェクタ画像上の座標a
piに対応するカメラ画像上の正規化画像座標を
B
ci(=[x
ci,y
ci]
t)
とする。正規化画像座標は、(式1)、(式5)、(式6)、(式10)より、プロジェクタ画像座標a
pi、プロジェクタ102の内部パラメータ、カメラ101に対するプロジェクタ102の位置及び姿勢、平面パラメータpの関数となる。これは、(式12)のように表される。
ここで、K
pはプロジェクタ102の内部パラメータ(9自由度)を表しており、
Kp=[f
px f
py c
px c
py k
p1 k
p2 k
p3 D
p1 D
p2]
t
である。
Scpは、カメラ101とプロジェクタ102の相対位置姿勢(6自由度)を表しており、
Scp=[tx ty tz ωx ωy ωz]t
である。tx,ty,tzは位置を表し、ωx,ωy,ωzは姿勢を表す。本実施形態においては、ωx,ωy,ωzは方向が回転軸を表しノルムが回転角を表す3次元ベクトルであるとする。しかしながら、姿勢の表現はこれに限るものではなく、例えば、オイラー角による姿勢表現における各軸周りの回転角であってもよい。
平面パラメータpは基準平面を表す3自由度のパラメータであり
p=[r1 r2 dc]t
と表す。r1,r2は基準平面の法線ベクトルncの方向を表す2自由度のパラメータである。本実施形態においては、平面の法線ベクトルをZ軸と定義した時のX軸、Y軸まわりの回転量を表す。また、dcは法線ベクトル方向の距離である。
S702においては、パラメータ算出部314は、プロジェクタ102の内部パラメータ、カメラ101に対するプロジェクタ102の位置及び姿勢、平面パラメータを未知パラメータとして推定する。具体的には、パラメータ算出部314は、(式12)により計算される座標と、カメラ画像上で検出された交点の座標の誤差が最小となるように、未知パラメータを推定する。なお、パラメータ算出部314は、カメラ画像上で検出された交点の座標(u'c,v'c)を、(式3)、(式4)を用いて予め歪みの影響が含まれていない正規化画像座標(xc,yc)に変換しておく。
パラメータ算出部314は、(式13)により示される評価関数が最小となるように非線形最適化によって未知パラメータを算出する。
ここで、x
ci,y
ciは、(式12)によって計算される座標である。
は、カメラ画像上で検出された座標である。Mは、S701において対応付けられた交点の数である。
図8は、パラメータ算出部314によるパラメータ算出処理(S702)における詳細な処理を示すフローチャートである。まず、S800において、パラメータ算出部314は、概略値受付部313から概略値を取得する。なお、プロジェクタ102の内部パラメータの概略値、カメラ101とプロジェクタ102の相対位置姿勢の概略値、平面パラメータの概略値をそれぞれ
と表す。
次に、S801において、パラメータ算出部314は、パラメータ算出のための係数行列及び誤差ベクトルの算出を行う。ここで、係数行列と誤差ベクトルについて説明する。(式12)を(式14)のように、線形近似する。
ただし、
である。(式14)を(式13)に代入し、各パラメータで微分したものを0とおくと、(式15)が得られる。
ただし、
である。
S801において、パラメータ算出部314は、(式15)に示す係数行列J及び誤差ベクトルeを算出する。パラメータ算出部314は、(式1)、(式10)、(式6)、(式5)をもとにxci,yciの偏微分を算出することにより係数行列Jを求める。パラメータ算出部314はまた、未知パラメータの概略値を(式1)、(式10)、(式6)、(式5)に代入することにより誤差ベクトルeを求める。
次に、S802において、パラメータ算出部314は、係数行列J及び誤差ベクトルeから、未知パラメータの補正ベクトルgを算出する。パラメータ算出部314は、(式16)により、補正ベクトルgを算出する。なお、(式16)は、(式15)より得られる。
次に、S803において、パラメータ算出部314は、S802において得られた補正ベクトルgをもとに、未知パラメータの概略値を次のように、補正量分補正する。
次に、S804において、パラメータ算出部314は、最適化計算が収束したか否かを判定する。パラメータ算出部314は、(式13)により算出される評価関数の値の変化に基づいて、この判定を行う。パラメータ算出部314は、変化量が予め定めた閾値より小さい場合には、収束したと判定する。パラメータ算出部314は、変化量が閾値以上の場合には、収束していないと判定する。パラメータ算出部314は、収束したと判定した場合には(S804でYES)、処理をS805へ進める。パラメータ算出部314は、収束していないと判定した場合には(S804でNO)、処理をS801へ進める。S805において、パラメータ算出部314は、算出したプロジェクタ102の内部パラメータ、カメラ101に対するプロジェクタ102の位置及び姿勢に関する情報を、三次元計測装置100に送信する。送信された情報は、校正情報保存部302に記録される。以上で、パラメータ算出処理(S702)が終了する。
なお、S702の処理は、校正用物体としての複数の平面間の距離を示すスケール情報と、対応情報とに基づいて、プロジェクタ102のパラメータを算出するパラメータ算出処理の一例である。また、S702の処理は、プロジェクタ画像上の位置に対応するパターン撮像画像上の理論上の位置と、撮像画像上において実際に特定された位置との間の誤差に基づいて、補正量(補正ベクトルg)を算出する補正量算出処理の一例である。
校正処理が終了すると、三次元計測装置100は、計測対象物の三次元計測を行う。三次元計測においては、まずプロジェクタ102は、計測対象物に縞の照射パターンを照射する。そして、カメラ101は、照射パターンが撮像されたパターン撮像画像を得る。そして、制御装置103は、空間コード化法による三次元計測を行う。座標算出部303は、パターン撮像画像をもとに、制御装置103に保存された校正情報(パラメータ)を利用して計測対象物の三次元座標を算出する。
以上のように、第1の実施形態に係る校正装置110は、複数の平面からなる校正用物体を利用し、平面間の距離をスケールに関する情報(スケール情報)として利用することにより、プロジェクタ102のキャリブレーションを高精度に行うことができる。スケール情報は、スケールが既定できるものであればどのようなものであってもよい。その一例が第1の実施形態において説明した、平面間の距離である。すなわち、第1の実施形態に係る校正装置110は、Z軸方向に異なる位置に配置された校正用物体のパターン撮像画像と、Z軸方向に異なる位置関係を示すスケール情報と、を利用して、キャリブレーションを行う。プロジェクタ102から照射されるパターンを高密度のパターンにすることで多くの対応点の情報が得られる。この情報とともに平面間の距離をスケールの情報として用いることで、物理スケールにあった高精度なキャリブレーションを行うことが可能である。
(第2の実施形態)
第2の実施形態に係る三次元計測システム10は、第1の実施形態にかかる三次元計測システム10と異なる校正用物体を用いたキャリブレーションを行う。第1の実施形態に係る校正装置110は、校正用物体のZ軸方向のスケールに基づいて、キャリブレーションを行った。これに対し、本実施形態にかかる校正装置110は、校正用物体のXY平面に平行な方向のスケールに基づいて、プロジェクタ102の内部パラメータ及びカメラ101に対するプロジェクタ102の位置及び姿勢のキャリブレーション行う。図9は、第2の実施形態に係る校正用物体の一例を示す図である。校正用物体900は、格子状に複数の黒色の円形の指標901が配置された単一の白色の平面である。指標901は、パターン撮像画像上で検出される指標と、平面上の指標との対応付けに利用される。
なお、指標は実施形態に限定されるものではなく、他の例としては、白黒の市松模様の格子点であってもよい。さらに、校正用物体の指標は、XY平面(投影面)に投影された場合の位置が異なる指標であればよく、必ずしも単一の平面である必要はない。すなわち、校正用物体は、XY平面の位置の異なる指標が配置された複数の平面であってもよい。このように、校正用物体としての平面の指標は、パターン撮像画像上で検出可能でかつ対応付け可能な複数の指標であればよく、実施形態に限定されるものではない。また、校正用物体は、平面でなくともよい。ただし、いずれの場合も、校正用物体には、XY平面に投影された場合の位置が異なり、かつ配置位置の相互の位置関係が既知の、2以上の指標が配置されているものとする。
以下、第2の実施形態に係る三次元計測システム10について、第1の実施形態に係る三次元計測システム10と異なる点について説明する。図10は、第2の実施形態に係る制御装置103及び校正装置111のソフトウェア構成を示す図である。校正装置111は、第1の実施形態に係る校正装置110と同様に、画像受付部310と、パターン対応付部311と、概略値受付部313とを有している。校正装置111はさらに、第1の実施形態に係る校正装置110と異なる機能として、スケール情報保存部1111と、指標対応付部1112と、パラメータ算出部1113とを有している。
スケール情報保存部1111は、スケール情報として、各指標の校正用物体上に規定された実空間上の座標系(以下、校正物体座標系と呼ぶ)における指標の位置を示す座標を保存する。これらの座標は、例えば写真測量技術により計測された位置座標でもよく、接触式の三次元座標計測機を用いて計測された位置座標でもよい。なお、校正用物体座標系の原点は平面上にあるものとし、平面の法線ベクトルを構成用物体座標系のZ軸と一致させる。すなわち、第2の実施形態に係るスケール情報は、実空間のXY平面内の異なる位置の位置関係を示す情報である。
指標対応付部1112は、校正用物体上に配置された指標の投影像を撮像画像から検出し、その撮像画像上の座標と校正物体座標系上の座標を対応付ける。パラメータ算出部1113は、プロジェクタ102の内部パラメータ、カメラ101に対するプロジェクタ102の位置及び姿勢を算出する。このとき、パラメータ算出部1113は、パターン対応付部311によって得られたプロジェクタ画像座標とカメラ画像座標の対応及び指標対応付部1112によって対応付けられた指標のカメラ画像座標と校正物体座標系上の座標の対応を参照する。なお、制御装置103のソフトウェア構成は、第1の実施形態にかかる制御装置103のソフトウェア構成と同様である。
図11は、第2の実施形態に係る校正装置111による校正処理を示すフローチャートである。第1の実施形態に係る校正処理と同様、校正処理の実行前に以下に示す初期化処理が完了しているものとする。初期化処理において、校正装置110は、校正用物体に関する情報を不図示の記憶装置から読み込んで、スケール情報保存部312に保存する。前述したように、スケール情報保存部1111が保持する情報は、校正物体座標系に対する各指標の座標である。さらに、初期化処理においては、概略値受付部313は、プロジェクタ102の内部パラメータ、カメラ101とプロジェクタ102の相対的な位置及び姿勢、カメラ101に対する校正用物体の位置及び姿勢の概略値の受け付けを完了しているものとする。本実施形態においては、プロジェクタ102の内部パラメータ、カメラ101に対するプロジェクタ102の位置及び姿勢の概略値としては設計値が入力される。
カメラ101に対する校正用物体の位置及び姿勢の概略値は、校正用物体上の指標の校正物体座標系における座標とカメラ画像上の座標との対応をもとに算出される。本実施形態においては、概略値は、Lepetitらの手法を用いて算出された値とする。Lepetitらの手法については、以下の文献を参照することができる。
V. Lepetit, F. Moreno-Noguer, and P. Fua, "EPnP: an accurate O(n) solution to the PnP problem," International Journal of Computer Vision, vol.81, no.2, pp.155-166, 2009.)
ただし、カメラ101と校正用物体の相対的な位置姿勢の算出方法はこれに限るものではなく、指標の座標の対応を利用する他の方法であってもよい。また、カメラ101に対する平面パラメータの概略値としては、校正用物体を構成する平面上に位置関係が既知な指標を配置し、指標の画像座標と平面上の座標との対応をもとに推定した値が用いられる。
校正処理のS1100において、画像受付部310は、制御装置103からパターン撮像画像の入力を受け付ける。S1100の処理は、第1の実施形態において説明した図7の画像受付処理(S700)の処理と同様であるので、詳細は省略する。次に、S1101において、パターン対応付部311は、S1100において受け付けたパターン撮像画像をもとに、照射された水平・垂直方向のパターンの交点のカメラ画像座標とプロジェクタ画像座標とを対応付ける。対応付けの処理は、第1の実施形態に係るパターン対応付け処理(S701)と同様である。そして対応点の情報は、交点のプロジェクタ画像座標
及びカメラ画像座標
として保持される。
次に、S1102において、指標対応付部1112は、校正装置111において入力されたパターン撮像画像をもとに、カメラ画像から円形の指標に相当する領域を検出し、校正用物体座標系上の指標と対応付ける。校正用物体は白色の平面であり、指標は黒色の円であることから、指標対応付部1112は、画像の二値化及びラベリング処理を行って円領域の候補を抽出し、各円領域の候補の面積を閾値処理することで指標に相当する領域を検出する。さらに、指標対応付部1112は、指標を利用して校正用物体上の指標と対応付ける。対応点の情報は、指標の校正物体座標系上の座標
及びカメラ画像上の座標
として保持される。
次に、S1103において、パラメータ算出部1113は、S1101及びS1102で得られた対応点の情報をもとに、プロジェクタ102の内部パラメータ、カメラ101に対するプロジェクタ102の位置及び姿勢を算出する。ここでは次の2種類のデータを用いて未知パラメータの算出を行う。1つ目は、実施例1と同様に、プロジェクタ102側から投影されるパターンの交点のプロジェクタ画像座標とカメラ画像座標の対応である。もう1つは、校正用物体上の指標の校正物体座標系における座標とカメラ画像座標の対応である。
ここで、第2の実施形態に係る投影モデルについて説明する。校正用物体座標B
wからカメラ座標A
cへの座標変換を(式17)のように表す。
(式17)のR
cwは回転を表す3×3行列、t
cwは平行移動を表す3次元ベクトルである。校正物体座標系における校正物体の平面の法線ベクトルn
wとすると、カメラ座標系における法線ベクトルn
cは、R
cwn
wとなる。カメラ座標系において平面はt
cwを通ることから、カメラ座標系における平面の方程式は(式18)で表される。
(式8)で表される直線が(式18)で表される平面と交わる場合、(式8)を(式18)代入することにより、αは次のようになる。
そのため、プロジェクタ102から照射される光線と該平面との交点のカメラ座標は(式19)のように表すことができる。
校正物体上の指標の校正物体座標は(式17)によってカメラ座標に変換される。また、プロジェクタ102が照射するパターンの交点のプロジェクタ座標は(式19)によってカメラ座標に変換される。
プロジェクタ画像上の座標A
piに対応するカメラ画像上の座標(正規化画像座標)
A
ci(=[X
cpi Y
cpi]
t)
は、(式1)、(式5)、(式6)、(式19)よりa
pi、プロジェクタ102の内部パラメータK
p、カメラ101に対するプロジェクタ102の位置及び姿s
cc、カメラ101に対する校正用物体の位置及び姿勢s
cwjの関数となる。これを(式20)のように表す。なお、カメラ101に対する校正用物体の位置及び姿勢は、校正用物体の位置姿勢毎に変わるため、インデックスjにより区別している。
校正物体上の座標X
wjに対応するカメラ画像上の座標(正規化画像座標)
A
cmi(=[X
cmi Y
cmi]
t)
は、(式1)、(式17)より、B
wi、カメラ101に対する校正用物体の位置及び姿勢の関数となる。これを(式21)のように表す。
なお、第2の実施形態に係る未知パラメータの算出処理、すなわちパラメータ算出処理S1103における処理は、第1の実施形態において図8を参照しつつ説明した処理とほぼ同様である。ここでは、図8を参照しつつ、第2の実施形態に係るパラメータ算出処理(S1103)について、第1の実施形態に係るパラメータ算出処理と異なる点を中心に説明する。本実施形態においては、パラメータ算出部314は、(式22)に示される評価関数が最小となるように非線形最適化によって未知パラメータを算出する。
(式22)において、x
cpi,y
cpi,x
cmi,y
cmiが計算される座標であり、
が検出された座標である。Mは、S1101において対応付けられた交点の数、Pは、S1102において対応付けられた点の数である。
また、S800において、パラメータ算出部314は、概略値受付部313から概略値を取得する。プロジェクタ102の内部パラメータの概略値、カメラ101に対するプロジェクタ102の位置及び姿勢の概略値、カメラ101に対する校正用物体の位置及び姿勢の概略値をそれぞれ
と表す。ここで、Sは、校正用物体の位置及び姿勢のバリエーションの数である。
続く、S801において、パラメータ算出部314は、パラメータ算出のための係数行列及び誤差ベクトルの算出を行う。(式20)、(式21)は、(式23)、(式24)のように線形近似することができる。
ただし、
である。(式23)、(式24)を(式22)に代入し、各パラメータで微分したものを0とおくと、(式25)が得られる。
ただし、J,x,eは、以下の通りである。
S801において、パラメータ算出部314は、係数行列J及び誤差ベクトルeを算出する。パラメータ算出部314は、(式1)、(式19)、(式6)、(式5)、(式17)をもとにxci,yciの偏微分を算出することにより、係数行列Jを求める。パラメータ算出部314はまた、未知パラメータの概略値を(式1)、(式19)、(式6)、(式5)、(式17)に代入することにより、誤差ベクトルeを求める。
次に、S802において、パラメータ算出部314は、係数行列J及び誤差ベクトルeから、(式26)を用いて、未知パラメータの補正ベクトルxを算出する。
S803以降の処理は、第1の実施形態に係るS803以降の処理と同様である。また、第2の実施形態に係る三次元計測システムのこれ以外の構成及び処理は、第1の実施形態に係る三次元計測システムの構成及び処理と同様である。
以上のように、第2の実施形態に係る校正装置111は、相対位置関係が既知な指標が配置された校正用物体を利用し、指標の位置関係をスケールに関する既知の情報として利用することにより、キャリブレーションを高精度に行うことができる。
(第3の実施形態)
第3の実施形態に係る三次元計測システムにおいては、校正装置は、校正用物体として1つの球又はその一部を用いる。そして、校正装置は、校正用物体としての球の半径をスケール情報として利用することでプロジェクタ102の内部パラメータ及びカメラ101とプロジェクタ102の相対的な位置姿勢のキャリブレーションを行う。なお、球の半径は既知であるものとするまた、他の例としては、校正用物体は、複数の球であってもよい。この場合、複数の球それぞれの半径は既知であるものとする。
第3の実施形態に係る三次元計測システムにおいては、制御装置103及び校正装置110の機能は図3を参照しつつ説明した第1の実施形態に係る制御装置103及び校正装置110の機能と同様である。ただし、校正装置110により利用される校正物体と、スケール情報が異なる。以下、第3の実施形態に係る校正装置110について、第1の実施形態に係る校正装置110と異なる点を中心に説明する。
スケール情報保存部312は、校正用物体としての球の半径をスケール情報として保存している。次に、図7を参照しつつ、第3の実施形態に係る校正装置110による校正処理について説明する。第1の実施形態に係る校正処理と同様、校正処理の実行前に以下に示す初期化処理が完了しているものとする。初期化処理において、校正装置110は、校正用物体に関するスケール情報を不図示の記憶装置から読み込んで、スケール情報保存部312に保存する。前述したように、スケール情報保存部1111が保持するスケール情報は、校正用物体の半径である。球の半径としては、例えば設計値を用いる。また、他の例としては、球の半径は、接触式の三次元座標計測機を用いて事前に計測された値であってもよい。また、スケール情報は、球の半径に変換可能な値であればよく、他の例としては、球の直径であってもよい。
さらに、初期化処理においては、概略値受付部313は、プロジェクタ102の内部パラメータ、カメラ101に対するプロジェクタ102の位置及び姿勢、カメラ101に対する校正用物体の位置の概略値の受付を完了しているものとする。プロジェクタ102の内部パラメータ、カメラ101とプロジェクタ102の相対的な位置姿勢の概略値としては設計値が入力される。カメラ101と校正用物体の相対的な位置の概略値は、カメラ画像上における球の投影像である円の位置と大きさに基づいて算出された値とする。
S700において、画像受付部310は、制御装置103からパラメータ撮像画像の入力を受け付ける。なお、S700の処理は、第1の実施形態に係る画像受付処理(S700)と同様である。次に、S701において、パターン対応付部311は、S700において入力されたパラメータ撮像画像をもとに、カメラ画像座標とプロジェクタ画像座標との対応付け、対応付けの集合を求める。対応付けの処理は、第1の実施形態に係るパターン対応付け処理(S701)と同様である。対応点の情報は、交点のプロジェクタ画像上の座標
びカメラ画像上の座標
として保持される。次に、S702において、パラメータ算出部314は、S701において得られた対応点の情報の集合をもとに、プロジェクタ102の内部パラメータ、カメラ101とプロジェクタ102の相対的な位置姿勢を算出する。
ここで、プロジェクタ102から出射する光線が空間中の球に投影されてカメラ101に入射する場合の、プロジェクタ画像のピクセル座標のカメラ画像のピクセル座標への変換について説明する。カメラ座標系における球の方程式を(式27)のように表す。
(式27)で表される球と、(式8)で表される直線の交点は、(式8)を(式27)に代入して得られる二次方程式
から算出することができる。ただし
解が二個ある場合には、小さい方を選択する。すなわち
である。よって、プロジェクタ102から照射される光線と球との交点のカメラ座標は、(式28)のように表すことができる。
プロジェクタ102が照射するパターンの交点のプロジェクタ座標は(式28)によってカメラ座標に変換される。
プロジェクタ画像上の座標u
piに対応するカメラ画像上の座標(正規化画像座標)A
ciは、(式1)、(式5)、(式6)、(式28)より、a
pi、K
p、s
cp、t
csの関数となる。ここで、K
pは、プロジェクタ102の内部パラメータ、s
cpは、カメラ101とプロジェクタ102の相対位置姿勢、t
csは、カメラ101と校正用物体の相対位置である。a
pi、K
p、s
cp、t
csの関数は、(式29)のように表される。
そして、パラメータ算出部314は、第1の実施形態において説明したのと同様の方法により(式30)によって示される評価関数が最小となるように非線形最適化によって未知パラメータを算出する。
なお、未知パラメータの算出方法は、第1の実施形態において説明した算出方法と同様である。また、第3の実施形態に係る三次元計測システムのこれ以外の構成及び処理は、他の実施形態に係る三次元計測システムの構成及び処理と同様である。
以上のように、第3の実施形態に係る校正装置110は、校正用物体を球として、球の半径をスケールに関する既知の情報として利用することにより、三次元計測装置を構成するプロジェクタ102のキャリブレーションを高精度に行うことができる。
次に、上記実施形態の変更例について説明する。第1の変更例としては、スケール情報は、実施形態に限定されるものではない。他の例としては、校正装置110は、円柱を校正用物体として、円柱の底面の半径をスケール情報として利用してもよい。この場合、校正装置110は、円柱の側面又はその一部の撮影画像と、撮像画像とに基づいて、キャリブレーションを行う。中心軸が校正物体座標系のZ軸と一致してかつ原点を通る円柱は次式のように表される。
ここで、rは、円柱の半径である。rは、円柱を接触式の三次元座標計測機で計測する等して事前に校正しておく。
(式8)で表される直線(カメラ座標系)を、(式17)(世界座標系からカメラ座標系への変換)を用いて世界座標系における直線に変換し、(式31)に代入することにより、第3の実施形態に係る球の場合と同様にαに関する2次方程式が得られる。この2次方程式を解くことでαが得られる(2次方程式が実数解を2個持つ場合には、小さい方を選択する)。αはプロジェクタ102の内部パラメータ、カメラ101に対する円柱の位置及び姿勢、カメラ101に対するプロジェクタ102の位置及び姿勢、円柱の半径の関数である。したがって、αを用いて前述の実施形態において説明した処理と同様に非線形最適化により未知パラメータを算出することができる。
また、校正用物体は楕円体であってもよい。楕円体は(式32)のように表わすことができる。すなわち、球や円柱を校正用物体として用いる場合と同様な方法により未知パラメータを算出することができる。
また、校正用物体としての円柱や楕円体の数は一つに限るものではなく、複数あってもよい。
次に、第2の変更例について説明する。上記実施形態においては、校正装置110は、プロジェクタ102の内部パラメータとカメラ101に対するプロジェクタ102の位置及び姿勢の双方を未知パラメータとして算出したが、未知パラメータは、実施形態に限定されるものではない。例えば、すでにプロジェクタ102の内部パラメータがキャリブレーションされている場合には、プロジェクタ102の内部パラメータをキャリブレーションする必要はない。そのような場合には、校正装置110は、プロジェクタ102の内部パラメータを既知として、推定するパラメータから除外してもよい。
次に、第3の変更例について説明する。上記実施形態においては、校正装置110は、レンズ歪みのモデルとして半径方向の歪みと接線方向の歪みを有するモデルを用いていた。但し、レンズ歪みのモデルはこれに限るものではない。他の例としては、校正装置110は、Fitzgibbonのモデルを用いてもよい。Fitzgibbonのモデルについては、以下の文献を参照することができる。
A. Fitzgibbon, "Simultaneous linear estimation of multiple view geometry and lens distortion," Proc. CVPR'01, 2001.
Fitzgibbonのモデルは次の式で表される。
また、校正装置110は、Clausらによって提案されているrational function modelを用いてもよい。rational function modelについては、以下の文献を参照することができる。
D. Claus and A. W. Fitzgibbon, "A rational function lens distortion model for general cameras," Proc. CVPR'05, 2005.
このように、校正装置110は、歪みの加わった座標から歪みのない座標への変換を関数として表すことができるモデルであれば、いかなるレンズ歪みのモデルを用いてもよい。
次に、第4の変更例について説明する。上記実施形態においては、校正装置110は、レンズ歪みの加わった座標から歪みのない座標への変換(プロジェクタ102の場合にはレンズ歪みのない座標から歪みの加わった座標への変換)の関数を利用していた。但し、レンズ歪みを表す関数は、実施形態に限定されるものではない。他の例としては、校正装置110は、レンズ歪みのない座標からレンズ歪みのある座標への変換(プロジェクタ102の場合にはレンズ歪みの加わった座標から歪みのない座標への変換)を表す関数を利用してもよい。
この場合、校正装置110はカメラ画像上のピクセル座標に相当する光線が平面上で反射してプロジェクタ102に入射すると考え、プロジェクタ画像上での誤差を最小化するように未知パラメータを算出する。カメラ101の場合、(式1)で表される歪みのない正規化画像座標(x
c,y
c)は、(式33)ように歪みのある正規化画像座標(x'
c,y'
c)に変換される。
すなわち、校正装置110は、初期値を(x'
c,y'
c)として(式31)を満たすように非線形最適化を行うことで歪みのある正規化画像座標(x'
c,y'
c)からの歪みのない正規化画像座標(x
c,y
c)を算出する。
以上述べたように、本実施形態に係る三次元計測システムは、プロジェクタ102から照射されるパターンから得られる多くの対応点とスケール情報を併用することで、高精度かつ実際のスケールにあったキャリブレーションを行うことが可能である。スケールに関する情報は、第1の実施形態において説明したように、複数の平行な平面からなる校正用物体を利用する場合の平面間の距離でもよい。また、第2の実施形態において説明したように、相対位置関係が既知な指標が配置された校正用物体を利用する場合の指標の位置関係であってもよい。さらに、第3の実施形態において説明したように、球を校正用物体として利用する場合の、球の半径であってもよい。他にも、円柱や楕円体を校正物体として利用する場合の、円柱や楕円体のスケールを表す曲面パラメータであってもよい。
また、照明部が照射するパターンは、空間コード化法のための水平/垂直方向の縞パターンでもよいし、位相シフト法のための縞パターンや疑似ランダムドットパターンのような2次元パターンであってもよい。
また、キャリブレーションを行うパラメータは、プロジェクタ102の内部パラメータとカメラ101に対するプロジェクタ102の位置及び姿勢であってもよい。プロジェクタ102の内部パラメータがキャリブレーション済みであれば、カメラ101に対するプロジェクタ102の位置及び姿勢だけであってもよい。
また、キャリブレーションするレンズ歪みのパラメータは、半径方向の歪みと接線方向の歪みを有するモデルや、division model、rational function modelであってもよい。さらには、レンズ歪みのない座標から歪みの加わった座標への変換(プロジェクタ102の場合には、レンズ歪みの加わった座標からレンズ歪みのない座標への変換)を関数として表すモデルであってもよい。
以上、上述した各実施形態によれば、三次元位置計測におけるプロジェクタのパラメータを高精度に校正することができる。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。