本実施例1は、車載されたカメラで車両周辺を監視して、車両に接触する可能性のある物体が検出されたときに警報を出力する車両周辺監視装置に関するものである。
まず、説明に使用する用語の定義を行う。撮像手段で異なる時刻に撮像された2つの画像に基づいて検出されるオプティカルフローを、以後、第1のオプティカルフローと呼ぶ。
また、仮想的に設定された仮想面において、立体物や動くものがないと仮定したときに、異なる時刻の間の車両の挙動に応じて生じると推定されるオプティカルフロー(背景フロー)を、以後、第2のオプティカルフローと呼ぶ。
さらに、第1のオプティカルフローから第2のオプティカルフローを差し引いた結果算出される差分ベクトルを、以後、差分フローと呼ぶ。
図1は、本発明の実施例1に係る車両周辺監視装置の概略構成を示すブロック図を表す。
図2は、図1の周辺監視手段200の内部構成を示すブロック図である。
本実施例1に係る車両周辺監視装置は、車両10に設置され、カメラ100(撮像手段)と、周辺監視手段200と、車輪速センサ300と、警報出力手段400と、を備えている。
カメラ100は、車両後方の路面を含む領域を撮像する。
周辺監視手段200は、カメラ100で撮像された画像の中から、車両10に接触する可能性のある物体を検出する。
車輪速センサ300は、車両の左右両輪の車輪速を計測する。
警報出力手段400は、スピーカのような音声出力手段やモニタのような映像出力手段を備え、車両が物体に接触する可能性があるときに、音や音声や映像によって警報を出力する。
周辺監視手段200は、さらに、仮想面設定手段220と、オプティカルフロー推定手段230と、オプティカルフロー検出手段240と、オプティカルフロー差分演算手段250と、物体検出手段260と、接触判定手段270と、を備えている。
仮想面設定手段220は、予め決められた位置に仮想的に仮想面を設定する。なお、図2には図示しないが、後述するように、周辺監視手段200の中に、複数の仮想面の中から1つの仮想面を選択する機能を付加したときには、仮想面選択手段として、ジョイスティックのようなポインティングデバイスが、仮想面設定手段220に接続される。
オプティカルフロー検出手段240は、カメラ100で異なる時刻に撮像された2つの画像に基づいて、第1のオプティカルフローを検出する。
オプティカルフロー推定手段230は、車輪速センサ300で計測された、異なる時刻の間の車両の挙動と、カメラ100の設置条件と、焦点距離や画素サイズ等のカメラ100のパラメータと、に基づいて、仮想面設定手段220で設定された仮想面において生じる第2のオプティカルフローを推定する。
オプティカルフロー差分演算手段250は、オプティカルフロー検出手段240で検出された第1のオプティカルフローと、オプティカルフロー推定手段230で推定された第2のオプティカルフローとの差分演算を行って、差分フローを算出する。
物体検出手段260は、オプティカルフロー差分演算手段250の演算結果に基づいて、物体の検出を行う。
接触判定手段270は、物体検出手段260で検出された物体が、車両10に接触する可能性があるか否かを判定する。
なお、図2に記載した構成は、実装形態に応じて、適宜変更することが可能である。例えば、仮想面設定手段220は、カメラ100の設置位置と、焦点距離や画素サイズ等のカメラ100のパラメータと、設定する仮想面の形状と、に基づいて、予め仮想面の位置を計算して記憶しておくことができる。その場合、独立した仮想面設定手段220を備えなくてもよい。
また、オプティカルフロー推定手段230は、仮想面が設定されて、カメラ100の設置位置と、焦点距離や画素サイズ等のカメラ100のパラメータと、が判れば、車両の挙動に応じた第2のオプティカルフローを予め計算して記憶しておくことができるため、実際に車両の挙動を計測した都度、その車両の挙動に対応した第2のオプティカルフローを読み出すことができる。その場合、独立したオプティカルフロー推定手段230を備えなくてもよい。
ここで、まず、オプティカルフローについて、図3(a)、(b)、(c)を用いて簡単に説明する。
図3(a)は、障害物が全くない、レーンマーカが引かれた路面をカメラ100で撮像した画像の一例である。左右のレーンマーカをそれぞれ遠方に延長すると、それらは消失点Vで交わる。
カメラ100を搭載した車両10が、この消失点Vに向かって直進したときに、異なる2つの時刻t、t+Δtにおいてカメラ100で路面を撮像して、得られた2つの画像を、同じ座標同士が重なるように重ね合わせて、その2つの画像の中の対応する画素同士を、時刻tに撮像した画像上の画素Mを始点として、時刻t+Δtに撮像した画像上の、画素Mに対応する画素M’を終点とするベクトルで連結したとき、このベクトルをオプティカルフローと呼ぶ。
オプティカルフローは、異なる2つの時刻の間におけるカメラ100の移動量および移動方向や、撮像された物体の、見かけの移動量および移動方向を表している。このオプティカルフローを検出する処理を、画像の中の複数の画素に対して実行すると、図3(b)に示すように、消失点Vから放射状に広がる複数の第1のオプティカルフローが得られる。
さらに、図3(a)の状態で、車両10が右方向に旋回したときには、図3(c)に示す複数の第1のオプティカルフローが得られる。すなわち、時間とともに消失点Vは水平方向左側に移動して、それに合わせて画像全体も水平方向左側に移動する。
本実施例1は、異なる時刻に撮像された2つの画像に基づいて、前記した第1のオプティカルフローを検出して、車両に接触する可能性のある物体を検出するものである。本実施形態に係る車両周辺監視装置の作用について、図4のフローチャートに基づいて説明する。
まず、ステップS10において、カメラ100で、路面を含む車両10の周辺の画像を、所定の時間間隔で2回撮像して、ステップS20に進む。
ステップS20では、オプティカルフロー検出手段240によって、カメラ100で撮像された2つの画像から第1のオプティカルフローを検出して、ステップS30に進む。ステップS20で行われる処理の詳細は後述する。
ステップS30では、オプティカルフロー推定手段230によって、第2のオプティカルフローを推定し、ステップS40に進む。ステップS30で行われる処理の詳細は後述する。
ステップS40では、オプティカルフロー差分演算手段250によって、オプティカルフロー検出手段240によって検出された第1のオプティカルフローから、オプティカルフロー推定手段230によって推定された第2のオプティカルフローを差し引く差分演算を行って、ステップS50に進む。ステップS40で行われる処理の詳細は後述する。
ステップS50では、物体検出手段260によって、路面上にある物体を検出し、ステップS60に進む。ステップS50で行われる処理の詳細は後述する。
ステップS60では、接触判定手段270によって、検出された物体が車両10に接触する可能性があり、警報すべきか否かを判定する。ステップS60で行われる処理の詳細は後述する。
ステップS70では、接触判定手段270の判定結果に基づいて、警報出力を行うか否かを判定する。警報出力を行うときはステップS80に進み、警報出力を行わないときはステップS90に進む。なお、警報を出力すべき物体が複数個検出された場合には、ステップS70の中で、最も近くにいる物体に対して警報する、最も速度が大きい物体に対して警報するなど、どのような警報を出力すべきかが併せて判定される。
ステップS80では、警報出力手段400から警報を出力して車両10の運転者に注意を促す。その後、ステップS90に進む。
ステップS90では、周辺監視手段200を動作させるメインスイッチ(図2には図示しない)が切断されたこと、または、車両10のイグニッションスイッチが切断されたことを検出して、図4の処理の終了を判断する。終了判断がなされないときは、ステップS10に戻って、同じ処理を繰り返す。
ステップS20で行う処理の詳細を、図5を用いて説明する。図5の処理は、オプティカルフロー検出手段240によって行われる。
カメラ100で時刻tに撮像した画像をIt(x,y)とし、時刻t+Δtに撮像した画像をIt+Δt(x,y)とする。
ステップS201では、画像It(x,y)の中から輝度勾配の大きな点を特徴点として検出する。具体的には、画像It(x,y)に対して、着目する画素の近傍に小領域を設定して、輝度勾配を表す量として、設定した小領域の内部におけるエッジ強度を求めるオペレータを作用させて、求めたエッジ強度が所定値よりも大きい画素を特徴点とする。このとき、併せて、同じ画素におけるエッジ方向も算出しておく。
ステップS202では、画像It(x,y)の中から検出した特徴点と同じ輝度勾配を有する画素(対応点)を、画像It+Δt(x,y)の中から探索する。この処理は、画像It+Δt(x,y)の中に、所定の大きさの探索範囲を設定して、設定した探索範囲の中で、画像It(x,y)の中から検出した特徴点と同じ輝度勾配(エッジ強度とエッジ方向)を有する画素を探索することによって行われる。
ステップS203では、エッジ強度の近似度とエッジ方向の近似度に、それぞれしきい値を設けて、エッジ強度の差異とエッジ方向の差異が、ともに、それぞれ設定されたしきい値以内であるときに、対応点が見つかったと判定して、ステップS204に進む。一方、対応点が探索されないときは、ステップS201に戻って、別の特徴点の検出を行う。
ステップS204では、画像It(x,y)の中から検出した特徴点を始点とし、画像It+Δt(x,y)の中から見つけた対応点を終点とする第1のオプティカルフローを決定する。このようにして検出された第1のオプティカルフローの始点の位置座標と終点の位置座標とは、オプティカルフロー検出手段240の中に記憶される。
なお、第1のオプティカルフローの検出方法は、上記したものに限定されるものではない。すなわち、オプティカルフローの検出方法は数多く提案されており、そのいずれの方法を用いて行ってもよい。
ステップS205では、画像It(x,y)の全ての画素に対して特徴点の検出処理を行ったか否かを判定する。全ての画素に対して処理を行ったときは、図5の処理を終了して、図2のメインルーチンに戻る。
一方、画像It(x,y)の全ての画素に対して特徴点の検出処理が終了していないときは、ステップS201に戻って、特徴点の検出を続行する。
次に、ステップS30で行う処理を説明する前に、まず、図10(a)、(b)を用いて、第2のオプティカルフローの推定方法を説明する。カメラ100は、路面110から高さhの位置に設置されているとする。また、カメラ100の焦点Oを原点として、カメラ100の撮像面の水平軸に平行な座標軸Xと、カメラ100の撮像面の垂直軸に平行な座標軸Yと、カメラ100の光軸と一致するように設定した座標軸Zと、からなるXYZ座標系を設定する。
説明を簡単にするため、カメラ100の光軸は、路面110と平行であるとする。また、カメラ100で撮像された点は、透視投影によって撮像面に投影されるものとする。
カメラ100の焦点距離をfとし、路面110上の点R1の座標を(X1,Y1,Z1)とし、点R1が撮像面上で点Q1(x1,y1)に観測されたとする。さらに、カメラ100の水平方向画素サイズをCx、垂直方向画素サイズCyとすると、点Q1の座標(x1、y1)は、(式1)で算出される。
x1=(fX1/Z1)/Cx、y1=(fY1/Z1)/Cy (式1)
カメラ100を搭載した車両10が、速度v(vx,vy,vz)でt秒間移動したとする。ここで、vxは速度vのX軸方向成分、vyは速度vのY軸方向成分、vzは速度vのZ軸方向成分である。
説明を簡単にするために、カメラ100(車両10)の移動方向は、光軸方向(Z軸方向)であるとすると、vx、vy、vzは、それぞれ(式2)で表される。
vx=0、vy=0、vz=−v (式2)
図10(b)は、図10(a)のt秒後の状態を示している。カメラ100(車両10)の移動によって、点R1(X1,Y1,Z1)が点R2(X2,Y2,Z2)に移動して、点R2が、撮像面上で点Q2(x2,y2)の位置に撮像されたとする。このとき、点Q2(x2,y2)は、(式1)と同様にして、(式3)で算出される。
x2=(fX2/Z2)/Cx、y2=(fY2/Z2)/Cy (式3)
また、点R2の座標(X2,Y2,Z2)は、(式4)で算出される。
X2=X1+vxt、Y2=Y1+vyt、Z2=Z1−vzt (式4)
(式4)に(式2)を適用すると、(式5)が得られる。
X2=X1、Y2=Y1、Z2=Z1−vt (式5)
このとき、t秒後に撮像面上に生じると推定される第2のオプティカルフロー(Δx,Δy)は、(式1)、(式3)、(式5)を用いて、(式6)、(式7)で算出される。
Δx=x2−x1=fX1vt/{Z1(Z1−vt)Cx} (式6)
Δy=y2−y1=fY1vt/{Z1(Z1−vt)Cy} (式7)
第2のオプティカルフローを推定するためには、(式6)、(式7)において、X1、Y1、Z1の値を特定する必要がある。すなわち、第2のオプティカルフローが生じる面(仮想面)を仮想的に設定する必要がある。上記した説明は、仮想面を路面110に設定した場合についてのものである。
ここで、第2のオプティカルフローの始点(x1,y1)を定めて、車両の挙動から速度ベクトルv(vx,vy,vz)を特定すれば、予め測定してあるカメラ100のパラメータであるf、Cx、Cyを用いて、(式6)、(式7)によって第2のオプティカルフローの終点(x2,y2)の座標が得られ、これによって、第2のオプティカルフローが推定される。
なお、上記した説明は、カメラ100の光軸が路面110と平行に設置された場合についてのものである。実際は、車両10の近傍まで監視するために、カメラ100の光軸はやや下向きに設置されるため、(式6)や(式7)の中には、カメラ100の光軸の方向を示す値や、カメラ100の路面からの高さhの値も加味される。
次に、ステップS30で行う処理の詳細を、図6を用いて説明する。図6の処理は、オプティカルフロー推定手段230によって行われる。
ステップS301では、まず、仮想面設定手段220によって、第2のオプティカルフローを推定する仮想面を設定する。本実施例1では、図11(b)に示すように、路面110から第1の距離dだけ上方(カメラ100に近い側)に、路面110と平行な仮想面A1(第1の仮想面)を設定する。
仮想面は、このように路面110と平行な1つの面A1のみを設定すればよいが、仮想面A1のみでは、カメラ100の撮像視野の全体を仮想面で覆うことができない。これは、一般に、路面と平行な面が撮像される領域は、カメラ100で撮像した画像の消失点Vよりも下部の領域のみだからである。
したがって、仮想面A1を設定した後で、画像の中の消失点Vよりも上部の領域については、以後説明する処理を行わないように、マスクをかければよい。
また、仮想面A1の他に、車両10から第2の距離kだけ後方の位置に、路面110から立ち上がる仮想面V1(第2の仮想面)を、併せて設定してもよい。
図11(b)は、この仮想面V1を、路面110から垂直に立ち上がり、カメラ100の光軸を含み路面110から垂直に立ち上がる平面と直交する面として設定した例である。この仮想面V1の高さは、少なくともカメラ100の撮像視野の最上部を超えるものとする。以降、この仮想面A1と仮想面V1とを設定した場合について説明する。
ここで、第1の距離dと、第2の距離kと、には、後述するように、予め実験等によって決定した値が用いられる。
ステップS301では、このように設定した仮想面A1と仮想面V1とに向かって、カメラ100の焦点Oから複数の半直線を延ばして、この半直線が、仮想面A1、もしくは仮想面V1と最初に交差する点で構成される面を、新たに第1の仮想面として設定して、ステップS302に進む。
ステップS302では、車輪速センサ300から得られる車両10の左右輪の車輪速を、それぞれ所定の時間間隔で測定して、時刻tから時刻t+Δtの間の車輪速に基づいて、Δt秒間の車両10の挙動(移動距離、移動方向)を算出し、ステップS303に進む。
ステップS303では、オプティカルフロー検出手段240に記憶されている第1のオプティカルフローの検出結果を参照して、第1のオプティカルフローの始点の座標を探す。第1のオプティカルフローの始点が見つかったら、ステップS304に進み、第1のオプティカルフローの始点が見つからないときは、ステップS303に戻って、第1のオプティカルフローの始点を探す処理を続行する。
ステップS304では、オプティカルフロー推定手段230によって、第1のオプティカルフローの始点の位置において、ステップS301で設定した仮想面A1、または仮想面V1の上に生じると考えられる第2のオプティカルフローを推定する。この第2のオプティカルフローの推定は、前記した方法によって行われる。なお、このように第1のオプティカルフローが検出された点でのみ、第2のオプティカルフローを推定することによって、第2のオプティカルフローを推定する点を減らすことができ、これによって、処理の効率を向上させることができる。
このようにして推定された第2のオプティカルフローの始点の位置座標と終点の位置座標とは、オプティカルフロー推定手段230の中に記憶されて、ステップS305に進む。
ステップS305では、画像It(x,y)と画像It+Δt(x,y)から検出された、全ての第1のオプティカルフローの始点の位置における第2のオプティカルフローの推定を完了したか否かを判定する。全ての第1のオプティカルフローに対して処理を行ったときは、図6の処理を終了して、図2のメインルーチンに戻る。
一方、画像It(x,y)と画像It+Δt(x,y)から検出された全ての第1のオプティカルフローに対して、第2のオプティカルフローの推定が終了していないときは、ステップS303に戻って、処理を続行する。
ここで、ステップS301で設定する仮想面A1(第1の仮想面)の位置を特定する第1の距離dの値について説明する。
路面110上の模様やテクスチャを始点として検出された第1のオプティカルフローから、路面110に生じると推定した第2のオプティカルフローを差し引くと、原理的には差分フローは0になるはずである。しかし、カメラ100を車両10に設置したときに、カメラ100の路面からの高さhやカメラ100の光軸の方向に誤差が生じると、差分フローが残ってしまう場合がある。
そこで、本実施例1では、設定する第1の仮想面の位置がカメラ100に近いほど、同じ車両の挙動に対して、より長い第2のオプティカルフローが推定されることを利用して、路面110から第1の距離dだけ上方に、路面110と平行な仮想面A1を設定し、この仮想面A1上で第2のオプティカルフローの推定を行う。
これによって、仮想面A1においては、車両10の実際の挙動から推定されるよりも長い第2のオプティカルフローが推定されるため、後述する、第1のオプティカルフローから第2のオプティカルフローを差し引く差分演算を行ったときに、第1のオプティカルフローを確実に除去(キャンセル)し、ノイズをカットすることができる。
なお、第1の距離dの値は、検出する物体の高さに応じて設定するのが望ましい。すなわち、高さが低い物体を検出するときは第1の距離dをより小さい値に設定し、高さが高い物体を検出するときは第1の距離dをより大きい値に設定するのが望ましい。具体的な第1の距離dの値は、予め実験等を行って決定し、その値が採用される。
次に、仮想面V1の設定位置を特定する第2の距離kの値について説明する。
仮想面V1は、接触判定手段270が車両10と物体とが接触する可能性があると判定する範囲の中で、車両10から最遠点の路面110上の位置から立ち上がるように設定するのが望ましい。
これによって、仮想面V1よりも遠方にある点では、第2のオプティカルフローが実際よりも長く推定されるため、後述する、第1のオプティカルフローから第2のオプティカルフローを差し引く差分演算を行ったときに、第1のオプティカルフローを確実に除去(キャンセル)することができる。
なお、仮想面V1を設定するために必要な第2の距離kの値は、上記した観点から、予め実験等によって決定した値が用いられる。
次に、ステップS40で行う処理の詳細を、図7を用いて説明する。図7の処理は、オプティカルフロー差分演算手段250によって行われる。
まずステップS401では、オプティカルフロー検出手段240の中に記憶された第1のオプティカルフローの始点の座標(x1,y1)を探す。第1のオプティカルフローの始点の座標(x1,y1)が見つかったらステップS402に進み、見つからないときは、ステップS401に戻って、探索を続行する。
ステップS402では、オプティカルフロー差分演算手段250において、見つかった第1のオプティカルフローの始点の座標と等しい始点の座標を有する第2のオプティカルフローの終点の座標(x2,y2)を、オプティカルフロー推定手段230の中に記憶されたオプティカルフローの推定結果の中から探索し、第1のオプティカルフローの長さから第2のオプティカルフローの長さを差し引く処理を行う。
第1のオプティカルフローの長さは、第1のオプティカルフローの始点、および終点の座標から算出され、第2のオプティカルフローの長さは、第2のオプティカルフローの始点、および終点の座標から算出される。
算出された差分フローの長さは、差分フローの始点の座標、終点の座標とともに、オプティカルフロー差分演算手段250の中に記憶される。なお、このとき、第2のオプティカルフローの長さが、第1のオプティカルフローの長さ以上であるときには、それを表す識別子を、一緒に記憶しておく。
次にステップS403では、オプティカルフロー差分演算手段250において、第1のオプティカルフローの方向から第2のオプティカルフローの方向を差し引く処理を行う。第1のオプティカルフローの方向は、第1のオプティカルフローの始点、および終点の座標から算出され、第2のオプティカルフローの方向は、第2のオプティカルフローの始点、および終点の座標から算出される。算出された差分フローの方向は、オプティカルフロー差分演算手段250の中に記憶されて、ステップS404に進む。
ステップS404では、第1のオプティカルフローから第2のオプティカルフローを差し引いた結果、差分フローの長さが0または負であるか否かを判定する。
差分フローの長さが0または負であることは、ステップS402で記憶した、第2のオプティカルフローの長さが、第1のオプティカルフローの長さ以上であることを表す識別子を参照することによって行えばよい。
もし、差分フローの長さが0または負であったときはステップS405に進み、差分フローの長さが正であったときは、ステップS401に戻って、次の第1のオプティカルフローについて処理を行う。
ステップS405では、オプティカルフロー差分演算手段250に記憶された、差分フローの始点の座標、終点の座標、差分フローの長さ、および差分フローの方向を削除して、ステップS406に進む。
ステップS406では、全ての第1のオプティカルフローについて処理を行ったことを確認して、図2のメインルーチンに戻る。
全ての第1のオプティカルフローに対する処理が完了していないときは、ステップS401に戻り、残りの第1のオプティカルフローについて処理を行う。
次に、ステップS50で行う処理の詳細を、図8を用いて説明する。図8の処理は、物体検出手段260によって行われる。
ステップS501では、オプティカルフロー差分演算手段250の中に記憶された差分フローの始点の座標、終点の座標、差分フローの長さ、および差分フローの方向を読み出して、差分フローのグルーピングを行う。この処理は、近接した位置で検出された、差分フローを統合するものである。具体的には、予め設定したサイズの領域の中にある差分フロー同士を比較して、長さがともに所定値以上で、なおかつ、方向の差が所定値以下であるとき、差分フロー同士をグルーピングする。グルーピングした結果は、物体検出手段260の中に記憶される。
ステップS502では、画像It(x,y)全体を処理したか否かを判定し、全画面の処理が終了したときはステップS503に進む。
一方、全画面の処理が終了していないときは、ステップS501に戻って、ステップS501の処理を継続する。
ステップS503では、差分フローをグルーピングした結果に基づいて、物体が存在すると考えられる領域を特定して、その領域を代表する座標値と、物体があると考えられる領域のサイズと、差分フローが向いている方向と、を接触判定手段270に送って、メインルーチンに戻る。
次に、ステップS60で行う処理の詳細を、図9を用いて説明する。図9の処理は、接触判定手段270によって行われる。
ステップS601では、接触判定手段270に送られた、差分フローをグルーピングした結果を参照して、差分フローの方向が、画像It(x,y)を左右に2等分する中心線Cに向かう方向に向いているか否かを判定する。差分フローの方向が、画像It(x,y)を左右に2等分する中心線Cに向かう方向を向いていると判定されると、ステップS602に進み、中心線Cに向かう方向を向いていないと判定されると、ステップS603に進む。
ステップS602では、差分フローの方向が、車両10の方向に向かっていると判定して、物体の位置座標を、接触判定手段270の中に記憶する。その後、ステップS603に進む。
ステップS603では、グルーピングされた全ての物体の差分フローの方向がチェックされたことを確認し、全ての物体がチェックされたときは、ステップS604に進む。チェックされていない物体が残っているときは、ステップS601に戻って、チェックを続行する。
ステップS604では、差分フローの方向が、車両10の方向に向かっていると判定された物体について、差分フローの長さに基づいて、車両10に対する接触の危険性を判定し、警報を出力すべきか否かを判定してメインルーチンに戻る。その後、前記した、図4のステップS70以降の処理が行われる。
なお、ステップS604では、差分フローの長さが、予め決めておいたしきい値Thと比較されて、差分フローの長さがしきい値Thよりも長いときには、警報を出力すると判定する。
このとき、例えば図15の車両進行方向Dが示すように、車両10が右旋回していたときには、画像の中心線Cに対して右側の領域と、画像の中心線Cに対して左側の領域と、で差分フローの長さが異なる。そのため、車輪速センサ300によって、旋回が発生したと判定されたときには、差分フローの長さに対して、警報を出力すべきと判定するしきい値Thの値を変更する。
具体的には、ステップS302で算出した車両10の挙動(移動距離、移動方向)に基づいて、車両10が右旋回していると判定されたときには、画像の右領域Rの方が左領域Lに対して、車両に接近する物体の差分フローが短くなる。しかし、車両10は右領域Rに向かって進行しているため、差分フローが短くても、これを確実に検出して警報を出力する必要がある。そこで、画像の左領域Lよりも右領域Rで、差分フローの長さのしきい値Thを小さく設定する。
一方、車両10が左旋回していると判定されたときには、画像の左領域Lの方が右領域Rに対して、車両に接近する物体の差分フローが短くなる。しかし、車両10は左領域Lに向かって進行しているため、差分フローが短くても、これを確実に検出して警報を出力する必要がある。そこで、画像の右領域Rよりも左領域Lで、差分フローの長さのしきい値Thを小さく設定する。
なお、左領域Lの位置と大きさと、右領域Rの位置と大きさと、は予め実験等によって決定した値が用いられる。
次に、本実施例1における物体の検出例を、図12を用いて具体的に説明する。図12(a)は、仮想面として、路面110(仮想面A0)と仮想面V1を設定したとき(図11(a))の第2のオプティカルフローを示し、図12(b)は、そのときの物体Pの検出結果を示す。
図12(c)は、仮想面として、路面110から第1の距離dだけ上方の仮想面A1と仮想面V1を設定したとき(図11(b))の第2のオプティカルフローを示し、図12(d)は、そのときの物体Pの検出結果を示す。
図12(c)では、路面110に対応する領域において、図12(a)よりも、長い第2のオプティカルフローが推定される。
そして、物体Pの検出結果を図12(b)と図12(d)とで比較すると、図12(b)では、路面110において差分フローが誤検出されているのに対し、図12(d)では、路面110における差分フローの誤検出はなく、物体Pのみが確実に検出されている。
なお、仮想面A1は、実施例1で説明したように、路面110に平行に設定する以外に、図11(c)に示すように、路面110からの第1の距離dが、カメラ100から遠いほど小さくなるような仮想面A2として設定してもよい。
このような仮想面A2を設定すると、仮想面A2上で推定した第2のオプティカルフローが、カメラ100に近い位置ほど、第1のオプティカルフローよりも長く推定され、カメラ100から遠い位置ほど、第1のオプティカルフローと同じサイズで推定される。
したがって、図12(e)に示すように、仮想面A2上で推定した第2のオプティカルフローは、画像の上部に行くほど短く推定される。
これによって、カメラ100に近い位置では、不要な(ノイズとなる)第1のオプティカルフローを確実に除去することができ、なおかつ、カメラ100から遠い位置においては、短い第1のオプティカルフローも確実に検出できるようになる。すなわち、キャンセルされる差分フローが少なくなることによって、図12(f)に示すように、物体を構成するオプティカルフローを、図12(d)に比べて多く検出することができるようになって、これによって、カメラ100からの距離に応じて、物体の検出感度を調整することができるため、物体の検出性能をより一層向上させることができる。
さらに、図11(c)では、仮想面A2を、路面110からの第1の距離dが、カメラ100からの距離に応じて線形に減少するように設定したが、第1の距離dの設定パターンは、カメラ100からの距離に応じて単調に減少するものであれば、この限りではない。
すなわち、図13に示すように、カメラ100からの距離に応じて、第1の距離dが階段状に小さくなるように設定(図13の仮想面A3)してもよいし、第1の距離dが非線形に変化するように設定(図13の仮想面A4やA5)してもよい。
この第1の距離dの設定パターンは、設定する物体の検出感度に応じて決められ、予め実験等によって決定した設定パターンが用いられる。
また、図14に示すように、第1の距離dが互いに異なる複数の位置に、複数の仮想面(仮想面A6、仮想面A7、仮想面A8)を設定して、車両10の運転者が、使用する第1の距離dの設定パターンを選択するようにしてもよい。
このとき、仮想面設定手段220の中に、運転者の操作によって第1の距離dの設定パターンを変更できる機能を備えておくことによって、運転者は、安全な状態で、第1の距離dの設定パターンを変更しながら、物体の検出結果を、車両10内に設置したモニタのような表示手段(図2には図示せず)によって目視確認して、所望の第1の距離dの設定パターンを選択することができる。そして、前記したように、第1の距離dの設定パターンに応じて、物体の検出感度を調整することができるため、これによって、運転者の感覚にあった物体検出を行うことができる。
なお、この第1の距離dの設定パターンは、車両10の車速に応じて、変化させるようにしてもよい。
すなわち、車両10の車速が低いときには、第1の距離dを0(路面)または小さく設定しておき、車両10の車速が高くなるにつれて、第1の距離dの値を徐々に大きな値に変更することによって、車両10の走行状態に応じた感度で、物体をより一層、確実に検出することができる。
さらに、第1の距離dの設定パターンが異なる第1の仮想面を複数面設定して、設定した全ての第1の仮想面における第2のオプティカルフローを推定し、各々の第1の仮想面で推定された第2のオプティカルフローを、第1のオプティカルフローと比較して物体検出を行い、異なる複数の第1の仮想面に対する物体の検出結果を、それぞれ異なる描画形態(色、線の太さ、線の形態等)で車両10に設置したモニタのような表示手段(図2には図示せず)に表示してもよい。これによって、運転者は、異なる検出感度で検出された複数の検出結果を一望することができるため、接触の危険度合を瞬時に把握することができる。
また、車両の後方に設定する仮想面V1は、接触判定手段270が車両10と物体とが接触する可能性があると判定する範囲の中で、車両10から最遠点の位置に、路面110に垂直に設定したが、これは、図16に示すように、仮想面V1から、第3の距離sだけ近い位置に、路面110から高い地点ほど、第3の距離sが小さくなるような仮想面V2を設定して、仮想面V2を新たに仮想面V1として、上記した処理を行うようにしてもよい。
このような形態の仮想面V2を設定することによって、路面に近い位置ほど、仮想面V2と車両10との距離が小さくなるため、車両10に近いほど、高さの低い物体の検出感度を上げることができる。したがって、接触可能性を警報する上で好ましい検出特性を得ることができる。なお、第3の距離sの値には、予め実験等によって決定した値が用いられる。また、仮想面V2は、カメラ100の撮像視野の最上部において、仮想面V2が仮想面V1よりも遠方にならないレイアウトに設定されるのが望ましい。
以上説明したように、このように構成された実施例1に係る車両周辺監視装置によれば、カメラ(撮像手段)100で撮像された車両10周辺の画像から、オプティカルフロー検出手段240で第1のオプティカルフローを検出するとともに、オプティカルフロー推定手段230が、車両10の挙動に基づいて、仮想面設定手段220によって、路面から第1の距離dだけ高い位置に設定された仮想面A1の上に生じる、第1のオプティカルフローと始点を共にする第2のオプティカルフローを推定して、オプティカルフロー差分演算手段250が、オプティカルフロー検出手段240で検出された第1のオプティカルフローからオプティカルフロー推定手段230で推定された第2のオプティカルフローを差し引く差分演算を行って差分フローを算出し、物体検出手段260が、差分フローに基づいて車両10の周辺に存在する物体を検出し、接触判定手段270によって、物体が車両10に接触する可能性があると判定されたときに、警報出力手段400が警報を出力する構成としたため、路面110の模様やテクスチャによって生じた第1のオプティカルフローを確実に除去することができる。
そして、これによって、物体が存在しない場所では誤検出がなく、物体が存在する場所では、確実にその物体を検出することができる。
なお、本実施例1において、カメラ100は車両10の後方を撮像するレイアウトで設置したが、カメラ100の観測範囲は、車両10の後方に限定されるものではない。すなわち、車両10の前方や車両10の側方を観測するレイアウトであっても、上記した実施例1と同様の車両周辺監視装置を実現することができる。
本実施例2は、車載されたカメラで車両周辺を監視して、車両に接触する可能性のある物体が検出されたときに警報を出力する車両周辺監視装置に関するものである。
図17は、本発明の実施例2に係る車両周辺監視装置の概略構成を示すブロック図を表す。
図18は、図17の周辺監視手段202の内部構成を示すブロック図である。
本実施例2に係る車両周辺監視装置は、車両10に設置され、カメラ100(撮像手段)と、周辺監視手段202と、車輪速センサ300と、警報出力手段400と、を備えている。
カメラ100は、車両後方の路面を含む領域を撮像する。
周辺監視手段202は、カメラ100で撮像された画像の中から、車両10に接触する可能性のある物体を検出する。
車輪速センサ300は、車両の左右両輪の車輪速を計測する。
警報出力手段400は、スピーカのような音声出力手段やモニタのような映像出力手段を備え、車両が移動物体に接触する可能性があるときに、音や音声や映像によって警報を出力する。
周辺監視手段202は、さらに、仮想面設定手段280と、オプティカルフロー推定手段230と、オプティカルフロー検出手段240と、オプティカルフロー差分演算手段250と、物体検出手段260と、接触判定手段270と、を備えている。
仮想面設定手段280は、車両10の後方の予め決められた路面上の位置から立ち上がる第2の仮想面を設定して、路面と、この第2の仮想面と、で構成される仮想面を、第1の仮想面として設定する。
周辺監視手段202のその他の構成要素とその機能は、実施例1で説明した周辺監視手段200と同じであるため、説明は省略する。
本実施例2の処理の流れの概要は、実施例1で説明した図4と同様であるため、本実施例2の作用について、実施例1の作用と異なる点について説明する。
図4のステップS30では、オプティカルフロー推定手段230によって、第2のオプティカルフローを推定する。この第2のオプティカルフローの推定は、図6のフローチャートによって行われる。
図6のステップS301では、まず、仮想面設定手段220によって、第2のオプティカルフローを推定する仮想面の設定を行う。このとき、本実施例2では、図11(a)に示すように、路面110を仮想面A0に設定する。
そして、仮想面A0のみでは、カメラ100の撮像視野全体を仮想面で覆うことができないため、車両10から第2の距離kだけ後方の位置に、路面110から立ち上がる仮想面V1(第2の仮想面)を設定する。
図11(a)は、この仮想面V1を、路面110から垂直に立ち上がり、カメラ100の光軸を含み路面110から垂直に立ち上がる平面と直交する面として設定した例である。この仮想面V1の高さは、少なくともカメラ100の撮像視野の最上部を超えるものとする。
また、車両10から仮想面V1が路面110から立ち上がる位置は、接触判定手段270が車両10と物体とが接触する可能性があると判定する範囲の中で、車両10から最遠点の路面110上の位置に設定されて、車両10から仮想面V1が路面110から立ち上がる位置までの距離は、第2の距離kに設定される。
これは、仮想面V1よりも遠方にある点では、第2のオプティカルフローが実際よりも長く推定されるため、第1のオプティカルフローから第2のオプティカルフローを差し引く差分演算を行ったときに、第1のオプティカルフローを確実に除去(キャンセル)するためである。
そして、図6のステップS301では、路面と第2の仮想面である仮想面V1とに向かって、カメラ100の焦点Oから複数の半直線を延ばして、この半直線が、路面、もしくは仮想面V1と最初に交差する点で構成される面を、新たに第1の仮想面として設定する。
ステップS304では、このようにして設定された第1の仮想面の上で、オプティカルフロー推定手段230によって、第2のオプティカルフローの推定を行う。第2のオプティカルフローの推定方法は、実施例1で説明した通りである。
その後の処理は、実施例1と同様に、図4のフローチャートに沿って行われて、車両10に接触する可能性のある物体が検出されたときに、警報出力手段400から警報が出力される。
なお、仮想面V1は、接触判定手段270が車両10と物体とが接触する可能性があると判定する範囲の中で、車両10から最遠点の路面110上の位置に、路面110に垂直に設定したが、これは、図19に示すように、仮想面V1から、第3の距離sだけ近い位置に、路面110から高い地点ほど、第3の距離sが小さくなるような仮想面V2を設定して、仮想面V2を新たに仮想面V1として、上記した処理を行うようにしてもよい。
このような形態の仮想面V2を設定することによって、路面に近い位置ほど、仮想面V2と車両10との距離が小さくなるため、車両10に近いほど、高さの低い物体の検出感度を上げることができる。したがって、接触可能性を警報する上で好ましい検出特性を得ることができる。なお、第3の距離sの値には、予め実験等によって決定した値が用いられる。また、仮想面V2は、カメラ100の撮像視野の最上部において、仮想面V2が仮想面V1よりも遠方にならないようなレイアウトに設定されるのが望ましい。
以上説明したように、このように構成された実施例2に係る車両周辺監視装置によれば、カメラ(撮像手段)100で撮像された車両10周辺の画像から、オプティカルフロー検出手段240で第1のオプティカルフローが検出されるとともに、仮想面設定手段280によって、接触判定手段270が車両10と物体とが接触する可能性があると判定する範囲の中で、車両10から最遠点の路面110上の位置から立ち上がった第2の仮想面V1に、カメラ100から路面110と第2の仮想面V1に向かって延びる複数の半直線が、路面110、もしくは第2の仮想面V1と最初に交差する点で構成される面が、第1の仮想面として設定され、車両10の挙動に基づいて、第1の仮想面の上に発生する第2のオプティカルフローが推定されて、オプティカルフロー差分演算手段250が、オプティカルフロー検出手段240で検出された第1のオプティカルフローからオプティカルフロー推定手段で推定された、第1のオプティカルフローと始点を共にする第2のオプティカルフローを差し引く差分演算を行って、物体検出手段260が、差分演算の結果に基づいて車両10の周辺に存在する物体を検出して、接触判定手段270によって、物体が車両10に接触する可能性があると判定されたときに、警報出力手段400が警報を出力することができる。
そして、これによって、物体の検出範囲を警報範囲内に限定して、より実用的な車両周辺監視装置を提供することができる。
なお、本実施例2において、カメラ100は車両10の後方を撮像するレイアウトで設置したが、カメラ100の観測範囲は、車両10の後方に限定されるものではない。すなわち、車両10の前方や車両10の側方を観測するレイアウトであっても、上記した実施例1と同様の車両周辺監視装置を実現することができる。
以上、本発明の実施例1、実施例2を図面により詳述したが、実施例は本発明の例示にしか過ぎないものであるため、本発明は実施例の構成にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲の設計の変更等があっても、本発明に含まれることは勿論である。