以下に、図1~図20を参照しながら、本発明に係る画像処理装置、物体認識装置、機器制御システム、移動体、画像処理方法およびプログラムの実施形態を詳細に説明する。また、以下の実施形態によって本発明が限定されるものではなく、以下の実施形態における構成要素には、当業者が容易に想到できるもの、実質的に同一のもの、およびいわゆる均等の範囲のものが含まれる。さらに、以下の実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換、変更および組み合わせを行うことができる。
[第1の実施形態]
(物体認識装置を備えた車両の概略構成)
図1は、第1の実施形態に係る機器制御システムを車両に搭載した例を示す図である。図1を参照しながら、本実施形態に係る機器制御システム60が車両70に搭載される場合を例に説明する。
図1のうち、図1(a)は、機器制御システム60を搭載した車両70(移動体の一例)の側面図であって、機器制御システム60の搭載態様の概略図であり、図1(b)は、車両70の正面図であり、そして、図1(c)は、車両70の平面図(上面図)である。
図1に示すように、自動車である車両70は、機器制御システム60を搭載している。機器制御システム60は、車両70の居室空間である車室に設置された物体認識装置1と、車両制御装置6(制御装置)と、ステアリングホイール7と、ブレーキペダル8と、を備えている。
物体認識装置1は、車両70の進行方向を撮像する撮像機能を有し、例えば、車両70のフロントウィンドウ内側のバックミラー近傍に設置される。物体認識装置1は、構成および動作の詳細は後述するが、各ハードウェア部品を内蔵した本体部2と、本体部2に固定された撮像部10aと、撮像部10bとを備えている。撮像部10a、10bは、車両70の進行方向の被写体を撮像できるように本体部2に固定されている。図1(c)に示すように、撮像部10aで撮像される視界(右目視界)と、撮像部10bで撮像される視界(左目視界)とは、ずれがあるため、これが視差として測定される。
車両制御装置6は、物体認識装置1から受信した認識情報に基づいて、各種車両制御を実行するECU(Electronic Control Unit)である。車両制御装置6は、車両制御の例として、物体認識装置1から受信した認識情報に基づいて、ステアリングホイール7を含むステアリング系統(制御対象の一例)を制御して障害物を回避するステアリング制御、または、ブレーキペダル8(制御対象の一例)を制御して車両70を減速および停止させるブレーキ制御等を実行する。
このような物体認識装置1および車両制御装置6を含む機器制御システム60のように、ステアリング制御またはブレーキ制御等の車両制御が実行されることによって、車両70の運転の安全性を向上することができる。
なお、上述のように、物体認識装置1は、車両70の前方を撮像するものとしたが、これに限定されるものではない。すなわち、物体認識装置1は、車両70の後方または側方を撮像するように設置されるものとしてもよい。この場合、物体認識装置1は、車両70の後方の後続車および人、または側方の他の車両および人等の位置を検出することができる。そして、車両制御装置6は、車両70の車線変更時または車線合流時等における危険を検知して、上述の車両制御を実行することができる。また、車両制御装置6は、車両70の駐車時等におけるバック動作において、物体認識装置1によって出力された車両70の後方の障害物についての認識情報に基づいて、衝突の危険があると判断した場合に、上述の車両制御を実行することができる。
(物体認識装置の構成)
図2は、第1の実施形態に係る物体認識装置の外観の一例を示す図である。図2に示すように、物体認識装置1は、上述のように、各ハードウェア部品を内蔵した本体部2と、本体部2に固定された撮像部10aと、撮像部10bとを備えている。撮像部10a、10bは、本体部2に対して平行等位に配置された一対の円筒形状のカメラで構成されている。また、説明の便宜上、図2に示す撮像部10aを右のカメラと称し、撮像部10bを左のカメラと称する場合がある。
<物体認識装置のハードウェア構成>
図3は、第1の実施形態に係る物体認識装置のハードウェア構成の一例を示す図である。図3を参照しながら、本実施形態に係る物体認識装置1のハードウェア構成について説明する。
図3に示すように、物体認識装置1は、撮像部10a(第1撮像部)と、撮像部10b(第2撮像部)と、情報処理部30と、を備えている。撮像部10aおよび撮像部10bによって、いわゆるステレオカメラが構成される。
撮像部10aは、前方の被写体を撮像して撮像画像(輝度画像)(第1撮像画像)を生成する処理部である。撮像部10aは、撮像レンズ11aと、画像センサ13aと、センサコントローラ20aと、を備えている。
撮像レンズ11aは、入射する光を屈折させて物体の像を画像センサ13aに結像させるための光学素子である。画像センサ13aは、撮像レンズ11aに入射して透過した光を電気的なアナログの画像信号に変換する半導体素子である。画像センサ13aは、例えば、CCD(Charge Coupled Devices)またはCMOS(Complementary Metal Oxide Semiconductor)等の固体撮像素子によって実現される。
センサコントローラ20aは、画像センサ13aの露光制御、画像読み出し制御、外部回路との通信、および画像データの送信制御等を行うコントローラである。センサコントローラ20aは、画像センサ13aによって得られたアナログの画像信号をデジタル形式の画像データ(以下、単に「画像」と称する場合がある)(撮像画像、輝度画像)に変換して、後段の情報処理部30に送信する。
撮像部10bは、前方の被写体を撮像して撮像画像(輝度画像)(第2撮像画像)を生成する処理部である。撮像部10bは、撮像レンズ11bと、画像センサ13bと、センサコントローラ20bと、を備えている。なお、撮像レンズ11b、画像センサ13bおよびセンサコントローラ20bの機能は、それぞれ上述した撮像レンズ11a、画像センサ13aおよびセンサコントローラ20aの機能と同様である。また、撮像レンズ11aおよび撮像レンズ11bは、左右のカメラが同一の条件で撮像されるように、それぞれのレンズの主面が互いに同一平面上にあるように設置されている。
情報処理部30は、撮像部10a、10bからそれぞれ得られた輝度画像から、視差画像を生成し、当該視差画像に基づいて、輝度画像に写り込んでいる人および車等の物体を認識する物体認識処理を行う装置である。情報処理部30は、物体認識処理の結果を示す認識情報を、車両制御装置6に出力する。情報処理部30は、FPGA(Field Programmable Gate Array)31と、CPU(Central Processing Unit)32と、ROM(Read Only Memory)33と、RAM(Random Access Memory)34と、データI/F(Interface)35と、シリアルI/F36と、シリアルバスライン38と、データバスライン39と、を備えている。
FPGA31は、画像データに対してリアルタイム性が要求される処理を行う集積回路である。FPGA31は、例えば、ガンマ補正、歪み補正(左右画像の平行化)、ブロックマッチングによる視差演算を行い、視差画像を生成し、生成した視差画像をRAM34に書き込む。
CPU32は、情報処理部30の各機能を制御する演算装置である。CPU32は、例えば、撮像部10a、10bのセンサコントローラ20a、20bの制御を行う。また、CPU32は、データI/F35を介して、車両70のCAN(Controller Area Network)情報(例えば、車速、加速度、舵角、ヨーレート等)を取得し、ROM33に記憶されている物体認識処理プログラムに従って、RAM34に記憶されている輝度画像および視差画像を用いて、物体に対する物体認識処理を行う。
ROM33は、CPU32が情報処理部30の物体認識処理を実行する物体認識処理プログラムを記憶している不揮発性の記憶装置である。物体認識処理プログラムは、画像処理プログラムの一例である。
RAM34は、CPU32にワークエリアとして使用される揮発性の記憶装置である。
データI/F35は、車両70のCANに接続され、CAN情報を受信するインターフェースである。シリアルI/F36は、情報処理部30による物体認識処理により生成された認識情報を、例えば、外部の車両制御装置6に送信するためのインターフェースである。
シリアルバスライン38は、FPGA31またはCPU32からのセンサ露光値の変更制御データ、画像読み出しパラメータの変更制御データ、および各種設定データ等を、センサコントローラ20a、20bへ送信するためのバスである。データバスライン39は、図3に示すように、センサコントローラ20a、20b、FPGA31、CPU32、ROM33、RAM34、データI/F35およびシリアルI/F36が互いに通信可能となるように接続するバスである。
なお、情報処理部30は、視差画像を生成する集積回路としてFPGA31を備えるものとしているが、これに限定されるものではなく、ASIC(Application Specific Integrated Circuit)等のその他の集積回路であってもよい。
また、図3に示す物体認識装置1のハードウェア構成は一例であって、これに限定されるものではなく、図3に示した構成要素を全て含む必要はなく、または、その他の構成要素を含むものとしてもよい。
<物体認識装置の機能ブロックの構成および動作>
図4は、第1の実施形態に係る物体認識装置の機能ブロック構成の一例を示す図である。図5は、視差画像から生成されるVマップの一例を示す図である。図6は、視差画像から生成されるUマップの一例を示す図である。図4~図6を参照しながら、本実施形態に係る物体認識装置1の機能ブロック構成および動作について説明する。
図4に示すように、本実施形態に係る物体認識装置1は、画像取得部100a、100bと、変換部200a、200bと、視差演算部300(第2生成部)と、路面推定部400と、クラスタリング部450と、棄却部500と、トラッキング判定部550と、を有する。
画像取得部100aは、右のカメラにより前方の被写体を撮像して、アナログの画像信号を生成し、画像信号に基づく画像(撮像画像)である輝度画像を得る機能部である。画像取得部100aは、図3に示す撮像部10aによって実現される。
画像取得部100bは、左のカメラにより前方の被写体を撮像して、アナログの画像信号を生成し、画像信号に基づく画像(撮像画像)である輝度画像を得る機能部である。画像取得部100bは、図3に示す撮像部10bによって実現される。
変換部200aは、画像取得部100aにより得られた輝度画像の画像データに対して、ノイズの除去等を行い視差画像の基となる基準画像Iaに変換して生成する機能部である。変換部200aは、図3に示すFPGA31によって実現される。
変換部200bは、画像取得部100bにより得られた輝度画像の画像データに対して、ノイズの除去等を行い視差画像の基となる比較画像Ibに変換して生成する機能部である。変換部200bは、図3に示すFPGA31によって実現される。
すなわち、変換部200a、200bは、画像取得部100a、100bそれぞれから出力された2つの輝度画像に基づいて、それぞれ基準画像Iaおよび比較画像Ibを視差演算部300へ出力する。また、変換部200aは、基準画像Iaを、棄却部500へ出力する。
視差演算部300は、変換部200a、200bそれぞれから受け取った基準画像Iaおよび比較画像Ibに基づいて、局所領域のブロックマッチング等を用いて、基準画像Iaの各画素についての視差値dpを導出し、基準画像Iaの各画素に視差値を対応させた視差画像を生成する機能部である。視差演算部300は、生成した視差画像を、路面推定部400およびクラスタリング部450へ出力する。視差演算部300は、図3に示すFPGA31によって実現される。
路面推定部400は、視差演算部300から受信した視差画像の各画素値(視差値)をVマップの対応する座標の視差点に対して投票することによって最終的なVマップを生成し、Vマップにおける投票された視差点から標本点を探索し、探索された標本点群に対して直線近似(または、曲線近似)することで路面形状を推定する機能部である。ここで、図5(a)は、視差演算部300から出力される視差画像Ipを示し、図5(b)は、路面推定部400により視差画像Ipから生成されるVマップVMを示す。図5(b)に示すように、VマップVMの縦軸は視差画像Ipのy座標に対応し、横軸は視差値dpに対応している。VマップVMの生成時においては、所定のy座標における視差画像Ip中の水平ラインに存在する視差値を、VマップVM上のdp座標に投票していくため、VマップVMの各座標の画素値には視差値の頻度が格納される。
図5(a)に示す視差画像Ipには、例えば、路面600と、車601と、とが写り込んでいる。この視差画像Ipの路面600は、VマップVMにおいては推定路面600aに対応し、車601は、車部601aに対応する。推定路面600aは、下記のように、VマップVMにおいて路面600に対応する視差点から推定された路面形状である。
また、路面推定部400は、生成したVマップVMから、路面と推定される位置(標本点)について直線近似する。具体的には、路面推定部400は、VマップVMに対して投票された視差点から、路面形状の推定に必要な代表点である標本点を探索し、それらを最小二乗法等により直線近似することによって、路面形状を推定し推定路面600aを得る。路面が平坦な場合は、1本の直線で近似可能であるが、勾配が変わる路面の場合は、VマップVMの区間を分割して精度よく直線近似する必要がある。
また、視差値は、自車に近いほど、値が大きくなるため、視差画像の下方の視差値は上方の視差値に比べて大きな値を有する。したがって、VマップVM上の推定路面600aは、図5(b)に示すように、右下下がり(左上上がり)の形状となる。この時、物体が存在するy座標の範囲(図5に示す水平の破線の間の範囲内)には、物体を表す視差が投票される。物体は路面よりも高い位置に存在しているため、VマップVM上の分布は上下方向に延びる形状をしている。これは、同じ物体であれば物体認識装置1からの距離がほぼ一定となるため、この物体について求められた各視差値同士は互いに近い数値になるためである。なお、路面推定部400の詳細な構成および動作は、図7~図12で後述する。
VマップVMにおいて、推定された推定路面600aより上方に位置する塊である車部601aは、実際の路面上の物体である車601に相当する。後述するクラスタリング部450によりU-Disparityマップが生成される際には、ノイズ除去のため推定された路面より上方の情報のみが用いられる。
クラスタリング部450は、変換部200aから受信した基準画像(輝度画像)、視差演算部300から受信した視差画像、ならびに、路面推定部400により出力されるVマップおよび推定路面の情報に基づいて、視差画像に写っている物体を検出する機能部である。具体的には、クラスタリング部450は、まず、Vマップ上において路面推定部400により推定された推定路面より上方に位置する情報のみを利用、すなわち、例えば、図6(a)に示す視差画像Ipの左ガードレール611、右ガードレール612、車613および車614に対応する情報を利用して、物体を認識するために、図6(b)に示すU-Disparityマップ(以下、単に「Uマップ」と称する場合がある)であるUマップUMを生成する。ここで、U-Disparityマップとは、横軸を視差画像Ipのx軸とし、縦軸を視差画像Ipの視差値dp(または距離)とした、視差値dpの頻度分布を示す二次元ヒストグラムである。図6(a)に示す視差画像Ipの左ガードレール611は、UマップUMにおいては左ガードレール部611aに対応し、右ガードレール612は、右ガードレール部612aに対応し、車613は、車部613aに対応し、車614は、車部614aに対応する。なお、クラスタリング部450は、視差画像IpからReal U-Disparityマップ(俯瞰画像)を生成してもよい。ここで、Real U-Disparityマップとは、横軸を、撮像部10b(左のカメラ)から撮像部10a(右のカメラ)へ向かう方向の実距離とし、縦軸を、視差画像の視差値dp(またはその視差値dpから変換した奥行き方向の距離)とした二次元ヒストグラムである。
なお、変換部200aからクラスタリング部450に基準画像Iaが入力されることに限定されるものではなく、変換部200bからの比較画像Ibを対象とするものとしてもよい。
クラスタリング部450は、生成したUマップから、物体の視差画像および基準画像Iaにおけるx軸方向の位置および幅(xmin,xmax)を特定できる。また、クラスタリング部450は、生成したUマップでの物体の高さの情報(dmin,dmax)から物体の実際の奥行きを特定できる。また、クラスタリング部450は、受信したVマップから、物体の視差画像および基準画像Iaにおけるy軸方向の位置および高さ(ymin=「最大視差値の路面からの最大高さに相当するy座標」,ymax=「最大視差値から得られる路面の高さを示すy座標」)を特定できる。また、クラスタリング部450は、視差画像において特定した物体のx軸方向の幅(xmin,xmax)、y軸方向の高さ(ymin,ymax)およびそれぞれに対応する視差値dpから、物体の実際のx軸方向およびy軸方向のサイズが特定できる。以上のように、クラスタリング部450は、VマップおよびUマップを利用して、基準画像Iaでの物体の位置、ならびに実際の幅、高さおよび奥行きを特定することができる。また、クラスタリング部450は、基準画像Iaでの物体の位置が特定されるので、視差画像における位置も定まり、物体までの距離も特定できる。
また、クラスタリング部450は、物体について特定した実際のサイズ(幅、高さ、奥行き)から、下記の(表1)を用いて、物体が何であるかを特定することができる。例えば、物体の幅が1300[mm]、高さが1800[mm]、奥行きが2000[mm]である場合、物体は「普通車」であると特定できる。なお、(表1)のような幅、高さおよび奥行きと、物体の種類(物体タイプ)とを関連付ける情報をテーブルとして、RAM34等に記憶させておくものとすればよい。
そして、クラスタリング部450は、検出した物体の画像(認識画像)に関する情報(例えば、基準画像Iaでの位置を示す座標、およびサイズ等)(以下、単に「認識画像情報」と称する)を出力する。
棄却部500は、変換部200aから出力された基準画像Ia、およびクラスタリング部450から出力された認識画像情報に基づいて、認識画像情報で示される認識画像について棄却するか否かを判定する棄却判定を行う機能部である。ここで、棄却とは、その物体を後段の処理(追跡処理等)の対象外とする処理を示す。棄却部500は、当該棄却判定の結果を、対応する認識画像情報に含めるものとすればよい。
トラッキング判定部550は、棄却部500からの棄却判定の結果に基づいて、認識画像に含まれる物体に対してトラッキングを行うか否かを判定する機能部である。例えば、トラッキング判定部550は、棄却部500で棄却と判定されなかった物体に対してトラッキングを行うものと判定し、その物体の認識画像情報にトラッキングを行う旨の情報を含め、認識情報として車両制御装置6に出力する。
また、図4に示す物体認識装置1の路面推定部400、クラスタリング部450、棄却部500およびトラッキング判定部550は、それぞれ図3に示すCPU32がプログラム(物体認識処理プログラム)を実行することによって実現される。なお、路面推定部400、クラスタリング部450、棄却部500およびトラッキング判定部550の一部または全部は、ハードウェア回路であるFPGA31、または、その他のハードウェア回路(ASIC等)によって実現されるものとしてもよい。
なお、本発明に係る「画像処理装置」は、路面推定部400であってもよく、路面推定部400を含む情報処理部30であってもよい。
また、図4に示す物体認識装置1の各機能部は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図4に示す物体認識装置1で独立した機能部として図示した複数の機能部を、1つの機能部として構成してもよい。一方、図4に示す物体認識装置1で1つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
<<路面推定部の機能ブロックの構成および動作>>
図7は、第1の実施形態に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。図8は、Vマップの生成動作を説明する図である。図9は、Vマップにおいて所定の数の区間に分割する動作を説明する図である。図10は、第1の実施形態に係る路面推定部の多段階推定処理の一例を説明する図である。図11は、第1の実施形態の多段階推定処理の効果を説明する図である。図12は、第1の実施形態の多段階推定処理の効果を説明する図である。図7~図12を参照しながら、本実施形態に係る路面推定部400の機能ブロックの具体的な構成および動作について説明する。
図7に示すように、路面推定部400は、入力部401と、Vマップ生成部402(第1生成部)と、多段階推定処理部404と、スムージング部405(補正部)と、出力部406と、を有する。
入力部401は、視差演算部300から視差画像を入力する機能部である。
Vマップ生成部402は、入力部401により入力された視差画像の各視差画素の視差値を、Vマップの対応する視差点に対して投票することによってVマップを生成する機能部である。Vマップ生成部402によるVマップの生成において、視差画像のy座標とVマップのy座標とは対応関係にあり、視差画像の特定のy座標の水平ライン上の視差値は、Vマップの対応するy座標の水平ラインのいずれかの視差点に投票される。したがって、視差画像の同じ水平ラインに含まれる視差値は同値となるものも存在するため、Vマップの任意の座標の視差点には、視差値の頻度が格納されることになる。視差画像を特定の水平ラインにおいては、同じ路面であれば、視差値は互いに類似する値となるため、Vマップにおける路面に対応する視差点は密集して投票されることになる。
なお、Vマップ生成部402は、視差画像中の全ての視差画素の視差値をVマップに投票してもよいが、図8に示す視差画像Ip1のように、所定の領域(例えば、図8に示す投票領域701~703)を設定し、その領域に含まれる視差画素の視差値のみを投票するものとしてもよい。例えば、路面は遠方になるにつれて、消失点に向かって狭くなっていくという性質を利用し、図8に示すように、路面の幅にあった投票領域を所定数設定する方法が考えられる。このように投票領域に制限することによって、路面以外のノイズがVマップに混入することを抑制することができる。
また、視差画像中の一水平ラインにおける視差画素を適宜間引いて投票するものとしてもよい。また、間引きに関しては、水平方向だけではなく、垂直方向に対して実行してもよい。
多段階推定処理部404は、Vマップを複数段において分割した区間において路面を推定し、各推定路面について適切な路面であるか否かの成否判定を行って、最終的な推定路面を決定する多段階推定処理を実行する機能部である。多段階推定処理部404は、図7に示すように、区間分割部411(分割部)と、標本点探索部412(探索部)と、形状推定部413(推定部)と、成否判定部414(判定部)と、路面決定部415(決定部)と、を有する。
区間分割部411は、多段階推定処理において、予め定められた複数段の分割に従って、Vマップのdp方向(水平方向)における所定区間を1以上の区間に分割する機能部である。ここで、「段」とは、所定区間を何分割に分割するかの分割パターンを示す。したがって、複数段の分割とは、複数の分割パターンに従って分割することを示す。例えば、図9では、VマップVM1全体を所定区間とし、特定の段に従って、所定区間を8つの区間に分割した例を示す。なお、図9では、dp方向について複数の区間に分割した例を示しているが、これに限定されるものではなく、例えば、y方向について複数の区間に分割するものとしてもよい。これによって、例えば、路面の視差が分布する位置が特定できる場合、y方向を分割することでより限定した領域内を処理することができるため、ノイズの混入を防止する効果、および処理時間の短縮に寄与する。本実施形態では、Vマップのdp方向での区間に分割するものとし、所定区間をVマップのdp方向(水平方向)の全体の幅であるものとして説明する。
図10に示す例では、段数を2段として多段階推定処理を行う場合の例を示している。この場合、区間分割部411は、VマップVM2において、1段目(第1分割パターン)においては分割数を1とし、所定区間を分割しない、すなわち、所定区間を1つの区間としている(1つの区間に分割するとも言える)。そして、区間分割部411は、VマップVM2において、2段目(第2分割パターン)においては分割数を2とし、所定区間を等分に2つの区間に分割する。なお、図10に示す例は、段数を2段とした例を示しているが、これに限定されるものではなく、所定区間を3段以上の段数として、各段に応じた区間に分割するものとしてもよい。また、各段における分割数は連続している必要はなく、例えば、1段目において分割数を1として、2段目において分割数を3としてもよい。
そして、後述するように、多段階推定処理では、各段において分割された区間において、標本点探索部412により各dp座標における視差点から標本点が探索される。
標本点探索部412は、多段階推定処理において、Vマップに投票された視差点(頻度点の一例)のうち、区間分割部411により分割された各区間における各dp座標の位置から、少なくとも1つ以上の代表点(以下、「標本点」と称する)を探索して選択する機能部である。標本点の探索方法としては、例えば、各dp座標に対して、その垂直(縦)方向に存在する視差点のうち、単純に頻度の最も多い視差点(最頻点)を選択してもよく、または、着目するdp座標とその左右の複数の画素を併せてVマップの下方向から上方向に上げていき、路面の視差点が含まれ得る領域を制限した上で、その中から最頻点を探索して選択することにより正確に路面の視差点を捉える方法を用いてもよい。または、視差点がない位置(座標)を標本点として探索し選択するものとしてもよい。例えば、着目している座標(dp,y)には視差点は存在していないが、周囲に頻度が多い視差点が集中している場合、偶発的に座標(dp,y)の視差点が欠落している可能性があるため、この抜けている位置を標本点として選択することも可能である。そして、後述するように、多段階推定処理では、各区間において探索された標本点群から、形状推定部413により路面が推定される。
なお、標本点探索部412は、探索した標本点のうち、不適切な標本点を除去してもよい。これによって、後述するように、形状推定部413によって標本点群から路面を推定する際に、不適切な標本点(外れ点)の影響を受けて、推定路面の形状が不適切になってしまうことを抑制することができる。外れ点の除去方法としては、例えば、一旦、対象の区間内の全ての標本点を使って最小二乗法で直線近似し、近似直線から所定の距離離れた標本点を除去するものとしてもよい。この場合、外れ点を除去した状態で、再度、最小二乗法により推定した路面が最終的な推定路面となる。
形状推定部413は、多段階推定処理において、標本点探索部412により各区間で探索された標本点群から、当該区間での路面形状の推定(路面推定)を行う機能部である。路面推定の方法としては、例えば、最小二乗法等によって標本点群に対して直線近似を行う方法、または、多項式近似等を用いて曲線形状を推定する方法等がある。以降の説明では、特に断らない限り、路面推定では直線近似によるものとして説明する。
図10に示す例では、形状推定部413は、分割数が1である1段目においては、標本点探索部412により探索された標本点群を用いて、VマップVM2において、所定区間の推定路面として推定路面801を求めている。また、形状推定部413は、分割数が2である2段目においては、距離が近いものから、2つの区間でそれぞれ推定路面802a、802bを求めている。
また、形状推定部413は、例えば、成否判定部414による推定路面の成否判定で使用するために、各段、各区間で推定された推定路面に対する信頼度を算出する。例えば、形状推定部413は、各段、各区間で路面を推定するために最小二乗法を用いて直線近似した場合、相関係数をその推定路面の信頼度として算出するものとしてもよい。なお、信頼度の算出方法は、上述の方法に限定されるものではなく、推定路面の信頼度を定量化できる方法であれば、任意の方法を使用することができる。
そして、後述するように、多段階推定処理では、形状推定部413により推定された各段の各区間での推定路面に対して、成否判定部414により推定路面が適切であるか否かの成否判定が行われる。
成否判定部414は、多段階推定処理において、形状推定部413により推定された各段、各区間での推定路面が適切(成功)か否かを判定する成否判定を行う機能部である。例えば、成否判定部414は、標本点の並びが右上並びに整列していると推定された場合、すなわち推定路面の角度が不適切である場合、路面として不適切(失敗)であると判定する。このような問題の発生の原因としては、例えば、個々の標本点の探索が独立して実行されることが挙げられる。また、成否判定部414は、例えば、形状推定部413により算出された各段、各区間における推定路面の信頼度に基づいて、当該推定路面が適切か否かを判定するものとしてもよい。例えば、成否判定部414は、特定の推定路面の信頼度が所定の閾値よりも小さい場合、当該推定路面を不適切(失敗)であると判定する。なお、成否判定部414は、上述の推定路面の角度および信頼度の他、推定するときに用いた標本点数(視差点数でもよい)、または、隣り合う2つの推定路面の連続性に基づいて、推定路面に対する成否判定を行ってもよい。
図10に示す例では、成否判定部414は、分割数1である1段目で推定された推定路面801に対して成否判定を行い、分割数が2である2段目で推定された推定路面802a、802bに対してそれぞれ成否判定を行う。
そして後述するように、多段階推定処理では、成否判定部414により成否判定により適切と判定された各推定路面から、路面決定部415により所定区間における最終的な推定路面が決定される。
なお、形状推定部413により各段、各区間で推定された推定路面に対する信頼度が算出されるものとしたが、これに限定されるものではなく、成否判定部414が当該信頼度を算出するものとしてもよい。
路面決定部415は、成否判定部414により成否判定により適切と判定された各推定路面から、所定区間における最終的な推定路面を決定する機能部である。例えば、路面決定部415は、各段における推定路面の信頼度のうち、最も信頼度の高い段における推定路面を、所定区間における最終的な推定路面として決定する。
図10に示す例では、路面決定部415は、例えば、1段目で推定された推定路面801の信頼度と、2段目で推定された推定路面802a、802bのそれぞれの信頼度の平均値とを比較し、高い信頼度を有する段の推定路面を、所定区間における最終的な推定路面として決定する。
なお、上述では、段ごとに信頼度を求めて(分割数が2であれば、2つの区間での推定路面の各信頼度の平均値)、最も高い信頼度を有する段の推定路面を決定するものとしているが、これに限定されるものではない。例えば、決定する推定路面を区間ごとに決定するものとしてもよい。例えば、図10に示す例の場合、2つに分割した右側の区間については、推定路面801および推定路面802aのうち、信頼度が高い方の推定路面を最終的な路面として決定し、左側の区間については、推定路面801および推定路面802bのうち、信頼度が高い推定路面を最終的な推定路面として決定するものとすればよい。
ここで、図11および図12を参照しながら、多段階推定処理の効果を説明する。図11では、視差点数が少ないVマップVM2aにおいて、所定区間を細かく分割して路面推定した場合の多段階推定処理の効果が示されている。なお、図10と同様の段数および分割数として説明するが、あくまで例示であって、これらの段数および分割数に限定されるものではない。図11に示すように、視差点数が少ない場合、区間を分割して、別々に路面推定して推定路面812a、812bを求めた場合、物体の視差等の路面以外の視差の影響を受けて推定路面が不適切な傾きを持つ等のリスクが生じる。この問題に対し、分割しないで所定区間を1つの区間として路面推定して推定路面811を求めた場合、一定数以上の路面に関する視差点が使用可能となるため、正しい路面として推定される可能性が高まる。
一方で、図12では、所定区間を2つの区間に分割してそれぞれの区間で推定した路面を採用した方が、適切な路面形状を推定できる例を示している。図12に示すVマップVM2bのように、所定区間の途中で路面勾配が変化するような場合は、区間に分割して路面推定した方が複雑な路面形状を精度よく捉えることができる。
以上のように、複数段の各段において区間の分割数を変えながら、所定区間内で路面推定し、各推定路面に対して成否判定を行って適切か否かを判定することによって、視差点数の大小、または、視差分散が生じている場合等の様々な状況でロバストな路面形状の推定が可能となる。
なお、必ずしも、上述の区間分割部411、標本点探索部412および形状推定部413の動作により推定された各推定路面から、所定区間の最終的な推定路面を決定するものとしなくてもよい。例えば、路面決定部415は、区間分割部411により分割された特定の区間で推定された各推定路面(複数段なので当該区間で推定された推定路面は複数存在する)のすべての信頼度が所定の閾値以下である場合、当該区間におけるすべての路面推定に失敗したものと見なして、当該区間における履歴路面またはデフォルト路面を、当該区間の推定路面と見なすものとしてもよい。具体的には、推定に失敗した区間は、履歴路面の当該区間に該当する路面を使って補間するという方法等が挙げられる。ここで、履歴路面とは、1フレーム以上前のフレームで推定された過去の推定路面を示し、過去の所定数のフレームで推定された各路面を平均した路面であってもよい。また、デフォルト路面とは、平坦な路面と仮定した場合の路面を示す。
また、各推定路面が成否判定で成功だった場合、2つの分割した区間の境界(手前の区間を区間nとしたときに、区間nの終点と次の区間n+1の始点とが一致する)における、各推定路面の位置関係を判定して、最終的な推定路面を決定するものとしてもよい。例えば、図10に示す例の場合、区間の境界位置における推定路面801、802a、802bの交点をそれぞれ交点A~Cとした場合、y軸方向において、交点Aに対して、交点B、Cの両方が上側、または下側に存在する場合には、推定路面802a、802bを、最終的な推定路面として決定する。図10に示すように、区間の境界で勾配が変わる場合、推定路面801を採用してしまうと、勾配を正確に捉えた路面推定が実行できなくなるため、交点B、Cの双方が交点Aより上側または下側に存在する場合は、推定路面802a、802bを採用することによって、当該勾配を捉えた路面推定が可能となる。
また、上述では、区間分割部411は、特定の段で所定区間を複数の区間に分割する場合、等分するものとしたが、これに限定されるものではない。例えば、所定区間の長さを100とし、2つの区間に分割する場合、(50,50)のように等分することに限らず、長さを変えて、例えば、(20,80)または(80,20)のように、各区間の長さを変えて分割するものとしてもよい。また、視差値を実距離に換算した時の長さで区間を分割するものとしてもよい。視差の1[ピクセル]あたりの実距離は遠方に行くほど大きくなるという性質がある。したがって、Vマップの横軸を図10のように取ったとき、左側の方が遠距離に位置するため、実距離(例えば、10[m]刻み)で区間を分割した時、右側よりも左側に位置する区間の方が、長さは短くなる。また、所定区間内で路面の傾きが変わる場合、変わる位置は推定してみないとわからないため、複数の分割位置で分割し、分割して推定した各推定路面の信頼度の平均値等を算出し、その平均値が最大となった時の分割位置、および、その時の推定路面群を採用するといった方法が考えられる。これにより、所定区間内を2つの区間に分割した場合の路面推定の精度を向上させることができる。もちろん、3つ以上の区間の分割であっても同様に区間の長さを様々な組み合わせで分割して処理することが可能である。
スムージング部405は、多段階推定処理部404により推定(決定)された推定路面に対して、スムージング処理を行う機能部である。Vマップを複数の区間に分割した場合、区間の間で推定された路面が不連続になる可能性がある。そこで、ある2つの区間の推定路面のうち、一方の推定路面の始点の座標と、もう一方の推定路面の終点の座標とが所定のy座標を通るように補正する、すなわち、推定路面のVマップ上における傾きおよび切片を変更することによって、区間の間で推定路面に連続性を担保する。所定のy座標としては、例えば、上述の一方の推定路面の始点のy座標と、もう一方の推定路面の終点のy座標との中点のy座標を採用することができる。このようなスムージング処理を行うことにより、ある区間での推定結果が適していない場合に、修正される可能性があるため、路面推定の精度を向上させる効果がある。
出力部406は、Vマップ、および、スムージング部405によりスムージング処理がされたVマップ上の推定路面の情報(路面情報)を、クラスタリング部450に出力する機能部である。なお、Vマップ上の路面情報が、後段(クラスタリング部450等)で特に必要とされない場合においては、例えば、路面情報を図3に示すRAM34等に記憶させておくものとしてもよい。
図7に示す入力部401、Vマップ生成部402、区間分割部411、標本点探索部412、形状推定部413、成否判定部414、路面決定部415、スムージング部405および出力部406は、それぞれ図3に示すCPU32がプログラム(物体認識処理プログラム)を実行することによって実現される。なお、入力部401、Vマップ生成部402、区間分割部411、標本点探索部412、形状推定部413、成否判定部414、路面決定部415、スムージング部405および出力部406の一部または全部は、ハードウェア回路であるFPGA31、または、その他のハードウェア回路(ASIC等)によって実現されるものとしてもよい。
なお、図7に示す路面推定部400の入力部401、Vマップ生成部402、区間分割部411、標本点探索部412、形状推定部413、成否判定部414、路面決定部415、スムージング部405および出力部406は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図7に示す路面推定部400で独立した機能部として図示した複数の機能部を、1つの機能部として構成してもよい。一方、図7に示す路面推定部400で1つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
(路面推定部の路面推定処理)
図13は、第1の実施形態の路面推定部の路面推定処理の動作の一例を示すフローチャートである。図13を参照しながら、本実施形態に係る路面推定部400による路面推定処理の動作について説明する。
<ステップS101>
入力部401は、視差演算部300から視差画像を入力する。なお、視差画像は、ステレオカメラを構成する画像取得部100a、100b、変換部200a、200bおよび視差演算部300で生成した視差画像を直接入力してもよく、これらの情報を予め、CD(Compact Disk)、DVD(Digital Versatile Disc)、HDD(Hard Disk Drive)等の記録メディア、または、ネットワークストレージ等に記憶させておき、必要に応じて、これらから視差画像を読み込んで使用するものとしてもよい。また、視差画像は1画像のみを入力するものとしてもよく、または、動画像データをフレームごとに逐次入力するものとしてもよい。そして、ステップS102へ移行する。
<ステップS102>
Vマップ生成部402は、入力部401により入力された視差画像の各視差画素の視差値を、Vマップの対応する視差点に対して投票することによってVマップを生成する。そして、ステップS103へ移行する。
<ステップS103>
多段階推定処理部404は、現在処理している段数を示す段数変数stage_idxを1に初期化する。そして、ステップS104へ移行する。
<ステップS104>
多段階推定処理部404は、以降のステップS105~S112の処理を、所定の段数分だけ繰り返す。そして、ステップS105へ移行する。
<ステップS105>
多段階推定処理部404は、現在処理中の段において現在処理している区間を示す区間変数div_idxを1に初期化する。そして、ステップS106へ移行する。
<ステップS106>
区間分割部411は、多段階推定処理において、段数変数stage_idxが示す現在の段に対応する分割数で所定区間を1以上の区間に分割する。なお、上述のように、区間分割部411は、分割後の各区間の長さを任意の長さに分割することが可能である。そして、ステップS107へ移行する。
<ステップS107>
多段階推定処理部404は、区間分割部411により分割された各区間に対して、以降のステップS108~S110の処理を実行する。そして、ステップS108へ移行する。
<ステップS108>
標本点探索部412は、多段階推定処理において、div_idx番目の区間で投票された視差点(頻度点の一例)のうち、当該区間における各dp座標の位置から、少なくとも1つ以上の代表点である標本点を探索して選択する。なお、標本点探索部412による標本点の探索は、このタイミングで実行される必要はなく、所定区間全体で予め探索しておくことが可能であるため、例えば、ステップS102のVマップ生成直後に、標本点探索部412によって所定区間の全域にわたって各dp座標における標本点を探索しておくものとしてもよい。また、各段または各区間で、標本点の探索の方法を変えるものとしてもよい。そして、ステップS109へ移行する。
<ステップS109>
形状推定部413は、多段階推定処理において、div_idx番目の区間で標本点探索部412により探索された標本点群から、当該区間での路面形状の推定(路面推定)を行う。そして、ステップS110へ移行する。
<ステップS110>
多段階推定処理部404は、現在処理中の段において現在処理している区間を示す区間変数div_idxをインクリメントして、次の区間の処理に移行する。そして、ステップS111へ移行する。
<ステップS111>
多段階推定処理部404は、現在処理中の段において、分割したすべての区間について、上述のステップS108~S110の処理が完了したか否かを判定する。分割したすべての区間について処理が完了した場合、ステップS112へ移行し、処理が完了していない場合、ステップS108へ戻る。
<ステップS112>
多段階推定処理部404は、現在処理している段数を示す段数変数stage_idxをインクリメントして、次の段の処理に移行する。そして、ステップS113へ移行する。
<ステップS113>
多段階推定処理部404は、すべての段について、上述のステップS105~S112の処理が完了したか否かを判定する。すべての段について処理が完了した場合、ステップS114へ移行し、処理が完了していない場合、ステップS105へ戻る。
<ステップS114>
成否判定部414は、多段階推定処理において、形状推定部413により推定された各段、各区間での推定路面が適切(成功)か否かを判定する成否判定を行う。なお、成否判定部414による推定路面に対する成否判定は、このタイミングで実行されることに限定されるものではなく、例えば、ステップS109で区間での路面推定がなされた後に実行されるものとしてもよい。そして、ステップS115へ移行する。
<ステップS115>
路面決定部415は、成否判定部414により成否判定により適切と判定された各推定路面から、所定区間における最終的な推定路面を決定する。なお、所定区間における最終的な推定路面の決定方法の詳細については、上述した通りである。例えば、分割数1(分割なし)の場合の推定路面の信頼度が最も高ければ、所定区間は、1本の推定路面により粗く推定されたことになる。また、分割数3の場合、各区間の推定路面の信頼度の平均値が他の段で算出された信頼度の平均値よりも高ければ、所定区間は3本の推定路面により細かく推定されたことになる。そして、路面推定部400の路面推定処理が終了する。
以上のステップS101~S115の処理により、路面推定部400による路面推定処理が実行される。
以上のように、本実施形態では、Vマップに対して、複数段の各段において区間の分割数を変えながら、所定区間内で路面推定を行い、各推定路面に対して成否判定を行って適切か否かを判定することによって、最終的に当該所定区間の推定路面を決定するものとしている。これによって、例えば、視差点数の大小、または、視差分散が生じている場合等の様々な状況でロバストな路面形状の推定が可能となり、実運用に耐え得るように路面推定処理の精度を向上させることができる。
なお、本実施形態では、後述する第2の実施形態のセグメント分割部403のように、Vマップを複数のセグメントを分割せずに、Vマップ全体を所定区間として(換言すると、本実施形態は1つのセグメントに対して多段階処理を適用しているとも考えることができる)、当該所定区間内を複数段で多段階推定処理を行う動作について説明した。しかし、これに限定されるものではなく、Vマップを複数のセグメントに分割し、各セグメントに対して、上述の多段階推定処理を行うものとしてもよい。また、この場合、各セグメントのうち、多段階推定処理を適用するセグメントと、適用しないセグメントとが混在しているものとしてもよい。例えば、精度を重視するセグメントに対して多段階推定処理を実行するものとしてもよい。ここで、セグメントは、路面を推定する単位であるのに対し、区間は、その単位(セグメント)をより詳細に見て推定するものと捉えることができる。したがって、近方はセグメントで推定し、遠方のように少ない視差が実距離換算で長距離となる場合に、セグメントでは推定しづらい路面を、多段階推定処理でより細かく判定しながら推定するという実施の仕方が考えられる。その結果、2段以上の路面が採用された場合には、当該セグメントを各区間が表す新たなセグメントと定義し直してもよい(例えば、2つの区間が新たなセグメントとなり、元のセグメント数が8である場合、多段階推定処理後のセグメント数は9となる)。
[第2の実施形態]
第2の実施形態に係る物体認識装置について、第1の実施形態に係る物体認識装置1と相違する点を中心に説明する。第1の実施形態では、Vマップに対して、複数段の各段において区間の分割数を変えながら、所定区間内で路面推定を行い、各推定路面に対して成否判定を行って適切か否かを判定することによって、最終的に当該所定区間の推定路面を決定する動作を説明した。本実施形態では、Vマップをセグメントに分割し、2つ以上の連続するセグメントを所定区間と見なして、セグメント間をオーバーラップさせながら逐次、多段階推定処理を実行する動作について説明する。なお、第2の実施形態ではセグメント分割を前提に説明するが、第1の実施形態のようにVマップの全区間を1つのセグメントと見なし、その中で、複数の区間がオーバーラップするように処理してもよい。
なお、本実施形態に係る物体認識装置のハードウェア構成および機能ブロック構成は、第1の実施形態で説明した構成と同様である。
(路面推定部の機能ブロック構成および動作)
図14は、第2の実施形態に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。図15は、第2の実施形態に係る路面推定部の多段階推定処理の一例を説明する図である。図14および図15を参照しながら、本実施形態に係る路面推定部400aの機能ブロックの具体的な構成および動作について説明する。
図14に示すように、路面推定部400aは、入力部401と、Vマップ生成部402(第1生成部)と、セグメント分割部403(分割部)と、多段階推定処理部404aと、スムージング部405(補正部)と、出力部406と、を有する。なお、入力部401、Vマップ生成部402、スムージング部405および出力部406の機能は、第1の実施形態で説明した機能と同様である。
セグメント分割部403は、Vマップ生成部402により生成されたVマップを、dp方向(水平方向)において、2以上のセグメントに分割する機能部である。本実施形態では、このセグメントを最小単位として、後述する多段階推定処理が実行される。なお、後述するセグメント間をオーバーラップさせながら逐次、各所定区間について多段階推定処理を行う場合、実質的には、Vマップは、3つ以上のセグメントに分割されている必要がある。また、分割されたセグメントの幅は、全セグメントで同一でもよく、または、距離に応じて決定されるものとしてもよい。例えば、遠方を精度よく路面推定するために、近距離は粗く(幅を広く)セグメント分割し、遠距離は細かく(幅を狭く)セグメント分割するものとしてもよい。
図15に示す例では、セグメント分割部403は、VマップVM3を7つのセグメントに分割している。また、後述の説明上、視差値dpが小さい方の3つのセグメントをそれぞれ第7セグメントseg7、第6セグメントseg6、第5セグメントseg5としている。
そして、後述するように、多段階推定処理では、標本点探索部412aによりVマップの各dp座標における視差点から標本点が探索される。
多段階推定処理部404aは、複数のセグメントに分割されたVマップについて、2つ以上の連続するセグメントを所定区間と見なして、近距離から遠距離へ向けて、セグメント間をオーバーラップさせながら逐次、各所定区間について多段階推定処理を実行する機能部である。ここで、近距離から遠距離へ向けて処理するのは、近距離の方が視差画像中に含まれる路面の面積が大きいため、路面に係る視差点が多くVマップに投票されることになり、その結果、路面形状を正確に推定できるためである。多段階推定処理部404aは、図14に示すように、標本点探索部412a(探索部)と、形状推定部413a(推定部)と、成否判定部414a(判定部)と、路面決定部415a(決定部)と、を有する。
標本点探索部412aは、多段階推定処理において、Vマップに投票された視差点(頻度点の一例)のうち、Vマップのdp方向の全域について各dp座標の位置から、少なくとも1つ以上の代表点である標本点を探索して選択する機能部である。なお、標本点探索部412aは、第1の実施形態の標本点探索部412と同様の標本点の探索方法を採用すればよく、探索した標本点のうち、不適切な標本点を除去してもよい。
そして、後述するように、多段階推定処理では、探索された標本点群から、形状推定部413aにより路面が推定される。
形状推定部413aは、多段階推定処理において、複数のセグメントで構成される所定区間で、標本点探索部412aにより探索された標本点群から、当該所定区間の各区間(この場合、1以上のセグメントで構成される)での路面形状の推定(路面推定)を行う機能部である。路面推定の方法は、第1の実施形態の形状推定部413による路面推定と同様の方法であり、特に断らない限り、路面推定では直線近似によるものとして説明する。
図15(a)に示す例では、第5セグメントseg5および第6セグメントseg6を所定区間とした場合に、当該所定区間に対して多段階推定処理(段数を2としている)を行う場合を示している。形状推定部413aは、分割数が1である1段目においては、標本点探索部412aにより探索された標本点群を用いて、所定区間(第5セグメントseg5および第6セグメントseg6)の推定路面として推定路面821を求めている。また、形状推定部413aは、分割数が2である2段目においては、距離が近いものから、2つのセグメントでそれぞれ推定路面822a、822bを求めている。
図15(b)に示す例では、第6セグメントseg6および第7セグメントseg7を所定区間とした場合に、当該所定区間に対して多段階推定処理(段数を2としている)を行う場合を示している。図15(b)に示す所定区間である第6セグメントseg6および第7セグメントseg7は、図15(a)に示す所定区間である第5セグメントseg5および第6セグメントseg6と、第6セグメントseg6でオーバーラップしていることになる。形状推定部413aは、分割数が1である1段目においては、標本点探索部412aにより探索された標本点群を用いて、所定区間(第6セグメントseg6および第7セグメントseg7)の推定路面として推定路面831を求めている。また、形状推定部413aは、分割数が2である2段目においては、距離が近いものから、2つのセグメントでそれぞれ推定路面832a、832bを求めている。
また、形状推定部413aは、例えば、成否判定部414aによる推定路面の成否判定で使用するために、各段、各区間で推定された推定路面に対する信頼度を算出する。例えば、形状推定部413aは、各段、各区間で路面を推定するために最小二乗法を用いて直線近似した場合、相関係数をその推定路面の信頼度として算出するものとしてもよい。なお、信頼度の算出方法は、上述の方法に限定されるものではなく、推定路面の信頼度を定量化できる方法であれば、任意の方法を使用することができる。
そして、後述するように、多段階推定処理では、形状推定部413aにより推定された各段の各区間での推定路面に対して、成否判定部414aにより適切であるか否かの成否判定が行われる。
成否判定部414aは、多段階推定処理において、形状推定部413aにより推定された各段、各区間での推定路面が適切(成功)か否かを判定する成否判定を行う機能部である。また、成否判定部414aは、例えば、形状推定部413aにより算出された各段、各区間における推定路面の信頼度に基づいて、当該推定路面が適切か否かを判定するものとしてもよい。
図15(a)に示す例では、成否判定部414aは、分割数1である1段目で推定された推定路面821に対して成否判定を行い、分割数が2である2段目で推定された推定路面822a、822bに対してそれぞれ成否判定を行う。図15(b)に示す例では、成否判定部414aは、分割数1である1段目で推定された推定路面831に対して成否判定を行い、分割数が2である2段目で推定された推定路面832a、832bに対してそれぞれ成否判定を行う。
そして後述するように、多段階推定処理では、成否判定部414aにより成否判定により適切と判定された各推定路面から、路面決定部415aにより所定区間における最終的な推定路面が決定される。
なお、形状推定部413aにより各段、各区間で推定された推定路面に対する信頼度が算出されるものとしたが、これに限定されるものではなく、成否判定部414aが当該信頼度を算出するものとしてもよい。
路面決定部415aは、成否判定部414aにより成否判定により適切と判定された各推定路面から、所定区間における最終的な推定路面を決定する機能部である。例えば、路面決定部415aは、特定の所定区間において、各段における推定路面の信頼度のうち、最も信頼度の高い段における推定路面を、当該所定区間における最終的な推定路面として決定する。
図15(a)に示す例では、路面決定部415aは、例えば、第5セグメントseg5および第6セグメントseg6で構成された所定区間において、1段目で推定された推定路面821の信頼度と、2段目で推定された推定路面822a、822bのそれぞれの信頼度の平均値とを比較し、高い信頼度を有する段の推定路面を、当該所定区間における最終的な推定路面として決定する。図15(b)に示す例では、路面決定部415aは、例えば、第6セグメントseg6および第7セグメントseg7で構成された所定区間において、1段目で推定された推定路面831の信頼度と、2段目で推定された推定路面832a、832bのそれぞれの信頼度の平均値とを比較し、高い信頼度を有する段の推定路面を、当該所定区間における最終的な推定路面として決定する。
ここで、例えば、各セグメントを別々に処理していくと、セグメント内の視差点数が少なかったり、視差分散が大きかったり、物体の視差点が多く含まれていたりする場合に、各セグメントの路面形状を正確に推定することができない可能性がある。また、一つ前のセグメントの推定結果に基づいて次のセグメントを推定するような処理を実行していた場合、不適切な推定結果に悪影響を受けて、それ以降のセグメントが本来成功する場合であっても、成否判定で失敗と判定されてしまう可能性もある。
そこで、本実施形態では、上述のように、近距離から遠距離へ向けて、各所定区間をセグメント単位でオーバーラップさせながら逐次、当該各所定区間について多段階推定処理を実行するものである。図15の例では、第6セグメントseg6がオーバーラップしているセグメントとなっている。まず、図15(a)では、上述のように、第5セグメントseg5および第6セグメントseg6を所定区間として多段階推定処理をする。その結果、図15(a)に示すように、第6セグメントseg6の不適切に引き上がった推定路面822bではなく、第5セグメントseg5および第6セグメントseg6を1つの区間として推定した推定路面821が採用されたとする。次に、図15(b)に示すように、第6セグメントseg6および第7セグメントseg7を所定区間として多段階推定処理をする。その結果、図15(b)に示すように、セグメント毎では、物体の視差、または、路面の視差点数の不足等によって、推定路面832aおよび推定路面832bのうち少なくともいずれかが不適切と判定され、第6セグメントseg6および第7セグメントseg7を1つの区間として推定した推定路面831が採用されたとする。ここで、第5セグメントseg5および第6セグメントseg6を所定区間とした場合に行われた多段階推定処理で推定(決定)された第5セグメントseg5の推定路面を、推定路面825としている。このとき、図15(a)に示す多段階推定処理と、図15(b)に示す多段階推定処理とでは、第6セグメントseg6がオーバーラップしていることにより、第6セグメントseg6について決定された推定路面は2つ存在することになる。この場合、例えば、当該2つの推定路面の平均を第6セグメントseg6の最終的な推定路面として決定するものとする。このように、近距離から遠距離へ向けて、セグメントをオーバーラップさせながら逐次、各所定区間について多段階推定処理を実行することによって、より多くの視差点を用いながら、かつ、多段階で推定処理を行うことになり、視差分布状況に合わせて細かい形状、およびノイズに対してロバストな路面推定ができるようになる。
なお、図15の例では、2つのセグメントに対して1つのセグメント分をオーバーラップさせているものであるが、これに限定されるものではなく、オーバーラップさせるセグメント数、および、所定区間に含めるセグメント数は任意としてよい。例えば、所定区間に含まれるセグメントを3つとし、2つのセグメント分がオーバーラップするという方法も可能である。
また、オーバーラップしたセグメントについては、2つ以上の推定路面が推定(決定)されることになるが、例えば、2つ以上の推定路面の平均を、当該オーバーラップしたセグメントの最終的な推定路面として決定するものとしてもよい。また、成否判定したときの信頼度に応じて重み付けして平均したものを、当該オーバーラップしたセグメントの最終的な推定路面として決定するものとしてもよい。さらに、オーバーラップしたセグメントの両端のセグメントの推定路面の連続性を鑑みて、より不連続にならない推定路面(例えば、オーバーラップしたセグメントの両端位置でのy座標の差の和が最小となる推定路面)、または、当該オーバーラップしたセグメントの推定路面を廃棄した場合における両端のセグメントの終点と始点とを結ぶ線を、当該オーバーラップしたセグメントの最終的な推定路面として決定するものとしてもよい。
図14に示す入力部401、Vマップ生成部402、セグメント分割部403、標本点探索部412a、形状推定部413a、成否判定部414a、路面決定部415a、スムージング部405および出力部406は、それぞれ図3に示すCPU32がプログラム(物体認識処理プログラム)を実行することによって実現される。なお、入力部401、Vマップ生成部402、セグメント分割部403、標本点探索部412a、形状推定部413a、成否判定部414a、路面決定部415a、スムージング部405および出力部406の一部または全部は、ハードウェア回路であるFPGA31、または、その他のハードウェア回路(ASIC等)によって実現されるものとしてもよい。
なお、図14に示す路面推定部400aの入力部401、Vマップ生成部402、セグメント分割部403、標本点探索部412a、形状推定部413a、成否判定部414a、路面決定部415a、スムージング部405および出力部406は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図14に示す路面推定部400aで独立した機能部として図示した複数の機能部を、1つの機能部として構成してもよい。一方、図14に示す路面推定部400aで1つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
(路面推定部の路面推定処理)
図16は、第2の実施形態の路面推定部の路面推定処理の動作の一例を示すフローチャートである。図16を参照しながら、本実施形態に係る路面推定部400aによる路面推定処理の動作について説明する。なお、図16では、図15に示した構成、すなわち、Vマップを7つのセグメントに分割し、2つのセグメント分を所定区間とし、1つのセグメント分だけオーバーラップする構成として説明する。
<ステップS121>
入力部401は、視差演算部300から視差画像を入力する。そして、ステップS122へ移行する。
<ステップS122>
Vマップ生成部402は、入力部401により入力された視差画像の各視差画素の視差値を、Vマップの対応する視差点に対して投票することによってVマップを生成する。そして、ステップS123へ移行する。
<ステップS123>
セグメント分割部403は、Vマップ生成部402により生成されたVマップを、dp方向(水平方向)において、2以上のセグメントに分割する。そして、ステップS124へ移行する。
<ステップS124>
標本点探索部412aは、多段階推定処理において、Vマップに投票された視差点(頻度点の一例)のうち、Vマップのdp方向の全域について各dp座標の位置から、少なくとも1つ以上の代表点である標本点を探索して選択する。そして、ステップS125へ移行する。
<ステップS125>
多段階推定処理部404aは、現在処理している所定区間に含まれる最も手前のセグメントを示すセグメント変数seg_idxを1に初期化する。そして、ステップS126へ移行する。
<ステップS126>
多段階推定処理部404aは、以降のステップS127~S130の処理を、セグメント分割部403により分割されたセグメント数-1分だけ繰り返す。そして、ステップS127へ移行する。
<ステップS127>
形状推定部413aは、seg_idx番目のセグメントおよび(seg_idx+1)番目のセグメントで構成された所定区間に対して、多段階推定処理を実行する。具体的には、形状推定部413aは、上述の2つのセグメントで構成される所定区間で、標本点探索部412aにより探索された標本点群から、当該所定区間の各区間(seg_idx番目のセグメントの区間、seg_idx+1番目のセグメントの区間、および、seg_idx番目のセグメントおよび(seg_idx+1)番目のセグメントを合わせた区間)での路面形状の推定(路面推定)を行う。そして、ステップS128へ移行する。
<ステップS128>
成否判定部414aは、形状推定部413aにより推定された各段、各区間での推定路面が適切(成功)か否かを判定する成否判定を行う。そして、ステップS129へ移行する。
<ステップS129>
路面決定部415aは、成否判定部414aにより成否判定により適切と判定された各推定路面から、所定区間(seg_idx番目のセグメントおよび(seg_idx+1)番目のセグメント)における推定路面を決定する。そして、ステップS130へ移行する。
<ステップS130>
多段階推定処理部404aは、現在処理している所定区間に含まれる最も手前のセグメントを示すセグメント変数seg_idxをインクリメントして、次の所定区間の処理に移行する。そして、ステップS131へ移行する。
<ステップS131>
多段階推定処理部404aは、すべての所定区間(セグメント数-1分の所定区間)について、上述のステップS127~S130の処理が完了したか否かを判定する。すべての所定区間について処理が完了した場合、ステップS132へ移行し、処理が完了していない場合、ステップS127へ戻る。
<ステップS132>
路面決定部415aは、成否判定部414aにより成否判定により適切と判定された各推定路面から、Vマップの各セグメントにおける最終的な推定路面を決定する。最終的な推定路面の決定方法は、上述した通りである。そして、路面推定部400aの路面推定処理が終了する。
以上のステップS121~S132の処理により、路面推定部400aによる路面推定処理が実行される。
以上のように、本実施形態では、Vマップをセグメントに分割し、2つ以上の連続するセグメントを所定区間と見なして、近距離から遠距離へ向けて、セグメント間をオーバーラップさせながら逐次、多段階推定処理を実行するものとしている。これによって、近距離から遠距離へ向けて、セグメントをオーバーラップさせながら逐次、各所定区間について多段階推定処理を実行することによって、より多くの視差点を用いながら、かつ、多段階で推定処理を行うことになり、視差分布状況に合わせて細かい形状、およびノイズに対してロバストな路面推定ができるようになり、実運用に耐え得るように路面推定処理の精度を向上させることができる。
[第3の実施形態]
第3の実施形態に係る物体認識装置について、第2の実施形態に係る物体認識装置と相違する点を中心に説明する。第2の実施形態では、Vマップをセグメントに分割し、2つ以上の連続するセグメントを所定区間と見なして、セグメント間をオーバーラップさせながら逐次、多段階推定処理を実行する動作について説明した。本実施形態では、第2の実施形態に係る路面推定処理に対して、第1の実施形態に係る路面推定処理を組み合せる動作について説明する。なお、第3の実施形態ではセグメント分割を前提に説明するが、第1の実施形態のようにVマップの全区間を1つのセグメントと見なし、その中で、複数の区間がオーバーラップするように処理してもよい。
なお、本実施形態に係る物体認識装置のハードウェア構成および機能ブロック構成は、第1の実施形態で説明した構成と同様である。
(路面推定部の機能ブロック構成および動作)
図17は、第3の実施形態に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。図18は、第3の実施形態に係る路面推定部の多段階推定処理の一例を説明する図である。図19は、第1の実施形態と第2の実施形態の多段階推定処理を組み合せることによる効果を説明する図である。図17~図19を参照しながら、本実施形態に係る路面推定部400bの機能ブロックの具体的な構成および動作について説明する。
図17に示すように、路面推定部400bは、入力部401と、Vマップ生成部402(第1生成部)と、セグメント分割部403(分割部)と、多段階推定処理部404bと、スムージング部405(補正部)と、出力部406と、を有する。なお、入力部401、Vマップ生成部402、セグメント分割部403、スムージング部405および出力部406の機能は、第2の実施形態で説明した機能と同様である。
また、図18に示す例では、セグメント分割部403は、VマップVM3を7つのセグメントに分割している。また、後述の説明上、視差値dpが小さい方の3つのセグメントをそれぞれ第7セグメントseg7、第6セグメントseg6、第5セグメントseg5としている。
多段階推定処理部404bは、第2の実施形態に係る多段階推定処理に対して、第1の実施形態に係る多段階推定処理を組み合せた動作を実行する機能部である。具体的には、多段階推定処理部404bは、複数のセグメントに分割されたVマップについて、2つ以上の連続するセグメントを所定区間と見なして、近距離から遠距離へ向けて、セグメント間をオーバーラップさせながら逐次、各所定区間について多段階推定処理を実行し、最後に、多段階推定処理を行った各所定区間を含む区間(以下、「全体区間」と称する場合がある)について路面推定を行う。多段階推定処理部404bは、図17に示すように、標本点探索部412b(探索部)と、形状推定部413b(推定部)と、成否判定部414b(判定部)と、路面決定部415b(決定部)と、を有する。
標本点探索部412bは、多段階推定処理において、Vマップに投票された視差点(頻度点の一例)のうち、Vマップのdp方向の全域について各dp座標の位置から、少なくとも1つ以上の代表点である標本点を探索して選択する機能部である。なお、標本点探索部412bは、第1の実施形態の標本点探索部412と同様の標本点の探索方法を採用すればよく、探索した標本点のうち、不適切な標本点を除去してもよい。
そして、後述するように、多段階推定処理では、探索された標本点群から、形状推定部413bにより路面が推定される。
形状推定部413bは、多段階推定処理において、複数のセグメントで構成される所定区間で、標本点探索部412bにより探索された標本点群から、当該所定区間の各区間(この場合、1以上のセグメントで構成される)での路面形状の推定(路面推定)を行う機能部である。形状推定部413bは、さらに、多段階推定処理を行った各所定区間を含む全体区間について路面推定を行う。路面推定の方法は、第1の実施形態の形状推定部413による路面推定と同様の方法であり、特に断らない限り、路面推定では直線近似によるものとして説明する。
図18に示す例では、まず、形状推定部413bは、第5セグメントseg5および第6セグメントseg6を所定区間とした場合に、当該所定区間に対して多段階推定処理(段数を2としている)を行っている。すなわち、形状推定部413bは、分割数が1である1段目においては、標本点探索部412bにより探索された標本点群を用いて、所定区間(第5セグメントseg5および第6セグメントseg6)の推定路面として推定路面841aを求めている。また、形状推定部413bは、分割数が2である2段目においては、距離が近いものから、2つのセグメントでそれぞれ推定路面842a、842bを求めている。
次に、形状推定部413bは、第6セグメントseg6および第7セグメントseg7を所定区間とした場合に、当該所定区間に対して多段階推定処理(段数を2としている)を行っている。図18に示す所定区間である第6セグメントseg6および第7セグメントseg7は、別の所定区間である第5セグメントseg5および第6セグメントseg6と、第6セグメントseg6でオーバーラップしていることになる。形状推定部413bは、分割数が1である1段目においては、標本点探索部412bにより探索された標本点群を用いて、所定区間(第6セグメントseg6および第7セグメントseg7)の推定路面として推定路面841bを求めている。また、形状推定部413bは、分割数が2である2段目においては、距離が近いものから、2つのセグメントでそれぞれ推定路面842b、842cを求めている。
さらに、形状推定部413bは、多段階推定処理を行った各所定区間を含む全体区間(第5セグメントseg5、第6セグメントseg6および第7セグメントseg7)について路面推定を行い、推定路面843を求めている。なお、形状推定部413bは、上述の多段階推定処理において各所定区間での各段、各区間で路面を推定する場合に用いる標本点とは異なる方式で標本点探索部412bにより探索された標本点を用いて、全体区間について路面推定を行うものとしてもよい。
また、形状推定部413bは、例えば、成否判定部414bによる推定路面の成否判定で使用するために、各段、各区間および全体区間で推定された推定路面に対する信頼度を算出する。例えば、形状推定部413bは、各段、各区間および全体区間で路面を推定するために最小二乗法を用いて直線近似した場合、相関係数をその推定路面の信頼度として算出するものとしてもよい。なお、信頼度の算出方法は、上述の方法に限定されるものではなく、推定路面の信頼度を定量化できる方法であれば、任意の方法を使用することができる。
そして、後述するように、多段階推定処理では、形状推定部413bにより推定された各段、各区間および全体区間での各推定路面に対して、成否判定部414bにより適切であるか否かの成否判定が行われる。
成否判定部414bは、多段階推定処理において、形状推定部413bにより推定された各段、各区間および全体区間での推定路面が適切(成功)か否かを判定する成否判定を行う機能部である。また、成否判定部414bは、例えば、形状推定部413bにより算出された各段、各区間および全体区間における推定路面の信頼度に基づいて、当該推定路面が適切か否かを判定するものとしてもよい。
図18に示す例では、成否判定部414bは、各所定区間での推定路面841a、841b、および、各セグメントでの推定路面842a~842cに対して、それぞれ成否判定を行う。また、成否判定部414bは、全体区間での推定路面843に対しても成否判定を行う。
なお、成否判定部414bは、上述の多段階推定処理において各所定区間の各段、各区間での推定路面に対する成否判定に使用するパラメータとは異なるパラメータを用いて、全体区間での推定路面に対する成否判定を行うものとしてもよい。
路面決定部415bは、成否判定部414bにより成否判定により適切と判定された各推定路面から、最終的な推定路面を決定する機能部である。
具体的には、路面決定部415bは、特定の所定区間において、各段における推定路面の信頼度のうち、最も信頼度の高い段における推定路面を、当該所定区間における推定路面として決定する。このとき、決定された各所定区間の推定路面において、オーバーラップしている区間(セグメント)がある場合、例えば、上述の第2の実施形態と同様に、2つの推定路面の平均をオーバーラップしている区間(セグメント)の最終的な推定路面とすればよい。
また、成否判定部414bによる成否判定によっては、各所定区間における各段の推定路面が適切でないと判定され、当該各所定区間の最終的な推定路面が決定できない場合がある。例えば、図19(a)に示す例では、第5セグメントseg5の推定路面852aは適切と判定されても、第6セグメントseg6が物体の視差等の影響により、引き上がった路面(推定路面852b)として推定された場合、第7セグメントseg7の推定路面852cが成否判定により適切でないと判定されてしまう可能性がある。また、第5セグメントseg5および第6セグメントseg6で構成される所定区間の推定路面も、第6セグメントseg6および第7セグメントseg7で構成される所定区間の推定路面も、前者に関しては引き上がった路面として推定され、後者については点数不足で適切でないと判定される可能性がある。このような条件下でも、図19(b)に示すように、全セグメント(全体区間)で推定した路面(推定路面853)では、第5セグメントseg5の視差点数が十分に存在するため、適切な路面であると判定される可能性がある。通常、セグメントを細かく分割したほうが、複雑な路面形状を捉えることができるようになるが、上述のように、セグメントの分割数および視差分布によっては、点数不足等で推定に失敗してしまう可能性もある。
そこで、全てのセグメントを合わせた区間(全体区間)の路面も推定処理の選択候補に入れることで、このような問題に対応して正しい路面形状を推定できるようになる。したがって、この場合、路面決定部415bは、全体区間の推定路面が成否判定部414bにより適切であると判定されている場合、当該推定路面を全体区間の最終的な推定路面として決定する。
なお、推定路面と決定する手順としては、多段階推定処理を行った各所定区間で推定された各段、各区間の推定路面のうち、適切でないと判定(失敗と判定)された推定路面がある場合、各所定区間を包含する全体区間で推定された路面を最終的な推定路面として決定するという方法が挙げられる。ただし、この場合、当該全体区間で推定された路面は、適切であると判定されている必要がある。また、図18に示す例では、第5セグメントseg5および第7セグメントseg7については、それぞれ3つの推定路面が存在し、第6セグメントseg6については、4つの推定路面が存在することになるため、各推定路面の平均路面(傾きおよび切片の平均)、または、適切と判定された推定路面のうち信頼度が最も高い路面を、最終的な推定路面として決定するという方法も挙げられる。このように、各段、各区間および全体区間で推定された推定路面から、どのように最終的な推定路面として決定するのかは、任意に選択することが可能である。
また、図18および図19の例では、セグメント3つを全体区間として説明したが、4つ以上のセグメントを全体区間として処理を行ってもよい。また、この場合、1つのセグメントの路面、2つのセグメントを合わせた路面(セグメント間のオーバーラップあり)、3つのセグメントを合わせた路面(セグメント間のオーバーラップあり)、および、4つのセグメントを合わせた路面を推定し、上述と同様な手順で、最終的な推定路面を決定するものとしてもよい。すなわち、全体区間に含まれるセグメント数、および多段階推定処理の段数は任意に設定可能である。
図17に示す入力部401、Vマップ生成部402、セグメント分割部403、標本点探索部412b、形状推定部413b、成否判定部414b、路面決定部415b、スムージング部405および出力部406は、それぞれ図3に示すCPU32がプログラム(物体認識処理プログラム)を実行することによって実現される。なお、入力部401、Vマップ生成部402、セグメント分割部403、標本点探索部412b、形状推定部413b、成否判定部414b、路面決定部415b、スムージング部405および出力部406の一部または全部は、ハードウェア回路であるFPGA31、または、その他のハードウェア回路(ASIC等)によって実現されるものとしてもよい。
なお、図17に示す路面推定部400bの入力部401、Vマップ生成部402、セグメント分割部403、標本点探索部412b、形状推定部413b、成否判定部414b、路面決定部415b、スムージング部405および出力部406は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図17に示す路面推定部400bで独立した機能部として図示した複数の機能部を、1つの機能部として構成してもよい。一方、図17に示す路面推定部400bで1つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
(路面推定部の路面推定処理)
図20は、第3の実施形態の路面推定部の路面推定処理の動作の一例を示すフローチャートである。図20を参照しながら、本実施形態に係る路面推定部400bによる路面推定処理の動作について説明する。なお、図20では、図18および図19で示した構成、すなわち、2つのセグメントを所定区間とし、1つのセグメント分だけオーバーラップする構成として説明するものとし、図18および図19で示した第5セグメントseg5~第7セグメントseg7に着目した処理内容(図20のフローチャートでは、第1セグメント~第3セグメントとする)について説明する。
<ステップS141>
入力部401は、視差演算部300から視差画像を入力する。そして、ステップS142へ移行する。
<ステップS142>
Vマップ生成部402は、入力部401により入力された視差画像の各視差画素の視差値を、Vマップの対応する視差点に対して投票することによってVマップを生成する。そして、ステップS143へ移行する。
<ステップS143>
セグメント分割部403は、Vマップ生成部402により生成されたVマップを、dp方向(水平方向)において、2以上のセグメントに分割する。そして、ステップS144へ移行する。
<ステップS144>
標本点探索部412bは、多段階推定処理において、Vマップに投票された視差点(頻度点の一例)のうち、Vマップのdp方向の全域について各dp座標の位置から、少なくとも1つ以上の代表点である標本点を探索して選択する。そして、ステップS145へ移行する。
<ステップS145>
多段階推定処理部404bは、現在処理している所定区間に含まれる最も手前のセグメントを示すセグメント変数seg_idxを1に初期化する。そして、ステップS146へ移行する。
<ステップS146>
多段階推定処理部404bは、以降のステップS147~S155の処理を、セグメント分割部403により分割されたセグメント数-1分だけ繰り返す。そして、ステップS147へ移行する。
<ステップS147>
形状推定部413bは、seg_idx番目のセグメントおよび(seg_idx+1)番目のセグメントで構成された所定区間に対して、多段階推定処理を実行する。具体的には、形状推定部413bは、上述の2つのセグメントで構成される所定区間で、標本点探索部412bにより探索された標本点群から、当該所定区間の各区間(seg_idx番目のセグメントの区間、seg_idx+1番目のセグメントの区間、および、seg_idx番目のセグメントおよび(seg_idx+1)番目のセグメントを合わせた区間)での路面形状の推定(路面推定)を行う。そして、ステップS148へ移行する。
<ステップS148>
成否判定部414bは、形状推定部413bにより推定された各段、各区間での推定路面が適切(成功)か否かを判定する成否判定を行う。そして、ステップS149へ移行する。
<ステップS149>
多段階推定処理部404bは、(seg_idx-1)番目のセグメントについて既に路面が推定されているか否かを判定する。(seg_idx-1)番目のセグメントについて既に路面が推定されている場合(ステップS149:Yes)、ステップS150へ移行し、推定されていない場合(ここでは、具体的には、セグメント変数seg_idx=0の値を取る場合)(ステップS149:No)、ステップS155へ移行する。
<ステップS150>
形状推定部413bは、多段階推定処理を行った各所定区間を含む全体区間(ここでは、(seg_idx+1)番目、seg_idx番目および(seg_idx-1)番目の区間)の路面を推定する。そして、ステップS151へ移行する。
<ステップS151>
成否判定部414bは、多段階推定処理を行った各所定区間を含む全体区間の推定路面が適切(成功)か否かを判定する成否判定を行う。そして、ステップS152へ移行する。
<ステップS152>
路面決定部415bは、多段階推定処理における各段、各区間のうち適切でない推定路面があり、かつ、全体区間の推定路面が適切であるかを判定する。多段階推定処理における各段、各区間のうち適切でない推定路面があり、かつ、全体区間の推定路面が適切である場合(ステップS152:Yes)、ステップS153へ移行し、それ以外の場合(ステップS152:No)、ステップS154へ移行する。
<ステップS153>
路面決定部415bは、形状推定部413bにより全体区間(ここでは、(seg_idx+1)番目、seg_idx番目および(seg_idx-1)番目の区間)で推定された路面を、当該全体区間の最終的な推定路面として決定する。そして、ステップS155へ移行する。
<ステップS154>
路面決定部415bは、多段階推定処理において、成否判定部414bにより成否判定により適切と判定された各段、各区間の推定路面の成否判定の結果に基づいて、各セグメントにおける最終的な推定路面を決定する。そして、ステップS155へ移行する。
<ステップS155>
多段階推定処理部404bは、現在処理している所定区間に含まれる最も手前のセグメントを示すセグメント変数seg_idxをインクリメントして、次の所定区間の処理に移行する。そして、ステップS156へ移行する。
<ステップS156>
多段階推定処理部404bは、すべての所定区間(セグメント数-1分の所定区間)について、上述のステップS147~S155の処理が完了したか否かを判定する。すべての所定区間について処理が完了した場合、路面推定部400bの路面推定処理が終了し、処理が完了していない場合、ステップS147へ戻る。
以上のステップS141~S156の処理により、路面推定部400bによる路面推定処理が実行される。
以上のように、本実施形態では、第1の実施形態および第2の実施形態での路面推定処理を組み合わせた路面推定処理を実行することによって、多段階推定処理で各所定区間での各段、各区間の推定路面のうち、適切でないと判定(失敗と判定)された推定路面がある場合、各所定区間を包含する全体区間での推定路面を、最終的な推定路面として決定するものとしている。このように、全てのセグメントを合わせた区間(全体区間)の路面も推定処理の選択候補に入れることで、第1の実施形態および第2の実施形態よりもロバストな路面推定が可能となり、実運用に耐え得るように路面推定処理の精度をさらに向上させることができる。
また、上述の各実施形態では、車両70としての自動車に搭載される物体認識装置について説明したが、これに限定されるものではない。例えば、他の車両の一例としてバイク、自転車、車椅子または農業用の耕運機等の車両に搭載されるものとしてもよい。また、移動体の一例としての車両だけでなく、ロボット等の移動体であってもよい。
また、上述の各実施形態において、物体認識装置の情報処理部30の各機能部の少なくともいずれかがプログラムの実行によって実現される場合、そのプログラムは、ROM等に予め組み込まれて提供される。また、上述の各実施形態に係る物体認識装置で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)、CD-R(Compact Disk Recordable)、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。また、上述の各実施形態の物体認識装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述の各実施形態の物体認識装置で実行されるプログラムを、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、上述の各実施形態の物体認識装置で実行されるプログラムは、上述した各機能部のうち少なくともいずれかを含むモジュール構成となっており、実際のハードウェアとしてはCPU32が上述のROM33からプログラムを読み出して実行することにより、上述の各機能部が主記憶装置(RAM34等)上にロードされて生成されるようになっている。