(57)【要約】【課題】適切な特徴点を用いてキャリブレーションを行う。【解決手段】キャリブレーション装置は、車両に固定されたカメラが撮影して得られた撮影画像を取得する画像取得部と、撮影画像から特徴点を検出する特徴点検出部と、特徴点を時系列で追跡し特徴点系列を生成する特徴点系列生成追跡部と、生成された特徴点系列の高さ情報を算出する高さ情報算出部と、高さ情報に基づき特徴点系列の良否を判断する良否判定部と、良否判定部により肯定判断された特徴点系列を用いてカメラの外部パラメータを校正する校正部とを備える。【選択図】図２
2018032253.tif 000002
【特許請求の範囲】
【請求項１】
車両に固定されたカメラが撮影して得られた撮影画像を取得する画像取得部と、
前記撮影画像から特徴点を検出する特徴点検出部と、
前記特徴点を時系列で追跡し特徴点系列を生成する特徴点系列生成追跡部と、
前記生成された特徴点系列の高さ情報を算出する特徴点系列高さ算出部と、
前記高さ情報に基づき前記特徴点系列の良否を判断する良否判定部と、
前記良否判定部により肯定判断された特徴点系列を用いて前記カメラの外部パラメータを校正する校正部とを備えるキャリブレーション装置。
【請求項２】
請求項１に記載のキャリブレーション装置において、
前記校正部が校正する外部パラメータは、前記カメラのヨー角、ロール角、ピッチ角、および前記カメラの取付け高さの少なくとも１つであるキャリブレーション装置。
【請求項３】
請求項１に記載のキャリブレーション装置において、
前記良否判定部は、前記特徴点系列の高さと前記車両が走行する路面の高さとの差があらかじめ定めた値よりも大きい場合に否定判断するキャリブレーション装置。
【請求項４】
請求項１に記載のキャリブレーション装置において、
前記特徴点が前記車両が走行する路面の高さに存在すると仮定し、前記特徴点の前記カメラとの相対位置を実空間上の座標として算出する座標変換部をさらに備え、
前記特徴点系列高さ算出部は、前記特徴点系列を構成する特徴点の前記相対位置に基づき前記特徴点系列の速度を算出し、前記車両の速度と前記特徴点系列の速度とに基づき前記特徴点系列の高さを推定するキャリブレーション装置。
【請求項５】
請求項４に記載のキャリブレーション装置において、
前記良否判定部には、前記車両の位置、および少なくとも車道の位置と形状とを含む地図情報が入力され、
前記良否判定部は、前記車両の位置、前記地図情報、および前記相対位置に基づき、前記特徴点系列が車道の外側に存在すると判断する場合に否定判断をするキャリブレーション装置。
【請求項６】
請求項１に記載のキャリブレーション装置において、
前記良否判定部には、前記車両の走行状態を示す情報が入力され、
前記良否判定部は、前記車両が等速度で直進走行していないと判断する場合に否定判断をするキャリブレーション装置。
【請求項７】
請求項１に記載のキャリブレーション装置において、
前記良否判定部には、前記車両の位置、および少なくとも車道の位置と形状とを含む地図情報が入力され、
前記良否判定部は、少なくとも前記車両が走行している車道が直線でないと判断する場合に否定判断をするキャリブレーション装置。
【請求項８】
車両に固定されたカメラのキャリブレーション方法であって、
前記カメラが撮影して得られた撮影画像を取得し、
前記撮影画像から特徴点を検出し、
前記特徴点を時系列で追跡し特徴点系列を生成し、
前記生成された特徴点系列の高さ情報を算出し、
前記高さ情報に基づき前記特徴点系列の良否を判断し、
前記良否の判断により肯定判断された特徴点系列を用いて前記カメラの外部パラメータを校正するキャリブレーション方法。
【請求項９】
車両に固定されたカメラの外部パラメータをキャリブレーションするキャリブレーションプログラムであって、
コンピュータに、
前記カメラが撮影して得られた撮影画像を取得させ、
前記撮影画像から特徴点を検出させ、
前記特徴点を時系列で追跡し特徴点系列を生成させ、
前記生成された特徴点系列の高さ情報を算出させ、
前記高さ情報に基づき前記特徴点系列の良否を判断させ、
前記良否の判断により肯定判断された特徴点系列を用いて前記カメラの外部パラメータを校正させるためのキャリブレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャリブレーション装置、キャリブレーション方法、およびキャリブレーションプログラムに関する。
【背景技術】
【０００２】
近年、車載カメラを用いた自動駐車や自動運転などの車両制御が検討されている。カメラの撮影画像を用いて車両制御を行うためには、カメラの取り付け位置、取り付け角度などの外部パラメータを正確に求める必要があるが、物理的な取り付け精度は車両制御を行うには不十分である場合もある。特許文献１には、カメラから入力される画像に対して、検出された複数の特徴点を追跡し、その特徴点の時系列座標位置からカメラの外部パラメータを推定する手法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１２／１３９６３６号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１には、外部パラメータのキャリブレーションに適した特徴点をどのように選別するかについては記載されていない。
【課題を解決するための手段】
【０００５】
本発明の第１の態様によると、キャリブレーション装置は、車両に固定されたカメラが撮影して得られた撮影画像を取得する画像取得部と、前記撮影画像から特徴点を検出する特徴点検出部と、前記特徴点を時系列で追跡し特徴点系列を生成する特徴点系列生成追跡部と、前記生成された特徴点系列の高さ情報を算出する特徴点系列高さ算出部と、前記高さ情報に基づき前記特徴点系列の良否を判断する良否判定部と、前記良否判定部により肯定判断された特徴点系列を用いて前記カメラの外部パラメータを校正する校正部とを備える。
本発明の第２の態様によると、キャリブレーション方法は、車両に固定されたカメラのキャリブレーション方法であって、前記カメラが撮影して得られた撮影画像を取得し、前記撮影画像から特徴点を検出し、前記特徴点を時系列で追跡し特徴点系列を生成し、前記生成された特徴点系列の高さ情報を算出し、前記高さ情報に基づき前記特徴点系列の良否を判断し、前記良否の判断により肯定判断された特徴点系列を用いて前記カメラの外部パラメータを校正する。
本発明の第３の態様によると、キャリブレーションプログラムは、車両に固定されたカメラの外部パラメータをキャリブレーションするキャリブレーションプログラムであって、コンピュータに、前記カメラが撮影して得られた撮影画像を取得させ、前記撮影画像から特徴点を検出させ、前記特徴点を時系列で追跡し特徴点系列を生成させ、前記生成された特徴点系列の高さ情報を算出させ、前記高さ情報に基づき前記特徴点系列の良否を判断させ、前記良否の判断により肯定判断された特徴点系列を用いて前記カメラの外部パラメータを校正させる。
【発明の効果】
【０００６】
本発明によれば、適切な特徴点を用いて外部パラメータのキャリブレーションを行うことができる。
【図面の簡単な説明】
【０００７】
【図１】第１の実施の形態におけるキャリブレーション装置のハードウエア構成図
【図２】第１の実施の形態におけるキャリブレーション装置の機能ブロック図
【図３】図３（ａ）は車両と特徴点の位置関係を示す図、図３（ｂ）は図３（ａ）の平面図
【図４】キャリブレーション処理動作を表すフローチャート
【図５】第２の実施の形態におけるキャリブレーション装置のハードウエア構成を示す図
【図６】第２の実施の形態におけるキャリブレーション装置の機能ブロック図
【図７】プログラムの提供方法を示す図
【発明を実施するための形態】
【０００８】
（第１の実施の形態）
以下、図１〜図４を参照して、キャリブレーション装置の第１の実施の形態を説明する。
【０００９】
（ハードウエア構成）
図１はキャリブレーション装置１のハードウエア構成を示す図である。キャリブレーション装置１は、車両２に搭載される。車両２は、キャリブレーション装置１と、カメラ３と、速度センサ５と、ジャイロセンサ６とを備える。キャリブレーション装置１と、カメラ３と、速度センサ５と、ジャイロセンサ６とは信号線により接続される。
【００１０】
キャリブレーション装置１は、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、フラッシュメモリ１４とを備える。ＲＯＭ１２にはプログラム１２Ｐと、カメラ３の内部パラメータとが格納される。ＣＰＵ１１は、ＲＯＭ１２に格納されるプログラム１２ＰをＲＡＭ１３に展開して実行することにより、後述する機能を実現する。フラッシュメモリ１４はたとえば不揮発性の記憶部であり、パラメータ１４Ｐが格納される。パラメータ１４Ｐはキャリブレーション装置１により校正されたカメラ３の外部パラメータである。ただし初期状態では、外部パラメータの設計値、または出荷時のキャリブレーション結果がパラメータ１４Ｐとして格納される。外部パラメータには、カメラ３の車両２に対する姿勢角の情報、およびカメラ３の車両２に対する取付け高さが含まれる。姿勢角とは、ヨー角、ロール角、およびピッチ角である。
【００１１】
カメラ３は所定の撮影周期、たとえば３３．３ｍｓ周期で車両２の周囲を撮影し、撮影して得られた画像（以下、撮影画像）をキャリブレーション装置１に出力する。カメラ３の内部パラメータ、すなわち撮像素子サイズや焦点距離などは既知でありキャリブレーション装置１のＲＯＭ１２に格納される。カメラ３は事前の設計に従って車両２の所定の位置に所定の姿勢で取り付けられるが、取り付けに誤差が生じることは避けられない。そのため設計値に基づくカメラ３の外部パラメータは既知であるが、車両２への取り付けの誤差を加味した外部パラメータは明らかでない。そこで後述するようにキャリブレーション装置１が、車両２への取り付けの誤差を加味した外部パラメータの算出、すなわち外部パラメータのキャリブレーションを行う。
【００１２】
速度センサ５は、たとえばロータリエンコーダを用いた車輪速センサであり、車両２の速度を測定しキャリブレーション装置１に出力する。ジャイロセンサ６は、少なくともヨー角の角速度を検出可能なたとえば振動型ジャイロスコープであり、検出した角速度をキャリブレーション装置１に出力する。
【００１３】
（機能ブロック）
図２は、キャリブレーション装置１のＣＰＵ１１がＲＯＭ１２に格納されたプログラムを実行することにより実現される機能を機能ブロックとして表した図である。
キャリブレーション装置１は、その機能として、画像取得部１０２と、特徴点検出部１０３と、特徴点位置記憶制御部１０４と、特徴点追跡部１０５と、追跡完了判定部１０６と、特徴点系列作成部１０７と、座標変換部１０８と、外部パラメータ記憶制御部１０９と、特徴点系列高さ算出部１１０と、車速情報保持部１１２と、走行状態保持部１１３と、特徴点系列登録判定部１１４と、特徴点系列記憶部１１５と、校正タイミング作成部１１６と、校正実行部１１７と、校正結果保持部１１８と、出力部１１９とを備える。以下、それぞれの機能ブロックの動作を説明する。ただし特徴点系列高さ算出部１１０と校正実行部１１７の動作は後に詳述する。
【００１４】
画像取得部１０２は、カメラ３から出力される撮影画像を読み込み、特徴点検出部１０３に出力する。カメラ３は所定の時間間隔で連続して撮影するので、画像取得部１０２には時系列的に連続した撮影画像が入力される。
特徴点検出部１０３は、画像取得部１０２が読み込んだ撮影画像に対して画像処理を施して特徴点を抽出する。ここでいう特徴点とは、例えば路面に描かれた破線の角、支柱の角などのエッジの交点、すなわちコーナー特徴点である。コーナー特徴点は、たとえば公知の技術であるハリスオペレータを適用することにより抽出できる。特徴点検出部１０３により抽出された特徴点の情報は、特徴点位置記憶制御部１０４および特徴点追跡部１０５に送られる。
【００１５】
特徴点位置記憶制御部１０４は、特徴点検出部１０３により抽出された特徴点の情報、たとえば撮影画像中の座標、および特徴点追跡部１０５が追跡した特徴点の追跡情報をＲＡＭ１３に記憶する。特徴点の追跡情報とは、異なる撮影画像における同一の特徴点を示す情報、たとえば撮影画像ごとの特徴点の座標を表す情報である。特徴点位置記憶制御部１０４は、特徴点追跡部１０５および追跡完了判定部１０６にＲＡＭ１３に保存した特徴点の情報を出力する。
【００１６】
特徴点追跡部１０５は、時系列的に連続する複数の撮影画像から同一の特徴点を追跡し特徴点の追跡情報を特徴点位置記憶制御部１０４に出力する。特徴点の追跡には、特徴点検出部１０３から入力される最新の撮影画像における特徴点の情報、特徴点位置記憶制御部１０４によりＲＡＭ１３に格納された過去の撮影画像における特徴点の情報、および走行状態保持部１１３から入力される車両２の運動情報が用いられる。特徴点の追跡には、既知の追跡手法であるＳＡＤ（Sum of Absolute Difference）やＳＳＤ（Sum of Squared Difference）、ＬＫ（Lucas‐Kanade）法などを用いることができる。特徴点追跡部１０５が、特徴点検出部１０３から入力される最新の撮影画像における特徴点の全てについて追跡処理を行い、その次に追跡完了判定部１０６が動作を開始する。
【００１７】
追跡完了判定部１０６は、特徴点位置記憶制御部１０４を用いてＲＡＭ１３に保存した特徴点の情報を読み込み、追跡が終了した特徴点の判定、すなわち最新の撮影画像では追跡ができなくなった特徴点を抽出する。ここで想定している特徴点が追跡できなくなる状況とは、たとえば路上に静止している物体から検出されるある特徴点が、車両２の走行が継続されたためにカメラ３の撮影範囲から外れて撮影画像に撮影されなくなる状況である。追跡完了判定部１０６により追跡が終了したと判定された一連の特徴点の情報、すなわち異なる撮影画像における同一の特徴点の座標は、特徴点系列作成部１０７に送られる。
特徴点系列作成部１０７は、追跡完了判定部１０６により追跡が終了したと判定された特徴点について、追跡された一連の特徴点をひとつの特徴点系列としてまとめ、座標変換部１０８に出力する。
【００１８】
座標変換部１０８は、特徴点系列作成部１０７から出力されたひとつの特徴点系列を構成するそれぞれの特徴点の座標を、撮影画像における二次元座標からカメラ３を基準とした三次元座標、すなわち実空間上の座標に変換する。ただし特徴点はすべて路面上に存在すると仮定し、特徴点の高さはゼロであるとの拘束条件を付して座標変換を行う。この座標変換は回転行列を用いた演算により実現される。回転行列の要素は、カメラ３の内部パラメータ、および外部パラメータを用いて決定される。内部パラメータはＲＯＭ１２に格納されている値が使用され、外部パラメータはフラッシュメモリ１４にパラメータ１４Ｐとして格納されている値が使用される。座標変換部１０８により座標変換された、ひとつの特徴点系列を構成するそれぞれの特徴点の座標は、特徴点系列高さ算出部１１０に出力される。
【００１９】
外部パラメータ記憶制御部１０９は、フラッシュメモリ１４へのパラメータ１４Ｐの書き込み、およびフラッシュメモリ１４からパラメータ１４Ｐの読み込み、すなわち外部パラメータの読み書きを行う。外部パラメータ記憶制御部１０９は、座標軸変換のためにパラメータ１４Ｐを座標変換部１０８へ提供する。外部パラメータ記憶制御部１０９は、校正実行部１１７にパラメータ１４Ｐを校正の初期値として提供する。外部パラメータ記憶制御部１０９は、校正実行部１１７により校正された外部パラメータを、新たなパラメータ１４Ｐとしてフラッシュメモリ１４に格納、すなわち上書きする。
【００２０】
特徴点系列高さ算出部１１０は、座標変換部１０８により座標変換された特徴点系列の高さを、車速情報保持部１１２から得られる車両２の速度を用いて計算する。この計算は後述する式２を用いて説明する。座標変換部１０８により座標変換された特徴点系列の各特徴点の座標、および特徴点系列高さ算出部１１０により算出された特徴点系列の高さは、特徴点系列登録判定部１１４に出力される。特徴点系列高さ算出部１１０の処理は後に詳述する。
車速情報保持部１１２は、速度センサ５の出力を累積し、カメラ３の撮影周期ごとの車両２の平均速度を算出し特徴点系列高さ算出部１１０に出力する。
走行状態保持部１１３は、速度センサ５およびジャイロセンサ６の出力を累積し、車両２の移動情報、すなわち速度履歴および走行軌跡を特徴点追跡部１０５および特徴点系列登録判定部１１４に出力する。
【００２１】
特徴点系列登録判定部１１４は、特徴点系列高さ算出部１１０から出力された高さの演算に用いられた特徴点系列が外部パラメータの校正に使用可能か否かを、走行状態保持部１１３の出力を用いて判断する。特徴点系列登録判定部１１４は、校正に使用可能と判断した特徴点系列を特徴点系列記憶部１１５に出力する。
特徴点系列登録判定部１１４は、２つの条件を満たした場合、入力された特徴点系列の特徴点の情報を使用可能と肯定判断する。第１の条件は特徴点系列の高さがおおよそゼロ、すなわち地面の高さと略一致することである。特徴点系列登録判定部１１４はたとえば、特徴点系列と地面の高さとの差が１０ｃｍ以内の場合に第１の条件を満たすと判断する。第２の条件は特徴点系列作成部１０７で一つの特徴点系列としてまとめられた各特徴点が撮影された際に車両２が等速直線運動をしていたことである。車両２の速度が一定であったか否か、車両２が直進していたか否か、のいずれも走行状態保持部１１３の出力から判断可能である。
【００２２】
特徴点系列記憶部１１５は特徴点系列登録判定部１１４から出力された特徴点系列を構成する各特徴点の座標をＲＡＭ１３に記憶する。ここで記憶される座標は、座標変換部１０８で座標変換される前の特徴点座標である。なお特徴点系列記憶部１１５は、記憶する特徴点系列の数をあらかじめ定めておき、新規特徴点系列が登録された場合に最も古い特徴点系列を破棄することで必要なメモリ領域を制限してもよい。また、記憶させてから一定時間以上経過した特徴点系列を破棄しても良い。
校正タイミング作成部１１６は校正を行うタイミングを決定し校正実行部１１７に出力する。校正タイミング作成部１１６は、前回の校正実行タイミングから一定時間経過したときに「次の校正を行う」と決定してもよいし、特徴点系列の新規登録が一定数に達したときに「次の校正を行う」と決定してもよい。またこの２つのいずれか一方の条件を満たしたときに、もしくはこの２つの両方の条件を満たしたときに「次の校正を行う」と決定してもよい。
【００２３】
校正実行部１１７は、校正タイミング作成部１１６が作成した校正タイミングに従って既知の手法により校正を実行し、実行結果を外部パラメータ記憶制御部１０９と校正結果保持部１１８とに出力する。校正実行部１１７の処理は後に詳述する。
校正結果保持部１１８は、校正結果を保持する。これは、校正結果の出力タイミングを校正実行タイミングと非同期で行うためのものである。
出力部１１９は、要求されたタイミングで校正結果を出力する。校正結果の出力先は、たとえばカメラ３の撮影画像を利用するプログラムでもよいし、車両２に備えられる記憶部でもよい。
【００２４】
（特徴点系列高さ算出部の概念説明）
特徴点系列高さ算出部１１０では、撮影画像中の特徴点の移動速度を車両２の移動速度と比較することにより特徴点系列の高さを算出する。この手法は、座標変換部１０８において特徴点が高さゼロの路面上に存在すると仮定して座標変換したことと密接に関連している。具体的な処理の説明の前に、図３を用いてこの概念を説明する。
【００２５】
図３（ａ）は、路面Ｇを走行する車両２と、車両２に搭載されるカメラ３と、路面Ｇ上の特徴点ｒと、路面Ｇ上にない特徴点ｓと、仮想点ｔの物理的な位置関係を示す図である。カメラ３の路面Ｇからの高さはＨｃ、特徴点ｓの路面Ｇからの高さはＨｆｓ、路面Ｇ上の特徴点ｒの路面Ｇからの高さはＨｆｒ、すなわちゼロである。車両２の前方、すなわち進行方向は図３（ａ）において図示奥側である。図３（ａ）の左右方向は、車両２の左右方向、すなわち車両２の幅方向であり、図３（ａ）の上下方向は天地方向に対応する。路面上の特徴点ｒは、たとえば路面Ｇに描画された破線から抽出された特徴点である。路面上にない特徴点ｓは、ガードレールの支柱Ｓの先端から抽出された特徴点である。仮想点ｔは、カメラ３と特徴点ｓとを結ぶ直線が路面Ｇと位置に存在する仮想的な点である。座標変換部１０８は、特徴点は全て高さゼロの路面上に存在すると仮定して座標変換を行うので、特徴点ｓには仮想点ｔの位置の三次元座標が付される。特徴点ｒは路面Ｇ上に存在するので、座標変換部１０８により正しい位置、すなわち特徴点ｒの位置の三次元座標が付される。
【００２６】
図３（ｂ）は、図３（ａ）の平面視点であり、図３（ｂ）の左右方向は図３（ａ）と同様に車両２の左右方向であり、図３（ｂ）の上下方向は車両２の前後方向である。ただし図３（ｂ）では車両２を省略している。また図３（ｂ）には、座標変換部１０８により算出された特徴点ｒと仮想点ｔの位置を示し、さらに説明のために特徴点ｓの位置も示す。図３（ｂ）では、特徴点ｒ、特徴点ｓ、仮想点ｔをそれぞれ図３（ａ）と同じマーカーで示し、時系列順に数字が付されている。すなわち図３（ｂ）は、当初は車両２の前方に特徴点ｒなどが位置していたが（ｒ１〜ｒ３）、車両２がしばらく前方に進むと特徴点ｒが車両２と並び（ｒ４）、さらに車両２が進むと特徴点ｒは車両２の後方に位置した（ｒ５〜ｒ７）ことを示している。
【００２７】
特徴点ｒは路面上に存在するので、座標変換部１０８により三次元座標、すなわちカメラ３と特徴点ｒの相対位置が正しく算出される。したがって、特徴点ｒの三次元座標から算出される速度、すなわち特徴点ｒとカメラ３の相対速度は、車両２の速度と等しい。その一方で、特徴点ｓは路面上に存在しないので、座標変換部１０８により路面上に存在すると仮定されて座標変換されると、特徴点ｓには仮想点ｔの座標が付される。図３（ａ）において説明したように、仮想点ｔの座標はカメラ３と特徴点ｓを結ぶ直線上に存在する。また、カメラ３と特徴点ｓの高さの関係は一定なので、図３（ｂ）に示すように仮想点ｔの移動量は特徴点ｓよりも多くなる。したがって特徴点ｓは車両２よりも速く移動しているように算出される。
【００２８】
図３（ｂ）においてＬｒは、特徴点ｒがｒ１〜ｒ７における６回の撮影間隔に進んだ距離を示す。図３（ｂ）においてＬｓは、仮想点ｔのｔ１〜ｔ７が、特徴点ｓがｓ１〜ｓ７における６回の撮影間隔に進んだ仮想的な距離を示す。図３（ｂ）においてＬｒよりもＬｓの方が長いことからもわかるように、仮想点ｔは特徴点ｒよりも同一の時間で長い距離を移動したように算出される。以上の考えに基づき、特徴点系列高さ算出部１１０は、特徴点系列の高さを計算する。
【００２９】
（特徴点系列高さ算出部）
特徴点系列高さ算出部１１０は、車速情報保持部１１２から得られる車両２の速度、および座標変換部１０８により座標変換された特徴点系列の座標を用いて特徴点系列の高さを計算する。特徴点系列高さ算出部１１０の処理は、特徴点の速度算出処理と、速度比較処理とからなる。
【００３０】
第１の処理である特徴点の速度算出処理では、特徴点の移動距離を移動時間で除することにより、特徴点の速度が算出される。特徴点の移動距離は、座標変換部１０８が算出したカメラ３を基準とした特徴点の三次元座標から求められる。移動時間は、既知であるカメラ３の撮影周期と特徴点が追跡された撮影画像の枚数から求められる。ある特徴点が、最後に検出された撮影画像を除きＮ枚の撮影画像にわたって追跡され、三次元座標の差から特徴点の移動距離がＬと算出され、カメラ３の撮影間隔が時間Ｔであった場合は、特徴点系列の速度Ｖｆは以下の式１のように算出される。
【００３１】
Ｖｆ＝Ｌ／（Ｔ＊Ｎ）・・・・・・・・式１
たとえば図３において、ｒ１からｒ７の距離Ｌｒが１ｍ、撮影周期Ｔが３３．３ｍｓの場合に、追跡枚数Ｎは６なので、特徴点系列ｒの速度Ｖｆｒは７２ｋｍ／ｈと算出される。同様にｔ１からｔ７の距離Ｌｓが２ｍであれば特徴点系列ｓの速度Ｖｆｓは１４２ｋｍ／ｈと算出される。
第２の処理である速度比較処理では、特徴点系列の高さＨｆは、カメラ３の取り付け高さＨｃ、式１により算出された特徴点系列の速度Ｖｆ、車速情報保持部１１２から得られる車両２の車度Ｖｃを用いて以下の式２のように算出される。なお、カメラ３の取り付け高さＨｃは、カメラ３の外部パラメータ、すなわちパラメータ１４Ｐに含まれる。
【００３２】
Ｈｆ＝Ｈｃ＊（１−Ｖｃ／Ｖｆ）・・・式２
たとえば図３において、カメラ３の取り付け高さＨｃが１ｍ、車速Ｖｃが７２ｋｍ／ｈの場合に、特徴点系列ｒの速度Ｖｆｒも７２ｋｍ／ｈであれば特徴点系列ｒの高さＨｆｒは０ｍと算出され、特徴点系列ｓの速度Ｖｆｓが１４４ｋｍ／ｈであれば特徴点系列の高さＨｆｓは０．５ｍと算出される。
【００３３】
（校正実行部）
まず、校正実行部１１７は特徴点系列記憶部１１５から登録済みの特徴点系列の各特徴点の座標を読み出す。前述のとおり、この座標はカメラ３の撮影画像における座標である。次に、校正実行部１１７は外部パラメータ記憶制御部１０９からカメラ３の姿勢角情報を読み出す。以下では、外部パラメータ記憶制御部１０９から読みだした姿勢角情報を、姿勢角初期値と呼ぶ。校正実行部１１７は、姿勢角初期値を用いて、特徴点系列記憶部１１５から読み出した特徴点系列の各特徴点の座標を座標軸変換する。このときの座標軸変換処理は座標変換部１０８で行われるものと同じ処理である。
【００３４】
座標軸変換処理が行われた特徴点系列の各特徴点の座標は、路面上の位置となる。座標軸変換処理に用いた姿勢角情報が正しい値であれば、全ての特徴点系列の各特徴点は一定間隔で車体の前方から後方へとまっすぐに移動する。また、このときの特徴点間隔は車両速度に対応した間隔となる。すなわち、車両２の移動方向をＹ軸方向、それと直交する軸をＸ軸方向とすると、Ｘ軸に対する座標は同一の値を取り、Ｙ軸に対する値は等間隔になる。
【００３５】
外部パラメータ記憶制御部１０９から得られる姿勢角情報は、設計値、もしくは前回のキャリブレーションによって得られた情報のものであり、現在のカメラ３の姿勢角情報と合致しないことが考えられる。合致しない場合は、座標変換後の特徴点系列の各特徴点の座標はＸ座標が同一の値かつＹ座標値の間隔が一定の状態にはならない。校正実行部１１７は座標変換された特徴点系列の各特徴点を直線で結んで得られた特徴点系列の線分を直線近似し、この直線とＹ軸とのなす角度を算出し、これを評価誤差値とする。全ての特徴点系列の評価誤差値を加算することによって、該当する角度情報に対する評価値とする。
【００３６】
校正実行部１１７は、カメラ３の姿勢角を姿勢角初期値から微小量変化させて再び座標変換を行い、その角度に対する評価値を求める。カメラ３は３次元配置であるため、角度はピッチ角、ロール角、ヨー角の３つが存在する。全ての角度に対して微小量の変化を与えて、評価誤差値の計算を行う。評価誤差が、角度の微小変化を与える前より減少している場合は、正しい方向に補正が行われているため、さらに同一方法に変化を与える。評価誤差が増える場合は、補正量が大きすぎ、あるいは逆方向への補正をかけているため、角度の微小変化量を減らす、あるいは逆方向への補正を加えて、評価誤差値を前回と同様に計算する。
【００３７】
このように全ての姿勢角度に微小量変化を加え続けることによって、評価誤差値が最小になる角度の組み合わせを求めることができる。これによって得られた角度の組み合わせを校正結果として校正結果保持部１１８および外部パラメータ記憶制御部１０９へ出力する。
外部パラメータを構成する他の要素である、カメラ３の取り付け高さ情報の校正も同じ手順で行うことができる。取り付け高さに誤差がある場合は、特徴点系列の移動速度が車両２の車速と一致しない。つまり、座標変換後の特徴点の移動距離と、車速から計算される移動距離の差を評価誤差値として、全ての特徴点系列の誤差の合計を該当する高さに対する評価誤差値とすることができる。外部パラメータ記憶制御部１０９から得られる取り付け高さ情報を初期値とし、姿勢角の校正と同様に微小量変化させながら評価誤差値が最小になる高さ求め、校正結果として校正結果保持部１１８および外部パラメータ記憶制御部１０９に出力する。
【００３８】
（フローチャート）
上述した各機能ブロックの動作をフローチャートを用いて説明する。
図４は、キャリブレーション装置１のキャリブレーション処理動作を表すフローチャートである。
ステップＳ２０１では、画像取得部１０２がカメラ３から撮影画像を読み込む。続くステップＳ２０２では、特徴点検出部１０３が撮影画像から特徴点を抽出する。ステップＳ２０３では、ステップＳ２０２において抽出された特徴点の１つを処理対象として、特徴点追跡部１０５が追跡処理を行う。続くステップＳ２０４では、追跡完了判定部１０６が特徴点の追跡が完了したか否かを判定し、完了したと判断する場合はステップＳ２０５に進み、完了していないと判断する場合はステップＳ２１１に進む。
【００３９】
ステップＳ２０５では、特徴点系列作成部１０７が、追跡が終了した特徴点を特徴点系列としてまとめる。続くステップＳ２０６では、座標変換部１０８が特徴点系列を構成するそれぞれの特徴点について、高さゼロの路面上に存在すると仮定して三次元座標に変換する。続くステップＳ２０７では、特徴点系列高さ算出部１１０が上述した式１と式２とを用いて特徴点系列の高さを算出する。続くステップＳ２０８では、特徴点系列登録判定部１１４が特徴点系列の高さがおおよそゼロであるか否かを判断し、おおよそゼロであると判断する場合はステップＳ２０９に進み、おおよそゼロではないと判断する場合はステップＳ２１０に進む。
【００４０】
ステップＳ２０９では、特徴点系列記憶部１１５が特徴点系列を構成する各特徴点の座標をＲＡＭに保存してステップＳ２１１に進む。ステップＳ２１０では、特徴点系列記憶部１１５が特徴点系列の各特徴点の座標を破棄してステップＳ２１１に進む。
ステップＳ２１１では、ＣＰＵ１１がステップＳ２０２において抽出された特徴点の全てについて処理が完了したか否かを判断し、全ての特徴点について処理が完了したと判断する場合はステップＳ２１２に進み、未処理の特徴点があると判断する場合は未処理の特徴点のいずれかを処理対象としてステップＳ２０３に戻る。
【００４１】
ステップＳ２１２では、校正実行部１１７が校正タイミング作成部１１６が作成した校正タイミングであるか否かを判断する。校正実行部１１７が校正タイミングではないと判断すると、ステップＳ２０１に戻る。校正実行部１１７が校正タイミングであると判断すると、ステップＳ２１３において校正を実行し、ステップＳ２１４において出力部１１９が校正結果を出力して図４のフローチャートを終了する。
【００４２】
上述した第１の実施の形態によれば、次の作用効果が得られる。
（１）キャリブレーション装置１は、車両２に固定されたカメラ３が撮影して得られた撮影画像を取得する画像取得部１０２と、撮影画像から特徴点を検出する特徴点検出部１０３と、特徴点を時系列で追跡し特徴点系列を生成する特徴点追跡部１０５、追跡完了判定部１０６、および特徴点系列作成部１０７と、特徴点系列の高さ情報を算出する特徴点系列高さ算出部１１０と、高さ情報に基づき特徴点系列の良否を判断する良否判定部、すなわち特徴点系列登録判定部１１４と、良否判定部により肯定判断された特徴点系列を用いてカメラ３の外部パラメータを校正する校正実行部１１７とを備える。
キャリブレーション装置１は、抽出した特徴点系列の高さを算出し、高さに基づきそれぞれの特徴点系列がキャリブレーションに適するか否かを判断し、肯定判断された特徴点系列を用いてカメラ３の外部パラメータを構成する。そのためキャリブレーション装置１は、適切な特徴点を用いてキャリブレーションを行うことができる。
【００４３】
（２）キャリブレーション装置１の校正実行部１１７が校正する外部パラメータは、カメラ３の車両２への取り付け角度であるヨー角、ロール角、ピッチ角、およびカメラ３の取付け高さの少なくとも１つである。そのためキャリブレーション装置１は、ヨー角、ロール角、ピッチ角、およびカメラ３の取付け高さの少なくとも１つを校正できる。
【００４４】
（３）良否判定部、すなわち特徴点系列登録判定部１１４は、特徴点系列の高さと車両２が走行する路面の高さとの差があらかじめ定めた値よりも大きい場合に否定判断する。そのため、校正実行部１１７は路面よりも高い位置に存在する特徴点、たとえばガードレースの支柱の頂部から抽出された特徴点を排除して校正を実行することができる。すなわちキャリブレーション装置１は、適切な特徴点を用いてキャリブレーションを行うことができる。
【００４５】
（４）キャリブレーション装置１は、検出された特徴点が車両２が走行する路面の高さに存在すると仮定して特徴点のカメラ３との相対位置を実空間上の座標として算出する座標変換部１０８を備える。特徴点系列高さ算出部１１０は、特徴点系列を構成する特徴点の相対位置に基づき特徴点系列の速度を算出し、車両２の速度と特徴点系列の速度とに基づき特徴点系列の高さを推定する。
特徴点系列高さ算出部１１０は、前述の式１に示したように、撮影画像の撮影間隔時間と、それぞれの撮影画像における特徴点の車両２との相対位置に基づき特徴点系列の速度を算出する。そして特徴点系列高さ算出部１１０は、前述の式２に示したように、特徴点系列の速度と車両２の速度に基づき特徴点系列の高さを算出する。式１と式２はそれぞれ４則演算を２回と３回実行するだけなので、特徴点系列高さ算出部１１０は処理を容易に実行できる。また座標変換部１０８は、撮影画像上の座標から三次元座標への座標変換を行うが、特徴点の三次元座標は路面の高さと同じくゼロと仮定する、すなわち拘束条件が追加されているので座標変換が容易である。
【００４６】
（５）良否判定部１１４には、車両２の走行状態を示す情報が入力される。良否判定部１１４は、車両２が等速度で直進走行していないと判断する場合に否定判断をする。そのため、校正に適した条件で撮影された撮影画像から抽出された特徴点のみを用いて校正するので、校正の信頼性をより向上させることができる。
【００４７】
（変形例）
上述した第１の実施の形態を以下のように変形してもよい。
（１）校正実行部１１７は、カメラ３のヨー角、ロール角、ピッチ角、および取付け高さの全てを校正した。しかし校正実行部１１７は、カメラ３の外部パラメータのうち、少なくとも１つを校正すればよい。
（２）特徴点系列登録判定部１１４は、特徴点系列の高さに関する条件と車両２の運動に関する条件の両方が満たされた場合に肯定判断をした。しかし特徴点系列登録判定部１１４は、車両２の運動に関する条件に関わらず、特徴点系列が高さに関する条件を満たす場合に肯定判断をしてもよい。この場合は、車両２が等速直線運動を行ったか否かを判断する必要がないので、キャリブレーション装置１は走行状態保持部１１３を備えなくてもよい。
【００４８】
（３）走行状態保持部１１３は、ジャイロセンサ６の出力を用いる代わりに、ステアリングホイールの角度を検出して車両２が直進走行をしているか否かを判断してもよい。
（４）フラッシュメモリ１４は揮発性メモリであってもよい。この場合は、ＲＯＭ１２に外部パラメータの設計値、または出荷時に校正された外部パラメータの値が格納される。そして、キャリブレーション装置１の起動時にＲＯＭ１２からフラッシュメモリ１４に、外部パラメータの設計値がパラメータ１４Ｐとして読み込まれる。
【００４９】
（５）カメラ３の撮影は周期的でなくてもよい。この場合は、画像取得部１０２は撮影画像の撮影時刻、または直前の撮影画像が入力された時刻との差を示す情報を撮影画像に付加する。これにより、カメラ３の撮影が周期的でない場合でも特徴点系列高さ算出部１１０が特徴点の移動速度を算出可能となる。
（６）車両２はカメラ３を複数備え、キャリブレーション装置１は複数のカメラ３のそれぞれについて外部パラメータを校正してもよい。カメラ３の撮影方向によらず、その校正手法は第１の実施の形態で説明したとおりである。ただし車両２の側方を撮影する場合は、車両２の前方や後方を撮影する場合に比べて路面よりも高い位置に存在する物体を撮影する機会が多いため、キャリブレーションに用いる特徴点の選別が特に有効である。
【００５０】
（７）特徴点系列高さ計算部１１０は、式２に基づき特徴点系列高さＨｆを具体的に算出した。しかし式２においてカメラ３の取り付け高さＨｃとの積を算出せず、カメラ３の取り付け高さＨｃとの高さの比率を表す値であるＲ＿Ｈｆを算出してもよい。Ｒ＿Ｈｆは次の式３により算出される。Ｒ＿Ｈｆは、特徴点系列の高さに関する情報である。
Ｒ＿Ｈｆ＝１−Ｖｃ／Ｖｆ・・・・・式３
この場合は、特徴点系列登録判定部１１４は第１の条件の判断は、上述した値であるＲ＿Ｈｆが所定の範囲、たとえば０．９以上１．１未満であるか否かを判断する。
【００５１】
（８）特徴点系列高さ計算部１１０は、（Ｖｃ／Ｖｆ）を出力してもよいし、Ｖｆを出力してもよい。これらの場合は、特徴点系列登録判定部１１４は、車速Ｖｃと特徴点系列の速度Ｖｆとの比率が所定の範囲、たとえば０．９以上１．１未満であるか否かを判断する。これは、特徴点系列登録判定部１１４における、特徴点系列の高さに関する判断が、車速Ｖｃと特徴点系列の速度Ｖｆとが一致するか否かの判断に近似されるとの考えに基づくものである。すなわち、（Ｖｃ／Ｖｆ）およびＶｆは、特徴点系列の高さに関する情報である。
【００５２】
（９）車両２はカメラ３の撮影画像に基づき制御される自動運転車両であってもよい。この場合、車両２は、ブレーキを動作させる制動部、エンジン回転数を制御するエンジン制御部、およびステアリングホイールを動作させる操舵部が自動運転プログラムの動作指令に基づき動作する。自動運転プログラムはたとえば、カメラ３の撮影画像から接近する移動体を検出して車両２との衝突を避ける回避動作や、カメラ３の撮影画像から駐車枠を検出して自動駐車動作を行う。
【００５３】
（１０）キャリブレーション装置１における処理の一部または全部がキャリブレーション装置１と接続されたサーバで実行されてもよい。たとえばキャリブレーション装置１は、カメラ３、車速センサ５、ジャイロセンサ６から入力された情報をサーバに送信し、サーバが第１の実施の形態においてキャリブレーション装置１が行った全ての処理を行ってもよい。また、キャリブレーション装置１はカメラ３の撮影画像をサーバに送信する代わりに、キャリブレーション装置１が画像の取得と特徴点の検出を行い、検出した特徴点の座標をサーバに送信してもよい。
【００５４】
（第２の実施の形態）
図５〜図６を参照して、キャリブレーション装置の第２の実施の形態を説明する。以下の説明では、第１の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第１の実施の形態と同じである。本実施の形態では、主に、地図情報を用いて特徴点が車道の内側のものであるか否かを判断するもので、第１の実施の形態と異なる。
【００５５】
（ハードウエア構成）
図５はキャリブレーション装置１Ａのハードウエア構成を示す図である。キャリブレーション装置１Ａは、車両２Ａに搭載される。車両２Ａは、キャリブレーション装置１Ａと、カメラ３と、ＧＰＳ受信機４と、速度センサ５と、ジャイロセンサ６と、地図データベース７とを備える。
カメラ３、速度センサ５、およびジャイロセンサ６は第１の実施の形態と同様なので説明を省略する。
ＧＰＳ受信機４は、複数の衛星から信号を受信し、受信した信号を用いた演算によりＧＰＳ受信機４の位置を算出する。
【００５６】
地図データベース７は、少なくとも道路の位置と形状とを含む地図情報が格納されるデータベースである。地図データベース７は、たとえば道路が交差点などを示すノードと、ノード同士を接続するリンクにより構成される。ノードは緯度と経度の情報を含む。リンクは、その端点となる２つのノードにより特定され、道路に関する情報、すなわち道路の幅や道路の形状の情報を含む。道路の幅には、車道の幅と歩道の幅とが含まれる。道路の形状には、ノードを構成する複数の点の緯度・経度、およびノードの曲率半径の少なくとも一方を含む。
【００５７】
キャリブレーション装置１Ａは、ＣＰＵ１１と、ＲＯＭ１２Ａと、ＲＡＭ１３と、フラッシュメモリ１４とを備える。ＣＰＵ１１、ＲＡＭ１３、およびフラッシュメモリ１４の構成は第１の実施の形態と同様なので説明を省略する。ＲＯＭ１２Ａにはプログラム１２ＡＰと、カメラ３の内部パラメータとが格納される。
【００５８】
（機能ブロック）
図６は、キャリブレーション装置１のＣＰＵ１１がＲＯＭ１２Ａに格納されたプログラム１２ＡＰを実行することにより実現される機能を機能ブロックとして表した図である。以下では主に図２との相違点を説明する。
キャリブレーション装置１Ａが機能として備える機能ブロックは、第１の実施の形態におけるキャリブレーション装置１が機能として備える機能ブロックと概ね同様である。両者の相違点は、キャリブレーション装置１Ａは走行状態保持部１１３に代えて走行状態保持部１１３Ａを備える点と、特徴点系列登録判定部１１４に代えて特徴点系列登録判定部１１４Ａを備える点である。
【００５９】
走行状態保持部１１３Ａには、速度センサ５およびジャイロセンサ６に加えて、ＧＰＳ受信機４および地図データベース７と接続される。走行状態保持部１１３Ａは、ＧＰＳ受信機４が出力する車両２の現在位置と、地図データベース７が出力する地図情報に基づき、車両２が現在走行している道路を特定し、その道路に関する情報を特徴点系列登録判定部１１４Ａに出力する。また走行状態保持部１１３Ａは、車両２の現在位置も特徴点系列登録判定部１１４Ａに出力する。なお走行状態保持部１１３Ａは、ＧＰＳ受信機４から位置情報が取得できない場合は、直前に取得した位置情報と、速度センサ５の出力およびジャイロセンサ６の出力を用いて現在位置を算出する。
【００６０】
特徴点系列登録判定部１１４Ａは、２つの条件を満たした場合に肯定判断する。第１の条件は第１の実施の形態と同様に、特徴点系列の高さがおおよそゼロ、すなわち地面の高さと略一致することである。第２の条件は、地図情報を参照して特徴点が車道の内側の領域に存在すると判断できることである。車道の内側の領域とは、車両の通行の用に供するため縁石線若しくは柵その他これに類する工作物又は道路標示によつて区画された車道の内側の領域であり、換言すると道路における歩道を除く領域である。すなわち車道の内側には、車両２とは逆向きに走行する車両の走行車線も含まれる。特徴点系列登録判定部１１４Ａは、走行状態保持部１１３Ａから入力される道路の情報、および車両２の現在位置、ならびに座標変換部１０８が算出した特徴点の位置を用いて、特徴点が道路の内側に存在するか否かを判断する。
【００６１】
上述した第２の実施の形態によれば、次の作用効果が得られる。
（１）特徴点系列登録判定部１１４Ａには、車両２の位置、および少なくとも車道の位置と形状とを含む地図情報が入力される。特徴点系列登録判定部１１４Ａは、車両２の位置、地図情報、および特徴点と車両２の相対位置に基づき、特徴点系列が車道の外側に存在すると判断する場合に否定判断をする。そのため、歩道や道路外などの車道の外側に存在する特徴点を棄却することができる。
【００６２】
（第２の実施の形態の変形例）
特徴点系列登録判定部１１４Ａは、第２の条件を車道が直線であることとしてもよい。特徴点系列登録判定部１１４Ａは、走行状態保持部１１３Ａから入力される道路の情報、および車両２の現在位置に基づき車両２が通行している道路を特定する。そして特徴点系列登録判定部１１４Ａは、道路の情報に基づき車両２が走行している走行車線が直線であるか否かを判断する。ただし、複数の走行車線は平行であることが一般的なので走行車線が直線であるか否かは、車道が直線であるか否かで判断してもよい。さらに、車道に歩道を加えた道路は車道が直線であれば道路も直線であることが一般的なので、走行車線が直線であるか否かは、道路が直線であるか否かで判断してもよい。
【００６３】
上述した変形例によれば、次の作用効果が得られる。
（１）特徴点系列登録判定部１１４Ａには、車両２の位置、および少なくとも道路の位置と形状とを含む地図情報が入力される。特徴点系列登録判定部１１４Ａは、少なくとも車両２が走行している道路が直線でないと判断する場合に否定判断をする。そのためキャリブレーション装置１Ａは、キャリブレーションに適している、直進走行した際に得られた特徴点を用いて校正を実行することができる。
【００６４】
プログラムはＲＯＭ１２に格納されるとしたが、プログラムが外部から読み込まれて不揮発性メモリに格納されていてもよい。また、キャリブレーション装置１が不図示の入出力インタフェースを備え、必要なときに入出力インタフェースとキャリブレーション装置１が利用可能な媒体を介して、他の装置からプログラムが読み込まれてもよい。ここで媒体とは、例えば入出力インタフェースに着脱可能な記憶媒体、または通信媒体、すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やディジタル信号、を指す。また、プログラムにより実現される機能の一部または全部がハードウエア回路やＦＰＧＡにより実現されてもよい。
【００６５】
図７はプログラムが外部から読み込まれる例を示す図である。キャリブレーション装置１が不図示の入出力インタフェースを備え、媒体３０４からプログラムが読み込まれてもよい。また通信回線３０１に接続されたサーバ３０２のハードディスク装置３０３などにプログラムを格納しておき、通信回線３０１を介してキャリブレーション装置１にプログラムを提供する。プログラムは、記録媒体３０４や通信回線３０１を介する提供など、種々の形態のコンピュータプログラム製品として供給することができる。
【００６６】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【００６７】
１、１Ａ  …  キャリブレーション装置
２、２Ａ  …  車両
３  …  カメラ
１２Ｐ  …  プログラム
１４  …  フラッシュメモリ
１０２  …  画像取得部
１０３  …  特徴点検出部
１０４  …  特徴点位置記憶制御部
１０５  …  特徴点追跡部
１０６  …  追跡完了判定部
１０７  …  特徴点系列作成部
１０８  …  座標変換部
１０９  …  外部パラメータ記憶制御部
１１０  …  特徴点系列高さ算出部
１１４、１１４Ａ  …  特徴点系列登録判定部
１１７  …  校正実行部
【図１】
2018032253.tif 000003
【図２】
2018032253.tif 000004
【図３】
2018032253.tif 000005
【図４】
2018032253.tif 000006
【図５】
2018032253.tif 000007
【図６】
2018032253.tif 000008
【図７】
2018032253.tif 000009