車両検出装置
【課題】本発明は、画像から車両の情報を高精度に検出する車両検出装置を提供することを課題とする。
【解決手段】撮像手段4で撮像した画像から車両の情報を検出する車両検出装置1であって、車両の面の候補を推定する面候補推定手段11と、車両を撮像した画像から所定の特徴量を有する複数の特徴点を抽出する特徴点抽出手段12と、抽出した特徴点の3次元位置を推定する3次元位置推定手段13と、異なる時刻で撮像した各画像からそれぞれ推定された面候補の組み合わせ毎に、面候補間で複数の特徴点について特徴量の差が小さくなる特徴点の対応関係を探索し、当該探索された対応関係の複数の特徴点間において3次元位置を並進移動及び回転変換した上で位置誤差を求め、当該位置誤差が最少となる組み合わせの面候補を抽出し、当該抽出した組み合わせの面候補に基づいて車両の面を検出する車両情報検出手段14とを備えることを特徴とする。
【解決手段】撮像手段4で撮像した画像から車両の情報を検出する車両検出装置1であって、車両の面の候補を推定する面候補推定手段11と、車両を撮像した画像から所定の特徴量を有する複数の特徴点を抽出する特徴点抽出手段12と、抽出した特徴点の3次元位置を推定する3次元位置推定手段13と、異なる時刻で撮像した各画像からそれぞれ推定された面候補の組み合わせ毎に、面候補間で複数の特徴点について特徴量の差が小さくなる特徴点の対応関係を探索し、当該探索された対応関係の複数の特徴点間において3次元位置を並進移動及び回転変換した上で位置誤差を求め、当該位置誤差が最少となる組み合わせの面候補を抽出し、当該抽出した組み合わせの面候補に基づいて車両の面を検出する車両情報検出手段14とを備えることを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、車両検出装置に関する。
【背景技術】
【0002】
近年、衝突防止装置、車間制御装置などの運転支援装置が開発されている。これら運転支援装置では、自車両の前方を走行する車両を検出することが重要となる。このような検出装置には、自車両に搭載したカメラで撮像した画像に基づいて車両の情報を検出するものがある。特許文献1に記載の装置では、画像から縦エッジを検出し、縦エッジの数に基づいて車両の側面と後面を判別する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−50089号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
隣接車線から自車線に車両が車線変更しているときなど、自車両に対して検出対象の車両が斜め方向を向いている場合、その車両の側方と後面が同時にカメラで撮像される。この場合、上記の装置では、側面と後面とを判別することしかできないので、2面が撮像されている画像に対して対応できず、車両の情報(2面の境界を示す車両端点、2面を含む車両の面など)を検出できない。
【0005】
そこで、本発明は、画像から車両の情報を高精度に検出する車両検出装置を提供することを課題とする。
【課題を解決するための手段】
【0006】
本発明に係る車両検出装置は、撮像手段で撮像した画像から車両の情報を検出する車両検出装置であって、車両の面の候補を推定する面候補推定手段と、撮像手段で車両を撮像した画像から所定の特徴量を有する複数の特徴点を抽出する特徴点抽出手段と、特徴点抽出手段で抽出した特徴点の3次元位置を推定する3次元位置推定手段と、撮像手段で異なる時刻で撮像した各画像からそれぞれ推定された面候補の組み合わせ毎に、面候補間で複数の特徴点について特徴量の差が小さくなる特徴点の対応関係を探索し、当該探索された対応関係の複数の特徴点間において3次元位置を並進移動及び回転変換した上で位置誤差を求め、当該位置誤差が最少となる組み合わせの面候補を抽出し、当該抽出した組み合わせの面候補に基づいて車両の面を検出する車両情報検出手段とを備えることを特徴とする。
【0007】
この車両検出装置では、面候補推定手段により車両の面の候補を推定する。また、車両検出装置では、撮像手段で撮像する毎に、特徴点抽出手段により画像から所定の特徴量(例えば、エッジ、ウェーブレット、SIFT)を有する特徴点を複数抽出し、3次元位置推定手段によりその各特徴点の3次元位置をそれぞれ推定する。そして、車両検出装置では、車両情報検出手段により、異なる時刻で撮像した各画像からそれぞれ推定された面候補の組み合わせ毎に、異なる時刻での面候補間において面候補内の複数の特徴点について特徴量の差が小さくなる各特徴点の対応関係をそれぞれ探索し、その対応関係の複数の特徴点間において3次元位置を並進移動及び回転変換して位置誤差を求める。複数の特徴点の3次元位置の並進移動及び回転変換によって車両の挙動の変化を考慮しているので、面候補のうち車両の面を正しく推定している面候補の場合には異なる時刻での面候補間での対応する複数の特徴点の位置誤差は小さくなる。そこで、車両検出装置では、車両情報検出手段により、各組み合わせの面候補間の位置誤差を比較し、位置誤差が最少となる組み合わせの面候補を抽出し、その位置誤差が最少となる組み合わせの面候補に基づいて車両の面を検出する。このように、車両検出装置では、異なる時刻での面候補間の複数の特徴点の位置誤差を利用することにより、車両の情報(車両の面)を高精度に検出することができる。
【0008】
なお、車両の面(面の候補)は、画像に写っている車両全体の面であり、車両の一面(前面、後面、側面)だけの場合もあれば、車両の複数の面(例えば、前面+側面、後面+側面)を含む場合もある。3次元位置の並進移動及び回転変換は、3次元位置を並進移動変換及び回転変換させる場合以外にも、並進移動変換だけをさせる場合、回転変換だけをさせる場合も含むものとする。
【0009】
本発明の上記車両検出装置では、車両情報検出手段は、検出した面に基づいて車両の端点を検出する構成としてもよい。
【0010】
検出した面が車両の2つの面を含んでいる場合、その検出した面内の2つの面の交差点から車両の端点(2つの面の境界位置)を抽出できる。したがって、この車両検出装置では、高精度に検出された面に基づいて、車両の端点を高精度に検出することができる。
【0011】
本発明の上記車両検出装置では、車両情報検出手段は、抽出した組み合わせの面候補間において対応する特徴点間の3次元位置の位置誤差が閾値以内の特徴点が存在する領域に基づいて車両の面の幅を検出する構成としてもよい。
【0012】
抽出された組み合わせの各面候補(検出された車両の面)内の複数の特徴点の中には、車両以外の特徴点も含まれている場合がある。異なる時刻間の対応する特徴点が車両の特徴点の場合、異なる時刻間でも各特徴点の3次元位置は近い位置関係にある。しかし、異なる時刻間の対応する特徴点が車両以外の物体の特徴点の場合、異なる時刻間での各特徴点の3次元位置は遠い位置関係にある。したがって、抽出した組み合わせの面候補間において対応する特徴点の3次元位置の位置誤差が大きい場合には車両以外の物体の特徴点とみなすことができ、位置誤差が小さい場合には車両の特徴点とみなすことがでる。そこで、この車両検出装置では、抽出した組み合わせの面候補間(すなわち、異なる時刻間)において対応する特徴点の3次元位置の位置誤差が閾値以内の特徴点が存在する領域に基づいて、車両の面の幅を高精度に検出することができる。
【発明の効果】
【0013】
本発明によれば、異なる時刻での面候補間の複数の特徴点の位置誤差を利用することにより、車両の情報(車両の面)を高精度に検出することができる。
【図面の簡単な説明】
【0014】
【図1】第1の実施の形態に係る車両検出装置の構成図である。
【図2】レーザレーダによる反射点の一例である。
【図3】反射点群の分割位置の一例である。
【図4】形状モデルの一例であり、(a)がモデル1であり、(b)がモデル2である。
【図5】sobelフィルタであり、(a)が横エッジ検出用であり、(b)が縦エッジ検出用である。
【図6】カメラによる画像に対するエッジ画像の一例である。
【図7】特徴点の画像上位置と3次元位置との関係を示す図であり、(a)が車両を斜視した場合であり、(b)が上面視した場合である。
【図8】特徴点の時刻間対応付けの説明図であり、(a)が時刻間の比較例であり、(b)が位置誤差が大きい比較例1であり、(c)が位置誤差が小さい比較例2である。
【図9】車両位置・面候補推定部におけるメイン処理の流れを示すフローチャートである。
【図10】車両位置・面候補推定部におけるメイン処理の中のグルーピング処理の流れを示すフローチャートである。
【図11】車両位置・面候補推定部におけるメイン処理の中の形状モデル推定処理の流れを示すフローチャートである。
【図12】車両位置・面候補推定部におけるメイン処理の中の画像上範囲推定処理(前面・後面)の流れを示すフローチャートである。
【図13】車両位置・面候補推定部におけるメイン処理の中の画像上範囲推定処理(側面)の流れを示すフローチャートである。
【図14】特徴点3次元位置候補推定部における処理の流れを示すフローチャートである。
【図15】車両端点抽出部における処理の流れを示すフローチャート(前半部)である。
【図16】車両端点抽出部における処理の流れを示すフローチャート(後半部)である。
【図17】第2の実施の形態に係る車両検出装置の構成図である。
【図18】2時刻間での特徴点の位置誤差の一例であり、(a)が前時刻t1での特徴点の画像上位置と3次元位置との関係を示す図であり、(b)が現時刻t2での特徴点の画像上位置と3次元位置との関係を示す図であり、(c)が前時刻t1と現時刻t2間における特徴点の3次元位置の位置誤差を示す図である。
【図19】車両幅推定部における処理の説明図である。
【図20】車両幅推定部における処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、図面を参照して、本発明に係る車両検出装置の実施の形態を説明する。
【0016】
本実施の形態では、本発明に係る車両検出装置を、車両に搭載される車両検出装置に適用する。本実施の形態に係る車両検出装置は、自車両の前方に存在する車両を検出し、検出した車両の情報を車間距離制御装置や衝突防止装置などの運転支援装置に提供する。本実施の形態には、2つの形態があり、第1の実施の形態が車両情報として車両の端部(車両の面)を検出する形態であり、第2の実施の形態が車両情報として車両の端部の他に車両の幅も検出する形態である。
【0017】
図1〜図8を参照して、第1の実施の形態に係る車両検出装置1について説明する。図1は、第1の実施の形態に係る車両検出装置の構成図である。図2は、レーザレーダによる反射点の一例である。図3は、反射点群の分割位置の一例である。図4は、形状モデルの一例であり、(a)がモデル1であり、(b)がモデル2である。図5は、sobelフィルタであり、(a)が横エッジ検出用であり、(b)が縦エッジ検出用である。図6は、カメラによる画像に対するエッジ画像の一例である。図7は、特徴点の画像上位置と3次元位置との関係を示す図であり、(a)が車両を斜視した場合であり、(b)が上面視した場合である。図8は、特徴点の時刻間対応付けの説明図であり、(a)が時刻間の比較例であり、(b)が位置誤差が大きい比較例1であり、(c)が位置誤差が小さい比較例2である。
【0018】
車両検出装置1は、レーダセンサによるレーダ情報を用いて車両の各面が存在する画像上の範囲を推定し、カメラによる画像情報を用いてその推定した画像上の範囲内のエッジの情報に基づいて車両の端点(2つの面の境界位置)を検出する。特に、車両検出装置1は、連続する2時刻間の各画像からそれぞれ推定された面候補の組み合わせ毎に、面候補間で複数の特徴点について特徴量の差が小さくなる特徴点の対応関係を探索し、その対応関係の複数の特徴点間において3次元位置を並進移動及び回転変換した上で最少の位置誤差を求め、全ての組み合わせの面候補の中で位置誤差が最少となる組み合わせの面候補を抽出し、その抽出した組み合わせの面候補に基づいて車両の面を検出し、その面から車両の端点を抽出する。そのために、車両検出装置1は、レーザレーダ3、カメラ4、ECU[Electronic Control Unit]10を備えており、ECU10に車両位置・面候補推定部11、特徴点抽出部12、特徴点3次元位置候補推定部13、車両端点抽出部14が構成される。
【0019】
なお、第1の実施の形態では、車両位置・面候補推定部11が特許請求の範囲に記載する面候補推定手段に相当し、特徴点抽出部12が特許請求の範囲に記載する特徴点抽出手段に相当し、特徴点3次元位置候補推定部13が特許請求の範囲に記載する3次元位置推定手段に相当し、車両端点抽出部14が特許請求の範囲に記載する車両情報検出手段に相当する。
【0020】
レーザレーダ3は、レーザ光を利用して物体を検出する走査型のレーダである。レーザレーダ3は、自車両の前端部の中央に取り付けられる。また、レーザレーダ3は、検出対象の車両を十分に検出可能な高さ位置かつ路面に対して略平行に取り付けられる。レーザレーダ3では、所定時間毎に、レーザ光を所定角度毎に水平方向にスキャンしながら自車両から前方に向けて出射し、反射してきたレーザ光を受光する。そして、レーザレーダ3では、所定時間毎に、受光できた各反射点(検出点)についてのデータ(水平方向の走査方位角、出射時刻、受光時刻、受光強度(反射強度)など)からなるレーダ信号をECU10に送信する。
【0021】
カメラ4は、CCD[Charge Coupled Device]やレンズなどで構成され、自車両の前方を撮像するカメラである。カメラ4は、自車両の前方の中央の所定の位置に取り付けられ、自車両前方に延びる中心軸とカメラの光軸との向きが一致する方向に向けて配置される。カメラ4では、所定時間毎に(例えば、100m秒毎に)、自車両の前方を撮像し、その撮像画像のデータを画像信号としてECU10に送信する。なお、カメラ4は、対象物についての少なくとも光学点な濃淡情報を取得できればよいので、白黒のカメラでもよいし、カラーのカメラでもよい。
【0022】
レーザレーダ3とカメラ4との取り付け位置関係は、事前に計測され、レーザレーダ3の座標系とカメラ4の座標系との間での座標変換を行うために必要な各種パラメータが取得されている。
【0023】
ECU10は、CPU[CentralProcessing Unit]、ROM[Read Only Memory]、RAM[Random Access Memory]などからなる電子制御ユニットであり、車両検出装置1を統括制御する。ECU10では、ROMに格納されているアプリケーションプログラムをRAM上にロードし、CPUで実行することによって車両位置・面候補推定部11、特徴点抽出部12、特徴点3次元位置候補推定部13、車両端点抽出部14を構成する。ECU10では、所定時間毎に、レーザレーダ3からレーダ信号、カメラ4から画像信号を受信する。そして、ECU10では、この各信号を用いて各部11,12,13,14の処理を行い、車両を検出できた場合にはその車両の情報を車両情報信号として運転支援装置に送信する。
【0024】
車両位置・面候補推定部11について説明する。車両位置・面候補推定部11では、レーザレーダ3で検出された多数の反射点に対して、グルーピングを行い、グループ毎にそのグループの反射点群に車両の形状モデルを当てはめ、車両の形状モデルが当てはまるグループがある場合にはその反射点群から車両の面の候補(画像上での範囲)を推定する。
【0025】
図2には、レーザレーダ3で検出された反射点pt1,pt2,・・・,pt19の一例を示している。車両の走行環境では、自車両の前方の車両とその周囲のガードレールなどの他の物体とはある程度以上距離が離れている。そのため、同一の物体で反射した反射点間は近いが、異なる物体で反射した反射点間は遠い。図2に示す例の場合、車両での反射点群pt12〜pt17では隣接する反射点間距離は小さくなり、その他の物体での反射点群pt1〜pt11、反射点群pt18〜pt19でも隣接する反射点間距離がそれぞれ小さくなるが、車両での反射点群pt12と隣接する反射点pt11間距離は大きくなり、車両での反射点群pt17と隣接する反射点pt18間距離は大きくなる。
【0026】
グルーピング処理について具体的に説明する。車両位置・面候補推定部11では、レーザレーダ3で検出された反射点pt毎に、式(1)により、その反射点ptと隣接する反射点pt−1間の距離LNpt,pt−1を計算する。式(1)において、rpxは3次元のレーザレーダ座標系における反射点ptのx座標であり、rpyは3次元のレーザレーダ座標系における反射点ptのy座標であり、rpzは3次元のレーザレーダ座標系における反射点ptのz座標である。
【数1】
【0027】
そして、車両位置・面候補推定部11では、反射点間距離LNpt,pt−1が閾値THR_PTL未満か否かを判定する。閾値THR_PTLは、隣接する反射点間の距離に基づいてその隣接する2つの反射点が同一物体で反射した反射点であるか否かを判定するための閾値である。閾値THR_PTLとしては、例えば、車両と路側端の物体との分離の観点で、(車線幅−車両幅)/2とする。
【0028】
車両位置・面候補推定部11では、反射点間距離LNpt,pt−1が閾値THR_PTL未満の場合にはその2つの反射点pt,pt−1を同じグループに分類し、反射点間距離LNpt,pt−1が閾値THR_PTL以上の場合にはその2つの反射点pt,pt−1を異なるグループに分類する。車両位置・面候補推定部11では、この反射点間距離判定をレーザレーダ3で検出された全ての反射点に行い、全ての反射点をグループ分けする。
【0029】
形状モデル推定処理について具体的に説明する。車両位置・面候補推定部11では、グルーピングされたグループgn毎に、グループgnに含まれる反射点群に対して、分割位置sptを順次設定する。そして、車両位置・面候補推定部11では、その分割位置sptを境界として、グループgnに含まれる反射点群を2つの反射点群RPT1={rptgn,1,・・・,rptgn,spt}、RPT2={rptgn,spt,・・・,rptgn,Ngn}に分割する。分割位置sptは、隣接する2つ反射点の間の中間位置又はグループでの両端の反射点の外側の位置に設定される。したがって、反射点の数がn個の場合、n+1個の分割位置が設定される。図3には、あるグループの反射点群rptgn,1,・・・,rptgn,6を示しており、分割位置sptとして隣接する反射点rptgn,3と反射点rptgn,4との間に設定され、2つの反射点群RPT1={rptgn,1,rptgn,2,rptgn,3}、RPT2={rptgn,4,rptgn,5,rptgn,6}に分割される。
【0030】
分割位置sptを設定する毎に、車両位置・面候補推定部11では、事前に用意されている車両の形状モデルmodel毎に、2つの反射点群RPT1={rptgn,1,・・・,rptgn,spt}、RPT2={rptgn,spt,・・・,rptgn,Ngn}と車両の形状モデルmodelとの一致度SMmodel,sptを計算する。一致度SMとしては、例えば、形状モデルと各反射点との誤差の総和として計算する。
【0031】
車両の形状モデルは、前面・後面用モデルと側面用モデルからなる車両の2面のモデル、前面、後面、側面の中の車両の1面のモデルがある。各面のモデルは、車両を水平面で切った場合の各面の外形状を示す線からなるモデルあり、例えば、前面・後面用モデルとして1次関数や2次関数で示される線であり、側面用モデルとしては1次関数で示される線である。図4には、車両の形状モデルの一例を示しており、(a)に示す形状モデルmodel1は直線状の側面用モデルsmと曲線状の前面・後面用モデルfmからなり、(b)に示す形状モデルmodel2は曲線状の前面・後面用モデルfmと直線状の側面用モデルsmからなる。ちなみに、分割位置sptが隣接する反射点間の間に設定されている場合には2面のモデルとの処理を行い、分割位置sptが反射点群の外側に設定されている場合には1面のモデルとの処理を行う。
【0032】
図4には、図3に示す分割位置sptで分割した2つの反射点群RPT1={rptgn,1,rptgn,2,rptgn,3}、RPT2={rptgn,4,rptgn,5,rptgn,6}を、図4(a)に示すmodel1を当てはめた場合と図4(b)に示すmodel2を当てはめた場合を示しており、図4(a)に示す形状モデルmodel1は当てはまっているが、図4(b)に示す形状モデルmodel2は当てはまっていない。
【0033】
一致度SMmodel,sptを計算する毎に、車両位置・面候補推定部11では、一致度SMmodel,sptが閾値THR_SM未満か否かを判定する。閾値THR_SMは、一致度に基づいてグループの反射点群が車両の形状モデルに当てはまるか否かを判定するための閾値である。
【0034】
車両位置・面候補推定部11では、一致度SMmodel,sptが閾値THR_SM未満の場合、2つの反射点群RPT1={rptgn,1,・・・,rptgn,spt}、RPT2={rptgn,spt,・・・,rptgn,Ngn}について両端の反射点間の長さ(横方向の長さ)をそれぞれ計算し、その2つの長さのうちの長い方を最長部の長さLWmodel,sptとする。そして、車両位置・面候補推定部11では、最長部の長さLWmodel,sptが所定範囲(THR_LW_LOW〜THR_LW_HIGH)内か否かを判定する。所定範囲(THR_LW_LOW〜THR_LW_HIGH)は、最長部の長さLWmodel,sptに基づいてその各グループの反射点群の横方向の長さが車両の面に対応する範囲内の長さか否か(つまり、車両でない物体を排除)を判定するための閾値である。
【0035】
車両位置・面候補推定部11では、最長部の長さLWmodel,sptが所定範囲(THR_LW_LOW〜THR_LW_HIGH)内の場合、形状一致度SMmodel,sptが、それまでに設定されている分割位置の最少誤差MIN_SMspt未満か否かを判定する。最少誤差MIN_SMsptは、最少の形状一致度SMmodel,sptを探索するためのパラメータであり、初期値としては∞が設定される。
【0036】
車両位置・面候補推定部11では、形状一致度SMmodel,sptが最少誤差MIN_SMspt未満の場合、最少誤差MIN_SMsptとして形状一致度SMmodel,sptを設定するとともに、そのときの車両の形状モデルのモデルパラメータMPmodel,sptを記憶する。モデルパラメータMPmodel,sptは、車両の形状モデルを示すパラメータである。例えば、モデルパラメータMPmodel,spt=(a1,a2,a3,a4,a5,a6)は、RANSAC[RANdom Sample Consensus]法を用いて計算する。ただし、正面x’=a1y’2+a2y’+a3、側面y=a4x+a5、a6=cosφ、x’=cosφx−sinφy、y’=sinφx+cosφyである。
【0037】
そして、車両位置・面候補推定部11では、各グループgnについて用意されている全ての形状モデルmodelに対して上記の処理を行い、最終的にモデルパラメータMPmodel,sptが記憶されている場合(つまり、そのグループgnの反射点群に対して、一致度SMmodel,sptが閾値THR_SM未満かつ最長部の長さLWmodel,sptが所定範囲(THR_LW_LOW〜THR_LW_HIGH)内かつ一致度SMmodel,sptが最少となる形状モデルがある場合)、そのグループgnの反射点群の分割位置sptにおいて車両の形状モデルが1つ当てはまったと判断し、そのモデルパラメータMPmodel,sptで示される形状モデルをグループgnの反射点群における分割位置sptに対する車両の形状モデルとして確定する。このように形状モデルに当てはまるグループgn(反射点群)がある場合、車両を検出したことになる。
【0038】
車両位置・面候補推定部11では、モデルパラメータMPmodel,sptにデータが記憶された場合(そのグループgnの反射点群の分割位置sptにおいて当てはまる車両の形状モデルがある場合)、式(2)により、モデルパラメータMPmodel,sptに記憶されたデータを用いて、車両の方位φspt(分割位置sptでの車両の方位の候補に相当)を計算する。
【数2】
【0039】
画像上範囲推定処理について具体的に説明する。画像上の車両の形状モデルが当てはまったグループgnがある場合、そのグループgnの反射点群を用いて画像上の車両が存在する範囲を推定するが、車両の前面・後面の画像上の範囲と側面の画像上の範囲に分けて推定を行う。このように、前面・後面と側面とに分けて画像上範囲を推定するのは、特徴点3次元位置候補推定部13において各特徴点の3次元位置を推定する際に平面フィッティングを行うので、その平面フィッティングでの精度を向上させるためである。
【0040】
まず、前面・後面の範囲推定について説明する。車両位置・面候補推定部11では、そのグループgn内の前面・後面に属する反射点rpgn,fr,i毎に、式(3)により、その反射点rpgn,fr,i=3次元位置(xgn,fr,i,ygn,fr,i,zgn,fr,i,1)Tから画像上の位置Pimggn,fr,i=2次元位置(ugn,fr,i,vgn,fr,i,1)Tを計算する。式(3)にけるPは、レーザレーダ座標系から画像座標系へ変換するための3行4列の変換行列であり、カメラ4の焦点距離などの内部パラメータ、レーザレーダ3とカメラ4との相対位置や向きなどから求められる。また、式(3)におけるsは、3次元座標系から2次元座標系に投影する際に奥行き方向がなくなることを考慮した奥行きパラメータである。
【数3】
【0041】
位置Pimggn,fr,iを計算する毎に、車両位置・面候補推定部11では、横位置ugn,fr,iが前面・後面用の左端点位置FRLPtgnより小さいか否かを判定する。車両位置・面候補推定部11では、横位置ugn,fr,iが左端点位置FRLPtgnより小さいと判定した場合、横位置ugn,fr,iを左端点位置FRLPtgnとして設定する。また、車両位置・面候補推定部11では、横位置ugn,fr,iが前面・後面用の右端点位置FRRPtgnより大きいか否かを判定する。車両位置・面候補推定部11では、横位置ugn,fr,iが右端点位置FRRPtgnより大きいと判定した場合、横位置ugn,fr,iを右端点位置FRRPtgnとして設定する。左端点位置FRLPtgnは、車両の形状モデルが当てはまったグループgnの前面・後面に属する反射点群の画像上の左端点を探索するためのパラメータであり、初期値として画像の横幅IMG_WIDTHが設定される。右端点位置FRRPtgnは、車両の形状モデルが当てはまったグループgnの前面・後面に属する反射点群の画像上の右端点を探索するためのパラメータであり、初期値として0が設定される。ちなみに、画像座標系では、画像上の左端の横方向位置uが0であり、右方ほど横方向位置uが大きくなる。また、画像座標系では、画像上の上端の縦方向位置vが0であり、下方ほど縦方向位置vが大きくなる。
【0042】
車両位置・面候補推定部11では、車両の形状モデルが当てはまったグループgn内の前面・後面に属する全ての反射点に対して上記の処理を行う。最終的に設定されている左端点位置FRLPtgnがグループgnの画像上の車両の前面・後面の左端点に相当し、右端点位置FRRPtgnがグループgnの画像上の車両の前面・後面の右端点に相当する。
【0043】
次に、車両位置・面候補推定部11では、そのグループgn内の前面・後面に属する全ての反射点rpgn,fr,iの3次元位置を用いて、その平均位置rpmeangn,fr=(xmgn,fr,ymgn,fr,zmgn,fr,1)Tを計算する。そして、車両位置・面候補推定部11では、その平均位置rpmeangn,frを用いて、式(4)により、グループgnの画像上の車両の前面・後面用の下端点FRVlowgnを計算する。また、車両位置・面候補推定部11では、その平均位置rpmeangn,frを用いて、式(5)により、グループgnの画像上の車両の前面・後面用の上端点FRVhighgnを計算する。式(4)、式(5)におけるHvfrは車両のボンネットの高さ(例えば、0.8m)に相当する画像上の量である。式(4)、式(5)におけるpijは上記した3行4列の変換行列Pのi行j列目の要素である。
【数4】
【0044】
そして、車両位置・面候補推定部11では、左端点位置FRLPtgn(=上記の処理で最終的に設定されたFRLPtgn−dw)〜右端点位置FRRPtgn(=上記の処理で最終的に設定されたFRRPtgn+dw)を、グループgnの前面・後面に属する反射点群の画像上の横方向の範囲として記憶する。また、車両位置・面候補推定部11では、上記の処理で計算された下端点位置FRVlowgn〜上端点位置FRVhighgnを、グループgnの前面・後面に属する反射点群の画像上の縦方向の範囲として記憶する。なお、dwは、レーザレーダ3の誤差や点列が反射しなかったケースに対応するためのパラメータであり、レーザレーダ3の横分解能程度の量が設定される。
【0045】
次に、側面の範囲推定について説明する。車両位置・面候補推定部11では、そのグループgn内の側面に属する反射点rpgn,sd,i毎に、式(6)により、その反射点rpgn,sd,i=3次元位置(xgn,sd,i,ygn,sd,i,zgn,sd,i,1)Tから画像上の位置Pimggn,sd,i=2次元位置(ugn,sd,i,vgn,sd,i,1)Tを計算する。式(6)にけるPは、式(3)のPと同じ行列である。また、式(6)におけるsは、式(3)のsと同じパラメータである。
【数5】
【0046】
位置Pimggn,sd,iを計算する毎に、車両位置・面候補推定部11では、横位置ugn,sd,iが側面用の左端点位置SDLPtgnより小さいか否かを判定する。車両位置・面候補推定部11では、横位置ugn,sd,iが左端点位置SDLPtgnより小さいと判定した場合、横位置ugn,sd,iを左端点位置SDLPtgnとして設定する。また、車両位置・面候補推定部11では、横位置ugn,sd,iが側面用の右端点位置SDRPtgnより大きいか否かを判定する。車両位置・面候補推定部11では、横位置ugn,sd,iが右端点位置SDRPtgnより大きいと判定した場合、横位置ugn,sd,iを右端点位置SDRPtgnとして設定する。左端点位置SDLPtgnは、車両の形状モデルが当てはまったグループgnの側面に属する反射点群の画像上の左端点を探索するためのパラメータであり、初期値として画像の横幅IMG_WIDTHが設定される。右端点位置SDRPtgnは、車両の形状モデルが当てはまったグループgnの側面に属する反射点群の画像上の右端点を探索するためのパラメータであり、初期値として0が設定される。
【0047】
車両位置・面候補推定部11では、車両の形状モデルが当てはまったグループgn内の側面に属する全ての反射点に対して上記の処理を行う。最終的に設定されている左端点位置SDLPtgnがグループgnの画像上の車両の側面の左端点に相当し、右端点位置SDRPtgnがグループgnの画像上の車両の側面の右端点に相当する。
【0048】
次に、車両位置・面候補推定部11では、そのグループgn内の側面に属する全ての反射点rpgn,sd,iの3次元位置を用いて、その平均位置rpmeangn,sd=(xmgn,sd,ymgn,sd,zmgn,sd,1)Tを計算する。そして、車両位置・面候補推定部11では、その平均位置rpmeangn,sdを用いて、式(7)により、グループgnの画像上の車両の側面用の下端点SDVlowgnを計算する。また、車両位置・面候補推定部11では、その平均位置rpmeangn,sdを用いて、式(8)により、グループgnの画像上の車両の側面用の上端点SDVhighgnを計算する。式(7)、式(8)におけるHvsdは車両の高さ(例えば、2.0m)に相当する画像上の量である。式(7)、式(8)におけるpijは上記した3行4列の変換行列Pのi行j列目の要素である。
【数6】
【0049】
そして、車両位置・面候補推定部11では、左端点位置SDLPtgn(=上記の処理で最終的に設定されたSDLPtgn−dw)〜右端点位置SDRPtgn(=上記の処理で最終的に設定されたSDRPtgn+dw)を、グループgnの側面に属する反射点群の画像上の横方向の範囲として記憶する。また、車両位置・面候補推定部11では、上記の処理で計算された下端点位置SDVlowgn〜上端点位置SDVhighgnを、グループgnの側面に属する反射点群の画像上の縦方向の範囲として記憶する。この横方向の範囲と縦方向の範囲が、検出した車両の側面の画像上の範囲である。
【0050】
前面・後面の画像上範囲及び側面の画像上範囲を推定すると、車両位置・面候補推定部11では、同じグループgnの前面・後面の画像上範囲と側面の画像上範囲からなる面候補を設定する。
【0051】
特徴点抽出部12について説明する。車両位置・面候補推定部11で車両を検出し、その車両の画像上の前面・後面の範囲と側面の範囲が推定されている場合、特徴点抽出部12では、その画像上の各範囲内でカメラ4で撮像した画像からエッジ(特徴点)を抽出する。このエッジの抽出方法としては、画像から局所領域を抜き出し、sobelフィルタなどを利用してその領域の特徴量を計算する。局所領域の抜き出し方としては、一定間隔の抜き出し、Harrisオペレータなどのコーナ検出などを使用してもよい。sobelフィルタは、図5(a)に示す横エッジ検出用フィルタと図5(b)に示す縦エッジ検出用フィルタを用いて、画像に畳み込み積分する。具体的には、特徴点抽出部12では、車両位置・面候補推定部11で推定した画像上の範囲内において、その範囲内の画素(u,v)毎に、各画素の値(例えば、輝度値)Iu,vを用いて、式(9)により横方向のエッジ強度ΔIhu,vを計算するとともに式(10)により縦方向のエッジ強度ΔIvu,vを計算する。さらに、特徴点抽出部12では、その各エッジ強度ΔIhu,v,ΔIvu,vを用いて、式(11)によりエッジ強度ΔIu,vを計算するとともに式(12)によりエッジ方向θu,vを計算する。なお、このエッジの抽出処理は、カメラ4で撮像した画像全体に行ってもよい。
【数7】
【0052】
図6には、カメラ4で撮像したある画像に対して画素毎にエッジ処理を行い、その各画素位置にエッジ強度を設定したエッジ画像(輪郭画像)の一例(車両が写っている部分)を示しており、この画像には前面と左側面が写っている車両が存在する。
【0053】
特徴点3次元位置候補推定部13について説明する。特徴点3次元位置候補推定部13では、特徴点抽出部12で抽出した特徴点毎に、車両位置・面候補推定部11で推定した面候補の前面・後面あるいは側面上での3次元位置を計算する。ここでは、画像上の位置から各特徴点が存在する方向ベクトルが判るので、その方向ベクトルと推定した面候補の前面・後面又は側面との交点を計算することによって3次元位置を推定する。
【0054】
図7には、特徴点の画像上の位置とその位置から求めた3次元位置候補及び実際の3次元位置の関係を示しており、図(a)には車両を斜視した場合を示しており、図(b)には車両を上面視した場合を示している。画像IP上の特徴点CPの位置が判ると、カメラ4とレーザレーダ3の関係を示すパラメータから、カメラ4から特徴点CPのある方向nfが判る。車両位置・面候補推定部11で推定した面候補に対する車両の形状モデルが推定できているので、その形状モデルの前面位置MPと特徴点CPの方向nfとの交点によって特徴点CPの3次元位置候補3P’を推定できる。なお、3次元位置候補3P’は、形状モデルの誤差により実際の特徴点の3次元位置3Pに対して誤差が生じるが、形状モデルを正しく推定できている場合にはその誤差は車両のサイズに比べて小さく、影響は少ない。
【0055】
具体的には、特徴点の存在する方向nf=(nx,f,ny,f,nz,f,1)Tは、式(13)により、特徴点fの画像上の位置(uf,vf,1)Tを用いて計算することができる。式(13)におけるsは、式(3)等における奥行きパラメータsである。式(13)における3行4列の行列は、式(3)等における3行4列の変換行列Pである。
【数8】
【0056】
ここで、奥行きパラメータsはどのような値であってもよいので、s=1とすると式(13)は式(14)になる。さらに、式(14)は、式(15)に変形できる。
【数9】
【0057】
そこで、特徴点3次元位置候補推定部13では、車両位置・面候補推定部11で推定した面候補spt毎に、式(15)により、面候補sptの画像上範囲内に含まれる各特徴点fについて、特徴点fの画像上の位置(uf,vf,1)Tを用いて特徴点CPの存在する方向nf=(nx,f,ny,f,nz,f)Tをそれぞれ計算する。さらに、特徴点3次元位置候補推定部13では、その方向nf=(nx,f,ny,f,nz,f)Tを用いて、車両位置・面候補推定部11で推定した面候補sptの前面・後面モデルの面又は側面モデルの面と交差する位置として特徴点fの3次元位置候補(xf,spt,yf,spt,zf,spt)を計算する。例えば、形状モデルの面がy=ax+yであり、カメラ4の光学中心位置(Cx,Cy,Cz)を通り、方向nf=(nx,f,ny,f,nz,f)Tの特徴点fの3次元位置(xf,spt,yf,spt,zf,spt)は、式(16)によって計算できる。
【数10】
【0058】
なお、形状モデルと交差しないケースがある場合、その特徴点を破棄する。また、複数の解がありうる場合、最も距離が近いものを3次元位置(xf,spt,yf,spt,zf,spt)とする。
【0059】
車両端点抽出部14について説明する。車両端点抽出部14では、連続する2時刻t1,t2でそれぞれ撮像された各画像からそれぞれ推定された面候補間に対して処理を行う。車両端点抽出部14では、時刻t1での面候補と時刻t2での面候補との組み合わせ毎に、面候補間で各特徴点の3次元位置の対応関係をそれぞれ求め、その対応関係の特徴点間での位置誤差が最少になるように一方の面候補の特徴点を並進移動変換及び回転変換で補正した上で位置誤差を計算する。全ての面候補の組み合わせについて特徴点間の位置誤差を求めると、車両端点抽出部14では、位置誤差が最少となる組み合わせの面候補を抽出し、その面候補における分割位置に基づいて車両の端点(2つの面の境界位置)を抽出する。なお、時刻t2は現時刻であり、時刻t1はカメラ4の撮像間隔での1時刻前である。
【0060】
図8に示す例では、図(a)に前時刻t1における複数の面候補sptt1(特徴点が丸で描かれている)と現時刻t2における複数の面候補sptt2(特徴点が矩形で描かれている)とを示しており、複数の面候補sptt1と複数の面候補sptt2との各組み合わせについて処理(比較)している。この各比較では、前時刻t1の面候補sptt1と現時刻t2の面候補sptt2間において、前時刻t1の特徴点と現時刻t2の特徴点との対応関係がとられた後に一方の時刻の面候補の各特徴点の位置を変換するための並進移動量と回転量がそれぞれ推定され、その並進移動量と回転量で回転させた上で対応する特徴点間の位置誤差が計算される。図(b)に示す比較例1の場合、対応する前時刻t1の特徴点の位置と現時刻t2の特徴点の位置とが離れており、位置誤差が大きい。一方、図(c)に示す比較例2の場合、対応する前時刻t1の特徴点の位置と現時刻t2の特徴点の位置とが略重なっており、位置誤差が小さい。
【0061】
位置誤差が大きくなる理由としては、推定された形状モデルが一致しないために特徴点の3次元位置間の誤差が大きくなるという理由と、誤った形状モデルから特徴点の3次元位置を推定しているために特徴点の3次元位置間の誤差が大きくなるという理由がある。
【0062】
具体的には、車両端点抽出部14では、前時刻t1での面候補sptt1と現時刻t2での面候補sptt2との組み合わせ毎に、面候補sptt1に含まれるNft1個の特徴点ft1と面候補sptt2に含まれるNft2個の特徴点ft2間で対応する特徴点を探索する。この探索方法としては、式(17)により、面候補sptt2の特徴点ft2毎に、面候補sptt1に含まれるNft1個の各特徴点ft1との特徴量の差ΔF’をそれぞれ計算し、特徴量の差ΔF’が最も小さくなる特徴点ft1を特徴点ft2に対応する特徴点ft2’として記憶していく。式(17)においてΔIhft1は特徴点ft1の横方向のエッジ強度であり、ΔIvft1は特徴点ft1の縦方向のエッジ強度であり、ΔIhft2は特徴点ft2の横方向のエッジ強度であり、ΔIvft2は特徴点ft2の縦方向のエッジ強度である。
【数11】
【0063】
特徴点の対応関係を探索すると、車両端点抽出部14では、前時刻t1での面候補sptt1と現時刻t2での面候補sptt2との組み合わせ毎に、対応する特徴点間で位置誤差が最少になるような並進移動量(dxspt,dyspt,dzspt)と回転量ψsptを求め、一方の面候補spt(ここでは、面候補sptt1)の各特徴点fを並進移動量(dxspt,dyspt,dzspt)と回転量ψsptで変換した上で対応する特徴点間の位置誤差E(すなわち、面候補sptt1,sptt2間の位置誤差E)を計算する。位置誤差Eは、式(18)によって計算することができる。式(18)のXは、式(19)によって計算することができる。位置誤差が最少となるように並進移動量(dxspt,dyspt,dzspt)と回転量ψsptを求める方法としては、例えば、RANSAC法を利用する。
【数12】
【0064】
全ての組み合わせ面候補間の位置誤差Eを計算すると、車両端点抽出部14では、全ての組み合わせ面候補間の位置誤差Eを比較し、最少の位置誤差Eとなる面候補の組み合わせSTP1,SPT2を抽出する。そして、車両端点抽出部14では、その抽出した前時刻t1の面候補SPT1に対応するグループgnの反射点群の中から分割位置の近傍の2つの反射点rptgn,SPT1とrptgn,SPT1+1を抽出し、その2つの反射点の平均値を前時刻t1での車両の端点(2つの面の境界位置)とする。また、車両端点抽出部14では、その抽出した現時刻t2の面候補SPT2に対応するグループgnの反射点群の中から分割位置の近傍の2つの反射点rptgn,SPT2とrptgn,SPT2+1を抽出し、その2つの反射点の平均値を現時刻t2での車両の端点とする。さらに、車両端点抽出部14では、その車両の端点(3次元位置)を用いて、画像上の車両の端点(2次元位置)を計算する。
【0065】
車両検出装置1の動作について説明する。特に、ECU10における車両位置・面候補推定部11の処理については図9〜13のフローチャートに沿って説明し、特徴点3次元位置候補推定部13の処理については図14のフローチャートに沿って説明し、車両端点抽出部14の処理については図15、図16のフローチャートに沿って説明する。図9は、車両位置・面候補推定部におけるメイン処理の流れを示すフローチャートである。図10は、車両位置・面候補推定部におけるメイン処理の中のグルーピング処理の流れを示すフローチャートである。図11は、車両位置・面候補推定部におけるメイン処理の中の形状モデル推定処理の流れを示すフローチャートである。図12は、車両位置・面候補推定部におけるメイン処理の中の画像上範囲推定処理(前面・後面)の流れを示すフローチャートである。図13は、車両位置・面候補推定部におけるメイン処理の中の画像上範囲推定処理(側面)の流れを示すフローチャートである。図14は、特徴点3次元位置候補推定部における処理の流れを示すフローチャートである。図15は、車両端点抽出部における処理の流れを示すフローチャート(前半部)である。図16は、車両端点抽出部における処理の流れを示すフローチャート(後半部)である。
【0066】
レーザレーダ3では、所定時間毎に、水平方向にスキャンしながらレーザ光を出射するとともにその反射光を受光し、受光できた各反射点についての情報をレーダ信号としてECU10に送信している。また、カメラ4では、所定時間毎に、自車両の前方を撮像し、画像信号をECU10に送信している。
【0067】
一定時間毎に、ECU10では、以下の処理を行う。まず、車両位置・面候補推定部11での処理として、ECU10では、レーザレーダ3からの各反射点についての情報を用いて、反射点のグルーピング処理を行う(S1)。
【0068】
グルーピング処理(S1)に移行すると、レーザレーダ3で検出できた全ての反射点に対して処理を行うために、ECU10では、まず、反射点ptを0で初期化する(S10)。また、ECU10では、反射点pt=0のグループIDであるGID0を0で初期化する(S11)。
【0069】
反射点ptが更新される毎に、ECU10では、式(1)により、今回の反射点ptとそれに隣接する前回の反射点pt−1間の距離LNpt,pt−1を計算する(S12)。そして、ECU10では、距離LNpt,pt−1が閾値THR_PTL未満か否かを判定する(S13)。S13にて距離LNpt,pt−1が閾値THR_PTL未満と判定した場合、ECU10では、今回の反射点ptを前回の反射点pt−1と同じグループとするために、反射点ptのグループIDのGIDptにGIDpt−1を設定する(S14)。一方、S13にて距離LNpt,pt−1が閾値THR_PTL以上と判定した場合、ECU10では、今回の反射点ptを前回の反射点pt−1と異なるグループとするために、反射点ptのグループIDのGIDptにGIDpt−1+1を設定する(S15)。
【0070】
次に、ECU10では、反射点ptを更新するために、ptに1を加算する(S16)。そして、ECU10では、更新したptがレーザレーダ3で検出できた反射点の数Nrp以上か否かを判定する(S17)。S17にてptがNrp以上と判定した場合、今回のグルーピング処理を終了する。一方、S17にてptがNrp未満と判定した場合、ECU10では、S12に戻って、更新した反射点ptに対する処理を行う。
【0071】
グルーピング処理を終了すると、グルーピングした全てのグループに対して処理を行うために、ECU10では、まず、グループgnを0で初期化する(S2)。
【0072】
グループgnが更新される毎に、ECU10では、そのグループgnに対して形状モデル推定処理を行う(S3)。
【0073】
形状モデル推定処理(S3)に移行すると、ECU10では、まず、分割位置sptを0で初期化する(S20)。
【0074】
分割位置sptを更新する毎に、ECU10では、まず、最少誤差MIN_SMsptを∞で初期化する(S21)。また、ECU10では、分割位置spt番目の位置でグループgnの反射点群を2つの反射点群RPT1={rptgn,1,・・・,rptgn,spt}、RPT2={rptgn,spt,・・・,rptgn,Ngn}に分割する(S22)。また、事前に用意されている全ての車両の形状モデルに対して処理を行うために、ECU10では、まず、形状モデルmodelを0で初期化する(S23)。
【0075】
形状モデルmodelを更新する毎に、ECU10では、その形状モデルの2面を、分割した反射点群RPT1と反射点群RPT2に当てはめ、形状一致度SMmodel,sptを計算する(S24)。そして、ECU10では、その形状一致度SMmodel,sptが閾値THR_SM未満か否かを判定する(S25)。S25にて形状一致度SMmodel,sptが閾値THR_SM以上と判定した場合、ECU10では、S31の処理に移行し、形状モデルmodelを更新するために、modelに1を加算する(S31)。
【0076】
S25にて形状一致度SMmodel,sptが閾値THR_SM未満と判定した場合、ECU10では、分割した反射点群RPT1と反射点群RPT2の中で最長部の長さLWmodel,sptを計算する(S26)。そして、ECU10では、その最長部の長さLWmodel,sptが所定範囲(THR_LW_LOW〜THR_LW_HIGH)内か否かを判定する(S27)。最長部の長さLWmodel,sptが所定範囲外と判定した場合、ECU10では、S31の処理に移行し、形状モデルmodelを更新するために、modelに1を加算する(S31)。
【0077】
最長部の長さLWmodel,sptが所定範囲内と判定した場合、ECU10では、形状一致度SMmodel,sptが最少誤差MIN_SMspt未満か否かを判定する(S28)。S28にて形状一致度SMmodel,sptが最少誤差MIN_SMspt以上と判定した場合、ECU10では、S31の処理に移行し、形状モデルmodelを更新するために、modelに1を加算する(S31)。
【0078】
S28にて形状一致度SMmodel,sptが最少誤差MIN_SMspt未満と判定した場合、ECU10では、最少誤差MIN_SMsptを形状一致度SMmodel,sptで更新する(S29)。また、ECU10では、今回の形状モデルmodelに対応するモデルパラメータMPmodel,sptを記憶する(S30)。そして、ECU10では、形状モデルmodelを更新するために、modelに1を加算する(S31)。
【0079】
S31でmodelを更新すると、ECU10では、形状モデルmodelが事前に用意されている形状モデルの数Nm以上か否かを判定する(S32)。S32にてmodelがNm未満と判定した場合、ECU10では、S24に戻って、更新した形状モデルmodelに対する処理を行う。
【0080】
S32にてmodelがNm以上と判定した場合、ECU10では、そのときの分割位置sptで当てはまる形状モデルがある場合だけ、式(2)により、車両方位φspt(方位候補に相当)を計算する(S33)。そして、ECU10では、分割位置sptを更新するために、sptに1を加算する(S34)。そして、ECU10では、sptがグループgnの反射点数Ngnを超えたか否かを判定する(S35)。S35にてsptがNgn以下と判定した場合、ECU10では、S21に戻って、更新した分割位置sptに対する処理を行う。一方、S35にてsptがNgn超えたと判定した場合、ECU10では、グループgnに対する形状モデル推定処理を終了する。ここで、最終的に、各分割位置sptのモデルパラメータMPmodel,sptにパラメータ値が記憶されている場合、今回のグループgnの分割位置sptにおいて当てはまる車両の形状モデルmodelがあったことを示しており、そのパラメータ値によって形状モデルを特定できる。
【0081】
グループgnに対する形状モデル推定処理が終了すると、ECU10では、今回のグループgnに当てはまる車両形状モデルがあったか否か(すなわち、車両を検出できたか否か)を判定する(S4)。S4にて今回のグループgnに当てはまる車両形状モデルがなかったと判定した場合、ECU10では、S6の処理に移行し、グループgnを更新するために、gnに1を加算する(S6)。
【0082】
S4にて今回のグループgnのある分割位置sptにおいて当てはまる車両形状モデルがあったと判定した場合、ECU10では、今回のグループgnの反射点群に対する画像上範囲推定処理を行う(S5)。
【0083】
画像上範囲推定処理に移行すると、まず、そのグループgnの前面・後面に対する処理を行う。ECU10では、まず、前面・後面の左端点位置FRLPtgnを画像横幅IMG_WIDTHで初期化し、前面・後面の右端点位置FRRPtgnを0で初期化する(S40)。また、ECU10では、グループgnの前面・後面に属する反射点群内の反射点を更新していくための変数iを0で初期化する(S41)。
【0084】
変数i(反射点)を更新する毎に、ECU10では、式(3)により、反射点rpgn,fr,iの3次元位置から画像上の2次元位置Pimggn,fr,iを計算する(S42)。そして、ECU10では、その画像上の位置Pimggn,fr,iの中の横位置ugn,fr,iが左端点位置FRLPtgnより小さいか否かを判定する(S43)。S43にて横位置ugn,fr,iが左端点位置FRLPtgnより小さいと判定した場合、ECU10では、左端点位置FRLPtgnを横位置ugn,fr,iで更新する(S44)。また、ECU10では、その画像上の位置Pimggn,sd,iの中の横位置ugn,fr,iが右端点位置FRRPtgnより大きいか否かを判定する(S45)。S45にて横位置ugn,fr,iが右端点位置FRRPtgnより大きいと判定した場合、ECU10では、右端点位置FRRPtgnを横位置ugn,fr,iで更新する(S46)。ECU10では、反射点を更新するために、iに1を加算する(S47)。そして、ECU10では、iがグループgnの前面・後面に属する反射点の数Ngnfr以上か否かを判定する(S48)。S48にてiがグループgnの反射点の数Ngnfr未満と判定した場合、ECU10では、S42の処理に戻って、更新した反射点に対する処理を行う。
【0085】
S48にてiがグループgnの前面・後面に属する反射点の数Ngnfr以上と判定した場合、ECU10では、グループgnの前面・後面の反射点群の全ての反射点についての3次元位置を用いて、その平均位置rpmeangn,frを計算する(S49)。さらに、ECU10では、式(4)、式(5)により、その平均位置rpmeangn,frを用いて、グループgnの前面・後面の画像上の下端点位置FRVlowgnと上端点位置FRVhighgnを計算する(S50)。
【0086】
そして、ECU10では、車両の形状モデルが当てはまったグループgnの前面・後面の画像上での範囲として、左端点位置FRLPtgn=FRLPtgn−dw、右端点位置FRRPtgn=FRRPtgn+dw、下端点位置FRVlowgn,上端点位置FRVhighgnを記憶する(S51)。
【0087】
次に、グループgnの側面に対する処理を行う。ECU10では、まず、側面の左端点位置SDLPtgnを画像横幅IMG_WIDTHで初期化し、側面の右端点位置SDRPtgnを0で初期化する(S60)。また、ECU10では、グループgnの側面に属する反射点群内の反射点を更新していくための変数iを0で初期化する(S61)。
【0088】
変数i(反射点)を更新する毎に、ECU10では、式(6)により、反射点rpgn,sd,iの3次元位置から画像上の2次元位置Pimggn,sd,iを計算する(S62)。そして、ECU10では、その画像上の位置Pimggn,sd,iの中の横位置ugn,sd,iが左端点位置SDLPtgnより小さいか否かを判定する(S63)。S63にて横位置ugn,sd,iが左端点位置SDLPtgnより小さいと判定した場合、ECU10では、左端点位置SDLPtgnを横位置ugn,sd,iで更新する(S64)。また、ECU10では、その画像上の位置Pimggn,sd,iの中の横位置ugn,sd,iが右端点位置SDRPtgnより大きいか否かを判定する(S65)。S65にて横位置ugn,sd,iが右端点位置SDRPtgnより大きいと判定した場合、ECU10では、右端点位置SDRPtgnを横位置ugn,sd,iで更新する(S66)。ECU10では、反射点を更新するために、iに1を加算する(S67)。そして、ECU10では、iがグループgnの側面に属する反射点の数Ngnsd以上か否かを判定する(S68)。S68にてiがグループgnの反射点の数Ngnsd未満と判定した場合、ECU10では、S62の処理に戻って、更新した反射点に対する処理を行う。
【0089】
S68にてiがグループgnの側面に属する反射点の数Ngnsd以上と判定した場合、ECU10では、グループgnの側面の反射点群の全ての反射点についての3次元位置を用いて、その平均位置rpmeangn,sdを計算する(S69)。さらに、ECU10では、式(7)、式(8)により、その平均位置rpmeangn,sdを用いて、グループgnの側面の画像上の下端点位置SDVlowgnと上端点位置SDVhighgnを計算する(S70)。
【0090】
そして、ECU10では、車両の形状モデルが当てはまったグループgnの側面の画像上での範囲として、左端点位置SDLPtgn=SDLPtgn−dw、右端点位置SDRPtgn=SDRPtgn+dw、下端点位置SDVlowgn,上端点位置SDVhighgnを記憶する(S71)。
【0091】
前面・後面の画像上範囲と側面の画像上の範囲を推定すると、ECU10では、グループgnの前面・後面の画像上範囲と側面の画像上範囲からなる面候補を設定する。
【0092】
画像上判定推定処理が終了すると、ECU10では、グループgnを更新するために、gnに1を加算する(S6)。そして、ECU10では、gnがグルーピングされたグループの数GN以上か否かを判定する(S7)。S7にてgnがグループの数GN未満と判定した場合、ECU10では、S3の処理に戻って、更新したグループgnに対する処理を行う。一方、S7にてgnがグループの数GN以上と判定した場合、ECU10では、車両位置・面候補推定部11での処理を終了する。
【0093】
車両の形状モデルに当てはまるグループgnがある場合、特徴点抽出部12での処理として、ECU10では、カメラ4で撮像した画像を用いて、推定した画像上範囲内で画素(u,v)毎に、各画素の値Iu,vを用いて式(9)により横方向のエッジ強度ΔIhu,vを計算するとともに式(10)により縦方向のエッジ強度ΔIvu,vを計算し、その各エッジ強度ΔIhu,v,ΔIvu,vを用いて式(11)によりエッジ強度ΔIu,vを計算するとともに式(12)によりエッジ方向θu,vを計算する。これによって、エッジ画像を生成することにより、エッジによる特徴量を有する特徴点を抽出する。
【0094】
特徴点を抽出すると、特徴点3次元位置候補推定部13の処理として、ECU10では、まず、面候補sptを0で初期化する(S80)。
【0095】
面候補sptを更新する毎に、ECU10では、面候補sptに含まれる特徴点fを0で初期化する(S81)。
【0096】
特徴点fを更新する毎に、ECU10では、式(15)により、特徴点fの画像上の位置を用いて特徴点の存在する方向nfを計算する(S82)。さらに、ECU10では、その方向nfと前面・後面モデルの面又は側面モデルの面との交点を計算し、その交点を特徴点fの3次元位置(xf,spt,yf,spt,zf,spt)とする(S83)。ECU10では、特徴点fを更新するために、fに1を加算する(S84)。そして、ECU10では、fが面候補sptに含まれる特徴点の数以上か否かを判定する(S85)。S85にfが特徴点の数未満と判定した場合、ECU10では、S82の処理に戻って、更新した特徴点fに対する処理を行う。
【0097】
S85にてfが特徴点の数以上と判定した場合、ECU10では、面候補sptを更新するために、sptに1を加算する(S86)。そして、ECU10では、sptが面候補の数以上か否かを判定する(S87)。S87にsptが面候補の数未満と判定した場合、ECU10では、S81の処理に戻って、更新した面候補sptに対する処理を行う。
【0098】
S87にsptが面候補の数以上と判定した場合、ECU10では、特徴点3次元位置候補推定部13での処理を終了する。
【0099】
特徴点の3次元位置を推定すると、車両端点抽出部14での処理として、ECU10では、まず、最少位置誤差Esptt1,sptt2をTHR_ERROR(例えば、∞)で初期化するとともに、最少誤差の面候補STP1,STP2を0で初期化する(S90)。また、ECU10では、現時刻t2の面候補sptt2を0で初期化する(S91)。
【0100】
現時刻t2の面候補sptt2を更新する毎に、ECU10では、前時刻t1の面候補sptt1を0で初期化する(S92)。
【0101】
前時刻t1の面候補sptt1を更新する毎に、ECU10では、現時刻t2の特徴点ft2を0で初期化する(S93)。
【0102】
現時刻t2の特徴点ft2を更新する毎に、ECU10では、特徴点ft2に対応する前時刻t1の特徴点ft2’を0で初期化するとともに、最少特徴量差ΔFt1,t2をTHR_FEATURE(例えば、∞)で初期化する(S94)。また、ECU10では、前時刻t1の特徴点ft1を0で初期化する(S95)。
【0103】
前時刻t1の特徴点ft1を更新する毎に、ECU10では、式(17)により、特徴点ft1と特徴点ft2との特徴量の差ΔF’を計算する(S96)。そして、ECU10では、特徴量の差ΔF’が最少特徴量差ΔFt1,t2より小さいか否かを判定する(S97)。S97にて特徴量の差ΔF’が最少特徴量差ΔFt1,t2以上と判定した場合、ECU10では、S100の処理に移行し、前時刻t1の特徴点ft1を更新するために、ft1に1を加算する(S100)。
【0104】
S97にて特徴量の差ΔF’が最少特徴量差ΔFt1,t2より小さいと判定した場合、ECU10では、最少特徴量差ΔFt1,t2として今回の特徴量の差ΔF’を設定し(S98)、特徴点ft2に対応する前時刻t1の特徴点ft2’として今回の特徴点ft1を設定する(S99)。そして、ECU10では、前時刻t1の特徴点ft1を更新するために、ft1に1を加算する(S100)。さらに、ECU10では、特徴点ft1が時刻t1での特徴点の数Nft1以上か否かを判定する(S101)。S101にてft1が時刻t1での特徴点の数Nft1未満と判定した場合、ECU10では、S96の処理に戻って、更新した特徴点ft1に対する処理を行う。
【0105】
S101にてft1が時刻t1での特徴点の数Nft1以上と判定した場合、ft2’に記憶されている特徴点が今回の特徴点ft2に対応する前時刻t1での特徴点である。そして、ECU10では、現時刻t2の特徴点ft2を更新するために、ft2に1を加算する(S102)。さらに、ECU10では、特徴点ft2が時刻t2での特徴点の数Nft2以上か否かを判定する(S103)。S103にてft2が時刻t2での特徴点の数Nft2未満と判定した場合、ECU10では、S94の処理に戻って、更新した特徴点ft2に対する処理を行う。
【0106】
S103にてft2が時刻t2での特徴点の数Nft2以上と判定した場合、特徴点ft1と特徴点ft2との全ての組み合わせについての処理が終了したことになるので、現時刻t2の全ての特徴点ft2について対応する前時刻t1での特徴点ft2’(=ft1)が確定したことになる。
【0107】
次に、ECU10では、RANSAC法により、現時刻t2と前時刻t1で対応する特徴点間で位置誤差が最少になるような並進移動量(dxspt,dyspt,dzspt)と回転量ψsptを推定する(S104)。さらに、ECU10では、前時刻t1の面候補sptt1の各特徴点ft1を並進移動量(dxspt,dyspt,dzspt)と回転量ψsptで変換した上で、対応する特徴点間の位置誤差Eを計算する(S105)。そして、ECU10では、位置誤差Eが最少位置誤差Esptt1,sptt2より小さいか否かを判定する(S106)。S106にて位置誤差Eが最少位置誤差Esptt1,sptt2以上と判定した場合、ECU10では、S109の処理に移行し、前時刻t1の面候補sptf1を更新するために、sptt1に1を加算する(S109)。
【0108】
S106にて位置誤差Eが最少位置誤差Esptt1,sptt2より小さいと判定した場合、ECU10では、最少位置誤差Esptt1,sptt2に今回の位置誤差Eを設定するとともに(S107)、面候補STP1に今回の面候補stpt1を設定し、面候補STP2に今回の面候補stpt2を設定する(S108)。そして、ECU10では、前時刻t1の面候補sptt1を更新するために、sptt1に1を加算する(S109)。さらに、ECU10では、面候補sptt1が時刻t1での面候補の数Nsptt1以上か否かを判定する(S110)。S110にて面候補sptt1が時刻t1での面候補の数Nsptt1未満と判定した場合、ECU10では、S93の処理に戻って、更新した面候補sptt1に対する処理を行う。
【0109】
S110にて面候補sptt1が時刻t1での面候補の数Nsptt1以上と判定した場合、ECU10では、現時刻t2の面候補sptt2を更新するために、sptt2に1を加算する(S111)。さらに、ECU10では、面候補sptt2が時刻t2での面候補の数Nsptt2以上か否かを判定する(S112)。S112にて面候補sptt2が時刻t2での面候補の数Nsptt2未満と判定した場合、ECU10では、S92の処理に戻って、更新した面候補sptt2に対する処理を行う。
【0110】
S112にて面候補sptt2が時刻t2での面候補の数Nsptt2以上と判定した場合、面候補sptt2と面候補sptt1の全ての組み合わせに対する処理が終了したので、STP1に記憶されている面候補が前時刻t1での車両の面に確定したことになり、STP2に記憶されている面候補が現時刻t2での車両の面に確定したことになる。そこで、ECU10では、前時刻t1の面候補SPT1に対応するグループgnの反射点群の中から分割位置の近傍の2つの反射点rptgn,SPT1とrptgn,SPT1+1を抽出し、その2つの反射点の平均値を時刻t1での車両の端点(2つの面の境界位置)とする(S113)。また、ECU10では、現時刻t2の面候補SPT2に対応するグループgnの反射点群の中から分割位置の近傍の2つの反射点rptgn,SPT2とrptgn,SPT2+1を抽出し、その2つの反射点の平均値を時刻t2での車両の端点とする(S113)。そして、ECU10では、車両端点の情報を少なくとも含む車両情報を車両情報信号として運転支援装置に送信する。ここでは、例えば、現時刻t2の車両の端点だけを出力してもよいし、前時刻t1と現時刻t2の車両の端点を出力してもよい。
【0111】
この車両検出装置1によれば、連続する2時刻間の面候補の組み合わせ毎に対応する特徴点間において3次元位置を並進移動及び回転変換した上で最少の位置誤差を求め、全ての組み合わせの面候補の中で位置誤差が最少となる組み合わせの面候補を抽出することにより、車両の面を高精度に検出できる。さらに、この車両の面に基づいて、車両の端部を高精度に検出することができる。
【0112】
図17〜図19を参照して、第2の実施の形態に係る車両検出装置2について説明する。図17は、第2の実施の形態に係る車両検出装置の構成図である。図18は、2時刻間での特徴点の位置誤差の一例であり、(a)が前時刻t1での特徴点の画像上位置と3次元位置との関係を示す図であり、(b)が現時刻t2での特徴点の画像上位置と3次元位置との関係を示す図であり、(c)が前時刻t1と現時刻t2間における特徴点の3次元位置の位置誤差を示す図である。図19は、車両幅推定部における処理の説明図である。
【0113】
車両検出装置2は、第1の実施の形態に係る車両検出装置1と比較すると、車両の両端の端点を推定し、この各端点と車両端点抽出部14で抽出した車両の端点を用いて車両の幅を推定する構成を追加した点だけが異なる。そのために、車両検出装置2は、レーザレーダ3、カメラ4、ECU20を備えており、ECU20に車両位置・面候補推定部11、特徴点抽出部12、特徴点3次元位置候補推定部13、車両端点抽出部14、車両幅推定部25が構成される。なお、第2の実施の形態では、車両端点抽出部14及び車両幅推定部25が特許請求の範囲に記載する車両情報検出手段に相当する。
【0114】
ECU20は、CPU、ROM、RAMなどからなる電子制御ユニットであり、車両検出装置2を統括制御する。ECU20では、ROMに格納されているアプリケーションプログラムをRAM上にロードし、CPUで実行することによって車両位置・面候補推定部11、特徴点抽出部12、特徴点3次元位置候補推定部13、車両端点抽出部14、車両幅推定部25を構成する。ECU20では、所定時間毎に、レーザレーダ3からレーダ信号、カメラ4から画像信号を受信する。そして、ECU20では、この各信号を用いて各部11,12,13,14,25の処理を行い、車両を検出できた場合にはその車両の情報を車両報信号として運転支援装置に送信する。ここでは、車両幅推定部25での処理についてのみ詳細に説明する。
【0115】
車両幅推定部25について説明する。車両端点抽出部14で車両の端点(2つの面の境界位置)を抽出すると、車両幅推定部25では、車両端点抽出部14で推定した車両の各面STP1,STP2での対応する特徴点間の位置誤差をそれぞれ求め、位置誤差が小さい特徴点の中で車両端点抽出部14で抽出した車両の端点(2面の境界位置)から最も離れている特徴点の位置の各面の他方側の端点として抽出し、車両の端点の各面の他方側の端点に基づいて車両の幅を推定する。
【0116】
図18には、前時刻t1と現時刻t2間において車両前面での特徴点での位置誤差と車両以外の物体での特徴点での位置誤差の一例を示している。図(a)は前時刻t1の場合であり、標識Bの特徴点としてCP1t1が画像IP上の特徴点であり、3P1t1’が特徴点CP1t1の車両端点抽出部14で推定した車両の面STP1上での3次元位置候補であり、3P1t1が特徴点CP1t1の実際の3次元位置であり、車両Vの前面の特徴点としてCP2t1が画像IP上の特徴点であり、3P2t1’が特徴点CP2t1の車両の面STP1上で3次元位置候補であり、3P2t1が特徴点CP2t1の実際の3次元位置である。図(b)は現時刻t2の場合であり、標識Bの特徴点としてCP1t2が画像IP上の特徴点であり、3P1t2’が特徴点CP1t2の車両端点抽出部14で推定した車両の面STP2上での3次元位置候補であり、3P1t2が特徴点CP1t2の実際の3次元位置であり、車両Vの前面の特徴点としてCP2t2が画像IP上の特徴点であり、3P2t2’が特徴点CP2t2の車両の面STP2上での3次元位置候補であり、3P2t2が特徴点CP2t2の実際の3次元位置である。さらに、図(c)には前時刻t1と現時刻t2間における3次元位置候補の位置誤差を示しており、標識Bの特徴点についての3次元位置候補3P1t1’,3P1t2’間の位置誤差L1と、車両Vの特徴点についての3次元位置候補3P2t1’,3P2t2’間の位置誤差L2を示している。この例からも判るように、車両の特徴点の場合、2時刻t1,t2間の画像上の特徴点についての車両の面STP1,STP2上での各3次元位置候補の位置の差は小さく、2時刻t1,t2間で特徴点の対応がつく。しかし、車両V以外の物体(標識B)の場合、2時刻t1,t2間の画像上の特徴点についての車両の面STP1,STP2上での各3次元位置候補の位置の差は大きく、2時刻t1,t2間で特徴点の対応がつかない。したがって、特徴点群の中から、この2時刻t1,t2間の位置誤差が大きくなる特徴点を排除することにより、車両の特徴点のみが残ることになる。
【0117】
図19には、車両幅推定部25での処理(車両の前面に対するもの)の概要を示している。現時刻t2の画像Iから抽出された特徴点(3次元位置候補)3P1t2’,3P2t2’,・・・,3P12t2’,・・・の一例を示しており、この例の場合、特徴点3P1t2’,3P9t2’,3P12t2’が車両以外の物体の特徴点である。この各特徴点について、前時刻t1と現時刻t2間で対応する特徴点の3次元位置候補の位置誤差Eをそれぞれ計算し、その各位置誤差Eを画像上の横位置uを横軸としたグラフG1に示している。このグラグG1から判るように、車両以外の物体の特徴点3P1t2’,3P9t2’,3P12t2’についての各位置誤差は所定の閾値THR_ERROR_FPより大きくなるので、この特徴点を排除する。そして、残った特徴点についてのみ、特徴点の数を横位置u毎(1画素単位毎ではなく、数画素単位毎)にカウントし、そのカウント値(頻度EHistu)を横位置u(数画素単位)を横軸としたグラフG2に示している。このグラフG2から判るように、車両端点抽出部14で抽出した車両の端部Uedgeでは頻度EHistuが所定の閾値THR_ERROR_FPCNTを超えており、それ以外で頻度EHistuが閾値THR_ERROR_FPCNTを超える横位置uのうち車両の端部Uedgeから最も離れている横位置uLを車両の前面の他方側の端部とする。
【0118】
具体的には、車両幅推定部25では、前時刻t1での面STP1と現時刻t2での面候補STP2において対応する特徴点ft2’,ft2毎に、特徴点ft2’,ft2間で位置誤差が最少になるような並進移動量(dxspt,dyspt,dzspt)と回転量ψsptを用いて、特徴点ft2’(=ft1)を並進移動量(dxspt,dyspt,dzspt)と回転量ψsptで変換した上で、対応する特徴点ft2’,ft2間の位置誤差Eft2を計算する。位置誤差Eft2は、式(20)によって計算することができる。式(20)のXは、式(21)によって計算することができる。なお、式(21)における対応する特徴点ft2’,ft2間についての並進移動量(dxspt,dyspt,dzspt)と回転量ψsptについては、車両端点抽出部14で既に求められている。
【数13】
【0119】
位置誤差Eft2を計算する毎に、車両幅推定部25では、特徴点のft2’,ft2間の位置誤差Eft2が閾値THR_ERROR_FPより小さいか否かを判定する。閾値THR_ERROR_FPは、特徴点間の位置誤差Eft2に基づいて、車両の特徴点かあるいは車両以外の特徴点かを判別するための閾値である。位置誤差Eft2が閾値THR_ERROR_FPより小さい場合、車両幅推定部25では、その特徴点の横位置u(数画素毎の横位置)の頻度EHistuをカウントアップする。
【0120】
対応する全ての特徴点ft2’,ft2間に対する処理が終了すると、車両幅推定部25では、各横位置uでの頻度EHistuの中から閾値THR_ERROR_FPCNTを超えるか否かを判定する。閾値THR_ERROR_FPCNTは、頻度EHistuに基づいて、車両の端点として所定数以上の特徴点があるか否か判定するための閾値である。
【0121】
車両幅推定部25では、頻度EHistuが閾値THR_ERROR_FPCNTを超える横位置uの中から、車両端点抽出部14で抽出した車両の端点(2面の境界位置)から最も離れている横位置uを抽出し、その横位置uを車両の面の他方側の端点とする。
【0122】
車両幅推定部25では、車両端点抽出部14で抽出した車両の面STP1,STP2における前面・後面と側面とに分けて上記処理を行い、前面・後面の他方側の端点と側面の他方側の端点をそれぞれ推定する。そして、車両幅推定部25では、推定した前面・後面の他方側の端点と側面の他方側の端点及び車両端点抽出部14で抽出した車両の端点を用いて、端点間距離により車両の幅を計算する。前面・後面の他方側の端点と側面の他方側の端点間距離の場合、画像に写っている車両全体の幅である。前面・後面の他方側の端点と車両端点抽出部14で抽出した車両の端点間距離の場合、画像に写っている車両の前面の幅である。側面の他方側の端点と車両端点抽出部14で抽出した車両の端点間距離の場合、画像に写っている車両の側面の長さである。
【0123】
車両検出装置2の動作について説明する。車両検出装置2の動作では、第1の実施の形態に係る車両検出装置1の動作と比較すると、車両端点抽出部14が終了した後に車両幅推定部25での処理を行うことだけが異なるので、ECU20における車両幅推定部25での処理についてのみ説明する。ECU20における車両幅推定部25の処理については図20のフローチャートに沿って説明する。図20は、車両幅推定部における処理の流れを示すフローチャートである。
【0124】
車両幅推定部25での処理として、ECU20では、まず、現時刻t2の特徴点ft2を0で初期化し(S120)、各横位置での頻度EHistuを0で初期化する。
【0125】
特徴点ft2を更新する毎に、ECU20では、現時刻t2での面候補STP2における特徴点ft2に対応する前時刻t1での面候補SPT1における特徴点ft2’について、並進移動量(dxspt,dyspt,dzspt)と回転量ψsptdyspt,dzspt)で変換した上で特徴点ft2,ft2’間の位置誤差Eft2を計算する(S121)。そして、ECU20では、位置誤差Eft2が閾値THR_ERROR_FPより小さいか否かを判定する(S122)。S122にて位置誤差Eft2が閾値THR_ERROR_FPより小さいと判定した場合、ECU20では、特徴点ft2の画像上での横位置uに対する頻度EHistuを1カウントアップする(S123)。
【0126】
ECU20では、現時刻t2の特徴点ft2を更新するために、ft2に1を加算する(S124)。さらに、ECU20では、特徴点ft2が時刻t2での特徴点の数Nft2以上か否かを判定する(S125)。S125にてft2が時刻t2での特徴点の数Nft2未満と判定した場合、ECU20では、S121の処理に戻って、更新した特徴点ft2に対する処理を行う。
【0127】
S125にてft2が時刻t2での特徴点の数Nft2以上と判定した場合、全ての対応する特徴点ft2,ft2’間についての処理が終了したことになる。そこで、ECU20では、頻度EHistuが閾値THR_ERROR_FPCNTを超える横位置u中で、車両の端点(2面の境界位置)から最も離れている横位置uを車両の面の他方側の端点とする(S126)。そして、ECU20では、その車両の面の他方側の端点と車両の端点(2面の境界位置)の差により車両の幅を推定する(S127)。
【0128】
ECU20では、前面・後面と側面とに分けて上記処理を行い、前面・後面の他方側の端点と側面の他方側の端点をそれぞれ推定し、車両の幅を推定する。そして、ECU20では、車両の面、車両の各端点及び車両の幅の情報を少なくとも含む車両情報を車両情報信号として運転支援装置に送信する。
【0129】
この車両検出装置2によれば、第1の実施の形態に係る車両検出装置1と同様の効果を有する上に、下記の効果も有する。車両検出装置2によれば、時刻t1,t2間での対応する特徴点間の位置誤差を利用することにより、車両の各面の他方側の残端点を高精度に推定でき、その残端点と車両の端点から車両の幅を高精度に推定することができる。
【0130】
以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。
【0131】
例えば、本実施の形態では車両に搭載される車両検出装置に適用したが、衝突防止装置、車間制御装置などの運転支援装置や周辺監視装置などの他の装置にも適用可能である。
【0132】
また、本実施の形態では自車両の前方の車両を検出する場合に適用したが、後方などの他の方向での車両の検出にも適用可能である。
【0133】
また、本実施の形態では車両を検出し、車両の面候補や車両の画像上の範囲を推定するためにレーザレーダのレーダ情報を用いる構成としたが、ミリ波レーダなどの他のレーダのレーダ情報を用いてもよい、あるいは、カメラによる画像を用いてパターン認識などによる他の方法で推定してもよい。
【0134】
また、本実施の形態では所定の特徴量(特徴点)としてエッジを適用したが、ウェーブレット、SIFTなどの他の特徴量でもよい。
【0135】
また、本実施の形態では推定した車両の面に基づいて車両の端点までの求める構成としたが、車両の面の推定だけを行う構成としてもよい。
【0136】
また、本実施の形態では連続する2時刻間について処理を行ったが、3時刻間や4時刻間でもよいし、時刻間の周期が短い場合には連続する時刻間でなくてもよい。
【符号の説明】
【0137】
1,2…車両検出装置、3…レーザレーダ、4…カメラ、10,20…ECU、11…車両位置・面候補推定部、12…特徴点抽出部、13…特徴点3次元位置候補推定部、14…車両端点抽出部、25…車両幅推定部
【技術分野】
【0001】
本発明は、車両検出装置に関する。
【背景技術】
【0002】
近年、衝突防止装置、車間制御装置などの運転支援装置が開発されている。これら運転支援装置では、自車両の前方を走行する車両を検出することが重要となる。このような検出装置には、自車両に搭載したカメラで撮像した画像に基づいて車両の情報を検出するものがある。特許文献1に記載の装置では、画像から縦エッジを検出し、縦エッジの数に基づいて車両の側面と後面を判別する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−50089号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
隣接車線から自車線に車両が車線変更しているときなど、自車両に対して検出対象の車両が斜め方向を向いている場合、その車両の側方と後面が同時にカメラで撮像される。この場合、上記の装置では、側面と後面とを判別することしかできないので、2面が撮像されている画像に対して対応できず、車両の情報(2面の境界を示す車両端点、2面を含む車両の面など)を検出できない。
【0005】
そこで、本発明は、画像から車両の情報を高精度に検出する車両検出装置を提供することを課題とする。
【課題を解決するための手段】
【0006】
本発明に係る車両検出装置は、撮像手段で撮像した画像から車両の情報を検出する車両検出装置であって、車両の面の候補を推定する面候補推定手段と、撮像手段で車両を撮像した画像から所定の特徴量を有する複数の特徴点を抽出する特徴点抽出手段と、特徴点抽出手段で抽出した特徴点の3次元位置を推定する3次元位置推定手段と、撮像手段で異なる時刻で撮像した各画像からそれぞれ推定された面候補の組み合わせ毎に、面候補間で複数の特徴点について特徴量の差が小さくなる特徴点の対応関係を探索し、当該探索された対応関係の複数の特徴点間において3次元位置を並進移動及び回転変換した上で位置誤差を求め、当該位置誤差が最少となる組み合わせの面候補を抽出し、当該抽出した組み合わせの面候補に基づいて車両の面を検出する車両情報検出手段とを備えることを特徴とする。
【0007】
この車両検出装置では、面候補推定手段により車両の面の候補を推定する。また、車両検出装置では、撮像手段で撮像する毎に、特徴点抽出手段により画像から所定の特徴量(例えば、エッジ、ウェーブレット、SIFT)を有する特徴点を複数抽出し、3次元位置推定手段によりその各特徴点の3次元位置をそれぞれ推定する。そして、車両検出装置では、車両情報検出手段により、異なる時刻で撮像した各画像からそれぞれ推定された面候補の組み合わせ毎に、異なる時刻での面候補間において面候補内の複数の特徴点について特徴量の差が小さくなる各特徴点の対応関係をそれぞれ探索し、その対応関係の複数の特徴点間において3次元位置を並進移動及び回転変換して位置誤差を求める。複数の特徴点の3次元位置の並進移動及び回転変換によって車両の挙動の変化を考慮しているので、面候補のうち車両の面を正しく推定している面候補の場合には異なる時刻での面候補間での対応する複数の特徴点の位置誤差は小さくなる。そこで、車両検出装置では、車両情報検出手段により、各組み合わせの面候補間の位置誤差を比較し、位置誤差が最少となる組み合わせの面候補を抽出し、その位置誤差が最少となる組み合わせの面候補に基づいて車両の面を検出する。このように、車両検出装置では、異なる時刻での面候補間の複数の特徴点の位置誤差を利用することにより、車両の情報(車両の面)を高精度に検出することができる。
【0008】
なお、車両の面(面の候補)は、画像に写っている車両全体の面であり、車両の一面(前面、後面、側面)だけの場合もあれば、車両の複数の面(例えば、前面+側面、後面+側面)を含む場合もある。3次元位置の並進移動及び回転変換は、3次元位置を並進移動変換及び回転変換させる場合以外にも、並進移動変換だけをさせる場合、回転変換だけをさせる場合も含むものとする。
【0009】
本発明の上記車両検出装置では、車両情報検出手段は、検出した面に基づいて車両の端点を検出する構成としてもよい。
【0010】
検出した面が車両の2つの面を含んでいる場合、その検出した面内の2つの面の交差点から車両の端点(2つの面の境界位置)を抽出できる。したがって、この車両検出装置では、高精度に検出された面に基づいて、車両の端点を高精度に検出することができる。
【0011】
本発明の上記車両検出装置では、車両情報検出手段は、抽出した組み合わせの面候補間において対応する特徴点間の3次元位置の位置誤差が閾値以内の特徴点が存在する領域に基づいて車両の面の幅を検出する構成としてもよい。
【0012】
抽出された組み合わせの各面候補(検出された車両の面)内の複数の特徴点の中には、車両以外の特徴点も含まれている場合がある。異なる時刻間の対応する特徴点が車両の特徴点の場合、異なる時刻間でも各特徴点の3次元位置は近い位置関係にある。しかし、異なる時刻間の対応する特徴点が車両以外の物体の特徴点の場合、異なる時刻間での各特徴点の3次元位置は遠い位置関係にある。したがって、抽出した組み合わせの面候補間において対応する特徴点の3次元位置の位置誤差が大きい場合には車両以外の物体の特徴点とみなすことができ、位置誤差が小さい場合には車両の特徴点とみなすことがでる。そこで、この車両検出装置では、抽出した組み合わせの面候補間(すなわち、異なる時刻間)において対応する特徴点の3次元位置の位置誤差が閾値以内の特徴点が存在する領域に基づいて、車両の面の幅を高精度に検出することができる。
【発明の効果】
【0013】
本発明によれば、異なる時刻での面候補間の複数の特徴点の位置誤差を利用することにより、車両の情報(車両の面)を高精度に検出することができる。
【図面の簡単な説明】
【0014】
【図1】第1の実施の形態に係る車両検出装置の構成図である。
【図2】レーザレーダによる反射点の一例である。
【図3】反射点群の分割位置の一例である。
【図4】形状モデルの一例であり、(a)がモデル1であり、(b)がモデル2である。
【図5】sobelフィルタであり、(a)が横エッジ検出用であり、(b)が縦エッジ検出用である。
【図6】カメラによる画像に対するエッジ画像の一例である。
【図7】特徴点の画像上位置と3次元位置との関係を示す図であり、(a)が車両を斜視した場合であり、(b)が上面視した場合である。
【図8】特徴点の時刻間対応付けの説明図であり、(a)が時刻間の比較例であり、(b)が位置誤差が大きい比較例1であり、(c)が位置誤差が小さい比較例2である。
【図9】車両位置・面候補推定部におけるメイン処理の流れを示すフローチャートである。
【図10】車両位置・面候補推定部におけるメイン処理の中のグルーピング処理の流れを示すフローチャートである。
【図11】車両位置・面候補推定部におけるメイン処理の中の形状モデル推定処理の流れを示すフローチャートである。
【図12】車両位置・面候補推定部におけるメイン処理の中の画像上範囲推定処理(前面・後面)の流れを示すフローチャートである。
【図13】車両位置・面候補推定部におけるメイン処理の中の画像上範囲推定処理(側面)の流れを示すフローチャートである。
【図14】特徴点3次元位置候補推定部における処理の流れを示すフローチャートである。
【図15】車両端点抽出部における処理の流れを示すフローチャート(前半部)である。
【図16】車両端点抽出部における処理の流れを示すフローチャート(後半部)である。
【図17】第2の実施の形態に係る車両検出装置の構成図である。
【図18】2時刻間での特徴点の位置誤差の一例であり、(a)が前時刻t1での特徴点の画像上位置と3次元位置との関係を示す図であり、(b)が現時刻t2での特徴点の画像上位置と3次元位置との関係を示す図であり、(c)が前時刻t1と現時刻t2間における特徴点の3次元位置の位置誤差を示す図である。
【図19】車両幅推定部における処理の説明図である。
【図20】車両幅推定部における処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、図面を参照して、本発明に係る車両検出装置の実施の形態を説明する。
【0016】
本実施の形態では、本発明に係る車両検出装置を、車両に搭載される車両検出装置に適用する。本実施の形態に係る車両検出装置は、自車両の前方に存在する車両を検出し、検出した車両の情報を車間距離制御装置や衝突防止装置などの運転支援装置に提供する。本実施の形態には、2つの形態があり、第1の実施の形態が車両情報として車両の端部(車両の面)を検出する形態であり、第2の実施の形態が車両情報として車両の端部の他に車両の幅も検出する形態である。
【0017】
図1〜図8を参照して、第1の実施の形態に係る車両検出装置1について説明する。図1は、第1の実施の形態に係る車両検出装置の構成図である。図2は、レーザレーダによる反射点の一例である。図3は、反射点群の分割位置の一例である。図4は、形状モデルの一例であり、(a)がモデル1であり、(b)がモデル2である。図5は、sobelフィルタであり、(a)が横エッジ検出用であり、(b)が縦エッジ検出用である。図6は、カメラによる画像に対するエッジ画像の一例である。図7は、特徴点の画像上位置と3次元位置との関係を示す図であり、(a)が車両を斜視した場合であり、(b)が上面視した場合である。図8は、特徴点の時刻間対応付けの説明図であり、(a)が時刻間の比較例であり、(b)が位置誤差が大きい比較例1であり、(c)が位置誤差が小さい比較例2である。
【0018】
車両検出装置1は、レーダセンサによるレーダ情報を用いて車両の各面が存在する画像上の範囲を推定し、カメラによる画像情報を用いてその推定した画像上の範囲内のエッジの情報に基づいて車両の端点(2つの面の境界位置)を検出する。特に、車両検出装置1は、連続する2時刻間の各画像からそれぞれ推定された面候補の組み合わせ毎に、面候補間で複数の特徴点について特徴量の差が小さくなる特徴点の対応関係を探索し、その対応関係の複数の特徴点間において3次元位置を並進移動及び回転変換した上で最少の位置誤差を求め、全ての組み合わせの面候補の中で位置誤差が最少となる組み合わせの面候補を抽出し、その抽出した組み合わせの面候補に基づいて車両の面を検出し、その面から車両の端点を抽出する。そのために、車両検出装置1は、レーザレーダ3、カメラ4、ECU[Electronic Control Unit]10を備えており、ECU10に車両位置・面候補推定部11、特徴点抽出部12、特徴点3次元位置候補推定部13、車両端点抽出部14が構成される。
【0019】
なお、第1の実施の形態では、車両位置・面候補推定部11が特許請求の範囲に記載する面候補推定手段に相当し、特徴点抽出部12が特許請求の範囲に記載する特徴点抽出手段に相当し、特徴点3次元位置候補推定部13が特許請求の範囲に記載する3次元位置推定手段に相当し、車両端点抽出部14が特許請求の範囲に記載する車両情報検出手段に相当する。
【0020】
レーザレーダ3は、レーザ光を利用して物体を検出する走査型のレーダである。レーザレーダ3は、自車両の前端部の中央に取り付けられる。また、レーザレーダ3は、検出対象の車両を十分に検出可能な高さ位置かつ路面に対して略平行に取り付けられる。レーザレーダ3では、所定時間毎に、レーザ光を所定角度毎に水平方向にスキャンしながら自車両から前方に向けて出射し、反射してきたレーザ光を受光する。そして、レーザレーダ3では、所定時間毎に、受光できた各反射点(検出点)についてのデータ(水平方向の走査方位角、出射時刻、受光時刻、受光強度(反射強度)など)からなるレーダ信号をECU10に送信する。
【0021】
カメラ4は、CCD[Charge Coupled Device]やレンズなどで構成され、自車両の前方を撮像するカメラである。カメラ4は、自車両の前方の中央の所定の位置に取り付けられ、自車両前方に延びる中心軸とカメラの光軸との向きが一致する方向に向けて配置される。カメラ4では、所定時間毎に(例えば、100m秒毎に)、自車両の前方を撮像し、その撮像画像のデータを画像信号としてECU10に送信する。なお、カメラ4は、対象物についての少なくとも光学点な濃淡情報を取得できればよいので、白黒のカメラでもよいし、カラーのカメラでもよい。
【0022】
レーザレーダ3とカメラ4との取り付け位置関係は、事前に計測され、レーザレーダ3の座標系とカメラ4の座標系との間での座標変換を行うために必要な各種パラメータが取得されている。
【0023】
ECU10は、CPU[CentralProcessing Unit]、ROM[Read Only Memory]、RAM[Random Access Memory]などからなる電子制御ユニットであり、車両検出装置1を統括制御する。ECU10では、ROMに格納されているアプリケーションプログラムをRAM上にロードし、CPUで実行することによって車両位置・面候補推定部11、特徴点抽出部12、特徴点3次元位置候補推定部13、車両端点抽出部14を構成する。ECU10では、所定時間毎に、レーザレーダ3からレーダ信号、カメラ4から画像信号を受信する。そして、ECU10では、この各信号を用いて各部11,12,13,14の処理を行い、車両を検出できた場合にはその車両の情報を車両情報信号として運転支援装置に送信する。
【0024】
車両位置・面候補推定部11について説明する。車両位置・面候補推定部11では、レーザレーダ3で検出された多数の反射点に対して、グルーピングを行い、グループ毎にそのグループの反射点群に車両の形状モデルを当てはめ、車両の形状モデルが当てはまるグループがある場合にはその反射点群から車両の面の候補(画像上での範囲)を推定する。
【0025】
図2には、レーザレーダ3で検出された反射点pt1,pt2,・・・,pt19の一例を示している。車両の走行環境では、自車両の前方の車両とその周囲のガードレールなどの他の物体とはある程度以上距離が離れている。そのため、同一の物体で反射した反射点間は近いが、異なる物体で反射した反射点間は遠い。図2に示す例の場合、車両での反射点群pt12〜pt17では隣接する反射点間距離は小さくなり、その他の物体での反射点群pt1〜pt11、反射点群pt18〜pt19でも隣接する反射点間距離がそれぞれ小さくなるが、車両での反射点群pt12と隣接する反射点pt11間距離は大きくなり、車両での反射点群pt17と隣接する反射点pt18間距離は大きくなる。
【0026】
グルーピング処理について具体的に説明する。車両位置・面候補推定部11では、レーザレーダ3で検出された反射点pt毎に、式(1)により、その反射点ptと隣接する反射点pt−1間の距離LNpt,pt−1を計算する。式(1)において、rpxは3次元のレーザレーダ座標系における反射点ptのx座標であり、rpyは3次元のレーザレーダ座標系における反射点ptのy座標であり、rpzは3次元のレーザレーダ座標系における反射点ptのz座標である。
【数1】
【0027】
そして、車両位置・面候補推定部11では、反射点間距離LNpt,pt−1が閾値THR_PTL未満か否かを判定する。閾値THR_PTLは、隣接する反射点間の距離に基づいてその隣接する2つの反射点が同一物体で反射した反射点であるか否かを判定するための閾値である。閾値THR_PTLとしては、例えば、車両と路側端の物体との分離の観点で、(車線幅−車両幅)/2とする。
【0028】
車両位置・面候補推定部11では、反射点間距離LNpt,pt−1が閾値THR_PTL未満の場合にはその2つの反射点pt,pt−1を同じグループに分類し、反射点間距離LNpt,pt−1が閾値THR_PTL以上の場合にはその2つの反射点pt,pt−1を異なるグループに分類する。車両位置・面候補推定部11では、この反射点間距離判定をレーザレーダ3で検出された全ての反射点に行い、全ての反射点をグループ分けする。
【0029】
形状モデル推定処理について具体的に説明する。車両位置・面候補推定部11では、グルーピングされたグループgn毎に、グループgnに含まれる反射点群に対して、分割位置sptを順次設定する。そして、車両位置・面候補推定部11では、その分割位置sptを境界として、グループgnに含まれる反射点群を2つの反射点群RPT1={rptgn,1,・・・,rptgn,spt}、RPT2={rptgn,spt,・・・,rptgn,Ngn}に分割する。分割位置sptは、隣接する2つ反射点の間の中間位置又はグループでの両端の反射点の外側の位置に設定される。したがって、反射点の数がn個の場合、n+1個の分割位置が設定される。図3には、あるグループの反射点群rptgn,1,・・・,rptgn,6を示しており、分割位置sptとして隣接する反射点rptgn,3と反射点rptgn,4との間に設定され、2つの反射点群RPT1={rptgn,1,rptgn,2,rptgn,3}、RPT2={rptgn,4,rptgn,5,rptgn,6}に分割される。
【0030】
分割位置sptを設定する毎に、車両位置・面候補推定部11では、事前に用意されている車両の形状モデルmodel毎に、2つの反射点群RPT1={rptgn,1,・・・,rptgn,spt}、RPT2={rptgn,spt,・・・,rptgn,Ngn}と車両の形状モデルmodelとの一致度SMmodel,sptを計算する。一致度SMとしては、例えば、形状モデルと各反射点との誤差の総和として計算する。
【0031】
車両の形状モデルは、前面・後面用モデルと側面用モデルからなる車両の2面のモデル、前面、後面、側面の中の車両の1面のモデルがある。各面のモデルは、車両を水平面で切った場合の各面の外形状を示す線からなるモデルあり、例えば、前面・後面用モデルとして1次関数や2次関数で示される線であり、側面用モデルとしては1次関数で示される線である。図4には、車両の形状モデルの一例を示しており、(a)に示す形状モデルmodel1は直線状の側面用モデルsmと曲線状の前面・後面用モデルfmからなり、(b)に示す形状モデルmodel2は曲線状の前面・後面用モデルfmと直線状の側面用モデルsmからなる。ちなみに、分割位置sptが隣接する反射点間の間に設定されている場合には2面のモデルとの処理を行い、分割位置sptが反射点群の外側に設定されている場合には1面のモデルとの処理を行う。
【0032】
図4には、図3に示す分割位置sptで分割した2つの反射点群RPT1={rptgn,1,rptgn,2,rptgn,3}、RPT2={rptgn,4,rptgn,5,rptgn,6}を、図4(a)に示すmodel1を当てはめた場合と図4(b)に示すmodel2を当てはめた場合を示しており、図4(a)に示す形状モデルmodel1は当てはまっているが、図4(b)に示す形状モデルmodel2は当てはまっていない。
【0033】
一致度SMmodel,sptを計算する毎に、車両位置・面候補推定部11では、一致度SMmodel,sptが閾値THR_SM未満か否かを判定する。閾値THR_SMは、一致度に基づいてグループの反射点群が車両の形状モデルに当てはまるか否かを判定するための閾値である。
【0034】
車両位置・面候補推定部11では、一致度SMmodel,sptが閾値THR_SM未満の場合、2つの反射点群RPT1={rptgn,1,・・・,rptgn,spt}、RPT2={rptgn,spt,・・・,rptgn,Ngn}について両端の反射点間の長さ(横方向の長さ)をそれぞれ計算し、その2つの長さのうちの長い方を最長部の長さLWmodel,sptとする。そして、車両位置・面候補推定部11では、最長部の長さLWmodel,sptが所定範囲(THR_LW_LOW〜THR_LW_HIGH)内か否かを判定する。所定範囲(THR_LW_LOW〜THR_LW_HIGH)は、最長部の長さLWmodel,sptに基づいてその各グループの反射点群の横方向の長さが車両の面に対応する範囲内の長さか否か(つまり、車両でない物体を排除)を判定するための閾値である。
【0035】
車両位置・面候補推定部11では、最長部の長さLWmodel,sptが所定範囲(THR_LW_LOW〜THR_LW_HIGH)内の場合、形状一致度SMmodel,sptが、それまでに設定されている分割位置の最少誤差MIN_SMspt未満か否かを判定する。最少誤差MIN_SMsptは、最少の形状一致度SMmodel,sptを探索するためのパラメータであり、初期値としては∞が設定される。
【0036】
車両位置・面候補推定部11では、形状一致度SMmodel,sptが最少誤差MIN_SMspt未満の場合、最少誤差MIN_SMsptとして形状一致度SMmodel,sptを設定するとともに、そのときの車両の形状モデルのモデルパラメータMPmodel,sptを記憶する。モデルパラメータMPmodel,sptは、車両の形状モデルを示すパラメータである。例えば、モデルパラメータMPmodel,spt=(a1,a2,a3,a4,a5,a6)は、RANSAC[RANdom Sample Consensus]法を用いて計算する。ただし、正面x’=a1y’2+a2y’+a3、側面y=a4x+a5、a6=cosφ、x’=cosφx−sinφy、y’=sinφx+cosφyである。
【0037】
そして、車両位置・面候補推定部11では、各グループgnについて用意されている全ての形状モデルmodelに対して上記の処理を行い、最終的にモデルパラメータMPmodel,sptが記憶されている場合(つまり、そのグループgnの反射点群に対して、一致度SMmodel,sptが閾値THR_SM未満かつ最長部の長さLWmodel,sptが所定範囲(THR_LW_LOW〜THR_LW_HIGH)内かつ一致度SMmodel,sptが最少となる形状モデルがある場合)、そのグループgnの反射点群の分割位置sptにおいて車両の形状モデルが1つ当てはまったと判断し、そのモデルパラメータMPmodel,sptで示される形状モデルをグループgnの反射点群における分割位置sptに対する車両の形状モデルとして確定する。このように形状モデルに当てはまるグループgn(反射点群)がある場合、車両を検出したことになる。
【0038】
車両位置・面候補推定部11では、モデルパラメータMPmodel,sptにデータが記憶された場合(そのグループgnの反射点群の分割位置sptにおいて当てはまる車両の形状モデルがある場合)、式(2)により、モデルパラメータMPmodel,sptに記憶されたデータを用いて、車両の方位φspt(分割位置sptでの車両の方位の候補に相当)を計算する。
【数2】
【0039】
画像上範囲推定処理について具体的に説明する。画像上の車両の形状モデルが当てはまったグループgnがある場合、そのグループgnの反射点群を用いて画像上の車両が存在する範囲を推定するが、車両の前面・後面の画像上の範囲と側面の画像上の範囲に分けて推定を行う。このように、前面・後面と側面とに分けて画像上範囲を推定するのは、特徴点3次元位置候補推定部13において各特徴点の3次元位置を推定する際に平面フィッティングを行うので、その平面フィッティングでの精度を向上させるためである。
【0040】
まず、前面・後面の範囲推定について説明する。車両位置・面候補推定部11では、そのグループgn内の前面・後面に属する反射点rpgn,fr,i毎に、式(3)により、その反射点rpgn,fr,i=3次元位置(xgn,fr,i,ygn,fr,i,zgn,fr,i,1)Tから画像上の位置Pimggn,fr,i=2次元位置(ugn,fr,i,vgn,fr,i,1)Tを計算する。式(3)にけるPは、レーザレーダ座標系から画像座標系へ変換するための3行4列の変換行列であり、カメラ4の焦点距離などの内部パラメータ、レーザレーダ3とカメラ4との相対位置や向きなどから求められる。また、式(3)におけるsは、3次元座標系から2次元座標系に投影する際に奥行き方向がなくなることを考慮した奥行きパラメータである。
【数3】
【0041】
位置Pimggn,fr,iを計算する毎に、車両位置・面候補推定部11では、横位置ugn,fr,iが前面・後面用の左端点位置FRLPtgnより小さいか否かを判定する。車両位置・面候補推定部11では、横位置ugn,fr,iが左端点位置FRLPtgnより小さいと判定した場合、横位置ugn,fr,iを左端点位置FRLPtgnとして設定する。また、車両位置・面候補推定部11では、横位置ugn,fr,iが前面・後面用の右端点位置FRRPtgnより大きいか否かを判定する。車両位置・面候補推定部11では、横位置ugn,fr,iが右端点位置FRRPtgnより大きいと判定した場合、横位置ugn,fr,iを右端点位置FRRPtgnとして設定する。左端点位置FRLPtgnは、車両の形状モデルが当てはまったグループgnの前面・後面に属する反射点群の画像上の左端点を探索するためのパラメータであり、初期値として画像の横幅IMG_WIDTHが設定される。右端点位置FRRPtgnは、車両の形状モデルが当てはまったグループgnの前面・後面に属する反射点群の画像上の右端点を探索するためのパラメータであり、初期値として0が設定される。ちなみに、画像座標系では、画像上の左端の横方向位置uが0であり、右方ほど横方向位置uが大きくなる。また、画像座標系では、画像上の上端の縦方向位置vが0であり、下方ほど縦方向位置vが大きくなる。
【0042】
車両位置・面候補推定部11では、車両の形状モデルが当てはまったグループgn内の前面・後面に属する全ての反射点に対して上記の処理を行う。最終的に設定されている左端点位置FRLPtgnがグループgnの画像上の車両の前面・後面の左端点に相当し、右端点位置FRRPtgnがグループgnの画像上の車両の前面・後面の右端点に相当する。
【0043】
次に、車両位置・面候補推定部11では、そのグループgn内の前面・後面に属する全ての反射点rpgn,fr,iの3次元位置を用いて、その平均位置rpmeangn,fr=(xmgn,fr,ymgn,fr,zmgn,fr,1)Tを計算する。そして、車両位置・面候補推定部11では、その平均位置rpmeangn,frを用いて、式(4)により、グループgnの画像上の車両の前面・後面用の下端点FRVlowgnを計算する。また、車両位置・面候補推定部11では、その平均位置rpmeangn,frを用いて、式(5)により、グループgnの画像上の車両の前面・後面用の上端点FRVhighgnを計算する。式(4)、式(5)におけるHvfrは車両のボンネットの高さ(例えば、0.8m)に相当する画像上の量である。式(4)、式(5)におけるpijは上記した3行4列の変換行列Pのi行j列目の要素である。
【数4】
【0044】
そして、車両位置・面候補推定部11では、左端点位置FRLPtgn(=上記の処理で最終的に設定されたFRLPtgn−dw)〜右端点位置FRRPtgn(=上記の処理で最終的に設定されたFRRPtgn+dw)を、グループgnの前面・後面に属する反射点群の画像上の横方向の範囲として記憶する。また、車両位置・面候補推定部11では、上記の処理で計算された下端点位置FRVlowgn〜上端点位置FRVhighgnを、グループgnの前面・後面に属する反射点群の画像上の縦方向の範囲として記憶する。なお、dwは、レーザレーダ3の誤差や点列が反射しなかったケースに対応するためのパラメータであり、レーザレーダ3の横分解能程度の量が設定される。
【0045】
次に、側面の範囲推定について説明する。車両位置・面候補推定部11では、そのグループgn内の側面に属する反射点rpgn,sd,i毎に、式(6)により、その反射点rpgn,sd,i=3次元位置(xgn,sd,i,ygn,sd,i,zgn,sd,i,1)Tから画像上の位置Pimggn,sd,i=2次元位置(ugn,sd,i,vgn,sd,i,1)Tを計算する。式(6)にけるPは、式(3)のPと同じ行列である。また、式(6)におけるsは、式(3)のsと同じパラメータである。
【数5】
【0046】
位置Pimggn,sd,iを計算する毎に、車両位置・面候補推定部11では、横位置ugn,sd,iが側面用の左端点位置SDLPtgnより小さいか否かを判定する。車両位置・面候補推定部11では、横位置ugn,sd,iが左端点位置SDLPtgnより小さいと判定した場合、横位置ugn,sd,iを左端点位置SDLPtgnとして設定する。また、車両位置・面候補推定部11では、横位置ugn,sd,iが側面用の右端点位置SDRPtgnより大きいか否かを判定する。車両位置・面候補推定部11では、横位置ugn,sd,iが右端点位置SDRPtgnより大きいと判定した場合、横位置ugn,sd,iを右端点位置SDRPtgnとして設定する。左端点位置SDLPtgnは、車両の形状モデルが当てはまったグループgnの側面に属する反射点群の画像上の左端点を探索するためのパラメータであり、初期値として画像の横幅IMG_WIDTHが設定される。右端点位置SDRPtgnは、車両の形状モデルが当てはまったグループgnの側面に属する反射点群の画像上の右端点を探索するためのパラメータであり、初期値として0が設定される。
【0047】
車両位置・面候補推定部11では、車両の形状モデルが当てはまったグループgn内の側面に属する全ての反射点に対して上記の処理を行う。最終的に設定されている左端点位置SDLPtgnがグループgnの画像上の車両の側面の左端点に相当し、右端点位置SDRPtgnがグループgnの画像上の車両の側面の右端点に相当する。
【0048】
次に、車両位置・面候補推定部11では、そのグループgn内の側面に属する全ての反射点rpgn,sd,iの3次元位置を用いて、その平均位置rpmeangn,sd=(xmgn,sd,ymgn,sd,zmgn,sd,1)Tを計算する。そして、車両位置・面候補推定部11では、その平均位置rpmeangn,sdを用いて、式(7)により、グループgnの画像上の車両の側面用の下端点SDVlowgnを計算する。また、車両位置・面候補推定部11では、その平均位置rpmeangn,sdを用いて、式(8)により、グループgnの画像上の車両の側面用の上端点SDVhighgnを計算する。式(7)、式(8)におけるHvsdは車両の高さ(例えば、2.0m)に相当する画像上の量である。式(7)、式(8)におけるpijは上記した3行4列の変換行列Pのi行j列目の要素である。
【数6】
【0049】
そして、車両位置・面候補推定部11では、左端点位置SDLPtgn(=上記の処理で最終的に設定されたSDLPtgn−dw)〜右端点位置SDRPtgn(=上記の処理で最終的に設定されたSDRPtgn+dw)を、グループgnの側面に属する反射点群の画像上の横方向の範囲として記憶する。また、車両位置・面候補推定部11では、上記の処理で計算された下端点位置SDVlowgn〜上端点位置SDVhighgnを、グループgnの側面に属する反射点群の画像上の縦方向の範囲として記憶する。この横方向の範囲と縦方向の範囲が、検出した車両の側面の画像上の範囲である。
【0050】
前面・後面の画像上範囲及び側面の画像上範囲を推定すると、車両位置・面候補推定部11では、同じグループgnの前面・後面の画像上範囲と側面の画像上範囲からなる面候補を設定する。
【0051】
特徴点抽出部12について説明する。車両位置・面候補推定部11で車両を検出し、その車両の画像上の前面・後面の範囲と側面の範囲が推定されている場合、特徴点抽出部12では、その画像上の各範囲内でカメラ4で撮像した画像からエッジ(特徴点)を抽出する。このエッジの抽出方法としては、画像から局所領域を抜き出し、sobelフィルタなどを利用してその領域の特徴量を計算する。局所領域の抜き出し方としては、一定間隔の抜き出し、Harrisオペレータなどのコーナ検出などを使用してもよい。sobelフィルタは、図5(a)に示す横エッジ検出用フィルタと図5(b)に示す縦エッジ検出用フィルタを用いて、画像に畳み込み積分する。具体的には、特徴点抽出部12では、車両位置・面候補推定部11で推定した画像上の範囲内において、その範囲内の画素(u,v)毎に、各画素の値(例えば、輝度値)Iu,vを用いて、式(9)により横方向のエッジ強度ΔIhu,vを計算するとともに式(10)により縦方向のエッジ強度ΔIvu,vを計算する。さらに、特徴点抽出部12では、その各エッジ強度ΔIhu,v,ΔIvu,vを用いて、式(11)によりエッジ強度ΔIu,vを計算するとともに式(12)によりエッジ方向θu,vを計算する。なお、このエッジの抽出処理は、カメラ4で撮像した画像全体に行ってもよい。
【数7】
【0052】
図6には、カメラ4で撮像したある画像に対して画素毎にエッジ処理を行い、その各画素位置にエッジ強度を設定したエッジ画像(輪郭画像)の一例(車両が写っている部分)を示しており、この画像には前面と左側面が写っている車両が存在する。
【0053】
特徴点3次元位置候補推定部13について説明する。特徴点3次元位置候補推定部13では、特徴点抽出部12で抽出した特徴点毎に、車両位置・面候補推定部11で推定した面候補の前面・後面あるいは側面上での3次元位置を計算する。ここでは、画像上の位置から各特徴点が存在する方向ベクトルが判るので、その方向ベクトルと推定した面候補の前面・後面又は側面との交点を計算することによって3次元位置を推定する。
【0054】
図7には、特徴点の画像上の位置とその位置から求めた3次元位置候補及び実際の3次元位置の関係を示しており、図(a)には車両を斜視した場合を示しており、図(b)には車両を上面視した場合を示している。画像IP上の特徴点CPの位置が判ると、カメラ4とレーザレーダ3の関係を示すパラメータから、カメラ4から特徴点CPのある方向nfが判る。車両位置・面候補推定部11で推定した面候補に対する車両の形状モデルが推定できているので、その形状モデルの前面位置MPと特徴点CPの方向nfとの交点によって特徴点CPの3次元位置候補3P’を推定できる。なお、3次元位置候補3P’は、形状モデルの誤差により実際の特徴点の3次元位置3Pに対して誤差が生じるが、形状モデルを正しく推定できている場合にはその誤差は車両のサイズに比べて小さく、影響は少ない。
【0055】
具体的には、特徴点の存在する方向nf=(nx,f,ny,f,nz,f,1)Tは、式(13)により、特徴点fの画像上の位置(uf,vf,1)Tを用いて計算することができる。式(13)におけるsは、式(3)等における奥行きパラメータsである。式(13)における3行4列の行列は、式(3)等における3行4列の変換行列Pである。
【数8】
【0056】
ここで、奥行きパラメータsはどのような値であってもよいので、s=1とすると式(13)は式(14)になる。さらに、式(14)は、式(15)に変形できる。
【数9】
【0057】
そこで、特徴点3次元位置候補推定部13では、車両位置・面候補推定部11で推定した面候補spt毎に、式(15)により、面候補sptの画像上範囲内に含まれる各特徴点fについて、特徴点fの画像上の位置(uf,vf,1)Tを用いて特徴点CPの存在する方向nf=(nx,f,ny,f,nz,f)Tをそれぞれ計算する。さらに、特徴点3次元位置候補推定部13では、その方向nf=(nx,f,ny,f,nz,f)Tを用いて、車両位置・面候補推定部11で推定した面候補sptの前面・後面モデルの面又は側面モデルの面と交差する位置として特徴点fの3次元位置候補(xf,spt,yf,spt,zf,spt)を計算する。例えば、形状モデルの面がy=ax+yであり、カメラ4の光学中心位置(Cx,Cy,Cz)を通り、方向nf=(nx,f,ny,f,nz,f)Tの特徴点fの3次元位置(xf,spt,yf,spt,zf,spt)は、式(16)によって計算できる。
【数10】
【0058】
なお、形状モデルと交差しないケースがある場合、その特徴点を破棄する。また、複数の解がありうる場合、最も距離が近いものを3次元位置(xf,spt,yf,spt,zf,spt)とする。
【0059】
車両端点抽出部14について説明する。車両端点抽出部14では、連続する2時刻t1,t2でそれぞれ撮像された各画像からそれぞれ推定された面候補間に対して処理を行う。車両端点抽出部14では、時刻t1での面候補と時刻t2での面候補との組み合わせ毎に、面候補間で各特徴点の3次元位置の対応関係をそれぞれ求め、その対応関係の特徴点間での位置誤差が最少になるように一方の面候補の特徴点を並進移動変換及び回転変換で補正した上で位置誤差を計算する。全ての面候補の組み合わせについて特徴点間の位置誤差を求めると、車両端点抽出部14では、位置誤差が最少となる組み合わせの面候補を抽出し、その面候補における分割位置に基づいて車両の端点(2つの面の境界位置)を抽出する。なお、時刻t2は現時刻であり、時刻t1はカメラ4の撮像間隔での1時刻前である。
【0060】
図8に示す例では、図(a)に前時刻t1における複数の面候補sptt1(特徴点が丸で描かれている)と現時刻t2における複数の面候補sptt2(特徴点が矩形で描かれている)とを示しており、複数の面候補sptt1と複数の面候補sptt2との各組み合わせについて処理(比較)している。この各比較では、前時刻t1の面候補sptt1と現時刻t2の面候補sptt2間において、前時刻t1の特徴点と現時刻t2の特徴点との対応関係がとられた後に一方の時刻の面候補の各特徴点の位置を変換するための並進移動量と回転量がそれぞれ推定され、その並進移動量と回転量で回転させた上で対応する特徴点間の位置誤差が計算される。図(b)に示す比較例1の場合、対応する前時刻t1の特徴点の位置と現時刻t2の特徴点の位置とが離れており、位置誤差が大きい。一方、図(c)に示す比較例2の場合、対応する前時刻t1の特徴点の位置と現時刻t2の特徴点の位置とが略重なっており、位置誤差が小さい。
【0061】
位置誤差が大きくなる理由としては、推定された形状モデルが一致しないために特徴点の3次元位置間の誤差が大きくなるという理由と、誤った形状モデルから特徴点の3次元位置を推定しているために特徴点の3次元位置間の誤差が大きくなるという理由がある。
【0062】
具体的には、車両端点抽出部14では、前時刻t1での面候補sptt1と現時刻t2での面候補sptt2との組み合わせ毎に、面候補sptt1に含まれるNft1個の特徴点ft1と面候補sptt2に含まれるNft2個の特徴点ft2間で対応する特徴点を探索する。この探索方法としては、式(17)により、面候補sptt2の特徴点ft2毎に、面候補sptt1に含まれるNft1個の各特徴点ft1との特徴量の差ΔF’をそれぞれ計算し、特徴量の差ΔF’が最も小さくなる特徴点ft1を特徴点ft2に対応する特徴点ft2’として記憶していく。式(17)においてΔIhft1は特徴点ft1の横方向のエッジ強度であり、ΔIvft1は特徴点ft1の縦方向のエッジ強度であり、ΔIhft2は特徴点ft2の横方向のエッジ強度であり、ΔIvft2は特徴点ft2の縦方向のエッジ強度である。
【数11】
【0063】
特徴点の対応関係を探索すると、車両端点抽出部14では、前時刻t1での面候補sptt1と現時刻t2での面候補sptt2との組み合わせ毎に、対応する特徴点間で位置誤差が最少になるような並進移動量(dxspt,dyspt,dzspt)と回転量ψsptを求め、一方の面候補spt(ここでは、面候補sptt1)の各特徴点fを並進移動量(dxspt,dyspt,dzspt)と回転量ψsptで変換した上で対応する特徴点間の位置誤差E(すなわち、面候補sptt1,sptt2間の位置誤差E)を計算する。位置誤差Eは、式(18)によって計算することができる。式(18)のXは、式(19)によって計算することができる。位置誤差が最少となるように並進移動量(dxspt,dyspt,dzspt)と回転量ψsptを求める方法としては、例えば、RANSAC法を利用する。
【数12】
【0064】
全ての組み合わせ面候補間の位置誤差Eを計算すると、車両端点抽出部14では、全ての組み合わせ面候補間の位置誤差Eを比較し、最少の位置誤差Eとなる面候補の組み合わせSTP1,SPT2を抽出する。そして、車両端点抽出部14では、その抽出した前時刻t1の面候補SPT1に対応するグループgnの反射点群の中から分割位置の近傍の2つの反射点rptgn,SPT1とrptgn,SPT1+1を抽出し、その2つの反射点の平均値を前時刻t1での車両の端点(2つの面の境界位置)とする。また、車両端点抽出部14では、その抽出した現時刻t2の面候補SPT2に対応するグループgnの反射点群の中から分割位置の近傍の2つの反射点rptgn,SPT2とrptgn,SPT2+1を抽出し、その2つの反射点の平均値を現時刻t2での車両の端点とする。さらに、車両端点抽出部14では、その車両の端点(3次元位置)を用いて、画像上の車両の端点(2次元位置)を計算する。
【0065】
車両検出装置1の動作について説明する。特に、ECU10における車両位置・面候補推定部11の処理については図9〜13のフローチャートに沿って説明し、特徴点3次元位置候補推定部13の処理については図14のフローチャートに沿って説明し、車両端点抽出部14の処理については図15、図16のフローチャートに沿って説明する。図9は、車両位置・面候補推定部におけるメイン処理の流れを示すフローチャートである。図10は、車両位置・面候補推定部におけるメイン処理の中のグルーピング処理の流れを示すフローチャートである。図11は、車両位置・面候補推定部におけるメイン処理の中の形状モデル推定処理の流れを示すフローチャートである。図12は、車両位置・面候補推定部におけるメイン処理の中の画像上範囲推定処理(前面・後面)の流れを示すフローチャートである。図13は、車両位置・面候補推定部におけるメイン処理の中の画像上範囲推定処理(側面)の流れを示すフローチャートである。図14は、特徴点3次元位置候補推定部における処理の流れを示すフローチャートである。図15は、車両端点抽出部における処理の流れを示すフローチャート(前半部)である。図16は、車両端点抽出部における処理の流れを示すフローチャート(後半部)である。
【0066】
レーザレーダ3では、所定時間毎に、水平方向にスキャンしながらレーザ光を出射するとともにその反射光を受光し、受光できた各反射点についての情報をレーダ信号としてECU10に送信している。また、カメラ4では、所定時間毎に、自車両の前方を撮像し、画像信号をECU10に送信している。
【0067】
一定時間毎に、ECU10では、以下の処理を行う。まず、車両位置・面候補推定部11での処理として、ECU10では、レーザレーダ3からの各反射点についての情報を用いて、反射点のグルーピング処理を行う(S1)。
【0068】
グルーピング処理(S1)に移行すると、レーザレーダ3で検出できた全ての反射点に対して処理を行うために、ECU10では、まず、反射点ptを0で初期化する(S10)。また、ECU10では、反射点pt=0のグループIDであるGID0を0で初期化する(S11)。
【0069】
反射点ptが更新される毎に、ECU10では、式(1)により、今回の反射点ptとそれに隣接する前回の反射点pt−1間の距離LNpt,pt−1を計算する(S12)。そして、ECU10では、距離LNpt,pt−1が閾値THR_PTL未満か否かを判定する(S13)。S13にて距離LNpt,pt−1が閾値THR_PTL未満と判定した場合、ECU10では、今回の反射点ptを前回の反射点pt−1と同じグループとするために、反射点ptのグループIDのGIDptにGIDpt−1を設定する(S14)。一方、S13にて距離LNpt,pt−1が閾値THR_PTL以上と判定した場合、ECU10では、今回の反射点ptを前回の反射点pt−1と異なるグループとするために、反射点ptのグループIDのGIDptにGIDpt−1+1を設定する(S15)。
【0070】
次に、ECU10では、反射点ptを更新するために、ptに1を加算する(S16)。そして、ECU10では、更新したptがレーザレーダ3で検出できた反射点の数Nrp以上か否かを判定する(S17)。S17にてptがNrp以上と判定した場合、今回のグルーピング処理を終了する。一方、S17にてptがNrp未満と判定した場合、ECU10では、S12に戻って、更新した反射点ptに対する処理を行う。
【0071】
グルーピング処理を終了すると、グルーピングした全てのグループに対して処理を行うために、ECU10では、まず、グループgnを0で初期化する(S2)。
【0072】
グループgnが更新される毎に、ECU10では、そのグループgnに対して形状モデル推定処理を行う(S3)。
【0073】
形状モデル推定処理(S3)に移行すると、ECU10では、まず、分割位置sptを0で初期化する(S20)。
【0074】
分割位置sptを更新する毎に、ECU10では、まず、最少誤差MIN_SMsptを∞で初期化する(S21)。また、ECU10では、分割位置spt番目の位置でグループgnの反射点群を2つの反射点群RPT1={rptgn,1,・・・,rptgn,spt}、RPT2={rptgn,spt,・・・,rptgn,Ngn}に分割する(S22)。また、事前に用意されている全ての車両の形状モデルに対して処理を行うために、ECU10では、まず、形状モデルmodelを0で初期化する(S23)。
【0075】
形状モデルmodelを更新する毎に、ECU10では、その形状モデルの2面を、分割した反射点群RPT1と反射点群RPT2に当てはめ、形状一致度SMmodel,sptを計算する(S24)。そして、ECU10では、その形状一致度SMmodel,sptが閾値THR_SM未満か否かを判定する(S25)。S25にて形状一致度SMmodel,sptが閾値THR_SM以上と判定した場合、ECU10では、S31の処理に移行し、形状モデルmodelを更新するために、modelに1を加算する(S31)。
【0076】
S25にて形状一致度SMmodel,sptが閾値THR_SM未満と判定した場合、ECU10では、分割した反射点群RPT1と反射点群RPT2の中で最長部の長さLWmodel,sptを計算する(S26)。そして、ECU10では、その最長部の長さLWmodel,sptが所定範囲(THR_LW_LOW〜THR_LW_HIGH)内か否かを判定する(S27)。最長部の長さLWmodel,sptが所定範囲外と判定した場合、ECU10では、S31の処理に移行し、形状モデルmodelを更新するために、modelに1を加算する(S31)。
【0077】
最長部の長さLWmodel,sptが所定範囲内と判定した場合、ECU10では、形状一致度SMmodel,sptが最少誤差MIN_SMspt未満か否かを判定する(S28)。S28にて形状一致度SMmodel,sptが最少誤差MIN_SMspt以上と判定した場合、ECU10では、S31の処理に移行し、形状モデルmodelを更新するために、modelに1を加算する(S31)。
【0078】
S28にて形状一致度SMmodel,sptが最少誤差MIN_SMspt未満と判定した場合、ECU10では、最少誤差MIN_SMsptを形状一致度SMmodel,sptで更新する(S29)。また、ECU10では、今回の形状モデルmodelに対応するモデルパラメータMPmodel,sptを記憶する(S30)。そして、ECU10では、形状モデルmodelを更新するために、modelに1を加算する(S31)。
【0079】
S31でmodelを更新すると、ECU10では、形状モデルmodelが事前に用意されている形状モデルの数Nm以上か否かを判定する(S32)。S32にてmodelがNm未満と判定した場合、ECU10では、S24に戻って、更新した形状モデルmodelに対する処理を行う。
【0080】
S32にてmodelがNm以上と判定した場合、ECU10では、そのときの分割位置sptで当てはまる形状モデルがある場合だけ、式(2)により、車両方位φspt(方位候補に相当)を計算する(S33)。そして、ECU10では、分割位置sptを更新するために、sptに1を加算する(S34)。そして、ECU10では、sptがグループgnの反射点数Ngnを超えたか否かを判定する(S35)。S35にてsptがNgn以下と判定した場合、ECU10では、S21に戻って、更新した分割位置sptに対する処理を行う。一方、S35にてsptがNgn超えたと判定した場合、ECU10では、グループgnに対する形状モデル推定処理を終了する。ここで、最終的に、各分割位置sptのモデルパラメータMPmodel,sptにパラメータ値が記憶されている場合、今回のグループgnの分割位置sptにおいて当てはまる車両の形状モデルmodelがあったことを示しており、そのパラメータ値によって形状モデルを特定できる。
【0081】
グループgnに対する形状モデル推定処理が終了すると、ECU10では、今回のグループgnに当てはまる車両形状モデルがあったか否か(すなわち、車両を検出できたか否か)を判定する(S4)。S4にて今回のグループgnに当てはまる車両形状モデルがなかったと判定した場合、ECU10では、S6の処理に移行し、グループgnを更新するために、gnに1を加算する(S6)。
【0082】
S4にて今回のグループgnのある分割位置sptにおいて当てはまる車両形状モデルがあったと判定した場合、ECU10では、今回のグループgnの反射点群に対する画像上範囲推定処理を行う(S5)。
【0083】
画像上範囲推定処理に移行すると、まず、そのグループgnの前面・後面に対する処理を行う。ECU10では、まず、前面・後面の左端点位置FRLPtgnを画像横幅IMG_WIDTHで初期化し、前面・後面の右端点位置FRRPtgnを0で初期化する(S40)。また、ECU10では、グループgnの前面・後面に属する反射点群内の反射点を更新していくための変数iを0で初期化する(S41)。
【0084】
変数i(反射点)を更新する毎に、ECU10では、式(3)により、反射点rpgn,fr,iの3次元位置から画像上の2次元位置Pimggn,fr,iを計算する(S42)。そして、ECU10では、その画像上の位置Pimggn,fr,iの中の横位置ugn,fr,iが左端点位置FRLPtgnより小さいか否かを判定する(S43)。S43にて横位置ugn,fr,iが左端点位置FRLPtgnより小さいと判定した場合、ECU10では、左端点位置FRLPtgnを横位置ugn,fr,iで更新する(S44)。また、ECU10では、その画像上の位置Pimggn,sd,iの中の横位置ugn,fr,iが右端点位置FRRPtgnより大きいか否かを判定する(S45)。S45にて横位置ugn,fr,iが右端点位置FRRPtgnより大きいと判定した場合、ECU10では、右端点位置FRRPtgnを横位置ugn,fr,iで更新する(S46)。ECU10では、反射点を更新するために、iに1を加算する(S47)。そして、ECU10では、iがグループgnの前面・後面に属する反射点の数Ngnfr以上か否かを判定する(S48)。S48にてiがグループgnの反射点の数Ngnfr未満と判定した場合、ECU10では、S42の処理に戻って、更新した反射点に対する処理を行う。
【0085】
S48にてiがグループgnの前面・後面に属する反射点の数Ngnfr以上と判定した場合、ECU10では、グループgnの前面・後面の反射点群の全ての反射点についての3次元位置を用いて、その平均位置rpmeangn,frを計算する(S49)。さらに、ECU10では、式(4)、式(5)により、その平均位置rpmeangn,frを用いて、グループgnの前面・後面の画像上の下端点位置FRVlowgnと上端点位置FRVhighgnを計算する(S50)。
【0086】
そして、ECU10では、車両の形状モデルが当てはまったグループgnの前面・後面の画像上での範囲として、左端点位置FRLPtgn=FRLPtgn−dw、右端点位置FRRPtgn=FRRPtgn+dw、下端点位置FRVlowgn,上端点位置FRVhighgnを記憶する(S51)。
【0087】
次に、グループgnの側面に対する処理を行う。ECU10では、まず、側面の左端点位置SDLPtgnを画像横幅IMG_WIDTHで初期化し、側面の右端点位置SDRPtgnを0で初期化する(S60)。また、ECU10では、グループgnの側面に属する反射点群内の反射点を更新していくための変数iを0で初期化する(S61)。
【0088】
変数i(反射点)を更新する毎に、ECU10では、式(6)により、反射点rpgn,sd,iの3次元位置から画像上の2次元位置Pimggn,sd,iを計算する(S62)。そして、ECU10では、その画像上の位置Pimggn,sd,iの中の横位置ugn,sd,iが左端点位置SDLPtgnより小さいか否かを判定する(S63)。S63にて横位置ugn,sd,iが左端点位置SDLPtgnより小さいと判定した場合、ECU10では、左端点位置SDLPtgnを横位置ugn,sd,iで更新する(S64)。また、ECU10では、その画像上の位置Pimggn,sd,iの中の横位置ugn,sd,iが右端点位置SDRPtgnより大きいか否かを判定する(S65)。S65にて横位置ugn,sd,iが右端点位置SDRPtgnより大きいと判定した場合、ECU10では、右端点位置SDRPtgnを横位置ugn,sd,iで更新する(S66)。ECU10では、反射点を更新するために、iに1を加算する(S67)。そして、ECU10では、iがグループgnの側面に属する反射点の数Ngnsd以上か否かを判定する(S68)。S68にてiがグループgnの反射点の数Ngnsd未満と判定した場合、ECU10では、S62の処理に戻って、更新した反射点に対する処理を行う。
【0089】
S68にてiがグループgnの側面に属する反射点の数Ngnsd以上と判定した場合、ECU10では、グループgnの側面の反射点群の全ての反射点についての3次元位置を用いて、その平均位置rpmeangn,sdを計算する(S69)。さらに、ECU10では、式(7)、式(8)により、その平均位置rpmeangn,sdを用いて、グループgnの側面の画像上の下端点位置SDVlowgnと上端点位置SDVhighgnを計算する(S70)。
【0090】
そして、ECU10では、車両の形状モデルが当てはまったグループgnの側面の画像上での範囲として、左端点位置SDLPtgn=SDLPtgn−dw、右端点位置SDRPtgn=SDRPtgn+dw、下端点位置SDVlowgn,上端点位置SDVhighgnを記憶する(S71)。
【0091】
前面・後面の画像上範囲と側面の画像上の範囲を推定すると、ECU10では、グループgnの前面・後面の画像上範囲と側面の画像上範囲からなる面候補を設定する。
【0092】
画像上判定推定処理が終了すると、ECU10では、グループgnを更新するために、gnに1を加算する(S6)。そして、ECU10では、gnがグルーピングされたグループの数GN以上か否かを判定する(S7)。S7にてgnがグループの数GN未満と判定した場合、ECU10では、S3の処理に戻って、更新したグループgnに対する処理を行う。一方、S7にてgnがグループの数GN以上と判定した場合、ECU10では、車両位置・面候補推定部11での処理を終了する。
【0093】
車両の形状モデルに当てはまるグループgnがある場合、特徴点抽出部12での処理として、ECU10では、カメラ4で撮像した画像を用いて、推定した画像上範囲内で画素(u,v)毎に、各画素の値Iu,vを用いて式(9)により横方向のエッジ強度ΔIhu,vを計算するとともに式(10)により縦方向のエッジ強度ΔIvu,vを計算し、その各エッジ強度ΔIhu,v,ΔIvu,vを用いて式(11)によりエッジ強度ΔIu,vを計算するとともに式(12)によりエッジ方向θu,vを計算する。これによって、エッジ画像を生成することにより、エッジによる特徴量を有する特徴点を抽出する。
【0094】
特徴点を抽出すると、特徴点3次元位置候補推定部13の処理として、ECU10では、まず、面候補sptを0で初期化する(S80)。
【0095】
面候補sptを更新する毎に、ECU10では、面候補sptに含まれる特徴点fを0で初期化する(S81)。
【0096】
特徴点fを更新する毎に、ECU10では、式(15)により、特徴点fの画像上の位置を用いて特徴点の存在する方向nfを計算する(S82)。さらに、ECU10では、その方向nfと前面・後面モデルの面又は側面モデルの面との交点を計算し、その交点を特徴点fの3次元位置(xf,spt,yf,spt,zf,spt)とする(S83)。ECU10では、特徴点fを更新するために、fに1を加算する(S84)。そして、ECU10では、fが面候補sptに含まれる特徴点の数以上か否かを判定する(S85)。S85にfが特徴点の数未満と判定した場合、ECU10では、S82の処理に戻って、更新した特徴点fに対する処理を行う。
【0097】
S85にてfが特徴点の数以上と判定した場合、ECU10では、面候補sptを更新するために、sptに1を加算する(S86)。そして、ECU10では、sptが面候補の数以上か否かを判定する(S87)。S87にsptが面候補の数未満と判定した場合、ECU10では、S81の処理に戻って、更新した面候補sptに対する処理を行う。
【0098】
S87にsptが面候補の数以上と判定した場合、ECU10では、特徴点3次元位置候補推定部13での処理を終了する。
【0099】
特徴点の3次元位置を推定すると、車両端点抽出部14での処理として、ECU10では、まず、最少位置誤差Esptt1,sptt2をTHR_ERROR(例えば、∞)で初期化するとともに、最少誤差の面候補STP1,STP2を0で初期化する(S90)。また、ECU10では、現時刻t2の面候補sptt2を0で初期化する(S91)。
【0100】
現時刻t2の面候補sptt2を更新する毎に、ECU10では、前時刻t1の面候補sptt1を0で初期化する(S92)。
【0101】
前時刻t1の面候補sptt1を更新する毎に、ECU10では、現時刻t2の特徴点ft2を0で初期化する(S93)。
【0102】
現時刻t2の特徴点ft2を更新する毎に、ECU10では、特徴点ft2に対応する前時刻t1の特徴点ft2’を0で初期化するとともに、最少特徴量差ΔFt1,t2をTHR_FEATURE(例えば、∞)で初期化する(S94)。また、ECU10では、前時刻t1の特徴点ft1を0で初期化する(S95)。
【0103】
前時刻t1の特徴点ft1を更新する毎に、ECU10では、式(17)により、特徴点ft1と特徴点ft2との特徴量の差ΔF’を計算する(S96)。そして、ECU10では、特徴量の差ΔF’が最少特徴量差ΔFt1,t2より小さいか否かを判定する(S97)。S97にて特徴量の差ΔF’が最少特徴量差ΔFt1,t2以上と判定した場合、ECU10では、S100の処理に移行し、前時刻t1の特徴点ft1を更新するために、ft1に1を加算する(S100)。
【0104】
S97にて特徴量の差ΔF’が最少特徴量差ΔFt1,t2より小さいと判定した場合、ECU10では、最少特徴量差ΔFt1,t2として今回の特徴量の差ΔF’を設定し(S98)、特徴点ft2に対応する前時刻t1の特徴点ft2’として今回の特徴点ft1を設定する(S99)。そして、ECU10では、前時刻t1の特徴点ft1を更新するために、ft1に1を加算する(S100)。さらに、ECU10では、特徴点ft1が時刻t1での特徴点の数Nft1以上か否かを判定する(S101)。S101にてft1が時刻t1での特徴点の数Nft1未満と判定した場合、ECU10では、S96の処理に戻って、更新した特徴点ft1に対する処理を行う。
【0105】
S101にてft1が時刻t1での特徴点の数Nft1以上と判定した場合、ft2’に記憶されている特徴点が今回の特徴点ft2に対応する前時刻t1での特徴点である。そして、ECU10では、現時刻t2の特徴点ft2を更新するために、ft2に1を加算する(S102)。さらに、ECU10では、特徴点ft2が時刻t2での特徴点の数Nft2以上か否かを判定する(S103)。S103にてft2が時刻t2での特徴点の数Nft2未満と判定した場合、ECU10では、S94の処理に戻って、更新した特徴点ft2に対する処理を行う。
【0106】
S103にてft2が時刻t2での特徴点の数Nft2以上と判定した場合、特徴点ft1と特徴点ft2との全ての組み合わせについての処理が終了したことになるので、現時刻t2の全ての特徴点ft2について対応する前時刻t1での特徴点ft2’(=ft1)が確定したことになる。
【0107】
次に、ECU10では、RANSAC法により、現時刻t2と前時刻t1で対応する特徴点間で位置誤差が最少になるような並進移動量(dxspt,dyspt,dzspt)と回転量ψsptを推定する(S104)。さらに、ECU10では、前時刻t1の面候補sptt1の各特徴点ft1を並進移動量(dxspt,dyspt,dzspt)と回転量ψsptで変換した上で、対応する特徴点間の位置誤差Eを計算する(S105)。そして、ECU10では、位置誤差Eが最少位置誤差Esptt1,sptt2より小さいか否かを判定する(S106)。S106にて位置誤差Eが最少位置誤差Esptt1,sptt2以上と判定した場合、ECU10では、S109の処理に移行し、前時刻t1の面候補sptf1を更新するために、sptt1に1を加算する(S109)。
【0108】
S106にて位置誤差Eが最少位置誤差Esptt1,sptt2より小さいと判定した場合、ECU10では、最少位置誤差Esptt1,sptt2に今回の位置誤差Eを設定するとともに(S107)、面候補STP1に今回の面候補stpt1を設定し、面候補STP2に今回の面候補stpt2を設定する(S108)。そして、ECU10では、前時刻t1の面候補sptt1を更新するために、sptt1に1を加算する(S109)。さらに、ECU10では、面候補sptt1が時刻t1での面候補の数Nsptt1以上か否かを判定する(S110)。S110にて面候補sptt1が時刻t1での面候補の数Nsptt1未満と判定した場合、ECU10では、S93の処理に戻って、更新した面候補sptt1に対する処理を行う。
【0109】
S110にて面候補sptt1が時刻t1での面候補の数Nsptt1以上と判定した場合、ECU10では、現時刻t2の面候補sptt2を更新するために、sptt2に1を加算する(S111)。さらに、ECU10では、面候補sptt2が時刻t2での面候補の数Nsptt2以上か否かを判定する(S112)。S112にて面候補sptt2が時刻t2での面候補の数Nsptt2未満と判定した場合、ECU10では、S92の処理に戻って、更新した面候補sptt2に対する処理を行う。
【0110】
S112にて面候補sptt2が時刻t2での面候補の数Nsptt2以上と判定した場合、面候補sptt2と面候補sptt1の全ての組み合わせに対する処理が終了したので、STP1に記憶されている面候補が前時刻t1での車両の面に確定したことになり、STP2に記憶されている面候補が現時刻t2での車両の面に確定したことになる。そこで、ECU10では、前時刻t1の面候補SPT1に対応するグループgnの反射点群の中から分割位置の近傍の2つの反射点rptgn,SPT1とrptgn,SPT1+1を抽出し、その2つの反射点の平均値を時刻t1での車両の端点(2つの面の境界位置)とする(S113)。また、ECU10では、現時刻t2の面候補SPT2に対応するグループgnの反射点群の中から分割位置の近傍の2つの反射点rptgn,SPT2とrptgn,SPT2+1を抽出し、その2つの反射点の平均値を時刻t2での車両の端点とする(S113)。そして、ECU10では、車両端点の情報を少なくとも含む車両情報を車両情報信号として運転支援装置に送信する。ここでは、例えば、現時刻t2の車両の端点だけを出力してもよいし、前時刻t1と現時刻t2の車両の端点を出力してもよい。
【0111】
この車両検出装置1によれば、連続する2時刻間の面候補の組み合わせ毎に対応する特徴点間において3次元位置を並進移動及び回転変換した上で最少の位置誤差を求め、全ての組み合わせの面候補の中で位置誤差が最少となる組み合わせの面候補を抽出することにより、車両の面を高精度に検出できる。さらに、この車両の面に基づいて、車両の端部を高精度に検出することができる。
【0112】
図17〜図19を参照して、第2の実施の形態に係る車両検出装置2について説明する。図17は、第2の実施の形態に係る車両検出装置の構成図である。図18は、2時刻間での特徴点の位置誤差の一例であり、(a)が前時刻t1での特徴点の画像上位置と3次元位置との関係を示す図であり、(b)が現時刻t2での特徴点の画像上位置と3次元位置との関係を示す図であり、(c)が前時刻t1と現時刻t2間における特徴点の3次元位置の位置誤差を示す図である。図19は、車両幅推定部における処理の説明図である。
【0113】
車両検出装置2は、第1の実施の形態に係る車両検出装置1と比較すると、車両の両端の端点を推定し、この各端点と車両端点抽出部14で抽出した車両の端点を用いて車両の幅を推定する構成を追加した点だけが異なる。そのために、車両検出装置2は、レーザレーダ3、カメラ4、ECU20を備えており、ECU20に車両位置・面候補推定部11、特徴点抽出部12、特徴点3次元位置候補推定部13、車両端点抽出部14、車両幅推定部25が構成される。なお、第2の実施の形態では、車両端点抽出部14及び車両幅推定部25が特許請求の範囲に記載する車両情報検出手段に相当する。
【0114】
ECU20は、CPU、ROM、RAMなどからなる電子制御ユニットであり、車両検出装置2を統括制御する。ECU20では、ROMに格納されているアプリケーションプログラムをRAM上にロードし、CPUで実行することによって車両位置・面候補推定部11、特徴点抽出部12、特徴点3次元位置候補推定部13、車両端点抽出部14、車両幅推定部25を構成する。ECU20では、所定時間毎に、レーザレーダ3からレーダ信号、カメラ4から画像信号を受信する。そして、ECU20では、この各信号を用いて各部11,12,13,14,25の処理を行い、車両を検出できた場合にはその車両の情報を車両報信号として運転支援装置に送信する。ここでは、車両幅推定部25での処理についてのみ詳細に説明する。
【0115】
車両幅推定部25について説明する。車両端点抽出部14で車両の端点(2つの面の境界位置)を抽出すると、車両幅推定部25では、車両端点抽出部14で推定した車両の各面STP1,STP2での対応する特徴点間の位置誤差をそれぞれ求め、位置誤差が小さい特徴点の中で車両端点抽出部14で抽出した車両の端点(2面の境界位置)から最も離れている特徴点の位置の各面の他方側の端点として抽出し、車両の端点の各面の他方側の端点に基づいて車両の幅を推定する。
【0116】
図18には、前時刻t1と現時刻t2間において車両前面での特徴点での位置誤差と車両以外の物体での特徴点での位置誤差の一例を示している。図(a)は前時刻t1の場合であり、標識Bの特徴点としてCP1t1が画像IP上の特徴点であり、3P1t1’が特徴点CP1t1の車両端点抽出部14で推定した車両の面STP1上での3次元位置候補であり、3P1t1が特徴点CP1t1の実際の3次元位置であり、車両Vの前面の特徴点としてCP2t1が画像IP上の特徴点であり、3P2t1’が特徴点CP2t1の車両の面STP1上で3次元位置候補であり、3P2t1が特徴点CP2t1の実際の3次元位置である。図(b)は現時刻t2の場合であり、標識Bの特徴点としてCP1t2が画像IP上の特徴点であり、3P1t2’が特徴点CP1t2の車両端点抽出部14で推定した車両の面STP2上での3次元位置候補であり、3P1t2が特徴点CP1t2の実際の3次元位置であり、車両Vの前面の特徴点としてCP2t2が画像IP上の特徴点であり、3P2t2’が特徴点CP2t2の車両の面STP2上での3次元位置候補であり、3P2t2が特徴点CP2t2の実際の3次元位置である。さらに、図(c)には前時刻t1と現時刻t2間における3次元位置候補の位置誤差を示しており、標識Bの特徴点についての3次元位置候補3P1t1’,3P1t2’間の位置誤差L1と、車両Vの特徴点についての3次元位置候補3P2t1’,3P2t2’間の位置誤差L2を示している。この例からも判るように、車両の特徴点の場合、2時刻t1,t2間の画像上の特徴点についての車両の面STP1,STP2上での各3次元位置候補の位置の差は小さく、2時刻t1,t2間で特徴点の対応がつく。しかし、車両V以外の物体(標識B)の場合、2時刻t1,t2間の画像上の特徴点についての車両の面STP1,STP2上での各3次元位置候補の位置の差は大きく、2時刻t1,t2間で特徴点の対応がつかない。したがって、特徴点群の中から、この2時刻t1,t2間の位置誤差が大きくなる特徴点を排除することにより、車両の特徴点のみが残ることになる。
【0117】
図19には、車両幅推定部25での処理(車両の前面に対するもの)の概要を示している。現時刻t2の画像Iから抽出された特徴点(3次元位置候補)3P1t2’,3P2t2’,・・・,3P12t2’,・・・の一例を示しており、この例の場合、特徴点3P1t2’,3P9t2’,3P12t2’が車両以外の物体の特徴点である。この各特徴点について、前時刻t1と現時刻t2間で対応する特徴点の3次元位置候補の位置誤差Eをそれぞれ計算し、その各位置誤差Eを画像上の横位置uを横軸としたグラフG1に示している。このグラグG1から判るように、車両以外の物体の特徴点3P1t2’,3P9t2’,3P12t2’についての各位置誤差は所定の閾値THR_ERROR_FPより大きくなるので、この特徴点を排除する。そして、残った特徴点についてのみ、特徴点の数を横位置u毎(1画素単位毎ではなく、数画素単位毎)にカウントし、そのカウント値(頻度EHistu)を横位置u(数画素単位)を横軸としたグラフG2に示している。このグラフG2から判るように、車両端点抽出部14で抽出した車両の端部Uedgeでは頻度EHistuが所定の閾値THR_ERROR_FPCNTを超えており、それ以外で頻度EHistuが閾値THR_ERROR_FPCNTを超える横位置uのうち車両の端部Uedgeから最も離れている横位置uLを車両の前面の他方側の端部とする。
【0118】
具体的には、車両幅推定部25では、前時刻t1での面STP1と現時刻t2での面候補STP2において対応する特徴点ft2’,ft2毎に、特徴点ft2’,ft2間で位置誤差が最少になるような並進移動量(dxspt,dyspt,dzspt)と回転量ψsptを用いて、特徴点ft2’(=ft1)を並進移動量(dxspt,dyspt,dzspt)と回転量ψsptで変換した上で、対応する特徴点ft2’,ft2間の位置誤差Eft2を計算する。位置誤差Eft2は、式(20)によって計算することができる。式(20)のXは、式(21)によって計算することができる。なお、式(21)における対応する特徴点ft2’,ft2間についての並進移動量(dxspt,dyspt,dzspt)と回転量ψsptについては、車両端点抽出部14で既に求められている。
【数13】
【0119】
位置誤差Eft2を計算する毎に、車両幅推定部25では、特徴点のft2’,ft2間の位置誤差Eft2が閾値THR_ERROR_FPより小さいか否かを判定する。閾値THR_ERROR_FPは、特徴点間の位置誤差Eft2に基づいて、車両の特徴点かあるいは車両以外の特徴点かを判別するための閾値である。位置誤差Eft2が閾値THR_ERROR_FPより小さい場合、車両幅推定部25では、その特徴点の横位置u(数画素毎の横位置)の頻度EHistuをカウントアップする。
【0120】
対応する全ての特徴点ft2’,ft2間に対する処理が終了すると、車両幅推定部25では、各横位置uでの頻度EHistuの中から閾値THR_ERROR_FPCNTを超えるか否かを判定する。閾値THR_ERROR_FPCNTは、頻度EHistuに基づいて、車両の端点として所定数以上の特徴点があるか否か判定するための閾値である。
【0121】
車両幅推定部25では、頻度EHistuが閾値THR_ERROR_FPCNTを超える横位置uの中から、車両端点抽出部14で抽出した車両の端点(2面の境界位置)から最も離れている横位置uを抽出し、その横位置uを車両の面の他方側の端点とする。
【0122】
車両幅推定部25では、車両端点抽出部14で抽出した車両の面STP1,STP2における前面・後面と側面とに分けて上記処理を行い、前面・後面の他方側の端点と側面の他方側の端点をそれぞれ推定する。そして、車両幅推定部25では、推定した前面・後面の他方側の端点と側面の他方側の端点及び車両端点抽出部14で抽出した車両の端点を用いて、端点間距離により車両の幅を計算する。前面・後面の他方側の端点と側面の他方側の端点間距離の場合、画像に写っている車両全体の幅である。前面・後面の他方側の端点と車両端点抽出部14で抽出した車両の端点間距離の場合、画像に写っている車両の前面の幅である。側面の他方側の端点と車両端点抽出部14で抽出した車両の端点間距離の場合、画像に写っている車両の側面の長さである。
【0123】
車両検出装置2の動作について説明する。車両検出装置2の動作では、第1の実施の形態に係る車両検出装置1の動作と比較すると、車両端点抽出部14が終了した後に車両幅推定部25での処理を行うことだけが異なるので、ECU20における車両幅推定部25での処理についてのみ説明する。ECU20における車両幅推定部25の処理については図20のフローチャートに沿って説明する。図20は、車両幅推定部における処理の流れを示すフローチャートである。
【0124】
車両幅推定部25での処理として、ECU20では、まず、現時刻t2の特徴点ft2を0で初期化し(S120)、各横位置での頻度EHistuを0で初期化する。
【0125】
特徴点ft2を更新する毎に、ECU20では、現時刻t2での面候補STP2における特徴点ft2に対応する前時刻t1での面候補SPT1における特徴点ft2’について、並進移動量(dxspt,dyspt,dzspt)と回転量ψsptdyspt,dzspt)で変換した上で特徴点ft2,ft2’間の位置誤差Eft2を計算する(S121)。そして、ECU20では、位置誤差Eft2が閾値THR_ERROR_FPより小さいか否かを判定する(S122)。S122にて位置誤差Eft2が閾値THR_ERROR_FPより小さいと判定した場合、ECU20では、特徴点ft2の画像上での横位置uに対する頻度EHistuを1カウントアップする(S123)。
【0126】
ECU20では、現時刻t2の特徴点ft2を更新するために、ft2に1を加算する(S124)。さらに、ECU20では、特徴点ft2が時刻t2での特徴点の数Nft2以上か否かを判定する(S125)。S125にてft2が時刻t2での特徴点の数Nft2未満と判定した場合、ECU20では、S121の処理に戻って、更新した特徴点ft2に対する処理を行う。
【0127】
S125にてft2が時刻t2での特徴点の数Nft2以上と判定した場合、全ての対応する特徴点ft2,ft2’間についての処理が終了したことになる。そこで、ECU20では、頻度EHistuが閾値THR_ERROR_FPCNTを超える横位置u中で、車両の端点(2面の境界位置)から最も離れている横位置uを車両の面の他方側の端点とする(S126)。そして、ECU20では、その車両の面の他方側の端点と車両の端点(2面の境界位置)の差により車両の幅を推定する(S127)。
【0128】
ECU20では、前面・後面と側面とに分けて上記処理を行い、前面・後面の他方側の端点と側面の他方側の端点をそれぞれ推定し、車両の幅を推定する。そして、ECU20では、車両の面、車両の各端点及び車両の幅の情報を少なくとも含む車両情報を車両情報信号として運転支援装置に送信する。
【0129】
この車両検出装置2によれば、第1の実施の形態に係る車両検出装置1と同様の効果を有する上に、下記の効果も有する。車両検出装置2によれば、時刻t1,t2間での対応する特徴点間の位置誤差を利用することにより、車両の各面の他方側の残端点を高精度に推定でき、その残端点と車両の端点から車両の幅を高精度に推定することができる。
【0130】
以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。
【0131】
例えば、本実施の形態では車両に搭載される車両検出装置に適用したが、衝突防止装置、車間制御装置などの運転支援装置や周辺監視装置などの他の装置にも適用可能である。
【0132】
また、本実施の形態では自車両の前方の車両を検出する場合に適用したが、後方などの他の方向での車両の検出にも適用可能である。
【0133】
また、本実施の形態では車両を検出し、車両の面候補や車両の画像上の範囲を推定するためにレーザレーダのレーダ情報を用いる構成としたが、ミリ波レーダなどの他のレーダのレーダ情報を用いてもよい、あるいは、カメラによる画像を用いてパターン認識などによる他の方法で推定してもよい。
【0134】
また、本実施の形態では所定の特徴量(特徴点)としてエッジを適用したが、ウェーブレット、SIFTなどの他の特徴量でもよい。
【0135】
また、本実施の形態では推定した車両の面に基づいて車両の端点までの求める構成としたが、車両の面の推定だけを行う構成としてもよい。
【0136】
また、本実施の形態では連続する2時刻間について処理を行ったが、3時刻間や4時刻間でもよいし、時刻間の周期が短い場合には連続する時刻間でなくてもよい。
【符号の説明】
【0137】
1,2…車両検出装置、3…レーザレーダ、4…カメラ、10,20…ECU、11…車両位置・面候補推定部、12…特徴点抽出部、13…特徴点3次元位置候補推定部、14…車両端点抽出部、25…車両幅推定部
【特許請求の範囲】
【請求項1】
撮像手段で撮像した画像から車両の情報を検出する車両検出装置であって、
車両の面の候補を推定する面候補推定手段と、
前記撮像手段で車両を撮像した画像から所定の特徴量を有する複数の特徴点を抽出する特徴点抽出手段と、
前記特徴点抽出手段で抽出した特徴点の3次元位置を推定する3次元位置推定手段と、
前記撮像手段で異なる時刻で撮像した各画像からそれぞれ推定された面候補の組み合わせ毎に、面候補間で複数の特徴点について特徴量の差が小さくなる特徴点の対応関係を探索し、当該探索された対応関係の複数の特徴点間において3次元位置を並進移動及び回転変換した上で位置誤差を求め、当該位置誤差が最少となる組み合わせの面候補を抽出し、当該抽出した組み合わせの面候補に基づいて車両の面を検出する車両情報検出手段と
を備えることを特徴とする車両検出装置。
【請求項2】
前記車両情報検出手段は、検出した面に基づいて車両の端点を検出することを特徴とする請求項1に記載する車両検出装置。
【請求項3】
前記車両情報検出手段は、抽出した組み合わせの面候補間において対応する特徴点間の3次元位置の位置誤差が閾値以内の特徴点が存在する領域に基づいて車両の面の幅を検出することを特徴とする請求項1又は請求項2に記載する車両検出装置。
【請求項1】
撮像手段で撮像した画像から車両の情報を検出する車両検出装置であって、
車両の面の候補を推定する面候補推定手段と、
前記撮像手段で車両を撮像した画像から所定の特徴量を有する複数の特徴点を抽出する特徴点抽出手段と、
前記特徴点抽出手段で抽出した特徴点の3次元位置を推定する3次元位置推定手段と、
前記撮像手段で異なる時刻で撮像した各画像からそれぞれ推定された面候補の組み合わせ毎に、面候補間で複数の特徴点について特徴量の差が小さくなる特徴点の対応関係を探索し、当該探索された対応関係の複数の特徴点間において3次元位置を並進移動及び回転変換した上で位置誤差を求め、当該位置誤差が最少となる組み合わせの面候補を抽出し、当該抽出した組み合わせの面候補に基づいて車両の面を検出する車両情報検出手段と
を備えることを特徴とする車両検出装置。
【請求項2】
前記車両情報検出手段は、検出した面に基づいて車両の端点を検出することを特徴とする請求項1に記載する車両検出装置。
【請求項3】
前記車両情報検出手段は、抽出した組み合わせの面候補間において対応する特徴点間の3次元位置の位置誤差が閾値以内の特徴点が存在する領域に基づいて車両の面の幅を検出することを特徴とする請求項1又は請求項2に記載する車両検出装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2010−256040(P2010−256040A)
【公開日】平成22年11月11日(2010.11.11)
【国際特許分類】
【出願番号】特願2009−103111(P2009−103111)
【出願日】平成21年4月21日(2009.4.21)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】
【公開日】平成22年11月11日(2010.11.11)
【国際特許分類】
【出願日】平成21年4月21日(2009.4.21)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】
[ Back to top ]