本発明は、コンピュータビジョンにおいて、カメラの内部パラメタであるレンズの像側主点と撮像素子の受光面間の距離と、レンズの光軸中心と撮像素子との交点のディジタル画像座標系における座標を求めることに関する。
従来のカメラ内部パラメタ測定装置(たとえば、非特許文献1)について、以下に説明する。図1は従来のカメラ内部パラメタ測定について、測定する際の光学系を示したものである。
101は光源、102はカメラパラメタを得るためのパターンであるキャリブレーションパターン、103はキャリブレーションパターンの位置を示す世界座標系、104はカメラのレンズ、105はカメラによって規定されるカメラ座標系、106はカメラの二次元撮像素子、107は二次元撮像素子によって規定されるディジタル画像座標系、108は104のカメラレンズと106の二次元撮像素子で構成されるカメラ、である。
108のカメラは、103の世界座標に対して、いろいろな位置において102のキャリブレーションパターンを撮影することができるものとする。それぞれの位置のカメラをCi,i=1,2,3,‥.と呼ぶこととし、iで位置を関連づけるものとする。
105のカメラ座標系の各軸の決め方は、以下の通りである。原点は、カメラのレンズの物体側主点と像側主点であり、レンズへの光の入射に関する座標の原点は物体側主点であり、レンズからの光の出射に関する座標の原点は像側主点である。ZCi軸はレンズ光軸と一致し、カメラへの光の入射とは反対方向をプラス方向とする。XCi軸は、原点を含みZCi軸と直交した面内にあり、二次元撮像素子の走査方向と平行な軸であり、物体を動かした際に走査方向と同じ方向に動く物体の方向をプラス側とする。YCi軸は、ZCi軸とXCi軸の両方と直交する軸であり、右手系としてYCi軸のプラス方向を決めることとする。
107のディジタル画像座標系は、1フレームの走査の起点が原点であり、走査方向の軸をuCi軸とし、もう一方の軸をvCi軸とする。
102のキャリブレーションパターンは、視覚的に特徴のある点を複数含むものとする。その特徴点は、たとえば、格子状の線の交点、市松模様の各四角の頂点等が考えられる
カメラ内部パラメタを得る手順は以下の通りである。
1)103の世界座標系上における102のキャリブレーションパターンの複数の特徴点の位置を測定する。これらの座標を[XWk,YWk,ZWk]Tとする。ここで、kは点を区別するための番号である。Tは転置を表す。
2)ある位置に108のカメラを固定する。このときのカメラをCiとする。iはカメラの位置を区別するための番号である。
3)108のカメラCiで102のキャリブレーションパターンを撮像する。
4)107のディジタル画像座標系上におけるキャリブレーションパターンの複数の格子点の位置を検出する。これらの座標を[uCik,vCik]Tとする。ここで、kは点を区別するための番号であり、上記で述べた特徴点のそれぞれに対応して番号が付けられる。この対応付けによる番号付けをラベリングと呼ぶ。
5)カメラCiについての射影行列PCiを求める。求め方は、以下の通り。
5−1)カメラCiについて、[XWk,YWk,ZWk]Tと[uCik,vCik]Tを用いて下記の行列BCiを求める。
5−2)上記BCiを使ったBCi TBCi行列の最小固値に対する固有ベクトルを求める。これを[pCi11,pCi12,pCi13,pCi14,pCi21,pCi22,pCi23,pCi24,pCi31,pCi32,pCi33,pCi34]Tとすると、以下の式が射影行列となる。
6)上記で求めた射影行列PCiを用いて、下記のようにエピポールeCiを求める。
ただし、s
Ciはスカラであり、W
Ciは三次元の任意のベクトルである。s
Ciの大きさについては、〜付きe
Ciの3つめのエレメントは1であるので、s
Ciは、そうなるように決める。Iは4×4の単位行列である。
7)ある位置のカメラCiの他、別の位置のカメラCjについても、上記2)〜6)を行う。
8)上記で求めた射影行列PCiを用いて、下記のようにFundamental行列を求める。
9)ところでカメラ内部パラメタを含むカメラ内部行列をAと表したとき、以下のようにAで対称行列Kを作るとする。
ただし、f
Ciはカメラのレンズの像側主点と二次元撮像素子の受光面間の距離であり、[u
CO,v
CO]
Tはカメラの二次元撮像素子が規定しているディジタル画像座標系におけるカメラのレンズの光軸と二次元撮像素子との交点の座標であり、k
Ciはカメラの二次元撮像素子のピクセルピッチの逆数である。
ある場所のカメラCiにおけるKCiと、置き場所を変えたカメラCjにおけるKCjを使うと、以下の2式が同時に成り立つことがSelf-Calibrationの理論で分かっている。
これらはτについての二次方程式になる。これらのτについての二次関数は等価であるので、それらの二次方程式の0次、1次、2次の係数をそれぞれk
Ci0、k
Ci1、k
Ci2、k
Cj0、k
Cj1、k
Cj2で表すと、以下のようなKruppa方程式が得られる。
ただし、F
CiCjはFundamental行列であり、その要素を上記のようにF
CiCjklという表記に置き換えている。また、カメラC
iとC
jは、カメラの設置位置だけが異なり、カメラ内部パラメタは同じであるためK
Ci=K
Cjとなるので、以降はK
CjをK
Ciに置き換えて述べる。
なお、この式からは、KCiklについての連立二次方程式が以下のように3組成り立つが、どの組を使用しても良い。
10)上記式1−8が5つ以上できるように、カメラの位置を変えて上記2)から9)を繰り返す。このためには、たとえば、カメラCi、Cjとは別の位置のカメラCkについて上記2)〜6)を行い、カメラCjとCkで8)〜9)を行って2つの式を導出し、さらに、カメラCkとCiで8)〜9)を行ってさらに2つの式を導出し、全部で6つのKCiklについての二次方程式を作る。
11)上記10)で作ったKCiklについての二次方程式から、KCiklを導出する。このためには、たとえば、6つのKCiklについての二次方程式から5つを選び、二次方程式を解く。あるいは、6つのKCiklについての二次方程式の左辺についてそれぞれ二乗し、6つ全ての総和を取った関数を評価関数とし、その評価関数が0に近づくようにKCiklを変化させる最適化手法を使用してKCiklを得る。この最適化手法としては、たとえば、Levenberg-Marquardt法を使用する。
12)上記11)で求めたKCi行列から、カメラ内部パラメタを算出する。このためには、たとえば、まず以下のようにKCi行列の逆行列をCholeski分解する。
ここで、カメラ内部パラメタと上記の式とは、下記の関係がある。
ただし、f
Ciはカメラのレンズの像側主点と二次元撮像素子の受光面間の距離であり、[u
CO,v
CO]
Tはカメラの二次元撮像素子が規定しているディジタル画像座標系におけるカメラのレンズの光軸と二次元撮像素子との交点の座標であり、k
Ciはカメラの二次元撮像素子のピクセルピッチの逆数である。
したがって、カメラ内部パラメタについて、たとえば、以下のような計算を行って導出する。
あるいは、式1−10の各エレメントについて、左辺と右辺の二乗和を取ったものを評価関数とし、その評価関数が0に近づくようにu
CiO、v
CiO、f
Ciを変化させる最適化手法を使用してu
CiO、v
CiO、f
Ciを得る。この最適化手法としては、たとえば、Levenberg-Marquardt法を使用する。
しかしながら、上記従来方法では、キャリブレーションパターンの特徴点からの光のカメラレンズの物体側主点への入射角度が同じであっても、キャリブレーションパターンの特徴点とカメラレンズの物体側主点との距離によって、二次元撮像素子上に到達する光の位置がずれるという現象が発生し、その影響で、カメラ内部パラメタの測定精度が悪化する、という欠点がある。また、従来のカメラパラメタ測定方法では、測定のために厳密な位置合わせが必要であるため、精度のよい位置合わせ機構を必要とし、これらを調整する機構測定の稼働も大きかった。
本発明は、上記に鑑みてなされたものであり、その目的とするところは、カメラ内部パラメタを精度よく測定するカメラ内部パラメタ測定装置を提供することにある。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
第1の発明は、レンズと二次元撮像素子を有するカメラのカメラ内部パラメタ測定装置であって、平行ビームを出射する平行ビーム出射モジュールと、カメラへの平行ビームの入射角度を変える相対位置変更モジュールと、前記平行ビーム出射モジュールから前記カメラに平行ビームを前記相対位置変更モジュールにより入射角度を変えて3回入射させたときの該平行ビームの進行方向に対して位置関係が保証されていないカメラ座標系における3つの入射角度から得られる3つの角度差のうちの2つと、それに対応する前記カメラ内の前記二次元撮像素子上で集光された3つの集光点から得られる3つの点の位置の差のうちの2つとで、カメラ内部パラメタである、レンズの像側主点と二次元撮像素子の受光面間の距離と、カメラ光軸と二次元撮像素子の交点位置を計算する計算モジュールと、を有することを特徴とする。
第2の発明は、第1の発明において、前記相対位置変更モジュールは、前記カメラを回転させるカメラ回転モジュールであることを特徴とする。
第3の発明は、レンズと二次元撮像素子を有するカメラのカメラ内部パラメタ測定装置であって、平行ビームを出射する平行ビーム出射モジュールと、カメラへの平行ビームの入射角度を変える相対位置変更モジュールと、前記平行ビーム出射モジュールから前記カメラに平行ビームを前記相対位置変更モジュールにより入射角度を変えて3回入射させたときの3つの入射角度から得られる3つの角度差のうちの2つと、それに対応する前記カメラ内の前記二次元撮像素子上で集光された3つの集光点から得られる3つの点の位置の差のうちの2つとで、カメラ内部パラメタである、レンズの像側主点と二次元撮像素子の受光面間の距離と、カメラ光軸と二次元撮像素子の交点位置を計算する計算モジュールと、カメラ内部パラメタの値の分散の閾値を記憶する閾値記憶モジュールと、を有し、前記計算モジュールは、3つの入射角度から得られる3つの角度差のうちの2つと、それに対応する3つの集光点から得られる3つの点の位置の差のうち2つをとる選び方3通りについて、カメラ内部パラメタを算出し、算出されたカメラ内部パラメタの値の分散が前記閾値記憶モジュールに記憶された閾値よりも大きい場合は、これまでとは別の入射角度で前記平行ビーム出射モジュールから前記カメラに平行ビームを入射させたときの入射角度および集光点とこれまでに得られた入射角度および集光点を用いて、3つの入射角度と集光点位置を選び、再度前記の通り、カメラ内部パラメタを算出することとし、算出されたカメラ内部パラメタの値の分散を比較し、算出されたカメラ内部パラメタの分散が前記閾値記憶モジュールに記憶された閾値より小さい場合は、算出されたカメラ内部パラメタの値を用いてカメラ内部パラメタを確定する、ことを特徴とする。
第4の発明は、第3の発明において、前記相対位置変更モジュールは、前記カメラを回転させるカメラ回転モジュールであることを特徴とする。
以下、本発明の理解を助けるために、前記カメラ内部パラメタ測定装置の前記計算モジュールにおいて行われる計算の詳細を具体的に説明するが、これにより本発明が限定されるものではない。カメラ内部パラメタを計算する際には、たとえば、以下のような計算を行う。
カメラが規定する座標をカメラ座標と呼ぶこととする。このカメラ座標は、原点は、カメラのレンズの物体側主点と像側主点であり、レンズへの光の入射に関する座標の原点は物体側主点であり、レンズからの光の出射に関する座標の原点は像側主点である。このカメラ座標のZC軸、XC軸、YC軸は次のように定める。ZC軸はレンズ光軸と一致し、カメラへの光の入射とは反対方向をプラス方向とする。XC軸は、原点を含みZC軸と直交した面内にあり、カメラの二次元撮像素子の走査方向と平行な軸であり、物体を動かした際に走査方向と同じ方向に動く物体の方向をプラス側とする。YC軸は、ZC軸とXC軸の両方と直交する軸であり、右手系としてYC軸のプラス方向を決めることとする。
また、カメラの二次元撮像素子が規定するディジタル画像座標系は、1フレームの走査の起点が原点であり、走査方向の軸をuC軸とし、もう一方の軸をvC軸とする。
カメラのレンズの光軸と二次元撮像素子との交点のディジタル画像座標系での座標を[uCO,vCO]Tとし、カメラのレンズの像側主点とカメラの二次元撮像素子の受光面までの距離をfCとし、カメラの二次元撮像素子のピクセルピッチを1/kCとする。
平行ビーム出射モジュールから出射された平行ビームをカメラのレンズに入射させて、そのときのカメラの二次元撮像素子上で集光する点のディジタル画像座標系での座標を[uC,vC]Tとし、カメラ座標系での座標を[XC,YC,ZC]Tとしたときに、その[XC,YC,ZC]Tは、
カメラ回転モジュールによりカメラの向きを3回変えたときのそれぞれの方向を、方向0、方向1、方向2と名付けることとする。
方向1から方向0を引いた角度差を[ΔθZXCD10,ΔθZYCD10]T、方向2から方向0を引いた角度差を[ΔθZXCD20,ΔθZYCD20]T、ただし、カメラ座標系の[YC軸を回転軸とする角度,XC軸を回転軸にする角度]と表記することとする。
また、それぞれの方向についてカメラの二次元撮像素子上に集光する点の座標を、ディジタル画像座標系で表すと、それぞれ、方向0では[uCD0,vCD0]T、方向1では[uCD0+ΔuCD10,vCD0+ΔvCD10]T、方向2では[uCD0+ΔuCD20,vCD0+ΔvCD20]Tとなるとする。
カメラレンズがfSinθ系であれば、カメラのレンズと二次元撮像素子間の距離fCと、カメラの二次元撮像素子が規定しているディジタル画像座標系におけるカメラのレンズの光軸と二次元撮像素子との交点の座標[uCO,vCO]Tは、
また、カメラレンズがfTanθ系であれば、カメラのレンズと二次元撮像素子間の距離fCと、カメラの二次元撮像素子が規定しているディジタル画像座標系におけるカメラのレンズの光軸と二次元撮像素子との交点の座標[uCO,vCO]Tは、
第1、第2の発明においては、平行ビームをカメラに入射させた光を用いて測定しているため、従来技術のように、キャリブレーションパターンの特徴点からの光のカメラレンズの物体側主点への入射角度が同じであっても、キャリブレーションパターンの特徴点とカメラレンズの物体側主点との距離によって、2次元撮像素子上に到達する光の位置がずれるというような不都合が無く、精度よく特徴点の位置を抽出でき、そのため、精度よくカメラ内部パラメタを測定できるという利点がある。
また、第1、第2の本発明においては、計算に用いている角度は、平行ビームに対するカメラの絶対的な角度ではなく、複数点取った角度データの差分値であるので、平行ビーム出射モジュールとカメラの角度関係は厳密に合わせる必要が無く、簡易に測定できるという利点がある。
また、第1、第2の発明においては、平行ビームをカメラに入射させているので、平行ビーム出射モジュールとカメラの距離関係は厳密に位置合わせする必要がなく、簡易に測定できるという利点がある。
第3の発明においては、カメラの回転角度を測定するときに発生する誤差や、撮像素子上に集光する集光点の位置を測定するときに発生する誤差や、カメラ内部パラメタを算出するときに発生する計算丸め誤差等、何らかの誤差が発生した場合に、本来分散が0となる3通りの組み合わせから得られるカメラ内部パラメタの分散の大きさが大きくなると、そのカメラ内部パラメタの算出精度に問題があることが分かるため、得られたカメラ内部パラメタの誤差を検知することができるという利点がある。
また、第3の本発明においては、得られたカメラ内部パラメタに誤差が検知された場合は、入射光を増やして入射光の角度差とそれに対応する集光点の位置差の組み合わせを増やして、算出されるカメラ内部パラメタの分散が最も小さくなる組み合わせを選ぶことができるので、カメラ内部パラメタの算出精度が良くなるという利点がある。
本発明においては、平行ビームをカメラに入射させた光を用いて測定しているため、従来技術のように、キャリブレーションパターンの特徴点からの光のカメラレンズの物体側主点への入射角度が同じであっても、キャリブレーションパターンの特徴点とカメラレンズの物体側主点との距離によって、2次元撮像素子上に到達する光の位置がずれるというような不具合が無く、精度よく特徴点の位置を抽出でき、そのため、精度よくカメラ内部パラメタを測定できるという利点がある。
また、計算に用いている角度は、平行ビームに対するカメラの絶対的な角度ではなく、複数点取った角度データの差分値であるので、平行ビーム出射モジュールとカメラの角度関係は厳密に合わせる必要が無く、簡易に測定できるという利点がある。
また、平行ビームをカメラに入射させているので、平行ビーム出射モジュールとカメラの距離関係は厳密に位置合わせする必要がなく、簡易に測定できるという利点がある。
以下、図面を用いて本発明の実施の形態を説明する。
図2は本発明の実施例1のカメラ内部パラメタ測定装置の構成図である。204はカメラのレンズ、205はカメラによって規定されるカメラ座標系、206はカメラの二次元撮像素子、207は二次元撮像素子によって規定されるディジタル画像座標系、208は204のレンズと206の二次元撮像素子で構成されるカメラである。209はカメラの向きを変える回転ステージであり、208のカメラ座標系のY軸を中心に回転するθYC回転ステージである。210はカメラの向きを変える回転ステージであり、208のカメラ座標系のX軸を中心に回転するθXC回転ステージである。211は209のθYC回転ステージと210のθXC回転ステージで構成されるカメラ回転モジュールである。212はカメラに入射する平行ビーム、213は光源となるレーザ、214は213のレーザの空間周波数のノイズを除去して平面波に近づけるためのスペーシャルフィルタ、215は214から出射したレーザ光を広げるためのビームエキスパンダ、216は213のレーザと214のスペーシャルフィルタと215のビームエキスパンダで構成される平行ビーム出射モジュールである。この他に、図2には示していないが、実施例1のカメラ内部パラメタ測定装置は、コンピュータと記憶装置に記憶されたプログラムとからなる計算モジュールを有する。この計算モジュールは、216の平行ビーム出射モジュールから208のカメラに平行ビームを211のカメラ回転モジュールにより入射角度を変えて3回入射させたときの3つの入射角度から得られる3つの角度差のうちの2つと、それに対応する208のカメラ内の206の二次元撮像素子上で集光された3つの集光点から得られる3つの点の位置の差のうちの2つとで、カメラ内部パラメタである、レンズの像側主点と二次元撮像素子の受光面間の距離と、カメラ光軸と二次元撮像素子の交点位置を計算する。
208のカメラは、209のθYC回転ステージと210のθXC回転ステージにより、212の平行ビームの進む方向に対して、いろいろな角度で固定することができ、212の平行ビームを208のカメラのレンズにいろいろな角度で入射させることができるものとする。それぞれの角度のカメラをCDi,i=0,1,2,...と呼ぶこととし、iで角度を関連づけるものとする。
205のカメラ座標系の各軸の決め方は、以下の通りである。原点は、カメラのレンズの物体側主点と像側主点であり、レンズへの光の入射に関する座標の原点は物体側主点であり、レンズからの光の出射に関する座標の原点は像側主点である。ZCDi軸はレンズ光軸と一致し、カメラへの光の入射とは反対方向をプラス方向とする。XCDi軸は、原点を含みZCDi軸と直交した面内にあり、二次元撮像素子の走査方向と平行な軸であり、物体を動かした際に走査方向と同じ方向に動く物体の方向をプラス側とする。YCDi軸は、ZCDi軸とXCDi軸の両方と直交する軸であり、右手系としてYCDi軸のプラス方向を決めることとする。
207のディジタル画像座標系は、1フレームの走査の起点が原点であり、走査方向の軸をuCDi軸とし、もう一方の軸をvCDi軸とする。
上記2つの座標系の関係は、以下のようになる。ディジタル画像座標系上のある点の座標を[uCDi,vCDi]Tとすると、その点をカメラ座標系での座標[XCDi,YCDi,ZCDi]Tで表すと、以下のようになる。
ただし、[u
CO,v
CO]
Tはカメラのレンズの光軸と二次元撮像素子との交点のディジタル画像座標系での座標であり、f
Cはカメラのレンズの像側主点とカメラの二次元撮像素子の受光面までの距離であり、1/k
Cはカメラの二次元撮像素子のピクセルピッチである。
212の平行ビームは、208のカメラCiが211のカメラ回転モジュールにより回転して204のレンズの位置が変わったとしても、平行ビームの伝搬している範囲から204のレンズがはみ出ないように、ビーム幅を広くしておく。
以下、カメラ内部パラメタである、カメラのレンズの光軸と二次元撮像素子との交点のディジタル画像座標系での座標[uCO,vCO]Tと、カメラのレンズの像側主点とカメラの二次元撮像素子の受光面までの距離fCを求める手順を説明する。
1)208のカメラをカメラ回転モジュールにより、ある角度に設定する。このときカメラに付ける項番i=0とし、このカメラをCD0と名付ける。
2)このときのカメラの角度として、カメラ座標系の[YCD0軸を回転軸とする角度,XCD0軸を回転軸にする角度]を測定し、これを[θZXCD0’,θZYCD0’]Tとする。
角度の測定は、たとえば、209のθYC回転ステージの目盛の読みをθYCD0’とし、210のθXC回転ステージの目盛の読みをθXCD0’としたとき、θZXCD0’とθZYCD0’は以下のようになる。
ここで、角度にダッシュ「’」がついているのは、205のカメラ座標系と209のθ
YC回転ステージと210のθ
XC回転ステージが、212の平行ビームの進行方向に対して、その位置関係を何ら保証していないためである。
これについて、図3を用いて説明する。204はカメラのレンズであり、212は204のレンズに入射する入射光すなわち図2に示す平行ビームである。301、302、303はそれぞれカメラ座標系のXCDi軸、YCDi軸、ZCDi軸である。311は301のXCDi軸と303のZCDi軸を含む平面であるXCDi−ZCDi平面であり、312は302のYCDi軸と303のZCDi軸を含む平面であるYCDi−ZCDi平面である。321は212の入射光を311のXCDi−ZCDi平面へ投射した線であり、322は212の入射光を312のYCDi−ZCDi平面へ投射した線である。331は303のZCDi軸から321の線への角度θZXCDiであり、332は303のZCDi軸から322の線への角度θZYCDiである。カメラの項番i=0の場合は、331は角度θZXCD0となり、332は角度θZYCD0となる。すなわち、この図はカメラのレンズへの入射光とカメラ座標系[XCDi,YCDi,ZCDi]Tと、入射光をカメラ座標系のXCDi−ZCDi平面へ投射した線に対するZCDiからの角度θZXCD0と、入射光をカメラ座標系のYCDi−ZCDiへ投射した線に対するZCDiからの角度θZYCD0の関係を示している。ZCDi軸が入射光の方向の逆方向と一致したさいに、θZXCD0’とθZYCD0’が0となるように205のカメラと216の平行ビーム出射モジュールが調整してあれば、θZXCD0’とθZYCD0’はθZXCD0とθZYCD0と一致するが、ここでは、そのような調整をしていないので、一般にθZXCD0’とθZYCD0’はθZXCD0とθZYCD0と一致しない。そのため、現在測っているものとθZXCD0とθZYCD0と区別するために角度にダッシュ「’」をつけてある。
上記では、209のθYC回転ステージの目盛と、210のθXC回転ステージの目盛を読んで、計算によってθZXCD0’とθZYCD0’を測定したが、その他に、図には示さないが、カメラの平らな部分、あるいは、平らな板をカメラに取り付け、角度計を用いて直接θZXCD0’とθZYCD0’を測定してもよい。
3)この状態で216の平行ビーム出射モジュールから出射した212の平行ビームを、204のカメラのレンズに入射させる。
4)このときの206の二次元撮像素子上に集光した点のディジタル画像座標系上の座標を測定し、[uCD0,vCD0]Tとする。
5)208のカメラを211のカメラ回転モジュールにより、別の角度に設定し上記2)〜4)を2回行う。それぞれにカメラにつける項番をi=1、2とし、[θZXCDi’,θZYCDi’]T,i=1,2と[uCDi,vCDi]T,i=1,2を得る。
6)上記5)の結果から、下記の角度差と集光点の位置の差を得る。
7)カメラのレンズの像側主点と二次元撮像素子の受光面間の距離fCと、カメラの二次元撮像素子が規定しているディジタル画像座標系におけるカメラのレンズの光軸と二次元撮像素子との交点の座標[uCO,vCO]Tを、以下の式に従って求める。
カメラレンズがfSinθ系のときは以下のようにして求める。
カメラレンズがfTanθ系のときは以下のようにして求める。
上記手順では、カメラ項番i=0に対するi=1,2という組み合わせにおける角度の差と集光点位置の差を用いているが、i=1に対するi=2,0という組み合わせや、i=2に対する0,1という組み合わせにおける角度差と集光点位置差についても考慮し、それぞれの組み合わせにおける角度差と集光点位置差を使って式2−3、式2−4、式2−5から求められたそれぞれのfCとuCOとvCOの差を少なくすることで計算精度を上げる方法も以下に記述する。
この方法としては、各組み合わせにおけるfCとしuCOとvCOの分散の線形和が最小となるようにすることで行う。これは、fCとuCOとvCOの分散の線形和を評価関数とし、最適化手法を使うことで可能となる。最適化手法としては、たとえば、Levenberg-Marquardt法がある。これは、評価関数の変数を[θZXCDi’,θZYCDi’]T,i=0,1,2と[uCDi,vCDi]T,i=0,1,2とし、評価関数を変数で偏微分した微分係数を用いることによって行われる。
以下、この手順を示す。カメラ内部パラメタである、カメラのレンズの光軸と二次元撮像素子との交点のディジタル画像座標系での座標[uCO,vCO]Tと、カメラのレンズの像側主点とカメラの二次元撮像素子の受光面までの距離fCを求める手順は、上記の手順1)〜5)と同じである。それ以降の手順を以下に述べる。ただし、手順を示す番号には実施例1と区別するために「’」を付けてある。
6’)角度差と集光点の位置の差として下記の3つの組み合わせのものを求める。
7’)それぞれについて、手順7)の式を計算し、カメラのレンズの光軸と二次元画像素子との交点のディジタル画像座標系での座標と、カメラのレンズの像側主点とカメラの二次元画像素子の受光面までの距離を求める。このとき、式2−6、7、8で求まるものをそれぞれ[uCOj,vCOj]T,fCj,j=0,1,2とする。
8’)uCOj、vCOj、fCjの分散σuCO、σvCO、σfCをそれぞれ求め、評価関数Jを以下のように分散の線形和として求める。
ここで、C
u,C
v,C
fは実数であり重みを表す。σ
uCO、σ
vCO、σ
fCはjによって変動するu
COj、v
COj、f
Cjの分散であり、たとえば、σ
uCOについては、σ
uCO=(1/3)*Σ(u
COj)^2−((1/3)*Σu
COj)^2によって求められる。ここで、Σはj=0〜2の和であり、「^2」は2乗である。σ
vCO、σ
fCについても同様である。
変数を要素とするベクトルを以下のように表す。
このとき勾配∇Jとヘッセ行列Hを以下のように求める。
ただし、ξ
(K)はK回の反復後のξであり、H
(K)と∇J
(K)はξ
(K)を代入して得られたヘッセ行列と勾配である。cはξ
(K)を使って求めたJ
(K+1)の値が以前に求めたJの最小値よりも小さいかどうかで変更する実数である。D[H
(K)]は、たとえば、H
(K)の対角要素のみ取り出した対角行列としてもよいし、単位行列に置き換えても良い。
式2−13を用いて、たとえば以下の手順でξを収束させて求める。
8’−1)c←0.0001と置く。ただし、値は0.0001に限ることは無く、適宜小さい値を決めてよい。
8’−2)ξの初期値を与える。これは、たとえば、測定値そのもので良い。
8’−3)そのξを用いて式2−9を計算し、Jを求める。
8’−4)勾配∇Jとヘッセ行列Hを式2−11、式2−12により求める。
8’−5)次の連立1次方程式を解き、Δξを求める。
8’−7)そのξ’を用いて式2−9を計算した値を、J’とする。
8’−8)J’>Jであれば、c←10cと更新して8’−5)へ戻る。
8’−9)そうでなければ次のように更新する。
8’−10)ある小さな値δに対して、|Δξ|<δであれば、ξが収束したと見なし、終了する。そうでなければ、8’−4)に戻る。
以上で求められたξを式2−3に代入し、さらに式2−4を計算すると、[uCO,vCO]T,fCが得られる。
以上の計算は、図示していない計算モジュールによって行う。計算モジュールはコンピュータと記憶装置に記憶されたプログラムによって構成できる。また、そのプログラムの一部または全部に代えてハードウェアを用いてもよい。
本実施例の効果としては、平行ビームをカメラに入射させた光を用いて測定しているため、従来技術のように、キャリブレーションパターンの特徴点からの光のカメラレンズの物体側主点への入射角度が同じであっても、キャリブレーションパターンの特徴点とカメラレンズの物体側主点との距離によって、2次元撮像素子上に到達する光の位置がずれるというような不具合が無く、精度よく特徴点の位置を抽出でき、そのため、精度よくカメラ内部パラメタを測定できるという利点がある。
また、計算に用いている角度は、平行ビームに対するカメラの絶対的な角度ではなく、複数点取った角度データの差分値であるので、平行ビーム出射モジュールとカメラの角度関係は厳密に合わせる必要が無く、簡易に測定できるという利点がある。
また、平行ビームをカメラに入射させているので、平行ビーム出射モジュールとカメラの距離関係は厳密に位置合わせする必要がなく、簡易に測定できるという利点がある。
また、平行ビームは、レーザ光というコヒーレント光を光源として、スペーシャルフィルタを通して得られているため、平行ビームの波面は平面波に近く、カメラのレンズによる集光性能が自然光と比べて非常に良く、カメラの二次元撮像素子上でぼけの少ない像が得られることから、高精度に集光点の座標を得られるという利点がある。
以下、実施例2について述べる。
構成図は、実施例1(図2)と同じである。ただし、図2には示していないが、実施例2のカメラ内部パラメタ測定装置は、コンピュータと記憶装置に記憶されたプログラムとからなる計算モジュールと、記憶装置からなる閾値記憶モジュールを有する。この計算モジュールは、3つの入射角度から得られる3つの角度差のうちの2つと、それに対応する3つの集光点から得られる3つの点の位置の差のうち2つをとる選び方3通りについて、カメラ内部パラメタを算出し、算出されたカメラ内部パラメタの値の分散が前記閾値記憶モジュールに記憶された閾値よりも大きい場合は、これまでとは別の入射角度で前記平行ビーム出射モジュールから前記カメラに平行ビームを入射させたときの入射角度および集光点とこれまでに得られた入射角度および集光点を用いて、3つの入射角度と集光点位置を選び、再度前記の通り、カメラ内部パラメタを算出することとし、算出されたカメラ内部パラメタの値の分散を比較し、算出されたカメラ内部パラメタの分散が前記閾値記憶モジュールに記憶された閾値より小さい場合は、算出されたカメラ内部パラメタの値を用いてカメラ内部パラメタを確定する。
カメラ内部パラメタである、カメラのレンズの光軸と二次元撮像素子との交点のディジタル画像座標系での座標[uCO,vCO]Tと、カメラのレンズの像側主点とカメラの二次元撮像素子の受光面までの距離fCを求める手順は、実施例1の手順1)〜5)と同じである。それ以降の手順を以下に述べる。ただし、手順を示す番号には実施例1と区別するために「”」を付けてある。
6”)角度差と集光点の位置の差として下記の3つの組み合わせのものを求める。
7”)それぞれについて、実施例1の手順7)の式を計算し、カメラのレンズの光軸と二次元撮像素子との交点のディジタル画像座標系での座標と、カメラのレンズの像側主点とカメラの二次元撮像素子の受光面までの距離を求める。このとき、式2−17、18、19で求まるものをそれぞれ[uCOj,vCOj]T,fCj,j=0,1,2とする。
8”)uCOj、vCOj、fCjの分散σuCO、σvCO、σfCをそれぞれ求める。分散を求める方法は8’)で述べたとおりである。これらの分散に対して設定した閾値TσuCO、TσvCO、TσfCとそれぞれの分散を比較して、いずれの分散もそれに対する閾値を超えない場合は、j=0,1,2に対する[uCOj,vCOj]T,fCjのどれかを採用する。あるいは、実施例1に記載の最適化手法であるLevenberg-Marquardt法を用いて式2−9に示す分散の線形和を極小化したときの[uCOj,vCOj]T,fCjを採用する。
上記の分散σuCO、σvCO、σfCを、それらに対する閾値TσuCO、TσvCO、TσfCとそれぞれ比較して、いずれかが越えた場合は、j=0,1,2に対する[uCOj,vCOj]T,fCjの全てを不採用とする。そして、上記[θZXCDi’,θZYCDi’]T,i=0,1,2と[uCDj,vCDj]T,i=0,1,2のどれとも異なる入射角と集光点の位置となるように、新たに平行光をカメラに入射し、それを、[θZXCDi’,θZYCDi’]T,i=3と[uCDi,vCDi]T,i=3とする。
9”)i=0,1,2,3の4つから3つを選ぶ組み合わせ全てについて、以下の角度差と集光点の位置の差を計算し、それぞれについて上記7”)、8”)と同様な計算を行う。
各3つを選ぶ組み合わせごとにu
COj、v
COj、f
Cjのjを変えた場合の変動を示す分散σ
uCO、σ
vCO、σ
fCをそれぞれ求める。分散を求める方法は8’)で述べたとおりである。各組み合わせにおいて、分散σ
uCO、σ
vCO、σ
fCに対してそれぞれ設定した閾値T
σuCO、T
σvCO、T
σiCとこれらの分散を比較し、いずれの分散もそれに対する閾値を超えない場合は、その組み合わせを[u
COj,v
COj]
T,f
Cjを採用するための候補とする。
候補になった組み合わせの中からいずれか1つの組み合わせを選ぶ。あるいは、候補となった組み合わせのうち、分散の最も小さい組み合わせを選ぶ。
その中の3つの[uCOj,vCOj]T,fCjの組から1つを採用する。あるいは、実施例1に記載の最適化手法であるLevenberg-Marquardt法を用いて式2−9に示す分散の線形和を極小化したときの[uCOj,vCOj]T,fCjを採用する。
しかし、上記で[uCOj,vCOj]T,fCjを採用するための組み合わせの候補が得られなかった場合は、いずれの組み合わせも候補とせず、これまで使用した入射角度と集光点位置と異なるように、新たに平行光をカメラに入射し、その時の入射角度と集光点位置を測定する。そして、9”)を、各3つを選ぶ組み合わせごとに得られる分散σuCO、σvCO、σfCが、それらに対して設定した閾値TσuCO、TσvCO、TσiCを超えない組み合わせができるまで、繰り返す。
以上の計算は、図示していない計算モジュールによって行う。計算モジュールはコンピュータと記憶装置に記憶されたプログラムによって構成できる。また、そのプログラムの一部または全部に代えてハードウェアを用いてもよい。また、上記のカメラ内部パラメタの値の分散の閾値は、図示していない閾値記憶モジュールに記憶させておく。閾値記憶モジュールは記憶装置で構成することができる。
図4に、実施例2のフロー図を示す。ステップ401で、入射角度の数Nを3と置く。ステップ402で、N個の異なる角度で光を入射させ、それから得られる3つの角度差からカメラ内部パラメタを算出する(NC2通りある角度の選び方の全てで算出する。)。ステップ403で、NC2通りの選び方によるカメラ内部パラメタの分散を評価する。分散が小さい場合は、ステップ404で、カメラ内部パラメタを確定する。分散が大きい場合は、ステップ405で、さらに異なる角度で光を入射させ、Nに1を加え、ステップ402に戻る。なお、NC2については図4の(注1)に記載したとおりである。
本実施例の効果としては、実施例1に示した効果が得られる。
また、カメラの回転角度を測定するときに発生する誤差や、撮像素子上に集光する集光点の位置を測定するときに発生する誤差や、カメラ内部パラメタを算出するときに発生する計算丸め誤差等、何らかの誤差が発生した場合に、本来分散が0となる3通りの組み合わせから得られるカメラ内部パラメタの分散の大きさが大きくなると、そのカメラ内部パラメタの算出精度に問題があることが分かるため、得られたカメラ内部パラメタの誤差を検知することができるという利点がある。
また、本実施例の効果としては、得られたカメラ内部パラメタに誤差が検知された場合は、入射光を増やして入射光の角度差とそれに対応する集光点の位置差の組み合わせを増やして、算出されるカメラ内部パラメタの分散が最も小さくなる組み合わせを選ぶことができるので、カメラ内部パラメタの算出精度が良くなるという利点がある。
実施例1、2では図2に示すように208のカメラを211のカメラ回転ステージで回転させることによって、カメラへの平行ビームの入射角度を変えているが、これに限定されず、208のカメラと216の平行ビーム出射モジュールの相対的な位置や角度を変えることができる相対位置変更モジュールによって、カメラへの平行ビームの入射角度を変えてもよい。
以上、本発明者によってなされた発明を、前記実施形態に基づき具体的に説明したが、本発明は、前記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
従来のカメラ内部パラメタ測定装置の構成図である。
本発明の実施例の構成図である。
カメラ座標系と入射角度の関係図である。
本発明の実施例2のフロー図である。
符号の説明
101…光源、102…キャリブレーションパターン、103…世界座標系、104…レンズ、105…カメラ座標系、106…二次元撮像素子、107…ディジタル画像座標系、108…カメラCi、204…レンズ、205…カメラ座標系、206…二次元撮像素子、207…ディジタル画像座標系、208…カメラCDi、209…θYC回転ステージ、210…θXC回転ステージ、211…カメラ回転モジュール、212…平行ビーム、213…レーザ、214…スペーシャルフィルタ、215…ビームエキスパンダ、216…平行ビーム出射モジュール