以下に、本願の開示する画像処理装置および画像処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
まず、車載カメラの配置位置およびオーバーラップ部分の一例について説明する。オーバーラップ部は、各車載カメラの撮影範囲が重複する部分を示す。図2は、車載カメラの配置位置とオーバーラップ部分を示す図である。図2に示すように、車両50の前後左右に車載カメラCF、CB、CL、CRが配置されている。具体的には、車両50の前側に車載カメラCFが配置され、車両50の後側に車載カメラCBが配置される。また、車両50の左側に車載カメラCLが配置され、車両50の右側に車載カメラCRが配置される。
車載カメラCFの撮影範囲を50Fとし、車載カメラCBの撮影範囲を50Bとする。車載カメラCLの撮影範囲を50Lとし、車載カメラCRの撮影範囲を50Rとする。そして、車載カメラCFの撮影範囲50Fと車載カメラCRの撮影範囲50Rとのオーバーラップ部をAFRとし、車載カメラCRの撮影範囲50Rと車載カメラCBの撮影範囲50Bとのオーバーラップ部をARBとする。車載カメラCBの撮影範囲50Bと車載カメラCLの撮影範囲50Lとのオーバーラップ部分をABLとし、車載カメラCLの撮影範囲50Lと車載カメラCFの撮影範囲50Fとのオーバーラップ部分をALFとする。
次に、本実施例2にかかるキャリブレーション装置の構成について説明する。このキャリブレーション装置は、例えば、車両50の内部に配置される。図3は、本実施例2にかかるキャリブレーション装置の構成を示す図である。図3に示すように、このキャリブレーション装置100は、記憶部110、画像入力部120、画像補正部130、キャリブレーション実行部140、画像合成部150、表示部160を有する。また、キャリブレーション装置100は、車載カメラCF、CR、CB、CLに接続される。
記憶部110は、各種のデータを記憶する記憶部である。この記憶部110は、画像管理テーブル110a、キャリブレーションポイント110b、テンプレートデータ110c、対象物画像管理テーブル110d、カメラパラメータ110eを記憶する。
画像管理テーブル110aは、車載カメラCF、CR、CB、CLが撮影した画像データを記憶するテーブルである。図4は、画像管理テーブルのデータ構造の一例を示す図である。図4に示すように、この画像管理テーブル110aは、カメラ識別情報と画像データと撮影時間とを対応づけて記憶する。カメラ識別情報は、画像データを撮影した車載カメラを一意に識別する情報である。画像データは、各車載カメラが撮影した画像データである。撮影時間は、車載カメラが画像を撮影した時間である。図4では一例として、各車載カメラの撮影範囲の画像データを記憶する場合を示したが、撮影範囲のうち、オーバーラップ部分の画像データのみを記憶してもよい。
キャリブレーションポイント110bは、所定の座標情報を有する。この座標情報に対応する位置周辺には、交差点や道路標識、路上のマークなどが存在する。例えば、路上のマークには、前方に横断歩道ありの意味を持つ「ひし形」マークや、Uターン禁止の意味を持つ「バツ」マーク、進行方向を示す「矢印」マークが存在する。以下の説明において、交差点、道路標識、路上のマークをまとめて対象物と表記する。
テンプレートデータ110cは、対象物の形状データをそれぞれ記憶する。図5は、テンプレートデータのデータ構造の一例を示す図である。図5に示すように、このテンプレートデータ110cは、テンプレート識別情報と形状データと特徴点間の寸法とを対応づけて記憶する。テンプレート識別情報は、テンプレートを一意に識別する情報である。形状データは、テンプレートの形状を示すデータである。特徴点間の寸法は、テンプレートに含まれる特徴点間の寸法を示す。
テンプレートの特徴点は、テンプレートによって異なる。図6は、テンプレートの特徴点の一例を示す図である。図6に示すように、テンプレートAの形状が矢印の場合には、テンプレートAの特徴点は矢印の各端A1〜A5となる。テンプレートBの形状がバツ印の場合には、テンプレートBの特徴点はバツ印の各端B1〜B8となる。テンプレートCの形状がひし形の場合には、テンプレートCの特徴点はひし形の各端C1〜C4となる。
対象物画像管理テーブル110dは、オーバーラップ部分ALF、AFR、ARB、ABLに含まれる対象物の画像データを記憶する。カメラパラメータ110eは、車載カメラCF、CR、CB、CLの設置位置や設置角度などをそれぞれ記憶する。
画像入力部120は、車載カメラCF、CR、CB、CLから画像データを取得し、取得した各画像データを画像補正部130に出力する処理部である。各画像データは、撮影範囲の画像の他に、画像を撮影した車載カメラを識別する情報や撮影時刻の情報を含んでいるものとする。
画像補正部130は、各画像データに対して、レンズの歪み補正などの画像補正を行う処理部である。画像補正部130は、画像補正を行った後に、各画像データを画像管理テーブル110aに記憶する。
キャリブレーション実行部140は、オーバーラップ部分ALF、AFR、ARB、ABLに対象物が含まれるたびに、対象物の画像データを対象物画像管理テーブル110dに登録する。そして、キャリブレーション実行部140は、オーバーラップ部分ALF、AFR、ARB、ABLに対応する対象物の画像データが全て揃った場合に、対象物の特徴点の誤差を算出する。キャリブレーション実行部140は、かかる誤差を利用してカメラパラメータ110eを調整する。キャリブレーション実行部140の処理の詳細は後述する。
画像合成部150は、車載カメラCF、CR、CB、CLが撮影した画像データを画像管理テーブル110aから取得し、カメラパラメータ110eに基づいて各画像データを合成することで、合成画像データを生成する処理部である。画像合成部150は、合成画像データを表示部160に出力する。
表示部160は、合成画像データをディスプレイなどの表示装置に表示させる処理部である。この合成画像データは、例えば、車両50を上方の位置から車両50全体を撮影したような俯瞰画像に対応する。
上記の画像入力部120、画像補正部130、キャリブレーション実行部140、画像合成部150、表示部160は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。また、上記処理部130、140、150、160は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の電子回路に対応する。
上記の記憶部110は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
次に、図3に示したキャリブレーション実行部140の構成について説明する。図7は、キャリブレーション実行部の構成を示す図である。図7に示すように、このキャリブレーション実行部140は、位置データ取得部140a、誤差補正判定部140b、オブジェクト探索部140c、有効画像判定部140d、カメラパラメータ調整部140eを有する。
位置データ取得部140aは、車両50の位置データを取得し、位置データをオブジェクト探索部140cに出力する。この位置データは、車両50の位置座標を含む。位置データ取得部140aは、例えば、GPS(Global Positioning System)等の機能を利用して、車両50の位置座標を取得する。
誤差補正判定部140bは、カメラパラメータ110eの調整を行うか否かを判定し、判定結果をカメラパラメータ調整部140eに出力する。例えば、誤差補正判定部140bは、外部の入力装置を介して、利用者からカメラパラメータの調整指示を受け付けた場合に、カメラパラメータ110eの調整を行うと判定する。また例えば、誤差補正判定部140bは、カメラパラメータを調整した前回のタイミングから経過した時間が、所定時間以上である場合に、カメラパラメータ110eの調整を行うと判定しても良い。この場合に、所定時間は、走行中の振動や季節の温度差によるボディの変化などのカメラパラメータに誤差を生じさせる原因を考慮して設定することが考えられる。
オブジェクト探索部140cは、テンプレートデータ110cに記憶された対象物の形状データと、画像管理テーブル110aの各画像データとを比較して、対象物を含む画像データを抽出する。オブジェクト探索部140cは、対象物の画像データを対象物画像管理テーブル110dに記憶する。
ここで、オブジェクト探索部140cが対象物の画像データを抽出する処理の一例について説明する。オブジェクト探索部140cは、テンプレートデータ110cの形状データの向きや大きさを所定の割合で変化させながら、画像管理テーブル110aの各画像データとパターンマッチングを行う。そして、オブジェクト探索部140cは、形状データと一致する画像データを、対象物の画像データとして抽出する。
オブジェクト探索部140cは、対象物の画像データを抽出した場合には、対象物の画像データを対象物画像管理テーブル110dに登録する。なお、オブジェクト探索部140cは、対の車載カメラが撮影した対象物の画像データを対応づけて、対象物画像管理テーブル110dに登録する。
ここでは一例として、車載カメラCF、CRの組、車載カメラCR、CBの組、車載カメラCB、CLの組、車載カメラCL、CRの組を対の車載カメラとする。また、車載カメラCF、CRがそれぞれ撮影した画像データの組をAFRデータとし、車載カメラCR、CBがそれぞれ撮影した画像データの組をARBデータとする。また、車載カメラCB、CLがそれぞれ撮影した画像データの組をABLデータとし、車載カメラCL、CFがそれぞれ撮影した画像データの組をALFデータとする。
図8、図9を用いて、オブジェクト探索部140cが各種画像データを対象物画像管理テーブル110dに登録する処理を説明する。図8は、各種画像データを抽出するタイミングを示す図である。図8の横軸は時間軸である。図8に示すように、オブジェクト探索部140cは、時間t1において、ARFデータ1を抽出し、時間t2において、ALFデータ1を抽出する。また、オブジェクト探索部140cは、時間t3において、AFRデータ2を抽出し、時間t4において、ARBデータ1、ABLデータ1を抽出する。
図9は、対象物画像管理テーブルのデータ構造の一例を示す図である。図9に示すように、対象物画像管理テーブル110dは、時間と、ALFデータ、AFRデータ、ARBデータ、ABLデータとを対応づけて記憶する。時間は、各種データを取得した時間を示す。
オブジェクト探索部140cは、時間t1にAFRデータ1を抽出するので、時間t1のAFRデータに対応するデータ領域にAFRデータ1を登録する。オブジェクト探索部140cは、時間t2にALFデータ1を抽出するので、時間t2のALFデータに対応するデータ領域にALFデータ1を登録する。また、オブジェクト探索部140cは、AFRデータ1を、時間t2のAFRデータに対応するデータ領域に繰り越す。
オブジェクト探索部140cは、時間t3にAFRデータ2を抽出するので、時間t3のAFRデータに対応するデータ領域にAFRデータ2を登録する。また、オブジェクト探索部140cは、ALFデータ1を、時間t3のALFデータに対応するデータ領域に繰り越す。
オブジェクト探索部140cは、時間t4にARBデータ1、ABLデータ1を抽出する。このため、オブジェクト探索部140cは、時間t4のARBデータに対応するデータ領域にARBデータ1を登録する。また、オブジェクト探索部140cは、時間t4のABLデータに対応するデータ領域にABLデータ1を登録する。また、オブジェクト探索部140cは、ALFデータ1を、時間t4のALFデータに対応するデータ領域に繰り越す。オブジェクト探索部140cは、AFRデータ2を、時間t4のAFRデータに対応するデータ領域に繰り越す。上記のような処理をオブジェクト探索部140cが実行することで、オブジェクト探索部140cは、対象物の画像データを対象物画像管理テーブル110dに記憶する。
なお、オブジェクト探索部140cは、車両50の位置に応じて、対象物の画像データを対象物画像管理テーブル110dに登録する処理を制限してもよい。オブジェクト探索部140cは、位置データ取得部140aから取得する位置データと、キャリブレーションポイント110bとを比較する。そして、オブジェクト探索部140cは、車両50の位置が、キャリブレーションポイント110bの座標情報に含まれている場合には、対象物の画像データを対象物画像管理テーブル110dに登録する処理を継続する。このように車両50の位置が、キャリブレーションポイント110bの座標情報に含まれている場合には、周辺に対象物が存在する可能性が高いため、効率よく対象物の画像データを収集できる。
これに対して、オブジェクト探索部140cは、車両50の位置が、キャリブレーションポイント110bの座標情報に含まれてない場合には、対象物の画像データを対象物画像管理テーブル110dに登録する処理を中断する。このように車両50の位置が、キャリブレーションポイント110bの座標情報に含まれてない場合には、周辺に対象物が存在する可能性が低いため、オブジェクト探索部140cにかかる負荷を軽減させることができる。
また、オブジェクト探索部140cは、ALFデータ、AFRデータ、ARBデータ、ABLデータをはじめて取得した場合には、対象物が存在するしないにかかわらず、対象物画像管理テーブル110dに登録してもよい。また、図9に示した例では、オブジェクト探索部140cは、AFRデータ1を取得した後に、AFRデータ2を取得した場合に、AFRデータ1をAFRデータ2で上書きしているがこれに限定されるものではない。オブジェクト探索部140cは、最適なデータを選択して、データを対象物画像管理テーブル110dに登録してもよい。例えば、オブジェクト探索部140cは、各データのうち、対象物の特徴点を多く含んでいる方の画像を最適なデータと判定する。
図7の説明に戻る。有効画像判定部140dは、対象物画像管理テーブル110dを参照し、ALFデータ、AFRデータ、ARBデータ、ABLデータが揃ったか否かを判定する。有効画像判定部140dは、ALFデータ、AFRデータ、ARBデータ、ABLデータが揃ったと判定した場合には、最初に登録されたデータの登録時間から、最後に登録されたデータの登録時間までの時間がTC時間以内であるか否かを判定する。
有効画像判定部140dは、最初に登録されたデータの登録時間から、最後に登録されたデータの登録時間までの時間がTC時間以内の場合には、ALFデータ、AFRデータ、ARBデータ、ABLデータを、カメラパラメータ調整部140eに出力する。
図9に示す例では、時間t4にALFデータ、AFRデータ、ARBデータ、ABLデータが揃っている。このデータのうち、最初に登録されたデータはALFデータ1であり、登録時間はt2である。また、最後に登録されたデータはARBデータ1、ABLデータ1であり、登録時間はt4である。時間t2から時間t4までの時間がTC以内であるとする。この場合には、有効画像判定部140dは、ALFデータ1、AFRデータ2、ARBデータ1、ABLデータ1をカメラパラメータ調整部140eに出力する。
カメラパラメータ調整部140eは、異なる重複領域の対象物の画像を基にして、カメラパラメータ110eを調整する処理部である。この異なる重複領域の対象物の画像は、上記のALFデータ、AFRデータ、ARBデータ、ABLデータに対応する。また、カメラパラメータ調整部140eは、カメラパラメータ110eの調整を行う旨の判定結果を誤差補正判定部140bから通知されている場合に、カメラパラメータ110eの調整を行うものとする。
以下において、カメラパラメータ調整部140eの処理を具体的に説明する。まず、カメラパラメータ調整部140eは、対象物の特徴点の座標を算出する。そして、カメラパラメータ調整部140eは、各特徴点の座標の誤差を算出し、誤差が最大となる車載カメラを判定する。誤差が大きいほど、該当する車載カメラのカメラパラメータがずれていることを意味する。
ここでは一例として、ALFデータを用いて説明する。このALFデータは上記のように、車載カメラCLが撮影した対象物の画像データと、車載カメラCFが撮影した対象物の画像データとを含んでおり、実空間上で各対象物は同一である。
図10は、カメラパラメータ調整部の処理を説明するための図である。図10の対象物DLは、車載カメラCLが撮影した対象物に対応し、対象物DFは、車載カメラCFが撮影した対象物に対応する。
カメラパラメータ調整部140eは、車載カメラCLが撮影した対象物DLの特徴点DL1〜DL4を、所定の位置を基準としたグローバル座標系の座標に変換する。また、カメラパラメータ調整部140eは、車載カメラCFが撮影した対象物DFの特徴点DF1〜DF4を、グローバル座標系の座標に変換する。例えば、カメラパラメータ調整部140eは、画像上の座標とグローバル座標系の座標とを対応付けた座標変換テーブルを用いて、特徴点の座標を求める。
カメラパラメータ調整部140eは、グローバル座標のDL1とDF1との誤差d1、DL2とDF2との誤差d2、DL3とDF3との誤差d3、DL4とDF4との誤差d4を算出し、d1、d2、d3、d4を平均化することで平均誤差を算出する。具体的に、平均誤差は
平均誤差=(d1+d2+d3+d4)/4
となる。
カメラパラメータ調整部140eは、上記処理と同様の処理をAFRデータ、ARBデータ、ABLデータに対して実行し、各データから平均誤差を算出する。以下では、ALFデータから求めた平均誤差をD1、AFRデータから求めた平均誤差をD2、ARBデータから求めた平均誤差をD3、ABLデータから求めた平均誤差をD4とする。
カメラパラメータ調整部140eは、各平均誤差の所定の組み合わせの和となるDC1〜DC4を算出し、算出結果に基づいて調整対象の車載カメラを判定する。具体的に、カメラパラメータ調整部140eは、DC1〜DC4を
DC1=D1+D2
DC2=D2+D3
DC3=D3+D4
DC4=D4+D1
により算出する。
カメラパラメータ調整部140eは、DC1〜DC4のうち最大のものを判定し、判定結果に基づいて調整対象の車載カメラを特定する。カメラパラメータ調整部140eは、DC1が最大となる場合には、車載カメラCFを調整対象の車載カメラとする。カメラパラメータ調整部140eは、DC2が最大となる場合には、車載カメラCRを調整対象の車載カメラとする。カメラパラメータ調整部140eは、DC3が最大となる場合には、車載カメラCBを調整対象の車載カメラとする。カメラパラメータ調整部140eは、DC4が最大となる場合には、車載カメラCLを調整対象の車載カメラとする。
続いて、カメラパラメータ調整部140eは、ALFデータ、AFRデータ、ARBデータ、ABLデータそれぞれについて、実際の特徴点間の寸法と、画像上から求めた対象物の特徴点間の寸法とのずれを示す評価関数fを作成する。この評価関数fの値は、カメラパラメータ110eの値に依存する。また、実際の特徴点間の寸法は、テンプレートデータ110cに登録されている。
カメラパラメータ調整部140eは、調整対象となるカメラパラメータの値を所定の割合で変化させていき、各評価関数fの総和が最小となるカメラパラメータの値を算出する。カメラパラメータ調整部140eは、算出したカメラパラメータの値により、カメラパラメータ110eを更新する。なお、カメラパラメータ調整部140eは、例えば、特開2009−294109に記載された技術を利用して、カメラパラメータの値を算出してもよい。
次に、本実施例2にかかるキャリブレーション装置100の処理手順について説明する。図11は、本実施例2にかかるキャリブレーション装置の処理手順を示すフローチャートである。図11に示す処理は、例えば、車載カメラCF、CR、CB、CLから画像データを取得したことを契機にして実行される。
図11に示すように、キャリブレーション装置100は、オーバーラップ上の画像データを取得し(ステップS101)、該当オーバーラップ部分において、初の画像データか否かを判定する(ステップS102)。キャリブレーション装置100は、該当オーバーラップ部分において、初の画像データではない場合には(ステップS102,No)、最適な画像データを判定し、最適な画像データを対象物画像管理テーブル110dに保存する(ステップS103)。キャリブレーション装置100は、最適な画像データを対象物画像管理テーブル110dに保存した後に、ステップS105に移行する。
キャリブレーション装置100は、該当オーバーラップ部分において、初の画像データの場合には(ステップS102,Yes)、画像データを対象物画像管理テーブル110dに保存する(ステップS104)。
キャリブレーション装置100は、TC時間以内に画像データが全てそろっていない場合には(ステップS105,No)、再度ステップS101に移行する。一方、キャリブレーション装置100は、TC時間以内に画像データが全てそろった場合には(ステップS105,Yes)、カメラパラメータを調整するか否かを判定する(ステップS106)。
キャリブレーション装置100は、カメラパラメータを調整する場合には(ステップS106,Yes)、カメラパラメータ調整処理を実行する(ステップS107)。一方、キャリブレーション装置100は、カメラパラメータを調整しない場合には(ステップS106,No)、処理を終了する。
次に、図11のステップS107に示したカメラパラメータ調整処理の処理手順について説明する。図12は、カメラパラメータ調整処理の処理手順を示すフローチャートである。キャリブレーション実行部140は、D1〜D4を算出する(ステップS201)。
キャリブレーション実行部140は、誤差が閾値未満の場合には(ステップS202,Yes)、カメラパラメータ調整処理を終了する。キャリブレーション実行部140は、誤差が閾値以上の場合には(ステップS202,No)、カメラ候補判定処理を実行する(ステップS203)。
キャリブレーション実行部140は、調整候補の車載カメラと、前回調整したカメラとが同じ場合には(ステップS204,Yes)、カメラパラメータ調整処理を終了する。一方、キャリブレーション実行部140は、調整候補の車載カメラと、前回調整したカメラとが異なる場合には(ステップS204,No)、調整候補の車載カメラのカメラパラメータを算出する(ステップS205)。
キャリブレーション実行部140は、カメラパラメータ110eを調整する(ステップS206)。キャリブレーション実行部140は、調整前のカメラパラメータと調整後のカメラパラメータとの差分の絶対値が閾値未満の場合には(ステップS207,Yes)、カメラパラメータ調整処理を終了する。一方、キャリブレーション実行部140は、調整前のカメラパラメータと調整後のカメラパラメータとの差分の絶対値が閾値以上の場合には(ステップS207,No)、再度ステップS201に移行する。
次に、図12のステップS203に示した調整候補判定処理の処理手順について説明する。図13は、調整候補判定処理の処理手順を示すフローチャートである。キャリブレーション実行部140は、Nに車載カメラの台数を代入し(ステップS301)、誤差の最大値Dmaxを初期値に設定する(ステップS302)。
キャリブレーション実行部140は、iに1を代入し(ステップS303)、iの値がNの値より大きい場合には(ステップS304,Yes)、処理を終了する。一方、キャリブレーション実行部140は、iの値がNの値以下の場合には(ステップS304,No)、DmaxがDCi未満であるか否かを判定する(ステップS305)。
キャリブレーション実行部140は、Dmaxの値がDCiの値以上の場合には(ステップS305,No)、ステップS308に移行する。一方、キャリブレーション実行部140は、Dmaxの値がDCiの値未満の場合には(ステップS305,Yes)、DmaxにDCiの値を代入する(ステップS306)。
キャリブレーション実行部140は、DCiに対応する車載カメラを調整カメラ候補に設定する(ステップS307)。キャリブレーション実行部140は、iの値に1を加算した値をiに代入し(ステップS308)、再度ステップS304に移行する。
次に、キャリブレーション実行部140が画像データを対象物画像管理テーブル110dに登録する処理手順について説明する。図14は、画像データを対象物画像管理テーブルに登録する処理手順を示すフローチャートである。例えば、図14に示す処理は、キャリブレーション実行部140が車両の位置データを取得したことを契機にして実行される。
図14に示すように、キャリブレーション実行部140は、位置データを取得し(ステップS401)、車両の位置がキャリブレーションポイントの付近であるか否かを判定する(ステップS402)。
キャリブレーション実行部140は、車両の位置がキャリブレーションポイントの付近ではない場合には(ステップS402,No)、処理を終了する。一方、キャリブレーション実行部140は、車両の位置がキャリブレーションポイントの付近の場合には(ステップS402,Yes)、対の車載カメラによって撮影されたオーバーラップ部の画像データをそれぞれ取得する(ステップS403)。
キャリブレーション実行部140は、画像データがテンプレートの形状データと一致しない場合には(ステップS404,No)、処理を終了する。一方、キャリブレーション実行部140は、画像データがテンプレートの形状データと一致する場合には(ステップS404,Yes)、画像データを対象物画像管理テーブルに保存する(ステップS405)。
上述してきたように、キャリブレーション装置100は、車載カメラCF、CR、CB、CLが撮影した重複領域ALF、AFR、ARB、ABLの画像に対象物が含まれている場合に、重複領域の画像を対象物画像管理テーブル110dに登録しておく。また、キャリブレーション装置100は、対象物画像管理テーブル110dに、ALFデータ、AFRデータ、ALBデータ、ABLデータが揃った場合に、対象物の特徴点の誤差とテンプレートデータ110cとを基にして、カメラパラメータ110eを調整する。カメラパラメータ110eの調整で必要となる対象物画像管理テーブル110dのALFデータ、AFRデータ、ABLデータは、車両走行中に順次記憶することができる。このため、キャリブレーション装置100によれば、車両の走行中にカメラのパラメータを修正することができるという効果を奏する。
また、上記キャリブレーション装置100は、ALFデータ、AFRデータ、ARBデータ、ABLデータが、所定の時間幅TC内に撮影された場合に、かかるALFデータ、AFRデータ、ARBデータ、ABLデータを利用してカメラパラメータを調整する。このため、車載カメラの長期的な経年変化の影響を除外して、カメラパラメータを精度よく調整することができる。
なお、時間幅TCを長く設定すると、人の乗り降りが発生し、車載カメラの状態を一定に保つことができなくなる。このため、キャリブレーション装置100は、時間幅TCを短く設定することで、例えば、利用者が車両に乗り降りすることによる影響を除外して、カメラパラメータを精度よく調整することができる。
また、上記キャリブレーション装置100は、評価関数を利用して、対象物の特徴点の誤差が最小となるようにカメラパラメータを調整する。このため、簡易な方法により、カメラパラメータを再調整することが可能となる。
なお、本実施例2では、移動体の一例として、車両を用いて実施例の説明を行ったがこれに限定されるものではない。例えば、路面電車、自動二輪車等の車両を含む移動体にも同様にして本願発明を適用することができる。
ところで、図3に示したキャリブレーション装置100の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、キャリブレーション装置100の分散、統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
例えば、キャリブレーション装置100に通信機能を持たせ、キャリブレーション実行部140の機能をネットワーク上のサーバ装置に持たせ、テンプレートデータ110c、対象物画像管理テーブル110dをサーバ装置に記憶させる。そして、キャリブレーション装置100は、各画像データをサーバ装置に送信し、カメラパラメータ110eの修正依頼を行ってもよい。
キャリブレーション装置100は、既知のパーソナルコンピュータ、ワークステーション、携帯電話、PHS端末、移動体通信端末またはPDAなどの情報処理装置に、キャリブレーション装置100の各機能を搭載することによって実現することもできる。
図15は、実施例にかかるキャリブレーション装置を構成するコンピュータのハードウェア構成を示す図である。図15に示すように、このコンピュータ200は、各種演算処理を実行するCPU(Central Processing Unit)201と、ユーザからのデータの入力を受け付ける入力装置202と、モニタ203を有する。また、コンピュータ200は、記憶媒体からプログラム等を読取る媒体読み取り装置204と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置205を有する。また、コンピュータ200は、画像を撮影する複数のカメラ206と、各種情報を一時記憶するRAM(Random Access Memory)207と、ハードディスク装置208を有する。各装置201〜208は、バス209に接続される。
そして、ハードディスク装置208には、図3に示した画像補正部130、キャリブレーション実行部140に対応するキャリブレーションプログラム208aを記憶する。また、ハードディスク装置208は、図3に示した画像合成部150に対応する画像合成プログラム208bを記憶する。また、ハードディスク装置208は、各種データ208cを記憶する。この各種データ208cは、図3の各種データ110a〜110eに対応する。
CPU201がキャリブレーションプログラム208aをハードディスク装置208から読み出してRAM207に展開することにより、キャリブレーションプログラム208aは、キャリブレーションプロセス207aとして機能するようになる。CPU201が画像合成プログラム208bをハードディスク装置208から読み出してRAM207に展開することにより、画像合成プログラム208bは、画像合成プロセス207bとして機能するようになる。また、CPU201は、各種データ208cを読み出して、RAM207に格納する。
キャリブレーションプロセス207aは、重複領域の画像データを利用して、各種データ207cに含まれるカメラパラメータを調整する。画像合成プロセス207bは、各種データ207cに含まれるカメラパラメータを基にして、各画像データを合成し、モニタに合成画像を表示させる。
なお、上記のキャリブレーションプログラム208a、画像合成プログラム208bは、必ずしもハードディスク装置208に格納されている必要はない。例えば、CD−ROM等の記憶媒体に記憶されたキャリブレーションプログラム208a、画像合成プログラム208bを、コンピュータ200が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等にこのキャリブレーションプログラム208a、画像合成プログラム208bを記憶させておいてもよい。この場合、コンピュータ200がこれらからキャリブレーションプログラム208a、画像合成プログラム208bを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)対になるカメラの撮影範囲が重複する領域を示す重複領域の画像を、異なる重複領域毎に取得する画像取得部と、
所定の形状の対象物の画像と前記重複領域の画像とを比較して、前記重複領域の画像に含まれる前記対象物の画像を抽出し、抽出した対象物の画像を該画像を撮影したカメラと対応づけて記憶部に保存する対象物抽出部と、
前記異なる重複領域毎に、前記対になるカメラがそれぞれ撮影した対象物の画像が前記記憶部に記憶された場合に、各対象物の特徴点の位置と所定の寸法とに基づいて、各特徴点の位置の誤差を算出する誤差算出部と、
を備えたことを特徴とする画像処理装置。
(付記2)前記カメラの位置または角度を含むパラメータに基づいて、各カメラが撮影した画像を合成する画像合成部と、前記誤差算出部が算出した誤差に基づいて前記パラメータを調整するパラメータ調整部とを更に備えたことを特徴とする付記1に記載の画像処理装置。
(付記3)前記対象物抽出部は、前記対象物の画像を前記記憶部に保存する場合に、前記対象物の画像が撮影された時間を対応づけて記憶し、前記誤差算出部は、前記記憶部に記憶された異なる重複領域毎の対象物の画像の撮影時間の差が所定時間内の場合に、各特徴点の位置の誤差を算出すること特徴とする付記1または2に記載の画像処理装置。
(付記4)前記パラメータ調整部は、対のカメラに対応する対象物の特徴点の誤差の総和が最小となるように前記パラメータを調整することを特徴とする付記2または3に記載の画像処理装置。
(付記5)コンピュータに、
対になるカメラの撮影範囲が重複する領域を示す重複領域の画像を、異なる重複領域毎に取得する画像取得手順と、
所定の形状の対象物の画像と前記重複領域の画像とを比較して、前記重複領域の画像に含まれる前記対象物の画像を抽出し、抽出した対象物の画像を該画像を撮影したカメラと対応づけて記憶部に保存する対象物抽出手順と、
前記異なる重複領域毎に、前記対になるカメラがそれぞれ撮影した対象物の画像が前記記憶部に記憶された場合に、各対象物の特徴点の位置と所定の寸法とに基づいて、各特徴点の位置の誤差を算出する誤差算出手順と、
を実行させることを特徴とする画像処理プログラム。
(付記6)前記カメラの位置または角度を含むパラメータに基づいて、各カメラが撮影した画像を合成する画像合成手順と、前記誤差算出手順が算出した誤差に基づいて前記パラメータを調整するパラメータ調整手順とを更にコンピュータに実行させることを特徴とする付記5に記載の画像処理プログラム。
(付記7)前記対象物抽出手順は、前記対象物の画像を前記記憶部に保存する場合に、前記対象物の画像が撮影された時間を対応づけて記憶し、前記誤差算出手順は、前記記憶部に記憶された異なる重複領域毎の対象物の撮影時間の差が所定時間内の場合に、各特徴点の位置の誤差を算出すること特徴とする付記5または6に記載の画像処理プログラム。
(付記8)前記パラメータ調整手順は、対のカメラに対応する対象物の特徴点の誤差の総和が最小となるように前記パラメータを調整することを特徴とする付記6または7に記載の画像処理プログラム。