【実施例】
【0019】
図1は、本発明が適用される車載カメラシステムの概略構成図である。
【0020】
図1において、自動運転などの車両制御を行うための車載カメラシステムは、車両101の全周囲の情報を取得する必要があるため、通常は1つのカメラではなく複数のカメラを用いている。
図1に示す例では、車両101に、前方カメラ102と、後方カメラ103と、左サイドカメラ104と、右サイドカメラ105との4つのカメラが配置され、各カメラ102〜105からの画像情報をエンジンコントロールユニット(ECU)106へ入力している。
【0021】
図1に示す例では、4つのカメラ102〜105を1つのECU106に接続しているが、本発明の構成はこの数に限ったものではない。
【0022】
自動運転などに使用するカメラシステムは、取り付け角度などの外部パラメータを正確に把握する必要があるが、物理的な取り付け精度には限界があるため、カメラを車体に取り付けたあとに取り付け角度を推定する方法が一般的である。この方法には、既知のマーカーをペイントした床面に車両を配置し、カメラからの入力画像から外部パラメータを推定する方法と、道路走行中に路面に現れるペイントなどから推定する方法の2種類の方法がある。近年は、経年変化や車の荷重変化による外部パラメータの変動に対応可能な、車両の走行中に校正する方法が実用化に向けて検討されている。
【0023】
車両の走行中における外部パラメータの校正は、ECU106で行う必要があり、画像認識を伴うリアルタイム処理となり、処理量が多く、ECU106のリソースを多く必要とする。全てのカメラの校正を同時に行うことは他の処理に影響を及ぼすため、本発明においては、複数のカメラのうちの、どのカメラの校正をどの順に行うかを決めて、いずれか1つのカメラの校正を行う。
【0024】
図2は、本発明の一実施例である車載カメラのキャリブレーション装置のシステム構成を示す図であり、ECU106内に配置されている例である。
【0025】
図2において、車載カメラのキャリブレーション装置は、車両状態判定部201と、カメラ毎処理部202と、出力制御部203と、動作制御部204とを備えている。
【0026】
車両状態判定部201は外部から入力される車両情報から車両状態(車両走行状態)が、カメラ102〜105の外部パラメータの校正を行うのに適するか否かを判断する。カメラ毎処理部202は、カメラ102〜105のそれぞれに対して配置されており、カメラ102〜105のそれぞれからの入力情報(画像情報)を処理する。出力制御部203は、カメラ毎処理部202による校正結果を保存し、車両の外界認識部300に出力する。
【0027】
動作制御部204は、車両状態判定部201からの判定結果と、カメラ毎処理部202からの出力から、各カメラ102〜105の動作モードを決定し、どのカメラの校正を優先するかの判断を行う。カメラ毎処理部202の詳細な動作説明は後述する。
【0028】
カメラ102〜105の校正は、車両101の状態によって精度が大きく変化する。具体的には、車両101の停止時や低速走行時にはカメラ102〜105により撮像された映像の変化が少ないために、精度良く校正することができない。また、道路のカーブなど非直線運動を車両101が行っている場合、校正精度が大きく劣化する。
【0029】
このため、車両状態判定部201では、車両101の速度情報、ハンドル角情報などの車両走行状態を車両101から受けとり、動作制御部204に伝える。動作制御部204では、校正を行うのに適さない車両状態(車両走行状態)か否かを判断し、校正を行うのに適さない車両状態のときは全ての校正動作を停止する。カメラ102〜105の校正精度は、車両101の状態だけでなく、カメラ102〜105から入力される画像情報によっても変化する。この情報は、カメラ毎処理部202がカメラ102〜105からの入力により判定する。具体的には、校正に使用可能な特徴点がどの程度得られるかによって決まる。
【0030】
特徴点とは、路面に現れるペイントなどで、車両101の位置が変わっても同じ点を見つけることが可能な点であり、代表的なものは路面の白線のコーナーなどである。
【0031】
この特徴点の現れ方は、カメラ102〜105の向きによって大きく異なるので、カメラ102〜105が撮像した画像からカメラ毎処理部202が判定して、動作制御部204に伝える。動作制御部204は、各カメラ102〜105の状態を判断し、各カメラ102〜105の動作モードを決定してカメラ毎処理部202に伝える。
【0032】
図3は、各カメラ102〜105の動作モード遷移と優先度の一例を示す図である。
【0033】
図3において、各カメラ102〜105は、監視モード301、認識モード302、キャリブモード(校正モード)303、休止モード304の4つの動作モードを持つ。各カメラ102〜105は、起動時に監視モード301から始める。監視モード301では、カメラ102〜105に写る特徴点がどの程度あるかを監視する。これは、カメラ毎処理部202の各カメラ102〜105に備えられた特徴点処理部202Aによって処理された特徴点について、特徴点発生頻度検出部202Cにより、特徴点発生頻度が検出されることにより実行される。特徴点発生頻度検出部202Cにより検出された特徴点発生頻度は、動作制御部204に伝達される。
【0034】
なお、監視モード301と、認識モード302と、キャリブモード303と、休止モード304との4つの動作モードを纏めて、外部パラメータの校正処理と定義することも可能である。
【0035】
特徴点の監視には大きな処理性能が必要になるが、処理量削減のため、監視モードにおいては、縮小画像情報や部分画像情報などを用いて、処理量の小さな動作を実現できる。
【0036】
図3に示した例における、あるカメラの監視モード301は優先度が低であるが、特徴点の発生数が規定値以上であり、隣接レーンがあると動作制御部204が判断すると、動作制御部204は該当カメラの優先順位を上げ、該当カメラは認識モード302に移行する(該当カメラにおける認識モードは優先度高である)。この移行は、動作モード制御部204が、カメラ毎処理部202の該当カメラの動作モード部202Dに伝える。優先度が高いカメラ処理部の動作が他のカメラの処理部より優先して実行される。
【0037】
複数のカメラで優先度が等しくなる場合は、優先度をさらに詳細に設定することによって、校正を行うカメラを決定する。たとえば、最後に構成されてから経過した時間が長いカメラを優先する、あるいは、特徴点を多く検出しているカメラを優先する、あるいは、校正結果の信頼性が低いカメラを優先する、などの方法である。乱数を使用して優先度の等しいカメラの中からランダムに選択する方法もある。
【0038】
認識モード302では、特徴点処理部202Aが校正に使用する特徴点をカメラ画像から抽出し、複数時間のカメラ画像に対して同一特徴点の追跡が行われる。このときの特徴点位置は、校正精度に大きく影響するために、縮小画像などは使用せず、使用可能な最大精度の画像を使用する。このため、ECU106の大きな処理量を必要とする。また、連続した時間の画像に対して追跡処理を行うため、優先順位は高くする必要がある。
【0039】
特徴点が一定の量蓄積された場合(特徴点追跡正常終了数規定値以上)、各カメラ処理部202の該当カメラの処理部はそれを動作制御部204に伝え、動作制御部204は、該当カメラにキャリブモード303への移行を指示する。動作制御部204を経由するのは、他のカメラの優先順位を考慮し、統合的な判断が必要なためである。
【0040】
キャリブモード303に移行したカメラのカメラ毎処理部202のキャリブ実行部202Bは、蓄積した特徴点軌跡の動きから、該当カメラの外部パラメータを推定し、該当カメラの外部パラメータのキャリブレーション(校正)を実行する。外部パラメータの推定方法は、特許文献2などに示される方法であり、広く知られている方法で良い。
【0041】
キャリブモード302での推定処理は、大きな処理量を必要とするが、新たな入力画像に依存しないため、認識処理よりも優先順位を下げても良い。このため、
図3に示す例では、優先度を中としている。
【0042】
キャリブモード303において、キャリブ結果が正常であるか、キャリブ結果異常が規定回数以上と動作制御部204が判断し、キャリブモード303での推定処理が完了したカメラは、推定結果を出力し、休止モード304へと移行する。休止モード304では、校正に関する一切の処理を停止し、ECU106の処理リソースを消費しないようにする。
【0043】
外部パラメータの校正は、車両101の荷重変動に対応する必要があるため、ある程度時間経過した場合は、再び校正処理を開始することが望ましい。そのため、休止モード304の状態のカメラも一定時間(例えば、1時間)経過した場合は、監視モード301に戻り、再校正を開始する。望ましい校正間隔は、車両状態に依存するため、動作制御部204が判断し、カメラ毎処理部202へと伝達する。ただし、車両101の運転開始時は、車両101の走行開始時から数分程度経過後に校正処理を開始する。
【0044】
また、各モード301、302、303の状態が一定時間経過した場合は、タイムアウトとなり、休止モード304に遷移する。
【0045】
また、キャリブモード303において、キャリブ結果が異常であった場合は、認識モード302に遷移する。キャリブモード303におけるキャリブ結果異常が規定回数以上となった場合は、上述したように、休止モード304に遷移する。
【0046】
また、認識モード302において、車両101の車速が規定値以上、非直線走行、特等点発生数が規定数より小のいずれかの場合は、監視モード301に遷移する。
【0047】
カメラ毎処理部202では、動作制御部204から指示された動作モードで動作する。
【0048】
すなわち、監視モード301では、精度を落とした状態で、カメラ画像に表れる特徴点の頻度を調べて動作制御部204に伝達する。認識モード302では、精度を高めた状態で、特徴点の検出と追跡を行い、追跡が完了した特徴点系列の座標を内部メモリに格納し、格納数を動作制御部204に伝える。
【0049】
また、キャリブモード303では、キャリブ実行部202Bが格納した特徴点系列の座標から、最適な外部パラメータを計算する。休止モード304では、新たな指示が動作制御部204から与えられるまで、全ての動作を停止する。
【0050】
新たな指示が動作制御部204から与えられた場合は、指示に従って該当する動作モードへ移行する。
【0051】
動作制御部204は、各カメラ102〜105の動作モードを認識しているため、どのカメラを優先して校正するかを決定する。
【0052】
図4は、動作制御部204の内部機能ブロック図である。
【0053】
図4において、動作制御部204は、校正動作停止判断部204Aと、動作モード決定部204Bと、優先順位決定部204Cとを備える。校正動作停止判断部204Aは、車両状態判定部201からの判定結果に基づいて校正動作を停止するか否かを判断する。動作モード決定部204Bは、校正動作停止判断部204Aから停止指示が出力されていない場合は、カメラ毎処理部202からの出力に基づいて、動作モードを決定し、カメラ毎処理部202の動作モード部202Dに動作モードを指令する。
【0054】
動作モード決定部204Bは、決定した動作モード及びカメラ毎処理部202から伝達された特徴点系列の数等を優先順位決定部204Cに伝達する。優先順位決定部204Cは、動作モード及び特徴点系列の数や発生位置等に基づいて、優先順位(優先度)を決定し、決定した優先度をカメラ毎処理部202の動作モード部202Dに伝達する。
【0055】
例えば、全てのカメラ102〜105が監視モードにあり、複数のカメラ102〜105が認識モード302に移行することが可能になった場合、処理量を抑えるために1つのカメラしか認識モード302に移行することができないと判断することができる。
【0056】
図5は、全てのカメラ102〜105が監視モード301の状態のとき、どのカメラを優先して認識モード302に遷移させるかの処理フローチャートである。
【0057】
図5において、優先順位決定部204Cは、一定期間経過したか否かを判断し(ステップS1)、一定期間が経過した場合は、ステップS2に進む。ステップs2において、優先順位決定部204Cは、全てのカメラ102〜105が監視モード301か否かを判断する。全て監視モード301であれば、ステップS3に進み、各カメラ102〜105の優先度を算出し、ステップS5に進む。
【0058】
ステップS2において、全てのカメラ102〜105が監視モード301となっている状態ではない場合は、ステップS4に進み、監視モード301となっているカメラのうちの優先度を判断する。そして、ステップS5に進む。
【0059】
ステップS5において、優先度が最も高いカメラが認識モード302となるように、カメラ毎処理部202の動作モード部202Dに指示する。
【0060】
なお、上述した例は、全てのカメラ102〜105が監視モード301の状態の場合の例であるが、全てのカメラ102〜105が他のモードとなっている場合も、同様な処理を行うことが可能であるので、詳細な説明は省略する。
【0061】
車両101の車体の前後に設置したカメラ102及び103は、車両101の車体の左右両側の車線の特徴点を捉えられるのに対し、車両101の車体の左右に設置されたカメラ104及び105は、片側の車線しか捉えることができない。
【0062】
そのため、車両101の車体の左右に設置されたカメラ104及び105は、校正の機会が少なくなることが考えられる。この場合は、校正の機会が少ないカメラ104又は105を優先して認識モード302に移行することが可能である。
【0063】
また、動作制御部204は、車両状態判定部201を介して、車両情報の他に他の動作制御アプリケーションプログラムの動作情報を得ることもできる。この情報の取得動作は必須のものではないが、動作制御アプリケーションプログラムの動作情報を利用して校正動作の収束の早期化、安定性向上、精度向上を図ることができる。
【0064】
他の動作制御アプリケーションプログラムの一例として、車線認識機能を例にとって説明する。
【0065】
車線認識機能は、カメラ画像から道路上の白線を認識し、走行レーンに対する自車位置を認識する機能である。この車線認識機能を用いることによって、動作制御部204は、例えば、車両101の左側に有効な車線がなく、左側に設置したカメラ104が路面上の特徴点を捕らえていないことを認識することができる。路面外の特徴点は、校正に使用すると精度が劣化するため、左側カメラ104を認識モード302に移行させないなどの処理を行うことができる。
【0066】
また、他の動作制御アプリケーションプログラムの動作情報からは、キャリブ実行部(校正部)202Bが使用できるECU106の処理量を求めることができる。すなわち、多くの動作制御アプリケーションプログラムが動作している場合は、校正に使用する処理量を低下させ、動作している動作制御アプリケーションが少ない場合は、校正に使用する処理量を増加させるなどを行うことができる。
【0067】
使用できる処理量が多い場合は、複数のカメラを認識モード302に移行させることができ、また、使用できる処理量が少なすぎる場合は、認識モード302に移行するのを停止することができる。
【0068】
また、車両情報からは安全に関する情報をも得ることができる。すなわち、車両101と先行車との急激な接近、急ブレーキの実行等のように車両101に緊急状態が発生した場合、車両情報からその情報を得ることによって、各カメラ102〜105の状態を全て休止モード304に移行させて、校正に必要な処理量を全て開放し、他のアプリケーションプログラム、例えば、自動運転にかかわるアプリケーションプログラムに割り当てられることができ、他のアプリケーションの動作を円滑にすることができる。このような動作は、車両101の安全性を向上させることに寄与する。
【0069】
このように、動作制御部204は、車両情報、他の動作制御アプリケーションプログラムの動作情報、各カメラ102〜105が撮像した画像に存在する特徴点の頻度などから優先度を計算し、どのカメラを優先するかを決め、各カメラ102〜105に適切な動作モードを指示することができる。
【0070】
この動作制御部204の機能により、校正しやすいカメラを優先的に校正し、無駄な動作を減らして、全体の校正にかかる時間を短縮することができる。
【0071】
また、校正に使用できる処理量を求めることにより、ECU106の処理能力を無駄なく使用することができる。このことは、やはり全体の校正にかかる時間を短縮することができ、また、他のアプリケーションプログラムの動作を阻害する機会が減るため、自動運転などにおいて、安全運転の向上に寄与することができる。
【0072】
したがって、本発明の一実施例によれば、車両に配置された複数のカメラの校正実行時間を短縮し、自動運転の精度向上を図ることが可能な車載カメラのキャリブレーション装置を実現することができる。
【0073】
なお、上述した例においては、動作制御部204が、カメラ毎処理部202からの情報に従って、各カメラ102〜105の動作モードを遷移させるように構成したが、カメラ102〜105の校正を行う順序を予め定めておき、それに従って、校正を行うカメラ毎に、監視モード301→認識モード302→キャリブモード303→休止モード304に遷移させることにより、カメラ102〜105を、一個毎に校正を行うように指令する構成とすることも可能である。
【0074】
また、上述したカメラ102〜105の校正順序を、車両101の走行状態により定めるように指令する構成とすることも可能である。
【0075】
また、上述した例は、休止モード304の状態が一定時間経過したときに、監視モード301に遷移するように構成したが、予め定めた時間経過したときに、監視モード301に遷移するように構成し、予め定めた時間を車両101の走行状態により変更するように構成することも可能である。
【0076】
例えば、車両101の総合走行距離に従って、上記予め定めた時間を短縮していくように構成することも可能である。
【0077】
また、上述した例は、本発明による車載カメラのキャリブレーション装置をECU106内の機能として配置したが、ECU106内ではなく、車両101に配置された他のECU(エレクトリックコントロールユニット)内に、配置することもできる。また、車載カメラのキャリブレーション装置として、別箇に配置することも可能である。