JP2010239515A - カメラキャリブレーションの算出方法 - Google Patents
カメラキャリブレーションの算出方法 Download PDFInfo
- Publication number
- JP2010239515A JP2010239515A JP2009086970A JP2009086970A JP2010239515A JP 2010239515 A JP2010239515 A JP 2010239515A JP 2009086970 A JP2009086970 A JP 2009086970A JP 2009086970 A JP2009086970 A JP 2009086970A JP 2010239515 A JP2010239515 A JP 2010239515A
- Authority
- JP
- Japan
- Prior art keywords
- point
- points
- angle
- camera
- line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Image Processing (AREA)
- Studio Devices (AREA)
Abstract
【課題】カメラの内部パラメータが所与の場合に、4つの特徴点の座標情報に基づいてカメラの外部パラメータの推定を行うカメラキャリブレーション手法を提供する。
【解決手段】ワールド座標系とカメラ座標系が同一の場合に、ワールド座標系における4つの特徴点が作る2つの角度を基にして、カメラ座標系での各特徴点の座標位置を推定する。視線ベクトルAを延ばした直線で形成される距離Tを8分割して、8分割した各地点のうち特徴点Aが存在する座標位置に最も近い地点がいずれかを推定する。この推定は、8分割した各地点を基点にして視線ベクトルB、C、D上の点のうち辺AB、辺BC、辺DAの長さと等しくなる点B´、C´、D´をそれぞれ求め、該基点、点B´、C´、D´で作られる角度B´、角度D´の角度B、角度Dとの差異を各地点で求め、特徴点A、B、C、Dに最も近似する8分割した地点のうちの一つの点、およびその点に対応するB´、C´、D´を求める。
【選択図】図4
【解決手段】ワールド座標系とカメラ座標系が同一の場合に、ワールド座標系における4つの特徴点が作る2つの角度を基にして、カメラ座標系での各特徴点の座標位置を推定する。視線ベクトルAを延ばした直線で形成される距離Tを8分割して、8分割した各地点のうち特徴点Aが存在する座標位置に最も近い地点がいずれかを推定する。この推定は、8分割した各地点を基点にして視線ベクトルB、C、D上の点のうち辺AB、辺BC、辺DAの長さと等しくなる点B´、C´、D´をそれぞれ求め、該基点、点B´、C´、D´で作られる角度B´、角度D´の角度B、角度Dとの差異を各地点で求め、特徴点A、B、C、Dに最も近似する8分割した地点のうちの一つの点、およびその点に対応するB´、C´、D´を求める。
【選択図】図4
Description
本発明は、カメラキャリブレーションの算出方法に関する。より詳細には、本発明は、内部パラメータが既知の場合に、少なくとも4つの特徴点が存在すれば、同一平面上、非同一平面上の区別なくカメラの外部パラメータの推定を行うことができる方法に関する。
まず、カメラキャリブレーションの概要および既存のカメラキャリブレーションについて説明する。
まず、3次元空間を「ワールド座標」とし、そのワールド座標上に絶対的な空間上の位置XYZが複数存在し、その位置をスクリーンに投影したスクリーン座標での位置UVが存在するとする。ワールド座標上の位置XYZとスクリーン座標での位置UVはそれぞれ1対1で対応しており、これらが複数(少なくとも5または6個)存在すれば、カメラの姿勢(3×3行列)と移動ベクトル(ワールド座標上でのカメラ位置)を推定することができる。ここで、カメラの姿勢と移動ベクトルは「外部パラメータ」と呼ばれる。また、ワールド座標上の位置XYZとしてサンプリングしたそれぞれの点を「特徴点」と呼ぶことにする。特徴点は、カメラ情報を推定するために使用されるが、特徴点は、ワールド座標において同一平面上にある場合もあれば、非同一平面上にある場合もある。
図1は、従来の、カメラから見たときのスクリーン座標での特徴点位置を示す図であり、図1の座標は右手系を示し、スクリーン手前に向かってZ軸が伸びている。
図1では、カメラから見たときのスクリーン座標上での特徴点が8つ与えられている。この例において、8つの特徴点は、それぞれワールド座標上の位置XYZとスクリーン上に投影された位置UVが確定しているものとする。カメラの手前に投影面があり、投影された座標値を(U1, V1)、(U2, V2)、〜(U8, V8)とし、対応するワールド座標を(Wx1, Wy1, Wz1)、(Wx2, Wy2, Wz2)、〜(Wx8, Wy8, Wz8)とする。
また、ワールド座標からスクリーン座標への変換は、
ワールド座標 → ビュー座標 → 透視座標 → スクリーン座標
の順番にて行われる。座標間のそれぞれの変換は、4×4行列にて表すことができる。ここで、ビュー座標は、視点を中心とした座標系のことであり、透視座標は、3次元空間を2次元空間に投影する座標系のことである。本明細書の説明において、ビュー座標から透視座標、スクリーン座標に変換する行列はあらかじめ算出できているものとする。
ワールド座標 → ビュー座標 → 透視座標 → スクリーン座標
の順番にて行われる。座標間のそれぞれの変換は、4×4行列にて表すことができる。ここで、ビュー座標は、視点を中心とした座標系のことであり、透視座標は、3次元空間を2次元空間に投影する座標系のことである。本明細書の説明において、ビュー座標から透視座標、スクリーン座標に変換する行列はあらかじめ算出できているものとする。
特に、ビュー座標から透視座標変換に必要な要素としては、スクリーンサイズ、カメラの視野角度、カメラから投影面までの距離、ゆがみ係数、が存在する。これらはカメラの「内部パラメータ」と呼ばれる。
このうち、ワールド座標からビュー座標に変換する行列を求める手法をカメラキャリブレーションと呼ぶ(厳密に言うと、内部パラメータを推定する部分もカメラキャリブレーションに含まれるが、今回の発明ではこの部分は既に計算できているものとして考えるため、本明細書の説明においてはその部分を省略する)。
ワールド座標上のカメラの外部パラメータとしては3×3の姿勢行列(回転行列)と移動ベクトル(ワールド座標上の位置)が存在する。カメラでの姿勢をあらわすXYZ軸を、CX(CX.x, CX.y, CX.z)、CY(CYx, CY.y, CY.z)、CZ(CZ.x, CZ.y, CZ.z)の正規直交基底として表した場合、以下の3×3行列にて回転行列を表すことができる。
また、カメラの移動ベクトルをV(Vx, Vy, Vz)とすると、カメラの姿勢と移動ベクトルより、ワールド座標からビュー座標の変換行列は以下の4×4行列にてあらわすことができる。
図2は、上記で説明したワールド座標上の8つの特徴点とカメラの関係を示す図である。図2では、カメラの前に投影面(スクリーン座標)があり、8つの特徴点を上述した変換によってスクリーン座標に投影した図が示されている。
カメラキャリブレーションを求める手法としては、従来から様々な手法(例えば、DLT、Tsai、Zhang、マーカーを使用したカメラキャリブレーション)が知られている。
DLT手法(非特許文献1参照)は、三次元空間上の特徴点とスクリーンに投影された点を6つ以上与えることにより、内部パラメータ・外部パラメータの算出を行い、カメラキャリブレーションを行う手法である。DLT手法では、同一平面上に特徴点が存在する場合は正しい推定を行うことができず、また、計算後に視線方向(光軸方向)に誤差が出る可能性が高いため、補正を行う必要がある。
Tsai手法(非特許文献2参照)は、三次元空間上の特徴点とスクリーンに投影された点を6つ以上与えることにより、内部パラメータ・外部パラメータの算出を行い、カメラキャリブレーションを行う手法である。Tsai手法では、同一平面上に特徴点が存在する場合に使用できる。また、非同一平面上に特徴点がある場合でも推定できるが、その場合には同一平面上にしか特徴点がない場合に比べて大きな誤差が出てしまう。このため、同一平面上か非同一平面上のいずれに特徴点が存在するか、をあらかじめ判定しておく必要があり、また、計算結果の精度はそれほど高くはなく、計算後に視線方向(光軸方向)に誤差が出る可能性が高いため、補正を行う必要がある。
Zhang手法は、同一平面上の格子状のマーカーよりカメラキャリブレーションを行い、内部パラメータ・外部パラメータの算出を行う手法である。Zhang手法は、カメラキャリブレーションの精度が高いが、同一平面上に特徴点が格子状に存在している必要がある。また、カメラの内部パラメータの推定にて利用される。
また、マーカーを使用したカメラキャリブレーションの手法は、特定の条件を満たす左右非対称の模様の書かれた正方形のマーカーを登録してパターンマッチングによりマーカーを識別し、これよりカメラキャリブレーションを行う手法である。この手法は、同一平面限定で適用可能であるという制限があり、また、あらかじめマーカーを登録しておく必要がある。
DLT Method(Young-Hoo Kwon 著)、http://www.kwon3d.com/theory/dlt/dlt.html
Tsai's Camera Model(Steven Shafer, Takeo Kanade 著)、http://www-2.cs.cmu.edu/~rgw/TsaiDesc.html
マーカー追跡に基づく拡張現実感システムとそのキャリブレーション(加藤博一,Mark Billinghurst,浅野浩一,橘啓八郎 著)、http://intron.kz.tsukuba.ac.jp/tvrsj/4.4/kato/p-99_VRSJ4_4.pdf
任意視点画像に適応したカメラキャリブレーションの研究(久保智裕 著)、http://www433.elec.ryukoku.ac.jp/Houbun/YOUSHI/2003/2003_master_thesis_kubo.pdf
しかしながら、従来技術は、特徴点が同一平面上に存在する場合のみ適用可能なもの、非同一平面上に存在する場合のみ適用可能なもの、あるいは両方の場合に適用できるが上述したような不都合も同時に内包しているという課題がある。
このような課題を解決するため、本発明の一実施形態に係る方法は、ワールド座標系(world coordinate system)とカメラ座標系(camera coordinate system)の原点、X軸、Y軸およびZ軸が同一の場合に、ワールド座標系における4つの特徴点が作る2つの角度を基にして、カメラ座標系での各特徴点の座標位置を推定することによってカメラのキャリブレーションを行う方法であることを特徴とする。この方法はコンピュータによって実行される。また、この方法は、(a)ワールド座標系における4つの特徴点A、B、C、Dを選択するステップ(401)と、(b)選択した特徴点を結んだ辺AB、辺BC、辺CD、辺DAの長さを計算するステップ(402)と、(c)辺ABおよび辺BCが作る角度B、並びに辺CDおよび辺DAが作る角度Dを計算するステップ(403)であって、角度Bおよび角度Dは0度より大きく90度以下であるステップと、(d)ワールド座標系での辺ABをX軸とする場合の回転行列Rを計算するステップ(404)と、(e)原点と、4つの特徴点A、B、C、Dをスクリーン座標系に変換した変換後の各点とを結ぶ4つの視線ベクトルA、B、C、Dを計算するステップ(405)と、(f)視線ベクトルAを延ばした直線で形成される距離Tを8分割して、該8分割した各地点のうち特徴点Aが存在する座標位置に最も近い地点がいずれかを推定するステップ(406)であって、該推定は、8分割した各地点のうち原点に最も近い地点から始め、各地点を基点にして視線ベクトルB、D上の点のうち辺AB、辺DAの長さと等しくなる点B´、D´をそれぞれ求め、点B´と視線ベクトルC上の点を結ぶ点のうち辺BCの長さと等しくなる点C´を求め、該基点、点B´、C´、D´で作られる角度B´、角度D´の角度B、角度Dとの差異を8分割した各地点で求め、特徴点A、B、C、Dに最も近似する8分割した地点のうちの一つの基点、および該一つの基点に対応するB´、C´、D´を求めるステップと、(g)距離Tを2分の1に収束した距離を求めるステップであって、収束された新たな距離Tは、推定された地点から距離Tの4分の1の距離だけ原点方向および視線ベクトルAを延ばした方向に離れた地点で形成されるステップ(407)と、(h)新たな距離Tが予め定められた値を下回る(408)まで、ステップ(f)および(g)を繰返すステップと、を含むことを特徴とする。さらに、本発明に係る方法は、新たな距離Tが予め定められた値を下回った後に、(i)ワールド座標系からカメラ座標系への変換行列Nを求めるステップ(409)であって、該変換行列Nは、回転行列Rおよびカメラの姿勢と位置の情報に基づいて計算されるステップと、(j)変換行列Nに基づいて、カメラの外部パラメータであるカメラの回転行列およびカメラの移動ベクトルを計算するステップ(410)と、(k)カメラの外部パラメータの誤差補正を行うステップ(411)と、を含むことを特徴とする。
また、他の実施形態に係る方法は、ワールド座標系とカメラ座標系の原点、X軸、Y軸およびZ軸が同一の場合に、ワールド座標系における4つの特徴点が作る2つの角度を基にして、カメラ座標系での各特徴点の座標位置を推定する方法であることを特徴とする。この方法はコンピュータによって実行される。また、この方法は、(a)ワールド座標系における4つの特徴点A、B、C、Dを選択するステップ(401)と、(b)選択した特徴点を結んだ辺AB、辺BC、辺CD、辺DAの長さを計算するステップ(402)と、(c)辺ABおよび辺BCが作る角度B、並びに辺CDおよび辺DAが作る角度Dを計算するステップ(403)であって、角度Bおよび角度Dは0度より大きく90度以下であるステップと、(d)原点と、4つの特徴点A、B、C、Dをスクリーン座標系に変換した変換後の各点とを結ぶ4つの視線ベクトルA、B、C、Dを計算するステップ(405)と、(e)視線ベクトルAを延ばした直線で形成される距離Tを8分割して、該8分割した各地点のうち特徴点Aが存在する座標位置に最も近い地点がいずれかを推定するステップ(406)であって、該推定は、8分割した各地点のうち原点に最も近い地点から始め、各地点を基点にして視線ベクトルB、D上の点のうち辺AB、辺DAの長さと等しくなる点B´、D´をそれぞれ求め、点B´と視線ベクトルC上の点を結ぶ点のうち辺BCの長さと等しくなる点C´を求め、該基点、点B´、C´、D´で作られる角度B´、角度D´の角度B、角度Dとの差異を前記8分割した各地点で求め、特徴点A、B、C、Dに最も近似する8分割した地点のうちの一つの基点、および該一つの基点に対応するB´、C´、D´を求めるステップと、(f)距離Tを2分の1に収束した距離を求めるステップであって、収束された新たな距離Tは、推定された地点から距離Tの4分の1の距離だけ原点方向および視線ベクトルAを延ばした方向に離れた地点で形成されるステップ(407)と、(g)新たな距離Tが予め定められた値を下回る(408)まで、ステップ(e)および(f)を繰返すステップと、を含むことを特徴とする。
本発明に係るカメラキャリブレーション手法によれば、内部パラメータは既に計算済みであるという前提条件に立つと、少なくとも4つの特徴点が存在すれば、同一平面上、非同一平面上の区別なくカメラの外部パラメータの推定を行うことができる。また、4つの特徴点のみでカメラの外部パラメータを推定するため、従来の計算負荷を大幅に軽減できる。さらに、既存の特徴点情報にて補正を行うため、計算結果の精度も確保することができる。
図3は、本発明のカメラキャリブレーション算出方法を行うためのシステムのハードウェア構成の一例を示すブロック図である。このシステムは、装置300およびカメラ301を含んでおり、両者は有線/無線媒体302を介して接続されている。
カメラ301は、CCD(Charge Coupled Devices)やCMOS(Complementary Metal Oxide Semiconductor)などを搭載した一般的なカメラで構わない。また、カメラ301は、撮像した映像データを一時的に記憶しておくためのメモリ(例えば、フラッシュメモリ)を内蔵し、その映像データを装置300に送信する機能を有する。
装置300は、制御部311、主記憶部312、補助記憶部313、入出力インターフェース(I/F)部314、及び出力表示部315を含み、これらの構成要素はバス316によって相互に接続されており、制御部311によって各構成要素312〜315は統括して制御される。なお、この装置300は、一般的なパーソナルコンピュータ(PC)などのコンピュータであって構わない。
制御部311は、中央処理装置(CPU)を含んでおり、上述したように各構成要素312〜315の制御やデータの演算を行い、また、補助記憶部313に格納されている各種プログラムを主記憶部312に読み出して実行する。なお、制御部311は、3Dグラフィックスの表示を行うために必要な演算処理を行うGPU(Graphics Processing Unit)を有していても良い。
主記憶部312は、メインメモリとも呼ばれ、装置300に入力されたデータ、コンピュータ実行可能な命令及び当該命令による演算処理後のデータなどを記憶する。補助記憶部313は、ハードディスク(HDD)などに代表される記憶装置であり、データやプログラムを長期的に保存する際に使用される。つまり、制御部311がプログラムを実行してデータの演算を行う場合には、補助記憶部313から必要なデータだけ主記憶部312に読み出し、演算結果のデータを長期的に記憶・保存するには制御部311が補助記憶部313に演算結果のデータを書き込む。
入出力インターフェース(I/F)部314は、カメラ301との間でデータ送受信を行うインターフェースであり、有線/無線媒体302に接続する。出力表示部315は、カメラ301によって撮像した映像データを表示するディスプレイなどの表示装置であり、本発明に係るカメラキャリブレーションの詳細処理も同時に表示可能である。
図4は、本発明に係るカメラキャリブレーション手法の全体的な流れを示す図である。以後、図4を参照しながら、本発明の実施形態に係るカメラキャリブレーション手法を使用して、カメラの姿勢(3×3の回転行列)と移動ベクトル(ワールド座標上の位置)を計算する手順を詳細に説明する。以下の説明では、n個のサンプリングポイントが存在する場合、ワールド座標上の特徴点位置を(Wx1,Wy1,Wz1)、(Wx2,Wy2,Wz2)、〜(Wxn,Wyn,Wzn)とし、対応するスクリーン上の位置を(U1,V1)、(U2,V2)、〜(Un,Vn)とする。
ステップS401では、ワールド座標における4つの特徴点A、B、C、Dを、以下の条件、
0°< ∠B ≦90°
0°< ∠D ≦90°
を満たすようにランダムに選択する。図5a、bは、ワールド座標上の4つの特徴点A、B、C、Dをランダムに選択した例を示すが、図5bのように、4つの特徴点A、B、C、Dを結んだそれぞれの辺が交差していてもかまわない。
0°< ∠B ≦90°
0°< ∠D ≦90°
を満たすようにランダムに選択する。図5a、bは、ワールド座標上の4つの特徴点A、B、C、Dをランダムに選択した例を示すが、図5bのように、4つの特徴点A、B、C、Dを結んだそれぞれの辺が交差していてもかまわない。
この場合の4組分のワールド座標値とスクリーン座標値が、以下に説明するカメラキャリブレーション算出手法にて使用される。4つの特徴点A、B、C、Dのワールド座標上の空間の位置XYZは、それぞれ、w[0]、w[1]、w[2]、w[3]で表され、対応するスクリーン座標上の位置XYは、それぞれ、s[0]、s[1]、s[2]、s[3]で表されるものとする。
ステップS402では、ワールド座標上での各辺の長さを計算する。AB、BC、CD、DAの長さは、それぞれ以下の計算式のようになる。
ステップS403では、ワールド座標上の特徴点B、Dにおける角度を計算する。∠Bを求めるには、まず、辺AB、BCを正規化した上で、内積を計算する。そうすることで∠Bをcos値で求めることができる。
同様にして、辺AD、CDを正規化した上で、内積を計算する。そして、∠Dのcos値を求める。
ステップS404では、ワールド座標上の辺ABをX軸方向と仮定したときの回転行列Rを計算する。以下の式で「cross」はベクトルの外積を求める関数である。
その上で、vX,vY,vZをベクトルを正規化する関数「normalize」を使用して、
とし、3×3の回転行列Rを以下のように計算する。
ステップS405では、ビュー座標とワールド座標が等しいものとして、かつビュー座標を姿勢ベクトル=単位行列、視点位置=(0, 0, 0)として、視点位置(0, 0, 0)から4つのスクリーン座標上の特徴点を結ぶ視線ベクトルを計算する。図6はステップS405の処理内容の概念図を表している。本ステップでは、既知のカメラ内部パラメータより、透視座標からビュー座標への変換行列(ビュー座標から透視座標に変換する行列の逆行列)をあらかじめ求めておき、このときの方向ベクトルを正規化することで視線方向のベクトルを求めることができる。それぞれの正規化されたベクトルをvSDir[0]、vSDir[1]、vSDir[2]、vSDir[3]とする。それぞれのベクトルを伸ばした位置に、対象となる特徴点A、B、C、Dのワールド座標値が存在することになる。
ステップS406では、4つの特徴点のうちひとつを選択し、その特徴点に対応する視線ベクトルを延長した先のどの位置にワールド座標上の特徴点が存在するかを推定する。ここでは、まず特徴点Aのワールド座標上での位置を求めることにする。スクリーン座標でのAの視線ベクトルvSDir[0]を伸ばした先には必ず特徴点Aのワールド座標位置が存在する。本発明に係る方法では、以下に説明するように、Aの視線ベクトルを十分な距離伸ばしてその距離を8分割することを繰り返しながら、最適な位置を収束させる。また、走査する視点からの距離をminTからmaxTまで変化させるとし、例えば、初期値は、
minT = 5.0
maxT = 99999.0
などの十分小さい値と十分大きい値を設定する。そして、
dT = (maxT - minT) / 8.0
とし、視点位置(0, 0, 0)からの距離tは、minTから始まり、dTずつ増加させてmaxTまで走査していくものとする。
minT = 5.0
maxT = 99999.0
などの十分小さい値と十分大きい値を設定する。そして、
dT = (maxT - minT) / 8.0
とし、視点位置(0, 0, 0)からの距離tは、minTから始まり、dTずつ増加させてmaxTまで走査していくものとする。
次に、図8を参照しながら、ステップS406で行われる処理の詳細を説明する。
ステップS801では、視線ベクトルAを伸ばした先のワールド座標上の仮の位置を計算する。スクリーン座標上の点Aを伸ばした先の仮のワールド座標上の点は、仮のワールド座標上の点の位置をvAとし、視点からの距離をtとした場合に、以下の式によって計算される。
vA = vSDir[0] * t
上述したように、距離tは、minTから始まるので、t = minTとする。
vA = vSDir[0] * t
上述したように、距離tは、minTから始まるので、t = minTとする。
ステップS802では、tがmaxTであるか否かを判定する。tがmaxTに到達した場合には、本ステップの処理を終了する。
ステップS803では、点vAから視線ベクトルB上に、距離ABの拘束条件で下ろした位置を算出する。図7に示したように、視線ベクトルB(vSDir[1])で表される直線に対して点vAから下ろした垂線の足をpとする。また、点vAから垂線の足pまでの距離をhとし、ステップS402において既に求めているワールド座標上のABの距離と距離hとを比較する。
h>ABの関係が成立する場合は、視点位置(0, 0, 0)から見た仮のワールド座標上の点の位置vAが実際のワールド座標上の点Aの位置よりも遠くにあることを意味するので、この段階で計算を中断し、ステップS407での収束計算にてmaxTの値をさらに小さいものにしてからステップS801の処理からやり直す。
h=ABの場合は、vAがワールド座標上の特徴点Aの位置であり、かつ垂線の足pがワールド座標上の特徴点Bの位置と仮定できる。
また、h<ABの場合は、直線B上に仮の点vAからの距離がABとなる位置を計算して当てはめる。
計算された直線B上の点B´1とvAの距離、およびB´2とvAの距離は、共にABの長さと等しくなる。
ステップS804では、点vAから視線ベクトルD上に、距離ADの拘束条件で下ろした位置を算出する。ステップS803と同様に、視線ベクトルD(vSDir[3])で表される直線に対して点vAから下ろした垂線の足をp1とする。また、点vAから垂線の足p1までの距離をh1として、ADの距離と距離h1とを比較する。h1<ADの場合は、直線D上にてvAとの距離がADとなる位置を計算し、以下の式のように、D´1、D´2とする。
ステップS805では、点B´から視線ベクトルC上に、距離BCの拘束条件で下ろした位置を算出する。点B´は、ステップS803において求めたB´1またはB´2である。
図9に示したように、点B´から視線ベクトルC(vSDir[2])で表される直線に下ろした垂線の足をp2とする。点B´とp2間の距離h2と、ステップS402において既に求めているワールド座標上のBCの距離とを対比する。なお、本ステップでは、h2がBCの距離より小さい値であることが条件となる(大きい値の場合は、ステップS803で既に処理が中断している)。
h2=BCとなる場合は、垂線の足p2がワールド座標上の点Cの位置と仮定できる。一方、h2<BCの場合は、直線C上で点B´からの距離がBCとなる位置を計算して当てはめる。
計算された直線C上の点C´1とB´の距離、およびC´2とB´の距離は、共にBCの長さと等しくなる。
ステップS806では、上記ステップまでで求めた仮の点ABC(vA、B´、C´)が作る角度を計算する。上記のステップまでで以下の点が計算できている。
スクリーン上の点Aを伸ばしたベクトルvSDir[0]上の点vA、
スクリーン上の点Bを伸ばしたベクトルvSDir[1]上の点B´1、B´2、
スクリーン上の点Cを伸ばしたベクトルvSDir[2]上の点C´1、C´2。
スクリーン上の点Bを伸ばしたベクトルvSDir[1]上の点B´1、B´2、
スクリーン上の点Cを伸ばしたベクトルvSDir[2]上の点C´1、C´2。
このため、最大で以下の4つの組み合わせが存在するので、その組み合わせより、仮の点Bでの角度を計算する。
(vA,B´1,C´1)、
(vA,B´1,C´2)、
(vA,B´2,C´1)、
(vA,B´2,C´2)
(vA,B´1,C´1)、
(vA,B´1,C´2)、
(vA,B´2,C´1)、
(vA,B´2,C´2)
4つの組み合わせの内積値より、仮の点Bをはさむ辺の角度(cos値)を計算し、それぞれ、angle[0]、angle[1]、angle[2]、angle[3]とする。ステップS403での計算より、ワールド座標上のオリジナルの点Bでの角度はangleBであるため、
で求めた4つの絶対値のうちゼロ値(0.0)に最も近いものを採用し、仮の点B、Cの位置とする(これをB´、C´とする)。また、このときのv[i]の最小値を誤差sValとして格納する。なお、誤差sValの初期値は9999.0などの大きな値を予め代入しておく。
ステップS807では、上記で求めた仮の点ADCが作る角度を計算する。ステップS806において、点B´、C´は固定されたので、ステップS804で計算された直線D上の点D´1、D´2を使って、仮の点ADCで作られる点Dでの角度を計算する。ここで、以下の2つの組み合わせに分かれる。
(vA,D´1,C´)、
(vA,D´2,C´)
2つの組み合わせの内積値より、仮の点Dをはさむ辺の角度(cos値)を計算し、angle[4]、angle[5]とする。ステップS403での計算より、ワールド座標上のオリジナルの点Dでの角度はangleDであるため、
(vA,D´1,C´)、
(vA,D´2,C´)
2つの組み合わせの内積値より、仮の点Dをはさむ辺の角度(cos値)を計算し、angle[4]、angle[5]とする。ステップS403での計算より、ワールド座標上のオリジナルの点Dでの角度はangleDであるため、
で求めた2つの絶対値のうちゼロ値(0.0)に最も近いものを採用し、仮のDの位置とする(これをD´とする)。また、このときのv[i]の最小値をステップS806で格納した誤差sValに加算する(sVal = sVal + v[i]の最小値)。
このときの誤差値であるsValが完全に0.0になったとき、そのときのvA、B´、C´、D´が求めるグローバル座標上での座標位置になる。だが、ピンポイントで誤差が収束することは少ないため、誤差が収束するように上記ステップを反復させることになる。
ステップS808では、視点からの距離tと誤差、求まった座標位置A、B´、C´、D´を配列に格納する。すなわち、tA[i]に距離tを、sValA[i]に誤差の値sValを、Apos[i]、Bpos[i]、Cpos[i]、Dpos[i]にワールド座標値を格納していく。ここで、iは配列の添え字でminTからmaxTの距離を8分割したため0〜8の値が入る。
最後に、ステップS809では、tにdTを加算してステップS802に戻る。tがmaxTになるまで図8の処理を繰り返す。
再び、図4のステップS407に戻る。ステップS407では、収束計算を行う。図8で説明した各ステップの処理の結果、sValA[i]に誤差の値が格納されているので、この配列のうちで、一番値が小さくなるiの位置を求める。以後、この誤差の配列にて谷となる部分を狭めていく処理を繰り返すことにより、誤差が0.0に近づくように収束させることになる。
ここで、図10に示したように、谷の部分での視点位置からの距離tA[i]を中心にminT、maxTを更新する。すなわち、一番値が小さくなるiの位置に相当する距離tA[i]と、従来のminT、maxTの間の距離の4分の1の距離とを各々減算、加算して、新たにminT、maxTとする。なお、新たなminTが初期値より小さくなる場合は初期値にし、新たなmaxTが初期値より大きくなる場合は初期値にする。新たなminT、maxTの間の距離を8等分した値をdTとし、距離tを新たなminTとする。その後、図8のステップS801に処理に戻る。
なお、maxTとminTの差が1.0より小さくなれば(ステップS408)、そのときのsValA[i]が最終的な誤差値であり、このときの特徴点位置がApos[i]、Bpos[i]、Cpos[i]、Dpos[i]と確定される。本発明によれば、距離は1回の処理のループにて2分割されていくため、例えば、初期値minT = 5.0、maxT = 99999.0の場合は14回の繰り返し処理にて最小の位置で誤差は収束する。
ステップS409では、ワールド座標からビュー座標に変換する行列を求める。ステップS406〜407およびステップS801〜S809にて求められた3次元上の座標値Apos[i]、Bpos[i]、Cpos[i]、Dpos[i]を改めてw2[0]、w2[1]、w2[2]、w2[3]とおく。このw2[i]は、カメラを姿勢ベクトル=単位行列、視点位置=(0, 0, 0)としたときの座標値である。これらの座標値w2[0]、w2[1]、w2[2]、w2[3]を実際のワールド座標位置w[0]、w[1]、w[2]、w[3]の座標系に変換するときの変換行列からカメラの姿勢と移動ベクトルが算出することができる。回転行列は以下の式にて計算することができる。
ここで、4×4行列にてオリジナルの姿勢と位置を含めたカメラ情報を以下のようにする。
同様に、推定された回転行列Rと位置w2[0]より、推定後の4×4行列は以下のようになる。
ここで、N=inv(orgM)*Mを計算する(invは、4×4行列の逆行列を計算する関数)。計算された4×4行列Nが、ワールド座標からビュー座標への変換行列に相当する。
ステップS410では、ワールド座標からビュー座標に変換する行列Nからカメラの回転行列と移動ベクトルを逆算する。
ここで求まったrMatがカメラの回転行列、tVecがカメラの移動ベクトルとなる。
ステップS411では、ステップS410にて推定されたカメラの外部パラメータの誤差を補正する。上述した各ステップの処理にて、カメラの外部パラメータ(回転行列、移動ベクトル)が求まるが、特徴点4点のみの計算であるため、誤差が発生している可能性がある。また、図11に示すように、カメラキャリブレーションでは解が2つ以上存在するパターンもあり、その場合は軸が大きく反転することになる。カメラ位置と姿勢が原点を中心に反対に位置し、かつ、カメラ姿勢の軸が反転している場合は、ワールド座標上の特徴点とカメラの投影面に投影した座標とは、共に正しく対応している関係になる。本発明では、この現象の回避策として、1つ前のカメラ姿勢でのX軸とY軸と、新しいカメラ姿勢でのX軸とY軸との傾きを調べ、傾きが小さい方を採用する手法をとることができる。
ステップS411では、ステップS410にて推定されたカメラの外部パラメータの誤差を補正する。上述した各ステップの処理にて、カメラの外部パラメータ(回転行列、移動ベクトル)が求まるが、特徴点4点のみの計算であるため、誤差が発生している可能性がある。また、図11に示すように、カメラキャリブレーションでは解が2つ以上存在するパターンもあり、その場合は軸が大きく反転することになる。カメラ位置と姿勢が原点を中心に反対に位置し、かつ、カメラ姿勢の軸が反転している場合は、ワールド座標上の特徴点とカメラの投影面に投影した座標とは、共に正しく対応している関係になる。本発明では、この現象の回避策として、1つ前のカメラ姿勢でのX軸とY軸と、新しいカメラ姿勢でのX軸とY軸との傾きを調べ、傾きが小さい方を採用する手法をとることができる。
一方、誤差の補正処理は、上記で求めたカメラの外部パラメータ(回転行列、移動ベクトル)よりワールド座標からビュー座標への変換行列を計算し、その行列を使って特徴点のワールド座標位置(Wxn, Wyn, Wzn)をスクリーン座標値に変換する。このときのスクリーン上の点の位置を(U'n, V'n)とし、オリジナルのスクリーン上の点(Un, Vn)との距離の二乗和を評価のための誤差とする。
この二乗和の値Fが0.0に近いほど推定されたカメラの外部パラメータの精度が高いことを示す。
また、本発明では、この誤差値が大きい場合は、スクリーン上の位置(Un, Vn)に微小のノイズを加えて揺らすことにより収束を早める、という手段をとることができる。スクリーン上の特徴点位置にノイズを加える理由は、スクリーン上の特徴点は特徴点検出などですでにノイズが加わった状態で与えられる場合があるためである。
このような誤差の補正処理を加えたカメラキャリブレーションを図12及び図13のフローチャートで示す。
本発明は、一般的なカメラキャリブレーションの算出方法として利用することができる。より詳細に言えば、本発明は、拡張現実(AR:Augmented Reality)の分野に利用することができる。
ARとは、カメラで撮影した動画に対してコンピュータで生成した三次元空間をオーバーラップさせることにより、現実空間に人工的な付加価値をつけることができる表現手法である。ARを利用することにより、カメラを通して見た市街地の個々の建物に対して、その建物に入居している会社や店舗情報をオーバーラップして表示したり(タグ付け)、待ち合わせ場所までの道順を仮想的なラインを引いて導いたり、あるいは、室内のインテリアの配置や壁の装飾を仮想的に生成・配置して、実画像を通しながら仕上がりを確認する、などの応用を実現することができる。
本発明に係るカメラキャリブレーションは、ARでのカメラの位置と姿勢を推定する部分にて使用することが可能である。従来技術のようにカメラキャリブレーションの精度が悪いと、3次元空間を構築するときにずれやカメラのぶれが生じてしまうという不都合が発生するが、本発明によりそのような従来技術の不都合を解消することができる。
300 装置
301 カメラ
302 有線/無線媒体
311 制御部
312 主記憶部
313 補助記憶部
314 入出力I/F
315 出力表示部
301 カメラ
302 有線/無線媒体
311 制御部
312 主記憶部
313 補助記憶部
314 入出力I/F
315 出力表示部
Claims (6)
- ワールド座標系(world coordinate system)とカメラ座標系(camera coordinate system)の原点、X軸、Y軸およびZ軸が同一の場合に、ワールド座標系における4つの特徴点が作る2つの角度を基にして、カメラ座標系での各特徴点の座標位置を推定することによってカメラのキャリブレーションを行う方法であって、
コンピュータが実行する前記方法は、
(a)ワールド座標系における4つの特徴点A、B、C、Dを選択するステップ(401)と、
(b)前記選択した特徴点を結んだ辺AB、辺BC、辺CD、辺DAの長さを計算するステップ(402)と、
(c)前記辺ABおよび辺BCが作る角度B、並びに前記辺CDおよび辺DAが作る角度Dを計算するステップ(403)であって、角度Bおよび角度Dは0度より大きく90度以下であるステップと、
(d)ワールド座標系での辺ABをX軸とする場合の回転行列Rを計算するステップ(404)と、
(e)前記原点と、前記4つの特徴点A、B、C、Dをスクリーン座標系に変換した変換後の各点とを結ぶ4つの視線ベクトルA、B、C、Dを計算するステップ(405)と、
(f)前記視線ベクトルAを延ばした直線で形成される距離Tを8分割して、該8分割した各地点のうち前記特徴点Aが存在する座標位置に最も近い地点がいずれかを推定するステップ(406)であって、該推定は、前記8分割した各地点のうち原点に最も近い地点から始め、各地点を基点にして視線ベクトルB、D上の点のうち前記辺AB、辺DAの長さと等しくなる点B´、D´をそれぞれ求め、点B´と視線ベクトルC上の点を結ぶ点のうち前記辺BCの長さと等しくなる点C´を求め、該基点、点B´、C´、D´で作られる角度B´、角度D´の前記角度B、角度Dとの差異を前記8分割した各地点で求め、特徴点A、B、C、Dに最も近似する8分割した地点のうちの一つの基点、および該一つの基点に対応するB´、C´、D´を求めるステップと、
(g)前記距離Tを2分の1に収束した距離を求めるステップであって、前記収束された新たな距離Tは、前記推定された地点から距離Tの4分の1の距離だけ原点方向および視線ベクトルAを延ばした方向に離れた地点で形成されるステップ(407)と、
(h)前記新たな距離Tが予め定められた値を下回る(408)まで、ステップ(f)および(g)を繰返すステップと
を含み、
前記新たな距離Tが予め定められた値を下回った後に、
(i)ワールド座標系からカメラ座標系への変換行列Nを求めるステップ(409)であって、該変換行列Nは、前記回転行列Rおよびカメラの姿勢と位置の情報に基づいて計算されるステップと、
(j)前記変換行列Nに基づいて、カメラの外部パラメータであるカメラの回転行列およびカメラの移動ベクトルを計算するステップ(410)と、
(k)前記カメラの外部パラメータの誤差補正を行うステップ(411)と
をさらに含むことを特徴とする方法。 - 前記ステップ(f)は、
(f1)前記8分割された視線ベクトルA上の地点の一つの基点を点vAとするステップ(801)と、
(f2)前記点vAからの長さが前記辺ABの長さと等しくなる視線ベクトルB上の1つまたは複数の点B´を求めるステップ(803)と、
(f3)前記点vAからの長さが前記辺DAの長さと等しくなる視線ベクトルD上の1つまたは複数の点D´を求めるステップ(804)と、
(f4)前記点B´からの長さが前記辺BCの長さと等しくなる視線ベクトルC上の1つまたは複数の点C´を求めるステップ(805)と、
(f5)前記点vA、点B´、点C´によって作られる1つまたは複数の角度B´を求め、前記角度Bに最も近似する前記点vA、点B´、点C´の組み合わせを決定するステップであって、該決定された組み合わせでの角度B´と前記角度Bの差異を第1の差異値として記憶しておくステップ(806)と、
(f6)前記点vA、点D´、前記一つに決定された点C´によって作られる1つまたは複数の角度D´を求め、前記角度Dに最も近似する前記点vA、該点C´、点D´の組み合わせを決定するステップであって、該決定された組み合わせでの角度D´と前記角度Dの差異である第2の差異値を前記第1の差異値に加算して合計値を算出するステップ(807)と、
(f7)前記一つに決定された点vA、点B´、点C´、点D´の組み合わせ、並びに前記合計値を格納するステップと
をさらに含むことを特徴とする請求項1に記載の方法。 - 前記合計値が値ゼロに等しい場合、前記一つに決定された点vA、点B´、点C´、点D´が4つの特徴点A、B、C、Dにそれぞれ対応することを特徴とする請求項2に記載の方法。
- ワールド座標系(world coordinate system)とカメラ座標系(camera coordinate system)の原点、X軸、Y軸およびZ軸が同一の場合に、ワールド座標系における4つの特徴点が作る2つの角度を基にして、カメラ座標系での各特徴点の座標位置を推定する方法であって、
コンピュータが実行する前記方法は、
(a)ワールド座標系における4つの特徴点A、B、C、Dを選択するステップ(401)と、
(b)前記選択した特徴点を結んだ辺AB、辺BC、辺CD、辺DAの長さを計算するステップ(402)と、
(c)前記辺ABおよび辺BCが作る角度B、並びに前記辺CDおよび辺DAが作る角度Dを計算するステップ(403)であって、角度Bおよび角度Dは0度より大きく90度以下であるステップと、
(d)前記原点と、前記4つの特徴点A、B、C、Dをスクリーン座標系に変換した変換後の各点とを結ぶ4つの視線ベクトルA、B、C、Dを計算するステップ(405)と、
(e)前記視線ベクトルAを延ばした直線で形成される距離Tを8分割して、該8分割した各地点のうち前記特徴点Aが存在する座標位置に最も近い地点がいずれかを推定するステップ(406)であって、該推定は、前記8分割した各地点のうち原点に最も近い地点から始め、各地点を基点にして視線ベクトルB、D上の点のうち前記辺AB、辺DAの長さと等しくなる点B´、D´をそれぞれ求め、点B´と視線ベクトルC上の点を結ぶ点のうち前記辺BCの長さと等しくなる点C´を求め、該基点、点B´、C´、D´で作られる角度B´、角度D´の前記角度B、角度Dとの差異を前記8分割した各地点で求め、特徴点A、B、C、Dに最も近似する8分割した地点のうちの一つの基点、および該一つの基点に対応するB´、C´、D´を求めるステップと、
(f)前記距離Tを2分の1に収束した距離を求めるステップであって、前記収束された新たな距離Tは、前記推定された地点から距離Tの4分の1の距離だけ原点方向および視線ベクトルAを延ばした方向に離れた地点で形成されるステップ(407)と、
(g)前記新たな距離Tが予め定められた値を下回る(408)まで、ステップ(e)および(f)を繰返すステップと
を含むことを特徴とする方法。 - 前記ステップ(e)は、
(e1)前記8分割された視線ベクトルA上の地点の一つの基点を点vAとするステップ(801)と、
(e2)前記点vAからの長さが前記辺ABの長さと等しくなる視線ベクトルB上の1つまたは複数の点B´を求めるステップ(803)と、
(e3)前記点vAからの長さが前記辺DAの長さと等しくなる視線ベクトルD上の1つまたは複数の点D´を求めるステップ(804)と、
(e4)前記点B´からの長さが前記辺BCの長さと等しくなる視線ベクトルC上の1つまたは複数の点C´を求めるステップ(805)と、
(e5)前記点vA、点B´、点C´によって作られる1つまたは複数の角度B´を求め、前記角度Bに最も近似する前記点vA、点B´、点C´の組み合わせを決定するステップであって、該決定された組み合わせでの角度B´と前記角度Bの差異を第1の差異値として記憶しておくステップ(806)と、
(e6)前記点vA、点D´、前記一つに決定された点C´によって作られる1つまたは複数の角度D´を求め、前記角度Dに最も近似する前記点vA、該点C´、点D´の組み合わせを決定するステップであって、該決定された組み合わせでの角度D´と前記角度Dの差異である第2の差異値を前記第1の差異値に加算して合計値を算出するステップ(807)と、
(e7)前記一つに決定された点vA、点B´、点C´、点D´の組み合わせ、並びに前記合計値を格納するステップと
をさらに含むことを特徴とする請求項4に記載の方法。 - 前記合計値が値ゼロに等しい場合、前記一つに決定された点vA、点B´、点C´、点D´が4つの特徴点A、B、C、Dにそれぞれ対応することを特徴とする請求項5に記載の方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009086970A JP2010239515A (ja) | 2009-03-31 | 2009-03-31 | カメラキャリブレーションの算出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009086970A JP2010239515A (ja) | 2009-03-31 | 2009-03-31 | カメラキャリブレーションの算出方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010239515A true JP2010239515A (ja) | 2010-10-21 |
Family
ID=43093438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009086970A Pending JP2010239515A (ja) | 2009-03-31 | 2009-03-31 | カメラキャリブレーションの算出方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010239515A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012103213A (ja) * | 2010-11-12 | 2012-05-31 | Fujitsu Ltd | 画像処理プログラムおよび画像処理装置 |
CN102980528A (zh) * | 2012-11-21 | 2013-03-20 | 上海交通大学 | 无位姿约束线激光单目视觉三维测量传感器参数标定方法 |
JP2016197780A (ja) * | 2015-04-02 | 2016-11-24 | 日本電信電話株式会社 | 画像データ処理方法、画像データ処理装置および画像データ処理プログラム |
KR20180105875A (ko) * | 2017-03-16 | 2018-10-01 | 한국전자통신연구원 | 단일 영상을 이용한 카메라 캘리브레이션 방법 및 이를 위한 장치 |
CN114062265A (zh) * | 2021-11-11 | 2022-02-18 | 易思维(杭州)科技有限公司 | 一种用于视觉系统的支撑结构稳定性的评估方法 |
JP2023174456A (ja) * | 2022-05-27 | 2023-12-07 | 3アイ インコーポレイテッド | イメージ内の座標間の実際距離を算出する方法及び装置 |
-
2009
- 2009-03-31 JP JP2009086970A patent/JP2010239515A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012103213A (ja) * | 2010-11-12 | 2012-05-31 | Fujitsu Ltd | 画像処理プログラムおよび画像処理装置 |
CN102980528A (zh) * | 2012-11-21 | 2013-03-20 | 上海交通大学 | 无位姿约束线激光单目视觉三维测量传感器参数标定方法 |
JP2016197780A (ja) * | 2015-04-02 | 2016-11-24 | 日本電信電話株式会社 | 画像データ処理方法、画像データ処理装置および画像データ処理プログラム |
KR20180105875A (ko) * | 2017-03-16 | 2018-10-01 | 한국전자통신연구원 | 단일 영상을 이용한 카메라 캘리브레이션 방법 및 이를 위한 장치 |
KR102354299B1 (ko) | 2017-03-16 | 2022-01-24 | 한국전자통신연구원 | 단일 영상을 이용한 카메라 캘리브레이션 방법 및 이를 위한 장치 |
CN114062265A (zh) * | 2021-11-11 | 2022-02-18 | 易思维(杭州)科技有限公司 | 一种用于视觉系统的支撑结构稳定性的评估方法 |
JP2023174456A (ja) * | 2022-05-27 | 2023-12-07 | 3アイ インコーポレイテッド | イメージ内の座標間の実際距離を算出する方法及び装置 |
JP7575805B2 (ja) | 2022-05-27 | 2024-10-30 | 3アイ インコーポレイテッド | イメージ内の座標間の実際距離を算出する方法及び装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5248806B2 (ja) | 情報処理装置、情報処理方法 | |
JP6775776B2 (ja) | 自由視点移動表示装置 | |
JP5013961B2 (ja) | 位置姿勢計測装置及びその制御方法 | |
JP5538667B2 (ja) | 位置姿勢計測装置及びその制御方法 | |
JP5624394B2 (ja) | 位置姿勢計測装置、その計測処理方法及びプログラム | |
JP4708752B2 (ja) | 情報処理方法および装置 | |
US10157478B2 (en) | Enabling use of three-dimensional locations of features with two-dimensional images | |
JP6338021B2 (ja) | 画像処理装置、画像処理方法および画像処理プログラム | |
US20050253870A1 (en) | Marker placement information estimating method and information processing device | |
US10930008B2 (en) | Information processing apparatus, information processing method, and program for deriving a position orientation of an image pickup apparatus using features detected from an image | |
KR101410273B1 (ko) | 증강현실 응용을 위한 환경 모델링 방법 및 장치 | |
US20150062123A1 (en) | Augmented reality (ar) annotation computer system and computer-readable medium and method for creating an annotated 3d graphics model | |
US20120120113A1 (en) | Method and apparatus for visualizing 2D product images integrated in a real-world environment | |
CN111161336B (zh) | 三维重建方法、三维重建装置和计算机可读存储介质 | |
JP2010154920A (ja) | 3次元形状データ処理装置、3次元形状データ処理方法及びプログラム | |
WO2020031950A1 (ja) | 計測校正装置、計測校正方法、及びプログラム | |
JP2005326274A (ja) | 配置情報推定方法および情報処理装置 | |
JP2010239515A (ja) | カメラキャリブレーションの算出方法 | |
EP3633606B1 (en) | Information processing device, information processing method, and program | |
WO2019093457A1 (ja) | 情報処理装置、情報処理方法及びプログラム | |
CN113744340A (zh) | 用轴向视点偏移的非中心相机模型校准相机并计算点投影 | |
JP6922348B2 (ja) | 情報処理装置、方法、及びプログラム | |
JP2000155831A (ja) | 画像合成方法、画像合成装置、画像合成プログラムを記録した記録媒体 | |
JP6228239B2 (ja) | プリミティブの組を用いてデータをレジストレーションする方法 | |
JP6405539B2 (ja) | 多視点画像に対するラベル情報の処理装置及びそのラベル情報の処理方法 |