(本開示の基礎となった知見)
本発明者は、背景技術の欄において記載したカメラ校正に関し、以下の問題が生じることを見出した。
自動車の安全運転支援システムや、移動ロボットの遠隔操作システム、あるいは不審者等を検出する監視カメラシステムなどにおいて、ユーザーおよびシステムが判断や制御を行うためには、システムの周辺の画像と3次元座標の情報が必要となる。特に人や車などの監視対象が移動する場合や、さらに自動車、ロボットなどのシステム自身が移動する場合、より広い視野角の画像と3次元座標を取得が重要である。
画像と3次元座標を取得する手段としては、2台のカメラを互いに異なる視点に視野が重複するように配置して画像を取得し、画像間の対応点を算出して、対応点とあらかじめ求めておいたカメラの位置や向きの情報を用いて、対応点の3次元座標を計算する、いわゆるステレオ視が一般的である。
ステレオ視では、2台のカメラの視点を結ぶ直線上およびその近傍において、2視点からの方向の差である視差が0または0に近くなるために3次元座標を計算できない。特に、視野角が180度以上のカメラを用いる場合、視差が0になるために3次元座標を計算できない領域が視野内に必ず含まれる。そのため、広視野角の画像と3次元座標を取得する手法として、180度より狭い視野角のステレオ視を構成する複数のカメラを1組としてこれを複数組用いる方法や、180度以上の魚眼レンズを有するカメラを3台以上用いる方法が開示されている。
(3眼以上の複眼カメラの例)
特許文献1には、全方向(球状)の3次元座標の取得を目的として、同一部材上に視野角が180度より狭い複数のカメラを設置し、これを1組のステレオカメラとして、多面体の各面に1組ずつ設置した構成の装置が開示されている(図16A)。
特許文献2、3には、広範囲の画像と3次元座標をより少ないカメラで取得できる方法が開示されている。特許文献2には、視野内を高速に移動する物体を追尾すること、または、複数の目標物を同時に追尾することを目的として、視野角の広い魚眼レンズを有するカメラC1、C2、C3を用いた装置が開示されている(図16B)。特許文献2の技術では、魚眼レンズを有するカメラで、広視野角の魚眼画像を取得するとともに、各魚眼画像から移動物を検出して各移動物を通る直線方程式を算出し、各移動物について複数の直線方程式を1組とする直線方程式群を求めることで、3次元座標を決定する。3台以上のカメラを用いることで、ある2台のカメラでは3次元座標を計測できない領域を、他のカメラで補うことができるため、180度の視野角(半球状)で3次元座標を計算できる。
(校正技術の従来例)
複眼カメラで撮影した画像から、ステレオ視により被写体の3次元座標を取得するためには、各カメラのカメラパラメタセットが必要である。カメラパラメタセットとは、撮影空間内のある点の3次元座標と撮影によって得られた画像上での当該点の2次元座標(画素座標)との関係を表す、カメラのモデルと当該モデルに応じた複数のパラメタである。このカメラパラメタセットを算出することをカメラ校正と呼ぶ。
より詳細には、カメラパラメタセットは、カメラの撮影空間を基準として定められた世界座標系と、カメラを基準として定められたカメラ座標系との位置関係を表す外部パラメタセットと、カメラ座標系における被写体の3次元座標と当該カメラで撮影した画像上での当該被写体の位置との関係を表す内部パラメタセットとの2つのカメラパラメタセットで構成される。
非特許文献1は、点の3次元座標と画素座標の組(基準点)を複数組用意し、これを入力として、カメラパラメタを用いて3次元座標を画像上に投影した点と、対応する画素座標との距離(再投影誤差)の総和を最小化するカメラパラメタセットを算出する、カメラ校正技術を開示している。
基準点の3次元座標と画素座標との組を得るために、特定模様の校正指標が一般的に用いられる。校正指標の例を、図17に示す。図17の例は、格子状の模様を箱状の被写体の内側に一定間隔で配置している。格子点(角)を基準点とし、格子点の3次元座標の設計値もしくは設置後に計測した値を保持しておく。さらに、格子点をカメラで撮影し、格子点の画素座標を画像処理で推定することで、3次元座標と画素座標の組の情報を得ることができる。このような校正指標を用いる校正技術は、校正指標などの設備が必要になる反面、高精度な校正ができることから、カメラ製造後の工場での校正などで有効である。
一方、カメラ校正は、製造時の校正以外に、装置が稼動している状態で、経年変化や外力を受けた場合の変形等によって、カメラパラメタセットが変わってしまった場合にも必要になる。自動車の安全運転支援システムや、移動ロボットの遠隔操作システム、あるいは不審者等を検出する監視カメラシステムなどにおいては、校正指標等の設備が不要で、かつ、人手による操作が不要な校正方法が望ましい。システムがカメラパラメタセットを自動で更新することを自己校正と呼ぶ。
特許文献4に、車両に設置されたステレオカメラをシステムが自動で校正する自己校正技術が開示されている。特許文献4では、格子などの特定模様の校正指標を用いる代わりに、カメラの視野内にある静止物を校正目標として記憶しておき、校正目標の位置が変わった場合に、校正目標の3次元座標の情報を用いて、カメラの自己校正を行う。
しかしながら、従来の校正技術では、校正目標の3次元座標は事前に得られており変化しないと仮定しているため、校正目標の3次元座標が経年変化や外力等で変化した場合に、正しく校正できないという課題がある。
そこで、本開示は、事前に得た3次元座標を用いることなく、複眼カメラの自己校正を可能にするカメラパラメタセット算出装置を提供することを目的とする。
本開示の一態様に係るカメラパラメタセット算出装置は、第1のカメラで撮影した第1の画像と、第2のカメラで撮影した第2の画像と、第3のカメラで撮影した第3の画像と、前記第1のカメラの第1カメラパラメタセットと、前記第2のカメラの第2カメラパラメタセットと、前記第3のカメラの第3カメラパラメタセットとを受け付ける受付器と、前記第1カメラパラメタセットは前記第1のカメラの1または複数のカメラパラメタを含み、前記第2カメラパラメタセットは前記第2のカメラの1または複数のカメラパラメタを含み、前記第3カメラパラメタセットは前記第3のカメラの1または複数のカメラパラメタを含み、前記第1の画像と、前記第2の画像と、前記第1カメラパラメタセットと、前記第2カメラパラメタセットとに基づいて、複数の3次元座標を算出する3次元点群算出器と、前記複数の3次元座標と前記第2カメラパラメタセットとに基づいて前記第2の画像における複数の第2画素座標を決定し、前記複数の3次元座標と前記第3カメラパラメタセットとに基づいて前記第3の画像における複数の第3画素座標を決定し、前記複数の第2画素座標における前記第2の画像の複数の画素値と前記第3画素座標における前記第3の画像の複数の画素値とに基づいて評価値を算出する評価値算出器と、前記複数の3次元座標と前記複数の第2画素座標とは1対1対応し、かつ、前記複数の3次元座標と前記複数の第3画素座標とは1対1対応し、評価値算出器で算出した評価値に基づいて、前記第3のカメラの第4のカメラパラメタセットを決定する、カメラパラメタセット決定器と、前記第4のカメラパラメタセットは1または複数のカメラパラメタを含み、前記第4カメラパラメタセットを出力するカメラパラメタセット出力器と、を備える。
この構成によれば、複眼カメラのうち、第1と第2のカメラのカメラパラメタセットが正しい場合に、第1と第2のカメラのカメラパラメタセットを用いて、撮影空間内の適宜の物体の3次元座標を算出し、算出した3次元座標を用いて第3のカメラを校正できる。
従って、複眼カメラを構成する2つ以上のカメラのパラメタが正しい場合に、複眼カメラの他のカメラのカメラパラメタセットを校正することができる。さらに、3次元座標と画素座標との対応付けが既知の基準点を必要としないため、校正指標などの設備も不要である。
言い換えると、事前に得た3次元座標を用いないため、基準点の経年変化や外力等による変化とは無関係に、正しく複眼カメラを校正できる。
また、前記評価値算出器は、前記複数の3次元座標を前記第2カメラパラメタセットに含まれる1又は複数のカメラパラメタを用いて座標変換することにより、前記複数の第2画素座標を決定し、前記複数の3次元座標を前記第3カメラパラメタセットに含まれる1又は複数のカメラパラメタを用いて座標変換することにより、前記複数の第3画素座標を決定してもよい。
この構成によれば、例えば、ピンホールカメラモデルなど、カメラモデルに応じたカメラパラメタを媒介とする座標変換による定型的な手順で、前記3次元座標から前記第2画素座標及び前記第3画素座標を決定できる。
また、前記評価値算出器は、複数の差に基づいて前記評価値を算出し、前記複数の差の各々は、前記複数3次元座標のうちの1つの3次元座標に対応し、かつ前記複数の第2画素座標に含まれる画素座標における前記第2の画像に含まれる画素値と、前記1つの3次元座標に対応し、かつ前記複数の第3画素座標に含まれる画素座標における前記第3の画像に含まれる画素値との差であってもよく、前記複数の差の各々は、前記画素値の差の絶対値であってもよく、前記画素値の差の2乗値であってもよい。
この構成によれば、例えば前記画素値の差の絶対値の総和や前記画素値の差の2乗値の総和など、前記第3のカメラのカメラパラメタセットに含まれる1又は複数のカメラパラメタの誤差を表す評価関数を前記画素値の差に基づいて設定し、当該評価関数を小さくする方向に前記第3のカメラパラメタセットを更新することができる。これにより、前記第3のカメラパラメタセットと比べて、誤差がより小さいカメラパラメタを含む前記第4のカメラパラメタセットを決定することができる。
また、前記評価値算出器は、前記複数の3次元座標と前記第1カメラパラメタセットとに基づいて前記第1の画像における複数の第1画素座標を決定し、 前記複数の3次元座
標と前記複数の第1画素座標とは1対1対応し、前記評価値算出器は、複数の差に基づいて前記評価値を算出し、前記複数の差の各々は、前記複数の3次元座標のうちの1つの3次元座標に対応し、かつ前記複数の第1画素座標に含まれる画素座標における前記第1の画像に含まれる画素値と、前記1つの3次元座標に対応し、かつ前記複数の第2画素座標に含まれる画素座標における前記第2の画像に含まれる画素値との平均値と、前記1つの3次元座標に対応し、かつ前記複数の第3画素座標に含まれる画素座標における前記第3の画像に含まれる画素値との差であってもよい。前記複数の差の各々は、前記画素値の差の絶対値であってもよく、また前記画素値の差の2乗値であってもよい。
また、前記評価値算出器は、前記複数の3次元座標と前記第1カメラパラメタセットとに基づいて前記第1の画像における複数の第1画素座標を決定し、前記複数の3次元座標と前記複数の第1画素座標とは1対1対応し、前記評価値算出器は、複数の差に基づいて前記評価値を算出し、前記複数の差の各々は第1の差と第2の差とを含み、前記第1の差は、前記複数の3次元座標のうちの1つの3次元座標に対応し、かつ前記複数の第1画素座標に含まれる画素座標における前記第1の画像に含まれる画素値と、前記1つの3次元座標に対応し、かつ前記複数の第3画素座標に含まれる画素座標における前記第3の画像に含まれる画素値との差であり、前記第2の差は、前記複数の3次元座標のうちの1つの3次元座標に対応し、かつ前記複数の第2画素座標に含まれる画素座標における前記第2の画像に含まれる画素値と、前記1つの3次元座標に対応し、かつ前記複数の第3画素座標に含まれる画素座標における前記第3の画像に含まれる画素値との差であってもよい。前記複数の差の各々は前記画素値の差の絶対値であってもよく、前記画素値の差の2乗値であってもよい。
これらの構成によれば、前記3次元座標に対応する第2画素座標における前記第2画像に含まれる画素値のみならず、前記3次元座標に対応する第1画素座標における前記第1画像に含まれる画素値も、前記評価値に加味される。そのため、前記第1の画像および前記第2の画像のうち一方に含まれるノイズを他方の平常値で緩和することにより、評価関数の収束が促進され、誤差が小さいカメラパラメタを含む第4のカメラパラメタセットを得ることが期待できる。
また、前記評価値算出器は、前記複数の3次元座標の各々が、前記第3のカメラの不可視領域にあるか否かを判定し、不可視領域にあると判定された3次元座標に対応する第2画素座標における前記第2の画像の画素値と、不可視領域にあると判定された3次元座標に対応する第3画素座標における前記第3の画像の画素値とを、前記評価値の算出に用いないとしてもよい。
前記複数の3次元座標のうち前記第3のカメラの不可視領域にある3次元座標について、前記第2の画像の画素値と前記第3の画像の画素値との差が0にならず、評価値の誤差になる。これに対し、この構成によれば、複数の3次元座標のうち、少なくとも前記第3のカメラに写っていない(つまり、前記第3のカメラの不可視領域に位置する)3次元座標を評価値の算出から除外するので、評価値の誤差を小さくできるという効果が期待できる。
また、前記評価値算出器は、前記第1カメラパラメタセットに基づいて前記複数の3次元座標のうちの1つの3次元座標に対応する前記第1の画像の画素座標における輝度勾配が所定のしきい値より小さいか、または、前記第2カメラパラメタセットに基づいて前記1つの3次元座標に対応する前記第2の画像の画素座標における輝度勾配が所定のしきい値より小さい場合に、前記1つの3次元座標を、前記評価値の算出に用いないとしてもよい。
ある3次元座標に対応する画素座標における輝度勾配が0の場合、カメラパラメタを微小変化させることで、この3次元座標に対する画素座標が微小変化しても、その画素座標の輝度差は変化しない。言い換えると、評価値が変化しない。そのため、この様な3次元座標を除去したとしても評価値には影響がなく、かつ、計算に用いる3次元座標の数が減るため、評価値の算出に要する計算量を低減できるという効果がある。
また、前記カメラパラメタセット算出装置は、3以上の複数のカメラで構成される複眼カメラシステムに適用され、前記受付器は、前記複数のカメラで撮影した複数の画像と、前記複数のカメラの複数のカメラパラメタセットとを受け付け、前記3次元点群算出器は、前記3台以上のカメラのうちの2台のカメラからなる複数のカメラ組の各々について、当該カメラ組に含まれる一方のカメラで撮影した第4の画像と他方のカメラで撮影した第5の画像と当該一方のカメラの第5カメラパラメタセットと当該他方のカメラの第6カメラパラメタセットとに基づいて複数の3次元座標を算出し、前記複数の3次元座標と前記第5カメラパラメタセットとに基づいて前記第4の画像における複数の第4画素座標を決定し、前記複数の3次元座標と前記第6カメラパラメタセットとに基づいて前記第5の画像における複数の第5画素座標を決定し、前記複数の3次元座標と前記複数の第4画素座標とは1対1対応し、かつ、前記複数の3次元座標と前記複数の第5画素座標とは1対1対応し、前記複数の第4画素座標における前記第4の画像の複数の画素値と前記第5画素座標における前記第5の画像の複数の画素値とに基づいて評価値を算出し、前記複数のカメラ組の各々について算出された評価値に基づいて、前記複数のカメラ組の中から1つのカメラ組を選択し、前記評価値算出器は、選択されたカメラ組に含まれる2台のカメラを前記第1のカメラ及び前記第2のカメラとし、その他のカメラのうち1台のカメラを前記第3のカメラとして前記評価値を算出してもよい。
この構成によれば、複眼カメラシステムを構成する複数のカメラのうち、カメラパラメタセットの誤差が小さいカメラ組を特定し、当該カメラ組で撮影した画像から複数の3次元座標を得て、当該複数の3次元座標に基づいて他のカメラを校正することができる。
また、前記3次元点群算出器は、複数の差に基づいて前記評価値を算出し、前記複数の差の各々は、前記複数の3次元座標のうちの1つの3次元座標に対応する第4画素座標における前記第4の画像に含まれる画素値と、当該3次元座標に対応する第3画素座標における前記第3の画像に含まれる画素値との差であってもよい。
この構成によれば、例えば前記画素値の差の絶対値の総和や前記画素値の差の2乗値の総和など、各カメラ組のカメラパラメタセットの誤差を表す評価関数を設定し、当該評価関数の小ささに応じてカメラパラメタセットの誤差が小さいカメラ組を特定することができる。これにより、特定されたカメラ組から得られるより精度が高い3次元座標を用いて、他のカメラを校正することができる。
なお、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD−ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
(実施の形態)
以下、本開示の実施の形態を、図面を参照しながら説明する。実施の形態では、本開示に係るカメラパラメタセット算出装置を用いた、車載用の複眼カメラシステムについて説明する。以下、実施の形態について、図面を用いて説明する。
図1は、実施の形態における複眼カメラシステム10の構成を示すブロック図である。
図1に示されるように、複眼カメラシステム10は、撮像器100、画像処理器110、ディスプレイ130を備える。撮像器100は、それぞれ魚眼レンズを有する3台以上(図1の例では4台)のカメラ101a〜101dを備え、画像処理器110は、自己校正器111、位置算出器112、画像生成器113、カメラパラメタセット格納器114を備える。なお、同一部材を区別するために添え字a〜dを用いるが、以下では、これらを特に区別しない場合には、添え字を除いた符号のみを用いる。
図2Aは、複眼カメラシステム10の撮像器100の構造の一例を示す模式図である。図2Aは、4台のカメラ101を一体として固定した構成の撮像器の例について、(a)正面図、及び(b)側面図を示している。撮像器100を構成する4台のカメラ101のレンズは魚眼レンズであるものとする。
なお、複眼カメラシステム10において、撮像器100は4台のカメラで構成されるとしたが、4台に限定するものではなく、3台(3眼)以上のカメラを有する構成であればよい。例えば、図2Bは、カメラ101を4台用いる代わりに、3台のカメラ101を一体として固定した構成の別の撮像器100の例について、(a)正面図、及び(b)側面図を示している。このような3台のカメラを有する撮像器100を用いてもよい。
図2A、図2Bにおいて、隣接するカメラの光軸間の距離を基線長と呼び、各カメラの光軸上に撮像素子が設けられている。
本開示に係るカメラパラメタセット算出装置は、図1に示した構成のうちの、自己校正器111に相当する。
複眼カメラシステム10は、主に画像生成と、自己校正の2種類の動作をする。
画像生成時は、撮像器100は画像を撮影し、画像処理器110は撮影した画像から3次元座標を算出し、算出した3次元座標に基づいて画像を生成して出力し、ディスプレイ130に表示する。
自己校正時は、撮像器100は画像を撮影し、画像処理器110の自己校正器111は、カメラパラメタセット格納器114に格納されているカメラパラメタセットを更新する。
なお、画像生成と、自己校正の2種類の動作は、同時に行ってもよいし、別々に動作してもよい。
撮像器100は、視野角が概ね180度の魚眼レンズを有する4台のカメラ101a〜101dで構成される。4台のカメラ101a〜101dは、図2Aに示すように配置され、視野内の画像をそれぞれ撮影して4つの画像を出力する(以降、この画像をカメラ画像と呼ぶ)。
画像処理器110は、自己校正器111、位置算出器112、画像生成器113、カメラパラメタセット格納器114で構成される。
カメラパラメタセット格納器114は、4台のカメラ101について、少なくともカメラの位置や向きなどの外部パラメタセット、および、レンズの歪や焦点距離などの内部パラメタセット、および、カメラ画像における本撮像装置によって遮蔽された領域である遮蔽情報を含むカメラパラメタを、あらかじめ格納している。
自己校正器111は、4台のカメラ101で撮影された画像と、カメラパラメタセット格納器114に記憶されたカメラパラメタセットを初期カメラパラメタセットとして用いて、カメラパラメタセット格納器114のカメラパラメタセットを更新する。
位置算出器112は、4台のカメラ101から出力された4つのカメラ画像のうちの2つの画像を1組とする6組の画像組の各々で、2画像間の視差を推定する。そして、カメラパラメタセット格納器から4台のカメラ101のカメラパラメタセットを読み出し、推定した6組の2画像間の視差と、カメラパラメタセットに含まれる外部パラメタセットと内部パラメタセットとに基づいて、2画像の両方に写っている複数の3次元物体の3次元座標を算出し、位置情報として出力する。
画像生成器113は、カメラ画像と、位置算出器112から算出された位置情報に基づいて画像(特には、撮影空間内の3次元物体の画像であって当該3次元物体の3次元座標に基づく合成画像)を生成して出力する。
ディスプレイ130は、画像生成器113から出力された画像を表示する。
図1の複眼カメラシステム10のうちの画像処理器110を構成する各構成要素は、電子回路または集積回路等のハードウェアで実現されてもよいし、コンピュータ上で実行されるプログラム等のソフトウェアで実現されてもよい。
図3は、コンピュータによって構成された複眼カメラシステム10のハードウェア構成を示す図である。図3において、撮像器100は画像を撮影して出力し、コンピュータ300が画像処理器110として動作することにより、画像を生成して出力する。ディスプレイ130はコンピュータ300で生成された画像を表示する。
撮像器100は、3台以上(例えば4台)のカメラ101a、101b、101c、101dが用いられる。
コンピュータ300は、CPU(Central Processing Unit)301、ROM(Read Only Memory)302、RAM(Random Access Memory)303、HDD(Hard Disk Drive)304、ビデオ入力I/F(インタフェース)305およびビデオカード306を含む。
コンピュータ300を動作させるプログラムは、ROM302またはHDD304にあらかじめ保持されている。プログラムは、プロセッサであるCPU301によって、ROM302またはHDD304からRAM303に読み出されて展開される。
CPU301は、RAM303に展開されたプログラム中のコード化された各命令を実行する。ビデオ入力I/F305は、プログラムの実行に応じて、撮像器100で撮影された画像を、RAM303へ取り込む。ビデオカード306は、プログラムの実行に応じて生成された画像を出力し、ディスプレイ130がその画像を表示する。
なお、コンピュータプログラムは、半導体装置であるROM302またはHDD304に限られず、例えばCD―ROMに格納されていてもよい。また、有線や無線のネットワーク、放送などを介して伝送され、コンピュータ300のRAM303に取り込まれてもよい。
以降では、複眼カメラシステム10における、画像生成時の動作と、自己校正時の動作を、順に説明する。
(画像生成時の動作)
以下、複眼カメラシステム10における画像生成時の動作を、図4を用いて説明する。
図4は、複眼カメラシステム10の画像処理器110における、画像生成時の動作を表すフローチャートである。図4に示されるように、画像生成時の動作は、カメラパラメタセット読み出しステップS401と、位置算出ステップS402と、画像生成ステップS403とから構成される。図4の動作は、図3のコンピュータ300で実行されてもよい。
以下では、複眼カメラシステム10は自動車に設置され、自動車の後方の画像と3次元座標を取得して障害物を検出し、その結果を自動車内に設置したディスプレイに表示することで、利用者であるドライバに車両後方の状況を提示する場合の例を説明する。
図5Aは、複眼カメラシステム10の自動車への設置例を示す図である。撮像器100は、カメラ101の光軸が概ね車両後方に一致するよう車体後部に設置し、画像処理器110、ディスプレイ130はドライバから見える車室内に、それぞれ設置する。
図5Bは、車両に搭載した複眼カメラシステム10による撮影が行われている状況の例を示す図である。
撮像器100の4台のカメラ101a〜101dは、互いに同期して一定時間間隔で、画像を撮像して出力する。
図6Aは、撮像器100の4台のカメラ101a〜101dの配置の例を示す(a)正面図及び(b)背面図である。
図6Bは、図5Bの撮影状況において、4台のカメラ101a〜101dで撮影される画像の例を示しており、視野角は概ね180度であり、4つのカメラの各視野内の大半で、共通の被写体が映っていることがわかる。
図6Cは、4台のカメラ101a〜101dの遮蔽情報の例を示す。遮蔽情報とは、撮影画像において、レンズやカメラ本体が映り込み、その後方の被写体を遮蔽している領域を示す情報である。遮蔽情報は、撮影画像の各画素が、「被写体領域」、「遮蔽領域」、「視野外領域」の3つのいずれであるかを、3つの数値で表す。以下の説明では、「遮蔽領域」と「視野外領域」とを「不可視領域」と総称する。図6Cは、各画素の3つの状態を、被写体領域は白色、遮蔽領域は斜線、視野外領域は黒色で、それぞれ表した図である。この遮蔽情報は、事前にカメラ101で画像を撮影して各画素がどの領域に属するかを人手で判定することで、作成しておく。
コンピュータ300では、撮像器100の動作と並行して、あらかじめ定められたプログラムを実行することで、図4のS401〜S403の動作を行う。
以降、コンピュータ300で実行されるステップS401〜S403の詳細な動作を、図6A〜図11Dを用いて説明する。
カメラパラメタセット読み出しステップS401では、位置算出器112は、カメラパラメタセット格納器114から、カメラパラメタ格納器114にあらかじめ格納されているカメラ101a〜101dの内部パラメタセット、外部パラメタセットを含むカメラパラメタセット、及び遮蔽情報を読み出す。
カメラの外部パラメタセットMと3次元座標との関係、および、カメラの内部パラメタセット(f、dpx、dpy、cu、cv)と3次元座標と画素座標との関係を式1、式2に示す。
ここで外部パラメタセットMは、世界座標系におけるカメラ座標系の位置を表す外部パラメタセットであり、世界座標系の3次元座標(xw、yw、zw)を、カメラ座標系の3次元座標(xe、ye、ze)に変換する4×4の行列で表す。(式2)は、カメラ座標系の3次元座標(xe、ye、ze)と画素座標(u、v)との関係を表している。内部パラメタセットのfは焦点距離、dpx、dpyは撮像素子のx方向とy方向の画素サイズ、(cu、cv)はカメラ座標系のz軸と撮像面との交点の画素座標である。なお、デジタル画像を「2次元の格子点(すなわち、画素座標)における値(すなわち画素値)」の集合と考えた場合に、画像上の画素の位置を2次元の画素座標で表現する。
外部パラメタセットMや内部パラメタセット(f、dpx、dpy、cu、cv)は、前述した従来技術のカメラ校正方法であらかじめ求めておく。なお、dpx、dpy、fの算出には、(式1)と(式2)だけでは拘束条件が足りない。そこで、dpx、dpy、fのいずれか1つは設計値を用い、残りの2つのパラメタを従来技術のカメラ校正方法で算出する。
なお、(式2)は、レンズの投影モデルとして透視投影モデル(ピンホールカメラモデル)を用いたが、これは投影モデルを限定するものではなく、等距離射影や立体射影、等立体角射影などの他の投影モデルを用いてもよい。例えば、等距離射影モデルの場合、(式2)の内部パラメタセットの代わりに、(式3)の内部パラメタセットを用いる。
以降、説明を簡単にするため、2つのカメラiとjの位置関係を表す外部パラメタセッ
トMi、Mjを(式4)に示す。
位置算出ステップS402では、撮像器100のカメラ101a〜101dで撮影された複数の画像を入力する。そして、入力した複数の画像のうちの2つ以上画像を1組として、複数組の画像組を構成する。次に、各画像組において、カメラパラメタセット読み出しステップS401で読み出したカメラパラメタセットを用いて、ステレオ視により画像中の複数点の3次元座標を算出する。最後に、複数組の画像組から算出した位置情報を、1つの画像に対応する位置情報に変換して出力する。
以下、位置算出ステップS402の詳細な動作について説明する。
カメラ101a、101b、101c、101dで撮影した4つの画像を、それぞれIa、Ib、Ic、Idとすると、位置算出ステップS402では、2つの画像からなる6組の画像組(Ia、Ib)、(Ia、Ic)、(Ia、Id)、(Ib、Ic)、(Ib、Id)、(Ic、Id)の各々について、2つの画像において同じ被写体が表されている対応点の組を検出する。より詳しくは、2つの画像のうち一方の画像において当該被写体が表されている点の画素座標と他方の画像において当該被写体が表されている点の画素座標との組を、例えば画像の類似などに基づいて、複数組検出する。
例えば、画像の組が(Ia、Ib)の場合、画像Ia上の全ての画素について、当該画素の画素座標(uan、van)と、当該画素に表されている被写体と同じ被写体が表されている画像Ib上の対応点の画素座標(ubn、vbn)を検出する。2画像間の対応点の画素座標を実数精度で算出する対応点探索手法や動き推定手法は、非特許文献2などに詳しく記載されているため、ここでは詳細な説明を省略する。
C. Zach, T. Pock, and H. Bischof, "A duality based approachfor realtime TV-L1 optical flow," In Proceedings of the 29th DAGM conference on Pattern recognition, pp214-223, 2007
次に、各対応点について、対応点の座標(uan、van)、(ubn、vbn)と、あらかじめ求めたおいたカメラ101a、101bの外部パラメタセットと内部パラメタセットとを用いて、対応点の3次元座標(xan、yan、zan)を算出する。3次元座標は、カメラ101aのカメラ座標系の座標値とする。
2画像間の対応点と2つのカメラ位置から3次元座標を算出する2眼ステレオ手法や、2つの3次元座標系間での座標値の変換は、非特許文献3などに詳しく記載されているため、ここでは詳細な説明を省略する。
松山隆司、ほか編、"コンピュータビジョン"、株式会社新技術コミュニケーションズ、pp123〜137.
さらに、他の5組の画像組に対しても同様に3次元座標の算出を行う。
ある画像組の2つの画像をIi、Ij(添え字iとj)で表し、2つの画像Ii、Ij間のNi個の対応点の位置情報pi,j,nの集まりであるPi,jを(式5)で表す。また、全ての画像組の位置情報を{Pi,j}と表す。
(式5)で得られる位置情報{Pi,j}は、画像組ごとに画素座標の基準となる画像、および3次元座標の基準となるカメラ座標系が異なる。そこで、位置算出ステップS402では、6組の画像組の位置情報{Pi,j}を、ある1つのカメラaの画素座標とカメラaの3次元座標系の位置情報{Pa i,j}に変換して出力する(式6a)。
ここでMi,aは、カメラiとカメラaの外部パラメタである。カメラiとカメラjで撮影された画像組Ii、Ijから算出したカメラiの座標系の3次元座標(xi、yi、zi)から、カメラaの座標系の3次元座標(xa、ya、za)を算出し、さらにカメラaで撮影された画像Iaの画素座標(ua、va)を算出する(式6b)。
以上の位置算出ステップS402の詳細な動作により、6組の画像について、それぞれ2画像間の対応点とその3次元座標を複数算出して、カメラaの座標系に変換した位置情報{Pa i,j}を出力する。
これにより、例えば、図7Aに示す補完画像と、図7Bに示すような、カメラからの距離を濃淡で表した距離画像を得る。図7Aの補完画像は、図6Bのカメラ101aの画像における隣接するカメラのレンズにより遮蔽された画素の画素値を、位置情報{Pa i,j}を用いて、その画素に対応する別のカメラの画素の画素値と置き換えた画像である。同様に図7Bの距離画像も、位置情報{Pa i,j}のうち、隣接するカメラのレンズにより遮蔽された画素の3次元座標を、別のカメラの画素の3次元座標で置き換えた距離画像である。ある画素が、レンズなどにより遮蔽された画素であるか否かは、図6Cの遮蔽情報を用いて判定する。
最後に、画像生成ステップS403では、画像Iaと位置情報{Pa i,j}を入力して、障害物を検出し、検出した障害物の位置に対応する補完画像上の領域に、注視領域を示す枠を重畳合成して合成画像として出力する。
障害物を検出する手法は、例えば、複数の3次元点の各々の3次元座標(xa、ya、za)に基づいて、3次元点とカメラaとの距離dがあらかじめ定められた距離dthより小さく、かつ、水平面より高い場合(za>0)に、当該3次元点を障害物上の点として検出する。さらに、障害物として検出された3次元点のカメラ画像上での対応点の集まりの外接矩形を、画像Iaに重畳し、合成画像として出力し、ディスプレイ130に表示される。
以上のコンピュータ300で実行されるステップS401〜S403の画像生成時の動作によって、撮像器100で撮像された4つの画像から、画像処理器110では画像と位置情報を生成して出力する。さらに、撮像器100およびコンピュータ300は、上記の動作を繰り返してもよい。
画像生成ステップS403によって生成される合成画像の例を、図8に示す。図8から、車両後方のカメラに近い場所にある障害物(この例では、歩行者と停止車両)に注意を喚起する枠が表示されるため、接触する可能性が高い障害物の存在を運転者が容易に認知できる。また、特に、複眼カメラシステム10では、各カメラは魚眼レンズを用いていることから、180度の画像と3次元座標を取得できる。さらに、4台のカメラを有した構成であることから、2眼ステレオの場合に生じる遮蔽領域を低減できる。
以上のように、複眼カメラシステム10の撮像器100、コンピュータ300で実現された画像処理器110の動作の結果、4台のカメラで撮像した画像から3次元座標を算出し、概ね180度の視野内の画像と位置情報とを取得できるため、180度の視野内の障害物を検出して表示することができる。その結果、複眼カメラシステム10を搭載した車両の運転者は、障害物を容易に把握することができる。
上述した複眼カメラシステムは、あらかじめ記録しておいたカメラパラメタセットを用いて被写体の3次元座標の算出をしている。一方、このカメラパラメタセットは、経年変化や外力を受けた場合の変形等によって変わる場合があり、その場合、カメラの校正が必要になる。
(自己校正時の動作)
以下、複眼カメラシステム10における自己校正時の動作について、図9、図10を用いて説明する。
図9は、図1の複眼カメラシステム10の自己校正器111の詳細な構成を示した構成図である。
図10は、複眼カメラシステム10の画像処理器110における、自己校正時の動作S111を表すフローチャートである。図10において、7つのステップS1001〜S1007は、図3のコンピュータ300で実行される。
なお、図10の各ステップは、図9の自己校正器111の構成要素で実行してもよい。限定されない一例として、受付器901でステップS1001とステップS1002とを実行し、3次元点群算出器902でステップS1003を実行してもよい。また、評価値算出器903でステップS1004を実行し、カメラパラメタセット決定器904でステップS1005とステップS1006とを実行し、カメラパラメタセット出力器905でステップS1007を実行してもよい。
(自己校正時の動作1)
自己校正時の動作1では、説明を容易にするため、異常カメラはユーザーによって特定されており、ユーザーのスイッチ押下などの外部入力によって動作が開始するものとする。
以下、3つのカメラ101a、カメラ101b、カメラ101cのうち、カメラ101aとカメラ101bは正常であり、カメラ101cは異常であると、ユーザーによって特定されている場合に、カメラ101cのカメラパラメタセットを校正する動作を説明する。
図10は、自己校正時の動作1を示すフローチャートである。ステップS1001では、複眼カメラを構成する複数のカメラで撮影した画像を取得して、カメラ101a、101b、101cのそれぞれで撮影したカメラ画像を抽出する。以下、抽出されたカメラ101a、101b、101cのカメラ画像を、それぞれ、第1のカメラ画像、第2のカメラ画像、第3のカメラ画像と言う。
ステップS1002では、カメラパラメタセット格納器114から、カメラ101a、101b、101cのそれぞれの初期カメラパラメタセットを読み込む。
ここで、初期カメラパラメタセットとは、カメラパラメタセット格納器114にあらかじめ格納されているカメラ101a、101b、101cのそれぞれのカメラパラメタセットのことを言う。「あらかじめ」とは、「ユーザーが外部入力によって自己校正の指示をする前」であることを意味してもよい。
ステップS1003では、第1のカメラ画像、第2のカメラ画像、カメラ101aの初期カメラパラメタセット、カメラ101bの初期カメラパラメタセットを用いて、ステレオ手法により複数の3次元座標を算出して出力する。ここでは、N点の3次元座標が算出されるものとし、N点のうちのk番目の3次元座標を世界座標(xwk、ywk、zwk)で表す。
ステップS1004では、算出された複数の3次元座標、第2のカメラ画像、第3のカメラ画像、カメラ101bの初期カメラパラメタセット、カメラ101cの初期カメラパラメタセットを用いて、複数の3次元座標の各々に対応する第2のカメラ画像における画素座標における画素値、及び、第3のカメラ画像における画素座標における画素値の差の絶対値和で定義される評価値J(式7)を算出する。
ここで、Nは、ステップS1003で算出された3次元座標の総数であり、kは、N個の3次元座標のうちの1つの3次元座標を指定するインデックスである。
(ubk、vbk)と(uck、vck)は、第2のカメラ画像と第3のカメラ画像のそれぞれにおいて、k番目の3次元座標に対応する画素座標である。(ubk、vbk)は、3次元座標(xwk、ywk、zwk)と、カメラ101bの初期カメラパラメタとから、(式1)及び(式2)を用いて算出する。(uck、vck)は、3次元座標(xwk、ywk、zwk)と、カメラ101cの初期のカメラパラメタとから、(式1)及び(式2)を用いて算出する。
Ib(ubk、vbk)は第2のカメラ画像における画素座標(ubk、vbk)における画素値であり、Ic(uck、vck)は第3のカメラ画像における座標(uck、vck)における画素値である。ここでは、画素値として、輝度値を用いる。実数精度の画素座標に対し、画素値はバイキュービック補間で算出する。
なお、(式7)において、画素値は輝度値に限定するものではなく、輝度値の代わりにRGB値を用いてもよい。また、実数精度の画素座標に対する画素値の算出方法をバイキュービック補間に限定するものではなく、バイリニア補間など他の補間方法であってもよい。また、評価値Jの計算におけるN点の画素値の差の絶対値の和を算出する際に、画素値の差の絶対値に重みを付けてもよい。例えば、被写体の色が連続的に変化する点群の重みを重く、あるいは、物体の表面の凹凸が大きい点群の重みを軽くする。これらの重み付けによって、カメラパラメタの連続的な変化に対し、評価値Jの変化を滑らかにし、評価値Jを最小化し易くする効果が期待できる。
ステップS1005では、カメラパラメタの所与の探索範囲内の探索が完了するか、評価値が閾値より小さい場合に、反復計算を終了する。
一方、S1005で反復計算が継続となった場合、すなわち、カメラパラメタの前記所与の探索範囲内の探索が完了せず、かつ評価値が前記閾値以上の場合、ステップS1006で、カメラ101cのカメラパラメタM、f、dpx、dpy、cu、cvを所与の探索範囲で変更する。カメラパラメタの探索範囲は、各カメラパラメタが取り得る範囲をあらかじめ設定しておく。例えば、全て初期カメラパラメタの±5%とすればよい。
ステップS1007では、上述したステップS1004〜ステップS1006の反復計算によって算出された、カメラパラメタセットとそのカメラパラメタセットに対応する評価値Jの複数の組から、評価値Jを最小とするカメラパラメタセットを選択する。そして、選択したカメラパラメタセットに対応する評価値Jが、初期カメラパラメタセットに対応する評価値Jより小さい場合に、カメラパラメタセット格納器114にあらかじめ記憶されているカメラ101cのカメラパラメタセットを、選択したカメラパラメタセットで置き換える。
以上のように、複眼カメラシステム10の自己校正時の動作1により、カメラ101a、101bの画像から複数の3次元座標を算出し、複数の3次元座標の各々に対応する第2のカメラ画像における画素座標における画素値と第3のカメラ画像における画素座標における画素値の差に基づいて評価値を算出し、この評価値を最小にするカメラ101cのカメラパラメタセットを算出して更新することで、より誤差の小さいカメラパラメタセットを得ることができる。
(自己校正の効果)
以下、上述した画像処理器110のステップS1003〜ステップS1007の動作によって、カメラ101a、101b、101cの3つの画像と初期カメラパラメタを用いて、カメラ101cのより正確なカメラパラメタを算出して更新することが可能であることを、シミュレーションによる実験結果をもとに説明する。
(式7)の評価関数Jに基づいて、より誤差の小さいカメラパラメタを算出するためには、(式7)の評価関数が以下の2つの条件を満たす必要がある。
・カメラパラメタが正解値である場合に、評価値も最小であること
・カメラパラメタの正解値の近傍で、評価関数が下に凸であること
以下、カメラ101a、101b、101cで撮影される画像として、図11A、図11B、図11Cの画像が入力された場合を例に、(式7)の評価関数Jが、上述の2つの条件を満たしていることを示す。
各カメラのカメラパラメタセットのうち、内部パラメタセットは、(式3)の等距離射影モデルに従って、光軸中心の画素座標cu、cv、焦点距離f、撮像素子1画素分のu方向とv方向の長さdpx、dpyを含む。外部パラメタセットMは(式1)と同じであり、カメラ座標系の世界座標系に対する具体的な変位量として、X、Y、Zの各軸周りの回転量Rx、Ry、Rz、X、Y、Zの各軸方向の並進量Tx、Ty、Tzを含む(式8)。
ここで、dpyは設計値を利用する。これにより、評価値Jは、cu、cv、f、dpx、Rx、Ry、Rz、Tx、Ty、Tzの10個のカメラパラメタを変数とする関数となる。
図11A、図11B、図11Cは、駐車場のシーンの例であり、コンピュータグラフィックス(CG)で生成した。図11A、図11B、図11Cは、それぞれカメラ101a、101b、101cの画像である。図11Dは、カメラ101a、101bから算出される3次元座標を示す画像であり、3次元座標を、カメラからの距離に変換し、距離に比例する画素値を含む画像として表示したものである。3次元座標は、正解値として駐車場のシーンのCGデータを利用した。
カメラ101a、101b、101cの全てのカメラパラメタを正解値である設計値に設定したのち、カメラ101cの1つのカメラパラメタのみ変えた場合の評価値Jを算出した。10個のカメラパラメタについて、正解値近傍での評価関数の値を図12A〜図14Cに示す。図中の横軸が各カメラパラメタ、縦軸に評価値Jとした。変化させるカメラパラメタはそれぞれ、図12Aではcu、図12Bではcv、図12Cではf、図12Dではdpx、図13AではRx、図13BではRy、図13CではRz、図14AではTx、図14BではTy、図14CではTzである。また、各カメラパラメタの正解値は、cuは640pixel、cvは480pixel、fは1.12mm、dpxは2.75μm、Rxは90°、Ryは0°、Rzは0°、Txは0mm、Tyは0mm、Tzは0mmである。
図12A〜図14Cのいずれにおいても、カメラパラメタの正解値の近傍で評価値は下に凸であり、かつ、評価値が極小となるカメラパラメタは正解値と一致していることがわかる。このことから、図12A〜図14Cで示すカメラパラメタの範囲において、評価値Jが最小となるカメラパラメタを算出することが可能であると言える。言い換えると、本方式によるカメラ校正が可能である。
以上のことから、自己校正時の動作1によって得られた、(式7)の評価関数Jを最小にするカメラパラメタは、少なくとも評価関数Jが前述の2つの条件を満たす場合に、正解値、もしくはより誤差の小さいカメラパラメタであると言える。すわなち、画像処理器110のステップS1003〜ステップS1007の動作によって、カメラ101a、101b、101cの3つの画像と初期カメラパラメタセットを用いて、カメラ101cのより正確なカメラパラメタを算出して更新できるという効果がある。
従来の校正技術では、3次元座標と画素座標との対応が既知の複数の基準点を用いるため、校正指標などの設備が必要にある。これに対し、複眼カメラシステム10では、正常なカメラ組を用いて基準点の3次元座標を算出し、さらに3次元座標を用いて校正対象カメラの画素座標を算出する。これにより、3次元座標と画素座標との対応が既知の基準点、つまり校正指標などの設備、がなくても、カメラの校正ができるという効果が得られる。
(自己校正時の動作2)
自己校正時の動作1では、異常カメラ、すなわち、カメラパラメタの誤差が大きいカメラは、ユーザーによって特定されており、ユーザーのスイッチ押下などの外部入力によって校正動作が開始するものとした。
自己校正時の動作2として、ユーザーによる異常カメラの特定が不要となる動作について説明する。自己校正時の動作2では、複眼カメラシステムを構成する複数のカメラのうち、カメラパラメタセットの誤差が小さいカメラ組を特定し、当該カメラ組で撮影した画像から複数の3次元座標を得て、当該複数の3次元座標に基づいて他のカメラを校正する。
カメラ組のカメラパラメタセットの誤差は次のように定義される。評価関数(式7)に従って算出される評価値Jは、2つのカメラのカメラパラメタセットの各々に含まれる1又は複数のカメラパラメタの正解値からの誤差が全体的に小さいほど小さくなる。逆に、評価値が大きい場合、2つのカメラパラメタセットのうちいずれか一方又は両方のカメラのカメラパラメタセットに、正解値からの誤差が大きいカメラパラメタが含まれる。
そこで、一例として、カメラ組に含まれる2つのカメラで撮影した画像及び当該2つのカメラのカメラパラメタセットに基づいて3次元座標を算出し、その3次元座標を用いて(式7)で算出した評価値を、当該カメラ組のカメラパラメタセットの誤差と定義する。
以下、自己校正時の動作2の詳細について、再び図10を参照して説明する。カメラパラメタ校正の動作のフローチャートは、自己校正時の動作1と同じであり、異なるのは各ステップでの詳細な動作である。
自己校正時の動作2は、複眼カメラシステムの電源投入後に1回実施されるものとする。なお、電源投入後に実施する代わりに、一定の時間ごとに実施するとしてもよいし、複眼カメラシステムが搭載された車両に事故などによって強い衝撃が加わった場合に実施するとしてもよい。
ステップS1001では、受付器901は、カメラ101a〜101dの各々で撮影した画像を受け付ける。ステップS1002では、受付器901は、カメラ101a〜101dのカメラパラメタセットを、カメラ101a〜101dの初期カメラパラメタセットとして、カメラパラメタセット格納器114から読み出す。
ステップS1003では、3次元点群算出器902は、カメラ101a〜101dのうちの2台のカメラからなる複数のカメラ組の各々について、当該カメラ組に含まれる一方のカメラで撮影した画像である第4の画像と他方のカメラで撮影した画像である第5の画像と当該一方のカメラの初期カメラパラメタセットである第5カメラパラメタセットと当該他方のカメラの初期カメラパラメタセットである第6カメラパラメタセットとを用いて、ステレオ手法により、複数の3次元座標を算出する。
そして、前記複数の3次元座標と前記第5カメラパラメタセットとに基づいて前記第4の画像における複数の第4画素座標を決定し、前記複数の3次元座標と前記第6カメラパラメタセットとに基づいて前記第5の画像における複数の第5画素座標を決定する。ここで、前記複数の3次元座標と前記複数の第4画素座標とはそれぞれ対応し、かつ、前記複数の3次元座標と前記複数の第5画素座標とはそれぞれ対応する。
さらに、前記複数の第4画素座標における前記第4の画像の複数の画素値と前記第5画素座標における前記第5の画像の複数の画素値とを用いて、(式7)の評価値Jを算出する。これにより、前記複数のカメラ組の各々について、評価値Jが算出される。
2台のカメラからなるカメラ組について評価値Jを算出する処理は、ステップS1004において、評価値算出器903が、カメラ101b、101cからなるカメラ組について評価値Jを算出する処理と、実質的に同一である。ステップS1004と同一の処理を、カメラ101b、101c以外のカメラ組に対して実行することで、前記複数のカメラ組の各々について、評価値Jが算出される。3次元点群算出器902は、評価値算出器903と同一の動作を行って各カメラ組の評価値Jを算出してもよく、また、評価値算出器903に各カメラ組の評価値Jを算出させてもよい。
3次元点群算出器902は、前記複数のカメラ組の各々について算出された評価値Jに基づいて、例えば、最も小さい評価値Jが算出されたカメラ組を選択する。なお、全てのカメラ組について算出された評価値Jが閾値より大きい場合、カメラ校正に利用できるカメラ組がないと判断して、自己校正時の動作2を打ち切ってもよい。
ステップS1004〜S1007では、算出した3次元座標を用いて、3次元座標の算出に用いた2つのカメラを除く(NC−2)台のカメラに対して、以下の処理を繰り返す。以降の説明を簡単にするため、3次元座標の算出に用いた2つのカメラを、カメラa、b、それ以外の(NC−2)台のカメラのうち、繰り返し処理の対象カメラをカメラcとする。
ステップS1004では、算出した3次元座標と、カメラbの画像とカメラパラメタ、カメラcの画像とカメラパラメタを用いて評価関数J(式7)を算出する。
ステップS1005では、評価値Jが第1閾値より小さいか、繰り返し回数が第2閾値より大きい場合、反復計算を終了する。一方、反復計算が継続となった場合、すなわち、評価値Jが前記第1閾値以上であり、かつ繰り返し回数が前記第2閾値以下である場合、カメラcのカメラパラメタを所与の範囲で変更する(ステップS1006)。
ステップS1007では、ステップS1004〜S1006の反復計算によって算出された、カメラパラメタと評価値の組から、評価値が最小のカメラパラメタを選択し、選択した評価値が初期カメラパラメタの評価値より小さい場合に、あらかじめ記憶されたカメラcの初期カメラパラメタを置き換える。
さらに、ステップS1004〜S1007の処理を、3次元座標の算出に用いた前記2つのカメラa、b以外の(NC−2)台のカメラの各々を前記カメラcとして実行することで、カメラcの初期カメラパラメタセットは、より誤差が小さいカメラパラメタを含むカメラパラメタセットに置き換えられる。
以上のことから、自己校正時の動作2により、複眼カメラシステムを構成する複数のカメラのうち、誤差が大きいカメラパラメタがあった場合に、より誤差の小さいカメラパラメタを算出して更新できるという効果がある。特に、自己校正時の動作2では、ユーザーによる自己校正動作の起動や、誤差の大きいカメラの指定が不要であるという効果もある。
複眼カメラシステム10の自己校正時の動作2は、自己校正時の動作1と同様に、基準点を与えなくてもカメラの校正ができるという効果がある。そのため、校正指標などの設備がなくても校正ができるという効果がある。
なお、複眼カメラシステム10の自己校正時の動作1および自己校正時の動作2のステップS1004において、評価値Jの算出に用いる3次元座標は、ステップS1003で算出された全ての3次元座標である必要は必ずしもなく、当該3次元座標の一部であってもよい。例えば、3次元座標のうち、2つのカメラのうち、少なくとも一方のカメラ(具体的には、校正の対象となるカメラ)に映っていない3次元座標は除外する、としてもよい。
2つのカメラのうち、少なくとも一方のカメラに映っていない点を除外する例として、3次元座標に対応する2つのカメラの画素座標を算出し(式2)、2つの画素座標のうちいずれか一方がカメラ画像の不可視領域に位置する場合に、その3次元座標を評価値Jの算出から除外するとしてもよい。
カメラに映っていない点を除外する具体例として、図6Cで説明した遮蔽情報を用いてもよい。3次元座標に対応する2つのカメラの画素座標を算出し、2つの画素座標のうちいずれか一方が、遮蔽情報によって示される不可視領域(つまり、遮蔽領域又は視野外領域)にある場合に、その3次元座標を評価値Jの算出から除外するとしてもよい。
(式7)は、同一の3次元座標が2つのカメラに写っている場合にカメラ画像の対応点での画素値の差が0になることを意味している。ある点がいずれかのカメラの撮影範囲外(図6Cの視野外領域)にある場合や、撮影範囲内にあっても他の物体に遮蔽されてカメラに映らない(図6Cの遮蔽領域にある)場合は、画素値の差が0にならず、評価値の誤差になる。そのため、複数の3次元座標のうち、少なくとも一方のカメラに写らない(つまり、当該カメラの不可視領域に位置する)3次元座標を評価値の算出から除外することで、評価値の誤差を小さくできるという効果が期待できる。3次元座標がカメラの不可視領域にあるか否かは、前述した、カメラの撮影範囲外となる3次元空間の範囲を規定する遮蔽情報に基づいて判定してもよい。
複眼カメラシステム10の自己校正時の動作1および2のステップS1005では、評価値が閾値より小さいか、繰り返し回数が閾値より大きい場合に反復計算を終了するとしたが、反復計算の終了条件をこれに限定するものではなく、他の終了条件が加わってもよい。例えば、カメラパラメタを変化させても評価値が変化しない場合に、終了するとしてもよい。
複眼カメラシステム10の自己校正時の動作は、評価関数Jが前述した2つの条件を満たす場合に、誤差の小さいカメラパラメタを算出して更新することができる。しかしながら、評価関数が前述した2つの条件を満たさない場合、必ずしも誤差の小さいカメラパラメタを算出できるとは限らない。例えば、カメラの撮影範囲が極端に暗く、全ての画素値が0になる場合や、被写体が均一色でテクスチャが全くない場合、(式7)の評価値は、カメラパラメタを変えても評価値は変わらず、一定値(0)となる。このような画像が入力された場合、自己校正時の動作1および2では、ステップS1005において反復回数の閾値を超えるまで終了せず、評価値は一定のため更新されない。この際、カメラパラメタは更新されないにも関わらず計算負荷がかかる。これに対し、カメラパラメタを変化させても評価値が変化しない場合に、終了するとすることで、計算負荷を低減できるという効果がある。
(評価関数のバリエーション)
なお、前述の自己校正時の動作1および2において、画像処理器110の自己校正時の動作で用いる評価関数Jとして、画素値の差の絶対値和に基づく評価値(式7)を用いるとしたが、(式7)に限定するものではなく、3次元座標に対応する2つ以上の画像の画素値の差に基づく式であれば、他の式であってもよい。例えば、2つの画素値差の2乗和に基づく評価値でもよいし、各画素値の算出において3つ以上の画像の差分を用いるとしてもよい。
具体的に、複数の3次元点にわたるカメラb、cの画像の対応点での画素値の差の2乗和で定義された評価関数の例を(式9)に示す。
画素値の差の絶対値和に基づく評価値(式7)に基づいて算出されたカメラパラメタは、画素値の誤差がラプラス分布の場合に、真値に近い(誤差が小さい)、という効果が期待できる。
これに対し、画素値の差の2乗和に基づく評価値(式9)に基づいて算出されたカメラパラメタは、画素値の誤差がガウス分布の場合に、真値に近い(誤差が小さい)、という効果が期待できる。
さらに、例えば、3つ以上の画像の差分を用いる評価関数の例を(式10)〜(式13)に示す。
(式7)、(式9)では、カメラaの画素値が用いられていないのに対し、(式10)〜(式13)では、カメラaの画素値とカメラcの画素値との差も評価値に加味される。このような(式10)〜(式13)を用いると、カメラa、bの画素値に誤差(ノイズ)が含まれる場合に、(式7)より誤差が小さい評価値を得ることができる。その結果、(式7)より誤差が小さいカメラパラメタを得ることが期待できる。
なお、前述した自己校正時の動作1および2では、3台のカメラa、b、cについて、カメラaとbは正常でカメラcは異常であるとしたが、カメラの台数を3台に限定にするものではなく、3台以上であれば何台でも構わない。例えば、NC台(NC>=3)のカメラについて、(NC−1)台のカメラが正常で、1台のカメラが異常であるとしてもよい。その場合、評価関数の(式10)〜(式13)の2台のカメラa、bをNC−1台のカメラに変えることで、自己校正時の動作1と同様の効果を得ることができる。
なお、前述の説明において、撮像器100は4台のカメラ101a〜dで構成されるものとしたが、カメラの台数を4台に限定するものではない。本開示の自己校正のためには少なくとも3台のカメラがあればよく、3台以上であれば何台でもよい。
以上、本開示の1つまたは複数の態様に係るカメラパラメタ算出装置及びカメラパラメタ算出装置方法について、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本開示の1つまたは複数の態様の範囲内に含まれてもよい。
(実施の形態の変形)
前述した実施の形態では、図1および図9の、撮像器100、画像処理器110、および、ディスプレイ130は、いずれも車両に搭載されており、画像処理器110を構成する自己校正器111も車両に搭載されているものとしたが、画像処理器110の構成を限定するものではなく、例えば、自己校正器111は、車両とネットワークで接続された別の場所に設置されているコンピュータで構成してもよい。
自己校正器111におけるカメラパラメタの校正処理S111は、計算負荷が大きいことから、車両に搭載された計算能力に制約のあるコンピュータ上で実施するよりも、サーバーなどの計算能力の高いコンピュータで実施することで、計算時間がより短く、精度がより高いパラメタの算出ができる、という効果がある。
(自己校正時の動作3)
自己校正時の動作1および自己校正時の動作2では、ステップS1003でN点の3次元座標が算出された場合に、ステップS1004で、算出されたN点の3次元座標を用いて評価値Jを算出する例を示したが、評価値Jの算出にN点全てを用いる必要はない。
自己校正時の動作3では、ステレオ手法によって算出したN点の3次元座標のうち、カメラ画像の対応する画素座標の近傍で輝度勾配がないか、または、十分小さい3次元座標を評価値Jの算出に用いないことで、評価値Jの算出における計算量を低減する。
図15Aは、自己校正時の動作3の一例を表すフローチャートである。図15Aに示される自己校正時の動作S112では、図10の自己校正時の動作S111と比べて、点群選択マスク作成処理S1010が追加される。自己校正時の動作S112を実行するための複眼カメラシステムの構成は、図9に示される複眼カメラシステム10と実質的に同一であるため、その説明を省略する。
自己校正時の動作S112において、ステップS1003では、第1のカメラ画像、第2のカメラ画像、カメラ101aの初期カメラパラメタセット、カメラ101bの初期カメラパラメタセットを用いて、ステレオ手法によりN点の3次元座標(xwk、ywk、zwk)を算出する。
ステップS1010では、ステップS1001で取得されたカメラ画像の輝度勾配に基づき、点群選択マスクを作成する。点群選択マスクは、カメラ画像中の各画素に対して、当該画素が有効画素及び無効画素の何れであるかを表す2値を取り、ステップS1003で算出されたN点の3次元座標の各々を評価値の算出に使用するか否かを判定するために参照される。点群選択マスクは、第1のカメラ画像および第2のカメラ画像の何れから作成されてもよい。
図15Bは、点群選択マスク作成処理S1010の詳細な一例を示すフローチャートである。
点群選択マスク作成処理S1010では、画素インデックスをiとし、カメラ画像中の画素iを順次選択しながら、選択された画素iが有効画素か無効画素かを特定するループ処理を行う(S1011〜S1016)。
画素iでの輝度勾配Giを、画素iを中心とする近傍画素から算出する(S1012)。輝度勾配の一例として、式14に、画素iを中心とする隣接画素による輝度勾配Giを示す。
ここで、I(u、v)は画素座標(u、v)における輝度値である。
輝度勾配Giと閾値を比較し(S1013)、輝度勾配Giが閾値より大きい場合、点群選択マスクにおいて画素iを有効画素に設定する(S1014)。また、輝度勾配Giが閾値以下の場合、点群選択マスクにおいて画素iを無効画素に設定する(S1015)。前記閾値は、一例として、画像全体の平均輝度勾配の定数倍であってもよい。
再び図15Aを参照して、ステップS1004では、ステップS1003で取得された3次元点群データで表されるN点の3次元座標のうち、カメラ画像上の対応する画素座標に位置する画素が、ステップS1010で作成された点群選択マスクによって無効画素と示される3次元座標を除いて、評価関数J(例えば、式3)を算出する。
ある3次元座標(xwk、ywk、zwk)に対応する画素座標(uak、vak)の周りの輝度勾配が0の場合、カメラパラメタを微小変化させることで、この3次元座標に対する画素座標(uck、vck)が微小変化しても、その画素座標の輝度差Ic(uck、vck)は変化しない。言い換えると、評価値Jが変化しない。そのため、この様な3次元座標を除去したとしても評価値Jには影響がなく、かつ、計算に用いる3次元座標の数が減るため、ステップS1004からS1007の計算量を低減できるという効果がある。