(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
複数のカメラで撮影した映像に対して幾何学的な処理、例えば被写体の三次元計測などを行う場合には、カメラ間の外部パラメータ(回転および並進)を求める外部キャリブレーションを行う必要がある。また、外部パラメータまで求めなくても、それらから成る基礎行列(Fundamental Matrix)を求めることができれば自由視点映像などさまざまなアプリケーションを実現することが可能である。
【0003】
これらの外部パラメータやFundamental Matrixを求めるためのアプローチとして、カメラ間の対応点に基づく手法が一般的である。
図8のように3次元空間中に3次元点pが存在するとし、それらを複数のカメラ(C
0,C
1)で撮影した際の画像平面上における投影点をそれぞれq
0,q
1とした時、これらの間には以下のような関係が成り立つ。
【数1】
【0004】
この時、FはFundamental Matrix(基礎行列)である。この基礎行列Fは(q
0,q
1)のようにある三次元点をそれぞれのカメラで撮影した時の座標値のペアを8組以上用意し、8−point algorithmなどを適用することで求めることが可能である(例えば、非特許文献1参照)。
【0005】
さらに、焦点距離や画像中心といったカメラ固有のパラメータである内部パラメータ(K
0,K
1)と、基本行列E(Essential Matrix)を用いると、式(1)は次のように展開できる。
【数2】
すなわち、
【数3】
であり、内部パラメータが既知の場合は、上記対応点の組からE行列を求めることができる。
【0006】
さらに、このE行列は特異値分解を行うことで外部パラメータに分解することができる(例えば、非特許文献2参照)。
【0007】
また、この基本行列Eは、各カメラ座標系における点pを表すベクトルをp
0,p
1とした時、以下の式を満たす。
【数4】
【0008】
この時、カメラが透視投影カメラの場合には、
【数5】
である。この時、E行列は(p
0,p
1)のペアあるいは(q
0,q
1)のペアに対して8−point algorithmを適用することで求めることが可能である(例えば、非特許文献1参照)。
【0009】
以上のことから、複数カメラ画像間得られる対応点の組から、Fundamental Matrixおよび外部パラメータを求めることができることがわかる。
【0010】
なお、本明細書において、画像とは、静止画像、または動画像を構成する1フレーム分の画像のことをいう。また映像とは、動画像と同じ意味であり、一連の画像の集合である。
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、
図9に示すようにカメラC
0のFOV(field of view:視野)とカメラC
1のFOVとの間に共有視野が存在しない場合、あるいは
図10に示すように共有する部分があるが、その共有する部分に対応点が存在しない場合(共有する部分が一様な地面であるため対応が曖昧であったり、その場所に立ち入ることが出来ずに特徴点となるものを設置できない場合など)は、前述したような対応点を用いた手法が利用できないという問題がある。
【0013】
本発明は、このような事情に鑑みてなされたもので、観測可能な対応点を持たないカメラ間の外部パラメータを求めるキャリブレーションを行うことができるカメラキャリブレーション装置、カメラキャリブレーション方法及びカメラキャリブレーションプログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明の一態様は、第1のカメラと第2のカメラとの外部パラメータを求めるキャリブレーションを行うカメラキャリブレーション装置であって、第1のカメラまたは第2のカメラと、第3のカメラとの画像の間における対応点の対を求める対応点算出部と、前記対応点の対と、前記第1または第2のカメラの内部パラメータと、前記第3のカメラの内部パラメータとから第1の基本行列を求める第1の基本行列算出部と、前記基本行列を分解して、前記第3のカメラの位置ベクトルを取得する位置ベクトル取得部と、前記対応点の対と、前記位置ベクトルとから前記第1のカメラと前記第2のカメラ間の第2の基本行列を求める第2の基本行列算出部と、前記第2の基本行列を分解して、前記第1のカメラと前記第2のカメラの外部パラメータを算出する外部パラメータ算出部とを備えるカメラキャリブレーション装置である。
【0015】
本発明の一態様は、第1のカメラと第2のカメラとの基礎行列を求めるキャリブレーションを行うカメラキャリブレーション装置であって、第1のカメラまたは第2のカメラと、第3のカメラとの画像の間における対応点の対を求める対応点算出部と、前記対応点の対から第1の基礎行列を求める第1の基礎行列算出部と、前記第1の基礎行列を用いて前記第3のカメラのエピポールを求めるエピポール算出部と、前記エピポールと、前記対応点の対とから前記第1のカメラと前記第2のカメラとの間の第2の基礎行列を求める第2の基礎行列算出部とを備えるカメラキャリブレーション装置である。
【0016】
本発明の一態様は、第1のカメラと第2のカメラとの外部パラメータを求めるキャリブレーションを行うカメラキャリブレーション装置が行うカメラキャリブレーション方法であって、第1のカメラまたは第2のカメラと、第3のカメラとの画像の間における対応点の対を求める対応点算出ステップと、前記対応点の対と、前記第1または第2のカメラの内部パラメータと、前記第3のカメラの内部パラメータとから第1の基本行列を求める第1の基本行列算出ステップと、前記基本行列を分解して、前記第3のカメラの位置ベクトルを取得する位置ベクトル取得ステップと、前記対応点の対と、前記位置ベクトルとから前記第1のカメラと前記第2のカメラ間の第2の基本行列を求める第2の基本行列算出ステップと、前記第2の基本行列を分解して、前記第1のカメラと前記第2のカメラの外部パラメータを算出する外部パラメータ算出ステップとを有するカメラキャリブレーション方法である。
【0017】
本発明の一態様は、第1のカメラと第2のカメラとの基礎行列を求めるキャリブレーションを行うカメラキャリブレーション装置が行うカメラキャリブレーション方法であって、第1のカメラまたは第2のカメラと、第3のカメラとの画像の間における対応点の対を求める対応点算出ステップと、前記対応点の対から第1の基礎行列を求める第1の基礎行列算出ステップと、前記第1の基礎行列を用いて前記第3のカメラのエピポールを求めるエピポール算出ステップと、前記エピポールと、前記対応点の対とから前記第1のカメラと前記第2のカメラとの間の第2の基礎行列を求める第2の基礎行列算出ステップとを有するカメラキャリブレーション方法である。
【0018】
本発明の一態様は、コンピュータを、前記カメラキャリブレーション装置として機能させるためのカメラキャリブレーションプログラムである。
【発明の効果】
【0019】
本発明によれば、観測可能な対応点を持たないカメラ間の外部パラメータを求めるキャリブレーションを行うことができるという効果が得られる。
【発明を実施するための形態】
【0021】
<第1実施形態>
以下、図面を参照して、本発明の第1実施形態によるカメラキャリブレーション装置を説明する。第1実施形態は、2つのカメラ間の外部パラメータを求めるものである。第1実施形態では簡単のため2台のカメラC
0,C
1を用い、かつ
図10に示すようにカメラC
0,C
1が共通する視野を持つがその共通視野には対応する3次元点が存在しない。この時、カメラC
0,C
1の内部パラメータ(焦点距離、画像中心、アスペクト比、スキュー歪み)は例えば、参考文献1に記載の手法を利用することで既に得られているものとする。また、2つのカメラC
0,C
1は固定されている。
【0022】
参考文献1:Zhang, Zhengyou. "A flexible new technique for camera calibration." Pattern Analysis and Machine Intelligence, IEEE Transactions on 22.11 (2000): 1330-1334.
【0023】
また、カメラC
0,C
1と比較して広い視野を持つ新たに利用するカメラ(例えば、全天球カメラ)をXとし、この内部パラメータは既知である。なお、全天球カメラの場合は画像のサイズを内部パラメータとして、それらは既知である。カメラXはNx視点において撮影されたとする。なお、カメラXは広い視野を持つため、カメラC
0,C
1と視野を共有することが期待できる。また、カメラC
0とカメラX,カメラC
1とカメラXの共有視野には
図4、
図5に示すように対応点が存在することを想定する。
【0024】
図1は同実施形態によるカメラキャリブレーション装置の構成を示すブロック図である。この図において、符号1は、外部から3つの画像(カメラC
0の画像、カメラC
1の画像、カメラXの画像)を入力する入力部である。ここでは、カメラXが全天球カメラであるものとして説明する。符号2は、入力した3つの画像から仮想対応点を取得する仮想対応点取得部である。符号3は、仮想対応点からカメラC
0、C
1間の外部パラメータを計算する外部パラメータ計算部である。
図1に示す各処理部の詳細な説明は後述する。
【0025】
次に、
図1に示すカメラキャリブレーション装置における全体の処理の動作について説明する。まず、入力部1は、カメラC
0,C
1および全天球カメラXで撮影した映像を取得する。3つのカメラの撮影タイミングは一致していることが望ましい。次に、仮想対応点取得部2は、入力した映像からカメラC
0およびカメラC
1間における対応点を求める。最後に、外部パラメータ計算部3は、それらの対応点を元にしてカメラC
0,C
1間の外部パラメータを計算して出力する。
【0026】
次に、
図1に示す各処理部の詳細な動作を説明する。はじめに、入力部1について説明する。入力部1は、カメラC
0,C
1,全天球カメラXのそれぞれから画像を入力し、これらの画像を内部に保持する。入力部1は、必要に応じて、内部に保持している3つの画像のそれぞれを仮想対応点取得部2へ出力する。
【0027】
次に、仮想対応点取得部2について説明する。仮想対応取得部2は、入力部1から3つの画像を入力する。仮想対応点取得部2は、カメラC
0,C
1およびカメラXで撮影した画像から、カメラC
0−C
1間の対応点情報を求める。
【0028】
なお、カメラC
0−C
1間の対応点情報とは、ある空間中の点がカメラC
0およびC
1に投影された時の座標値のペアであり、例えば
図3のようにテーブルで表すことができる。
図3に示すようなテーブルは、対応点を一意に識別する対応点IDと、カメラC
0が撮影した画像上における座標値、カメラC
1が撮影し他画像上における座標値とがある。そして、仮想対応点取得部2は、カメラC
0−C
1間の対応点情報を外部パラメータ計算部3へ出力する。
【0029】
次に、外部パラメータ計算部3について説明する。外部パラメータ計算部3は、仮想対応点取得部2からカメラC
0−C
1間の対応点情報を入力する。そして、外部パラメータ計算部3は、カメラC
0−C
1間の対応点情報からC
0−C
1間の外部パラメータを計算し、得られたカメラC
0−C
1間の外部パラメータを出力する。
【0030】
ここで、
図2を参照して、
図1に示す仮想対応点取得部2と外部パラメータ計算部3の処理の動作を説明する。
図2は、
図1に示す仮想対応点取得部2と外部パラメータ計算部3の処理の動作を示すフローチャートである。
【0031】
まず、仮想対応点取得部2は、カメラCi(i=0,1)について、カメラCiとカメラXで撮影した画像の間で対応点のペアを求める(ステップS1)。すなわち、
図4に示すように、カメラXとカメラCiで撮影した画像上において対応点のペアを求める。なお、対応点の探索は手動で行ってもよいし、SIFT画像特徴量の類似度に基づくマッチング(例えば、参考文献2参照)を行ってもよい。自動で対応点の組を求める場合には誤対応が発生する場合があるが、これらに対してはRANSACアルゴリズムを適用することで誤対応を排除するようにしてもよい。
【0032】
参考文献2:Lowe, David G. "Distinctive image features from scale-invariant keypoints." International journal of computer vision 60.2 (2004): 91-110.
【0033】
次に、仮想対応点取得部2は、ステップS1で求めた対応点のペアからE行列を求める(ステップS2)。すなわち、対応点のペア、カメラCiの内部パラメータとカメラXの内部パラメータを用いてE行列を求める。E行列を求める方法は特に制限しない。例えば8−point algorithmが代表的だが、他に5つの対応点のペアから求める5−point algorithm(例えば参考文献3参照)も知られており、こちらを用いてもよい。
【0034】
参考文献3:Nister, David. "An efficient solution to the five-point relative pose problem." Pattern Analysis and Machine Intelligence, IEEE Transactions on 26.6 (2004): 756-770.
【0035】
次に、仮想対応点取得部2は、求めたE行列を分解してカメラXの位置ベクトルを求める(ステップS3)。E行列は特異値分解することでカメラXの位置ベクトルを取得することができる。この位置ベクトルの取得処理は、例えば、非特許文献2に記載の公知の処理を適用可能であるため、ここでは、詳細な説明を省略する。この時、カメラXはカメラCiの視野になくても求めることが可能である。
【0036】
次に、この位置ベクトルと各カメラの内部パラメータを用いて、位置ベクトルの各カメラの画像平面における座標を求める。位置ベクトルをxとすると、この投影座標qは以下のように求めることができる。
q=Ki×x
【0037】
次に、仮想対応点取得部2は、ステップS1からステップS3を全てのカメラCiについて行う(ステップS4)。この時点で、カメラXの位置が投影された点が全てのカメラCiにとっての共通の対応点となる。
【0038】
次に、仮想対応点取得部2は、ステップS1からステップS4を全てのカメラXについて行う(ステップS5)。この時点で、全てのカメラCiにとっての共通の対応点のペアがNx個得られたことになる。
【0039】
次に、外部パラメータ計算部3は、得られたカメラC
0−C
1間の対応点情報(カメラC0の画像上におけるカメラXの座標値、カメラC1の画像上におけるカメラXの座標値)から、カメラC
0−C
1間のE行列を求める(ステップS6)。E行列はステップS2でも用いた8−point algorithmなどを利用して求めることができる。
【0040】
次に、外部パラメータ計算部3は、ステップS6で求めたE行列を分解してカメラCi間の外部パラメータを求めて出力する(ステップS7)。E行列は特異値分解することで外部パラメータを得ることができる。この特異値分解の処理は、例えば、非特許文献2に記載の公知の処理を提供可能であるため、ここでは詳細な説明を省略する。
【0041】
以上説明した処理の動作によって、カメラCi(i=0,1)間の外部パラメータを求めることができる。
【0042】
<第2実施形態>
次に、本発明の第2実施形態によるカメラキャリブレーション装置を説明する。第2の実施形態は、Fundamental Matrix(基礎行列)を求めるものである。第2実施形態では簡単のため2台のカメラC
0,C
1を用い、かつ
図10に示すようにカメラC
0,C
1が共通する視野を持つがその共通する視野には対応する3次元点が存在しない。この時、カメラC
0,C
1の内部パラメータは参考文献1に記載の手法を利用することで既に得られている。また、カメラC
0,C
1は固定されている。
【0043】
また、カメラC
0,C
1と比較して広い視野を持つ新たに利用するカメラ(例えば、全天球カメラ)をXとし、この内部パラメータは既知である。なお、全天球カメラの場合は画像のサイズを内部パラメータとし、それらは未知である。カメラXはNx視点において撮影される。なお、カメラXは広い視野を持つため、カメラC
0,C
1と視野を共有することが期待できる。また、カメラC
0−X,カメラC
1−Xの共有視野には
図4、
図5に示すように対応点が存在することを想定する。
【0044】
図6は同実施形態によるカメラキャリブレーション装置の構成を示すブロック図である。この図において、符号1は、外部から3つの画像(カメラC
0の画像、カメラC
1の画像、カメラXの画像)を入力する入力部である。ここでは、カメラXが全天球カメラであるものとして説明する。符号2は、入力した3つの画像から仮想対応点を取得する仮想対応点取得部である。符号3は、仮想対応点からFundamental Matrix(基礎行列)を求めるFundamental Matrix計算部である。
図6に示す各処理部の詳細な説明は後述する。
【0045】
次に、
図6に示すカメラキャリブレーション装置における全体の処理の動作について説明する。まず、入力部5は、カメラC
0,C
1および全天球カメラXで撮影した映像を取得する。次に、仮想対応点取得部6は、それらの映像からカメラC
0およびC
1間における対応点を求める。最後に、Fundamental Matrix計算部7は、それらの対応点を元にしてカメラC
0,C
1間のFundamental Matrixを計算して出力する。
【0046】
次に、
図6に示す各処理部の詳細な動作を説明する。はじめに、入力部5について説明する。入力部5は、カメラC
0,C
1,全天球カメラXのそれぞれから画像を入力し、これらの画像を内部に保持する。入力部1は、必要に応じて、内部に保持している3つの画像のそれぞれを仮想対応点取得部2へ出力する。
【0047】
次に、仮想対応点取得部6について説明する。仮想対応点取得部6は、入力部5から3つの画像を入力する。仮想対応点取得部6は、カメラC
0,C
1およびカメラXで撮影した画像から、カメラC
0−C
1間の対応点情報を求める。
【0048】
なお、カメラC
0−C
1間の対応点情報とは、ある空間中の点がカメラC
0およびC
1に投影された時の座標値のペアであり、例えば
図3のようにテーブルで表すことができる。
図3に示すようなテーブルは、対応点を一意に識別する対応点IDと、カメラC
0が撮影した画像上における座標値、カメラC
1が撮影した画像上における座標値とがある。そして、仮想対応点取得部6は、カメラC
0−C
1間の対応点情報をFundamental Matrix計算部7へ出力する。
【0049】
次に、Fundamental Matrix計算部7は、仮想対応点取得部6からカメラC
0−C
1間の対応点情報を入力する。そして、Fundamental Matrix計算部7は、カメラC
0−C
1間の対応点情報からカメラC
0−C
1間のFundamental Matrixを計算し、得られたカメラC
0−C
1間のFundamental Matrix(基礎行列)を出力する。
【0050】
ここで、
図7を参照して、
図6に示す仮想対応点取得部2とFundamental Matrix計算部7の処理の動作を説明する。
図7は、
図6に示す仮想対応点取得部2とFundamental Matrix計算部7の処理の動作を示すフローチャートである。
【0051】
まず、仮想対応点取得部6は、カメラCi(i=0,1)について、カメラCiとカメラXで撮影した画像の間で対応点のペアを求める(ステップS11)。
【0052】
次に、仮想対応点取得部6は、ステップS11で求めた対応点のペアからF行列を求める(ステップS12)。F行列を求める方法は特に制限しない。例えば8−point algorithmが代表的だが、他に5つの対応点のペアから求める5−point algorithm(例えば、参考文献3参照)も知られており、こちらを用いてもよい。
【0053】
次に、仮想対応点取得部6は、求めたF行列を用いてカメラXのエピポールを求める(ステップS13)。カメラXのエピポールとはカメラCiの画像平面におけるカメラXの投影点を意味する。カメラXのエピポールexは以下の式を満たす。
【数6】
【0054】
この時、エピポールexはF行列のright null spaceとして求められる(例えば、非特許文献2参照)。なお、カメラXのエピポールはカメラXがカメラCiの視野になくても求めることが可能である。
【0055】
次に、仮想対応点取得部6は、ステップS11からステップS13を全てのカメラCiについて行う(ステップS14)。この時点で、カメラXのエピポールが全てのカメラCiにとっての共通の対応点となる。
【0056】
次に、仮想対応点取得部6は、ステップS11からステップS14を全てのカメラXについて行う(ステップS15)。この時点で、全てのカメラCiにとっての共通の対応点のペアがNx個得られたことになる。
【0057】
次に、Fundamental Matrix計算部7は、入力として与えられた対応点のペアから、カメラCi間のF行列を求める(ステップS16)。Fundamental Matrixは対応点のペアに対して8−point algorithmを適用することで求めることができる。
【0058】
以上説明した処理の動作によって、カメラCi(i=0,1)間のFundamental Matrix(F行列:基礎行列)を求めることができる。
【0059】
なお、前述した説明ではカメラC
0−C
1が観測可能な対応点を持たない場合に適用可能であるが、観測可能な対応点を保つ場合にも適用可能である。
【0060】
以上説明したように、カメラのキャリブレーションを行う際に、エピポーラ幾何を応用し、2つのカメラにおいて共有視野があるにも関わらず対応点が作れない場合、または/および、共有視野を持たない場合に、2つのカメラと共有視野を持ち、かつ、対応点が作ることができる第3のカメラを用いて、2つのカメラについてキャリブレーションを行う。第3のカメラとして全天球カメラに代表される非常に広い視野を持つカメラを更に利用する。そして、新たに利用する第3のカメラの位置そのものを対応点として利用する。
【0061】
前述した実施形態におけるカメラキャリブレーション装置の全部または一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されるものであってもよい。
【0062】
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。