【解決手段】キャリブレーション装置100は、自車両1Aに搭載され、自車両1Aに搭載されたカメラ4の撮影画像のうち、自車両1Aの周囲の路面が撮影された撮影画像の領域に含まれる特徴点を抽出する特徴点抽出部154と、撮影画像のうち、自車両1Aの車体10が撮影された撮影画像の領域に含まれる車体特徴点を抽出する自車体認識部153と、特徴点抽出部154により抽出された特徴点と、自車体認識部153により抽出された車体特徴点とに基づき、自車両1Aに対するカメラ4の設置状態を示す外部パラメータ125を校正する外部パラメータ推定部158と、を備える。
前記第2特徴点抽出部は、前記撮影画像が、前記車両の側方を撮影した撮影画像である場合、前記第2特徴点として、前記車両の側面の下端エッジを抽出する、ことを特徴とする請求項1から5のいずれか一項に記載のキャリブレーション装置。
前記第2特徴点抽出部は、前記撮影画像が、前記車両の前方又は後方を撮影した撮影画像である場合、前記第2特徴点として、バンパーのエッジを抽出する、ことを特徴とする請求項1、7、8、9及び10のいずれか一項に記載のキャリブレーション装置。
前記第1特徴点抽出部は、前記第1特徴点として、路面に表示された路面標示に含まれるエッジとエッジとの交点であるコーナーエッジを抽出する、ことを特徴とする請求項1から11のいずれか一項に記載のキャリブレーション装置。
【発明を実施するための形態】
【0011】
[第1実施形態]
1.キャリブレーション装置の構成
以下、添付図面を参照して本発明の実施形態について説明する。
図1は、本発明を適用したキャリブレーション装置100が搭載された車両の構成を示すブロック構成図である。以下の説明において、キャリブレーション装置100が搭載された車両を「自車両1A」と表記する。
自車両1Aには、キャリブレーション装置100が搭載される。キャリブレーション装置100は、本発明のキャリブレーション方法を実行する装置である。キャリブレーション装置100は、自車両1Aに対するカメラ4の設置状態を示す外部パラメータ125を補正する装置である。カメラ4の設置状態を示す外部パラメータ125には、カメラ4の3軸角度や高さが含まれる。3軸角度は、カメラ4の自車両1Aに対する姿勢を示す姿勢角であり、3軸角度には、ロール角、ピッチ角及びヨー角がある。カメラ4の高さとは、例えば、カメラ4の基準位置からの高さである。基準位置には、例えば、自車両1Aの車体10や、路面が選択される。外部パラメータ125の詳細については後述する。
【0012】
キャリブレーション装置100は、通信インターフェイス5を介して不図示の車載ネットワークに接続される。車載ネットワークには、車速センサ2や、舵角センサ3、カメラ4等が接続される。車載ネットワークは、例えば、CANや、LIN(Local Interconnect Network)、FlexRay(登録商標)、イーサネット(登録商標)等の多様なネットワークを採用可能である。
【0013】
車速センサ2は、自車両1Aの車速を検出するセンサである。車速センサ2は、検出した車速を示すセンサデータをキャリブレーション装置100に出力する。舵角センサ3は、自車両1Aのステアリングの操舵角を検出するセンサである。舵角センサ3は、検出した操舵角を示すセンサデータをキャリブレーション装置100に出力する。
【0014】
カメラ4は、例えば、自車両1Aの車幅方向の左右両サイドに取り付けられる。自車両1Aの左サイドに取り付けられたカメラ4を左カメラ4Aといい、自車両1Aの右サイドに取り付けられたカメラ4を右カメラ4Bという。また、左カメラ4Aと右カメラ4Bとを総称する場合には、カメラ4と表記する。
【0015】
カメラ4は、自車両1Aの側方を含む周囲を撮影する。カメラ4の撮影範囲には、自車両1Aが走行する路面が含まれる。カメラ4の自車両1Aとの位置や姿勢等の設計値は、外部パラメータ初期値123として後述するフラッシュメモリ115に格納される。ただし、カメラ4の自車両1Aへの取り付けが設計値からずれが生じることは避けられず、実際の取り付け状態に対応する理想的な外部パラメータ125と、設計値である外部パラメータ初期値123とは一致しない。
【0016】
カメラ4は、レンズ、撮像素子、及び撮像素子の受光状態から撮影画像を生成するデータ処理回路を備える。カメラ4は、生成した撮影画像を、通信インターフェイス5を介してキャリブレーション装置100に出力する。
【0017】
また、キャリブレーション装置100には、I/Oインターフェイス6を介して表示装置7が接続される。I/Oインターフェイス6は、データが入出力されるインターフェイスである。表示装置7は、例えば、液晶パネル等の表示パネルを備え、キャリブレーション装置100の制御に従い情報を表示する。
【0018】
キャリブレーション装置100は、メモリ110と、プロセッサ150とを備えるコンピュータ装置である。メモリ110は、ROM(Read Only Memory)111、RAM(Random access memory)113及びフラッシュメモリ115を備える。
ROM111は、キャリブレーション装置100が実行するコンピュータプログラムや、パラメータを格納する。本実施形態のROM111は、走行中キャリブレーションプログラム121、カメラ利用プログラム122、外部パラメータ初期値123及び車体設計情報124を格納する。ROM111は、本発明の「記憶部」に対応する。また、車体設計情報124は、本発明の「車体の設計情報」に対応する。
【0019】
走行中キャリブレーションプログラム121、及びカメラ利用プログラム122は、プロセッサ150が実行するコンピュータプログラムである。走行中キャリブレーションプログラム121は、外部パラメータ125のキャリブレーションのときにプロセッサ150が実行するプログラムである。
【0020】
カメラ利用プログラム122は、カメラ4の撮影画像に基づいて、自車両1Aと、自車両1Aの周囲に存在する他の車両(以下、他車両1Bという)との距離を算出するプログラムである。
プロセッサ150は、カメラ利用プログラム122の実行時に、カメラ4の外部パラメータ125及び内部パラメータを必要としており、これらのパラメータをフラッシュメモリ115から読み込む。カメラ利用プログラム122を実行するプロセッサ150は、フラッシュメモリ115に外部パラメータ125及び内部パラメータが保存されていない場合、ROM111に格納されている内部パラメータ初期値及び外部パラメータ初期値123を読み込む。
【0021】
外部パラメータ初期値123は、外部パラメータ125の設計値である。
車体設計情報124は、例えば、車体側面のエッジ等の車体特徴点の設計上の位置を示すCADデータである。カメラ4が設計通りに自車両1Aの車体10(
図4参照)に設置された場合、外部パラメータ125と、車体設計情報124とに基づき、車体10が撮影された撮影画像の位置を計算することができる。
【0022】
また、ROM111には、レンズの歪みを示すパラメータであるレンズ歪み係数、光軸中心、焦点距離、撮像素子の画素数及び寸法が内部パラメータ初期値として格納される。
【0023】
RAM113には、プロセッサ150が、コンピュータプログラムの実行時に処理されるデータや処理結果のデータが格納される。本実施形態のRAM113には、外部パラメータ125及び特徴点登録テーブル126が格納される。
【0024】
外部パラメータ125は、前述したようにカメラ4の設置状態を示すパラメータであり、カメラ4の3軸角度や高さが含まれる。また、外部パラメータ125は、カメラ4の撮影画像を俯瞰変換する場合に使用される。俯瞰変換とは、カメラ4の撮影画像を、あたかも自車両1Aの上方に仮想的に配置されたカメラによって撮影された画像のように変換することをいう。また、外部パラメータ125は、走行中キャリブレーションプログラム121を実行するプロセッサ150により算出される。RAM113に格納される外部パラメータ125は、キャリブレーション過程における途中の値であり、キャリブレーション終了まで書き換えられながら使用される。
【0025】
フラッシュメモリ115は、不揮発性の半導体メモリである。本実施形態のフラッシュメモリ115には、走行中キャリブレーションプログラム121を実行するプロセッサ150により生成された外部パラメータ125が格納される。
【0026】
ここで、
図2を参照しながら特徴点登録テーブル126について説明する。
図2は、特徴点登録テーブル126の一例を示す構成図である。
特徴点登録テーブル126の1レコードには、1の特徴点に関する情報が登録される。1の特徴点に関する情報には、特徴点の座標と、特徴点の追跡状態とが含まれ、これらの特徴点に関する情報が特徴点識別子に対応づけて登録される。
特徴点は、例えば画像中の壁の角、縁石の角、破線の角、横断歩道の角、等のエッジの交点、すなわちコーナーエッジである。コーナーエッジは、例えば公知の技術であるハリスオペレータを適用することにより抽出することができる。
【0027】
特徴点識別子は、特徴点を識別する識別情報である。本実施形態では、特徴点識別子が、抽出された特徴点の順番に付された通し番号である場合について説明するが、特徴点識別子は、各特徴点を識別可能な情報あればよい。
【0028】
特徴点の座標は、特徴点が検出された撮影画像上の座標である。特徴点の座標は、この特徴点が検出された撮影画像の撮影時刻に対応づけて特徴点登録テーブル126に登録される。以下では、撮影画像に設定される座標系を画像座標系という。この画像座標系は、撮影画像の左上を原点とし、右をX軸の正方向、下をY軸の正方向とする座標系である。また、
図2には、t1、t2、t3、t4及びt5の5つの撮影時刻が特徴点登録テーブル126に登録された例を示すが、特徴点登録テーブル126に登録される撮影時刻の数は、後述する特徴点軌跡の移動速度の算出に十分な数であればよい。特徴点登録テーブル126に登録する撮影時刻の数を増やすとテーブルサイズが無限に大きくなりメモリを圧迫するため、公知のリングバッファ技術等により、テーブルを循環的に活用する。
また、撮影時刻は、撮影画像が撮影された時刻ではなくてもよく、例えば、キャリブレーション装置100の電源がオンにされてからの経過時刻でもよいし、特徴点の座標を特徴点登録テーブル126に登録した時刻であってもよい。
【0029】
図2に示す特徴点登録テーブル126には、時刻t1に撮影された撮影画像から3つの特徴点が抽出され、時刻t2、t3、t4に撮影された撮影画像からは4つの特徴点が抽出され、時刻t5に撮影された撮影画像からは1つ特徴点が抽出されたことが示されている。
【0030】
また、時刻t2、t3の撮影画像から抽出された4つの特徴点のうち、特徴点識別子1001、1002及び1003の特徴点は、時刻t1から追跡が継続されていることを表している。
時刻t5に撮影された撮影画像からは、特徴点識別子1001、1003、1004の特徴点が抽出されなかったため、特徴点登録テーブル126の対応するフィールドには「x」マークが登録される。
【0031】
特徴点の追跡状態は、特徴点の追跡が完了したか否かを示す情報である。
図2に示す特徴点登録テーブル126の例では、特徴点の追跡が完了した特徴点の追跡状態のフィールドには「OK」が登録され、特徴点の追跡が完了していない特徴点の状態のフィールドには「未」が格納される。なお、後述する外部パラメータ推定部158は、特徴点登録テーブル126の追跡状態が、追跡完了、すなわち、追跡状態のフィールドに「OK」が登録された特徴点の軌跡を使用して、外部パラメータ125の校正を行う。
【0032】
また、
図2に示す特徴点登録テーブル126は、左カメラ4Aの撮影画像と、右カメラ4Bの撮影画像とでそれぞれ別々に作成される。すなわち、左カメラ4Aの撮影画像から検出された特徴点に関する情報が登録された特徴点登録テーブル126と、右カメラ4Bの撮影画像から検出された特徴点に関する情報が登録された特徴点登録テーブル126とがそれぞれ別々に作成される。左カメラ4Aの撮影画像から検出された特徴点に関する情報が登録された特徴点登録テーブル126を、左特徴点登録テーブル126Aという。また、右カメラ4Bの撮影画像から検出された特徴点に関する情報が登録された特徴点登録テーブル126を、右特徴点登録テーブル126Bという。
また、特徴点登録テーブル126の1レコードに、検出された特徴点が、左カメラ4Aの撮影画像から検出された特徴点であるのか、右カメラ4Bの撮影画像から検出された特徴点であるのかを登録するフィールドを設けてもよい。この場合、作成する特徴点登録テーブル126の数を1つにすることができる。
【0033】
図1に戻り、キャリブレーション装置100の構成について引き続き説明する。
プロセッサ150は、CPU(Central Processing Unit)やマイクロプロセッサ等の演算装置である。プロセッサ150は、単一のプロセッサにより構成してもよいし、複数のプロセッサにより構成することも可能である。また、プロセッサ150は、メモリ110の一部又は全部や、その他の回路と統合されたSoC(System on Chip)や、FPGA(field-programmable gate array)により構成してもよい。また、プロセッサ150は、プログラムを実行するCPUと、所定の演算処理を実行するDSP(Digital Signal Processor)との組合せによりプロセッサ150を構成してもよい。さらに、プロセッサ150は、プロセッサ150の機能の全てをハードウェアに実装した構成としてもよく、プログラマブルデバイスを用いて構成してもよい。
【0034】
図1には、キャリブレーション装置100が備える機能的構成を機能単位のブロックで示した機能ブロック図を示す。機能的構成とは、プロセッサ150が走行中キャリブレーションプログラム121を実行することで、実現される機能の構成である。
キャリブレーション装置100は、機能ブロックとして、画像取得部151、車両情報取得部152、自車体認識部153、特徴点抽出部154、追跡部155、蓄積部156、実施判定部157、外部パラメータ推定部158及び採否判定部159、距離検出部160及び表示制御部161を備える。
【0035】
図3は、走行中キャリブレーションプログラム121を実行するプロセッサ150の動作を説明する説明図である。
図3には、プロセッサ150が走行中キャリブレーションプログラム121を実行する場合の機能ブロック間、及び、機能ブロックとメモリ110との間のデータの流れが示される。
図3を参照しながらキャリブレーション装置100が備える機能ブロックの動作について説明する。
【0036】
画像取得部151は、カメラ4に撮影を実行させる。カメラ4は、画像取得部151に撮影の実行が指示されると、例えば毎秒30回等の高い頻度で撮影を実行し、撮影により得られた撮影画像をキャリブレーション装置100に出力する。画像取得部151は、撮影画像が入力されるごとに、入力された撮影画像を特徴点抽出部154及び追跡部155に出力する。また、画像取得部151は、処理負荷を低減するため、入力された撮影画像を、所定回に1回、特徴点抽出部154及び追跡部155に出力する構成であってもよい。
【0037】
車両情報取得部152には、車速センサ2から車速を示すセンサデータが入力され、舵角センサ3から舵角を示すセンサデータが入力される。車両情報取得部152は、入力されたセンサデータが示す車速や舵角を、車両情報として実施判定部157及び外部パラメータ推定部158に出力する。車両情報取得部152は、入力されたセンサデータが示す車速及び舵角を瞬時値として実施判定部157及び外部パラメータ推定部158に出力してもよいし、車速及び舵角をそれぞれ積分演算等して実施判定部157及び外部パラメータ推定部158に出力してもよい。
【0038】
自車体認識部153は、画像取得部151から入力される撮影画像に画像処理を施して、自車両1Aの車体10の特徴点である車体特徴点を抽出する。自車体認識部153は、公知の技術であるソーベルフィルタ等を用いて、車体10の側面下端のエッジを車体特徴点として抽出する。自車体認識部153は、抽出した車体特徴点の画像座標系における座標をRAM113に格納する。自車体認識部153は、本発明の「第2特徴点抽出部」に対応する。また、自車体認識部153が抽出する車体特徴点が、本発明の「第2特徴点」に対応する。
【0039】
特徴点抽出部154は、画像取得部151から入力される撮影画像に画像処理を施し、自車両1Aの車体10から離れた車両周囲に存在する特徴点を抽出する。特徴点抽出部154は、上述したように、コーナーエッジを抽出する。特徴点抽出部154は、抽出したコーナーエッジの画像座標系における座標をRAM113に格納する。特徴点抽出部154は、本発明の「第1特徴点抽出部」に対応する。また、特徴点抽出部154が抽出する特徴点は、本発明の「第1特徴点」に対応する。
【0040】
追跡部155には、画像取得部151から撮影画像が入力される。また、追跡部155は、特徴点抽出部154が抽出し、RAM113に格納された特徴点の座標を読み出す。追跡部155が読み出す特徴点の座標は、特徴点抽出部154によって抽出された座標であって、画像取得部151から入力される撮影画像の1フレーム前の撮影画像から抽出された特徴点の座標である。
【0041】
追跡部155は、異なる時刻に撮影された撮影画像の同一の特徴点を追跡して特徴点の軌跡である特徴点軌跡を算出する。特徴点軌跡は、本発明の移動軌跡に対応する。追跡部155は、1フレーム前の撮影画像から得られた特徴点を対象として、特徴点を追跡する。すなわち、追跡部155は、1フレーム前の撮影画像から得られた特徴点と同一の特徴点を、入力された撮影画像から検出して特徴点軌跡を算出する。特徴点の追跡には、既知の追跡手法であるSAD(Sum of Absolute Difference)やSSD(Sum of Squared Difference)、LK(Lucas‐Kanade)法等を用いることができる。追跡部155は、算出した特徴点軌跡に関する情報を蓄積部156に出力する。
【0042】
蓄積部156は、追跡部155から入力された特徴点軌跡に関する情報を特徴点登録テーブル126に登録する。さらに、蓄積部156は、追跡部155から入力された特徴点軌跡に関する情報を実施判定部157に出力する。
【0043】
実施判定部157は、蓄積部156から入力される特徴点軌跡に関する情報に基づいてキャリブレーションの実施の可否を判定する。特徴点軌跡の総数が少ない状態でキャリブレーションを実施すると、誤差系列が含まれていた場合に大きく誤ったキャリブレーション結果となる。このため、実施判定部157は、特徴点の追跡状態のフィールドに「OK」が登録された特徴点の数が、あらかじめ定めた所定の数以上になると、外部パラメータ推定部158に、キャリブレーションの実行指令を出力する。
【0044】
また、キャリブレーションを実施するためには、自車中心から見て、進行方向の左側と右側の領域にそれぞれ特徴点軌跡が必要となる。実施判定部157は、左特徴点登録テーブル126Aと、右特徴点登録テーブル126Bとにおいて、追跡状態のフィールドに「OK」が登録された特徴点の数が、あらかじめ定めた所定の数以上になった場合に、外部パラメータ推定部158にキャリブレーションの実行指令を出力する。
【0045】
外部パラメータ推定部158は、本発明の「校正部」に対応し、複数得られた特徴点軌跡が同一平面上に存在すると仮定してカメラ4の外部パラメータ125を算出する。外部パラメータ推定部158は、追跡部155が算出した特徴点軌跡の位置、すなわち特徴点登録テーブル126に登録された特徴点の位置を現在の外部パラメータ125を用いて自車両1Aの上部から見下ろしたように俯瞰変換する。
【0046】
次に、外部パラメータ推定部158は、俯瞰視点での特徴点軌跡の角度や長さを用いて、カメラ4の3軸角度及び高さを推定する。カメラ4の3軸角度及び高さは、自車両1Aに対するカメラ4の設置状態を示すパラメータに対応する。特徴点登録テーブル126に登録される特徴点軌跡は、自車両1Aが直進している場合に、自車両1Aが接地する路面平面から取得した特徴点軌跡である。このため、カメラ4の3軸角度と高さが演算に使用した外部パラメータ125と一致するならば、俯瞰視点での複数の特徴点軌跡は平行かつ俯瞰映像縦方向に垂直であり、所定の長さとなる。この特徴点軌跡が理想軌跡である。
【0047】
また、カメラ4の3軸角度と高さが、演算子に使用した外部パラメータ125と一致しない場合、すなわち外部パラメータ125に誤差がある場合、俯瞰視点での特徴点軌跡が理想軌跡に対してそれぞれ特徴的な差異が生じる。ピッチ角に誤差がある場合、俯瞰視点での特徴点軌跡がハの字状に開く。ヨー角に誤差がある場合は、俯瞰視点での自車両1Aの左右の特徴点軌跡に、長さの差が生じる。ロール角に誤差がある場合、特徴点軌跡の全体が斜めに回転する。カメラ4の高さに誤差がある場合は、特徴点軌跡の長さが所定の長さから差異が生じる。
【0048】
外部パラメータ推定部158は、理想軌跡に近づくように公知の最適化技術を用いて外部パラメータ125の値を変化させることで、外部パラメータ125の校正(キャリブレーション)を実現する。ただし、理想軌跡が成立するのは、路面が平面と見なせる範囲に限られる。実際の道路には、道路に雨水を滞留させないため、法令により車道の幅方向に数%の排水勾配がつけられている。従って、平面的でない路面も画像に含まれてしまう。この影響は特定の角度に顕著に表れ、この特定の角度については、精度良く推定することが困難になる。そこで、排水勾配で推定が困難になる角度については車体10を参照して推定する。最適化処理による推定終了後、外部パラメータ125を採否判定部159に出力する。
【0049】
採否判定部159には、外部パラメータ推定部158から外部パラメータ125が入力される。採否判定部159は、入力された外部パラメータ125を最終的なパラメータとして採用するか否かを判定する。採否判定部159は、入力された外部パラメータ125を、最終的なパラメータとして採用してよいと判定した場合、外部パラメータ125をフラッシュメモリ115に格納する。また、採否判定部159は、入力された外部パラメータ125を、最終的なパラメータとして不採用と判定した場合、推定途中の外部パラメータ125としてRAM113に格納する。RAM113に格納された外部パラメータ125は、次の画像が入力される際に初期値として利用される。また、採否判定部159は、特徴点登録テーブル126に登録した特徴点に関する情報を初期化する。
【0050】
採否判定部159は、入力された外部パラメータ125を、最終的なパラメータとしてよいか否かの判定を、収束性判定、回数判定、及び画像判定の3つの判定により判定する。収束性判定は、外部パラメータ125の過去値との比較により、外部パラメータ125の値の変動が十分小さいか否かを判定する。すなわち、採否判定部159は、外部パラメータ125の値が、予め定めた所定範囲内にあるか否かを判定する。回数判定は、外部パラメータ125を複数回検証して所定の範囲内で同じ値が得られている否かの判定である。画像判定は、俯瞰画像上で検証して、正しい俯瞰図とみなせる映像になっている否かの判定である。
【0051】
採否判定部159は、収束性判定、回数判定、及び画像判定の全てを満たす場合に、最終パラメータとして採用してよいと判定し、入力された外部パラメータ125をフラッシュメモリ115に書き込む。採否判定部159が、外部パラメータ125をフラッシュメモリ115に書き込むことで、外部パラメータ125の校正が終了する。採否判定部159は、収束性判定及び画像判定のみ満足すると判断する場合は、回数判定を満たした回数をカウントアップし、RAM113に格納された特徴点列と演算途中の外部パラメータ125をクリアし、初期状態から再開始する。
【0052】
距離検出部160は、カメラ4の撮影画像に基づいて、他車両1Bとの距離を算出する。距離検出部160は、カメラ4の撮影画像を、外部パラメータ125及び内部パラメータを用いて補正し、補正後の撮影画像に基づいて他車両1Bとの距離を算出する。
【0053】
表示制御部161は、表示装置7の表示を制御する。表示制御部161は、距離検出部160が検出した他車両1Bとの距離が、予め設定された設定距離以下になると、表示装置7に表示させる表示データを生成し、生成した表示データを表示装置7に出力する。この表示データは、自車両1Aの運転者に危険を報知するメッセージが含まれる。
【0054】
図4は排水勾配の推定への影響を説明する図である。
図4(a)は道路の平面図、
図4(b)は道路の断面図、
図4(c)は特徴点の移動速度を示す図である。
図4(a)〜
図4(c)では共通するXYZ軸を定義する。ただし、画像座標系におけるX軸及びY軸と区別するために、
図4に示す座標系を「空間座標系」と呼ぶ。空間座標系において、X軸は道路の幅方向に平行であり、Y軸は自車両1Aの進行方向に平行であり、Z軸は天地方向を示す。
【0055】
車道には白線L201と、中央線L202と、白線L203とが描画されている。中央線L202を挟んで自車両1Aの逆側には、他車両1Bが対向車線を走行している。
図4(a)に示す破線Mは、車道の勾配の頂点位置を示す。以下、頂点位置Mと表記する。自車両1Aが走行する車道は、雨水の排水等を目的として、法令により車道の幅方向に数%の勾配、すなわち横断勾配を有することが定められている。このため、車道の中央部が高く、道路の幅方向に向かってなだらかに低くなる構成を有することが多い。ただし、横断勾配の頂点位置Mと、中央線L202の幅方向中央部とが一致しないこともある。
図4に示す例では、中央線L202よりも図示右側に勾配の頂点位置Mが位置している。
【0056】
図4(b)は車道の断面図であり、図示横方向の位置は
図4(a)と対応している。
図4(b)の図示上下方向は天地方向に対応しており、図示左右端の白線L201及び白線L203の位置が最も低く、道路の中央部ほど高い。
図4(a)と同様に、中央線L202よりも少し右の頂点位置Mが最も高い。
図4(b)に示す例では、Y方向における断面の形状は一様であり、すなわち
図4に示す車道は頂点位置Mの左側の第1面T11と、頂点位置Mの右側の第2面T12とから構成される。第1面T11は、自車両1Aが接地している面ともいえる。第1面T11を、頂点位置Mを超えて第2面T12側に延伸させた仮想的な面を、仮想第2面T12Aと称する。また、第2面T12と仮想第2面T12Aとのなす角を角度差θという。
【0057】
図4(c)は、検出された特徴点軌跡の位置と、自車両1Aの移動速度の関係を示す概念図である。
図4(c)では、全ての特徴点が自車両1Aの接地面と同一平面上、すなわち第1面T11又は仮想第2面T12Aに存在すると仮定している。
図4(c)に示すそれぞれの白丸が特徴点軌跡であり、図示上方に存在するほど移動速度が速いことを示している。自車両1Aと同一の平面である第1面T11に存在する特徴点は、自車両1Aが移動すると、その特徴点は地面に固定されているので、自車両1Aからは自車両1Aの移動とは逆方向に同じ速度で移動したように観測される。しかし第2面T12に存在する特徴点は、仮想第2面T12Aに存在すると仮定されているため、仮想第2面T12Aに射影した位置として算出され、実際よりも移動速度が遅いように観測される。
【0058】
図4(c)には、特徴点軌跡の分布を2本の直線、LV1とLV2で近似した場合を示す。LV1とLV2の交点の道路幅方向の位置は、頂点位置Mと一致する。LV1とLV2の傾きの差は、第1面T11と第2面T12のなす角、換言すると角度差θに対応する。従って、例えば、第2面T12上の特徴点だけを使用した場合、角度差θ分の誤差が上乗せされた状態で角度が推定されることになる。この角度差θに相当するのは、カメラ4のピッチ角(俯角、上下方向)である。
また、カメラ4が、自車両1Aの前方を撮影するフロントカメラ、又は自車両1Aの後方を撮影するリアカメラの場合、この角度差θに相当するのは、カメラ4のロール角(首振り、横方向)となる。
【0059】
実際には、第1面T11と第2面T12とで特徴点軌跡が含まれる状態になるが、第2面T12の特徴点軌跡を含んだ分だけ、精度が低下する。第1面T11と第2面T12の境界位置は、自車両1Aが走行する位置や道路によって変化し、環境によって異なる。このため、常時混入を避けるのは困難である。従って、カメラ4のピッチ角(俯角、上下方向)を校正する場合、路面を参照することを避け、車体10を参照することで外部パラメータ125を推定する。また、カメラ4がリアカメラ又はフロントカメラの場合には、ロール角(首振り、横方向)を校正する場合、路面を参照することを避け、車体10を参照することで外部パラメータ125を推定する。車体10であれば、路面を参照しないため、排水勾配の影響を受けずに、推定することができる。車体10を使う方法も推定できないパラメータがあるが、自車両1Aの両サイドに設置したカメラ4のピッチ角に関しては、推定可能であるため、双方の弱点を補い合う形で併用する。
【0060】
図5は、自車両1Aの右サイドに取り付けられたカメラ4から見える自車両1Aの車体10の画像の例を示す図である。この車体10の画像の例では、カメラ4として魚眼カメラを用いているが、自車両1Aの車体10を撮影できるのであれば適用対象は魚眼カメラに限らない。カメラ4は、例えば、自車両1Aのサイドミラーの下に下向きに取り付けられており、カメラ4の取り付け位置よりも低い位置の車体10が撮影される。
【0061】
自車体認識部153は、例えば、車体10の側面下端のエッジPを認識する。カメラ4が理想的に設置され、カメラ4により本来撮影される車体10の側面下端の理想的なエッジQの位置を破線により示す。車体10の側面下端のエッジQは、外部パラメータ125と、車体設計情報124から、自車両1Aの車体がカメラ4にどのように映るかを計算することで得られるものである。自車体認識部153で認識した車体10の側面下端のエッジPを、認識エッジPと表記し、計算によって求めた理想的なエッジQを理想エッジQと表記する。
外部パラメータ推定部158は、カメラ4のピッチ角推定においては、認識エッジPの位置が、理想エッジQの位置に一致するように、ピッチ角を推定する。この推定は公知の最適化処理によって実現できる。
【0062】
2.キャリブレーション装置の全体フロー
図6は、キャリブレーション装置100の全体の処理フローを示すフローチャートである。
図6に示すフローチャートを参照しながらキャリブレーション装置100の全体の処理フローを説明する。
ステップS1において、キャリブレーション装置100は、カメラ4に撮影を実行させる。キャリブレーション装置100には、カメラ4の撮影画像が入力される。
ステップS2において、キャリブレーション装置100は、車体特徴点の抽出処理を実行する。この処理は、自車体認識部153により実行される。ステップS2の詳細は、
図7に示すフローチャートを参照しながら説明する。ステップS2は、本発明の「第2抽出ステップ」に対応する。
ステップS3において、キャリブレーション装置100は、特徴点の抽出処理を実行する。この処理は、特徴点抽出部154により実行される。ステップS3の詳細は、
図8に示すフローチャートを参照しながら説明する。ステップS3は、本発明の「第1抽出ステップ」に対応する。
【0063】
ステップS4において、キャリブレーション装置100は、特徴点の追跡処理を実行する。この処理は、追跡部155により実行される。ステップS4の詳細は、
図9に示すフローチャートを参照しながら説明する。
ステップS5において、キャリブレーション装置100は、実施判定処理を実行する。この処理は、実施判定部157により実行される。上述したように実施判定部157は、左特徴点登録テーブル126Aと、右特徴点登録テーブル126Bとの追跡状態のフィールドに「OK」が登録された特徴点の数が、あらかじめ定めた所定の数以上になった場合に、外部パラメータ推定部158にキャリブレーションの実行指令を出す。
ステップS6において、キャリブレーション装置100は、キャリブレーションの実行を可と判定した場合、外部パラメータ125の校正処理を実行する。この処理は、外部パラメータ推定部158により実行される。ステップS6の詳細については、
図10に示すフローチャートを参照しながら説明する。ステップS6は、本発明の「校正ステップ」に対応する。
【0064】
ステップS7において、キャリブレーション装置100は、ステップS6の校正処理により校正した外部パラメータ125を最終的なパラメータとして採用するか否かを判定する。この処理は、採否判定部159により実行される。採否判定部159は、入力された外部パラメータ125を、最終的なパラメータとして採用する場合には、外部パラメータ125をフラッシュメモリ115に格納する。また、採否判定部159は、入力された外部パラメータ125が、最終的なパラメータとして不採用である場合、推定途中の外部パラメータ125としてRAM113に格納し、ステップS1からの処理を繰り返す。
【0065】
3.自車体認識部153の動作フロー
図7は、車体特徴点の抽出処理を実行する自車体認識部153の処理動作を示すフローチャートである。
図7に示すフローチャートを参照しながら自車体認識部153の処理動作を説明する。
図7に示す各ステップの動作主体は、プロセッサ150である。
【0066】
ステップS21において、自車体認識部153は、画像取得部151から撮影画像の入力があるか否かを判定する。否定判定の場合、自車体認識部153は、画像取得部151から撮影画像の入力があるまで処理の開始を待機する。また、肯定判定の場合、自車体認識部153は、ステップS22の処理に移行する。
【0067】
ステップS22において、自車体認識部153は、歪み補正を実施する。カメラ4に魚眼カメラを使用した場合、魚眼カメラにより生成される撮影画像は、本来直線状である車体10のエッジが曲線状に撮影され、車体10のエッジの認識が難しくなる。このため、自車体認識部153は、事前に撮影画像の歪みを除去して直線化しておく。歪み補正は、カメラ4の設計情報を用いることで実施できる。この処理によって、車体10のエッジが直線化され、車体10のエッジを認識しやすくなる。
【0068】
ステップS23において、自車体認識部153は、自車両1Aの車体10のエッジを抽出する撮影画像の抽出領域を決定する。自車体認識部153は、カメラ4の撮影方向に基づき、車体10のエッジを抽出する抽出領域を決定する。自車体認識部153は、車体設計情報124に含まれる自車両1Aの車体10の形状設計情報に基づき、認識対象の車体10のエッジが映る範囲を計算する。外部パラメータ125は、設計公差に基づき、取り付け誤差範囲が一定の範囲に制限される。自車体認識部153は、この点を考慮して認識対象の車体10のエッジが映る範囲を計算し、計算により求めた範囲を抽出領域として決定する。
【0069】
ステップS24において、自車体認識部153は、抽出処理を実行する。自車体認識部153は、ステップS23で決定した撮影画像の抽出領域内において公知のソーベルフィルタ等を用い、車体10の側面下端のエッジに該当する車体特徴点を抽出する。以下、車体10の側面下端のエッジを、車体10のエッジという。この抽出処理で抽出される車体10のエッジは、路面に設けられた路面標示等の車体10への映り込みや、太陽光の反射等による白飛び等の影響により、車体10のエッジ以外を、車体10のエッジとして抽出する場合がある。
【0070】
ステップS25において、自車体認識部153は、抽出された車体特徴点の座標をRAM113に格納する蓄積処理を行う。自車体認識部153は、撮影画像の複数フレームで抽出処理を行い、抽出結果である車体特徴点の座標をRAM113に格納する。RAM113には、同一のエッジと判定された車体特徴点の座標同士が対応づけられて格納される。車体特徴点のRAM113への格納方法は、車体10のエッジの位置(画像座標系の座標)を直線方程式により近似し、近似した直線方程式のパラメータをRAM113に格納させてもよい。また、公知のハフ変換などで車体10のエッジの位置を変換し、変換結果をRAM113に格納してもよい。
【0071】
ステップS26において、自車体認識部153は、RAM113に格納した複数の車体特徴点の検出回数に基づいて車体10のエッジを検出する。自車体認識部153は、RAM113に格納された車体特徴点(エッジ)の検出回数同士を比較することで、車体10のエッジを検出する。
【0072】
上述したように、抽出処理により抽出される車体10のエッジには、車体10のエッジ以外が含まれる。しかし、自車両1Aの走行により自車両1Aの周囲の映り込み等の影響が変化しても、撮影画像に撮影された車体10のエッジの位置は変わらない。このため、複数フレームで検出したエッジの検出回数に基づいて車体10のエッジを検出することができる。例えば、自車体認識部153は、最大ピークと第二番目に大きいピークの差が、あらかじめ定めた値以上であれば、最大ピークが示す位置が車体10のエッジであると判定する。
【0073】
ステップS27において、自車体認識部153は、車体10のエッジを検出した場合には、検出した車体10のエッジの画像をRAM113に格納する。以降、一度、検出に成功すれば、自車体認識部153は、
図7のフローチャートに示す処理を再度、実施する必要はない。
また、ステップS27において、自車体認識部153は、車体10のエッジが検出できなかった場合、ステップS21の判定に戻る。例えば、自車体認識部153は、最大ピークと第二番目に大きいピークの差が、あらかじめ定めた値よりも小さい場合、車体10のエッジの検出に失敗したと判定し、次フレームにおいて、
図6に示す一連の処理を実施する。
【0074】
4.特徴点抽出部154の動作フロー
図8は、特徴点の抽出処理を実行する特徴点抽出部154の処理動作を示すフローチャートである。
図8に示すフローチャートを参照しながら特徴点抽出部154の処理動作を説明する。特徴点抽出部154は、画像取得部151から撮影画像が入力されるごとに、以下に示す処理動作を実行する。以下に説明する各ステップの実行主体はプロセッサ150である。
【0075】
ステップS31において、特徴点抽出部154は、自車両1Aの進行方向、及び自車両1Aの進行方向に対するカメラ4の撮影方向に基づき、特徴点を抽出する撮影画像の領域である抽出領域を決定する。抽出領域の面積は、広ければ広いほど計算処理に時間がかかる。このため、リアルタイム処理で計算するためには、無駄な領域を計算することによる処理負荷を軽減する必要がある。従って、特徴点抽出部154は、自車両1Aから離れた場所の特徴点を抽出するように抽出領域を設定する。
【0076】
ステップS32において、特徴点抽出部154は、ステップS31で決定した抽出領域を対象として特徴点を抽出する。特に、特徴点抽出部154は、エッジとエッジとの交点であるコーナーエッジを抽出することが好ましい。特徴点抽出部154は、ステップS31で決定した特徴点抽出領域に対して、ハリスオペレータ等を適用してコーナーエッジを抽出する。
【0077】
ステップS33において、特徴点抽出部154は、ステップS32で抽出した特徴点の座標をRAM113に格納し、この処理を終了させる。
【0078】
5.追跡部155の動作フロー
図9は、特徴点の追跡処理を実行する追跡部155の処理動作を示すフローチャートである。
図9に示すフローチャートを参照しながら追跡部155の処理動作を説明する。追跡部155は、画像取得部151から撮影画像が入力されるごとに、以下に示す処理動作を実行する。以下に説明する各ステップの実行主体はプロセッサ150である。
【0079】
ステップS41において、追跡部155は、特徴点の追跡処理の対象となる領域である追跡領域を設定する。具体的には、追跡部155は、RAM113から読み出した特徴点の座標、及び車両情報取得部152が取得した車両情報に基づき、この特徴点の座標の移動方向及び移動距離を推定する。追跡部155がRAM113から読み出した特徴点の座標は、特徴点抽出部154が1フレーム前の撮影画像から抽出した座標である。追跡部155は、推定した移動方向及び移動距離に基づき、画像取得部151から入力される撮影画像において、特徴点を追跡する追跡領域を設定する。
【0080】
移動方向及び移動距離の推定に用いる撮影画像は、1フレーム前の撮影画像に限定されない。例えば、追跡部155は、複数フレームの撮影画像に基づいて移動方向及び移動距離を推定してもよいし、1フレーム前の撮影画像以外の撮影画像を用いて移動方向及び移動距離を推定してもよい。つまり、より早い時間に撮影された撮影画像を用いて特徴点の移動方向及び移動距離を推定してもよい。
【0081】
ステップS42において、追跡部155は、画像取得部151から入力された撮影画像を対象として、RAM113から読み込んだ特徴点の座標を追跡する。例えば、追跡部155は、SADやLK法等の公知の手法を用いて特徴点を追跡する。以下では、RAM113から座標を読み込んだ特徴点を、対象特徴点という。
【0082】
ステップS43において、追跡部155は、特徴点の追跡が継続できたか否かを判定する。例えば、追跡部155は、SAD等による照合度があらかじめ定めた閾値以下であれば、対象特徴点は、カメラ4の画角から外れた等の理由で追跡ができないと判断する。また、追跡部155は、対象特徴点が撮影画像中のあらかじめ定めた一定のラインを通過した場合や、所定の領域から外れた場合は、強制的に追跡を終了させる。強制的に追跡を終了する理由は、次の撮影画像ではカメラ4の画角から外れることが想定されるためである。また、被写体との距離が遠くなり追跡する必要性がなくなるためである。追跡部155は、対象特徴点の追跡が継続できた場合には、ステップS44に進み、追跡終了の場合には、ステップS45に進む。
【0083】
ステップS44において、追跡部155は、対象特徴点に関する情報を登録した特徴点登録テーブル126のレコードであって、対象特徴点の撮影画像が撮影された時刻の列に、追跡した特徴点の座標を記録する。また、ステップS45において、追跡部155は、対象特徴点に関する情報を登録した特徴点登録テーブル126のレコードであって、処理対象の撮影画像が撮影された時刻の列に、追跡が終了したマーク、例えば「x」を記録する。
【0084】
ステップS44又はステップS45の処理が完了すると、ステップS46において、追跡部155は、ステップS32において抽出されたすべての特徴点を対象特徴点として、ステップS42〜S45の処理を実行したか否かを判定する。追跡部155は、対象特徴点として選択していない未処理の特徴点がある場合、ステップS42の処理に戻る。また、追跡部155は、対象特徴点として選択していない未処理の特徴点がない場合、この処理フローを終了させる。
【0085】
6.外部パラメータ推定部158の動作フロー
図10は、外部パラメータ125の校正処理を実行する外部パラメータ推定部158の処理動作を表すフローチャートである。
図10に示すフローチャートを参照しながら外部パラメータ推定部158の動作を説明する。外部パラメータ推定部158は、実施判定部157から実行指令が入力されるごとに、以下の動作を実行する。以下に説明する各ステップの実行主体はプロセッサ150である。
【0086】
ステップS61において、外部パラメータ推定部158は、外部パラメータ125のピッチ角を推定する。外部パラメータ推定部158は、RAM113に格納された外部パラメータ125と、車体設計情報124と、自車体認識部153で認識された車体特徴点とを演算に用いてピッチ角の推定を行う。
外部パラメータ推定部158は、自車体認識部153で認識された車体10のエッジが、車体設計情報124に基づいて計算した設置位置にカメラ4が設置された場合に映るはずの車体特徴点の位置に一致するようにピッチ角を補正する。具体的には、外部パラメータ推定部158は、車体特徴点の一致度を評価する目的関数を設計し、その目的関数を公知の技術によりピッチ角に関して最小化することでピッチ角を推定する。
【0087】
外部パラメータ推定部158は、外部パラメータ125のピッチ角をステップS61で推定したピッチ角に書き換える。外部パラメータ推定部158は、書き換えた、外部パラメータ125のピッチ角をRAM113に格納する。これにより、RAM113に格納された外部パラメータ125の値が更新される。
【0088】
ステップS62において、外部パラメータ推定部158は、ステップS61で推定したピッチ角の座標変換を実施する。ステップS61で推定したピッチ角は、車体10のエッジに基づいて検出したものであり、車体10のエッジを基準としたカメラ4の取り付け誤差を補正するパラメータである。
一方、この後のステップS64〜S66では、外部パラメータ推定部158は、路面を基準とする外部パラメータ125を算出する。基準が異なるもので算出されたパラメータをそのまま使うと整合が取れない。このため、外部パラメータ推定部158は、外部パラメータ125の座標変換を行う。外部パラメータ推定部158は、ステップS61で推定した車体10のエッジを基準とする外部パラメータ125を、路面を基準とするパラメータになるようにピッチ角を座標変換する。ステップS63において、外部パラメータ推定部158は、座標変換した外部パラメータ125のピッチ角をRAM113に格納する。
【0089】
次に、ステップS64において、外部パラメータ推定部158は、外部パラメータ125のヨー角を推定する。外部パラメータ推定部158は、特徴点登録テーブル126に格納された特徴点軌跡の情報と、ステップS61の処理により更新された外部パラメータ125とを用いた演算によりヨー角を推定する。
【0090】
外部パラメータ推定部158は、特徴点軌跡の垂直性、すなわち特徴点軌跡が俯瞰図において進行方向に沿う程度を評価する目的関数を設計する。外部パラメータ推定部158は、設計した目的関数を、公知の技術によりヨー角に関して最小化することで、ヨー角推定を実現する。ここで設計される目的関数は、1本の特徴点軌跡の垂直性を評価する関数を基本とし、全ての特徴点軌跡に関する目的関数の総和を、ピッチ角を推定する目的関数として設計する。従って、特徴点軌跡の全体が、できるだけ垂直方向を向くようにヨー角が算出される。ステップS65において、外部パラメータ推定部158は、外部パラメータ125のヨー角を、推定したヨー角で書き換え、書き換えたヨー角をRAM113に格納する。
【0091】
ステップS66において、外部パラメータ推定部158は、外部パラメータ125のロール角を推定する。外部パラメータ推定部158は、特徴点登録テーブル126に格納された特徴点軌跡の情報と、ステップS64の処理により更新された外部パラメータ125とを用いた演算によりロール角を推定する。外部パラメータ推定部158は、特徴点軌跡の平行性を評価する目的関数を設計し、その目的関数を公知の技術によりロール角に関して最小化することでロール角を推定する。ここで、設計される目的関数は、2本の特徴点軌跡の平行性を評価する関数を基本とし、2本の特徴点軌跡のペアを複数作成し、作成した特徴点軌跡のペアの全ての目的関数の総和を、ロール角を推定する目的関数として設計する。従って、特徴点軌跡の全体が、できるだけ平行になるようにロール角が補正される。
【0092】
また、選択される特徴点軌跡のペアは、自車両1Aの中心よりも左側の特徴点軌跡と、自車両1Aの中心よりも右側の特徴点軌跡、換言すると、自車両1Aの進行方向の左側の特徴点軌跡と、自車両1Aの進行方向の右側の特徴点軌跡とを組み合わせる。また、選択される特徴点軌跡のペアとして、考えられる全ての組み合わせを選択してもよいし、その中から幾つか選択したもののみでもよい。ステップS67において、外部パラメータ推定部158は、外部パラメータ125のロール角を、推定したロール角で書き換え、書き換えたロール角をRAM113に格納する。
【0093】
ステップS68において、外部パラメータ推定部158は、カメラ4の取り付け位置の高さ推定を行う。外部パラメータ推定部158は、特徴点登録テーブル126に登録された特徴点軌跡の情報と、ステップS63、S65及びS67の処理により更新された外部パラメータ125とを用いた演算により、カメラ4の取り付け位置の高さ推定を行う。
【0094】
外部パラメータ推定部158は、特徴点軌跡の長さと、車両情報から予想される理想軌跡の長さの差をあらわす目的関数を、公知の技術により高さに関して最小化することで高さ推定を実現する。目的関数は、全特徴点軌跡の長さと理想軌跡の長さの差を最小化するものとして設計する。従って、特徴点軌跡全体と理想軌跡の長さの差ができるだけ小さくなるように、すなわち理想俯瞰視点に近づくように高さが補正される。ステップS69において、外部パラメータ推定部158は、外部パラメータ125の高さを、ステップS68で推定した高さで書き換えて、RAM113に格納する。
【0095】
以上説明したように第1実施形態のキャリブレーション装置100は、自車両1Aに搭載され、画像取得部151、自車体認識部153、特徴点抽出部154及び外部パラメータ推定部158を備える。
画像取得部151には、自車両1Aに搭載されたカメラ4の撮影画像が入力される。
自車体認識部153は、自車両1Aの車体10が撮影された撮影画像の領域に含まれる車体特徴点を抽出する。
特徴点抽出部154は、自車両1Aの周囲の路面が撮影された撮影画像の領域に含まれる特徴点を抽出する。
外部パラメータ推定部158は、車体特徴点及び特徴点に基づき、自車両1Aに対するカメラ4の設置状態を示す外部パラメータ125を校正する。
【0096】
キャリブレーション装置100は、自車両1Aが走行する道路の幅方向の高さが一様ではなく、高低差がある場合であって、外部パラメータ125が、この道路の高低差の影響を受けて精度が得られないパラメータの場合には、自車両1Aの車体10から抽出した車体特徴点に基づいてカメラ4の設置状態を示す外部パラメータ125を校正する。また、外部パラメータ125が、道路の影響が少なく、精度の低下が少ないパラメータである場合には、自車両1Aの周囲の路面から抽出した特徴点に基づいてカメラ4の設置状態を示す外部パラメータ125を校正する。従って、外部パラメータ125の校正を高精度に行うことができる。
【0097】
外部パラメータ推定部158が校正する外部パラメータ125には、自車両1Aに対するカメラの姿勢角であるピッチ角が含まれる。外部パラメータ推定部158は、撮影画像が、自車両1Aの側方を撮影した撮影画像である場合、自車両1Aの車体10が撮影された撮影画像の領域から抽出した車体特徴点に基づいてピッチ角を校正する。従って、道路の幅方向の高低差の影響を受けて精度が得られない外部パラメータ125であるピッチ角の校正を高精度に行うことができる。
【0098】
外部パラメータ推定部158が校正する外部パラメータ125には、自車両1Aに対するカメラの姿勢角であるヨー角及びロール角が含まれる。外部パラメータ推定部158は、撮影画像が、自車両1Aの側方を撮影した撮影画像である場合、自車両1Aの周囲の路面が撮影された撮影画像の領域に含まれる特徴点を抽出して、ヨー角及びロール角を校正する。
従って、道路の幅方向の高低差の影響が少ないヨー角及びロール角を、路面の撮影画像から抽出した特徴点に基づいて校正することで、ヨー角及びロール角を高精度に校正することができる。
【0099】
自車両1Aの車体10の車体設計情報124を記憶したROM111を備える。
外部パラメータ推定部158は、自車体認識部153により抽出された車体特徴点が、車体設計情報124に基づいて算出される車体特徴点の位置に一致するように、ピッチ角を校正する。
従って、ピッチ角の校正を車体特徴点に基づいて高精度に行うことができる。
【0100】
また、特徴点抽出部154は、複数の撮影画像から徴点を抽出する。キャリブレーション装置100は、特徴点抽出部154により抽出される特徴点を追跡して特徴点軌跡を求める追跡部155を備える。
外部パラメータ推定部158は、追跡部155により求められた特徴点軌跡を対象として選択し、選択した特徴点軌跡に基づきヨー角及びロール角を校正する。従って、ヨー角及びロール角を高精度に校正することができる。
【0101】
また、自車体認識部153は、撮影画像が、自車両1Aの側方を撮影した撮影画像である場合、特徴点として、自車両1Aの側面の下端エッジを抽出する。
従って、撮影画像から特徴点として抽出しやすく、抽出した特徴点に基づいてピッチ角の校正を高精度に行うことができる。
【0102】
[第2実施形態]
上述した第1の実施の形態では、カメラ4がサイドカメラである場合について説明した。本実施形態では、カメラ4が、自車両1Aの前方を撮影するフロントカメラ、又は自車両1Aの後方を撮影するリアカメラである場合の外部パラメータ125の校正について説明する。カメラ4が、フロントカメラ又はリアカメラである場合、カメラ4の撮影画像には、車体10の一部としてフロントバンパーやリアバンパーが撮影される。
【0103】
図11は、カメラ4が、フロントカメラ及びリアカメラの少なくとも一方である場合の外部パラメータ推定部158の動作を表すフローチャートである。
図10に示すフローチャートを参照しながら外部パラメータ推定部158の動作を説明する。外部パラメータ推定部158は、実施判定部157から実行指令が入力されるごとに、以下の動作を実行する。以下に説明する各ステップの実行主体はプロセッサ150である。
【0104】
ステップS111において、外部パラメータ推定部158は、ピッチ角の推定を行う。外部パラメータ推定部158は、特徴点登録テーブル126に登録された特徴点軌跡の情報と、RAM113に格納された外部パラメータ125とを用いた演算によりピッチ角の推定を行う。外部パラメータ推定部158は、特徴点軌跡の平行性を評価する目的関数を設計し、設計した目的関数を公知の技術によりピッチ角に関して最小化することでピッチ角を推定する。
【0105】
設計した目的関数は、2本の特徴点軌跡の平行性を評価する関数を基本とする。外部パラメータ推定部158は、2本の特徴点軌跡のペアを複数作成し、複数作成した特徴点軌跡のペアの全ての目的関数の総和を、ピッチ角を推定する目的関数として設計する。このため、特徴点軌跡の全体が、できるだけ平行になるようにピッチ角が補正される。
【0106】
選択される特徴点軌跡のペアは、自車両1Aの中心よりも左側の特徴点軌跡と、自車両1Aの中心よりも右側の特徴点軌跡、換言すると、自車両1Aの進行方向の左側の特徴点軌跡と、自車両1Aの進行方向の右側の特徴点軌跡とを組み合わせる。また、選択される特徴点軌跡のペアとして、考えられる全ての組み合わせを選択してもよいし、その中から幾つか選択したもののみでもよい。ステップS67において、外部パラメータ推定部158は、外部パラメータ125のロール角を、推定したロール角で書き換え、書き換えたロール角をRAM113に格納する。
【0107】
ステップS112において、外部パラメータ推定部158は、ヨー角の推定を行う。外部パラメータ推定部158は、特徴点登録テーブル126に登録された特徴点軌跡の情報と、ステップS111において更新されたピッチ角の外部パラメータ125とを用いた演算により、ヨー角を推定する。
【0108】
外部パラメータ推定部158は、特徴点軌跡の垂直性、すなわち特徴点軌跡が俯瞰図において進行方向に沿う程度を評価する目的関数を設計する。外部パラメータ推定部158は、設計した目的関数を、公知の技術によりヨー角に関して最小化することで、ヨー角推定を実現する。ここで設計される目的関数は、1本の特徴点軌跡の垂直性を評価する関数を基本とし、全ての特徴点軌跡に関する目的関数の総和を、ピッチ角を推定する目的関数として設計する。従って、特徴点軌跡の全体が、できるだけ垂直方向を向くようにヨー角が算出される。外部パラメータ推定部158は、外部パラメータ125のヨー角を、推定したヨー角で書き換え、書き換えたヨー角をRAM113に格納する。
【0109】
ステップS113において、外部パラメータ推定部158は、ステップS111において推定したピッチ角、及びステップS112において推定したヨー角の座標変換を行う。ステップS111で推定したピッチ角、及びステップS112で推定したヨー角は、路面を基準としたパラメータである。一方、この後のステップS104で推定するロール角は、自車両1Aの車体10を基準としたパラメータである。異なる基準で算出されたパラメータは、そのまま使用すると整合が取れないため、ピッチ角及びヨー角の座標変換を行う。外部パラメータ推定部158は、路面を基準とするパラメータであるピッチ角及びヨー角を、自車両1Aの車体10を基準とするパラメータとなるように座標変換する。外部パラメータ推定部158は、座標変換したピッチ角及びヨー角をRAM113に格納する。
【0110】
ステップS114において、外部パラメータ推定部158は、ロール角を推定する。外部パラメータ推定部158は、RAM113に格納した外部パラメータ125と、車体設計情報124と、自車体認識部153で認識された車体10のエッジとを用いた演算によりロール角を推定する。
【0111】
外部パラメータ推定部158は、自車体認識部153で認識された車体10のエッジが、車体設計情報124から計算されるカメラ4の理想位置に設置された場合に映るはずの車体10のエッジに一致するようにロール角を補正する。この場合の車体10のエッジは、例えばバンパーとなる。外部パラメータ推定部158は、車体10のエッジの一致度を評価する目的関数を設計し、設計した目的関数を公知の技術によりロール角に関して最小化することでロール角を推定する。外部パラメータ推定部158は、外部パラメータ125のロール角を、ステップS114で推定したロール角により書き換え、RAM113に格納する。
【0112】
ステップS115において、外部パラメータ推定部158は、高さ推定を行う。外部パラメータ推定部158は、特徴点登録テーブル126に登録された特徴点軌跡の情報と、ステップS114の処理により更新された外部パラメータ125とを用いた演算により、車体10に取り付けられたカメラ4の路面からの高さを推定する。
【0113】
外部パラメータ推定部158は、特徴点軌跡の長さと、車両情報から予想される理想軌跡の長さの差をあらわす目的関数を、公知の技術により高さに関して最小化することでカメラ4の路面からの高さを推定する。目的関数は、全特徴点軌跡の長さと理想軌跡の長さの差を最小化するものとして設計する。従って、特徴点軌跡の全体と理想軌跡の長さとの差ができるだけ小さくなるように、すなわち理想俯瞰視点に近づくように高さが補正される。外部パラメータ推定部158は、外部パラメータ125の高さを、推定した高さで書き換えて、RAM113に格納する。
【0114】
第2実施形態の外部パラメータ推定部158は、撮影画像が、自車両1Aの前方又は後方を撮影した撮影画像である場合、自車両1Aの車体10が撮影された撮影画像の領域から抽出した車体特徴点に基づいてロール角を校正する。従って、道路の幅方向の高低差の影響を受けて精度が得られない外部パラメータ125であるロール角の校正を高精度に行うことができる。
【0115】
また、外部パラメータ推定部158は、撮影画像が、自車両1Aの前方又は後方を撮影した撮影画像である場合、自車両1Aの周囲の路面が撮影された撮影画像の領域に含まれる特徴点を抽出して、ピッチ角及びヨー角を校正する。従って、道路の幅方向の高低差の影響が少ないピッチ角及びヨー角を、路面の撮影画像から抽出した特徴点に基づいて校正することで、ピッチ角及びヨー角を高精度に校正することができる。
【0116】
自車両1Aの車体10の車体設計情報124を記憶したROM111を備える。
外部パラメータ推定部158は、自車体認識部153により抽出された車体特徴点が、車体設計情報124に基づいて算出される車体特徴点の位置に一致するように、ロール角を校正する。従って、ピッチ角の校正を車体特徴点に基づいて高精度に行うことができる。
【0117】
また、特徴点抽出部154は、複数の撮影画像から徴点を抽出する。キャリブレーション装置100は、特徴点抽出部154により抽出される特徴点を追跡して特徴点軌跡を求める追跡部155を備える。外部パラメータ推定部158は、追跡部155により求められた特徴点軌跡を対象として選択し、選択した特徴点軌跡に基づきピッチ角及びヨー角を校正する。従って、ピッチ角及びヨー角を高精度に校正することができる。
【0118】
また、自車体認識部153は、撮影画像が、自車両1Aの側方を撮影した撮影画像である場合、特徴点として、自車両1Aに搭載されたバンパーを抽出する。従って、撮影画像から特徴点として抽出しやすく、抽出した特徴点に基づいてロール角の校正を高精度に行うことができる。
【0119】
上述した第1実施形態及び第2実施形態は、本発明の好適な実施の形態である。ただし、本発明は、上述した第1実施形態及び第2実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形実施が可能である。
例えば、上述した第1実施形態及び第2実施形態では、外部パラメータ125のキャリブレーションについて説明したが、キャリブレーション装置100は内部パラメータのキャリブレーションも行ってもよい。また、上述した第1実施形態及び第2実施形態において、プログラムはROM111に格納されるとしたが、プログラムはフラッシュメモリ115に格納されていてもよい。
【0120】
また、キャリブレーション装置100をコンピュータにより実現する場合、コンピュータに実行させるプログラムを、このプログラムを記録した記録媒体からキャリブレーション装置100に読み込む構成としてもよい。例えば、キャリブレーション装置100は、I/Oインターフェイス6に記録媒体の接続が検出されると、接続された記録媒体に記録されたプログラムを読み込み、キャリブレーション装置100にインストールする。記録媒体には、磁気的又は光学的にデータを記録する記録媒体や、半導体メモリーデバイスを用いることができる。具体的には、記録媒体には、フレキシブルディスク、HDD(Hard Disk Drive)、CD−ROM(Compact Disk Read Only Memory)、DVD、Blu−ray(登録商標) Disc、光磁気ディスクが挙げられる。また、記録媒体として、フラッシュメモリ、カード型記録媒体等の可搬型、或いは固定式の記録媒体を挙げることもできる。また、記録媒体を、キャリブレーション装置100が備えるメモリ110の不揮発性記憶装置として構成してもよい。
【0121】
また、キャリブレーション装置100をコンピュータにより実現する場合、コンピュータに実行させるプログラムは、キャリブレーション装置100がアクセス可能なネットワーク上のサーバ装置に格納されていてもよい。キャリブレーション装置100は、サーバ装置からプログラムをダウンロードし、ダウンロードしたプログラムをインストールして実行する。