以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値などは、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書及び図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
(環境認識システム100)
図1は、環境認識システム100の接続関係を示したブロック図である。環境認識システム100は、自車両1内に設けられた、撮像装置110と、車外環境認識装置120と、車両制御装置(ECU:Engine Control Unit)130とを含んで構成される。
撮像装置110は、広角(広画角)レンズ、および、CCD(Charge-Coupled Device)やCMOS(Complementary Metal-Oxide Semiconductor)等の撮像素子を含んで構成され、自車両1の前方において、水平より少し下方に向けて設けられる。撮像装置110は、自車両1の前方に相当する環境を撮像し、3つの色相(R(赤)、G(緑)、B(青))からなるカラー画像やモノクロ画像を生成することができる。ここで、広角レンズは、標準レンズに比べ画角(視野角)が比較的広い(例えば、120度以上)、または、焦点距離が比較的短いレンズをいい、例えば、広角レンズとして魚眼レンズを用い、撮像装置110を中心とする半球状に広がる空間を撮像することができる。なお、本実施形態の撮像装置110の射影方式は、立体射影を用いているが、例えば、透視射影等、既存の様々な射影方法を採用することができる。ここでは、広角レンズとして魚眼レンズを用いる例を挙げて説明するが、円錐状(アキシコン)プリズム等、様々な広角レンズを用いることもできる。また、レンズの画角を120度以上としたのは、十字路またはT字路において、自車両1が停止線に停止した場合に、直交する道路の状況まで適切に把握するためである。
図2は、撮像装置110で生成される画像を説明するための説明図である。図2を参照して理解できるように、撮像装置110で生成された画像(以下、「環境画像」という。)200は、円周魚眼レンズを通じて、画像の中心からの距離に対して角度が単調増加するように描かれている(立体射影方式)。したがって、自車両1の走行方向の画像の分解能を維持しつつ、広範囲の環境画像200を一度に取得することができる。
また、撮像装置110は、環境画像200をデータ化した画像データを、例えば1/10秒毎(10fps)に連続して生成する。以下の実施形態における各機能部は、このような画像データの更新を契機として各処理を遂行する。したがって、各機能部は、フレーム単位で処理を繰り返すこととなる。
車外環境認識装置120は、撮像装置110から、環境画像200を示す画像データを取得し、所謂、パターンマッチングを用いて、オプティカルフローに基づくフローベクトルを導出する。フローベクトルは、画像のエッジ部分(隣り合う画素間で明暗の差分が大きい部分)で特定され易いので、フローベクトルが導出されたブロックは、環境画像200においてもエッジとなっていることが多い。ただし、車外環境認識装置120では、環境画像200中の必要な部分のみ切り出した部分画像を利用してフローベクトルを導出する。
図3は、部分画像202を説明するための説明図である。上述したように、図2に示した環境画像200では、広画角の画像を一度に取得できるので、自車両1の前方のみならず、左右いずれかの方向(水平方向)から接近する移動物も特定することが可能となる。しかし、環境画像200では、画像の中心からの距離と角度がおよそ比例するので、中心からの距離が離れるほど、画像が歪むこととなる。例えば、図2の環境画像200における4つの角に近い領域では、実際には水平に延びている物が、環境画像200では湾曲して表示され、その端部は垂直方向にも延びているように視認できる。ここで、「水平」は、撮像した環境画像200の画面横方向を示し、実空間上の水平方向に相当する。また、「垂直」は、撮像した環境画像200の画面縦方向を示し、実空間上の鉛直方向に相当する。
そこで、車外環境認識装置120は、図2に示した環境画像200のうち、交通環境において特定すべき移動物が存在する、図2中破線で示した領域、すなわち、歪みの少ない環境画像200の中央領域と、その水平方向左右の領域とを合わせた、図3に示す部分画像202を切り出す。そして、その部分画像202に対してオプティカルフローに基づくフローベクトルを導出する。
続いて、車外環境認識装置120は、近似するフローベクトル同士をグループ化して移動物を特定し、移動物の大きさおよびその速度(フローベクトルの大きさ)に基づいて、移動物の種別を判定する。ここで、移動物は、車両、自転車、歩行者といった独立して移動する物である。また、移動物に対応する静止物は、建物、道路、ガードレール、背景空間といった物を示す。また、車外環境認識装置120は、図1に示す、自車両1の移動速度を検出する速度センサ124、および、自車両1が旋回した際の鉛直軸を中心とした角速度を検出する角速度センサ126を通じて静止物のフローベクトルを推定する。
車外環境認識装置120は、例えば、水平方向に高速に移動している移動物を先行車両と認識する。また、車外環境認識装置120は、特定した移動物と衝突する可能性が高いか否かの判定を行うことができる。ここで、衝突の可能性が高いと判定した場合、車外環境認識装置120は、その旨、ディスプレイ122を通じて運転者に報知するとともに、車両制御装置130に対して、その旨を示す情報を出力する。かかる車外環境認識装置120の処理に関しては、後ほど詳述する。
車両制御装置130は、車外環境認識装置120で特定された移動物との衝突を回避する。具体的に、車両制御装置130は、操舵の角度を検出する舵角センサ132や、上述した速度センサ124等を通じて現在の自車両1の走行状態を取得し、アクチュエータ134を制御して先行車両との車間距離を安全な距離に保つ。ここで、アクチュエータ134は、ブレーキ、スロットルバルブ、舵角等を制御するために用いられる車両制御用のアクチュエータである。また、車両制御装置130は、移動物との衝突が想定される場合、アクチュエータ134を制御して自車両1を自動的に制動する。かかる車両制御装置130は、車外環境認識装置120と一体的に形成することもできる。
(フローベクトルによる移動物の判定処理)
図4および図5は、本実施形態のオプティカルフローのフローベクトルによる移動物の判定処理を説明するための説明図である。ここでは、従来の問題点と比較しつつ本実施形態の特徴を説明する。
仮に、図4(a)に示すように自車両1が旋回を伴うことなく直進しているときに、図3に示した部分画像202に対してフローベクトルを導出すると、フローベクトルは、図4(b)のように複数の矢印で示される。かかる矢印の長さがフローベクトルの大きさ、矢印の向きがフローベクトルの向きを示す。また、フローベクトルは、本来、導出単位であるブロックと同数あるが、ここでは、理解を容易にするためフローベクトルの数を制限して表している。
フローベクトルは、画像中の特徴点の移動によって生成されるので、図4を参照して理解できるように、自車両1の移動に伴い、移動物2のみならず、静止物3にもフローベクトルが生じる。また、本実施形態では、広角レンズが用いられているので、部分画像202の中心と比較して側方にずれるに連れて、静止物3のフローベクトルの大きさが大きくなっているのが分かる。
このような静止物3のフローベクトルの水平方向の向きが左右で反転する部分画像202上の部位(境界)は、図4(b)に示すように垂直に延びる破線で示した線分上に出現する。本実施形態では、かかる線分を、移動物2の判定基準に用いる判定基準線204とする。判定基準線204は、撮像装置110を自車両1の前方先端かつ車幅方向の中央に位置させ、撮像方向を進行方向と等しくなるように設置した場合に、図4(b)に示すように部分画像202の水平方向に対して中央に位置することとなる。ただし、撮像装置110の位置や撮像方向が異なると、判定基準線204が、必ずしも部分画像202の水平方向に対して中央に位置するとは限らない。いずれにしても、自車両1が直進した場合に生じる静止物3のフローベクトルの水平方向の向きが左右で反転する境界線を判定基準線204とすればよい。
このとき、図4(b)に示した部分画像202を、判定基準線204を基準に、左側領域と右側領域とに分けると、静止物3のフローベクトルが判定基準線204から遠ざかる方向に生じるのに対し、接近する移動物2のフローベクトルは判定基準線204に近づく方向に生じているのが分かる。
したがって、判定基準線204に従って水平方向に領域を二分し、左側領域において右方向を向いているフローベクトル、または、右側領域において左方向を向いているフローベクトルを検出し、それらを移動物2として特定することができる。
しかし、図5(a)に示すように、自車両1が旋回を伴いながら進行する場合、フローベクトルは、図5(b)のように表される。ここでは、一点鎖線で示した領域206内の静止物3が判定基準線204の右側領域に存在するにも拘わらず、静止物3のフローベクトルが判定基準線204に近づく方向に生じている。これは、自車両1の直進時には、フローベクトルの水平方向の向きが左右で反転する位置が、前方の消失点(無限遠)と一致するが、自車両1の旋回時には、自車両1の移動速度および角速度ならびに静止物3との距離によって反転する位置が水平方向に変化することに起因する。
すると、一点鎖線で示した領域206内のフローベクトルは、それが移動物2のものであるか静止物3のものであるかに拘わらず、移動物2として誤判定されてしまう。この場合に、旋回の内側に相当する領域、すなわち、右側領域において移動物2の判定を行わないとすることも可能であるが、その領域に存在する移動物2を検知できなくなるので、衝突のリスクを高めるおそれがある。
そこで、移動物2を適切に判断するために、まず、静止物3のフローベクトルを正しく推定し、そのフローベクトルを補正フローベクトルとし、部分画像202上で検出されたフローベクトルから減算する。こうすることで静止物3に生じるフローベクトルを相殺(フローベクトルの長さ0)することができ、移動物2のフローベクトルのみを残すことが可能となる。
しかし、自車両1の移動により静止物3に生じるフローベクトルの大きさや向きを正確に推定するためには、自車両1の移動速度および角速度のみならず、自車両1から静止物3までの距離も必要となる。このような静止物3までの距離は、ステレオカメラを用い3点測位法に基づく演算を行ったり、レーザレーダを用いたりすることで導出できるが、そのような装置を設けるのにコストが増大し、また、計算が煩雑になって処理負荷が高まる。
そこで、本実施形態においては、静止物3までの距離を敢えて導出せず、静止物3までの距離の最大値と最小値を想定して、静止物3は、全て、最小値から最大値のいずれかの位置に存在するとする。そして、自車両1の移動速度および角速度から、自車両1の旋回によって静止物3に生じうるフローベクトルの変動範囲を推定し、補正フローベクトルを適切に選択して、部分画像202上で検出されたフローベクトルから減算する。こうすることで、少なくとも、静止物3のフローベクトルが判定基準線204に近づく方向に生じることがなくなり(誤検出を回避でき)、判定基準線204に近づく方向に生じたフローベクトルを全て移動物2として特定することが可能となる。本実施形態では、このように、自車両1が旋回した場合であっても、移動物2を適切に検出し、その検出精度の向上を図ることを目的とする。
以下に、このような処理を実現するための車外環境認識装置120を具体的に説明し、その後で、車外環境認識方法について詳述する。
(車外環境認識装置120)
図6は、車外環境認識装置120の概略的な機能を示した機能ブロック図である。図6に示すように、車外環境認識装置120は、I/F部150と、データ保持部152と、中央制御部154とを含んで構成される。
I/F部(画像データ取得部)150は、撮像装置110や車両制御装置130との双方向の情報交換を行うためのインターフェースであり、例えば、撮像装置110で生成された画像データを取得する。また、I/F部150は、速度センサ124や加速度センサ126から、移動速度および加速度を取得する。データ保持部152は、RAM、フラッシュメモリ、HDD等で構成され、以下に示す各機能部の処理に必要な様々な情報を保持する。また、本実施形態においては、フローベクトルの導出処理におけるパターンマッチングのため、画像データを、少なくとも次のフレームまで一時的に保持する。ここで、データ保持部152に記憶された前回のフレームにおける画像データを「前回画像データ」といい、今回のフレームにおける画像データを「今回画像データ」という。また、移動速度および角速度と補正フローベクトルとを対応付けた、後述する補正テーブルを予め保持することもできる。
中央制御部154は、中央処理装置(CPU)、プログラム等が格納されたROM、ワークエリアとしてのRAM等を含む半導体集積回路で構成され、システムバス156を通じて、I/F部150やデータ保持部152を制御する。また、本実施形態において、中央制御部154は、画像切出部160、フローベクトル導出部162、移動状態取得部164、補正フローベクトル生成部166、フローベクトル減算部168、グループ化部170、移動物判定部172、衝突判定部174、報知部176、画像保持部178としても機能する。
画像切出部160は、I/F部150が取得した今回画像データに基づく図2に示したような環境画像200から、予め定められた位置および大きさの図3に示したような部分画像202を切り出す。
フローベクトル導出部162は、所謂、パターンマッチングを通じて、画像切出部160が切り出した部分画像202の任意の部位におけるフローベクトルを導出する。
図7および図8は、フローベクトル導出部162の処理を説明するための説明図である。フローベクトル導出部162は、データ保持部152に記憶された前回画像データに基づく図7(a)に示した部分画像202から任意に抽出したブロック(ここでは水平8画素×垂直8画素の配列で構成される)210aに対応する(相関値の高い)ブロック210bを、今回画像データに基づく図7(b)に示した部分画像202から検出する(パターンマッチング)。このとき前回画像データに対応するブロック210aから今回画像データに対応するブロック210bまでの、図7(b)中、矢印で示す移動軌跡がオプティカルフローにおけるフローベクトルとなる。
かかるパターンマッチングとしては、前回画像データおよび今回画像データ間において、任意の画像位置を示すブロック単位で輝度値を比較することが考えられる。例えば、輝度値の差分をとるSAD(Sum of Absolute Difference)、差分を2乗して用いるSSD(Sum of Squared intensity Difference)や、各画素の輝度値から平均値を引いた分散値の類似度をとるNCC(Normalized Cross Correlation)等の手法がある。車外環境認識装置120は、このようなブロック単位のフローベクトル導出処理を部分画像202(例えば、640画素×128画素)に映し出されている全てのブロックについて行う。
ブロック内の画素数は任意に設定することができるが、ここでは、ブロックを水平8画素×垂直8画素としている。
このようにして、フローベクトル導出部162は、前回画像データに対応する部分画像202の例えば車両に相当する移動物2に対して図8の如くフローベクトルを導出することができる。
移動状態取得部164は、広角レンズを有する撮像装置110の移動状態を取得する。なお、撮像装置110の移動状態を直接測定するとしてもよいが、本実施形態では、撮像装置110を固定し、撮像装置110とほぼ同一の移動軌跡で移動する自車両1の移動状態を撮像装置110の移動状態として用いることとする。また、移動状態は、自車両1の直進方向の移動速度と、旋回方向の角速度で表すことができるので、ここでは、移動状態として自車両1の移動速度および角速度を取得している。ただし、移動状態を特定する手段はかかる場合に限らず、移動速度および舵角等、様々なパラメータに基づいて特定することができる。
補正フローベクトル生成部166は、広角レンズから相異なる2つの距離にある2つの静止物3を仮定し、移動状態(ここでは、移動速度および角速度)に基づいて2つの静止物3のフローベクトルを推定する。
ここでは、まず、2つの距離にある2つの静止物3を仮定する理由を説明し、2つの静止物3のフローベクトルから補正フローベクトルを生成した場合の作用を詳述する。
(2つの距離にある2つの静止物3を仮定する理由)
静止物3のフローベクトルは、自車両1が直進する移動速度、および、旋回する角速度の影響を受ける。
図9は、自車両1が直進する場合の移動速度の影響を説明するための説明図であり、図10は、自車両1が旋回する場合の角速度の影響を説明するための説明図である。
自車両1が移動速度Aで直進している場合、自車両1から比較的遠い位置にある静止物3aおよび自車両1から比較的近い位置にある静止物3bは、相対速度Aで自車両1に近づいていることになり、その相対速度Aの相対移動が部分画像202に投影されてフローベクトルとなる。図9に示すように、静止物3aと静止物3bとは同一の相対速度Aであるにも拘わらず、その距離が異なることからフローベクトルの長さが異なり、自車両1から比較的遠い位置にある静止物3aのフローベクトルは、自車両1から比較的近い位置にある静止物3bのフローベクトルより短くなる。
また、フローベクトルの向きは、撮像装置110が自車両1の前方先端かつ車幅方向の中央に位置している場合、図9のように、部分画像202における判定基準線204より静止物3が左側にある場合は左向きになり、静止物3が判定基準線204より右側にある場合は右向きとなる。
一方、図10に示すように、自車両1が角速度Bで旋回している場合、自車両1から比較的遠い位置にある静止物3aおよび自車両1から比較的近い位置にある静止物3bは、相対角速度Bで自車両1と相対回転していることになり、その相対角速度Bの相対回転が部分画像202に投影されてフローベクトルとなる。したがって、静止物3aと静止物3bとは、同一の相対角速度Bによる同一のフローベクトルが生じることとなる。
図9および図10を参照すると、自車両1が直進する移動速度Aの影響による静止物3のフローベクトルは、自車両1の移動速度Aおよび静止物3との距離に基づいて導出することができ、また、自車両1が旋回する角速度Bの影響による静止物3のフローベクトルは、自車両1の角速度Bに基づいて導出することができる。しかし、上述したように、自車両1の移動速度Aおよび角速度Bは、移動状態取得部164によって容易に取得することができるが、静止物3までの距離は容易に導出できない。
そこで、本実施形態では、静止物3までの距離の概念を以下のように取り扱う。すなわち、静止物3が、想定される最大距離と最小距離との間のいずれにあるかについては言及しない。したがって、静止物3が想定される最大距離と最小距離との間のいずれに存在するとしても、自車両1が移動することによる静止物3のフローベクトルへの影響、特に、判定基準線204に向かう静止物3のフローベクトルの出現を抑制する。したがって、移動速度が低い移動物2が検出されない可能性は残るものの、静止物3を移動物2として誤検出してしまうのを確実に回避することができる。
図11、図12、図14および図15は、フローベクトルの推移を示した説明図であり、図13は、補正フローベクトルの効果を示した説明図である。補正フローベクトル生成部166は、まず、静止物3が想定される最も近距離にある場合と、想定される最も遠距離にある場合の2つの静止物3を仮定し、自車両1の移動状態(移動速度および角速度)に基づいて、2つの静止物3のフローベクトルを導出する。例えば、自車両1の移動速度が7km/hであり、角速度が+15deg/s(右旋回)であった場合に、補正フローベクトル生成部166が、上記移動条件に基づき、空間座標内で計算すると、遠距離の静止物3aと近距離の静止物3bのフローベクトルは、図11のような推移を示すこととなる。
図11は、部分画像202のうち、地面と静止物3の境界に相当する垂直位置における部分画像202全体の水平方向の位置を横軸とし、各部位のフローベクトルを縦軸としている。ここで、フローベクトルの長さは縦軸の大きさで示され、フローベクトルの向きは、右方向が正、左方向が負で示される。また静止物3は、旋回前の自車両1の向きと直交し、車両前方における所定の距離にある平面状の壁として当該計算を行っている。ただし、静止物3の定義はかかる場合に限らず、自車両1の向きと平行な左右の壁面を加えてもよいし、撮像装置110から等距離にある円形の壁としてもよい。
図11を参照して理解できるように、遠距離の静止物3aは、自車両1が直進する移動速度の影響が少なく、ほぼ、自車両1が旋回する角速度の影響を受けるため、フローベクトルが負(左方向)の固定値になる。一方、近距離の静止物3bは、遠距離の静止物3a同様、自車両1が旋回する角速度の影響を受けて、フローベクトルが負にオフセットするものの、自車両1が直進する移動速度の影響を受けて、水平方向の比較的右側で正方向のフローベクトルが得られ、水平方向の比較的左側で負方向のフローベクトルが得られる。これは、上述したように、広角レンズが用いられているので、部分画像202の中心と比較して側方にずれるに連れて、静止物3のフローベクトルの大きさが大きくなることに起因する。
ただし、近距離の静止物3bのフローベクトルも、水平方向の左右端部において、遠距離の静止物3aと同等のフローベクトルに収束している。これは、上述したように、静止物3として、旋回前の自車両1の向きと直交し、車両前方における所定の距離にある平面状の壁を想定しているため、部分画像202の両端では、撮像装置110の光軸方向とのなす角が大きくなって静止物3までの距離が遠くなり、遠距離の静止物3aとフローベクトルが等しくなるからである。したがって、水平方向の左右両端では、近距離の静止物3bも自車両1が直進する移動速度の影響が小さくなり、ほぼ、自車両1が旋回する角速度の影響を受けることとなる。なお、静止物3として、平面状の壁ではなく、撮像装置110から等距離にある球面を想定した場合、遠距離の静止物3aと近距離の静止物3bとが水平方向の左右両端において同一のフローベクトルには収束しない。
また、上記では、遠距離の静止物3aのフローベクトルは負の固定値となると説明したが、実際のフローベクトルは、水平位置の端部において負の方向に凹状に推移している。これは、広角レンズによる立体射影を用いている特性上、部分画像202の端の方が中心部より、旋回に伴う静止物3の移動距離が長くなり、その結果、部分画像202の両端でフローベクトルが拡大されるからである。
ここで、図11を全体的に観察すると、静止物3が比較的近距離に存在する場合、近距離の静止物3bのフローベクトルが生じ、静止物3のフローベクトルの水平方向の向きが左右で反転する部位(境界)が図11中破線で示した位置に生じる。仮に、旋回における角速度が15deg/sより大きかったとすると、かかる反転部位は、水平方向の右方向にシフトする。逆に、角速度が15deg/sより小さいと、水平方向の左方向にシフトし、中央の判定基準線204に近づくこととなる。
このような部分画像202に存在しうる静止物3は、全て、想定される最も近距離から最も遠距離の間に存在するので、ここでは、近距離の静止物3bと遠距離の静止物3aのみを考慮することで、その間にある全ての静止物3を考慮したことになる。
(2つの静止物のフローベクトルから補正フローベクトルを生成した場合の作用)
続いて、静止物3と移動物2との関係を述べる。図11の右側領域のみに着目した図12(a)を参照すると、ここでは、静止物3の実際の距離に言及していないので、静止物3は、図12(a)においてハッチングで示した領域内のいずれかに存在することとなる。ハッチングで示した領域に存在する静止物3は、判定基準線204の右側領域において一部を除き左方向のフローベクトルとなり、その静止物3は移動物2として判定されてしまう。このような誤検出を回避すべく、右側領域全てを予め検出の対象外として排除してしまうと、例えば、実際に存在する移動物2aを検出できなくなる。
そこで、誤検出される可能性のある静止物3のフローベクトルの最大量、すなわち、相対的に、判定基準線204に向かうスカラー量が大きいフローベクトルを補正フローベクトルとし、図12(b)のように、その分だけフローベクトル全体を右方向にオフセットする。こうすることで、少なくとも、静止物3のフローベクトルが判定基準線204に近づく方向に生じることがなくなる。
また、静止物3のフローベクトルの最大量以上の大きさを持つ移動物2aは、補正フローベクトルのオフセットだけでは、フローベクトルの方向が変化しないため(左方向が維持されるので)、図12(b)の如く、左方向のフローベクトルとして把握され、移動物2aとして特定される。
例えば、図13の例では、補正フローベクトルのオフセット前の図13(a)において一点鎖線で示したように、判定基準線204の右側領域において、静止物3であるにも拘わらず左方向のフローベクトルとなる部分が存在するが、補正フローベクトルのオフセットを行った後の図13(b)では、それらも右方向のフローベクトルとなり、左方向のフローベクトルは、真に左方向に移動している移動体2aのみとなる。こうして、少なくとも静止物3を移動物2と誤検出するのを回避し、左方向のフローベクトルを全て移動物2として抽出することができる。
また、図11の左側領域のみに着目した図14(a)を参照すると、遠距離の静止物3aであるか近距離の静止物3bであるかに拘わらず、静止物3は、少なくとも図14(a)においてハッチングで示した領域内に存在し、判定基準線204の左側領域において、ある程度の長さを有する左方向のフローベクトルとなってしまう。このような自車両1の移動は、静止物3のみならず、移動物2にも影響を与えてしまう。例えば、移動物2bが、本来、右方向のフローベクトルを有していたとしても、自車両1の移動によって左方向のフローベクトルに相殺され、移動物2bも左方向のフローベクトルとなって、移動物2として判定されなくなってしまう。
そこで、静止物3が影響を受けるフローベクトルの最小量、すなわち、相対的に、判定基準線204と反対方向に向かうスカラー量が小さいフローベクトル(ここでは遠距離の静止物3aのフローベクトル)を補正フローベクトルとし、図14(b)のように、その分だけフローベクトル全体を右方向にオフセットする。
ここで、仮に、近距離の静止物3bのフローベクトルを採用すると、近距離と遠距離との間にある静止物3を近距離の静止物3bのフローベクトル分オフセットしてしまうことになり、近距離と遠距離との間にある静止物3が右方向のフローベクトルとなって、移動物2として誤検出されてしまうこととなる。したがって、上記のように遠距離の静止物3aのフローベクトルを採用する。
こうすることで、左側領域全てに追加されている左方向のフローベクトルのオフセットを排除することができ、自車両1の移動の影響を最小限に抑えることが可能となる。
こうして、自車両1の移動の影響を受けてフローベクトルが反転していた移動物2bも、最低限のオフセットを受けて、右方向のフローベクトルとなり、図14(b)の如く、右方向のフローベクトルとして把握され、移動物2bとして特定される。
例えば、図13の例では、補正フローベクトルのオフセット前の図13(a)においては、判定基準線204の左側領域において、移動物2bのフローベクトルが左方向となり、それを移動物2bとして特定することができないが、補正フローベクトルのオフセットを行った後の図13(b)では、移動物2bのフローベクトルが右方向となり、真に右方向に移動している移動体2bとして特定することができる。
このように、補正フローベクトル生成部166は、近距離と遠距離の2つの距離のフローベクトルを推定し、推定した2つのフローベクトルのうち、相対的に、判定基準線204に向かうスカラー量が大きい、または、判定基準線204と反対方向に向かうスカラー量が小さいフローベクトル、すなわち、判定基準線204の左側領域では、右向き最長または左向き最短のフローベクトルを、判定基準線204の右側領域では、左向き最長または右向き最短のフローベクトルを補正フローベクトルとする。
このようにして導き出された補正フローベクトルは、左側領域と右側領域を連続させると、図15(a)に実線で示したように表すことができる。ここで、静止物3のフローベクトルは、ハッチングで示した範囲内に収まる。かかる補正フローベクトルで、部分画像202全体のフローベクトルをオフセットすると、図15(b)のようになる。このとき、右側領域では、全ての静止物3のフローベクトルを右向きのフローベクトルとすることができ、静止物3を移動物2として誤検出するのを回避でき、また、ある程度の移動速度を有する移動物2を検出することが可能となる。また、左側領域では、全ての静止物3のフローベクトルが右向きとならない範囲、すなわち、静止物3が移動物2と誤検出されない範囲でオフセットされ、自車両1の移動により埋もれてしまった移動物2のフローベクトルを適切に検出することが可能となる。
ただし、補正フローベクトルは、自車両1の移動速度および角速度から一義的に導出されるものなので、毎回計算しなくとも、移動速度および角速度に応じて、補正テーブルから抽出することができる。この場合、移動速度と角速度とに基づいて補正フローベクトルを予め計算しておき、移動速度および角速度と補正フローベクトルとを対応付けた補正テーブルを生成し、データ保持部152に保持させる。かかる補正テーブルでは、移動速度1km間隔(範囲1〜15km/h)、角速度1deg間隔(範囲−30〜30deg/s)の分解能で補正フローベクトルを準備する。かかる分解能より高い分解能で補正フローベクトルを導出する場合、複数の補正フローベクトルを用いて線形補間を行うこともできる。また、補正フローベクトルを減算することで、静止物3が移動物2として誤検出されないように補正フローベクトルを選択することも可能である。そして、補正フローベクトル生成部166は、移動状態取得部164が取得した移動速度と角速度に応じて、データ保持部152の補正テーブルを参照し、補正フローベクトルを抽出する。
フローベクトル減算部168は、フローベクトル導出部162が導出したフローベクトルから、補正フローベクトル生成部166が生成した補正フローベクトルを減算する。こうして、補正フローベクトル分のオフセットが行われ、静止物3を移動物2と誤検出せず、かつ、移動物2の検出精度が高められる。
グループ化部170は、フローベクトル導出部162が導出した判定基準線204により領域を左側領域と右側領域に分割し、フローベクトル減算部168が減算したフローベクトルから、左側領域において右方向に向くフローベクトル、または、右側領域において左方向に向くフローベクトルを抽出する。そして、抽出したフローベクトルのうち、隣接するブロック同士のフローベクトルを順次比較し、フローベクトルの方向およびその大きさが近似する(例えば、方向が±45度以内かつ大きさの差分が16画素以内である)ブロックをグループ化する。そして、グループ化したブロック群を移動物2として特定する。例えば、図8に示したフローベクトルは、右側領域において左方向に向いており、互いに近似しているので、対象となるブロックをグループ化し、移動物2として特定することができる。
移動物判定部172は、グループ化部170がグループ化したブロック群の接地位置、大きさ、および、そのブロック群の速度に応じて、そのブロック群を構成する移動物2の位置、進行方向および速度を判定する。例えば、図8に示したフローベクトルが近似するブロック群を自車両1と直交する方向に移動する物体であると判定する。
衝突判定部174は、自車両1の進行方向および速度と、特定した移動物2の位置、進行方向および速度とに応じて、自車両1と当該移動物2が衝突する可能性が高いか否か判定する。かかる衝突判定については、既存の様々な技術を適用することが可能なので、ここではその詳細な説明を省略する。
報知部176は、衝突判定部174が衝突の可能性が高いと判定した場合、ブザー(音声出力手段)や警告灯(ディスプレイ122)を通じて、その旨、運転者に報知する。また、I/F部150を通じて、車両制御装置130に、その旨を示す情報を出力する。
画像保持部178は、データ保持部152の前回画像データに今回画像データを上書きする。こうして次のフレームでは、かかる今回画像データを前回画像データとして用いることができる。
(車外環境認識方法)
以下、車外環境認識装置120の具体的な処理を図16〜図21のフローチャートに基づいて説明する。図16は、撮像装置110から広角レンズを通じて撮像された画像データが送信されたときの割込処理に関する全体的な流れを示し、図17〜図21は、その中の個別のサブルーチンを示している。また、ここでは、処理の対象部位として、画像内の画素またはブロックを挙げている。
当該車外環境認識方法による割込が発生すると、I/F部150は、撮像装置110から送信された今回画像データを取得する(S300)。そして、画像切出部160は、取得した今回画像データに基づく環境画像200(例えば、水平640画素×垂直480画素)から予め定められた位置および大きさの部分画像202(例えば、水平640画素×垂直128画素:水平80ブロック×垂直16ブロック)を切り出し(S302)、フローベクトル導出部162は、部分画像202における複数のフローベクトルを導出する(S304)。
続いて、移動状態取得部164は、その時点の自車両1の移動速度および角速度を取得し(S306)、補正フローベクトル生成部166は、移動速度および角速度に基づいて、広角レンズから相異なる2つの距離(想定される最も近距離および最も遠距離)にある2つの静止物3のフローベクトルを推定し、1の補正フローベクトルを生成する(S308)。フローベクトル減算部168は、導出されたフローベクトルから補正フローベクトルを減算する(S310)。グループ化部170は、判定基準線204に基づいて移動物2を示すフローベクトルをグループ化する(S312)。そして、移動物判定部172は、グループ化部170がグループ化したブロック群の大きさ、および、そのブロック群の速度に応じて、そのブロック群を構成する移動物2の位置、進行方向および速度を判定する(S314)。
衝突判定部174は、自車両1の進行方向および速度と、特定した移動物2の位置、進行方向および速度とに応じて、自車両1と移動物2が衝突する可能性が高いか否か判定する(S316)。その結果、移動物2と衝突する可能性が高いと判定すると(S316におけるYES)、報知部176は、衝突の可能性が高い旨、運転者に報知するとともに、車両制御装置130に、その旨を示す情報を出力する(S318)。また、移動物2と衝突する可能性が高いと判定されなかった場合(S316におけるNO)、ステップS320に移行する。
最後に、画像保持部178は、今回画像データを次回のフレームで前回画像データとして用いるため、データ保持部152の前回画像データに今回画像データを上書きする(S320)。以下、上記の画像切出処理S302、フローベクトル導出処理S304、補正フローベクトル生成処理S308、フローベクトル減算処理S310、グループ化処理S312について具体的に説明する。
(画像切出処理S302)
図17を参照すると、画像切出部160は、画素を特定するための垂直変数jを初期化(「0」を代入)する(S400)。続いて、画像切出部160は、垂直変数jに「1」を加算するとともに水平変数iを初期化(「0」を代入)する(S402)。次に、画像切出部160は、水平変数iに「1」を加算する(S404)。
画像切出部160は、環境画像200から垂直方向に予め定められたオフセット量(例えば、100画素)シフトした画素(i,j+100)の輝度値を抽出し、その値を部分画像202の画素(i,j)の輝度値とする(S406)。
続いて、画像切出部160は、水平変数iが部分画像202における水平画素の最大値である640以上であるか否か判定し(S408)、水平変数iが最大値未満であれば(S408におけるNO)、ステップS404からの処理を繰り返す。また、水平変数iが最大値以上であれば(S408にけるYES)、画像切出部160は、垂直変数jが部分画像202における垂直画素の最大値である128以上であるか否か判定する(S410)。そして、垂直変数jが最大値未満であれば(S410におけるNO)、ステップS402からの処理を繰り返す。また、垂直変数jが最大値以上であれば(S410におけるYES)、当該画像切出処理S302を終了する。こうして、図3に示したように、環境画像200の垂直方向にオフセットした位置から部分画像202を切り出すことができる。
(フローベクトル導出処理S304)
図18を参照すると、フローベクトル導出部162は、ブロックを特定するための垂直変数jを初期化(「0」を代入)する(S450)。続いて、フローベクトル導出部162は、垂直変数jに「1」を加算すると共に水平変数iを初期化(「0」を代入)する(S452)。次に、フローベクトル導出部162は、水平変数iに「1」を加算する(S454)。ここでは、ブロックを水平8画素×垂直8画素で構成する。
フローベクトル導出部162は、前回画像データに対応した部分画像202のブロック(i,j)と、今回画像データに対応した部分画像202のブロックとの相関値を導出する(S456)。具体的に、フローベクトル導出部162は、前回画像データに対応した部分画像202のブロック(i,j)を抽出し、かかる前回画像データのブロック(i,j)の位置に相当する、今回画像データに対応した部分画像202の位置から1フレームの間に移動物2が移動可能な最大範囲を設定する。そして、フローベクトル導出部162は、かかる最大範囲内で、前回画像データのブロックを1画素ずつ画面右方向にずらしながら両ブロックの相関値を求め、さらに、そのような処理を1画素ずつ画面下方向にずらしながら繰り返す。ただし、相関値を求めるときに比較する領域は、ブロックと一致していてもよいし、ブロックと一致しない、例えばブロックを包含したり、あるいはブロックの一部を含むような形でもよい。かかる処理は、今回画像データの部分画像202における最大範囲内の全てのブロックで相関値が導出されるまで繰り返される(S458のNO)。最大範囲内の全てのブロックで相関値が導出されると(S458におけるYES)、フローベクトル導出部162は、前回画像データのブロック(i,j)との相関値が最も大きい今回画像データのブロック(i,j)を抽出し、両ブロックの位置関係からフローベクトル(ブロック間の大きさと方向)を導出する(S460)。
続いて、フローベクトル導出部162は、水平変数iが部分画像202の水平ブロックの最大値である80以上であるか否か判定し(S462)、水平変数iが最大値未満であれば(S462におけるNO)、ステップS454からの処理を繰り返す。また、水平変数iが最大値以上であれば(S462におけるYES)、フローベクトル導出部162は、垂直変数jが部分画像202の垂直ブロックの最大値である16以上であるか否か判定する(S464)。そして、垂直変数jが最大値未満であれば(S464におけるNO)、ステップS452からの処理を繰り返す。また、垂直変数jが最大値以上であれば(S464におけるYES)、当該フローベクトル導出処理S304を終了する。こうして、図8に示したように、部分画像202にフローベクトルの情報を追加することができる。
(補正フローベクトル生成処理S308)
図19を参照すると、補正フローベクトル生成部166は、まず、旋回前の自車両1の向きと直交し、車両前方における所定の遠距離(例えば40000m)にある平面状の壁を仮定し、その壁面と地面とが接している部位(当該ブロックが壁であり、垂直方向1つ下のブロックが地面であるブロック)のフローベクトルを導出する(S500)。かかる遠距離のフローベクトルは、垂直方向に依存しない水平方向80ブロックのベクトル列far(80)で表すことができる。次に、補正フローベクトル生成部166は、旋回前の自車両1の向きと直交し、車両前方における所定の近距離(例えば1m)にある平面状の壁を仮定し、その壁面と地面とが接している部位のフローベクトルを導出する(S502)。かかる近距離のフローベクトルは、垂直方向に依存しない水平方向80ブロックのベクトル列near(80)で表すことができる。
補正フローベクトル生成部166は、ブロックを特定するための垂直変数jを初期化(「0」を代入)する(S504)。続いて、補正フローベクトル生成部166は、垂直変数jに「1」を加算すると共に水平変数iを初期化(「0」を代入)する(S506)。次に、補正フローベクトル生成部166は、水平変数iに「1」を加算する(S508)。ここでも、ブロックを水平8画素×垂直8画素で構成する。
補正フローベクトル生成部166は、水平変数iが40以下か否か、すなわち、判定基準線204の左側領域のブロックであるか否か判定する(S510)。水平変数iが40以下であれば(S510におけるYES)、遠距離のフローベクトルfar(i)が近距離のフローベクトルnear(i)より大きいか否か判定する(S512)。遠距離のフローベクトルfar(i)が近距離のフローベクトルnear(i)より大きい場合(S512におけるYES)、補正フローベクトルtgt(i,j)に遠距離のフローベクトルfar(i)を代入する(S514)。遠距離のフローベクトルfar(i)が近距離のフローベクトルnear(i)より小さい場合(S512におけるNO)、補正フローベクトルtgt(i,j)に近距離のフローベクトルnear(i)を代入する(S516)。ここでは、左側領域において右向き最長または左向き最短のフローベクトルを補正フローベクトルとしている。
また、水平変数iが40より大きければ(S510におけるNO)、遠距離のフローベクトルfar(i)が近距離のフローベクトルnear(i)より大きいか否か判定する(S518)。遠距離のフローベクトルfar(i)が近距離のフローベクトルnear(i)より大きい場合(S518におけるYES)、補正フローベクトルtgt(i,j)に近距離のフローベクトルnear(i)を代入する(S520)。遠距離のフローベクトルfar(i)が近距離のフローベクトルnear(i)より小さい場合(S518におけるNO)、補正フローベクトルtgt(i,j)に遠距離のフローベクトルfar(i)を代入する(S522)。ここでは、右側領域において左向き最長または右向き最短のフローベクトルを補正フローベクトルとしている。
続いて、補正フローベクトル生成部166は、水平変数iが部分画像202の水平ブロックの最大値である80以上であるか否か判定し(S524)、水平変数iが最大値未満であれば(S524におけるNO)、ステップS508からの処理を繰り返す。また、水平変数iが最大値以上であれば(S524におけるYES)、補正フローベクトル生成部166は、垂直変数jが部分画像202の垂直ブロックの最大値である16以上であるか否か判定する(S526)。そして、垂直変数jが最大値未満であれば(S526におけるNO)、ステップS506からの処理を繰り返す。また、垂直変数jが最大値以上であれば(S526におけるYES)、当該補正フローベクトル生成処理S308を終了する。当該補正フローベクトル生成処理S308では、部分画像202の垂直方向に同一の補正フローベクトルを設定している。こうして、図15(a)に示したように、補正フローベクトルが生成される。
(フローベクトル減算処理S310)
図20を参照すると、フローベクトル減算部168は、ブロックを特定するための垂直変数jを初期化(「0」を代入)する(S550)。続いて、フローベクトル減算部168は、垂直変数jに「1」を加算すると共に水平変数iを初期化(「0」を代入)する(S552)。次に、フローベクトル減算部168は、水平変数iに「1」を加算する(S554)。ここでは、ブロックを水平8画素×垂直8画素で構成する。
フローベクトル減算部168は、部分画像202のブロック(i,j)のフローベクトルから補正フローベクトルtgt(i,j)を減算して、ブロック(i,j)のフローベクトルを更新する(S556)。
続いて、フローベクトル減算部168は、水平変数iが部分画像202の水平ブロックの最大値である80以上であるか否か判定し(S558)、水平変数iが最大値未満であれば(S558におけるNO)、ステップS554からの処理を繰り返す。また、水平変数iが最大値以上であれば(S558におけるYES)、フローベクトル減算部168は、垂直変数jが部分画像202の垂直ブロックの最大値である16以上であるか否か判定する(S560)。そして、垂直変数jが最大値未満であれば(S560におけるNO)、ステップS552からの処理を繰り返す。また、垂直変数jが最大値以上であれば(S560におけるYES)、当該フローベクトル減算処理S310を終了する。こうして、部分画像202のフローベクトルが補正フローベクトルtgt(i,j)分オフセットされる。
(グループ化処理S312)
図21を参照すると、グループ化部170は、ブロックを特定するための垂直変数jを初期化(「0」を代入)する(S600)。続いて、グループ化部170は、垂直変数jに「1」を加算すると共に水平変数iを初期化(「0」を代入)する(S602)。次に、グループ化部170は、水平変数iに「1」を加算する(S604)。
次に、グループ化部170は、比較対象となるブロックを特定するため垂直変数nを初期化(「0」を代入)する(S606)。続いて、グループ化部170は、垂直変数nに「1」を加算すると共に水平変数mを初期化(「0」を代入)する(S608)。次に、グループ化部170は、水平変数mに「1」を加算する(S610)。
そして、グループ化部170は、判定基準線204に基づいて、前回画像データのブロック(i,j)とブロック(m,n)とがいずれも移動物2に対応するフローベクトルであるか否か判定する(S612)。具体的に、ブロック(i,j)が判定基準線204より左側領域に存在すれば、フローベクトルが右方向に向いているか否かを判定し、判定基準線204より右側領域に存在すれば、フローベクトルが左方向に向いているか否かを判定する。同様に、ブロック(m,n)が判定基準線204より左側領域に存在すれば、フローベクトルが右方向に向いているか否かを判定し、判定基準線204より右側領域に存在すれば、フローベクトルが左方向に向いているか否かを判定する。その結果、移動物2に対応するフローベクトルであれば(S612におけるYES)、ステップS614に移行し、いずれかが移動物2に対応していなければ(S612におけるNO)、ステップS618に処理を移行する。
続いて、グループ化部170は、前回画像データのブロック(i,j)とブロック(m,n)とを比較し、フローベクトルの方向およびその大きさが近似するか否か判定する(S614)。その結果、フローベクトルが近似すると判定されると(S614におけるYES)、グループ化部170は、そのブロック同士をグループ化してブロック群(移動物2)とする(S616)。このとき、いずれか一方または両方のブロックが既に他のブロックと共にブロック群として特定されている場合、そのブロックとブロック群となっている他のブロックも同一のブロック群として特定する。ただし、水平変数i=mかつ垂直変数j=nとなった場合、同一のブロックとなるので当該ステップS612〜S616の処理は実行しない。また、フローベクトルが近似していなければ(S614におけるNO)、ステップS618の処理に移行する。
続いて、グループ化部170は、水平変数mが部分画像202の水平ブロックの最大値である80以上であるか否か判定し(S618)、水平変数mが最大値未満であれば(S618におけるNO)、ステップS610からの処理を繰り返す。また、水平変数mが最大値以上であれば(S618にけるYES)、グループ化部170は、垂直変数nが部分画像202の垂直ブロックの最大値である16以上であるか否か判定する(S620)。そして、垂直変数nが最大値未満であれば(S620におけるNO)、ステップS608からの処理を繰り返す。また、垂直変数nが最大値以上であれば(S620におけるYES)、ステップS622の処理に移行する。
続いて、グループ化部170は、水平変数iが部分画像202の水平ブロックの最大値である80以上であるか否か判定し(S622)、水平変数iが最大値未満であれば(S622におけるNO)、ステップS604からの処理を繰り返す。また、水平変数iが最大値以上であれば(S622におけるYES)、グループ化部170は、垂直変数jが部分画像202の垂直ブロックの最大値である16以上であるか否か判定する(S624)。そして、垂直変数jが最大値未満であれば(S624におけるNO)、ステップS602からの処理を繰り返す。また、垂直変数jが最大値以上であれば(S624におけるYES)、当該グループ化処理S312を終了する。こうして、フローベクトルが近似するブロック同士を移動物2として特定することができる。
以上、説明したような、車外環境認識装置120や車外環境認識方法によれば、自車両1が旋回した場合であっても、静止物3を移動物2として誤検出することを回避し、移動物2の検出精度の向上を図ることが可能となる。
また、従来、移動物2を適切に判断するため静止物3までの距離も得るべく、ステレオカメラやレーザレーダを用いなければならなかったが、本実施形態の車外環境認識装置120では、そのような高価な装置を用いることなく移動物2を検出できるので、コストの削減や処理負荷の軽減を図ることができる。
また、コンピュータを、車外環境認識装置120として機能させるプログラムや当該プログラムを記録した、コンピュータで読み取り可能なフレキシブルディスク、光磁気ディスク、ROM、CD、DVD、BD等の記憶媒体も提供される。ここで、プログラムは、任意の言語や記述方法にて記述されたデータ処理手段をいう。
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる実施形態に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
例えば、上述した実施形態において、画像切出部160、フローベクトル導出部162、移動状態取得部164、補正フローベクトル生成部166、フローベクトル減算部168、グループ化部170、移動物判定部172、衝突判定部174、報知部176、画像保持部178は、中央制御部154によってソフトウェアで動作するように構成している。しかし、上記の機能部をハードウェアによって構成することも可能である。
また、上述した実施形態においては、部分画像202の水平方向および垂直方向のいずれの方向のフローベクトルも対象としているが、自車両1に設置した撮像装置110を通じて接近する移動物2を検出する場合、水平方向のフローベクトルのみに限定して処理を行うことで、処理負荷を軽減することができる。
なお、本明細書の車外環境認識方法の各工程は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいはサブルーチンによる処理を含んでもよい。