以下、本開示の実施の形態について、図面を参照して詳細に説明する。
<実施の形態>
[構成例]
図1は、一実施の形態に係る路面検出装置(路面検出装置1)の一構成例を表すものである。路面検出装置1は、メインカメラ11Mと、サブカメラ11Sと、画像処理部12と、車速センサ13と、ヨーレートセンサ14と、舵角センサ15と、処理部20とを備えている。路面検出装置1は、自動車等の車両10に搭載される。
メインカメラ11Mおよびサブカメラ11Sは、車両10の前方を撮像することにより、互いに視差を有する一組の視差画像(メイン画像PMおよびサブ画像PS)を生成する、いわゆるステレオカメラである。メインカメラ11Mおよびサブカメラ11Sは、この例では、車両10のルームミラーの近傍において、車両10の幅方向に所定距離だけ離間して配置される。車両10の幅方向において、メインカメラ11Mは例えば運転席に近い位置に配置され、サブカメラ11Sは例えば助手席に近い位置に配置される。メインカメラ11Mおよびサブカメラ11Sは、所定のフレームレートで、互いに同期して撮像動作を行う。これにより、メインカメラ11Mはメイン画像PMを生成し、サブカメラ11Sはサブ画像PSを生成するようになっている。
画像処理部12は、メインカメラ11Mから供給されたメイン画像PM、およびサブカメラ11Sから供給されたサブ画像PSに基づいて、ステレオマッチング処理やフィルタリング処理などを含む所定の画像処理を行うことにより、距離画像PZを生成するように構成される。距離画像PZは、各画素Pと、3次元の実空間における点(座標点)の座標x,y,zとが、互いに対応づけられた画像である。ここで、座標x,y,zは、この例では、メインカメラ11Mが配置された位置とサブカメラ11Sが配置された位置との中間位置の下方における路面上の点を原点として表した座標であり、座標xは、車両10の車幅方向における座標であり、座標yは車両10の車高方向における座標であり、座標zは車長方向における座標である。そして、画像処理部12は、生成した距離画像PZを、この距離画像PZを生成する際に使用したメイン画像PMとともに、処理部20に供給するようになっている。
車速センサ13は、車両10の走行速度を検出するように構成される。ヨーレートセンサ14は、車両10のヨーレートを検出するように構成される。舵角センサ15は、車両10におけるステアリングホイールの舵角を検出するように構成される。
処理部20は、画像処理部12から供給された距離画像PZ、メイン画像PM、および車速センサ13、ヨーレートセンサ14、舵角センサ15の検出結果に基づいて、路面モデルMを生成し、生成した路面モデルMに基づいて、例えば車両10の走行制御を行うように構成される。処理部20は、例えば、プログラムを実行するCPU(Central Processing Unit)、処理データを一時的に記憶するRAM(Random Access Memory)、プログラムを記憶するROM(Read Only Memory)などにより構成される。処理部20は、路面モデル生成部21と、検証処理部22とを有している。
路面モデル生成部21は、距離画像PZ、メイン画像PM、および車速センサ13、ヨーレートセンサ14、舵角センサ15の検出結果に基づいて、所定の処理を行うことにより、路面モデルMを生成するように構成される。
検証処理部22は、路面モデル生成部21が生成した路面モデルMを検証するように構成される。例えば、車両10の前方にキャリアカーが走行している場合には、路面モデル生成部21は、このキャリアカーの車両後部の傾斜に基づいて、道路が坂道であると誤判断し、誤った路面モデルMを生成するおそれがある。そこで、検証処理部22は、距離画像PZに基づいて、この路面モデルMを検証する。そして、検証処理部22は、路面モデルMがこの誤判断により生成されたと判定した場合には、路面モデル生成部21が生成した路面モデルMの全部または一部を無効にするようになっている。
ここで、路面モデル生成部21は、本開示における「路面モデル生成部」の一具体例に対応する。検証処理部22は、本開示における「検証処理部」の一具体例に対応する。
[動作および作用]
続いて、本実施の形態の路面検出装置1の動作および作用について説明する。
(全体動作概要)
まず、図1を参照して、路面検出装置1の全体動作概要を説明する。メインカメラ11Mおよびサブカメラ11Sは、車両10の前方を撮像することにより、互いに視差を有するメイン画像PMおよびサブ画像PSを生成する。画像処理部12は、メイン画像PMおよびサブ画像PSに基づいて、ステレオマッチング処理やフィルタリング処理などを含む所定の画像処理を行うことにより、距離画像PZを生成し、生成した距離画像PZを、この距離画像PZを生成する際に使用したメイン画像PMとともに処理部20に供給する。車速センサ13は車両10の走行速度を検出し、ヨーレートセンサ14は車両10のヨーレートを検出し、舵角センサ15は車両10におけるステアリングホイールの舵角を検出する。処理部20の路面モデル生成部21は、距離画像PZ、メイン画像PM、および車速センサ13、ヨーレートセンサ14、舵角センサ15の検出結果に基づいて、所定の処理を行うことにより、路面モデルMを生成する。検証処理部22は、距離画像PZに基づいて、路面モデル生成部21が生成した路面モデルMを検証する。そして、検証処理部22は、路面モデルMが誤判断により生成されたと判定した場合には、路面モデル生成部21が生成した路面モデルMの全部または一部を無効にする。
(詳細動作)
路面検出装置1では、路面モデル生成部21が路面モデルMを生成し、検証処理部22が、路面モデル生成部21が生成した路面モデルMを検証する。以下に、これらの動作について詳細に説明する。
(路面モデル生成部21の詳細動作)
図2A,2Bは、路面モデル生成部21の一動作例を表すものである。路面モデル生成部21は、距離画像PZにおける各水平ラインHLに対応する、実空間における代表距離を求めることによりデータマップMAPを生成し、生成したデータマップMAPに基づいて路面モデルMを生成する。以下に、この動作について詳細に説明する。
まず、路面モデル生成部21は、距離画像PZにおいて演算対象領域RAを設定する(ステップS101)。
図3は、演算対象領域RAの一例を表すものである。この例では、車両10は、片側3車線の道路を走行している。路面モデル生成部21は、車速センサ13、ヨーレートセンサ14、および舵角センサ15の検出結果に基づいて、車両10が今後進行すると推定される進行経路99を算出するとともに、例えばメイン画像PMに基づいて、車線を区画する区画線100L,100Rを検出する。そして、路面モデル生成部21は、算出した進行経路99を含み、2つの区画線100L,100Rにより挟まれた領域を、演算対象領域RAとして設定する。
次に、路面モデル生成部21は、距離画像PZにおいて水平ラインHLを選択する(ステップS102)。具体的には、路面モデル生成部21は、ステップS101において演算対象領域RAを選択した直後では、距離画像PZにおける一番下の水平ラインHL0を選択する。そして、路面モデル生成部21は、ステップS112から戻りこのステップS102の動作を行う度に、距離画像PZにおいて下から上に向かって、水平ラインHL1,HL2,HL3,…のように、水平ラインHLを1ライン単位で順次選択する。
次に、路面モデル生成部21は、選択された水平ラインHLに属する画素Pに対応する、実空間における座標点の座標zに基づいて、距離についてのヒストグラムHを生成する(ステップS103)。具体的には、路面モデル生成部21は、選択した水平ラインHLに属する複数の画素Pのうち、演算対象領域RAに属し、かつ、その画素Pに対応する実空間における座標点の座標yが、前回生成された路面モデルMに基づいて推定された路面の位置から所定の範囲内にあるような複数の画素Pを特定する。そして、路面モデル生成部21は、この特定された複数の画素Pのそれぞれに対応する、実空間における座標点の座標zに基づいて、ヒストグラムHを生成する。
図4は、あるj番目の水平ラインHLjに属する画素Pに基づいて生成されたヒストグラムHjの一例を表すものである。横軸は座標zの値を示し、縦軸は頻度を示す。この例では、座標値zjにおいて、頻度が一番高くなっている。
次に、路面モデル生成部21は、ステップS103において生成したヒストグラムHに基づいて、代表距離を求める(ステップS104)。この例では、路面モデル生成部21は、図4に示したように、ヒストグラムHjにおいて、頻度が一番高い座標値zjを、j番目の水平ラインHLjにおける代表距離として求める。
次に、路面モデル生成部21は、ステップS104において求めた代表距離を、データマップMAPが示すz-j平面に、距離点Dとしてプロットする(ステップS105)。
図5は、データマップMAPの一例を表すものである。データマップMAPが示すz-j平面には、0番目の水平ラインHL0の代表距離を示す距離点D0(z0,0)、1番目の水平ラインHL1の代表距離を示す距離点D1(z1,1)、2番目の水平ラインHL2の代表距離を示す距離点D2(z2,2)を含む複数の距離点Dがプロットされている。これらの距離点Dは、この例では、ほぼ一直線上に配置されている。
次に、路面モデル生成部21は、データマップMAPの連続性を評価する(ステップS106)。
図6は、データマップMAPの一例を表すものである。データマップMAPでは、図5に示したように、水平ラインHLjの番目の数j(縦軸)が大きくなるほど、代表距離(横軸)が長くなることが望まれる。すなわち、図3において、水平ラインHLが上に進むほど、その水平ラインHLに属する画素Pに対応する実空間における座標点は、車両10から離れるからである。しかしながら、例えば、画像処理部12がステレオマッチング処理を行う際に、ミスマッチが生じた場合には、図6に示したように、後にプロットされた距離点Djnewが示す代表距離zjnewが、先にプロットされた距離点Djoldが示す代表距離zjoldと同じか、あるいは代表距離zjoldよりも短くなる場合があり得る。このような場合には、路面モデル生成部21は、連続性がないと判断する。
ステップS106において、連続性があると判断した場合(ステップS106において“Y”)には、路面モデル生成部21は、後述する最小二乗法による演算の準備として、準備演算を行う(ステップS107)。具体的には、路面モデル生成部21は、後述するステップS113~S117において、最小二乗法による演算処理を行うことにより、データマップMAPを、式(1)に示す一次関数(近似直線)で近似する。
最小二乗法では、この式(1)におけるパラメータa,bは、以下の式で表される。
そこで、路面モデル生成部21は、この最小二乗法による演算の準備として、このステップS107において、式(2)で使用するΣz、Σj、Σz
2、およびΣ(z・j)を算出する。具体的には、路面モデル生成部21は、直前のΣz、Σj、Σz
2、およびΣ(z・j)に、ステップS105においてプロットした距離点Dについてのz、j、z
2、(z・j)を加算することにより、Σz、Σj、Σz
2、およびΣ(z・j)を更新する。そして、ステップS112に進む。
ステップS106において、連続性がないと判断した場合(ステップS106において“N”)には、路面モデル生成部21は、ステップS105においてデータマップMAPにプロットした距離点Dを削除する(ステップS108)。具体的には、例えば図6の例では、路面モデル生成部21は、距離点Djnewを削除する。図6では、最終的に削除された距離点Djnewを白い丸で示している。
次に、路面モデル生成部21は、所定回数続けて距離点Dを削除したかどうかを確認する(ステップS109)。所定回数続けて距離点Dを削除していない場合(ステップS109において“N”)には、ステップS112に進む。また、所定回数続けて距離点Dを削除した場合(ステップS109において“Y”)には、続けて削除した複数の距離点Dの一つ前の距離点Dを削除する(ステップS110)。これにより、以下に説明するように、例えば最初の距離点D0が異常である場合において、不具合が生じないようにすることができる。
図7は、所定回数続けて距離点Dを削除した場合の一例を表すものである。この例では、画像処理部12がステレオマッチング処理を行う際に、ミスマッチが生じたことにより、最初の距離点D0が示す代表距離z0が大きい値になっている。この例では、その後に、画像処理部12が正常にステレオマッチング処理を行い、路面モデル生成部21が距離点D1~D4を生成している。しかしながら、これらの距離点D1~D4が示す代表距離z1,z2,z3,z4はいずれも代表距離z0よりも短いので、路面モデル生成部21は、連続性がないと判断し(ステップS106において“N”)、距離点D1~D4を削除する(ステップS108)。すなわち、最初の距離点D0が異常であるにもかかわらず、路面モデル生成部21は、距離点D1~D4を削除する。このように、路面モデル生成部21は、所定回数(この例では4回)続けて距離点Dを削除した場合に、続けて削除した複数の距離点D(この例では距離点D1~D4)の一つ前の距離点D(この例では距離点D0)は異常な距離点Dであると判断して、この距離点Dを削除する。これにより、路面モデル生成部21では、続けて削除した複数の距離点Dより後の距離点D(この例では距離点D5以降)が続けて削除されないようにすることができる。図7では、最終的に削除された距離点Dを白い丸で示している。
次に、路面モデル生成部21は、準備演算の結果を修正する(ステップS111)。具体的には、ステップS107において算出したΣz、Σj、Σz2、およびΣ(z・j)には、ステップS110において削除した距離点D(この例では距離点D0)についての数値が含まれている。よって、路面モデル生成部21は、Σz、Σj、Σz2、およびΣ(z・j)から、ステップS110において削除した距離点Dについてのz、j、z2、(z・j)を減算することにより、準備演算の結果を修正する。
次に、路面モデル生成部21は、距離画像PZにおける全ての水平ラインHLを選択したかどうかを確認する(ステップS112)。まだ全ての水平ラインHLを選択していない場合(ステップS112において“N”)には、ステップS102に戻り、全ての水平ラインHLを選択するまで、これらのステップS102~S112を繰り返す。
図8は、このようにして生成されたデータマップMAPの一例を表すものである。この例では、データマップMAPは、複数の距離点D(距離点D0~DN)が示す線が、途中で折れ曲がっている。このデータマップMAPにおいて、部分101は、この例では平坦な道路に対応し、部分102は、傾斜している道路に対応する。すなわち、この例では、車両10の進行方向の前方に上り坂がある。路面モデル生成部21は、この例では、以下に示すように、この複数の距離点Dの配列を、最小二乗法を用いて、2つの近似直線L1,L2により表現する。
まず、路面モデル生成部21は、距離点D0~DNを、距離点DN-2と距離点DN-1の間に境界Bを設定することにより、2つのグループG1,G2に分ける(ステップS113)。グループG1は、境界Bよりも車両10に近い距離点Dを含み、グループG2は、境界Bよりも車両10から遠い距離点Dを含む。路面モデル生成部21は、まず、ステップS107において行った準備演算の最終結果(Σz、Σj、Σz2、およびΣ(z・j))から、2つの距離点DN-1,DNについてのz、j、z2、(z・j)をそれぞれ減算することにより、グループG1に属する距離点D(距離点D0~DN-2)についてのΣz、Σj、Σz2、およびΣ(z・j)を求める。また、路面モデル生成部21は、2つの距離点DN-1,DNについてのz、j、z2、(z・j)をそれぞれ加算することにより、グループG2に属する距離点D(距離点DN-1,DN)についてのΣz、Σj、Σz2、およびΣ(z・j)を求める。
次に、路面モデル生成部21は、最小二乗法を用いて、グループG1,G2についての近似直線L1,L2を求める(ステップS114)。
具体的には、路面モデル生成部21は、グループG1に属する距離点DについてのΣz、Σj、Σz2、およびΣ(z・j)を式(2)に代入することにより、パラメータa,bを求める。このようにして求めたパラメータa,bは、グループG1に係る近似直線L1におけるパラメータa1,b1である。これにより、路面モデル生成部21は、近似直線L1の式(j=a1×z+b1)を得る。
同様に、路面モデル生成部21は、グループG2に属する距離点DについてのΣz、Σj、Σz2、およびΣ(z・j)を式(2)に代入することにより、パラメータa,bを求める。このようにして求めたパラメータa,bは、グループG2に係る近似直線L2におけるパラメータa2,b2である。これにより、路面モデル生成部21は、近似直線L2の式(j=a2×z+b2)を得る。
図9は、距離点DN-2と距離点DN-1の間に境界Bを設定した場合における、近似直線L1,L2の一例を表すものである。この例では、特に、グループG1についての近似直線L1が、グループG1に属する複数の距離点Dからずれている。
次に、路面モデル生成部21は、グループG
1,G
2についての分散値A
1,A
2を求める(ステップS115)。具体的には、路面モデル生成部21は、以下の式を用いて、グループG
1に含まれるn
1個の距離点Dについての分散値A
1を求めるとともに、グループG
2に含まれるn
2個の距離点Dについての分散値A
2を求める。
分散値A
1は、グループG
1に属する距離点Dと近似直線L
1との一致度合いを示し、分散値A
1が小さいほど、グループG
1に属する距離点Dと近似直線L
1とが一致していることを示す。同様に、分散値A
2は、グループG
2に属する距離点Dと近似直線L
2との一致度合いを示し、分散値A
2が小さいほど、グループG
2に属する距離点Dと近似直線L
2とが一致していることを示す。そして、路面モデル生成部21は、境界Bの位置、パラメータa
1,b
1,a
2,b
2、および分散値A
1,A
2を対応づけて一旦記憶する。
次に、路面モデル生成部21は、境界Bが、距離点D1と距離点D2の間に設定されているかどうかを確認する(ステップS116)。
ステップS116において、境界Bが、まだ距離点D1と距離点D2の間に設定されていない場合(ステップS116において“N”)には、路面モデル生成部21は、グループG1に属する距離点Dの数n1が一つ減少し、グループG2に属する距離点Dの数n2が1つ増加するように、境界Bを移動する(ステップS117)。これにより、1つの距離点Dが、グループG1からグループG2に移動する。そして、路面モデル生成部21は、グループG1に属する距離点DについてのΣz、Σj、Σz2、およびΣ(z・j)から、移動した距離点Dについてのz、j、z2、(z・j)をそれぞれ減算することにより、グループG1に属する距離点DについてのΣz、Σj、Σz2、およびΣ(z・j)を更新する。同様に、路面モデル生成部21は、グループG2に属する距離点DについてのΣz、Σj、Σz2、およびΣ(z・j)に、移動した距離点Dについてのz、j、z2、(z・j)をそれぞれ加算することにより、グループG2に属する距離点DについてのΣz、Σj、Σz2、およびΣ(z・j)を更新する。そして、ステップS114に戻る。このようにして、路面モデル生成部21は、境界Bを移動させつつ、パラメータa1,b1,a2,b2、および分散値A1,A2を求める。
そして、ステップS116において、境界Bが、距離点D1と距離点D2の間に設定された場合(ステップS116において“Y”)には、路面モデル生成部21は、ステップS113~S117において算出した、境界Bを様々な位置に設定したときのパラメータa1,b1,a2,b2、および分散値A1,A2に基づいて、2つの近似直線L1,L2を決定する(ステップS118)。具体的には、路面モデル生成部21は、例えば、境界Bを様々な位置に設定したときの分散値A1と分散値A2の和が最小になるような境界Bの位置を特定し、その境界Bの位置に対応づけられたパラメータa1,b1に基づいて近似直線L1を決定し、その境界Bの位置に対応づけられたパラメータa2,b2に基づいて近似直線L2を決定する。
図10は、ステップS118において決定した2つの近似直線L1,L2の一例を表すものである。図10に示したように、路面モデル生成部21は、この例では、距離点Dの配列を、2つの近似直線L1,L2により表現することができる。なお、この2つの近似直線L1,L2の結合部分Cについては、例えば、近似直線L1および近似直線L2を接線とする緩和曲線により表現してもよい。
そして、路面モデル生成部21は、2つの近似直線L1,L2を実空間に座標変換することにより、路面モデルMを生成する(ステップS119)。
図11は、路面モデルMの一例を表すものである。この例では、路面モデルMは、路面モデルM1と、路面モデルM2とを含んでいる。路面モデルM1は、車両10に近い場所におけるモデルであり、近似直線L1を実空間に座標変換することにより得られる。路面モデルM2は、車両10から遠い場所におけるモデルであり、近似直線L2を実空間に座標変換することにより得られる。この例では、路面モデルM1は、平坦な道路に対応し、路面モデルM2は、勾配SLで傾斜している道路に対応する。
以上で、このフローは終了する。このようにして、路面モデル生成部21は、図11に示した路面モデルMを生成する。
(検証処理部22の詳細動作)
次に、検証処理部22の動作について詳細に説明する。
図12は、メイン画像PMの一例を表すものである。この例では、車両10の前方にキャリアカー9が走行している。路面モデル生成部21は、上述したように、路面モデルMを生成する。この例では、路面モデル生成部21は、このキャリアカー9の車両後部の傾斜に基づいて、道路が坂道であると誤判断し、誤った路面モデルMを生成している。検証処理部22は、距離画像PZおよびメイン画像PMに基づいて、この路面モデルMを検証する。そして、検証処理部22は、路面モデルMがこの誤判断により生成されたと判定した場合には、路面モデル生成部21が生成した路面モデルMの全部または一部を無効にする。
図13は、検証処理部22の一動作例を表すものである。検証処理部22は、3つの条件を満たした場合に、路面モデル生成部21が生成した路面モデルMの全部または一部を無効にする。以下に、この動作について詳細に説明する。
まず、検証処理部22は、距離画像PZに基づいて、背景点カウント処理を行う(ステップS201)。
図14は、背景点カウント処理の一例を表すものである。まず、検証処理部22は、距離画像PZにおいて、演算対象領域RBを設定する(ステップS211)。
図15は、検証処理部22が演算対象領域RBを設定する動作の一例を表すものである。この例では、路面モデル生成部21は、このキャリアカー9の車両後部の傾斜に基づいて、道路が坂道であると誤判断し、誤った路面モデルMを生成している。検証処理部22は、この路面モデルMを用いて算出された、車両10が今後進行すると推定される進行経路99を中心とする所定の幅(例えば10m)の領域を、演算対象領域RBとして設定する。
次に、検証処理部22は、演算対象領域RBにおいて画素Pを選択する(ステップS212)。具体的には、検証処理部22は、例えば、演算対象領域RBにおける左下から順に、画素Pを順次選択する。
次に、検証処理部22は、選択された画素Pが背景点に該当するかどうかを確認する(ステップS213)。ここで、背景点は、演算対象領域RBにおける複数の画素Pのうち、対応する実空間における座標点が、路面モデルMが示す路面に対応する面よりも下に位置するような画素Pである。すなわち、図15において、キャリアカー9に対応する領域の左の領域103や、キャリアカー9に対応する領域の右の領域104では、実空間における座標点は、路面モデルMが示す路面よりも下に位置する。検証処理部22は、後述するように、このような画素Pの数をカウントすることにより、路面モデルMを検証する。
図16は、画素Pが背景点に該当するかどうかの判断基準の一例を表すものである。検証処理部22は、路面モデルMに含まれる路面モデルM1が示す路面S1を下方向に所定量Δyaだけ平行移動することにより面S11を設定するとともに、路面モデルMに含まれる路面モデルM2が示す路面S2を下方向に所定量Δyaだけ平行移動することにより面S21を設定する。所定量Δyaは、路面モデルMの精度や、画像処理部12により算出された座標x,y,zの精度を考慮して、演算の便宜上設けられたマージンである。路面モデルMや座標x,y,zの精度が十分に高い場合には、例えば、所定量Δyaを0(ゼロ)にしてもよい。また、検証処理部22は、メインカメラ11Mおよびサブカメラ11Sの光軸を含む、路面に平行な面S3を下方向に所定量Δybだけ平行移動することにより面S31を算出する。そして、検証処理部22は、選択された画素Pに対応する実空間における座標点が、面S11および面S21により構成される合成面と面S31との間(図16における斜線部)に位置するかどうかを確認することにより、この画素Pが背景点であるかどうかを確認する。なお、この例では、演算の便宜上、面S31を設けるようにしたが、これに限定されるものではなく、例えば、面S31を設けず、座標点が、面S11,S21により構成される合成面よりも下に位置するかどうかを確認してもよい。
検証処理部22は、選択された画素Pが背景点に該当する場合(ステップS213において“Y”)には、カウント値CNTをインクリメントする(ステップS214)。
そして、検証処理部22は、演算対象領域RBにおける全ての画素Pを選択したかどうかを確認する(ステップS215)。まだ全ての画素Pを選択していない場合(ステップS215において“N”)には、ステップS212に戻り、全ての画素Pを選択するまで、これらのステップS212~S215を繰り返す。
図17は、背景点の一例を表すものである。図17では、背景点に対応する画素Pを四角形で示している。なお、この図では、説明の便宜上、画素Pを大きく描いている。この例では、キャリアカー9に対応する領域の左右の領域において、複数の画素Pが背景点に該当すると判断される。
このようにして、背景点カウント処理は終了する。カウント値CNTの最終的な値が、この距離画像PZに基づいて得られた背景点の数である。
次に、図13に示したように、検証処理部22は、背景点の数がしきい値Nth1以上であるかどうかを確認する(ステップS202)。背景点の数がしきい値Nth1以上ではない場合(ステップS202において“N”)には、検証処理部22は、この路面モデルMは正しいと判断し、このフローは終了する。
ステップS202において、背景点の数がしきい値Nth1以上である場合(ステップS202において“Y”)には、検証処理部22は、距離画像PZに基づいて、傾斜幅算出処理を行う(ステップS203)。
図18は、傾斜幅算出処理の一例を表すものである。まず、検証処理部22は、距離画像PZにおいて水平ラインHLを選択する(ステップS221)。具体的には、検証処理部22は、距離画像PZにおいて下から上に向かって、水平ラインHLを1ライン単位で順次選択する。
次に、検証処理部22は、選択された水平ラインHLに属する画素Pに対応する、実空間における座標点の座標zに基づいて、傾斜幅W1を算出する(ステップS222)。
図19は、検証処理部22が傾斜幅Wを算出する処理の一例を表すものである。検証処理部22は、選択した水平ラインHLに属する複数の画素Pのうち、演算対象領域RBに属する画素Pに対応する、実空間における座標点の座標zに基づいて、傾斜幅W1を算出する。すなわち、キャリアカー9に対応する領域では座標zの値が小さく、キャリアカー9に対応する領域の左右の領域では座標zの値が大きいので、検証処理部22は、例えば、座標zが所定のしきい値よりも小さい画素Pを特定することにより、キャリアカー9の幅を把握することができる。そして、検証処理部22は、特定された画素Pに対応する実空間における座標点の座標xに基づいて、傾斜幅W1を算出することができる。
そして、検証処理部22は、全ての水平ラインHLを選択したかどうかを確認する(ステップS223)。まだ全ての水平ラインHLを選択していない場合(ステップS223において“N”)には、ステップS221に戻り、全ての水平ラインHLを選択するまで、これらのステップS221~S223を繰り返す。
そして、全ての水平ラインHLを選択した場合(ステップS223において“Y”)には、検証処理部22は、例えば、ステップS223において算出した複数の傾斜幅W1の平均値を求めることにより、傾斜幅Wを算出する(ステップS224)。
このようにして、傾斜幅算出処理は終了する。なお、この例では、ステップS221において、一番下の水平ラインHL0から順に水平ラインHLを選択したが、これに限定されるものではなく、検証処理部22は、例えば、図10に示した2つの近似直線L1,L2の結合部分Cに対応する水平ラインHLから順に水平ラインHLを選択してもよい。また、この例では、ステップS223において、全ての水平ラインHLを選択するまで、これらのステップS221~S223を繰り返すようにしたが、これに限定されるものではなく、検証処理部22は、例えば、座標zの値の差が小さくなった場合には、水平ラインHLがキャリアカー9に対応する領域から外れたと判断し、ステップS224に進んでもよい。
次に、図13に示したように、検証処理部22は、傾斜幅Wがしきい値Nth2未満であるかどうかを確認する(ステップS204)。このしきい値Nth2は、例えば5mに設定することができる。傾斜幅Wがしきい値Nth2未満ではない場合(ステップS204において“N”)には、検証処理部22は、この路面モデルMは正しいと判断し、このフローは終了する。
ステップS204において、傾斜幅Wがしきい値Nth2未満である場合(ステップS204において“Y”)には、検証処理部22は、路面モデルMに含まれる路面モデルM2が示す傾斜の勾配SLがしきい値Nth3以上であるかどうかを確認する(ステップS205)。このしきい値Nth3は、例えば10%に設定することができる。路面モデルM2が示す傾斜の勾配がしきい値Nth3以上ではない場合(ステップS205において“N”)には、検証処理部22は、この路面モデルMは正しいと判断し、このフローは終了する。
ステップS205において、傾斜の勾配がしきい値Nth3以上である場合(ステップS205において“Y”)には、検証処理部22は、路面モデル生成部21が生成した路面モデルMの全部または一部を無効にする(ステップS206)。具体的には、例えば、図11に示したように、路面モデルMが路面モデルM1,M2を含んでいる場合には、検証処理部22は、路面モデル生成部21が生成した路面モデルMのうちの、傾斜している道路に対応する路面モデルM2のみを無効にする。また、例えば、路面モデルMが、路面モデルM1を含んでおらず、路面モデルM2のみを含んでいる場合には、検証処理部22は、路面モデル生成部21が生成した路面モデルM自体を無効にする。
ここで、画素Pは、本開示における「画像点」の一具体例に対応する。路面モデルM2は、本開示における「傾斜路面モデル」の一具体例に対応する。傾斜幅Wは、本開示における「傾斜路面幅」の一具体例に対応する。勾配SLは、本開示における「傾斜勾配」の一具体例に対応する。
このように、路面検出装置1では、背景点カウント処理において、距離画像PZにおける複数の画素Pのうち、その画素Pに対応する実空間における座標点が、路面モデルMが示す路面に対応する面(図16における面S11,S21)よりも下に位置する画素Pの数を、背景点の数として求めるようにした。そして、路面検出装置1は、背景点の数がしきい値Nth1以上であるかどうかを確認するようにした。これにより、路面検出装置1では、例えば、車両10の前方を走行するキャリアカー9の車両後部の傾斜に基づいて、誤った路面モデルMを生成した場合でも、路面モデルMが誤判断により生成されたと判定することができ、この誤った路面モデルMの全部または一部を無効にすることができる。その結果、路面検出装置1では、路面モデルMの精度を高めることができる。
仮に、誤った路面モデルMが無効にされず、継続して使用される場合には、例えば、この路面モデルMに基づいて車両10の走行制御が行われてしまう。また、キャリアカー9が先行車両として認識されていた場合において、あるタイミングで、そのキャリアカー9が坂として認識された場合には、先行車両が消滅したと判断されるので、例えば緊急ブレーキや追従走行などの運転支援が行われなくなるおそれがある。
一方、路面検出装置1では、誤った路面モデルMが生成された場合には、この路面モデルMの全部または一部を無効にすることができるので、誤った路面モデルMに基づいて車両10の走行制御が行われるおそれを低減することができる。また、路面検出装置1では、キャリアカー9が坂として認識されることにより、先行車両が消滅したと判断された場合でも、その後、路面モデルMの全部または一部を無効にすることにより、キャリアカー9を先行車両として認識するようになるので、運転支援を維持することができる。
また、路面検出装置1は、さらに、傾斜幅Wがしきい値Nth2未満であるかどうかを確認するとともに、傾斜の勾配がしきい値Nth3以上であるかどうかを確認するようにした。これにより、路面検出装置1では、路面モデルMが誤判断により生成されたと判定する際の判定精度を高めることができる。
[効果]
以上のように本実施の形態では、背景点カウント処理において、距離画像における複数の画素のうち、その画素に対応する実空間における座標点が、路面モデルが示す路面に対応する面よりも下に位置する画素の数を、背景点の数として求め、その背景点の数がしきい値Nth1以上であるかどうかを確認するようにした。これにより、誤った路面モデルMの全部または一部を無効にすることができるので、路面モデルの精度を高めることができる。
本実施の形態では、さらに、傾斜幅がしきい値Nth2未満であるかどうかを確認するとともに、傾斜の勾配がしきい値Nth3以上であるかどうかを確認するようにしたので、路面モデルが誤判断により生成されたと判定する際の判定精度を高めることができる。
[変形例1]
上記実施の形態では、図13に示したように、ステップS202において、背景点の数をしきい値Nth1と比較し、ステップS204において、傾斜幅Wをしきい値Nth2と比較し、ステップS205において、傾斜の勾配としきい値Nth3とを比較したが、この順番に限定されるものではなく、どのような順番であってもよい。また、このように3つの処理を順番に行う例に限定されるものではなく、3つの処理を並列に行ってもよい。
[変形例2]
上記実施の形態では、図13に示したように、ステップS204において、傾斜幅Wがしきい値Nth2未満であるかどうかを確認したが、これに限定されるものではなく、これに代えて、例えばステップS203,S204を省いてもよい。同様に、ステップS205において、傾斜の勾配がしきい値Nth3以上であるかどうかを確認したが、これに限定されるものではなく、これに代えて、例えば、ステップS205を省いてもよい。
[変形例3]
上記実施の形態では、背景点カウント処理において、画素Pを単位として背景点の数をカウントしたが、これに限定されるものではない。これに変えて、例えば、複数の画素Pを単位として背景点の数をカウントしてもよい。
次に、検証処理部22は、演算対象領域RBにおいて画素Pを選択する(ステップS212)。具体的には、検証処理部22は、例えば、演算対象領域RBにおける左下から順に、画素Pを順次選択する。
次に、検証処理部22は、選択された画素Pが背景点に該当するかどうかを確認する(ステップS213)。ここで、背景点は、演算対象領域RBにおける複数の画素Pのうち、対応する実空間における座標点が、路面モデルMが示す路面に対応する面よりも下に位置するような画素Pである。すなわち、図15において、キャリアカー9に対応する領域の左の領域103や、キャリアカー9に対応する領域の右の領域104では、実空間における座標点は、路面モデルMが示す路面よりも下に位置する。検証処理部22は、後述するように、このような画素Pの数をカウントすることにより、路面モデルMを検証する。
以上、いくつかの実施の形態および変形例を挙げて本技術を説明したが、本技術はこれらの実施の形態等には限定されず、種々の変形が可能である。
例えば、上記実施の形態では、図12に示したように、1次関数を組み合わせることにより路面モデルMを表現したが、これに限定されるものではなく、例えば、2次関数などの他の関数をも組み合わせることにより路面モデルMを表現してもよいし、関数を用いずに複数の距離点Dを内挿することにより路面モデルMを表現してもよい。
なお、本明細書中に記載された効果はあくまで例示であって限定されるものではなく、また、他の効果があってもよい。