――第1の実施の形態――
図1に、本発明による周囲物体検出装置の第1の実施の形態を示す。この周囲物体検出装置1は、車両に搭載されて車両周囲の画像を撮影し、撮影された画像情報の時間的な変化により、周囲の車両などの物体を検出する。周囲物体検出装置1は、カメラ7、車両センサ8、メモリ9、CPU10、および警報装置11を有する。
カメラ7は、車両周囲の画像を連続的に撮影するカメラである。図2に示すように、周囲物体検出装置1を搭載した車両100の後側方に、カメラ7の視軸は向けられている。これにより、隣接する車線の後側方を走行中の他車両など、運転者から確認しにくい位置にある移動物体についても、カメラ7によって撮影することができる。カメラ7には、たとえば可視光や赤外光に撮影感度を持つCCDカメラが用いられるが、その他の方式のものでもよい。カメラ7によって連続的に撮影された画像は、所定時間ごとに区切られた画像フレームに変換された後、メモリ9に記憶される。
車両センサ8は、車両の左右それぞれの車輪の回転数を検出し、その回転数に応じた車輪速パルスをCPU10に対して出力する。この車輪速パルスは、車輪が1回転の所定数分の1だけ回転したときに出力される。たとえば、1/88回転するごとに車輪速パルスが1つ出力される。出力された車輪速パルスの数はCPU10においてカウントされ、メモリ9に記憶される。この左右の車輪速パルス数に基づいて、CPU10はデッドレコニングにより所定時間ごとの車両の移動量を計算する。このとき、左右の車輪速パルス数の差によって車軸の傾き量が計算され、それによって車両の進行方向の変化量が計算される。
メモリ9は、上述したとおり、カメラ7による画像情報、および車両センサ8により出力された車輪速パルスのカウント数の情報を記憶するとともに、CPU10により実行される処理結果として、車両の移動量や、後述する仮想領域マップを記憶する。これら各種の情報はアドレスごとに管理されており、対応するアドレスを指定することで、任意の種類の情報をメモリ9より読み出したり、メモリ9に書き込んだりできる。
CPU10は、メモリ9に記憶された情報に基づいて、各種の演算や処理を実行する。たとえば、車両センサ8より出力される車輪速パルスのカウント数に基づいて算出されたデッドレコニング情報による車両移動量と、カメラ7により撮影された画像情報とにより、車両の周囲に存在する移動物体を検出する。このとき、移動物体が衝突する危険性がある場合には警報装置11を作動させ、たとえば音声や警報音などによって運転者へ報知する。
車両周囲の移動物体を検出する方法について、図3および4を参照して説明する。時刻t1において道路を通行中の図3(a)に示す車両100には、周囲物体検出装置1が搭載されている。周囲物体検出装置1のカメラ7において、図4(a)の符号41に示す画像が撮影されたとする。このとき、画像41中の車両100が走行している車線の隣の車線上に、符号21〜26に示す領域が設定される。
これらの領域21〜26は、実空間に固定された領域を画像41上に表示したものとして設定される。すなわち、実空間上に図3(a)に示す領域31〜36が存在すると仮想して、カメラ7で車両100の後側方を撮影したとき、これらの仮想領域31〜36にそれぞれ対応する画像41上の領域が、領域21〜26に相当する。
次に、時刻t2において車両100が図3(b)の位置に移動し、このときに図4(b)の符号42に示す画像が撮影されたとする。図3(b)に示す実空間上の仮想領域31〜36は、図3(a)の場合よりも車両100から遠ざかるため、車両100と仮想領域31〜36との相対的な位置関係が変化する。したがって、実空間上の仮想領域31〜36に対応して画像42上に設定される領域21〜26の位置や形状は、画像41のときより変化する。
画像42上の領域21〜26の位置や形状は、車両100と仮想領域31〜36との実空間上における相対的な位置関係により決定される。この相対的な位置関係は、車両センサ8によって検出された左右それぞれの車輪速パルスに基づいてデッドレコニングにより車両100の移動量が計算され、その移動量によって算出される(相対位置算出という)。算出された相対的な位置関係により、仮想領域31〜36を画像42に投影したときの位置と形状が演算され(投影処理という)、領域21〜26の位置や形状が決定される。なお、図3(b)において、仮想領域31は、破線30によって示されるカメラ7の視認距離より遠い位置に存在する。そのため、仮想領域31に対応する領域21は、図4(b)に示すように画像42において表示されない。
またこのとき、車両100が図3(a)の位置から(b)の位置に移動したことにより、車両100と仮想領域36との間に仮想領域1つ分以上の距離が空いたとする。この距離を埋める仮想領域として、車両100の付近の実空間上に、新たな仮想領域37が設定される。その結果、車両100と仮想領域37との相対的な位置関係に基づいて、画像42において、仮想領域37に対応する領域27が新たに設定される。
次に、車両100が時刻t3においてさらに図3(c)の位置に移動し、このときに図4(c)の符号43に示す画像が撮影されたとする。このとき、図3(a)の位置から(b)の位置に移動した場合と同様に、仮想領域33〜37、および新たに設定される仮想領域38に対して、前述の相対位置算出と投影処理が行われ、画像43における領域23〜28の位置と形状が決定される。なお、仮想領域32はカメラ7の視認距離30より遠い位置に存在するため、画像43において領域22は表示されなくなる。
以上説明したようにして、撮影画像上に領域23〜28が設定される。これを1つの領域に注目してみると、図3(a)〜(c)の位置に車両100が順次移動していくにしたがって、図4(a)〜(c)の注目領域24(網掛け部)のように、画像上の位置と形状が変化していく。次に、このように画像上に設定された領域23〜28により車両100の周囲の物体を検出する方法を説明する。
図5に示す実空間上の仮想領域31〜38は、図3の仮想領域31〜38と同じものである。図5(a)〜(c)は、時刻t1〜t3における車両100と、車両100の後側方に存在する検出対象とする他車両101との位置関係とを示す。時刻t2において、図5(b)に示すように、検知対象車両101が仮想領域34に進入しているとする。
仮想領域34に対応する画像上の領域、すなわち図4に示す領域24の、時刻t1〜t3における特徴量の時間変化の様子を図6に示す。この特徴量は、領域24における画像の平均輝度値が、所定の時間内に変化した量である。領域24に路面のみ写っている場合には、平均輝度値はあまり変化せず、特徴量は小さい。しかし、領域24に車両などの立体物も合わせて写っている場合には、車両100の移動に伴ってカメラ7の視点が変化すると、立体物が写される面(方向)が変化し、画像における輝度情報が変化する。そのため平均輝度値の変化、すなわち特徴量が大きくなる。図6においては、車両101が仮想領域34に進入した時刻t2に、特徴量がしきい値を越えている。このように特徴量がしきい値を越えたときに、車両101が検出される。
周囲物体検出装置1は、以上説明したようにして、車両100の周囲の画像を撮影して、実空間上の仮想領域と、その仮想領域に対応する画像上の領域とを設定し、この画像上の領域の特徴量によって、周囲の車両などの物体を検出する。さらに周囲物体検出装置1は、後述するようにして車両100と検出した物体との進路の予想を行うことにより、衝突の危険性を判断する。
周囲物体検出装置1により周囲物体を検出するときの処理の流れを示すフローチャートを図7および8に示す。このフローチャートはCPU10で実行されるプログラムに基づくものであり、周囲物体検出装置1の動作時には常に実行されている。図7および8の各フローでの処理内容を、図3および4の例を用いて以下に説明する。なお以下の説明では、図3および4における時刻t1を時刻0、時刻t2を時刻t、時刻t3を時刻t+Δtにそれぞれ置き換えるものとする。
図7のステップS1では、はじめにカメラ7により撮影され、メモリ9に記憶された車両100の周囲の画像信号、すなわち図3(a)に示す車両100の位置において撮影した画像41を読み込む。この画像を初期画像とする。
ステップS2では、ステップS1で読み込んだ初期画像41に対応する実空間上に初期の仮想領域31〜36を設定するとともに、この仮想領域31〜36に対応する初期の画像上の領域21〜26を設定する。仮想領域31〜36は、たとえば自動車専用道路においては、その実空間上の大きさを3m四方とし、車両100の後側方の走行車線上に、走行車線の中心に沿って4m間隔で配置する。また一般道路においては、二輪車や歩行者のように車両より小さい物体も検知できるように、仮想領域31〜36の実空間上の大きさと配置間隔は、自動車専用道路の場合に比べて小さく設定される。なお、以上述べた仮想領域の大きさや配置は一例であり、その他の大きさや配置としてもよい。
さらにステップS2では、設定した仮想領域31〜36に対して、それぞれを区別するためのID番号を各仮想領域ごとに割り振るとともに、車両100と各仮想領域ごとの相対位置を算出する。また、画像上の領域21〜26に対して、各領域ごとの初期平均輝度値を算出する。平均輝度値は、領域のID番号をn、時刻をtとするとG(n,t)で表され、ステップS2で算出される初期平均輝度値は、G(n,0)で表される。
ステップS3では、ステップS2で設定した初期仮想領域31〜36について、初期の仮想領域マップM0を作成する。初期仮想領域マップM0を含めた仮想領域マップのデータ構造は図9に示すようになっている。符号90に示す1つの仮想領域マップには、たとえば時刻0のときの各仮想領域の情報がID番号ごとに記録されている。たとえば符号93に示すID番号nの部分には、その仮想領域と車両100との相対位置、その仮想領域に対応する画像上の領域の平均輝度値および特徴量とともに、後に説明する状態値および車両ラベルの情報が記録されており、他のID番号の部分についても同様である。たとえば時刻tおよびt+Δtに対応する符号91および92に示す仮想領域マップについても、同様の情報が記録されている。仮想領域マップはこのステップS3においてはじめに初期仮想領域マップM0が作成され、その後は以降に説明するステップS4からステップS23までの処理を1つの処理サイクルとして繰り返すときに、後述するステップS6において処理サイクルごとに作成される。
なお、このステップS3で作成する初期仮想領域マップM0においては、ステップS2で算出した相対位置(初期相対位置)と平均輝度値(初期平均輝度値)のみが記録される。その他の特徴量、状態値および車両ラベルの各情報は、この時点ではまだ求められていないため、初期仮想領域マップM0には記録されない。作成された初期仮想領域マップM0は、メモリ9に記憶される。
ステップS4では、時間Δtだけ処理を待機する。この時間Δtは、ステップS4からステップS27までの1つの処理サイクルを繰り返すときに、ステップS4以外の各ステップにおける処理時間と、1回の処理サイクルの時間とに基づいて、あらかじめ設定される。なお以降の説明では分かりやすくするため、ステップS4以外の各ステップにおける処理時間を0とし、1回の処理サイクルの時間は時間Δtに等しいものとする。
ステップS5では、カメラ7により撮影され、メモリ9に記憶された車両100の後側方の画像信号を読み込む。この画像は、前回の処理サイクルにおけるステップS5またはステップS1で読み込んだ画像から、時間Δt経過後に撮影されたものである。ここでは画像42を読み込むこととし、また画像42を撮影した時刻をtとして説明する。
ステップS6では、ステップS2で設定した初期仮想領域31〜36について、時刻tにおける仮想領域マップMtを作成する。なお、このステップS6を2度目以降に実行する場合は、1回前の処理サイクルにおいて設定されていた仮想領域について、仮想領域マップを作成する。この時点では、作成された仮想領域マップMtには仮想領域31〜36に対応するID番号のみが設定され、ステップS3において説明したID番号ごとの各情報はまだ記録されない。作成された仮想領域マップMtは、メモリ9に記憶される。
ステップS7では、時刻tにおける車両100の移動量Vtを求める。移動量Vtは、処理サイクル1回分、すなわち時間Δtの間に車両100が実空間を移動した量であり、これは前述したように、車両センサ8より出力された車両100の車輪速パルスに基づいて、デッドレコニングにより求められる。さらに、求めた移動量Vtがしきい値Vsより大きいか否かを判定し、大きい場合はステップS8へ進み、大きくない場合はステップS10へ進む。ここで、しきい値Vsは1つ以上の仮想領域を新たに実空間上に設定できるだけの移動量であり、これはステップS2で設定した仮想領域の大きさにより決まる。なお、移動量Vtとしきい値Vsとの比較は、同じ方向へ移動したときの移動量によって行う。
ステップS8では、ステップS7で求めた移動量Vtに応じて、新たな実空間上の仮想領域37を設定する。さらに、この仮想領域37についても、ステップS2で設定した仮想領域31〜36と同様に、ID番号を割り振るとともに、車両100との相対位置を算出する。また、画像42上に仮想領域37に対応する領域27を設定し、その平均輝度値を算出する。なお、ステップS8で設定する新たな仮想領域の数は、移動量Vtの中にいくつの仮想領域を配置できるかによって決定される。すなわち、たとえばVs<Vt≦2Vsの場合には新たな仮想領域を1つ設定し、2Vs<Vt≦3Vsの場合には新たな仮想領域を2つ設定する。
ステップS9では、ステップS6で作成した仮想領域マップMtに、ステップS8で設定した仮想領域37のID番号と、同じくステップS8で算出した車両100と仮想領域37との相対位置、および領域27の平均輝度値の情報を加え、仮想領域マップMtを更新する。
ステップS10では、仮想領域マップMtにID番号が記録されている仮想領域31〜37について、ステップS7で求めた移動量Vtに基づいて、車両100との相対位置をそれぞれ算出する。この仮想領域マップMtは、ステップS6で作成され、ステップS9で更新されたものである。算出された相対位置は仮想領域マップMtに記録され、仮想領域マップMtが更新される。
ステップS11では、仮想領域マップMtに記録されているID番号を選択することにより、仮想領域31〜37のうちいずれか1つを選択する。ここで、同一の処理サイクルにおいてステップS11から以降に説明するステップS17までの処理を繰り返す間、1度このステップS11で選択された仮想領域は、それ以降のステップS11では選択されない。
ステップS12では、ステップS11で選択した仮想領域がカメラ7の観測範囲にあるか否かを判定する。この判定は、仮想領域マップMtに記録された車両100との相対位置により行われ、相対位置が一定値以上となったときに、観測範囲にないと判定する。観測範囲にある場合、すなわち仮想領域32〜37のいずれかをステップS11で選択した場合は、ステップS13に進む。観測範囲にない場合、すなわち仮想領域31をステップS11で選択した場合は、ステップS17に進む。このとき、観測範囲にない仮想領域31の情報は仮想領域マップMtより削除され、次回以降の処理サイクルにおいて作成される仮想領域マップには、その情報は記録されない。
ステップS13では、ステップS12でカメラ7の観測範囲にあると判定した仮想領域に対応する領域22〜27のいずれかを、ステップS5で取り込んだ画像42上に設定する。このときの領域22〜27の位置および形状は、対応する仮想領域32〜37のいずれかに対して、ステップS10で仮想領域マップMtに記録された相対位置に基づいて投影処理を行うことにより、求められる。
ステップS14では、ステップS13で設定した画像42上の領域22〜27のいずれかについて、平均輝度値を算出する。算出された平均輝度値は仮想領域マップMtに記録され、仮想領域マップMtが更新される。
ステップS15では、ステップS13で設定した画像42上の領域22〜27のいずれかについて、特徴量を算出する。この特徴量は、ステップS14で算出された平均輝度値と、1回前の処理サイクルのステップS14で算出された平均輝度値との差分の絶対値として定義され、次の式(1)によって表される。式(1)において、G(n,t)は領域のID番号n、時刻tにおける平均輝度値を表し、G(n,t−Δt)はそれより1回前の処理サイクルにおける平均輝度値を表している。なお1回目の処理サイクルにおいては、G(n,t−Δt)に代えて、ステップS2で算出された初期平均輝度値G(n,0)が用いられる。このとき、今回の処理サイクルのステップS8において新たに設定された領域、すなわち領域27については、特徴量は0とする。算出された特徴量は仮想領域マップMtに記録され、仮想領域マップMtが更新される。
D(n,t)=|G(n,t)−G(n,t−Δt)| (1)
ステップS16では、ステップS15で算出した特徴量に基づき、ステップS12でカメラ7の観測範囲にあると判定した仮想領域32〜37のいずれかについて、状態値を算出する。この状態値は、特徴量がしきい値より大きいか否かによって値が決定されるものであり、特徴量がしきい値より大きい場合は1、しきい値以下である場合は0となる。このように仮想領域の状態値が1になることにより、車両100の周囲物体が検出される。算出された状態値は仮想領域マップMtに記録され、仮想領域マップMtが更新される。
ステップS17では、仮想領域マップMtにID番号が記録されている仮想領域31〜37のすべてを、ステップS11で選択したか否かを判定する。すべてを選択した場合は図8のステップS18へ進み、まだ選択していない仮想領域がある場合はステップS11へ戻る。
図8のステップS18では、ステップS16で仮想領域マップMtに記録された仮想領域32〜37の状態値を判別し、状態値が1である仮想領域があるか否かを判定する。状態値が1である仮想領域が少なくとも1つ以上ある場合、ステップS19へ進む。仮想領域32〜37の状態値がすべて0である場合、図7のステップS4へ戻る。このとき、ステップS19以降の処理は行わない。
ステップS19では、状態値が1である仮想領域について、実空間上で隣接する仮想領域同士を一つの仮想領域群とするクラスタリング処理を行う。たとえば、仮想領域32〜37のうち、仮想領域32と33、および仮想領域36と37の状態値が1であった場合、仮想領域32と33を一つの仮想領域群AG、仮想領域36と37を仮想領域群AGとは異なる一つの仮想領域群BGとする。なお、隣接する状態値が1の仮想領域がない仮想領域については、このクラスタリング処理を行わない。
ステップS20では、状態値が1である仮想領域32と33、および仮想領域36と37について、車両ラベルを付加する。この車両ラベルは、1回前の処理サイクル、すなわち時刻t−Δtにおける仮想領域マップMt−Δtにおいてその仮想領域の状態値が1であった場合は、仮想領域マップMt−Δtに記録された1回前の処理サイクルのものと同じ車両ラベルとする。さらにこのとき、同一の仮想領域群で前方(車両100により近い方)に隣接する仮想領域についても、同じ車両ラベルを付加する。一方、仮想領域マップMt−Δtにおいてその仮想領域の状態値が0であった場合には、新規の車両ラベルを付加する。たとえば、1回前の処理サイクルにおいて仮想領域32の状態値が1であり、その車両ラベルがALであった場合、仮想領域32、および同一の仮想領域群AGで前方に隣接する仮想領域33に、車両ラベルALを付加する。一方、仮想領域36および37には新規の車両ラベルBLを付加する。
なお以上説明したステップS20の処理においては、仮想領域を設定する実空間は車両100と同一方向の走行車線を想定しており、その仮想領域により検出される車両の進行方向は車両100と同一方向である。また、1回の処理サイクルの時間Δtは側方レーンを走行中の車両の移動速度に比べて充分短い時間を想定しており、時間Δtの間にその車両が移動する距離は仮想領域1つ分以下である。たとえば、その車両の移動速度を時速120kmとし、時間Δtを一般的なカメラのフレームレート時間33msとすると、その間にその車両が移動する距離は1.1mとなるが、このとき設定される仮想領域はこの距離1.1mよりも大きい。したがって前述のように、同一の仮想領域群で前方に隣接する仮想領域について同じ車両ラベルを付加することで、同一の車両に対して前回の処理サイクルにおいて付加されたものと同じ車両ラベルを付加することができる。なお、仮想領域を設定する実空間を車両100の対向車線とする場合には、後方に隣接する仮想領域について同じ車両ラベルを付加するようにする。これにより、同一の車両に対して前回の処理サイクルにおいて付加されたものと同じ車両ラベルを付加することができる。
なお1回目の処理サイクルのステップS20においては、すべての仮想領域に新規の車両ラベルを付加する。また、異なる仮想領域群の仮想領域に対して同一の車両ラベルが付加された場合には、後方(車両100により遠い方)の仮想領域群の仮想領域に対しては、新規の車両ラベルを付加する。このように、状態値が1である仮想領域にそれぞれ車両ラベルを付加することで、検出された車両100の周囲物体を車両単位で判別することができる。付加された車両ラベルは仮想領域マップMtに記録され、仮想領域マップMtが更新される。
ステップS21では、検出された周囲物体について、次の処理サイクルを実行する時刻t+Δtにおける車両100との相対位置を予測する。このとき、仮想領域群のうち一番前方の仮想領域の相対位置を、そのとき検出された周囲物体の相対位置とする。時刻tと時刻t−Δtにおいて、車両ラベルが同一である仮想領域群に対してこの周囲物体の相対位置の差を求めることにより、時間Δtの間に車両100に対して周囲物体が移動する移動量を求める。すなわち、時刻tにおける仮想領域33の相対位置と、時刻t−Δtにおける仮想領域32の相対位置との差により、この周囲物体の移動量が求められる。さらに、求められた周囲物体の移動量を時刻tにおける車両100との相対位置に加えることにより、時刻t+Δtにおける車両100との相対位置を予測する。
ステップS22では、ステップS21で予測した周囲物体の相対位置が、衝突予想範囲内にあるか否かを判定する。相対位置が車両100から所定距離以下である場合は、衝突予想範囲内にあると判定して、ステップS23へ進む。そうでない場合は、衝突予想範囲内にはないと判定して、図7のステップS4へ戻る。
ステップS23では、警報装置11を作動させ、運転者へ衝突の危険性があることを知らせる。ステップS23を実行した後は、図7のステップS4へ戻る。
上述した第1の実施の形態による周囲物体検出装置によれば、カメラ7により車両100の周囲を撮影し、その周囲の実空間上に実空間に固定された複数の仮想領域31〜38を設定し、その仮想領域31〜38を撮影した画像の情報に基づいて車両100の周囲の物体を検出するようにしたので、車両100の周囲の物体において、投影面の違いや周囲の影などによってその画像情報が変化しても、その物体を検出することができる。
またこの周囲物体検出装置によれば、次のようにして自車両周囲の物体を検出する。車両100の周囲の実空間に固定された仮想領域31〜38を設定する。車両100とこの仮想領域31〜38との相対的な位置関係を計算し、計算された位置関係に基づいて車両100の周囲を撮影した画像上に仮想領域31〜38に対応した領域21〜28を設定する。この画像上の領域21〜28の画像情報に基づいて仮想領域31〜38の特徴量を算出し、算出された特徴量に基づいて車両100の周囲の物体を検出する。これにより、実空間に固定された仮想領域による画像情報に基づいて自車両の周囲物体が検出されるので、自車両の周囲の物体において、投影面の違いや周囲の影などによってその画像情報が変化しても、その物体を検出することができる。
――第2の実施の形態――
本発明による周囲物体検出装置の第2の実施の形態について説明する。第2の実施の形態では、仮想領域の特徴量の算出方法を、第1の実施の形態とは異なる方法によって行う。第1の実施の形態では、実空間上の仮想領域に対応する画像上の領域を求め、この画像上の平均輝度値の変化によって特徴量を算出する方法を説明した。第2の実施の形態では、第1の実施の形態において用いる平均輝度値に代えて、輝度値のヒストグラムの変化を特徴量の算出に用いる。なお、第2の実施の形態における構成は、図1に示す第1の実施の形態と同じであるため、ここでは図示を省略する。
第2の実施の形態における処理の流れを示すフローチャートの一部を図10に示す。このフローチャートは、第1の実施の形態と同様に、CPU10で実行されるプログラムに基づくものであり、周囲物体検出装置1の動作時には常に実行されている。図10において、図7と同一のステップ番号にて示される処理ステップでは第1の実施の形態と同一の処理を行うため、ここでは説明を省略する。なお、図10のステップS17を実行した後は図8のステップS18〜S23と同一の処理を実行するため、ステップS18以降のフローチャートについては図示を省略する。
ステップS2Aでは、図7のステップS2と同様に、ステップS1で読み込んだ初期画像に対応する実空間上に初期の仮想領域を設定し、この仮想領域に対応する初期の画像上の領域を設定する。さらに、仮想領域にそれぞれID番号を割り振り、車両100と各仮想領域ごとの相対位置を算出する。このとき画像上の領域に対しては、図7のステップS2とは異なり、各領域ごとの輝度値のヒストグラムについて、その分散値(初期分散値)が次の式(2)によって計算される。式(2)において、S(n,t)は領域のID番号n、時刻tにおける分散値を表す。このステップS2Aでは、時刻0における初期分散値S(n,0)が計算される。
ただし、
N :着目する領域に含まれる総画素数
i :着目する領域に含まれる各画素の輝度値
I
min :着目する領域におけるiの最小値
I
max :着目する領域におけるiの最大値
μ :着目する領域に含まれる全画素の平均輝度値
h(i) :着目する領域に含まれる輝度値がiの画素数
ステップS8Aでは、図7のステップS8と同様に、新たな実空間上の仮想領域を、ステップS7で求めた移動量に応じて設定する。さらに、ここで設定した仮想領域についても、ステップS2Aで設定した仮想領域と同様に、ID番号を各仮想領域ごとに割り振るとともに、車両100とこれら各仮想領域ごとの相対位置を算出する。このとき、これらの仮想領域に対応する画像上の領域については、図7のステップS8とは異なり、上記の式(2)によって、各領域ごとに輝度値の分散値を計算する。
ステップS14Aでは、ステップS13で設定した画像上の領域について、上記の式(2)により、その領域の輝度値の分散値を算出する。算出された分散値は仮想領域マップMtに記録され、仮想領域マップMtが更新される。
ステップS15Aでは、ステップS14Aで算出した分散値と、1回前の処理サイクルのステップS14Aで算出された分散値との差分の絶対値を次の式(3)により求め、求められたD’(n,t)をその仮想領域の特徴量とする。式(2)において、S(n,t−Δt)は1回前の処理サイクルにおける分散値を表している。なお1回目の処理サイクルにおいては、S(n,t−Δt)に代えて、ステップS2Aで算出された初期分散値S(n,0)が用いられる。このとき、今回の処理サイクルのステップS8Aにおいて新たに設定された領域については、特徴量は0とする。算出された特徴量は仮想領域マップMtに記録され、仮想領域マップMtが更新される。この特徴量を用いて、第1の実施の形態と同様の方法によって、車両100の周囲の車両を検出する。
D’(n,t)=|S(n,t)−S(n,t−Δt)| (3)
上述した方法によって周囲車両を検出する例を、図11および12に示す。図11は、周囲車両がないときの例を示す図である。図11(a)に示す時刻tの時点において、実空間上の仮想領域120を画像に投影したときの輝度値のヒストグラムが、たとえば図11(c)に示すものであったとする。また、図11(b)に示す、時刻tより後の時刻t+αの時点において、実空間上の仮想領域120を画像に投影したときの輝度値のヒストグラムが、たとえば図11(d)に示すものであったとする。この場合、図11(c)と(d)に示す輝度値のヒストグラムは、仮想領域120に車両が進入していないため、ほとんど変化が見られない。このとき、図11(c)と(d)のヒストグラムに示される輝度値の分散値は、ヒストグラムに変化がないため、ほぼ同じ値となる。したがって、その分散値によって計算される仮想領域120における特徴量は小さく、車両は検出されない。
図12は、周囲車両が進入したときの例を示す図である。図12(a)に示す時刻tの時点において、実空間上の仮想領域120を画像に投影したときの輝度値のヒストグラムが、たとえば図12(c)に示すものであったとする。また、図12(b)に示す、時刻tより後の時刻t+αの時点において、実空間上の仮想領域120を画像に投影したときの輝度値のヒストグラムが、たとえば図12(d)に示すものであったとする。この場合、図12(b)において仮想領域120に車両101が進入していることにより、輝度値のヒストグラムが図12(c)から(d)に示すように大きく変化する。このとき、図12(c)と(d)のヒストグラムに示される輝度値の分散値は、ヒストグラムが大きく変化しているため、その値は大きく異なる。したがって、その分散値によって計算される仮想領域120における特徴量は大きくなり、これがしきい値を越えるときに車両101が検出される。
上記の例では、輝度値のヒストグラムの変化をその分散値の差によって判別することとしたが、その他の方法により判別してもよい。たとえば、ヒストグラムのピーク(頻度が最大となる点)における頻度と輝度値の差により判別することとしてもよい。
上述した第2の実施の形態による周囲物体検出装置によれば、第1の実施の形態と同様の作用効果を得ることができる。
――第3の実施の形態――
本発明による周囲物体検出装置の第3の実施の形態について説明する。本実施形態では、仮想領域の相対位置算出時において車両の移動量に含まれる離散化誤差により生じる周囲物体の誤検出を防ぐため、注目する仮想領域上の動き成分を特徴量として利用する方法を用いる。なお、本実施形態における構成は、図1に示す第1および第2の実施の形態と同じであるため、ここでは図示を省略する。
上記に説明した第1および第2の実施の形態では、左右それぞれの車輪からの車輪速パルス数より時間Δt間の車両の移動量Vtをデッドレコニングにより求め、その移動量Vtのデッドレコニング情報によって車両と仮想領域との相対位置を算出する例について説明した。しかし、車輪速パルスは車輪が所定数分の1回転するごとに出力される離散化された車輪の回転数を表すものであるため、この車輪速パルス数より計算される移動量Vtには、左右の車輪でそれぞれ1パルス以下の離散化(量子化)誤差が含まれることとなる。この離散化誤差によって、車両と仮想領域との相対位置に誤差が生じる。
車両の移動量Vtに含まれる離散化誤差によって生じる仮想領域の相対位置の誤差は、車両の進行方向に対する誤差成分と、車軸の傾き方向に対する誤差成分とに分けることができる。前者の誤差成分における最大の誤差量Efは1パルスあたりの車両の進行方向の移動量に相当するものであり、車輪の外周をw、1パルスあたりの車輪の回転数をrとすると、下記の式(4)によって表される。
Ef=w・r ・・・・・・(4)
上記の式(4)において、たとえば車輪の外周を187cmとし、さらに図1において説明したように1/88回転ごとに車輪速パルスが1つ出力されるとすると、車両の進行方向に対する最大誤差量Efは、187×1/88≒2cmとなる。このように、車両の進行方向に対する誤差成分の大きさは車両や仮想領域に比して小さいものであるため、上記に説明した周囲物体の検出処理に与える影響は小さい。
一方、後者の車軸の傾き方向に対する誤差成分では、左右の車輪による移動量の誤差がそれぞれ最大であり、かつ真値に対する誤差の正負が左右で逆となったときに最大の誤差量となる。この最大誤差量Eaは、すなわち2パルスあたりの車軸の傾き方向の移動量に相当するものであり、車両のトレッドをdとすると、下記の式(5)によって表される。
Ea=2・w・r/d ・・・・・・(5)
上記の式(5)において、たとえば車輪外周と車輪速パルス出力が前述した式(4)の例と同様であり、さらにこのときの車両のトレッドを142cmとすると、車軸の傾き方向に対する最大誤差量Eaは、2×187×1/88÷142≒0.030rad=1.72°となる。このとき、車両を基準とした仮想領域の相対位置において、たとえば車両の後方20mでは、約60cmの横位置のずれが生じる。なお、ここでいう横位置とは自車両の進行方向に対して垂直な方向であり、図13に示す自車両100を基準とした座標系におけるx軸方向に相当する。この横位置のずれの例を図14に示す。図14(a)は、時刻tにおいて計算された仮想領域31〜36の本来の位置を示す。これに対して、時刻t+Δtでは以上説明したような相対位置の誤差により、図14(b)に示すように横位置がずれて仮想領域31〜36と新たな仮想領域37が設定される。このとき、たとえば仮想領域34では、本来は含まれないはずの白線50が仮想領域内に含まれることとなる。
このように、デッドレコニング情報の離散化誤差により仮想領域の横位置に誤差が生じることによって、仮想領域内に本来ないはずの白線が含まれることがある。すると、この仮想領域において路面の輝度値が変化する。前述した第1および第2の実施の形態のように、仮想領域内の路面の輝度値の変化によって周囲の他車両を検出した場合には、この輝度値の変化が誤検出につながることとなる。
本実施形態では、このようなデッドレコニング情報の離散化誤差によって仮想領域の横位置に誤差が生じても誤検出を生じないようにするため、特徴量として自車両に向かう方向、すなわち図14のy軸方向における仮想領域上の動き成分を利用し、y軸方向に動き成分を検出すると、その仮想領域に自車両に向かう移動物があると判定することとする。このようにすると、仮想領域の横位置に誤差が生じた場合において、x軸方向には動き成分が現れるがy軸方向には現れないため、y軸方向の動き成分は検出されず、自車両に向かう移動物はないと判定される。これにより、デッドレコニング情報の離散化誤差による誤検出を防ぐことができる。なお、ここでいう動き成分とは対地速度ベクトルのことであり、自車両に対する相対速度とは異なる。そのため、相体速度の向きに関わらず、対地速度ベクトルが自車両の方向に向かっている物体を検出できる。
第3の実施の形態における処理の流れを示すフローチャートを図15に示す。このフローチャートは、第1および第2の実施の形態と同様に、CPU10で実行されるプログラムに基づくものであり、周囲物体検出装置1の動作時には常に実行されている。なお、図15において図7および8と同一のステップ番号にて示される処理ステップでは、第1の実施の形態と同一の処理を行うため、ここでは説明を省略する。
ステップS12Aでは、そのときの仮想領域マップMtに記録されている仮想領域全てについてカメラ7の観測範囲にあるか否かを判定し、観測範囲外に位置する仮想領域を仮想領域マップMtより削除する。このステップS12Aにおける観測範囲にあるか否かの判定は、ステップS12と同様に仮想領域マップMtに記録された仮想領域と車両100との相対位置により行われ、相対位置が一定値以上となったときに、その仮想領域は観測範囲にないと判定する。ここで削除された仮想領域の情報は、次回以降の処理サイクルにおいて作成される仮想領域マップには記録されない。なお、本実施形態で用いられる仮想領域マップは図9に示したものと同様の構造であるが、第1および第2の実施の形態で説明した車両ラベルについては、本実施形態の仮想領域マップには記憶されない。
ステップS13Aでは、そのときの仮想領域マップMtに記録されている仮想領域(ステップS10で相対位置を算出した仮想領域のうち、ステップS12Aで削除された仮想領域を除いたもの)全てに対応する画像上の領域を、ステップS13で説明したのと同様の方法により、ステップS5で取り込んだ画像上に設定する。なお、画像上の各領域の位置および形状は、ステップS13のときと同様に、対応する仮想領域に対して、ステップS10で算出されて仮想領域マップMtに記録された相対位置に基づいて投影処理を行うことにより、求めることができる。
ステップS14Bでは、ステップS13Aで画像上に設定した各領域について、それぞれの平均輝度値を算出する。このステップS14Bにおいて算出された平均輝度値を代表して、時刻tにおいて算出された領域のID番号がmの平均輝度値をI(m,t)と表す。以降の説明では、この平均輝度値I(m,t)を用いて説明を行う。なお、算出された平均輝度値は仮想領域マップMtに記録され、仮想領域マップMtが更新される。
ステップS15Bでは、ステップS14Bで算出された各領域の平均輝度値に基づいて、以下に説明する算出方法を用いて各仮想領域上における自車両に向かう動きの有無を算出する。まず、ステップS14Bで平均輝度値I(m,t)を算出したID番号mの領域について、前回の処理サイクル(時刻t−Δt)における平均輝度値との差分を下記の式(6)により求める。なお、以下ではこれを平均輝度値の時間微分値という。
Dt(m,t)=I(m,t)−I(m,t−Δt) ・・・・・・(6)
次に、このID番号mの領域に対応する仮想領域を注目仮想領域とする。たとえば、図16に示す仮想領域61を注目仮想領域とする。さらに、実空間上でこの注目仮想領域61の4近傍に位置する仮想領域62〜65のうち、自車両に一番遠いところに位置する仮想領域62を隣接仮想領域として、この隣接仮想領域62に対応する画面上の領域のID番号をm’とする。そして、今回の処理サイクル(時刻t)におけるID番号mの領域と設定されたID番号m’の領域との平均輝度値の差分を、下記の式(7)により求める。なお、以下ではこれを平均輝度値の空間微分値という。
Dm(m,m’,t)=I(m,t)−I(m’,t) ・・・・・(7)
さらに、上記の式(6)および(7)と同様にして、ID番号m’の領域における平均輝度値の時間微分値と、前回の処理サイクル(時刻t−Δt)における平均輝度値の空間微分値とを、下記の式(8)および(9)のように求める。なお、式(9)の前回の処理サイクルにおける平均輝度値の空間微分値は、今回の処理サイクルで求めずに、前回の処理サイクルにおいて式(7)で求められたものを用いるようにしてもよい。
Dt(m’,t)=I(m’,t)−I(m’,t−Δt) ・・・(8)
Dm(m,m’,t−Δt)
=I(m,t−Δt)−I(m’,t−Δt) ・・・・・・・・(9)
上記の式(6)および(8)で求められた平均輝度値の時間微分値から、下記の式(10)により、平均輝度値の時間微分値における注目仮想領域と隣接仮想領域との平均、すなわち平均輝度値の時間微分値についての空間平均を求める。また、式(7)および(9)で求められた平均輝度値の空間微分値から、下記の式(11)により、平均輝度値の空間微分値における今回処理サイクルと前回処理サイクルとの平均、すなわち平均輝度値の空間微分値についての時間平均を求める。
St(m,t)={Dt(m,t)+Dt(m’,t)}/2 (10)
Sm(m,m’,t)
={Dm(m,m’,t)+Dm(m,m’,t−Δt)}/2 (11)
さらに、上記の式(10)および(11)から、下記の式(12)により自車両に向かう方向の動き成分ベクトル(対地速度ベクトル)を算出し、このベクトルV(m,t)が0より大きいか否かを判定する。
V(m,t)=−St(m,t)/Sm(m,m’,t)>0 (12)
自車両に向かって走行する車両が注目仮想領域に存在するとき、このようにして算出された対地速度ベクトルV(m,t)は、次に説明するように、0より大きくなる。したがって、式(12)が満たされるときには、自車両に向かって走行する車両がその仮想領域に存在すると判定する。なお、式(12)の判定を行うに当たっては、先に式(11)に示す平均輝度値の空間微分値についての時間平均が所定のしきい値θより大きくなるか否かを判定し、これがしきい値θより大きくなったときに、式(12)の判定を行うようにすることが好ましい。このようにすることで、注目仮想領域61へその後方に位置する隣接仮想領域62から車両が進入してきたときに、対応する領域の平均輝度値の変化を検出することができる。
以下に、自車両に向かって走行する車両が注目仮想領域に存在するときに対地速度ベクトルV(m,t)が0より大きくなる理由を、図17に示す例を用いて説明する。はじめに、前述したデッドレコニングの誤差などによって注目仮想領域内に白線が含まれることで、仮想領域の平均輝度値に変化が生じた場合について説明する。このとき、図17(a)に示すように、時刻t−Δtにおいて、符号71に示す注目仮想領域mと符号72に示す隣接仮想領域m’には道路以外に何も含まれておらず、時刻tになると、それらの仮想領域に白線73が含まれるとする。
図17(a)に示す場合、時刻tにおいて、注目仮想領域mと隣接仮想領域m’には、ほぼ同じ割合で白線が含まれている。そのため、式(7)に示す平均輝度値の空間微分値Dm(m,m’,t)の値が0に近くなる。また、時刻t−Δtでは白線が含まれていないため、式(9)に示す平均輝度値の空間微分値Dm(m,m’,t―Δt)の値についても、ほぼ0となる。したがって、式(11)によりSm(m,m’,t)≒0となる。そのため、前述したように式(12)の判定を行うために所定のしきい値θを設定し、そのθを適切な値としておくことにより、このような場合にSm(m,m’,t)<θとなって、誤検出を防ぐことができる。
次に、自車両に向かって走行する車両が注目仮想領域に存在する場合について説明する。このとき、図17(b)に示すように、時刻t―Δtにおいて隣接仮想領域m’に車両74が含まれており、その後車両74が自車両に接近することによって、時刻tになると、注目仮想領域mと隣接仮想領域m’の両方に車両74が含まれるとする。以下、路面に比べて車両の輝度値が高い場合と、低い場合とに分けて説明を行う。
路面に比べて車両の輝度値が高い場合、時刻t―Δtよりも時刻tのときの方が、注目仮想領域m、隣接仮想領域m’ともに、その仮想領域中に占める車両の割合が大きく、その平均輝度値が高くなる。このことから、たとえば、時刻t−Δtにおいて、注目仮想領域mと隣接仮想領域m’の平均輝度値がそれぞれI(m,t−Δt)=100とI(m’,t−Δt)=150であり、時刻tにおいては、I(m,t)=150とI(m’,t)=200であったとする。このとき、式(6)〜(9)は以下のように計算される。
Dt(m,t)=50
Dt(m’,t)=50
Dm(m,m’,t)=−50
Dm(m,m’,t−Δt)=−50
上記の計算結果より対地速度ベクトルを算出すると、以下のようになり、式(12)が満たされる。
V(m,t)=−{(50+50)/2}/{(−50−50)/2}=1>0
一方、路面に比べて車両の輝度値が低い場合、時刻t―Δtよりも時刻tのときの方が、注目仮想領域m、隣接仮想領域m’ともに、その平均輝度値が低くなる。このことから、たとえば、時刻t−Δtにおける注目仮想領域mと隣接仮想領域m’の平均輝度値がそれぞれI(m,t−Δt)=150とI(m’,t−Δt)=100であり、時刻tにおいてI(m,t)=100とI(m’,t)=50であったとする。このとき、式(6)〜(9)は以下のように計算される。
Dt(m,t)=−50
Dt(m’,t)=−50
Dm(m,m’,t)=50
Dm(m,m’,t−Δt)=50
上記の計算結果より対地速度ベクトルを算出すると、以下のようになり、この場合にも式(12)が満たされる。
V(m,t)=−{(−50−50)/2}/{(50+50)/2}=1>0
次に、自車両と対向方向に走行する車両が注目仮想領域に存在する場合について説明する。このとき、図17(c)に示すように、時刻t―Δtにおいて注目仮想領域mに車両75が含まれており、その後車両75が自車両から遠ざかることによって、時刻tになると、注目仮想領域mと隣接仮想領域m’の両方に車両75が含まれるとする。この場合に上記と同様にして対地速度ベクトルを計算すると、路面に比べて車両の輝度値が高い場合と低い場合のいずれについても、V(m,t)<0となり、式(12)が満たされない。
以上説明したように、自車両に向かって走行する車両が注目仮想領域に存在するときのみ、対地速度ベクトルV(m,t)は0より大きくなり、式(12)を満たす。このことから、領域ID番号がmの領域について、対地速度ベクトルV(m,t)を算出することにより、自車両に向かう動きの有無を算出することができる。このようにすることで、第1および第2の実施の形態における図8のステップS18〜S20の処理、すなわち移動物が自車両に向かうか否かを判定するための処理が、本実施形態において不要となる。その結果、処理量の軽減を図ることができる。
上記の説明と同様にして、ステップS13Aで画像上に設定された全ての領域について対地速度ベクトルを算出し、これによって各仮想領域上における自車両に向かう動きの有無を算出する。このようにしてステップS15Bで算出された各領域の対地速度ベクトルの値は特徴量として仮想領域マップMtに記録され、仮想領域マップMtが更新される。
ステップS16Aでは、ステップS15Bで算出された各仮想領域上における自車両に向かう動きの有無により各仮想領域の状態値を求め、これを仮想領域マップMtに記録する。このとき、自車両に向かう動きが算出された仮想領域、すなわち前述のようにして算出された対地速度ベクトルが0より大きい仮想領域については、その状態値を1とする。それ以外の仮想領域については、状態値を0とする。ステップS16Aの実行後はステップS22を実行し、さらにステップS22が肯定判定された場合にはS23を実行して、ステップS4へ戻る。
以上説明した第3の実施の形態によれば、注目仮想領域と対応する領域について、平均輝度値の時間微分値を式(6)により算出する。また、注目仮想領域と、その注目仮想領域に実空間上で自車両の一番遠い位置に隣接する隣接仮想領域とについて、空間微分値を式(7)により算出する。そして、算出された平均輝度値の時間微分値および空間微分値に基づいて、式(12)により注目仮想領域の対地速度ベクトルを算出する。さらに、この対地速度ベクトルを全ての仮想領域について算出することにより、仮想領域の特徴量を算出する(ステップS15B)。そして、算出された特徴量に基づいて、各仮想領域の状態値を求める(ステップS16A)。このようにしたので、第1および第2の実施の形態と同様の作用効果が得られる。さらに、デッドレコニング情報の離散化誤差によって仮想領域の横位置に誤差が生じ、仮想領域内に本来ないはずの白線などが含まれる場合において、誤検出を生じないようにすることができる。
以上の実施の形態では、たとえば撮影手段をカメラ7で実現し、車両運動検出手段を車両センサ8で実現し、移動量算出手段、仮想領域設定手段、相対位置算出手段、投影処理手段、画像領域設定手段、特徴量算出手段、および周囲物体検出手段をCPU10で実現している。しかし、これらはあくまで一例であり、本発明の特徴が損なわれない限り、各構成要素は上記実施の形態に限定されない。