(58)【調査した分野】(Int.Cl.,DB名)
前記並進補正部は、前記複数のカメラから選択される基準カメラの地面に対する並進方向の位置と前記車両の姿勢とに基づいて、各カメラの地面に対する並進方向の位置を補正することを特徴とする、請求項1に記載のカメラキャリブレーション装置。
前記姿勢推定部は、前記所定の特徴量に基づいて前記車両のピッチ角を推定するピッチ角推定部と、前記所定の特徴量に基づいて前記車両のロール角と高さと回転中心とを推定するロール角・高さ・回転中心推定部と、を有することを特徴とする、請求項1に記載のカメラキャリブレーション装置。
前記カメラキャリブレーション装置は、キャリブレーションを実施するか否かを判定するキャリブレーション実施判定部を更に備えていることを特徴とする、請求項1に記載のカメラキャリブレーション装置。
前記カメラキャリブレーション装置は、前記車両の速度、舵角、及びヨーレートから選択される少なくとも一つに基づいて、前記車両が定常走行状態であるか否かを判定する定常走行状態判定部を更に備えていることを特徴とする、請求項1に記載のカメラキャリブレーション装置。
前記カメラキャリブレーション装置は、前記映像にキャリブレーションに利用可能な特徴量が映っているか否かを判定するデータ利用可否判定部を更に備えていることを特徴とする、請求項1に記載のカメラキャリブレーション装置。
前記データ利用可否判定部は、前記特徴抽出部により前記映像から抽出された直線状の直線的特徴量に基づいて、前記映像にキャリブレーションに利用可能な特徴量が映っているか否かを判定することを特徴とする、請求項8に記載のカメラキャリブレーション装置。
前記カメラキャリブレーション装置は、前記所定の特徴量を蓄積するデータ蓄積部と、前記データ蓄積部におけるデータ蓄積が完了したか否かを判定するデータ蓄積判定部と、を更に備えていることを特徴とする、請求項1に記載のカメラキャリブレーション装置。
前記姿勢推定部は、前記データ蓄積部に蓄積された前記所定の特徴量に基づいて前記車両の姿勢を推定することを特徴とする、請求項10に記載のカメラキャリブレーション装置。
請求項1に記載のカメラキャリブレーション装置と、撮像する映像の一部が重畳もしくは隣接するように前記車両に搭載された前記複数のカメラと、前記カメラキャリブレーション装置から得られる各カメラのカメラパラメータを用いて前記複数のカメラで撮像された映像同士を補正して合成映像を生成する合成映像生成装置と、前記合成映像を表示する表示装置と、を備えていることを特徴とするカメラキャリブレーションシステム。
【背景技術】
【0002】
従来、ドライバーによる周囲確認を支援する目的で、車載カメラの普及が進められている。また、近年では、車両周囲に取り付けられた複数のカメラで撮像された各映像を視点変換し、その映像を合成して生成した車両周囲の俯瞰映像(車両を真上から見下ろしたような映像)をドライバーに提示するシステムの実用化が進められている。
【0003】
上記のように各カメラで撮像した映像を俯瞰視点に変換して合成映像を生成するためには、焦点距離やレンズ歪みなどの光学的特性や撮像素子サイズなどのカメラ固有の情報(内部パラメータ)、及び各カメラの取り付け位置や角度に関する情報(外部パラメータ)が必要になる。このような内部パラメータと外部パラメータを合わせたカメラパラメータを用いて、各カメラで撮像された映像の俯瞰視点変換を行い、その映像から得られた俯瞰映像を合成することで、俯瞰視点から撮影した映像を仮想的に生成することができる。
【0004】
ところで、各カメラは設計値に準じた位置や角度で車両に取り付けられるが、その際、必然的に誤差が生じる。このような誤差があるにも関わらず、設計値に基づいて俯瞰映像を生成した場合、必ずしも俯瞰視点から撮影した映像にはならず、誤差の分だけズレのある映像が生成される。特に、複数の映像を合成する場合、そのズレの影響が合成画像における各カメラの画像の境界領域に顕著に現れ、単一カメラの場合よりも見た目に与える影響は大きくなる。このような問題を解決するため、キャリブレーションあるいは校正と呼ばれる、カメラパラメータの設計値からの誤差の補正が行われる。
【0005】
このキャリブレーションは、極めて高精度に前記誤差を補正することが要求されるため、カメラの据え付け状態を機械的に調整する方法ではなく、現在の据え付け状態を撮影した映像から推定する方法が採用される。撮影した映像から据え付け状態を推定する方法としては、一般に、紙や板などに印字されたパターン(キャリブレーションチャート)を予め決められた位置に精密に設置して撮影し、実際に撮影された映像が、設計値どおりに製造・設置されたカメラで撮影した場合の映像と一致するようにカメラパラメータを修正する方法が採用され、その際には、カメラの取り付け状態そのものを調整するのではなく、カメラの取り付け位置や角度に関するプログラム中の数値を画像の変換を介して修正する方法が採用されている。
【0006】
ところで、車両の出荷時に工場の生産ラインなどでキャリブレーションを行う際には、人が誰も乗っていない空車状態、あるいは、運転席にドライバーが乗っている場合などの特定の積載状態を再現してキャリブレーションが実施される。したがって、空車状態、あるいは、特定の積載状態などといった、実際にキャリブレーションを行った状態と同じ状態では、映像にズレは生じない。
【0007】
しかしながら、実際にユーザーが車両を使用する際には、乗車する人数や座る場所、荷物の積載状態などが種々に変化する。そして、車両の積載状態が変化すると、車両の姿勢も変化し、それに伴って、地面に対するカメラの据え付け状態も変化する。すなわち、カメラパラメータが変化して誤差が生じることとなり、そのカメラパラメータの誤差によって、映像にズレが生じるといった問題があった。
【0008】
このような問題に対し、特許文献1、2には、車両の走行中にカメラパラメータを補正する技術が開示されている。
【0009】
特許文献1に開示されている車両用カメラのオンラインキャリブレーション方法は、少なくとも二つのカメラで路面の隣接部分を撮像し、画像フレーム内で長手方向の道路特徴を特定し、二つの画像フレーム間の単一のラインに一致するように二つのカメラで撮影された少なくとも二つの画像フレーム内で特定された長手方向の道路特徴を選択し、単一のラインの一致度を分析して二つの画像フレーム間のラインのオフセットを決定し、カメラのキャリブレーションのために決定されたラインのオフセットを適用する方法である。
【0010】
また、特許文献2に開示されている車両用カメラのオンラインキャリブレーション方法は、カメラで路面の一部を撮像し、画像フレーム内で長手方向の道路特徴を特定し、特定された長手方向の道路特徴に沿ってポイントを抽出すると共に、予め知られたカメラパラメータを考慮した透視マッピングによってその抽出ポイントを仮想道路平面に変換し、変換された抽出ポイントを車両に対して分析してそのポイントの車両に平行なラインからの偏差を決定し、カメラのオフセット補正を定義するために測定された偏差を用いる方法である。
【発明を実施するための形態】
【0020】
以下、本発明に係るカメラキャリブレーション装置及びカメラキャリブレーションシステムの実施形態を図面を参照して説明する。なお、以下では、4台のカメラを使用し、隣接する2台のカメラで撮像した映像の一部が重畳もしくは隣接する場合について説明するが、システム全体のカメラの台数や重畳もしくは隣接部分を撮像するカメラの台数は、使用者等の要請に応じて適宜変更することができる。
【0021】
<カメラキャリブレーションシステムの実施形態>
図1は、本発明に係るカメラキャリブレーションシステムの実施形態を具現化したシステム構成を示したものである。図示するカメラキャリブレーションシステム100は、主に、4台のカメラ111〜114と、演算装置101と、RAM102と、ROM103と、表示装置104と、車速センサ105と、舵角センサ106と、ヨーレートセンサ107と、入力装置108と、通信装置109とを備えている。
【0022】
各カメラ111〜114は、車両1に搭載され、例えば当該車両1の前後左右に設置される。例えば、前後に設置されるカメラは、ナンバープレート付近の車体に取り付けられ、左右に設置されるカメラは、サイドミラーの下部などに取り付けられる。ここでは、カメラ111を車両1の前側、カメラ112を車両1の後ろ側、カメラ113を車両1の左側、カメラ114を車両1の右側に取り付けたものとする(
図3参照)。各カメラ111〜114は、地面と平行な水平面に対して平行から鉛直下方に向かう方向に光軸が向くように取り付けられる。各カメラ111〜114は、事前に取り決めた既知の設計情報にしたがって取り付けられるが、実際には取り付け誤差が発生しており、この誤差は未知である。また、各カメラ111〜114には、車両1の全周囲の映像を取得できるように、広角の魚眼カメラが採用される。魚眼カメラは広角の映像を取得するために、既知の歪み関数に基づいて画像を歪ませている。各カメラ111〜114で撮影された4つの映像は、演算装置101に送信される。
【0023】
車速センサ105と舵角センサ106とヨーレートセンサ107は、それぞれ車速、舵角、ヨーレートを観測するセンサであり、各センサで観測されたセンサ情報は演算装置101に送信され、演算装置101における演算処理で利用される。
【0024】
入力装置108は、例えばスイッチやボタンなどといった、ユーザーの操作を受け付ける装置であり、キャリブレーション機能のオン/オフ、キャリブレーション結果の初期化、キャリブレーション方法の変更などに利用される。ユーザーの操作を介して当該入力装置108に入力された各種情報は、演算装置101に送信される。
【0025】
通信装置109は、不図示の外部機器との通信に使用される装置であり、演算装置101は、当該通信装置109を介して外部機器から各種情報を受信すると共に、演算装置101で演算された各種情報を外部機器へ送信する。
【0026】
RAM102には、演算装置101における演算処理過程で必要となる数値データ、演算処理途中の処理結果に対するプログラムの変数などが書き込まれる。また、書き込まれたデータは、演算装置101の演算処理過程で適宜必要に応じて読み出されて演算処理に使用される。また、RAM102には、各カメラ111〜114によって撮影された映像データなども格納される。
【0027】
ROM103には、例えば、キャリブレーションを実行するプログラムや、プログラムで必要となる情報のうちで書き換えをせずに利用される情報が事前に格納される。例えば、各カメラの設置位置や角度の設計値(外部パラメータ)、各カメラの焦点距離、画素サイズ、光軸中心、歪み関数など(内部パラメータ)のカメラパラメータが格納される。
【0028】
演算装置101は、各カメラ111〜114や車速センサ105、舵角センサ106、ヨーレートセンサ107、入力装置108、通信装置109などから送信される種々の情報を受け取って、プログラムなどに基づき計算処理を実施する装置である。演算装置101は、例えば、各カメラ111〜114から入力された映像を視点変換・合成し、上方から地面を見下ろしたような映像(俯瞰映像)を生成する計算処理を実施する。詳細には、魚眼カメラからなる各カメラ111〜114で撮影された映像について、ROM103などに事前に格納された既知の歪み関数を用いて映像の歪みを除去した映像を生成し、歪みを除去した各映像を、ROM103などに事前に格納された既知のカメラ取り付けに関する設計値などに基づいて、俯瞰視点から見た映像に視点変換・合成する(合成映像生成装置115)。このような視点変換・合成処理は、公知のカメラの幾何変換式を使って、俯瞰視点映像の特定の画素とそれに対応する各カメラ111〜114の特定の画素を計算し、その画素の輝度値を俯瞰視点映像の画素に割り当てることによって実現できる。対応する画素が小数点を含み、該当する画素がない場合は、公知の輝度の補間処理によって周辺画素の中間輝度を割り当てる処理が行われる。また、演算装置101は、車速センサ105、舵角センサ106、ヨーレートセンサ107、通信装置109の出力結果を用いて演算処理を実行したり、入力装置108の入力結果に従って動作プログラムの切り替え処理を実行する。
【0029】
また、演算装置101には、視点変換・合成されて生成された俯瞰映像が車両1を真上から見下ろした映像となるように、カメラのキャリブレーション(校正処理)を実施するカメラキャリブレーション装置116が内蔵されている。
【0030】
表示装置104は、演算装置101の処理結果を受け取り、ディスプレイなどを用いてその処理結果をユーザーに提示する。例えば、ドライバーに対して各カメラ111〜114の4つの映像を視点変換・合成して生成した俯瞰映像を表示する。また、表示装置104は、車両1の後方を撮影するカメラ112の映像だけを表示するなど、演算装置101の出力に従って表示内容を切り替えることもできる。
【0031】
図2は、製品出荷時及び使用時キャリブレーションを実施するまでの手順を説明したフロー図である。図示するように、製品出荷時のキャリブレーションS205は、例えば、カメラ取り付けS201、乗車状態再現S202、位置調整S203、キャリブレーションチャート撮影S204の後に実施される。
【0032】
カメラ取り付けS201では、各カメラ111〜114を車体へ取り付け、乗車状態再現S202では、車両1に搭乗者が乗っている状態を再現する。例えば、運転席に体重60キロのドライバーが実際に乗ったり、それに相当する荷物を搭載するなどして、実際に発生する乗車状態を再現する。この乗車状態再現S202を実施する理由は、乗車状態によって車両1の姿勢が変化し、それに伴って地面に対するカメラ111〜114の角度などが変動するからである。カメラ111〜114の角度や位置が、設計した取り付け状態と異なる場合、合成映像における各カメラで撮影された映像同士の境界(以下、画像境界という)にズレが発生するため、この変動した角度等を考慮したうえでキャリブレーションを実施する必要があるので、この乗車状態再現S202によって、それに対応したカメラ取り付け状態を再現する。
【0033】
位置調整S203では、車両1とキャリブレーションチャートが予め定められた位置関係になるように調整する。一般的なキャリブレーションでは、キャリブレーションチャートとカメラの位置関係を規定の位置関係に定めたうえでキャリブレーションを実施する。
【0034】
キャリブレーションチャート撮影S204では、車両1に取り付けられたカメラ111〜114で、キャリブレーションチャートを撮影する。
【0035】
そして、製品出荷時のキャリブレーションS205では、各カメラ111〜114で撮影された映像を使ってキャリブレーションを実施する。その際、例えば、公知の技術によってキャリブレーションを実施する。すなわち、設計通りにカメラ111〜114が取り付けられており、かつ規定の位置にキャリブレーションチャートが設置されている場合に、キャリブレーションチャートが映るべき位置を計算し、実際に撮影した映像中のキャリブレーションチャートがその映るべき位置に映るように、プログラム中の画像変換に使用しているカメラパラメータを調整する。このキャリブレーションS205に関しては、例えば、公知の技術である、キャリブレーションチャートと車両1の位置関係が不定でもキャリブレーションを実施できる技術を利用してもよく、この場合には、位置調整S203の手続きが不要になる。
【0036】
ところで、このような手順でキャリブレーションを実施する場合、乗車状態再現S202で実施しているように、特定の乗車状態を想定した上でキャリブレーションを実施していることになり、乗車状態が製品出荷時に実施するキャリブレーション時と異なれば、俯瞰映像における映像境界にズレが生じる。したがって、特定の乗車状態でキャリブレーションを実施するだけでは不十分であり、例えば乗車状態に応じて、その都度キャリブレーションを実施する必要がある。そこで、製品出荷された後における走行中や駐停車中などを含む使用時にも、その際の乗車状態に応じたキャリブレーションを実施する。すなわち、
図2に示すように、製品出荷時のキャリブレーションS205を実施した後、使用時のキャリブレーションS206を実施する。
【0037】
使用時のキャリブレーションS206では、上記した問題に対応するために、演算装置101に内蔵されたカメラキャリブレーション装置116により、走行中や駐停車中などの車両1の使用時に各カメラ111〜114で撮影できる周囲環境の情報を用いて、乗車状態に応じたその都度のキャリブレーションを実施する。本実施形態は、例えば
図2に示す手順により、工場などで一度キャリブレーションが実施された状態を前提とするものの、白線に対する車両の平行性、すなわち白線と車両の相対的な関係を必要とせずに、全てのカメラ111〜114に対するカメラパラメータを推定できる方式を実現するものである。通常、カメラにより撮影される映像の品質確認等を兼ねて、工場出荷時にはキャリブレーションが実施されるため、制約条件として、一度キャリブレーションが実施されたことを前提としても、得られるメリットは大きいと考えられる。
【0038】
図3〜
図5を参照して、上記したカメラキャリブレーション装置116による使用時のキャリブレーションS206を概説する。
【0039】
図3は、使用時キャリブレーションの実施前の俯瞰映像の一例を示したものであり、
図2のS201〜S205の処理などによる工場での製品出荷時キャリブレーションを実施した後、使用時の車両の積載状態が、製品出荷時キャリブレーションにおいて想定した積載状態から変化したときの俯瞰映像の一例を示したものである。
図3に示すように、この俯瞰映像には、道路の白線が表示されているが、車両1の積載状態が事前に想定された積載状態と異なるため、地面に対する各カメラ111〜114の姿勢(角度や位置)が変化しており、各カメラ111〜114の映像境界において、白線にズレが生じている。
【0040】
そこで、使用時キャリブレーションでは、このような状況において、俯瞰映像を補正して白線等のズレがなくなるように、キャリブレーションを実施する。本実施形態では、できるだけ多くのシーンでキャリブレーションを実施でき、かつ安定したキャリブレーションを実施するために、例えば白線などの長手方向の直線的特徴量(直線状を有する特徴量)を撮影した映像を用いてキャリブレーションを実施する。その際、
図3に示すように、車両1の両側に直線的構造物(直線的特徴量、図示例では白線)が撮影されており、少なくとも、カメラ111に2本、カメラ112に2本、カメラ113に1本、カメラ114に1本の直線的構造物が撮影されている必要があり、また、カメラ111およびカメラ112に映る2本の直線的構造物はそれぞれ互いに平行である必要があるが、車両1と直線的構造物の相対的な角度や直線的構造物までの距離などといった、車両1と直線的構造物の相対的な関係は不要である。
【0041】
より詳細には、この使用時キャリブレーションでは、カメラ111〜114のパラメータを直接推定せず、車両1の姿勢、すなわち車両1の姿勢を表すパラメータを推定し、車両1の姿勢を表すパラメータから各カメラ111〜114のカメラパラメータを推定して上記キャリブレーションを実施する。車両1の姿勢を推定するステップは、車両1のピッチ角を推定するステップと、車両1のロール角・高さを同時に推定するステップとに分かれている。車両1のピッチ角を推定するステップでは、車両1の前後に設置されたカメラ111およびカメラ112で撮影された平行な直線の平行性に基づいて車両1のピッチ角の推定を行う。車両1のピッチ角を推定してカメラパラメータの補正を実施すると、
図4で示すような俯瞰映像が得られる。ここでは、カメラ111およびカメラ112に映る平行な直線が俯瞰映像上で平行になるようにカメラパラメータが補正される。その後、車両1のロール角・高さを同時に推定するステップでは、俯瞰映像の映像境界における直線のズレがなくなるように、車両1のロール角および高さを推定する。このように車両1のロール角および高さを推定してカメラパラメータの補正を実施し、車両姿勢の変動に伴った全カメラのカメラパラメータを推定してキャリブレーションを実施した結果、
図5に示すように、映像境界においてズレのない俯瞰映像が得られる。
【0042】
<カメラキャリブレーション装置の実施形態1>
図6は、
図1に示すカメラキャリブレーション装置の内部構成の一例(実施形態1)を示したものであり、上記した使用時キャリブレーションを具現化し得るカメラキャリブレーション装置の内部構成を示したものである。また、
図7は、
図6に示すカメラキャリブレーション装置によるキャリブレーション処理を説明したフロー図である。なお、
図6に示すカメラキャリブレーション装置によるキャリブレーション処理は、ROM103に予め格納されたプログラムがロードされて実施される。
【0043】
図6に示すカメラキャリブレーション装置116は、主に、キャリブレーション実施判定部201と、映像取得部202と、特徴抽出部203と、キャリブレーション部204と、を備えている。
【0044】
カメラキャリブレーション装置116のキャリブレーション実施判定部201は、カメラのキャリブレーションの実施が必要であるか否かを判定する(
図7のS701)。例えば、各カメラ111〜114で撮影された俯瞰映像を構成する4つの映像の全てに白線が映っているシーンに関し、俯瞰映像の各映像境界において白線にズレが発生しているか否かを判定することで、カメラのキャリブレーションの実施が必要か否かを自動的に判定する。ここで、白線にズレが発生しているか否かは、例えば、映像から白線を公知の技術を用いて認識し、その映像中での位置を算出し、予め指定した映像境界位置における位置のズレ量を測定し、そのズレ量が予め指定した閾値を超えているか否かで判定することができる。また、例えばジャイロセンサなどといった車両の姿勢変化を直接推定するセンサを用いて、車両への積載状況が変化したことを検知することで、キャリブレーションの実施が必要か否かを判定するなどの方法を用いてもよい。また、後述する特徴抽出部203により抽出された直線的特徴量(例えばRAM102に一時的に格納された、破線を含む白線、縁石、道路端境界などに関する情報)などを利用し、俯瞰映像の各映像境界における直線的特徴量のズレ量と共に、映像中の車両の両側(周囲)にある互いに平行な直線的特徴量の平行性を用いて、カメラのキャリブレーションの実施が必要か否かを判定するなどの方法を用いてもよい。
【0045】
キャリブレーション実施判定部201によりカメラのキャリブレーションの実施が必要であると判断された場合、映像取得部202は、車両1に取り付けられた4つのカメラ111〜114で撮影された映像をRAM102から取得する(
図7のS702)。なお、各カメラ111〜114で撮影された映像に同期ズレがあると、それがキャリブレーションの誤差としてあらわれるため、RAM102には、各カメラ111〜114で撮影された映像が完全に同期して保存されるか、あるいは、映像のズレ時間を取得できるかの仕組みがあることが望ましい。なお、映像取得部202は、各カメラ111〜114から直接映像を取得してもよい。
【0046】
特徴抽出部203は、映像取得部202で取得された各カメラ111〜114で撮影された映像において、キャリブレーションに用いる所定の特徴量、特に長手方向(すなわち、車両の前後方向)の直線的特徴量(例えば、破線を含む白線、縁石、道路端境界など)を抽出する(
図7のS703)。この直線的特徴量は、例えば、各カメラ111〜114において、設計された歪み関数を用いて魚眼カメラの歪みを除去した映像を生成し、その映像において公知のエッジ抽出を実施し、エッジ特徴点に関して公知のハフ変換を用いる手法などによって抽出できる。
【0047】
キャリブレーション部204は、特徴抽出部203で得られた特徴量などを利用してカメラのキャリブレーションを実施する。このキャリブレーション部204でのキャリブレーション処理は、工場などで一度キャリブレーションが実施された状態を前提とするものの、長手方向の特徴量に対する車両の平行性、すなわち長手方向の特徴量と車両の相対的な関係は必要とせず、長手方向の特徴量のみで全てのカメラパラメータを推定できる。このキャリブレーション処理では、各カメラ111〜114におけるカメラパラメータを直接推定するのではなく、車両1の姿勢を推定し、その車両1の姿勢を介して全てのカメラパラメータを推定する。各カメラは剛体である車体に取り付けられているため、車体の姿勢変化が発生した場合には、それに連動して各カメラの角度や位置も変動する。例えば、車両1の前側の座席に乗員が乗り、車両1の前側が沈み込めば、車両1の前側に取り付けられたカメラ111の角度は下向きになり、車両1の後ろ側に取り付けられたカメラ112は同じ量の角度だけ上向きになる。車両1の右側の座席に乗員が乗り、車両1の右側が沈み込めば、車両1の右側に取り付けられたカメラ114の角度は下向きになり、車両1の左側に取り付けられたカメラ113の角度は同じ量だけ上向きになる。また、その際には、車両1の前側に取り付けられたカメラ111と車両1の後ろ側に取り付けられたカメラ112は光軸に対してやや右側に回転する。このように、各カメラ111〜114の変動は車体姿勢の変動に連動する。また、車体姿勢の変動に対して、これらのカメラ111〜114の変動は一意に決定されることとなる。このような各カメラ111〜114の車体への連動性を考慮しつつカメラパラメータを推定するために、このキャリブレーション部204でのキャリブレーション処理では、各カメラ111〜114のカメラパラメータを個別に推定するのではなく、車両1の姿勢の推定を実施し、推定された車両1の姿勢から各カメラパラメータを計算する。
【0048】
より詳細には、映像中の長手方向の直線のみを用いてキャリブレーションを実施する場合、各カメラ111〜114個別でカメラパラメータを推定すると、推定不可能なパラメータがある。例えば、仮に車両1と直線の平行性を用いてキャリブレーションを実施する場合、車両1の前側に取り付けられたカメラ111のロール角は、映像中の白線が完全に縦向きになるように補正すれば求めることができる。また、車両1の前側に取り付けられたカメラ111のピッチ角も、直線が複数本撮影されていれば、それらはともに車両1に対して平行であり、且つ直線同士も平行であるため、その直線の平行性を満たすように補正することで推定できる。しかしながら、車両1の前側に取り付けられたカメラ111のヨー角については、ヨー角を変動させても直線の平行性や映像中の直線の角度が変動しないため、補正するための特徴が不足しており、一意に決定することができない。そのため、カメラパラメータを推定することができず、完全にズレのない俯瞰映像を生成することができない。
【0049】
それに対し、走行中などの使用中の車両1の姿勢推定を介してキャリブレーションを実施する場合には、長手方向の直線と車両の相対的な関係がない場合でも、長手方向の直線のみを用いて全てのカメラパラメータを推定できる。あるカメラパラメータを推定するためには、そのカメラパラメータの変動に対して、何らかの観測可能な変化があらわれなければならないが、車両姿勢のパラメータが変動する場合には、観測可能な長手方向の直線に変化があらわれる。具体的には、車両1のピッチ角が変動した場合、俯瞰映像における長手方向の直線の平行性が変化する。また、車両1のロール角が変動した場合、俯瞰映像の映像境界に長手方向の直線のズレが発生する。また、車両1の高さが変動した場合、車両1のロール角が変動する場合とは異なる長手方向の直線のズレが俯瞰映像の映像境界にて発生する。したがって、映像中の長手方向の直線のみで車両姿勢のパラメータを推定でき、車両姿勢が決まれば、車両1に取り付けられた各カメラ111〜114の位置や角度を計算できるため、映像中の長手方向の直線のみで全てのカメラパラメータを推定できる。
【0050】
ただし、このキャリブレーション処理は、工場出荷時などにキャリブレーションが予め実施されている必要がある。工場出荷時にキャリブレーションが完了している場合、そのキャリブレーション時に想定した積載状態においては俯瞰映像にズレがない状態となっている。俯瞰映像におけるズレは、車両1の積載状態の変化に伴う車両姿勢の変動が原因で発生したものであるため、その車両姿勢の変動に伴うカメラ姿勢の変動をキャンセルすれば、元のズレがない俯瞰映像に戻すことができる。したがって、車両姿勢を推定し、その変動に伴うカメラの角度や位置を計算することで、ズレのない俯瞰映像を生成することができる。逆に言えば、キャリブレーションが予め実施されていない場合には、車両姿勢の変動分のカメラ角度や位置の補正を実施しても、初期の未キャリブレーション状態に戻るだけであって、映像のズレは残されたままとなるため、ズレのない俯瞰映像を生成することができない。そのため、このキャリブレーション処理では、事前にキャリブレーションが実施されている必要がある。
【0051】
具体的には、キャリブレーション部204は、姿勢推定部301と並進補正部304とカメラパラメータ算出部305とを有し、姿勢推定部301は、ピッチ角推定302とロール角・高さ・回転中心推定部303とから構成されている。
【0052】
姿勢推定部301のピッチ角推定302は、例えば、車両1の前後に取り付けられたカメラ111、112で撮影された映像における長手方向の直線(直線的特徴量)の平行性を用いて、車両1のピッチ角推定を実施する(
図7のS704)。道路に描かれている白線、または、白線と道路端境界などといった平行な直線が走行中に撮影された場合、この平行な直線は、理想的な俯瞰視点映像においては、平行に表示されるはずである。しかし、車両1のピッチ角の変動がある場合、俯瞰視点映像においてこの平行な直線は「ハの字」状に表示され、平行ではなくなる。カメラ111、112を俯瞰視点に変換した場合に、その直線が平行になるように、車両1のピッチ角を推定する。詳細には、カメラ111、112のそれぞれにおける直線方程式の平行性に基づいて、例えば直線ベクトルの内積を評価関数とし、その内積がカメラ111、112ともにできるだけ1に近い値になるように、車両1のピッチ角の最適化を実施する。ここで使用される直線(直線的特徴量)については、上記した特徴抽出部203で得られている。なお、上記最適化は、最急降下法などの公知の技術を用いれば実現できる。すなわち、例えば、車両1のピッチ角に関する評価関数を求め、評価関数が目的の値に近づくように、車両1のピッチ角を微小変化させる処理を繰り返し実施すればよい。
【0053】
姿勢推定部301のロール角・高さ・回転中心推定部303は、俯瞰映像の映像境界にあらわれている長手方向の直線(直線的特徴量)のズレがなくなるように、車両1のロール角、車両1の高さ、車両1の回転中心を推定する(
図7のS705)。ここで、車両1のピッチ角については、ピッチ角推定部302で得られたピッチ角に固定する。詳細には、俯瞰映像の映像境界にあらわれている長手方向の直線のズレを表す評価関数を設計し、その評価関数が最小となるように、車両1のロール角、車両1の高さ、車両1の回転中心に関する各パラメータを最適化する。ここで、評価関数は、例えば、俯瞰映像の映像境界における直線のズレを、カメラ111とカメラ113の映像境界、カメラ111とカメラ114の映像境界、カメラ112とカメラ113の映像境界、カメラ112とカメラ114の映像境界でそれぞれ算出し、それらの総和をとったものとする。ここで使用される直線(直線的特徴量)については、上記した特徴抽出部203で得られている。なお、上記最適化は、公知の技術を用いて実施されるが、推定するパラメータが複数あるため、最急降下法などのような勾配法に基づくものではなく、大域的最適化法を選択することが望ましい。車両1のロール角、車両1の高さ、車両1の回転中心を微小変化させる処理を、俯瞰映像の映像境界における直線のズレを表す評価関数が最小化されるように繰り返し実施する。なお、ここでは、車両1の回転中心によって、各カメラパラメータが異なることを考慮し、車両1の回転中心も含めて最適化を実施する。
【0054】
並進補正部304は、過去に実施したキャリブレーションから得られる情報などに基づいて、地面に対する車両1の並進(地面に対して平行な方向への移動)に相当するパラメータ(並進パラメータ)、すなわちカメラの高さを除く並進方向の位置(平面視における位置)を補正する(
図7のS706)。ここでは、地面とカメラの絶対的な距離を示す情報を測定していないために、地面に対するカメラの位置を推定することはできないが、実際に生じ得る車体姿勢の変動の範囲では、カメラの並進方向のズレは極めて小さいため、例えばROM103等に保存された製品出荷時キャリブレーションを実施した際の値を利用する。カメラ同士の相対的な位置は、ロール角・高さ・回転中心推定部303によって得られているため、基準となるカメラ(基準カメラ)を一つ選定し(例えばカメラ111)、カメラ111の製品出荷時キャリブレーションの値と現在の値の並進方向の誤差分をキャンセルするように、カメラ111〜114の全ての位置を並進補正する。
【0055】
カメラパラメータ算出部305は、姿勢推定部301で得られた車両1の姿勢と並進補正部304で得られたパラメータから、その車両1の姿勢に対応した各カメラ111〜114の姿勢に関するカメラパラメータを算出する(
図7のS707)。なお、座標変換によって、対応する各カメラ111〜114のカメラパラメータを一意に計算できる。
【0056】
このような構成とすることで、長手方向の特徴量に対する車両の平行性、すなわち長手方向の特徴量と車両の相対的な関係を必要とせず、長手方向の特徴量のみで、全てのカメラのカメラパラメータを精緻に推定でき、そのカメラパラメータを用いて車両の積載状態に応じた高精度の俯瞰映像を生成することができる。
【0057】
<カメラキャリブレーション装置の実施形態2>
ところで、上記した使用時キャリブレーションを実施する際には、例えば、映像から長手方向の直線的特徴量を確実に抽出するために、当該車両が直線路を走行している状態(定常走行状態)で実施することが好ましい。
【0058】
図8は、
図1に示すカメラキャリブレーション装置の内部構成の他例(実施形態2)を示したものである。また、
図9は、
図8に示すカメラキャリブレーション装置によるキャリブレーション処理を説明したフロー図である。
図8に示す形態のカメラキャリブレーション装置116Aは、
図6に示すカメラキャリブレーション装置116に対して、主にセンサ情報取得部と定常走行判定部とデータ利用可否判定部を追加した点が相違しており、その他の構成はほぼ同様である。したがって、以下では、
図6に示すカメラキャリブレーション装置116と異なる構成のみを詳述し、カメラキャリブレーション装置116と同様の構成には同様の符号を付してその詳細な説明は省略する。
【0059】
図8に示すカメラキャリブレーション装置116Aは、主に、キャリブレーション実施判定部201Aと、映像取得部202Aと、特徴抽出部203Aと、キャリブレーション部204Aと、を備えると共に、センサ情報取得部205Aと、定常走行状態判定部206Aと、データ利用可否判定部207Aと、を備えている。
【0060】
キャリブレーション実施判定部201Aが、カメラのキャリブレーションの実施が必要であるか否かを判定し(
図9のS901)、カメラのキャリブレーションの実施が必要であると判断された場合、映像取得部202Aが、車両1に取り付けられた4つのカメラ111〜114で撮影された映像をRAM102から取得する(
図9のS902)。それと共に、センサ情報取得部205Aは、車速センサ105、舵角センサ106、ヨーレートセンサ107などの各種センサのセンサ情報を取得する(
図9のS903)。ここで、これらのセンサ情報は、映像と同期して取得されることが望ましい。なお、
図9に示すS902とS903は、同時に実施してもよいし、S903の後にS902を実施してもよい。
【0061】
定常走行状態判定部206Aは、車両が定常走行状態であるか否かを判定する(
図9のS904)。ここで、定常走行状態とは、加減速や旋回による車両姿勢の変化がなく、直線路を走行している状態である。加減速や旋回による車両姿勢の変化がなく、直線路を走行していることを判定する理由は、車両姿勢が異なる際の映像は、カメラパラメータがそれぞれ異なり、キャリブレーション実施時の特徴量として同時に利用することはできないためであり、また、車両姿勢推定等に用いる特徴量として長手方向の直線的特徴量(例えば、破線を含む白線、縁石、道路端境界など)を用いるので、カーブ走行中などのキャリブレーションに必要な情報がとれないシーンの映像を除外するためである。加減速や旋回による車両姿勢の変化がないことのうち、例えば、加減速がないことは、車速センサ105から取得した情報に基づき、一定車速が一定時間続いていることなどから判定することができる。旋回による変化がないことは、例えば、ヨーレートセンサ107から取得した情報の絶対値が0に近い予め定めた一定の閾値よりも小さいことなどから判定することができる。また、一定以上の速度で舵角(舵角センサ106から取得した情報)が0に近い予め定めた一定の閾値よりも小さい値をとる場合には、ドライバーの操作状況から直線を走行しているとみなすこともできる。
【0062】
定常走行状態判定部206Aにより車両が定常走行状態であると判定された場合、特徴抽出部203Aは、各カメラ111〜114で撮影された映像からキャリブレーションに用いる所定の特徴量を抽出する(
図9のS905)。一方、車両が定常走行状態でないと判定された場合には、各カメラ111〜114で撮影された映像はキャリブレーションに用いることができないために棄却し、次のシーンの映像や各種センサのセンサ情報を取得する。
【0063】
データ利用可否判定部207Aは、各カメラ111〜114で撮影された映像にキャリブレーションに利用可能な平行な白線(直線的特徴量)が映っているか否かを判定する(
図9のS906)。詳細には、データ利用可否判定部207Aは、カメラ111〜114に映っている白線(直線的特徴量)を画像認識し、特徴抽出部203Aにより抽出した特徴量が直線状に並んでいること、及び、過去に撮影した映像と現時点で撮影された白線の映り方の差分が小さいことの双方を満たすか否かを判定する。特徴抽出部203Aにより抽出した特徴量が直線状に並んでいるか否かは、その白線の直線度を測定することで判定することができる。たとえば、白線の各エッジ点を直線フィッティングし、フィッティング誤差が予め定めたある一定の値以下である場合には、直線であるとみなすことができ、フィッティング誤差が予め定めたある一定の値よりも大きい場合には、直線ではないとみなすことができる。また、過去に撮影した映像と現時点で撮影された白線の映り方の差分が小さいか否かは、たとえば、車両ピッチ角推定処理と同様に白線が平行になる角度を算出し、過去に算出された角度の平均値からの角度誤差が予め定めたある一定の値以下である場合には、差分が小さいとみなすことができ、角度誤差が予め定めたある一定の値よりも大きい場合には、差分が大きいとみなすことができる。
【0064】
データ利用可否判定部207Aによりデータ利用可能であると判定された場合、キャリブレーション部204Aは、上記と同様、特徴抽出部203Aで得られた特徴量などを利用して、各カメラの各カメラパラメータを算出してキャリブレーションを実施する(
図9のS907〜S910)。一方、データ利用不可であると判定された場合には、各カメラ111〜114で撮影された映像はキャリブレーションに用いることができないために棄却し、次のシーンの映像や各種センサのセンサ情報を取得する。
【0065】
このような構成とすることで、長手方向の特徴量に対する車両の平行性、すなわち長手方向の特徴量と車両の相対的な関係を必要とせず、長手方向の特徴量のみで、全てのカメラのカメラパラメータをより精緻に且つ効率的に推定でき、そのカメラパラメータを用いて車両の積載状態に応じたより高精度の俯瞰映像を生成することができる。
【0066】
<カメラキャリブレーション装置の実施形態3>
また、上記した使用時キャリブレーションを実施する際には、同じ位置で撮影された直線的特徴量はデータとして意味がないため、映像中における違う位置で撮影された直線的特徴量が複数集められたことを確認した上で実施することが好ましい。
【0067】
図10は、
図1に示すカメラキャリブレーション装置の内部構成の更に他例(実施形態3)を示したものである。また、
図11は、
図10に示すカメラキャリブレーション装置によるキャリブレーション処理を説明したフロー図である。
図10に示す形態のカメラキャリブレーション装置116Bは、
図8に示すカメラキャリブレーション装置116Aに対して、主にデータ蓄積判定部を追加した点が相違しており、その他の構成はほぼ同様である。したがって、以下では、
図8に示すカメラキャリブレーション装置116Aと異なる構成のみを詳述し、カメラキャリブレーション装置116Aと同様の構成には同様の符号を付してその詳細な説明は省略する。
【0068】
図10に示すカメラキャリブレーション装置116Bは、主に、キャリブレーション実施判定部201Bと、映像取得部202Bと、特徴抽出部203Bと、キャリブレーション部204Bと、センサ情報取得部205Bと、定常走行状態判定部206Bと、データ利用可否判定部207Bと、を備えると共に、データ蓄積判定部208Bを備えている。
【0069】
キャリブレーション実施判定部201Bが、カメラのキャリブレーションの実施が必要であるか否かを判定し(
図11のS1101)、カメラのキャリブレーションの実施が必要であると判断された場合、映像取得部202Bが、車両1に取り付けられた4つのカメラ111〜114で撮影された映像をRAM102から取得する(
図11のS1102)と共に、センサ情報取得部205Bが、各種センサのセンサ情報を取得する(
図11のS1103)。
【0070】
定常走行状態判定部206Bは、センサ情報取得部205Bで得られたセンサ情報等に基づいて、車両が定常走行状態であるか否かを判定し(
図11のS1104)、車両が定常走行状態であると判定された場合、特徴抽出部203Bは、各カメラ111〜114で撮影された映像からキャリブレーションに用いる所定の特徴量を抽出する(
図11のS1105)。また、データ利用可否判定部207Bは、特徴抽出部203Bにより抽出された抽出データ等に基づいて、その抽出データがキャリブレーションに利用可能であるか否かを判定し(
図11のS1106)、データ利用可能であると判定された場合、その抽出データをデータ蓄積部としてのRAM102などに保存・蓄積していく(
図11のS1107)。例えば、特徴抽出部203Bは、当該特徴抽出部203Bで得られた直線を表す方程式の係数を保存する。
【0071】
データ蓄積判定部208Bは、キャリブレーションに必要な十分の量のデータが蓄積されてデータ蓄積が完了したか否かを判定する(
図11のS1108)。車両1に取付けられたカメラ111〜114のそれぞれについて、同じ位置に撮影された直線的特徴量(例えば、破線を含む白線、縁石、道路端境界など)はデータとして意味がないため、違う位置(車両1の周囲の前後左右等)に撮影された直線的特徴量が複数集める必要がある。そこで、データ蓄積判定部208Bは、例えば、カメラ111〜114のそれぞれについて、予め幾つかの領域を設定しておき、その各領域を通る直線データが全領域について万遍無く得られたか否かを判断して、キャリブレーションに必要な量のデータが蓄積されたか否かを判定する。
【0072】
データ蓄積判定部208Bによりキャリブレーションに必要な量のデータが蓄積されたと判定された場合、キャリブレーション部204Bは、データ蓄積部としてのRAM102などに蓄積された特徴量などを利用して、各カメラの各カメラパラメータを算出してキャリブレーションを実施する(
図11のS1109〜S1112)。
【0073】
このような構成とすることで、長手方向の特徴量に対する車両の平行性、すなわち長手方向の特徴量と車両の相対的な関係を必要とせず、長手方向の特徴量のみで、全てのカメラのカメラパラメータを更に精緻に且つ効率的に推定でき、そのカメラパラメータを用いて車両の積載状態に応じた更に高精度の俯瞰映像を生成することができる。
【0074】
このように、本実施形態によれば、映像から抽出される所定の特徴量、特に直線的特徴量に基づいて車両の姿勢を推定し、製品出荷時などの過去に実施したキャリブレーションから得られる情報に基づいてカメラの地面に対する並進方向の位置を補正し、その車両の姿勢とカメラの地面に対する並進方向の位置とに基づいて、カメラの地面に対する姿勢に関するカメラパラメータを算出することにより、車両の積載状態が変化する状況下でもキャリブレーションを実施できると共に、例えば白線に対する車両の平行性を利用するといった制約を設けることなく、全てのカメラパラメータを精緻に推定してキャリブレーションを実施することができるため、あらゆる状況下で車両の積載状態に応じた高精度の俯瞰映像を生成することができる。
【0075】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形形態が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0076】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。