(57)【要約】【課題】路面を精度よく検出することができる画像処理装置、物体認識装置、機器制御システム、移動体、画像処理方法およびプログラムを提供する。【解決手段】物体に対する距離画像における縦方向の位置と、各位置における距離値と、を関連付けた距離値の頻度分布を示す頻度画像を、距離値の方向において１以上のセグメントに分割する分割部と、分割部により分割されたセグメントのうち、所定の１以上の各セグメントにおいて、距離値の頻度を示す各頻度点から、各距離値の位置において０以上の標本点を選択する第１選択部と、第１選択部により選択された標本点の群から路面の形状を推定する第１推定部と、第１推定部により推定された路面である第１推定路面を含むセグメントが、路面の開始位置に対応する開始セグメントであることの成否の判断のため、第１推定路面が所定条件を満たすか否かを判定する第１判定部と、を備える。【選択図】図１４
2018045680.tif 000002
【特許請求の範囲】
【請求項１】
物体に対する距離画像における縦方向の位置と、前記各位置における距離値と、を関連付けた前記距離値の頻度分布を示す頻度画像を、前記距離値の方向において１以上のセグメントに分割する分割部と、
前記分割部により分割されたセグメントのうち、所定の１以上の各セグメントにおいて、前記距離値の頻度を示す各頻度点から、前記各距離値の位置において０以上の標本点を選択する第１選択部と、
前記第１選択部により選択された前記標本点の群から路面の形状を推定する第１推定部と、
前記第１推定部により推定された路面である第１推定路面を含むセグメントが、前記路面の開始位置に対応する開始セグメントであることの成否の判断のため、前記第１推定路面が所定条件を満たすか否かを判定する第１判定部と、
を備えた画像処理装置。
【請求項２】
前記第１判定部は、前記第１推定路面が適切であるか否かを、前記所定条件を満たすか否かによって判定し、前記第１推定路面が前記所定条件を満たす場合、該第１推定路面を含むセグメントを前記開始セグメントに決定し、
前記第１判定部によって前記所定の１以上の各セグメントから前記開始セグメントが決定されない場合、前記所定条件を緩和した条件に基づいて、前記第１選択部による前記標本点の選択、前記第１推定部による前記路面の形状の推定、および、前記第１判定部による前記緩和した条件を満たすか否かの判定を、所定回数繰り返す請求項１に記載の画像処理装置。
【請求項３】
前記第１選択部は、前記所定の１以上の各セグメントにおいて、前記各位置での前記標本点の数が所定数以内となるように選択する請求項２に記載の画像処理装置。
【請求項４】
前記緩和した条件は、前記所定条件に含まれる前記第１選択部により選択された標本点の数、該標本点についての分散、および、前記第１推定路面の角度に対する条件のうち、少なくともいずれかの条件を緩和した条件である請求項２または３に記載の画像処理装置。
【請求項５】
前記第１判定部によって前記所定の１以上の各セグメントから前記開始セグメントが決定されない場合、前記第１選択部による前記標本点の選択、前記第１推定部による前記路面の形状の推定、および、前記第１判定部による前記緩和した条件を満たすか否かの判定を、該所定の１以上のセグメントよりも少ないセグメントにおいて、前記所定回数繰り返す請求項２〜４のいずれか一項に記載の画像処理装置。
【請求項６】
前記第１選択部による前記標本点の選択、前記第１推定部による前記路面の形状の推定、および、前記第１判定部による前記緩和した条件を満たすか否かの判定が、前記所定回数繰り返されても、前記第１判定部により前記開始セグメントが決定されない場合、前記分割部により分割されたセグメントのうち、所定のセグメントを前記開始セグメントに設定する設定部を、さらに備えた請求項２〜５のいずれか一項に記載の画像処理装置。
【請求項７】
前記設定部は、設定した前記開始セグメントに対応する前記第１推定路面として、平坦な路面と仮定した路面、または、前記距離画像に対応するフレームより前のフレームで推定された路面に基づく路面を設定する請求項６に記載の画像処理装置。
【請求項８】
前記開始セグメントが定まった後、該開始セグメントより遠方のセグメントにおいて、前記各頻度点から、前記各距離値の位置において０以上の前記標本点を選択する第２選択部と、
前記第２選択部により選択された前記標本点の群から路面の形状を推定する第２推定部と、
前記第２推定部により推定された路面である第２推定路面が適切であるか否かを、特定の条件を満たすか否かによって判定し、前記第２推定路面が該特定の条件を満たす場合、該第２推定路面を、対象とするセグメントでの適切な推定路面として決定する第２判定部と、
をさらに備えた請求項２〜７のいずれか一項に記載の画像処理装置。
【請求項９】
前記開始セグメントが定まった後、前記第１判定部による前記所定条件を満たすか否かの判定の処理の方向と逆方向にセグメントが存在する場合、該開始セグメントの前記第１推定路面上の所定の点と、該点よりも前記処理の方向と逆方向に存在する所定の点とを結ぶ直線を、前記処理の方向と逆方向のセグメントの路面として補間する補間部を、さらに備えた請求項２〜８のいずれか一項に記載の画像処理装置。
【請求項１０】
前記開始セグメントが定まった後、前記第１判定部による前記所定条件を満たすか否かの判定の処理の方向と逆方向にセグメントが存在する場合、該開始セグメントの前記第１推定路面を前記処理の方向と逆方向に延長した路面を、該処理の方向と逆方向のセグメントの路面として補間する補間部を、さらに備えた請求項２〜８のいずれか一項に記載の画像処理装置。
【請求項１１】
前記分割部は、前記頻度画像を、遠方のセグメントほど前記距離値の方向の幅を小さく分割する請求項２〜１０のいずれか一項に記載の画像処理装置。
【請求項１２】
物体に対する距離画像における縦方向の位置と、前記各位置における距離値と、を関連付けた前記距離値の頻度分布を示す頻度画像を、前記距離値の方向において複数のセグメントに分割する分割部と、
前記分割部により分割されたセグメントが所定条件を満たすか否かを、前記セグメント毎に順次判定することにより開始セグメントを決定する判定部と、
前記判定部により決定された前記開始セグメントから各セグメントを順次処理することにより、路面の形状を推定する推定部と、
を備え、
前記判定部は、前記所定条件を満たすセグメントがないと判定した場合には、前記所定条件を緩和した条件を満たすか否かを、前記セグメント毎に順次判定することにより開始セグメントを決定する画像処理装置。
【請求項１３】
前記第１判定部は、前記第１推定路面が、前記所定条件である第１条件を満たすか否かを判定し、
前記第１判定部により前記第１条件を満たすと判定された前記第１推定路面が複数存在する場合、所定の基準を満たす１の前記第１推定路面を含むセグメントを、前記開始セグメントとして設定する第１設定部を、さらに備えた請求項１に記載の画像処理装置。
【請求項１４】
前記第１設定部は、前記所定の基準を満たすセグメントとして、前記第１条件を満たすと判定された複数の前記第１推定路面のうち、最も近方の前記第１推定路面を含むセグメントを、前記開始セグメントとして設定する請求項１３に記載の画像処理装置。
【請求項１５】
前記第１設定部は、前記所定の基準を満たすセグメントとして、前記第１条件を満たすと判定された複数の前記第１推定路面のうち、前記距離画像に対応するフレームより前のフレームで推定された路面に基づく履歴路面との差異が最小となる前記第１推定路面を含むセグメントを、前記開始セグメントとして設定する請求項１３に記載の画像処理装置。
【請求項１６】
前記距離画像に対応するフレームより前のフレームで推定された路面の情報を記憶する記憶部を、さらに備え、
前記第１設定部は、前記記憶部から前記前のフレームで推定された路面を読み出して、前記履歴路面を求める請求項１５に記載の画像処理装置。
【請求項１７】
前記第１設定部は、前記第１条件を満たすと判定された前記第１推定路面を含むセグメントにおいて、前記距離値の方向の両端の位置における該第１推定路面と前記履歴路面との前記縦方向のそれぞれの差の総和を前記差異として求める請求項１５または１６に記載の画像処理装置。
【請求項１８】
前記第１条件は、前記第１選択部により選択された前記標本点の数、該標本点についての分散、および、前記第１推定路面の角度のうち少なくともいずれかに対する条件である請求項１３〜１７のいずれか一項に記載の画像処理装置。
【請求項１９】
前記第１設定部は、前記第１判定部により前記第１条件を満たすと判定された前記第１推定路面が存在しない場合、前記分割部により分割されたセグメントのうち所定のセグメントを前記開始セグメントに設定する請求項１３〜１８のいずれか一項に記載の画像処理装置。
【請求項２０】
前記第１設定部は、設定した前記開始セグメントに対応する前記第１推定路面として、平坦な路面と仮定した路面、または、前記距離画像に対応するフレームより前のフレームで推定された路面に基づく履歴路面を設定する請求項１９に記載の画像処理装置。
【請求項２１】
前記開始セグメントが設定された後、該開始セグメントより遠方のセグメントにおいて、前記各頻度点から、前記各距離値の位置において０以上の前記標本点を選択する第２選択部と、
前記第２選択部により選択された前記標本点の群から路面の形状を推定する第２推定部と、
前記第２推定部により推定された路面である第２推定路面が第２条件を満たすか否かを判定する第２判定部と、
前記第２判定部により前記第２推定路面が前記第２条件を満たすと判定された場合、該第２推定路面を、対象とするセグメントでの適切な推定路面として設定する第２設定部と、
をさらに備えた請求項１３〜２０のいずれか一項に記載の画像処理装置。
【請求項２２】
前記開始セグメントが設定された後、前記第１判定部による前記第１条件を満たすか否かの判定の処理の方向と逆方向にセグメントが存在する場合、該開始セグメントの前記第１推定路面上の所定の点と、該点よりも前記処理の方向と逆方向に存在する所定の点とを結ぶ直線を、前記処理の方向と逆方向のセグメントの路面として補間する補間部を、さらに備えた請求項１３〜２１のいずれか一項に記載の画像処理装置。
【請求項２３】
前記開始セグメントが設定された後、前記第１判定部による前記第１条件を満たすか否かの判定の処理の方向と逆方向にセグメントが存在する場合、該開始セグメントの前記第１推定路面を前記処理の方向と逆方向に延長した路面を、該処理の方向と逆方向のセグメントの路面として補間する補間部を、さらに備えた請求項１３〜２１のいずれか一項に記載の画像処理装置。
【請求項２４】
被写体を撮像することにより第１撮像画像を得る第１撮像部と、
前記第１撮像部の位置とは異なる位置に配置され、前記被写体を撮像することにより第２撮像画像を得る第２撮像部と、
前記第１撮像画像および前記第２撮像画像から前記被写体に対して求めた前記距離値に基づいて、前記距離画像を生成する第１生成部と、
前記距離画像に基づいて、前記頻度画像を生成する第２生成部と、
請求項１〜２３のいずれか一項に記載の画像処理装置と、
を備えた物体認識装置。
【請求項２５】
請求項２４に記載の物体認識装置と、
前記物体認識装置により検出された前記物体の情報に基づいて、制御対象を制御する制御装置と、
を備えた機器制御システム。
【請求項２６】
請求項２５に記載の機器制御システムを備えた移動体。
【請求項２７】
物体に対する距離画像における縦方向の位置と、前記各位置における距離値と、を関連付けた前記距離値の頻度分布を示す頻度画像を、前記距離値の方向において１以上のセグメントに分割する分割ステップと、
分割したセグメントのうち、所定の１以上の各セグメントにおいて、前記距離値の頻度を示す各頻度点から、前記各距離値の位置において０以上の標本点を選択する選択ステップと、
選択した前記標本点の群から路面の形状を推定する推定ステップと、
推定した路面である第１推定路面を含むセグメントが、前記路面の開始位置に対応する開始セグメントであることの成否の判断のため、前記第１推定路面が所定条件を満たすか否かを判定する判定ステップと、
を有する画像処理方法。
【請求項２８】
コンピュータを、
物体に対する距離画像における縦方向の位置と、前記各位置における距離値と、を関連付けた前記距離値の頻度分布を示す頻度画像を、前記距離値の方向において１以上のセグメントに分割する分割部と、
前記分割部により分割されたセグメントのうち、所定の１以上の各セグメントにおいて、前記距離値の頻度を示す各頻度点から、前記各距離値の位置において０以上の標本点を選択する第１選択部と、
前記第１選択部により選択された前記標本点の群から路面の形状を推定する第１推定部と、
前記第１推定部により推定された路面である第１推定路面を含むセグメントが、前記路面の開始位置に対応する開始セグメントであることの成否の判断のため、前記第１推定路面が所定条件を満たすか否かを判定する第１判定部と、
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、物体認識装置、機器制御システム、移動体、画像処理方法およびプログラムに関する。
【背景技術】
【０００２】
従来、自動車の安全性において、歩行者と自動車とが衝突したときに、いかに歩行者を守れるか、および、乗員を保護できるかの観点から、自動車のボディー構造等の開発が行われてきた。しかしながら、近年、情報処理技術および画像処理技術の発達により、高速に人および自動車を検出する技術が開発されてきている。これらの技術を応用して、自動車が物体に衝突する前に自動的にブレーキをかけ、衝突を未然に防ぐという自動車もすでに開発されている。車両の自動制御には、人または他車等の物体までの距離を正確に測定する必要があり、そのためには、ミリ波レーダおよびレーザレーダによる測距、ならびに、ステレオカメラによる測距等が実用化されている。このような車両の自動制御を実用化するためには、上述した装置で測距された情報に基づいて、画面上に写る物体を検出し、物体ごとに制御を行う必要がある。例えば、検出された物体が歩行者か車両かによって制御を変えることが想定される。
【０００３】
ステレオカメラで測距する場合、左右のカメラで撮影された局所領域のズレ量（視差）に基づいて視差画像を生成し、前方物体と自車との距離を測定することができる。そして、同程度の距離に存在する（同程度の視差値を有する）視差画素の群を１つの物体として検出するクラスタリング処理を行う。しかし、視差画像においてすべての視差画素をクラスタリングしてしまうと、検出対象となる物体とは別に、路面上の白線等の視差画素も物体として検出し、平坦であるはずの路面の一部分を物体として誤検出してしまう問題がある。この場合、自動制御システムは、前方に物体が存在するものであると判定して、例えば、急ブレーキをかけてしまうという問題が生じる。
【０００４】
この問題を解決するために、各視差画素（視差画像上の一点）を、視差画像の垂直位置（ｙ座標の位置）に対して、その視差画素の視差値が示す水平座標（以下、「ｄｐ座標」と称する場合がある）に投票したＶ−Ｄｉｓｐａｒｉｔｙマップ（縦軸：視差画像の垂直座標、横軸：視差値）（以下、単に「Ｖマップ」と称する場合がある）（頻度画像）を生成し、Ｖマップに投票された点（以下、「視差点」と称する場合がある）群に対して最小二乗法等の統計手法を用いて路面形状を推定するという方法がある。ここで、Ｖ−Ｄｉｓｐａｒｉｔｙマップとは、上述のように、縦軸を視差画像のｙ軸とし、横軸を視差画像の視差値（または距離）とした、視差値の頻度分布を示す二次元ヒストグラムである。また、投票とは、Ｖマップ上の所定の座標の視差点の値（画素値）（初期値＝０）を１だけインクリメントする処理をいうものとする。そして、推定された路面（推定路面）よりも高い位置に存在する視差点に対応する視差画像の視差画素によってクラスタリング処理を行うことによって、路面等から検出された不要な視差画素を誤って物体として検出してしまう問題を緩和することができる。
【０００５】
このようにＶマップを生成して路面を推定する技術として、Ｖマップの所定の始点から終点にかけて標本点を決定し、これらの標本点群に対して最小二乗法を用いて路面の推定を行う技術が提案されている（特許文献１参照）。具体的には、視差画像の下から上方に向けて（近方から遠方に向けて）、各水平ライン上で視差値の頻度についてのヒストグラムを生成し、その中の頻度が最大となる視差を標本点として、これらの標本点群に対して最小二乗法等の統計的手法を用いて路面形状を推定するものとしている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、路面の推定において路面の開始位置を適切に検出することが重要であるところ、特許文献１に記載された技術では、不適切な視差点を標本点として選択する可能性があり、この標本点をベースに探索された標本点群を使って路面を推定していくため、路面の推定が適切に行われない可能性があるという問題がある。
【０００７】
本発明は、上記に鑑みてなされたものであって、路面を精度よく検出することができる画像処理装置、物体認識装置、機器制御システム、移動体、画像処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、物体に対する距離画像における縦方向の位置と、前記各位置における距離値と、を関連付けた前記距離値の頻度分布を示す頻度画像を、前記距離値の方向において１以上のセグメントに分割する分割部と、前記分割部により分割されたセグメントのうち、所定の１以上の各セグメントにおいて、前記距離値の頻度を示す各頻度点から、前記各距離値の位置において０以上の標本点を選択する第１選択部と、前記第１選択部により選択された前記標本点の群から路面の形状を推定する第１推定部と、前記第１推定部により推定された路面である第１推定路面を含むセグメントが、前記路面の開始位置に対応する開始セグメントであることの成否の判断のため、前記第１推定路面が所定条件を満たすか否かを判定する第１判定部と、を備えたことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、路面を精度よく検出することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施形態に係る機器制御システムを車両に搭載した例を示す図である。
【図２】図２は、第１の実施形態に係る物体認識装置の外観の一例を示す図である。
【図３】図３は、第１の実施形態に係る物体認識装置のハードウェア構成の一例を示す図である。
【図４】図４は、撮像部から物体までの距離を導き出す原理を説明する図である。
【図５】図５は、基準画像における基準画素に対応する比較画像における対応画素を求める場合の説明図である。
【図６】図６は、ブロックマッチング処理の結果のグラフの一例を示す図である。
【図７】図７は、第１の実施形態に係る物体認識装置の機能ブロック構成の一例を示す図である。
【図８】図８は、視差画像から生成されるＶマップの一例を示す図である。
【図９】図９は、平坦な路面の場合のＶマップの一例を示す図である。
【図１０】図１０は、上り坂に差し掛かる場合のＶマップの一例を示す図である。
【図１１】図１１は、下り坂に差し掛かる場合のＶマップの一例を示す図である。
【図１２】図１２は、視差画像から生成されるＵマップの一例を示す図である。
【図１３】図１３は、第１の実施形態に係る物体認識装置の視差値演算処理部の機能ブロック構成の一例を示す図である。
【図１４】図１４は、第１の実施形態に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。
【図１５】図１５は、Ｖマップの生成動作を説明する図である。
【図１６】図１６は、Ｖマップにおいてセグメントに分割する動作を説明する図である。
【図１７】図１７は、第１の実施形態の開始セグメント探索処理を説明する図である。
【図１８】図１８は、第１の実施形態に係る視差値導出部のブロックマッチング処理の動作の一例を示すフローチャートである。
【図１９】図１９は、第１の実施形態に係る路面推定部の路面推定処理の動作の一例を示すフローチャートである。
【図２０】図２０は、第１の実施形態の変形例に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。
【図２１】図２１は、第１の実施形態の変形例の開始セグメント探索処理を説明する図である。
【図２２】図２２は、Ｖマップの推定路面が物体の視差点の影響を受ける一例を示す図である。
【図２３】図２３は、第２の実施形態に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。
【図２４】図２４は、近方に存在するセグメントを開始セグメントに設定する動作を説明する図である。
【図２５】図２５は、第２の実施形態に係る路面推定部の路面推定処理の動作の一例を示すフローチャートである。
【図２６】図２６は、第２の実施形態の変形例に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。
【図２７】図２７は、路面推定が成功したセグメントが複数ある場合に誤ったセグメントを選択する動作の一例を示す図である。
【図２８】図２８は、履歴路面に近い路面を含むセグメントを開始セグメントに設定する動作を説明する図である。
【図２９】図２９は、ピッチングがない場合に路面の傾斜変化を説明する図である。
【図３０】図３０は、ピッチングにより車両が前に傾く場合に路面の傾斜変化を説明する図である。
【図３１】図３１は、ピッチングにより車両が後に傾く場合に路面の傾斜変化を説明する図である。
【図３２】図３２は、ピッチングがある場合に履歴路面を用いた開始セグメント探索処理を説明する図である。
【図３３】図３３は、第２の実施形態の変形例に係る路面推定部の路面推定処理の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、図１〜図３３を参照しながら、本発明に係る画像処理装置、物体認識装置、機器制御システム、移動体、画像処理方法およびプログラムの実施形態を詳細に説明する。また、以下の実施形態によって本発明が限定されるものではなく、以下の実施形態における構成要素には、当業者が容易に想到できるもの、実質的に同一のもの、およびいわゆる均等の範囲のものが含まれる。さらに、以下の実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換、変更および組み合わせを行うことができる。
【００１２】
［第１の実施形態］
（物体認識装置を備えた車両の概略構成）
図１は、第１の実施形態に係る機器制御システムを車両に搭載した例を示す図である。図１を参照しながら、本実施形態の機器制御システム６０が車両７０に搭載される場合を例に説明する。
【００１３】
図１のうち、図１（ａ）は、機器制御システム６０を搭載した車両７０の側面図であり、図１（ｂ）は、車両７０の正面図である。
【００１４】
図１に示すように、自動車である車両７０は、機器制御システム６０を搭載している。機器制御システム６０は、車両７０の居室空間である車室に設置された物体認識装置１と、車両制御装置６（制御装置）と、ステアリングホイール７と、ブレーキペダル８と、を備えている。
【００１５】
物体認識装置１は、車両７０の進行方向を撮像する撮像機能を有し、例えば、車両７０のフロントウィンドウ内側のバックミラー近傍に設置される。物体認識装置１は、構成および動作の詳細は後述するが、本体部２と、本体部２に固定された撮像部１０ａと、撮像部１０ｂとを備えている。撮像部１０ａ、１０ｂは、車両７０の進行方向の被写体を撮像できるように本体部２に固定されている。
【００１６】
車両制御装置６は、物体認識装置１から受信した認識情報に基づいて、各種車両制御を実行するＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）である。車両制御装置６は、車両制御の例として、物体認識装置１から受信した認識情報に基づいて、ステアリングホイール７を含むステアリング系統（制御対象）を制御して障害物を回避するステアリング制御、または、ブレーキペダル８（制御対象）を制御して車両７０を減速および停止させるブレーキ制御等を実行する。
【００１７】
このような物体認識装置１および車両制御装置６を含む機器制御システム６０のように、ステアリング制御またはブレーキ制御等の車両制御が実行されることによって、車両７０の運転の安全性を向上することができる。
【００１８】
なお、上述のように、物体認識装置１は、車両７０の前方を撮像するものとしたが、これに限定されるものではない。すなわち、物体認識装置１は、車両７０の後方または側方を撮像するように設置されるものとしてもよい。この場合、物体認識装置１は、車両７０の後方の後続車および人、または側方の他の車両および人等の位置を検出することができる。そして、車両制御装置６は、車両７０の車線変更時または車線合流時等における危険を検知して、上述の車両制御を実行することができる。また、車両制御装置６は、車両７０の駐車時等におけるバック動作において、物体認識装置１によって出力された車両７０の後方の障害物についての認識情報に基づいて、衝突の危険があると判断した場合に、上述の車両制御を実行することができる。
【００１９】
（物体認識装置の構成）
図２は、第１の実施形態に係る物体認識装置の外観の一例を示す図である。図２に示すように、物体認識装置１は、上述のように、本体部２と、本体部２に固定された撮像部１０ａと、撮像部１０ｂとを備えている。撮像部１０ａ、１０ｂは、本体部２に対して平行等位に配置された一対の円筒形状のカメラで構成されている。また、説明の便宜上、図２に示す撮像部１０ａを右のカメラと称し、撮像部１０ｂを左のカメラと称する場合がある。
【００２０】
＜物体認識装置のハードウェア構成＞
図３は、第１の実施形態に係る物体認識装置のハードウェア構成の一例を示す図である。図３を参照しながら、物体認識装置１のハードウェア構成について説明する。
【００２１】
図３に示すように、物体認識装置１は、本体部２内に視差値導出部３および認識処理部５を備えている。
【００２２】
視差値導出部３は、物体を撮像して得られた複数の画像から、物体に対する視差を示す視差値ｄｐを導出し、各画素の画素値として視差値ｄｐ（距離値の一例）を示す視差画像（距離画像の一例）を出力する装置である。認識処理部５は、視差値導出部３から出力された視差画像に基づいて、撮像画像に写り込んでいる人および車等の物体に対する物体認識処理等を行い、物体認識処理の結果を示す情報である認識情報を、車両制御装置６に出力する装置である。なお、視差画像および撮像画像等の画像には、ディスプレイ等の表示を伴わない単なる情報の集合体の概念も含むものとする。
【００２３】
図３に示すように、視差値導出部３は、撮像部１０ａと、撮像部１０ｂと、信号変換部２０ａと、信号変換部２０ｂと、画像処理部３０と、を備えている。
【００２４】
撮像部１０ａは、前方の被写体を撮像してアナログの画像信号を生成する処理部である。撮像部１０ａは、撮像レンズ１１ａと、絞り１２ａと、画像センサ１３ａと、を備えている。
【００２５】
撮像レンズ１１ａは、入射する光を屈折させて物体の像を画像センサ１３ａに結像させるための光学素子である。絞り１２ａは、撮像レンズ１１ａを通過した光の一部を遮ることによって、画像センサ１３ａに入力する光の量を調整する部材である。画像センサ１３ａは、撮像レンズ１１ａに入射し、絞り１２ａを通過した光を電気的なアナログの画像信号に変換する半導体素子である。画像センサ１３ａは、例えば、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅｓ）またはＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）等の固体撮像素子によって実現される。
【００２６】
撮像部１０ｂは、前方の被写体を撮像してアナログの画像信号を生成する処理部である。撮像部１０ｂは、撮像レンズ１１ｂと、絞り１２ｂと、画像センサ１３ｂと、を備えている。なお、撮像レンズ１１ｂ、絞り１２ｂおよび画像センサ１３ｂの機能は、それぞれ上述した撮像レンズ１１ａ、絞り１２ａおよび画像センサ１３ａの機能と同様である。また、撮像レンズ１１ａおよび撮像レンズ１１ｂは、左右のカメラが同一の条件で撮像されるように、それぞれのレンズの主面が互いに同一平面上にあるように設置されている。
【００２７】
信号変換部２０ａは、撮像部１０ａにより生成されたアナログの画像信号を、デジタル形式の画像データに変換する処理部である。信号変換部２０ａは、ＣＤＳ（Ｃｏｒｒｅｌａｔｅｄ  Ｄｏｕｂｌｅ  Ｓａｍｐｌｉｎｇ）２１ａと、ＡＧＣ（Ａｕｔｏ  Ｇａｉｎ  Ｃｏｎｔｒｏｌ）２２ａと、ＡＤＣ（Ａｎａｌｏｇ  Ｄｉｇｉｔａｌ  Ｃｏｎｖｅｒｔｅｒ）２３ａと、フレームメモリ２４ａと、を備えている。
【００２８】
ＣＤＳ２１ａは、画像センサ１３ａにより生成されたアナログの画像信号に対して、相関二重サンプリング、横方向の微分フィルタ、または縦方向の平滑フィルタ等によりノイズを除去する。ＡＧＣ２２ａは、ＣＤＳ２１ａによってノイズが除去されたアナログの画像信号の強度を制御する利得制御を行う。ＡＤＣ２３ａは、ＡＧＣ２２ａによって利得制御されたアナログの画像信号をデジタル形式の画像データに変換する。フレームメモリ２４ａは、ＡＤＣ２３ａによって変換された画像データを記憶する。
【００２９】
信号変換部２０ｂは、撮像部１０ｂにより生成されたアナログの画像信号を、デジタル形式の画像データに変換する処理部である。信号変換部２０ｂは、ＣＤＳ２１ｂと、ＡＧＣ２２ｂと、ＡＤＣ２３ｂと、フレームメモリ２４ｂと、を備えている。なお、ＣＤＳ２１ｂ、ＡＧＣ２２ｂ、ＡＤＣ２３ｂおよびフレームメモリ２４ｂの機能は、それぞれ上述したＣＤＳ２１ａ、ＡＧＣ２２ａ、ＡＤＣ２３ａおよびフレームメモリ２４ａの機能と同様である。
【００３０】
画像処理部３０は、信号変換部２０ａおよび信号変換部２０ｂによって変換された画像データに対して画像処理を行う装置である。画像処理部３０は、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）３１と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３４と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３５と、バスライン３９と、を備えている。
【００３１】
ＦＰＧＡ３１は、集積回路であり、ここでは、画像データに基づく画像における視差値ｄｐを導出する処理を行う。ＣＰＵ３２は、視差値導出部３の各機能を制御する。ＲＯＭ３３は、ＣＰＵ３２が視差値導出部３の各機能を制御するために実行する画像処理用プログラムを記憶している。ＲＡＭ３４は、ＣＰＵ３２のワークエリアとして使用される。Ｉ／Ｆ３５は、認識処理部５におけるＩ／Ｆ５５と、通信線４とを介して通信するためのインターフェースである。バスライン３９は、図３に示すように、ＦＰＧＡ３１、ＣＰＵ３２、ＲＯＭ３３、ＲＡＭ３４およびＩ／Ｆ３５が互いに通信可能となるように接続するアドレスバスおよびデータバス等である。
【００３２】
なお、画像処理部３０は、視差値ｄｐを導出する集積回路としてＦＰＧＡ３１を備えるものとしているが、これに限定されるものではなく、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のその他の集積回路であってもよい。
【００３３】
図３に示すように、認識処理部５は、ＦＰＧＡ５１と、ＣＰＵ５２と、ＲＯＭ５３と、ＲＡＭ５４と、Ｉ／Ｆ５５と、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）Ｉ／Ｆ５８と、バスライン５９と、を備えている。
【００３４】
ＦＰＧＡ５１は、集積回路であり、ここでは、画像処理部３０から受信した視差画像に基づいて、物体に対する物体認識処理を行う。ＣＰＵ５２は、認識処理部５の各機能を制御する。ＲＯＭ５３は、ＣＰＵ５２が認識処理部５の物体認識処理を実行する物体認識処理用プログラムを記憶している。ＲＡＭ５４は、ＣＰＵ５２のワークエリアとして使用される。Ｉ／Ｆ５５は、画像処理部３０のＩ／Ｆ３５と、通信線４とを介してデータ通信するためのインターフェースである。ＣＡＮＩ／Ｆ５８は、外部コントローラ（例えば、図３に示す車両制御装置６）と通信するためのインターフェースであり、例えば、自動車のＣＡＮ等に接続されるバスライン５９は、図３に示すように、ＦＰＧＡ５１、ＣＰＵ５２、ＲＯＭ５３、ＲＡＭ５４、Ｉ／Ｆ５５およびＣＡＮＩ／Ｆ５８が互いに通信可能となるように接続するアドレスバスおよびデータバス等である。
【００３５】
なお、認識処理部５は、物体認識処理を行う集積回路としてＦＰＧＡ５１を備えるものとしているが、これに限定されるものではなく、ＡＳＩＣ等のその他の集積回路であってもよい。
【００３６】
このような構成により、画像処理部３０のＩ／Ｆ３５から通信線４を介して認識処理部５に視差画像が送信されると、認識処理部５におけるＣＰＵ５２の命令によって、ＦＰＧＡ５１が、視差画像に基づいて、撮像画像に写り込んでいる人および車等の物体の物体認識処理等を実行する。
【００３７】
なお、上述の各プログラムは、インストール可能な形式または実行可能な形式のファイルで、コンピュータで読み取り可能な記録媒体に記録して流通させてもよい。この記録媒体は、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）またはＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード等である。
【００３８】
また、図３に示すように、視差値導出部３の画像処理部３０と、認識処理部５とは別体の装置としているが、これに限定されるものではなく、例えば、画像処理部３０と認識処理部５とを同一の装置として、視差画像の生成、および物体認識処理を行うものとしてもよい。また、図３に示す物体認識装置１のハードウェア構成は一例であって、これに限定されるものではなく、上述と同様の機能を実現するハードウェア回路によって実現されてもよい。
【００３９】
＜測距の原理＞
図４は、撮像部から物体までの距離を導き出す原理を説明する図である。図４を参照しながら、ステレオマッチング処理により、ステレオカメラから物体に対する視差を導出し、この視差を示す視差値によって、ステレオカメラから物体までの距離を測定する原理について説明する。
【００４０】
図４に示す撮像システムは、平行等位に配置された撮像部１０ａと撮像部１０ｂとを有するものとする。撮像部１０ａ、１０ｂは、それぞれ、入射する光を屈折させて物体の像を固体撮像素子である画像センサに結像させる撮像レンズ１１ａ、１１ｂを有する。撮像部１０ａおよび撮像部１０ｂによって撮像された各画像を、それぞれ基準画像Ｉａおよび比較画像Ｉｂとする。図４において、３次元空間内の物体Ｅ上の点Ｓは、基準画像Ｉａおよび比較画像Ｉｂそれぞれにおいて、撮像レンズ１１ａと撮像レンズ１１ｂとを結ぶ直線と平行な直線上の位置に写像される。ここで、各画像に写像された点Ｓを、基準画像Ｉａにおいて点Ｓａ（ｘ，ｙ）とし、比較画像Ｉｂにおいて点Ｓｂ（Ｘ，ｙ）とする。このとき、視差値ｄｐは、基準画像Ｉａ上の座標における点Ｓａ（ｘ，ｙ）と比較画像Ｉｂ上の座標における点Ｓｂ（Ｘ，ｙ）とを用いて、以下の（式１）のように表される。
【００４１】
ｄｐ＝Ｘ−ｘ                                                    ・・・（式１）
【００４２】
また、図４において、基準画像Ｉａにおける点Ｓａ（ｘ，ｙ）と撮像レンズ１１ａから撮像面上におろした垂線の交点との距離をΔａとし、比較画像Ｉｂにおける点Ｓｂ（Ｘ，ｙ）と撮像レンズ１１ｂから撮像面上におろした垂線の交点との距離をΔｂとすると、視差値ｄｐは、ｄｐ＝Δａ＋Δｂと表すこともできる。
【００４３】
次に、視差値ｄｐを用いることにより、撮像部１０ａ、１０ｂと物体Ｅとの間の距離Ｚを導出する。ここで、距離Ｚは、撮像レンズ１１ａの焦点位置と撮像レンズ１１ｂの焦点位置とを結ぶ直線から物体Ｅ上の点Ｓまでの距離である。図４に示すように、撮像レンズ１１ａおよび撮像レンズ１１ｂの焦点距離ｆ、撮像レンズ１１ａと撮像レンズ１１ｂとの間の長さである基線長Ｂ、および視差値ｄｐを用いて、下記の（式２）により、距離Ｚを算出することができる。
【００４４】
Ｚ＝（Ｂ×ｆ）／ｄｐ                                            ・・・（式２）
【００４５】
この（式２）により、視差値ｄｐが大きいほど距離Ｚは小さく、視差値ｄｐが小さいほど距離Ｚは大きくなることがわかる。
【００４６】
＜ブロックマッチング処理＞
図５は、基準画像における基準画素に対応する比較画像における対応画素を求める場合の説明図である。図６は、ブロックマッチング処理の結果のグラフの一例を示す図である。図５および図６を参照しながら、ブロックマッチング処理による測距方法について説明する。
【００４７】
図５および図６を参照しながら、コスト値Ｃ（ｐ，ｄ）の算出方法について説明する。なお、以降、Ｃ（ｐ，ｄ）は、Ｃ（ｘ，ｙ，ｄ）を表すものとして説明する。
【００４８】
図５のうち、図５（ａ）は、基準画像Ｉａにおける基準画素ｐおよび基準領域ｐｂを示す概念図を示し、図５（ｂ）は、図５（ａ）に示す基準画素ｐに対応する比較画像Ｉｂにおける対応画素の候補を順次シフトしながら（ずらしながら）、コスト値Ｃを算出する際の概念図である。ここで、対応画素とは、基準画像Ｉａにおける基準画素ｐに最も類似する比較画像Ｉｂにおける画素を示す。また、コスト値Ｃとは、基準画像Ｉａにおける基準画素ｐに対する、比較画像Ｉｂにおける各画素の類似度または非類似度を表す評価値（一致度）である。以下に示すコスト値Ｃは、値が小さいほど、比較画像Ｉｂにおける画素が基準画素ｐと類似していることを示す非類似度を表す評価値であるものとして説明する。
【００４９】
図５（ａ）に示すように、基準画像Ｉａにおける基準画素ｐ（ｘ，ｙ）、および、基準画素ｐ（ｘ，ｙ）に対する比較画像Ｉｂにおけるエピポーラ線ＥＬ上の対応画素の候補である候補画素ｑ（ｘ＋ｄ，ｙ）の各輝度値（画素値）に基づいて、基準画素ｐ（ｘ，ｙ）に対する対応画素の候補である候補画素ｑ（ｘ＋ｄ，ｙ）のコスト値Ｃ（ｐ，ｄ）が算出される。ｄは、基準画素ｐと候補画素ｑとのシフト量（ずれ量）であり、シフト量ｄは、画素単位でシフトされる。すなわち、候補画素ｑ（ｘ＋ｄ，ｙ）を予め指定された範囲（例えば、０＜ｄ＜２５）において順次一画素分シフトしながら、候補画素ｑ（ｘ＋ｄ，ｙ）と基準画素ｐ（ｘ，ｙ）との輝度値の非類似度であるコスト値Ｃ（ｐ，ｄ）が算出される。また、基準画素ｐの対応画素を求めるためのステレオマッチング処理として、本実施形態ではブロックマッチング処理を行う。ブロックマッチング処理では、基準画像Ｉａの基準画素ｐを中心とする所定領域である基準領域ｐｂと、比較画像Ｉｂの候補画素ｑを中心とする候補領域ｑｂ（大きさは基準領域ｐｂと同一）との非類似度を求める。基準領域ｐｂと候補領域ｑｂとの非類似度を示すコスト値Ｃとしては、ＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）、ＳＳＤ（Ｓｕｍ  ｏｆ  Ｓｑｕａｒｅｄ  Ｄｉｆｆｅｒｅｎｃｅ）、または、ＳＳＤの値から各ブロックの平均値を減算したＺＳＳＤ（Ｚｅｒｏ−ｍｅａｎ−Ｓｕｍ  ｏｆ  Ｓｑｕａｒｅｄ  Ｄｉｆｆｅｒｅｎｃｅ）等が用いられる。これらの評価値は、相関が高い（類似の度合いが高い）ほど、値が小さくなるので非類似度を示す。
【００５０】
なお、上述のように、撮像部１０ａ、１０ｂは、それぞれ平行等位に配置されるため、基準画像Ｉａおよび比較画像Ｉｂも、それぞれ平行等位の関係にある。したがって、基準画像Ｉａにおける基準画素ｐに対応する比較画像Ｉｂにおける対応画素は、図５に紙面視横方向の線として示されるエピポーラ線ＥＬ上に存在することになり、比較画像Ｉｂにおける対応画素を求めるためには、比較画像Ｉｂのエピポーラ線ＥＬ上の画素を探索すればよい。
【００５１】
このようなブロックマッチング処理で算出されたコスト値Ｃ（ｐ，ｄ）は、シフト量ｄとの関係で、例えば、図６に示すグラフにより表される。図６の例では、コスト値Ｃは、シフト量ｄ＝７の場合が最小値となるため、視差値ｄｐ＝７として導出される。
【００５２】
＜物体認識装置の機能ブロックの構成および動作＞
図７は、第１の実施形態に係る物体認識装置の機能ブロック構成の一例を示す図である。図８は、視差画像から生成されるＶマップの一例を示す図である。図９は、平坦な路面の場合のＶマップの一例を示す図である。図１０は、上り坂に差し掛かる場合のＶマップの一例を示す図である。図１１は、下り坂に差し掛かる場合のＶマップの一例を示す図である。図１２は、視差画像から生成されるＵマップの一例を示す図である。図７〜図１２を参照しながら、物体認識装置１の要部の機能ブロックの構成および動作について説明する。
【００５３】
図３でも上述したが、図７に示すように、物体認識装置１は、視差値導出部３と、認識処理部５と、を備えている。このうち、視差値導出部３は、画像取得部１００ａ（第１撮像部）、画像取得部１００ｂ（第２撮像部）と、変換部２００ａ、２００ｂと、視差値演算処理部３００と、を有する。
【００５４】
画像取得部１００ａは、右のカメラにより前方の被写体を撮像して、アナログの画像信号を生成し、画像信号に基づく画像である輝度画像を得る機能部である。画像取得部１００ａは、図３に示す撮像部１０ａによって実現される。
【００５５】
画像取得部１００ｂは、左のカメラにより前方の被写体を撮像して、アナログの画像信号を生成し、画像信号に基づく画像である輝度画像を得る機能部である。画像取得部１００ｂは、図３に示す撮像部１０ｂによって実現される。
【００５６】
変換部２００ａは、画像取得部１００ａにより得られた輝度画像の画像データに対して、ノイズを除去し、デジタル形式の画像データに変換して出力する機能部である。変換部２００ａは、図３に示す信号変換部２０ａによって実現される。
【００５７】
変換部２００ｂは、画像取得部１００ｂにより得られた輝度画像の画像データに対して、ノイズを除去し、デジタル形式の画像データに変換して出力する機能部である。変換部２００ｂは、図３に示す信号変換部２０ｂによって実現される。
【００５８】
ここで、変換部２００ａ、２００ｂが出力する２つの輝度画像の画像データ（以下、単に、輝度画像と称する）のうち、右のカメラ（撮像部１０ａ）である画像取得部１００ａにより撮像された輝度画像を基準画像Ｉａの画像データ（以下、単に、基準画像Ｉａと称する）（第１撮像画像）とし、左のカメラ（撮像部１０ｂ）である画像取得部１００ｂにより撮像された輝度画像を比較画像Ｉｂの画像データ（以下、単に、比較画像Ｉｂと称する）（第２撮像画像）とする。すなわち、変換部２００ａ、２００ｂは、画像取得部１００ａ、１００ｂそれぞれから出力された２つの輝度画像に基づいて、それぞれ基準画像Ｉａおよび比較画像Ｉｂを出力する。
【００５９】
視差値演算処理部３００は、変換部２００ａ、２００ｂそれぞれから受信した基準画像Ｉａおよび比較画像Ｉｂに基づいて、基準画像Ｉａの各画素についての視差値を導出し、基準画像Ｉａの各画素に視差値を対応させた視差画像を生成する機能部である。視差値演算処理部３００は、生成した視差画像を、認識処理部５に出力する。
【００６０】
図７に示すように、認識処理部５は、路面推定部４００と、クラスタリング部４５０と、棄却部５００と、トラッキング判定部５５０と、を有する。
【００６１】
路面推定部４００は、視差値演算処理部３００から受信した視差画像の各画素値（視差値）をＶマップの対応する座標の視差点に対して投票することによって最終的なＶマップを生成し、Ｖマップにおける投票された視差点から標本点を選択し、選択された標本点群に対して直線近似（または、曲線近似）することで路面形状を推定する機能部である。ここで、図８（ａ）は、視差値演算処理部３００から出力される視差画像Ｉｐを示し、図８（ｂ）は、路面推定部４００により視差画像Ｉｐから生成されるＶマップＶＭを示す。図８（ｂ）に示すように、ＶマップＶＭの縦軸は視差画像Ｉｐのｙ座標に対応し、横軸は視差値ｄｐに対応している。ＶマップＶＭの生成時においては、所定のｙ座標における視差画像Ｉｐ中の水平ラインに存在する視差値を、ＶマップＶＭ上のｄｐ座標に投票していくため、ＶマップＶＭの各座標の画素値には視差値の頻度が格納される。
【００６２】
図８（ａ）に示す視差画像Ｉｐには、例えば、路面６００と、車６０１と、が写り込んでいる。この視差画像Ｉｐの路面６００は、ＶマップＶＭにおいては推定路面６００ａに対応し、車６０１は、車部６０１ａに対応する。推定路面６００ａは、下記のように、ＶマップＶＭにおいて路面６００に対応する視差点から推定された路面形状である。
【００６３】
また、路面推定部４００は、生成したＶマップＶＭから、路面と推定される位置を直線近似する。具体的には、路面推定部４００は、ＶマップＶＭに対して投票された視差点から、路面形状の推定に必要な代表点である標本点を選択し、それらを最小二乗法等により直線近似することによって、路面形状を推定し推定路面６００ａを得る。路面が平坦な場合は、１本の直線で近似可能であるが、勾配が変わる路面の場合は、ＶマップＶＭの区間を分割して精度よく直線近似する必要がある。また、視差値は、自車に近いほど、値が大きくなるため、視差画像の下方の視差値は上方の視差値に比べて大きな値を有する。したがって、ＶマップＶＭ上の推定路面６００ａは、図８（ｂ）に示すように、右下下がり（左上上がり）の形状となる。この時、物体が存在するｙ座標の範囲（図８に示す水平の破線の間の範囲内）には、物体を表す視差が投票される。物体は路面よりも高い位置に存在しているため、ＶマップＶＭ上の分布は上下方向に延びる形状をしている。これは、同じ物体であれば物体認識装置１からの距離がほぼ一定となるため、この物体について求められた各視差値同士は互いに近い数値になるためである。なお、路面推定部４００の詳細な構成および動作は、図１４〜図１７および図１９で後述する。
【００６４】
ＶマップＶＭにおいて、推定された推定路面６００ａより上方に位置する塊である車部６０１ａは、実際の路面（路面６００）上の物体である車６０１に相当する。後述するクラスタリング部４５０によりＵ−Ｄｉｓｐａｒｉｔｙマップが生成される際には、ノイズ除去のため推定された路面より上方の情報のみが用いられる。
【００６５】
次に、推定路面の類型について説明する。すなわち、様々な勾配を有する路面の視差値が、具体的にどのようにＶマップ上に分布するかを説明する。まず、図９（ａ）は、車両が平坦な路面を走行している場合の視差画像Ｉｐ１を示し、図９（ｂ）は、視差画像Ｉｐ１から生成されたＶマップＶＭ１を示している。図９（ｂ）のＶマップＶＭ１に示すように、平坦な路面を走行している場合、推定される推定路面ＥＲ１は、平坦な路面と仮定した路面（以下、「デフォルト路面」と称する）であるデフォルト路面ＤＲと、ほぼ一致する。
【００６６】
次に、図１０（ａ）は、車両が上り坂に差し掛かる場合の視差画像Ｉｐ２を示し、図１０（ｂ）は、視差画像Ｉｐ２から生成されたＶマップＶＭ２を示している。図１０（ｂ）のＶマップＶＭ２に示すように、推定される上り坂の路面である推定路面ＥＲ２は、デフォルト路面ＤＲと比較して上方に存在し、推定路面ＥＲ２の開始位置もデフォルト路面ＤＲと比較して右側に存在する。なお、上り坂を走行している場合は、車両は上り坂の路面に対して平行となるため、路面の視差は、平坦な路面を走行している場合と同様となる。
【００６７】
次に、図１１（ａ）は、車両が下り坂に差し掛かる場合の視差画像Ｉｐ３を示し、図１１（ｂ）は、視差画像Ｉｐ３から生成されたＶマップＶＭ３を示している。図１１（ｂ）のＶマップＶＭ３に示すように、推定される下り坂の路面である推定路面ＥＲ３は、デフォルト路面ＤＲと比較して下方に存在し、推定路面ＥＲ３の開始位置もデフォルト路面ＤＲと比較して左側に存在する。なお、下り坂を走行している場合は、車両は下り坂の路面に対して平行となるため、路面の視差は、平坦な路面を走行している場合と同様となる。
【００６８】
以上のように、推定路面についての典型的な類型を示したが、視差画像中の１水平ラインにおける視差値を評価した際、距離の異なる領域を同時に含むと、Ｖマップにおいて視差点は横方向（ｄｐ座標）に分散してしまう。例えば、視差画像中の１水平ラインに走行路面の領域と、走行路面よりも距離が遠い領域とが含まれる場合、遠い領域の視差値は、走行路面の領域の視差値よりも小さな値をもち、Ｖマップに対してノイズとして投票されてしまう。そして、これらのノイズとして投票された視差点が、Ｖマップにおいて路面と同様の分布形状となる場合もあり、このノイズに対応する視差点が、路面の開始位置と誤判定されると、推定路面は、実際の路面と比較して、Ｖマップ上で低い位置に存在することになる。通常、路面推定では、Ｖマップの所定の位置から別の位置に向かって路面を推定していく。例えば、近方の路面は、視差画像上に写り込む面積が大きいため、Ｖマップ上でその路面に対応する視差点の数および頻度が多くなるため、推定される路面の信頼度は高いと仮定できる。したがって、近方の路面から順に遠方の路面を推定していく方法が考えられる。しかし、図９〜図１１で上述したように、実際の路面に対応する視差点が分布する位置は各シーンにおいて様々であり、路面推定処理の開始位置を固定することは困難である。また、仮に、近方から遠方に向かって処理していき、遠方でのノイズに対応する視差点を検出して、この位置を路面の開始位置として推定してしまうと、近方に立ち戻って処理することができないため、実際の路面と比較して、Ｖマップ上で推定路面の位置は低い位置となる可能性がある。以上のように、路面推定処理においては、視差画像に傾斜が異なる路面を含んだり、または、ノイズを含む等の様々なシーンにおいても、正確に路面の開始位置を検出する必要がある。
【００６９】
クラスタリング部４５０は、視差値導出部３から受信した基準画像（輝度画像）および視差画像、ならびに、路面推定部４００により出力されるＶマップおよび推定路面の情報に基づいて、視差画像に写っている物体を検出する機能部である。具体的には、クラスタリング部４５０は、まず、Ｖマップ上において路面推定部４００により推定された推定路面より上方に位置する情報のみを利用、すなわち、例えば、図１２（ａ）に示す視差画像Ｉｐの左ガードレール６１１、右ガードレール６１２、車６１３および車６１４に対応する情報を利用して、物体を認識するために、図１２（ｂ）に示すＵ−Ｄｉｓｐａｒｉｔｙマップ（以下、単に「Ｕマップ」と称する場合がある）であるＵマップＵＭを生成する。ここで、Ｕ−Ｄｉｓｐａｒｉｔｙマップとは、横軸を視差画像Ｉｐのｘ軸とし、縦軸を視差画像Ｉｐの視差値ｄｐ（または距離）とした、視差値ｄｐの頻度分布を示す二次元ヒストグラムである。図１２（ａ）に示す視差画像Ｉｐの左ガードレール６１１は、ＵマップＵＭにおいては左ガードレール部６１１ａに対応し、右ガードレール６１２は、右ガードレール部６１２ａに対応し、車６１３は、車部６１３ａに対応し、車６１４は、車部６１４ａに対応する。なお、クラスタリング部４５０は、視差画像ＩｐからＲｅａｌ  Ｕ−Ｄｉｓｐａｒｉｔｙマップを生成してもよい。ここで、Ｒｅａｌ  Ｕ−Ｄｉｓｐａｒｉｔｙマップとは、横軸を、撮像部１０ｂ（左のカメラ）から撮像部１０ａ（右のカメラ）へ向かう方向の実距離とし、縦軸を、視差画像の視差値ｄｐ（またはその視差値ｄｐから変換した奥行き方向の距離）とした二次元ヒストグラムである。
【００７０】
なお、視差値導出部３からクラスタリング部４５０に入力される画像は基準画像Ｉａに限定されるものではなく、比較画像Ｉｂを対象とするものとしてもよい。
【００７１】
クラスタリング部４５０は、生成したＵマップから、物体の視差画像および基準画像Ｉａにおけるｘ軸方向の位置および幅（ｘｍｉｎ，ｘｍａｘ）を特定できる。また、クラスタリング部４５０は、生成したＵマップでの物体の高さの情報（ｄｍｉｎ，ｄｍａｘ）から物体の実際の奥行きを特定できる。また、クラスタリング部４５０は、受信したＶマップから、物体の視差画像および基準画像Ｉａにおけるｙ軸方向の位置および高さ（ｙｍｉｎ＝「最大視差値の路面からの最大高さに相当するｙ座標」，ｙｍａｘ＝「最大視差値から得られる路面の高さを示すｙ座標」）を特定できる。また、クラスタリング部４５０は、視差画像において特定した物体のｘ軸方向の幅（ｘｍｉｎ，ｘｍａｘ）、ｙ軸方向の高さ（ｙｍｉｎ，ｙｍａｘ）およびそれぞれに対応する視差値ｄｐから、物体の実際のｘ軸方向およびｙ軸方向のサイズが特定できる。以上のように、クラスタリング部４５０は、ＶマップおよびＵマップを利用して、基準画像Ｉａでの物体の位置、ならびに実際の幅、高さおよび奥行きを特定することができる。また、クラスタリング部４５０は、基準画像Ｉａでの物体の位置が特定されるので、視差画像における位置も定まり、物体までの距離も特定できる。
【００７２】
また、クラスタリング部４５０は、物体について特定した実際のサイズ（幅、高さ、奥行き）から、下記の（表１）を用いて、物体が何であるかを特定することができる。例えば、物体の幅が１３００［ｍｍ］、高さが１８００［ｍｍ］、奥行きが２０００［ｍｍ］である場合、物体は「普通車」であると特定できる。なお、（表１）のような幅、高さおよび奥行きと、物体の種類（物体タイプ）とを関連付ける情報をテーブルとして、ＲＡＭ５４等に記憶させておくものとすればよい。
【００７３】
【表１】
2018045680.tif 000003
【００７４】
そして、クラスタリング部４５０は、検出した物体の画像（認識画像）に関する情報（例えば、基準画像Ｉａでの位置を示す座標、およびサイズ等）（以下、単に「認識画像情報」と称する）を出力する。
【００７５】
棄却部５００は、視差値導出部３から出力された基準画像Ｉａ、およびクラスタリング部４５０から出力された認識画像情報に基づいて、認識画像情報で示される認識画像について棄却するか否かを判定する棄却判定を行う機能部である。ここで、棄却とは、その物体を後段の処理（追跡処理等）の対象外とする処理を示す。
【００７６】
トラッキング判定部５５０は、棄却部５００からの棄却判定の結果に基づいて、認識画像に含まれる物体に対してトラッキングを行うか否かを判定する機能部である。例えば、トラッキング判定部５５０は、棄却部５００で棄却と判定されなかった物体に対してトラッキングを行うものと判定し、その物体の認識画像情報にトラッキングを行う旨の情報を含め、認識情報として車両制御装置６に出力する。
【００７７】
また、図７に示す認識処理部５の路面推定部４００、クラスタリング部４５０、棄却部５００およびトラッキング判定部５５０は、それぞれ図３に示すＦＰＧＡ５１によって実現される。なお、路面推定部４００、クラスタリング部４５０、棄却部５００およびトラッキング判定部５５０の一部または全部は、ハードウェア回路であるＦＰＧＡ５１ではなく、ＲＯＭ５３に記憶されているプログラムがＣＰＵ５２によって実行されることによって実現されるものとしてもよい。
【００７８】
なお、本発明に係る「画像処理装置」は、路面推定部４００であってもよく、路面推定部４００を含む認識処理部５であってもよい。
【００７９】
また、図７に示す視差値導出部３および認識処理部５の各機能部は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図７に示す視差値導出部３および認識処理部５で独立した機能部として図示した複数の機能部を、１つの機能部として構成してもよい。一方、図７に示す視差値導出部３および認識処理部５で１つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
【００８０】
＜＜視差値演算処理部の機能ブロック構成＞＞
図１３は、第１の実施形態に係る物体認識装置の視差値演算処理部の機能ブロック構成の一例を示す図である。図１３を参照しながら、視差値演算処理部３００の機能ブロックの具体的な構成および動作について説明する。
【００８１】
図１３に示すように、視差値演算処理部３００は、コスト算出部３０１と、決定部３０２と、生成部３０３と、を有する。
【００８２】
コスト算出部３０１は、基準画像Ｉａにおける基準画素ｐ（ｘ，ｙ）の輝度値、および、基準画素ｐ（ｘ，ｙ）に基づく比較画像Ｉｂにおけるエピポーラ線ＥＬ上で、基準画素ｐ（ｘ，ｙ）の位置に相当する画素からシフト量ｄでシフトすることにより特定される、対応画素の候補である候補画素ｑ（ｘ＋ｄ，ｙ）の各輝度値に基づいて、各候補画素ｑ（ｘ＋ｄ，ｙ）のコスト値Ｃ（ｐ，ｄ）を算出する機能部である。具体的には、コスト算出部３０１は、ブロックマッチング処理により、基準画像Ｉａの基準画素ｐを中心とする所定領域である基準領域ｐｂと、比較画像Ｉｂの候補画素ｑを中心とする候補領域ｑｂ（大きさは基準領域ｐｂと同一）との非類似度をコスト値Ｃとして算出する。
【００８３】
決定部３０２は、コスト算出部３０１により算出されたコスト値Ｃの最小値に対応するシフト量ｄを、コスト値Ｃの算出の対象となった基準画像Ｉａの画素についての視差値ｄｐとして決定する機能部である。
【００８４】
生成部３０３は、決定部３０２により決定された視差値ｄｐに基づいて、基準画像Ｉａの各画素の画素値を、その画素に対応する視差値ｄｐで置き換えた画像である視差画像を生成する機能部である。
【００８５】
図１３に示すコスト算出部３０１、決定部３０２および生成部３０３は、それぞれ図３に示すＦＰＧＡ３１によって実現される。なお、コスト算出部３０１、決定部３０２および生成部３０３の一部または全部は、ハードウェア回路であるＦＰＧＡ３１ではなく、ＲＯＭ３３に記憶されているプログラムがＣＰＵ３２によって実行されることによって実現されるものとしてもよい。
【００８６】
なお、図１３に示す視差値演算処理部３００のコスト算出部３０１、決定部３０２および生成部３０３は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図１３に示す視差値演算処理部３００で独立した機能部として図示した複数の機能部を、１つの機能部として構成してもよい。一方、図１３に示す視差値演算処理部３００で１つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
【００８７】
＜＜路面推定部の機能ブロック構成＞＞
図１４は、第１の実施形態に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。図１５は、Ｖマップの生成動作を説明する図である。図１６は、Ｖマップにおいてセグメントに分割する動作を説明する図である。図１７は、第１の実施形態の開始セグメント探索処理を説明する図である。図１４〜図１７を参照しながら、路面推定部４００の機能ブロックの具体的な構成および動作について説明する。
【００８８】
図１４に示すように、路面推定部４００は、入力部４０１と、Ｖマップ生成部４０２と、分割部４０３と、開始セグメント探索部４０４と、継続推定部４０５と、スムージング部４０６と、出力部４０７と、を有する。
【００８９】
入力部４０１は、視差値演算処理部３００から視差画像を入力する機能部である。
【００９０】
Ｖマップ生成部４０２は、入力部４０１により入力された視差画像の各視差画素の視差値を、Ｖマップの対応する視差点に投票することによってＶマップを生成する機能部である。Ｖマップ生成部４０２によるＶマップの生成において、視差画像のｙ座標とＶマップのｙ座標とは対応関係にあり、視差画像の特定のｙ座標の水平ライン上の視差値は、Ｖマップの対応するｙ座標の水平ラインのいずれかの視差点に投票される。したがって、視差画像の同じ水平ラインに含まれる視差値は同値となるものも存在するため、Ｖマップの任意の座標の視差点には、視差値の頻度が格納されることになる。視差画像の特定の水平ラインにおいては、同じ路面であれば、視差値は互いに類似する値となるため、Ｖマップにおける路面に対応する視差点は密集して投票されることになる。
【００９１】
なお、Ｖマップ生成部４０２は、視差画像中の全ての視差画素の視差値をＶマップに投票してもよいが、図１５に示す視差画像Ｉｐのように、所定の領域（例えば、図１５に示す投票領域７０１〜７０３）を設定し、その領域に含まれる視差画素の視差値のみを投票するものとしてもよい。例えば、路面は遠方になるにつれて、消失点に向かって狭くなっていくという性質を利用し、図１５に示すように、路面の幅にあった投票領域を所定数設定する方法が考えられる。このように投票領域に制限することによって、路面以外のノイズがＶマップに混入することを抑制することができる。
【００９２】
また、視差画像中の１水平ラインにおける視差画素を適宜間引いて投票するものとしてもよい。また、間引きに関しては、水平方向だけではなく、垂直方向に対して実行してもよい。
【００９３】
分割部４０３は、Ｖマップ生成部４０２により生成されたＶマップを、ｄｐ座標（横座標）において、１以上の部分領域であるセグメントに分割する機能部である。分割部４０３によって分割されたセグメントごとに路面形状の推定が行われる。このようにセグメントを分割することで、より複雑な形状（例えば、平坦な路面から途中で上り坂または下り坂になるような路面形状等）の路面を推定することができる。なお、セグメントをより細かくすることによって、より複雑な形状の路面を推定することが可能になる。ここで、図１６に、複数のセグメントに分割されたＶマップの一例を示す。
【００９４】
なお、図１６に示す例では、ｙ座標においては分割していないが、ｙ座標においてもセグメントに分割してもよい。例えば、Ｖマップにおいて、路面に対応する視差点が分布する位置が特定できる場合、ｙ方向でセグメントに分割することにより、ｄｐ方向だけでセグメントに分割した場合よりも限定した領域内を処理することができる。これによって、ノイズの混入を抑制する効果が向上し、かつ、路面推定処理の処理時間の短縮に寄与する。なお、本実施形態においては、セグメントは、図１６に示すようにｄｐ方向でのみ分割した短冊状の部分領域であるものとして説明する。
【００９５】
開始セグメント探索部４０４は、分割部４０３によって分割されたセグメントから、車両７０が走行している路面の開始位置を含むセグメント、すなわち、視差画像に写っている路面のうち物体認識装置１を搭載した車両７０に最も近い路面部分を含むセグメントである開始セグメントを探索する開始セグメント探索処理を行う機能部である。この開始セグメント探索処理で探索する開始セグメントは、Ｖマップ上での路面推定時に基準となる路面を含むセグメントを示し、通常、路面推定は近方から遠方に向かって実行されるため、Ｖマップに含まれる最も近方の路面を含むセグメントに該当する。
【００９６】
ここで、開始セグメント探索処理の詳細について説明する。Ｖマップを所定数のセグメントに分割した場合、通常、路面の推定では、所定のセグメントに対して実施し、そのセグメントの路面の推定結果に基づいて次のセグメントにおける路面の推定を行う。これは、路面が連続していることによる必然的な処理手順である。例えば、近方の路面から遠方の路面に向けて順に推定していく。すなわち、路面推定処理において路面の開始位置を適切に検出することは、１フレームのＶマップにおける路面推定の精度を決定付ける重要な要素である。ここで、図１７は、２種類の視差点の分布を示すＶマップと、路面推定処理の結果を例示したものである。図１７に示すように、ここでは、Ｖマップを７つのセグメント（短冊状の部分領域）に分割しているものとし、図１７の紙面視右側から第１セグメント〜第７セグメントと呼称するものとして説明する。なお、セグメントの分割数は限定されるものではなく、任意の数に分割するものとしてもよい。
【００９７】
図１７（ａ）は、下り坂の視差点と、それ以外の物体に対応する視差点とを含むＶマップＶＭ４である。路面推定処理では、セグメント単位に推定処理していくため、通常であれば、途中で処理を立ち戻って再実施することはできない。まず、例えば、開始セグメントを第１セグメントに固定しているものとして説明する。第１セグメントの路面推定に失敗した場合、デフォルト路面（図１７（ａ）に示すデフォルト路面ＤＲ）または履歴路面を第１セグメントの推定路面として割り当て、この路面を基準に次のセグメントについて路面推定を行うことになる。ここで、履歴路面とは、１フレーム以上前のフレームで推定された過去の推定路面を示し、過去の所定数のフレームで推定された路面を平均した路面であってもよい。図１７（ａ）に示す例では、最終的な推定路面は、デフォルト路面ＤＲに近い路面となる。この場合、下り坂の路面の視差点が下方（図１７（ａ）の第６セグメントの推定路面ＥＲ４）に存在していたとしても、この視差点を採用して路面推定を行うことができないことになる。つまり、開始セグメントを第１セグメントに固定してしまうと、第１セグメントに路面の視差点が含まれている場合には正しく路面推定ができるが、下り坂のように路面の視差点が他のセグメントに含まれる場合には正しく路面推定ができないことになる。
【００９８】
次に、所定セグメントまで路面推定を行い、路面推定の成否判定で成功と判定される路面が存在しない場合、最初のセグメントに立ち戻って再度、路面推定を行う本実施形態の開始セグメント探索処理について説明する。まず、一巡目の路面推定では、厳しい成否判定条件によって各セグメントに対して路面推定を行う。ここで、最初に開始セグメントの探索対象となるセグメントは、必ずしも第１セグメントからでなくてもよい。この一巡目の厳しい成否判定で、成功となるような視差点の分布を含むセグメントであれば、路面としての信頼度は高いため誤推定のリスクは低いと考え採用する。この厳しい成否判定条件で成功するセグメントが存在しなかった場合、一巡目の成否判定条件よりも緩和して初めのセグメントから二巡目の路面推定を行う。
【００９９】
ここで、例えば、図１７（ａ）のＶマップＶＭ４のデフォルト路面ＤＲの位置に存在する視差点が正しい路面に対応する視差点であると仮定する。第１セグメントから厳しい成否判定条件で一巡目の路面推定を実行し、第６セグメントまで路面推定に失敗したとする。次に、二巡目の路面推定では、成否判定条件を緩和して再度第１セグメントから路面推定を行う。これによって、比較的視差分散が少ない第２セグメントに対する路面推定が成功と判定され推定路面として採用することができる。つまり、遠方のセグメント（ここでは、第６セグメント）まで探索はするが、適切な路面が見つからない場合には、一巡目での開始セグメント探索を諦めて、二巡目以降に任せる形をとる。このような処理によって、条件の緩い成否判定で無理に開始セグメントを探索することがないため、ノイズに対してロバスト状態で開始セグメントを決定、すなわち、路面の開始位置を検出することができる。図１７（ａ）に示す例では、第２セグメントを開始セグメントと設定できるため、最終的に推定される路面はデフォルト路面ＤＲに近くなり、これは実際の路面に近いものとなる。
【０１００】
ただし、二巡目の路面推定時に成否判定条件を緩和したことによって、ノイズによる分散した視差点であっても、推定された路面の成否判定が成功と判定されてしまう可能性がある。つまり、一巡目と同様に、二巡目において第６セグメントまで開始セグメント探索処理を実行してしまうと、誤って第６セグメントのノイズによる分散した視差点を使った路面推定が成功と判定されてしまう可能性がある。そこで、処理を繰り返す度（巡を重ねる毎）に探索する範囲を狭めていってもよい。例えば、一巡目の開始セグメント探索処理では第６セグメントまで探索し、二巡目では第５セグメントまで探索するといった方法が考えられる。無論、一巡目および二巡目の探索範囲を同じにしてもよい。また、上述の開始セグメント探索処理は、二巡以上繰り返し実行してもよい。
【０１０１】
また、元々視差の情報が少ない場合では、成否判定条件を緩和していき、何巡に亘って開始セグメント探索処理を繰り返しても、路面推定に成功する確率は低い。したがって、巡を重ねることによって、探索する範囲を狭めながら所定回数探索し、成功する推定路面が見つからない場合、最初の探索対象のセグメント、つまり、第１セグメントを開始セグメントとみなし、このセグメントにデフォルト路面または履歴路面を設定するものとしてもよい。そして、それ以降のセグメントについても、成功する推定路面が見つからない場合、デフォルト路面もしくは履歴路面を割り当て、または、第１セグメントの履歴路面を延長する等の処理を行ってもよい。すなわち、視差の情報が少ない場合は、誤制御に最もつながりづらい路面を設定することが望ましい。様々な傾斜の路面があるとしても、車両は平坦な路面を走行している場合が多いため、路面の推定ができない場合には、デフォルト路面を割り当ててしまうことが望ましい場合が多いためである。ただし、ここで割り当てる路面はデフォルト路面に割り当てることに限定されるものではなく、それ以外の任意の路面を割り当てるものとしてもよい。また、視差の情報が少なく路面推定ができないのであれば、無理に路面を割り当てるのではなく、このフレームでの処理をスキップするために路面推定しないようにしてもよい。
【０１０２】
次に、図１７（ｂ）は、平坦な路面の視差点のみを含んだＶマップＶＭ５を示している。この場合、第１セグメントでの視差が正確に抽出されているため、成否判定条件を厳しくした状態で路面推定をしたとしても、第１セグメントで推定成功とすることができる。したがって、この推定路面ＥＲ５を基準として、それ以降のセグメントの路面も推定していくため、推定される路面は平坦な路面を仮定したデフォルト路面ＤＲに近くなり、正しい路面を得ることができる。つまり、平坦な路面であっても同様の手順で路面推定を行うことが可能であることを示している。
【０１０３】
以上のような開始セグメント探索処理では、所定のセグメントまで路面推定を行い、途中で成否判定に成功する路面が存在すれば、その路面を含むセグメントが開始セグメントとなるため、何巡にも渡って処理する必要がなくなる。一方で、成否判定に成功する路面が見つからない場合は、成否判定条件を緩和して路面推定を行うので、開始セグメントをいずれかのセグメントに決定できる可能性が高くなる。したがって、物体認識装置１全体として処理時間の増加を抑制しつつ、かつ、ノイズにロバストな状態で路面の開始位置を検出することができる。よって、路面を精度よく検出することができる。
【０１０４】
開始セグメント探索部４０４は、図１４に示すように、第１標本点選択部４１１（第１選択部）と、第１形状推定部４１２（第１推定部）と、第１判定部４１３（判定部）と、を有する。
【０１０５】
第１標本点選択部４１１は、開始セグメント探索処理において、Ｖマップに投票された視差点（頻度点の一例）のうち、処理対象のセグメント（以下、「対象セグメント」と称する場合がある）における各ｄｐ座標の位置から、少なくとも１つ以上の代表点（以下、「標本点」と称する）を選択する機能部である。標本点の選択方法としては、例えば、各ｄｐ座標に対して、その垂直（縦）方向に存在する視差点のうち、単純に頻度の最も多い視差点（最頻点）を選択してもよく、または、着目するｄｐ座標とその左右の複数の画素を併せてＶマップの下方向から上方向に上げていき、路面の視差点が含まれ得る領域を制限した上で、その中から最頻点を選択するというように、より正確に路面の視差点を捉える方法を用いてもよい。または、視差点がない位置（座標）を標本点として選択してもよい。例えば、着目している座標（ｄｐ，ｙ）には視差点は存在していないが、周囲に頻度が多い視差点が集中している場合、偶発的に座標（ｄｐ，ｙ）の視差点が欠落している可能性があるため、この抜けている位置を標本点として選択することも可能である。
【０１０６】
なお、第１標本点選択部４１１は、選択した標本点のうち、不適切な標本点を除去してもよい。これによって、後述する第１形状推定部４１２によって標本点群に対する直線近似の際に、不適切な標本点（外れ点）の影響を受けて、推定路面の形状が不適切になってしまうことを抑制することができる。外れ点の除去方法としては、例えば、一旦、対象セグメント内の全ての標本点を使って最小二乗法で直線近似し、近似直線から所定の距離離れた標本点を除去するものとしてもよい。この場合、外れ点を除去した状態で、再度、最小二乗法により推定した路面が最終的な推定路面となる。
【０１０７】
第１形状推定部４１２は、開始セグメント探索処理において、第１標本点選択部４１１により選択された標本点群から路面形状の推定（路面推定）を行う機能部である。路面推定の方法としては、例えば、最小二乗法等によって標本点群に対して直線近似を行う方法、または、多項式近似等を用いて曲線形状を推定する方法等がある。または、路面推定の結果に対する成否判定に使用するための信頼度を算出する方法としてもよい。例えば、最小二乗法を使って直線近似した場合は、相関係数を信頼度として使用することができる。以降の説明では、特に断らない限り、路面推定は直線近似によるものとして説明する。
【０１０８】
第１判定部４１３は、開始セグメント探索処理において、第１形状推定部４１２により推定された路面が適切（成功）か否かを判定する機能部である。例えば、第１判定部４１３は、標本点の並びが右上並びに整列していると推定された場合、路面としては不適切（失敗）であると判定する。このような問題の発生の原因としては、例えば、個々の標本点の選択が独立して実行されることが挙げられる。また、第１判定部４１３による成否判定では、路面の信頼度を定量化できるのであれば、任意の尺度を利用して判定してもよい。例えば、標本点数が所定値よりも少ない場合は、路面の情報が少ない状態で推定した路面なので、不適切な傾きになっている可能性がある。したがって、この所定値を閾値として成否を分けるものとしてもよい。また、標本点群の分散状態を成否判定に採用することもできる。例えば、路面形状を推定する際に、最小二乗法を使っていた場合、近似直線を算出する際に相関係数も算出することができるため、この相関係数が所定値以下である場合に、推定路面がばらついた標本点群から推定された路面であると判定し、失敗と判定するものとしてもよい。また、路面はセグメント間で連続しているという性質を利用して、対象セグメントの１つ前のセグメントで推定された路面との角度が所定範囲に入っているか否かを判定し、入っていない場合、失敗と判定してもよい。
【０１０９】
第１判定部４１３は、第１形状推定部４１２により推定された路面（第１推定路面）が適切であると判定した場合、その推定路面を含むセグメントを開始セグメントとして決定する。第１判定部４１３は、例えば、所定巡だけ開始セグメント探索処理が繰り返されても、第１形状推定部４１２により推定された路面が不適切であると判定した場合、その代わりとなる路面で補足する。路面を補足する方法としては、例えば、デフォルト路面または履歴路面を割り当てる方法等が挙げられる。
【０１１０】
継続推定部４０５は、開始セグメント探索部４０４により決定された開始セグメント以降のセグメントにおいて路面を推定する継続推定処理を行う機能部である。すなわち、継続推定部４０５は、開始セグメント探索部４０４による開始セグメント探索処理によって開始セグメントが決定された後は、通常のセグメント単位で、開始セグメント以降の路面推定、すなわち、一セグメントに対して路面推定を行い、推定終了後は次のセグメントに対して路面推定を行い、所定のセグメント（通常、分割した最後のセグメント）まで路面推定を行う。この継続推定部４０５による継続推定処理の完了によって、１フレームにおける推定路面が完成する。
【０１１１】
継続推定部４０５は、図１４に示すように、第２標本点選択部４２１（第２選択部）と、第２形状推定部４２２（第２推定部、推定部）と、第２判定部４２３と、補間部４２４と、を有する。
【０１１２】
第２標本点選択部４２１は、継続推定処理において、Ｖマップに投票された視差点のうち、開始セグメント以外の対象セグメントにおける各ｄｐ座標の位置から、少なくとも１以上の標本点を選択する機能部である。標本点の選択方法は、上述の第１標本点選択部４１１の選択方法と同様である。また、第２標本点選択部４２１は、第１標本点選択部４１１と同様に、選択した標本点のうち、不適切な標本点を除去するものとしてもよい。
【０１１３】
第２形状推定部４２２は、継続推定処理において、第２標本点選択部４２１により選択された標本点群から路面形状の推定（路面推定）を行う機能部である。路面推定の方法は、上述の第１形状推定部４１２の方法と同様である。
【０１１４】
第２判定部４２３は、継続推定処理において、第２形状推定部４２２により推定された路面（第２推定路面）が適切（成功）か否かを判定する機能部である。判定方法は、上述の第１判定部４１３の方法と同様である。第２判定部４２３は、第２形状推定部４２２により推定された路面が適切であると判定した場合、その推定路面を対象セグメントでの適切な推定路面として決定する。第２判定部４２３は、第２形状推定部４２２により推定された路面が不適切であると判定した場合、その代わりとなる路面で補足する。路面を補足する方法は、上述の第１判定部４１３と同様である。なお、第２判定部４２３の成否判定条件は、例えば、開始セグメント探索処理における一巡目の条件、または、二巡目以降の条件のいずれであってもよい。
【０１１５】
補間部４２４は、開始セグメント探索部４０４により開始セグメントが決定された場合であって、開始セグメントよりも近方のセグメントが存在する場合、その近方のセグメントの路面を補間する機能部である。例えば、開始セグメント探索処理の結果、第３セグメントが開始セグメントになった場合、それよりも近方に位置する第１セグメントおよび第２セグメントの路面は未推定状態となっている。これらの路面に関しては、開始セグメントの路面を延長してもよく、または、そもそも視差の情報が少ない可能性があるため、未推定状態のままにしてもよい。または、補間部４２４は、例えば、所定の固定点（例えば、車両７０の前方位置（車種に依存するが、例えば、１［ｍ］付近）におけるデフォルト路面の位置）と、開始セグメントの推定路面のこの開始セグメントでの始点（開始セグメントの推定路面の右端）、または終点（開始セグメントの推定路面の左端）とを結ぶ直線を、開始セグメントよりも近方のセグメントの路面として補間するものとしてもよい。このように固定点と結ぶことにより、開始セグメントの推定路面の傾きが不適切な場合であっても、悪影響を緩和することができる。例えば、ｎフレームでの開始セグメントの推定路面がデフォルト路面、（ｎ＋１）フレームでの開始セグメント（ｎフレームと同じセグメント位置と仮定）がデフォルト路面より急な傾きを持った路面であった場合、開始セグメントよりも近方のセグメントを開始セグメントの延長で補間すると、フレーム間で近方の路面が激しく変動することになる。しかし、固定点に結ぶように補間すれば、フレーム間での急激な変動を抑制することができる。
【０１１６】
スムージング部４０６は、開始セグメント探索部４０４および継続推定部４０５により推定された路面に対してスムージング処理を行う機能部である。Ｖマップを複数のセグメントに分割した場合、セグメント間で推定された路面が不連続になる可能性がある。そこで、ある２つのセグメントの推定路面のうち、一方の推定路面の始点の座標と、もう一方の推定路面の終点の座標とが所定のｙ座標を通るように修正する、すなわち、推定路面のＶマップ上における傾きおよび切片を変更することによって、セグメント間で推定路面に連続性を担保する。所定のｙ座標としては、例えば、上述の一方の推定路面の始点のｙ座標と、もう一方の推定路面の終点のｙ座標との中点のｙ座標を採用することができる。このようなスムージング処理を行うことにより、あるセグメントでの推定結果が適していない場合に、修正される可能性があるため、路面推定の精度を向上させる効果がある。
【０１１７】
出力部４０７は、スムージング部４０６によりスムージング処理されたＶマップ上の推定路面の情報（路面情報）を、クラスタリング部４５０に出力する機能部である。なお、Ｖマップ上の推定路面の情報が、後段（クラスタリング部４５０等）で特に必要とされない場合においては、例えば、路面情報を図３に示すＲＡＭ５４等に記憶させておくものとしてもよい。この場合、スムージング部４０６および出力部４０７は備えない構成としてもよい。
【０１１８】
図１４に示す入力部４０１、Ｖマップ生成部４０２、分割部４０３、開始セグメント探索部４０４、継続推定部４０５、スムージング部４０６および出力部４０７は、それぞれ図３に示すＦＰＧＡ５１によって実現される。なお、入力部４０１、Ｖマップ生成部４０２、分割部４０３、開始セグメント探索部４０４、継続推定部４０５、スムージング部４０６および出力部４０７の一部または全部は、ハードウェア回路であるＦＰＧＡ５１ではなく、ＲＯＭ５３に記憶されているプログラムがＣＰＵ５２によって実行されることによって実現されるものとしてもよい。
【０１１９】
なお、図１４に示す路面推定部４００の入力部４０１、Ｖマップ生成部４０２、分割部４０３、開始セグメント探索部４０４、継続推定部４０５、スムージング部４０６および出力部４０７は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図１４に示す路面推定部４００で独立した機能部として図示した複数の機能部を、１つの機能部として構成してもよい。一方、図１４に示す路面推定部４００で１つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
【０１２０】
（物体認識装置の動作）
次に、図１８および図１９を参照しながら、物体認識装置１の具体的な動作について説明する。
【０１２１】
＜視差値導出部のブロックマッチング処理＞
図１８は、第１の実施形態に係る視差値導出部のブロックマッチング処理の動作の一例を示すフローチャートである。図１８を参照しながら、物体認識装置１の視差値導出部３のブロックマッチング処理の動作の流れについて説明する。
【０１２２】
＜＜ステップＳ１−１＞＞
視差値導出部３の画像取得部１００ｂは、左のカメラ（撮像部１０ｂ）により前方の被写体を撮像して、それぞれアナログの画像信号を生成し、その画像信号に基づく画像である輝度画像を得る。これによって、後段の画像処理の対象となる画像信号が得られることになる。そして、ステップＳ２−１へ移行する。
【０１２３】
＜＜ステップＳ１−２＞＞
視差値導出部３の画像取得部１００ａは、右のカメラ（撮像部１０ａ）により前方の被写体を撮像して、それぞれアナログの画像信号を生成し、その画像信号に基づく画像である輝度画像を得る。これによって、後段の画像処理の対象となる画像信号が得られることになる。そして、ステップＳ２−２へ移行する。
【０１２４】
＜＜ステップＳ２−１＞＞
視差値導出部３の変換部２００ｂは、撮像部１０ｂにより撮像されて得られたアナログの画像信号に対して、ノイズを除去し、デジタル形式の画像データに変換する。このように、デジタル形式の画像データに変換することによって、その画像データに基づく画像に対して画素ごとの画像処理が可能となる。そして、ステップＳ３−１へ移行する。
【０１２５】
＜＜ステップＳ２−２＞＞
視差値導出部３の変換部２００ａは、撮像部１０ａにより撮像されて得られたアナログの画像信号に対して、ノイズを除去し、デジタル形式の画像データに変換する。このように、デジタル形式の画像データに変換することによって、その画像データに基づく画像に対して画素ごとの画像処理が可能となる。そして、ステップＳ３−２へ移行する。
【０１２６】
＜＜ステップＳ３−１＞＞
変換部２００ｂは、ステップＳ２−１において変換したデジタル形式の画像データに基づく画像をブロックマッチング処理における比較画像Ｉｂとして出力する。これによって、ブロックマッチング処理において視差値を求めるための比較対象となる画像を得る。そして、ステップＳ４へ移行する。
【０１２７】
＜＜ステップＳ３−２＞＞
変換部２００ａは、ステップＳ２−２において変換したデジタル形式の画像データに基づく画像をブロックマッチング処理における基準画像Ｉａとして出力する。これによって、ブロックマッチング処理において視差値を求めるための基準となる画像を得る。そして、ステップＳ４へ移行する。
【０１２８】
＜＜ステップＳ４＞＞
視差値導出部３の視差値演算処理部３００のコスト算出部３０１は、基準画像Ｉａにおける基準画素ｐ（ｘ，ｙ）の輝度値、および、基準画素ｐ（ｘ，ｙ）に基づく比較画像Ｉｂにおけるエピポーラ線ＥＬ上で、基準画素ｐ（ｘ，ｙ）の位置に相当する画素からシフト量ｄでシフトすることにより特定される、対応画素の候補画素ｑ（ｘ＋ｄ，ｙ）の各輝度値に基づいて、各候補画素ｑ（ｘ＋ｄ，ｙ）のコスト値Ｃ（ｐ，ｄ）を算出する。具体的には、コスト算出部３０１は、ブロックマッチング処理により、基準画像Ｉａの基準画素ｐを中心とする所定領域である基準領域ｐｂと、比較画像Ｉｂの候補画素ｑを中心とする候補領域ｑｂ（大きさは基準領域ｐｂと同一）との非類似度をコスト値Ｃとして算出する。そして、ステップＳ５へ進む。
【０１２９】
＜＜ステップＳ５＞＞
視差値導出部３の視差値演算処理部３００の決定部３０２は、コスト算出部３０１により算出されたコスト値Ｃの最小値に対応するシフト量ｄを、コスト値Ｃの算出の対象となった基準画像Ｉａの画素についての視差値ｄｐとして決定する。そして、視差値導出部３の視差値演算処理部３００の生成部３０３は、決定部３０２により決定された視差値ｄｐに基づいて、基準画像Ｉａの各画素の輝度値を、その画素に対応する視差値ｄｐで表した画像である視差画像を生成する。生成部３０３は、生成した視差画像を、認識処理部５に出力する。
【０１３０】
なお、上述のブロックマッチング処理は、ステレオマッチング処理の一例として説明したが、これに限定されるものではなく、ＳＧＭ（Ｓｅｍｉ−Ｇｌｏｂａｌ  Ｍａｔｃｈｉｎｇ）法を用いた処理であってもよい。
【０１３１】
＜路面推定処理＞
図１９は、第１の実施形態に係る路面推定部の路面推定処理の動作の一例を示すフローチャートである。図１９を参照しながら、認識処理部５の路面推定部４００の路面推定処理の動作の流れについて説明する。
【０１３２】
＜＜ステップＳ１１＞＞
入力部４０１は、視差値演算処理部３００から視差画像を入力する。なお、視差画像は、ステレオカメラを構成する視差値導出部３で生成した視差画像を直接入力してもよく、これらの情報を予め、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の記録メディア、または、ネットワークストレージ等に記憶させておき、必要に応じて、これらから視差画像を読み込んで使用するものとしてもよい。また、視差画像は１画像のみを入力するものとしてもよく、または、動画像データをフレームごとに逐次入力するものとしてもよい。そして、ステップＳ１２へ移行する。
【０１３３】
＜＜ステップＳ１２＞＞
Ｖマップ生成部４０２は、入力部４０１により入力された視差画像の各視差画素の視差値を、Ｖマップの対応する視差点に投票することによってＶマップを生成する。そして、ステップＳ１３へ移行する。
【０１３４】
＜＜ステップＳ１３＞＞
分割部４０３は、Ｖマップ生成部４０２により生成されたＶマップを、ｄｐ座標（横座標）において、１以上の部分領域であるセグメントに分割する。分割部４０３によって分割されたセグメントごとに路面形状の推定が行われる。なお、分割されるセグメントの横幅（ｄｐ方向の幅）は同値とならなくてもよい。例えば、遠方の路面を細かく推定したい場合は、遠方になるにつれ（Ｖマップではｄｐ値が小さくなるにつれ）、セグメント幅を小さくしていけばよい。そして、ステップＳ１４へ移行する。
【０１３５】
＜＜ステップＳ１４＞＞
開始セグメント探索部４０４は、開始セグメント探索処理を開始するために、現在処理しているインデックスをｓｅｇ＿ｉｎｄｅｘとし、この変数を０に初期化する。なお、ｓｅｇ＿ｉｎｄｅｘの値域は、０〜（分割数−１）となるが、以降の説明では、インデックスは（セグメント番号−１）として説明する。例えば、分割部４０３が、Ｖマップを７つのセグメントに分割した場合、セグメントは、それぞれ第１セグメント〜第７セグメントと呼称し、対応するインデックスは、それぞれ０〜６となる。そして、ステップＳ１５へ移行する。
【０１３６】
＜＜ステップＳ１５＞＞
開始セグメント探索部４０４は、開始セグメント探索処理を開始する。開始セグメント探索部４０４は、開始セグメント探索処理において、所定のセグメント数分だけ路面推定および成否判定等の処理（ステップＳ１６〜Ｓ２０）を繰り返す。例えば、所定のセグメント数が５である場合、第１セグメント〜第５セグメントまでを処理の対象とし、開始セグメント探索部４０４は、これらのセグメントから開始セグメントの探索を行う。そして、ステップＳ１６へ移行する。
【０１３７】
＜＜ステップＳ１６＞＞
開始セグメント探索部４０４の第１標本点選択部４１１は、開始セグメント探索処理において、Ｖマップに投票された視差点のうち、処理対象の対象セグメントにおける各ｄｐ座標の位置から、少なくとも１つ以上の標本点を選択する。なお、このとき、各ｄｐ座標で選択される標本点は、１点に限定されるものではなく、複数の標本点が選択されるものとしてもよい。また、Ｖマップ上に視差点が垂直方向に存在しないｄｐ座標も存在することから、標本点を選択しないｄｐ座標が存在してもよい。そして、ステップＳ１７へ移行する。
【０１３８】
＜＜ステップＳ１７＞＞
開始セグメント探索部４０４の第１形状推定部４１２は、開始セグメント探索処理において、第１標本点選択部４１１により選択された標本点群から路面形状の推定（路面推定）を行う。そして、ステップＳ１８へ移行する。
【０１３９】
＜＜ステップＳ１８＞＞
開始セグメント探索部４０４の第１判定部４１３は、開始セグメント探索処理において、第１形状推定部４１２により推定された路面が適切（成功）か否かを判定する。そして、ステップＳ１９へ移行する。
【０１４０】
＜＜ステップＳ１９＞＞
第１判定部４１３によって、推定路面が不適切（失敗）であると判定された場合（ステップＳ１９：Ｙｅｓ）、ステップＳ２０へ移行する。一方、推定路面が適切（成功）であると判定された場合（ステップＳ１９：Ｎｏ）、ステップＳ２３へ移行する。第１判定部４１３は、推定路面が適切であると判定した場合、その推定路面を含むセグメントを開始セグメントとして決定する。
【０１４１】
＜＜ステップＳ２０＞＞
開始セグメント探索部４０４は、第１判定部４１３により推定路面が不適切と判定されたことにより、さらに開始セグメントを探索するため、次のセグメントを対象セグメントとするために、インデックスｓｅｇ＿ｉｎｄｅｘを、１だけインクリメントする。そして、ステップＳ２１へ移行する。
【０１４２】
＜＜ステップＳ２１＞＞
開始セグメント探索部４０４は、ステップＳ１６〜Ｓ２０の処理を所定のセグメント数分だけ行ったか否かを判定する。所定のセグメント数すべてについて処理を行った場合、ステップＳ２２へ移行し、行っていない場合、ステップＳ１６へ戻る。
【０１４３】
＜＜ステップＳ２２＞＞
開始セグメント探索部４０４は、開始セグメント探索処理（ステップＳ１４〜Ｓ２１）を所定回数行ったか否かを判定する。所定回数行った場合（ステップＳ２２：Ｙｅｓ）、ステップＳ２３へ移行し、行っていない場合（ステップＳ２２：Ｎｏ）、ステップＳ２４へ移行する。
【０１４４】
＜＜ステップＳ２３＞＞
開始セグメント探索部４０４は、ステップＳ１９において、第１判定部４１３により推定路面が適切と判定された、その推定路面を開始セグメントに設定する。また、開始セグメント探索部４０４（設定部）は、ステップＳ２２において、開始セグメント探索処理が所定回数実行されても、成功と判定された推定路面が見つからない場合、所定のセグメント（例えば、第１セグメント）を開始セグメントに設定し、このセグメントにデフォルト路面または履歴路面等を設定する。そして、ステップＳ２５へ移行する。
【０１４５】
＜＜ステップＳ２４＞＞
開始セグメント探索部４０４は、２回目以降の開始セグメント探索処理を実行する際に、１回目の開始セグメント探索処理における推定路面の成否判定条件よりも緩和させる。成否判定条件を緩和する方法としては、例えば、成否判定を行う際に使用する各種パラメータを緩めたり、または、成否判定を行う際に使用する条件の数を減らす方法が挙げられる。例えば、成否判定を行う際に使用する条件の数を減らす具体的な方法としては、標本点数、分散、および推定路面の角度という３つの条件を任意の２つの条件に減らすという方法が挙げられる。いずれにしても、１回目の開始セグメント探索処理よりも２回目以降の開始セグメント探索処理の方が推定路面が適切であると判定されやすくなるような成否判定条件とすればよい。そして、ステップＳ１４へ戻る。
【０１４６】
＜＜ステップＳ２５＞＞
補間部４２４は、必要時、すなわち、設定された開始セグメントより近方のセグメントが存在する場合、上述した方法によって、近方のセグメントの路面を補間する。そして、ステップＳ２６へ移行する。
【０１４７】
＜＜ステップＳ２６＞＞
継続推定部４０５は、ステップＳ２３で設定された開始セグメント以降のセグメントにおいて路面を推定する継続推定処理を開始するために、インデックスｓｅｇ＿ｉｎｄｅｘを、開始セグメントのインデックスを１だけインクリメントした値とする。ここで、現在のインデックスｓｅｇ＿ｉｎｄｅｘを１だけインクリメントした値を、新たなインデックスｓｅｇ＿ｉｎｄｅｘとするものとしていない理由は、ステップＳ２３で上述したように、必ずしも、第１判定部４１３により適切と判定された推定路面が開始セグメントに設定されているとは限らないためである。そして、ステップＳ２７へ移行する。
【０１４８】
＜＜ステップＳ２７＞＞
継続推定部４０５は、継続推定処理を開始する。継続推定部４０５は、継続推定処理において、ステップＳ１５における所定のセグメント数のうち開始セグメント以降の残りのセグメント数分だけ路面推定および成否判定等の処理（ステップＳ２８〜Ｓ３１）を繰り返す。例えば、開始セグメントが第３セグメントであり、かつ、第７セグメントまで探索する場合、残りのセグメントである第４セグメント〜第７セグメントまでを処理の対象とし、継続推定部４０５は、これらのセグメントに対して継続推定処理を行う。そして、ステップＳ２８へ移行する。
【０１４９】
＜＜ステップＳ２８＞＞
継続推定部４０５の第２標本点選択部４２１は、継続推定処理において、Ｖマップに投票された視差点のうち、開始セグメント以外の対象セグメントにおける各ｄｐ座標の位置から、少なくとも１以上の標本点を選択する。なお、このとき、各ｄｐ座標で選択される標本点は、１点に限定されるものではなく、複数の標本点が選択されるものとしてもよい。また、Ｖマップ上に視差点が垂直方向に存在しないｄｐ座標も存在することから、標本点を選択しないｄｐ座標が存在してもよい。そして、ステップＳ２９へ移行する。
【０１５０】
＜＜ステップＳ２９＞＞
継続推定部４０５の第２形状推定部４２２は、継続推定処理において、第２標本点選択部４２１により選択された標本点群から路面形状の推定（路面推定）を行う。そして、ステップＳ３０へ移行する。
【０１５１】
＜＜ステップＳ３０＞＞
継続推定部４０５の第２判定部４２３は、継続推定処理において、第２形状推定部４２２により推定された路面が適切（成功）か否かを判定する。第２判定部４２３は、推定路面が不適切（失敗）と判定した場合、その代わりとなる路面で補足する。路面を補足する方法としては、例えば、デフォルト路面または履歴路面を割り当てる方法等が挙げられる。そして、ステップＳ３１へ移行する。
【０１５２】
＜＜ステップＳ３１＞＞
継続推定部４０５は、次のセグメントを対象セグメントとするために、インデックスｓｅｇ＿ｉｎｄｅｘを、１だけインクリメントする。そして、ステップＳ３２へ移行する。
【０１５３】
＜＜ステップＳ３２＞＞
継続推定部４０５は、ステップＳ２８〜Ｓ３１の処理を開始セグメント以降の残りのセグメント数分だけ行ったか否かを判定する。残りのセグメント数すべてについて処理を行った場合、スムージング部４０６は、開始セグメント探索部４０４および継続推定部４０５により推定された路面に対してスムージング処理を行う。そして、出力部４０７は、スムージング部４０６によりスムージング処理されたＶマップ上の推定路面の情報（路面情報）を、クラスタリング部４５０に出力して路面推定処理を終了する。一方、残りのセグメント数すべてについて処理を行っていない場合、ステップＳ２８へ戻る。なお、スムージング部４０６によるスムージング処理では、着目するセグメントの推定路面が求められた後、この推定路面と、着目するセグメントの１つ前のセグメントの推定路面とを逐次的にスムージングを行うものとしてもよい。
【０１５４】
以上のステップＳ１１〜Ｓ３２の処理により、路面推定部４００による路面推定処理が行われる。
【０１５５】
なお、図１９に示すフローにおいて、開始セグメント探索部４０４によるステップＳ１６〜Ｓ１９の処理、および、継続推定部４０５によるステップＳ２８〜Ｓ３０の処理は、それぞれ、セグメントごとに直列的に実行するものとしてもよく、各ステップの処理をセグメント全体で並列的に処理するものとしてもよい。
【０１５６】
以上のように、開始セグメント探索部４０４による１回目の路面推定処理において開始セグメントが見つからなかった場合、第１判定部４１３による成否判定条件を緩和して、再度、路面推定処理を実行するものとしている。これによって、条件の緩い成否判定で無理に開始セグメントを探索することがなく、ノイズに対してロバスト状態で開始セグメントを決定、すなわち、路面の開始位置を検出することができる。よって、路面を精度よく検出することができる。
【０１５７】
また、開始セグメント探索処理では、所定のセグメントまで路面推定を行い、途中で成否判定に成功する路面が存在すれば、その路面を含むセグメントが開始セグメントとなるため、何巡にも渡って処理する必要がなくなる。一方で、成否判定に成功する路面が見つからない場合は、成否判定条件を緩和して路面推定を行うので、開始セグメントをいずれかのセグメントに決定できる可能性が高くなる。したがって、物体認識装置１全体として処理時間の増加を抑制しつつ、かつ、ノイズにロバストな状態で路面の開始位置を検出することができる。よって、路面を精度よく検出することができる。
【０１５８】
［第１の実施形態の変形例］
第１の実施形態の変形例に係る物体認識装置について、第１の実施形態に係る物体認識装置１と相違する点を中心に説明する。第１の実施形態では、開始セグメント探索処理における路面推定の方法と、継続推定処理における路面推定の方法とは、同様であるものとして説明した。本変形例では、継続推定処理における路面推定の方法とは異なる方法によって、開始セグメント探索処理における路面推定を行う動作について説明する。
【０１５９】
なお、本変形例に係る物体認識装置のハードウェア構成および機能ブロック構成は、第１の実施形態で説明した構成と同様である。また、本変形例に係る視差値導出部３のブロックマッチング処理についても、第１の実施形態で説明した動作と同様である。
【０１６０】
（路面推定部の機能ブロック構成および動作）
図２０は、第１の実施形態の変形例に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。図２１は、第１の実施形態の変形例の開始セグメント探索処理を説明する図である。図２０および図２１を参照しながら、路面推定部４００ａの機能ブロックの具体的な構成および動作について説明する。
【０１６１】
図２０に示すように、本変形例に係る物体認識装置の路面推定部４００ａは、入力部４０１と、Ｖマップ生成部４０２と、分割部４０３と、開始セグメント探索部４０４ａと、継続推定部４０５と、スムージング部４０６と、出力部４０７と、を有する。なお、入力部４０１、Ｖマップ生成部４０２、分割部４０３、継続推定部４０５、スムージング部４０６および出力部４０７の機能は、第１の実施形態で説明した機能と同様である。
【０１６２】
開始セグメント探索部４０４ａは、分割部４０３によって分割されたセグメントから、車両７０が走行している路面の開始位置を含む開始セグメントを探索する開始セグメント探索処理を行う機能部である。開始セグメント探索部４０４ａによる開始セグメント探索処理では、開始セグメント特有の特徴を鑑みて、セグメントに含まれる視差点から選択する標本点を制限する。標本点の選択の具体的態様については、第１標本点選択部４１１ａの動作説明において後述する。
【０１６３】
開始セグメント探索部４０４ａは、図２０に示すように、第１標本点選択部４１１ａと、第１形状推定部４１２と、第１判定部４１３と、を有する。なお、第１形状推定部４１２および第１判定部４１３の機能は、第１の実施形態で説明した機能と同様である。
【０１６４】
第１標本点選択部４１１ａは、開始セグメント探索処理において、Ｖマップに投票された視差点のうち、対象セグメントにおける各ｄｐ座標の位置から、少なくとも１つ以上の標本点を選択する機能部である。
【０１６５】
通常、路面の開始位置を含む開始セグメントでは、図２１（ａ）に示すように、ＶマップＶＭ６の下辺に張り付く形で視差点が並ぶ傾向がある。この状態で、ｄｐ座標ごとの視差点から標本点を選択しようとすると、図２１（ａ）に示すように、ＶマップＶＭ６の下辺に存在する横並びの視差点を標本点として選択してしまう可能性がある。さらに、最小二乗法等でこれらの標本点群を直線近似すると、推定される路面（推定路面ＥＲ６）は横並びの標本点群の影響を受けて、実際の路面に比べ傾きの小さな推定路面になってしまう。そこで、本実施形態では、開始セグメント探索処理における第１標本点選択部４１１ａによる標本点の選択処理では、横並びの標本点数に制限を設けるものとする。例えば、同じｙ座標に存在する標本点数に上限を設けて、第１標本点選択部４１１ａは、この上限数を超えて標本点を選択しないようにする。
【０１６６】
このように、横並びの標本点数に上限を設けた状態で、標本点を選択した例を、図２１（ｂ）に示す。図２１（ｂ）では、横並びの標本点数の上限数を「２」に設定して、第１標本点選択部４１１ａにより標本点を選択した例を示している。このように、開始セグメント探索処理における標本点の選択処理について、横並び（ｄｐ方向の並び）の標本点数を必要最低限（図２１（ｂ）の例では「２」）に抑えることによって、適切な傾きの路面（推定路面ＥＲ６ａ）として推定することが可能になる。また、第１標本点選択部４１１ａによる標本点の選択処理において、上限数以内でどの標本点を選択するかについての選択方式としては、例えば、以下の方式で行う。まず、標本点の選択の順序を対象セグメントの左端から右端へ向かう順序とし、あるｄｐ座標で選択された標本点と、その標本点のｙ座標とを記憶しておく。そして、次のｄｐ座標で標本点の候補を評価する場合、その時の候補のｙ座標が、既に上限数を超えて現れている場合、その候補となる点を標本点として選択しないようにする。以上のような選択方式が一例として挙げられる。なお、横並びの標本点数の上限数は、例えば、路面の視差点としてあり得る分散値に基づいて設定してもよく、または、不適にならない程度の数値を任意に設定してもよい。
【０１６７】
なお、開始セグメント探索処理において、第１標本点選択部４１１ａによる上述のような方式での標本点の選択処理は、所定のセグメントに対して実行するものとしてもよい。例えば、遠方のセグメントであるほど、視差点がＶマップの下辺で横並びに並ぶことがないことがわかっているのであれば、開始セグメント探索処理において、上述の標本点の選択処理は、所定のセグメントに対してのみ実行してもよい。
【０１６８】
［第２の実施形態］
第２の実施形態に係る物体認識装置について、第１の実施形態に係る物体認識装置１と相違する点を中心に説明する。第１の実施形態では、開始セグメント探索処理において、所定の成否判定条件を満たす路面のセグメントが見つかった時点で当該セグメントを開始セグメントとする動作を説明した。本実施形態では、成否判定で成功と判定される路面のセグメントが複数存在する場合、より適切とされる方のセグメントを開始セグメントに設定する動作について説明する。
【０１６９】
なお、本実施形態に係る物体認識装置のハードウェア構成および機能ブロック構成は、第１の実施形態で説明した構成と同様である。また、本実施形態に係る視差値導出部３のブロックマッチング処理についても、第１の実施形態で説明した動作と同様である。
【０１７０】
（路面推定部の機能ブロック構成）
図２２は、Ｖマップの推定路面が物体の視差点の影響を受ける一例を示す図である。図２３は、第２の実施形態に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。図２４は、近方に存在するセグメントを開始セグメントに設定する動作を説明する図である。図２２〜図２４を参照しながら、本実施形態に係る路面推定部４００ｂの機能ブロックの具体的な構成および動作について説明する。
【０１７１】
上述の図８に示すように路面の視差値が正しく抽出されている場合、後述する路面推定部４００ｂの分割部４０３の機能により、ＶマップＶＭが７つのセグメント（短冊状の部分領域）に分割されているものとし、紙面視右側から第１セグメント〜第７セグメントと呼称するものとすると、第１セグメントが含む推定路面が、路面の開始を示す路面として適切に判定され、この推定路面を基準に、以降のセグメントの路面を推定するため、最終的な結果は、推定路面６００ａのようになる。
【０１７２】
一方で、図２２は、推定が成功した複数の路面が存在し、その中に不適切に推定された路面が含まれる場合の例を示している。図２２（ａ）に示す視差画像Ｉｐ７には、例えば、路面６２０と、車６２１と、が写り込んでいるが、路面６２０の一部に視差値が抽出できない領域である視差未抽出領域６２２が存在する例を示している。この場合、推定される路面は、物体である車６２１に対応するＶマップ上の視差点に引っ張られて傾きが急になる可能性がある。ここで推定された路面の視差点の分布が、上り坂の視差点の分布と類似している場合に、路面の推定が成功し、路面の開始を示す路面として設定されてしまう可能性がある。図２２（ｂ）は、視差画像Ｉｐ７から生成されたＶマップＶＭ７を示している。図２２（ｂ）に示すＶマップＶＭ７では、第１セグメントおよび第４セグメントで路面の推定が成功した例を示しており、それぞれ推定に成功した路面を推定路面ＥＲ７ａ、ＥＲ７ｂとしている。また、ＶマップＶＭ７の車部６２１ａは、視差画像Ｉｐ７の車６２１に対応する。ＶマップＶＭ７の推定路面ＥＲ７ａ、ＥＲ７ｂのうち、第４セグメントの推定路面ＥＲ７ｂを、路面の開始を示す路面として設定した場合、このＶマップＶＭ７における最終的な推定路面が不適切な結果となる可能性がある。
【０１７３】
例えば、路面の開始を示す路面（推定路面ＥＲ７ｂ）を含むセグメントを基準として、以降のセグメントを推定する場合、基準となるセグメント（第４セグメント）が含む推定路面の終点を基準に標本点を探索しようとすると、この終点の位置は、実際の路面の終点の位置と比較して高い位置に存在するため、正しく標本点を探索できない可能性がある。また、標本点を探索でき、路面の推定をすることができたとしても、基準となるセグメントの推定路面との角度が所定の基準に合致しないため、路面の推定に失敗したものと判定されてしまう可能性もある。さらに、基準となるセグメントの逆方向に存在する路面(この場合、第１セグメント〜第３セグメント)を、基準となるセグメントでの推定路面を延長して補間するとした場合、第４セグメントの路面は傾きが不適切であるため、実際の路面に比べてはるかに低い路面が補間されてしまう可能性がある。この場合、第１セグメント〜第３セグメントがより近方のセグメントである場合、近方で実際の路面の視差点を大量にクラスタリングしてしまい、近方の路面上に大量の誤認識物体が出現してしまう可能性がある。
【０１７４】
一方、ＶマップＶＭ７の推定路面ＥＲ７ａ、ＥＲ７ｂのうち、第１セグメントの推定路面ＥＲ７ａを、路面の開始を示す路面として設定できれば、推定される路面は図８に示した結果と同様となるため、ＶマップＶＭ７における路面推定は成功となる。以上のように、Ｖマップ上で、複数のセグメントで路面推定が成功となった場合、複数の推定路面のうち、いかにして実際の路面を選択できるかが、１フレームのＶマップにおける路面推定の精度を決定付ける重要な要素となる。
【０１７５】
図２３に示すように、路面推定部４００ｂは、入力部４０１と、Ｖマップ生成部４０２（第２生成部）と、分割部４０３と、開始セグメント探索部４０４ｂと、継続推定部４０５ｂと、スムージング部４０６と、出力部４０７と、を有する。なお、入力部４０１、Ｖマップ生成部４０２、分割部４０３、スムージング部４０６および出力部４０７の機能は、それぞれ第１の実施形態で説明した路面推定部４００の各機能部の機能と同様である。
【０１７６】
開始セグメント探索部４０４ｂは、分割部４０３によって分割されたセグメントから、車両７０が走行している路面の開始位置を含むセグメント、すなわち、視差画像に写っている路面のうち物体認識装置を搭載した車両７０に最も近い路面部分を含むセグメントである開始セグメントを探索する開始セグメント探索処理を行う機能部である。この開始セグメント探索処理で探索する開始セグメントは、Ｖマップ上での路面推定時に基準となる路面を含むセグメントを示し、通常、路面推定は近方から遠方に向かって実行されるため、Ｖマップに含まれる最も近方の路面を含むセグメントに該当する。
【０１７７】
ここで、所定セグメントまで路面推定を行い、路面推定の成否判定で成功と判定される路面が複数存在する場合、より近方に存在するセグメントを開始セグメントに設定する開始セグメント探索処理について説明する。まず、所定のセグメントから順に路面推定を行い、所定の成否判定条件によって各セグメントに対して路面推定を行う。例えば、図２４に示すＶマップＶＭ８において、紙面視右側から第１セグメント〜第６セグメントに分割されているものとし、右方のセグメントであるほど近方のセグメントであるものとする。ここで、視差の精度については、近方の方が高く、そして、遠方になるほど分解能が低くなりやすく、かつ、信頼度が低下するため視差値が分散しやすい。このため、Ｖマップにおいて視差値が投票される視差点は、より近方に存在するものほど信頼度が高くなる。この特性を鑑み、所定セグメントまで路面推定を行ったときに、路面推定の成否判定で成功と判定される路面が複数存在する場合、より近方に存在する推定路面を含むセグメントを開始セグメントとする。例えば、図２４の例では、第１セグメントから路面推定を行い、第４セグメントの推定路面ＥＲ８ａ、および第５セグメントの推定路面ＥＲ８ｂが成否判定条件を満たした状態、すなわち、第４セグメントおよび第５セグメントで路面推定が成功した状態を示す。そして、路面推定が成功した第４セグメントおよび第５セグメントのうち、より近方のセグメント、すなわち、推定路面ＥＲ８ａを含む第４セグメントを開始セグメントとする。このような処理により、信頼度の高い視差点に基づく推定路面を含むセグメントを開始セグメントとするので、路面の開始位置を精度よく検出することができる。よって、路面を精度よく検出することができる。
【０１７８】
なお、最初に開始セグメントの探索対象となるセグメントは、必ずしも第１セグメントからでなくてもよい。また、開始セグメント探索処理の対象となるセグメント（例えば、図２４では第１セグメント〜第６セグメント）すべてに対して探索を行うことに限定されるものではなく、近方のセグメントから探索を行い、路面推定に成功したセグメントが見つかった時点で、このセグメントを開始セグメントに設定し、それ以降のセグメントに対する探索を打ち切るものとしてもよい。例えば、図２４の例の場合、第１セグメントから開始セグメント探索処理を開始し、第４セグメントで路面推定が成功した時点で、処理を打ち切り、第５セグメントおよび第６セグメントに対する探索処理は省略するものとしてもよい。これによって、不要なセグメントへの路面推定の処理を実施しなくてもよいため、開始セグメント探索処理の処理時間を短縮することができる。
【０１７９】
また、開始セグメント探索部４０４ｂによる開始セグメント探索処理は、複数回実行するものとしてもよい。すなわち、開始セグメント探索処理の一巡目で開始セグメントを見つけることができなかった場合、例えば、一巡目の成否判定条件よりも緩和して初めのセグメントから二巡目の処理を行うものとしてもよい。この場合、処理を繰り返す度（巡を重ねる度）に探索する範囲を狭めていってもよい。例えば、一巡目の開始セグメント探索処理では第６セグメントまで探索し、二巡目では第５セグメントまで探索するといった方法が考えられる。無論、一巡目および二巡目の探索範囲を同じにしてもよい。
【０１８０】
また、元々視差の情報が少ない場合では、開始セグメント探索処理を行っても、路面推定に成功する確率は低い。したがって、成功する推定路面が見つからない場合、最初の探索対象のセグメント、つまり、第１セグメントを開始セグメントとみなし、このセグメントにデフォルト路面または履歴路面を設定するものとしてもよい。そして、それ以降のセグメントについても、成功する推定路面が見つからない場合、デフォルト路面もしくは履歴路面を割り当て、または、第１セグメントの履歴路面を延長する等の処理を行ってもよい。すなわち、視差の情報が少ない場合は、誤制御に最もつながりづらい路面を設定することが望ましい。様々な傾斜の路面があるとしても、車両は平坦な路面を走行している場合が多いため、路面の推定ができない場合には、デフォルト路面を割り当ててしまうことが望ましい場合が多いからである。ただし、ここで割り当てる路面はデフォルト路面に割り当てることに限定されるものではなく、それ以外の任意の路面を割り当てるものとしてもよい。また、視差の情報が少なく路面推定ができないのであれば、無理に路面を割り当てるのではなく、このフレームでの処理をスキップするために路面推定しないようにしてもよい。
【０１８１】
開始セグメント探索部４０４ｂは、図２３に示すように、第１標本点選択部４１１（第１選択部）と、第１形状推定部４１２（第１推定部）と、第１判定部４１３と、第１設定部４１４と、を有する。なお、第１標本点選択部４１１および第１形状推定部４１２の機能は、それぞれ第１の実施形態で説明した開始セグメント探索部４０４の各機能部の機能と同様である。
【０１８２】
第１判定部４１３は、開始セグメント探索処理において、第１形状推定部４１２により推定された路面（第１推定路面）が、所定の成否判定条件（第１条件）を満たすか否かにより、路面推定が適切（成功）か否かを判定する機能部である。例えば、第１判定部４１３は、標本点の並びが右上並びに整列していると推定された場合、路面としては不適切（失敗）であると判定する。このような問題の発生の原因としては、例えば、個々の標本点の選択が独立して実行されることが挙げられる。また、第１判定部４１３による成否判定では、路面の信頼度を定量化できるのであれば、任意の尺度を利用して判定してもよい。例えば、標本点数が所定値よりも少ない場合は、路面の情報が少ない状態で推定した路面なので、不適切な傾きになっている可能性がある。したがって、この所定値を閾値として成否を分けるものとしてもよい。また、標本点群の分散状態を成否判定に採用することもできる。例えば、路面形状を推定する際に、最小二乗法を使っていた場合、近似直線を算出する際に相関係数も算出することができるため、この相関係数が所定値以下である場合に、推定路面がばらついた標本点群から推定された路面であると判定し、失敗と判定するものとしてもよい。また、路面はセグメント間で連続しているという性質を利用して、対象セグメントの１つ前のセグメントで推定された路面との角度が所定範囲に入っているか否かを判定し、入っていない場合、失敗と判定してもよい。
【０１８３】
第１設定部４１４は、第１判定部４１３による成否判定の結果に基づいて、開始セグメントを設定する機能部である。第１設定部４１４は、第１判定部４１３により適切であると判定された推定路面が複数存在する場合、最も近方の推定路面（「所定の基準を満たす」推定路面の一例）を含むセグメントを開始セグメントとして設定する。また、第１設定部４１４は、第１判定部４１３により適切であると判定された推定路面が存在しない場合、所定のセグメントを開始セグメントに設定し、このセグメントに代わりとなる路面で補足する。路面を補足する方法としては、例えば、デフォルト路面または履歴路面を割り当てる方法等が挙げられる。
【０１８４】
継続推定部４０５ｂは、開始セグメント探索部４０４ｂにより設定された開始セグメント以降のセグメントにおいて路面を推定する継続推定処理を行う機能部である。すなわち、継続推定部４０５ｂは、開始セグメント探索部４０４ｂによる開始セグメント探索処理によって開始セグメントが設定された後は、通常のセグメント単位で、開始セグメント以降の路面推定、すなわち、一セグメントに対して路面推定を行い、推定終了後は次のセグメントに対して路面推定を行い、所定のセグメント（通常、分割した最後のセグメント）まで路面推定を行う。この継続推定部４０５ｂによる継続推定処理の完了によって、１フレームにおける推定路面が完成する。
【０１８５】
継続推定部４０５ｂは、図２３に示すように、第２標本点選択部４２１（第２選択部）と、第２形状推定部４２２（第２推定部）と、第２判定部４２３と、補間部４２４と、第２設定部４２５と、を有する。なお、第２標本点選択部４２１、第２形状推定部４２２および補間部４２４の機能は、それぞれ第１の実施形態で説明した継続推定部４０５の各機能部の機能と同様である。
【０１８６】
第２判定部４２３は、継続推定処理において、第２形状推定部４２２により推定された路面（第２推定路面）が、所定の成否判定条件（第２条件）を満たすか否かにより、路面推定が適切（成功）か否かを判定する機能部である。判定方法は、上述の第１判定部４１３の方法と同様である。なお、第２判定部４２３の成否判定条件は、例えば、第１設定部４１４の成否判定条件と同様であってもよく、異なる条件であってもよい。
【０１８７】
第２設定部４２５は、第２判定部４２３による成否判定の結果に基づいて、対象セグメントでの適切な路面を設定する機能部である。例えば、第２設定部４２５は、第２形状推定部４２２により推定された路面が適切であると判定した場合、その推定路面を対象セグメントでの適切な路面として設定する。また、第２設定部４２５は、第２形状推定部４２２により推定された路面が不適切であると判定した場合、その代わりとなる路面で補足する。路面を補足する方法は、上述の第１設定部４１４と同様である。
【０１８８】
（路面推定処理）
図２５は、第２の実施形態に係る路面推定部の路面推定処理の動作の一例を示すフローチャートである。図２５を参照しながら、認識処理部５の路面推定部４００ｂの路面推定処理の動作の流れについて説明する。
【０１８９】
＜ステップＳ５１＞
入力部４０１は、視差値演算処理部３００から視差画像を入力する。なお、視差画像は、ステレオカメラを構成する視差値導出部３で生成した視差画像を直接入力してもよく、これらの情報を予め、ＣＤ、ＤＶＤ、ＨＤＤ等の記録メディア、または、ネットワークストレージ等に記憶させておき、必要に応じて、これらから視差画像を読み込んで使用するものとしてもよい。また、視差画像は１画像のみを入力するものとしてもよく、または、動画像データをフレームごとに逐次入力するものとしてもよい。そして、ステップＳ５２へ移行する。
【０１９０】
＜ステップＳ５２＞
Ｖマップ生成部４０２は、入力部４０１により入力された視差画像の各視差画素の視差値を、Ｖマップの対応する視差点に投票することによってＶマップを生成する。そして、ステップＳ５３へ移行する。
【０１９１】
＜ステップＳ５３＞
分割部４０３は、Ｖマップ生成部４０２により生成されたＶマップを、ｄｐ座標（横座標）において、１以上の部分領域であるセグメントに分割する。分割部４０３によって分割されたセグメントごとに路面形状の推定が行われる。なお、分割されるセグメントの横幅（ｄｐ方向の幅）は同値とならなくてもよい。例えば、遠方の路面を細かく推定したい場合は、遠方になるにつれ（Ｖマップではｄｐ値が小さくなるにつれ）、セグメント幅を小さくしていけばよい。そして、ステップＳ５４へ移行する。
【０１９２】
＜ステップＳ５４＞
開始セグメント探索部４０４ｂは、開始セグメント探索処理を開始するために、現在処理しているインデックスをｓｅｇ＿ｉｎｄｅｘとした場合、このインデックスを０に初期化する。なお、ｓｅｇ＿ｉｎｄｅｘの値域は、０〜（分割数−１）となるが、以降の説明では、インデックスは（セグメント番号−１）として説明する。例えば、分割部４０３が、Ｖマップを７つのセグメントに分割した場合、セグメントは、それぞれ第１セグメント〜第７セグメントと呼称し、対応するインデックスは、それぞれ０〜６となる。そして、ステップＳ５５へ移行する。
【０１９３】
＜ステップＳ５５＞
開始セグメント探索部４０４ｂは、開始セグメント探索処理を開始する。開始セグメント探索部４０４ｂは、開始セグメント探索処理において、所定のセグメント数分だけ路面推定および成否判定等の処理（ステップＳ５６〜Ｓ５９）を繰り返す。例えば、所定のセグメント数が５である場合、第１セグメント〜第５セグメントまでを処理の対象とし、開始セグメント探索部４０４ｂは、これらのセグメントから開始セグメントの探索を行う。そして、ステップＳ５６へ移行する。
【０１９４】
＜ステップＳ５６＞
開始セグメント探索部４０４ｂの第１標本点選択部４１１は、開始セグメント探索処理において、Ｖマップに投票された視差点のうち、処理対象の対象セグメントにおける各ｄｐ座標の位置から、少なくとも１つ以上の標本点を選択する。なお、このとき、各ｄｐ座標で選択される標本点は、１点に限定されるものではなく、複数の標本点が選択されるものとしてもよい。また、Ｖマップ上に視差点が垂直方向に存在しないｄｐ座標も存在することから、標本点を選択しないｄｐ座標が存在してもよい。そして、ステップＳ５７へ移行する。
【０１９５】
＜ステップＳ５７＞
開始セグメント探索部４０４ｂの第１形状推定部４１２は、開始セグメント探索処理において、第１標本点選択部４１１により選択された標本点群から路面形状の推定（路面推定）を行う。そして、ステップＳ５８へ移行する。
【０１９６】
＜ステップＳ５８＞
開始セグメント探索部４０４ｂの第１判定部４１３は、開始セグメント探索処理において、第１形状推定部４１２により推定された路面が、所定の成否判定条件を満たすか否かにより、路面推定が適切（成功）か否かを判定する。そして、ステップＳ５９へ移行する。
【０１９７】
＜ステップＳ５９＞
開始セグメント探索部４０４ｂは、さらに開始セグメントを探索するため、次のセグメントを対象セグメントとするために、インデックスｓｅｇ＿ｉｎｄｅｘを、１だけインクリメントする。そして、ステップＳ６０へ移行する。
【０１９８】
＜ステップＳ６０＞
開始セグメント探索部４０４ｂは、ステップＳ５６〜Ｓ５９の処理を所定のセグメント数分だけ行ったか否かを判定する。所定のセグメント数すべてについて処理を行った場合、ステップＳ６１へ移行し、行っていない場合、ステップＳ５６へ戻る。
【０１９９】
＜ステップＳ６１＞
第１設定部４１４は、第１判定部４１３による成否判定の結果に基づいて、開始セグメントを設定する。第１設定部４１４は、第１判定部４１３により適切であると判定された推定路面が複数存在する場合、最も近方の推定路面を含むセグメントを開始セグメントとして設定する。また、第１設定部４１４は、第１判定部４１３により適切であると判定された推定路面が存在しない場合、所定のセグメントを開始セグメントに設定し、このセグメントに代わりとなる路面で補足する。路面を補足する方法としては、例えば、所定のセグメント（例えば、第１セグメント）を開始セグメントに設定し、このセグメントにデフォルト路面または履歴路面等を設定する。そして、ステップＳ６２へ移行する。
【０２００】
＜ステップＳ６２＞
補間部４２４は、必要時、すなわち、設定された開始セグメントより近方のセグメントが存在する場合、上述した方法によって、近方のセグメントの路面を補間する。そして、ステップＳ６３へ移行する。
【０２０１】
＜ステップＳ６３＞
継続推定部４０５ｂは、ステップＳ６１で設定された開始セグメント以降のセグメントにおいて路面を推定する継続推定処理を開始するために、インデックスｓｅｇ＿ｉｎｄｅｘを、開始セグメントのインデックスに対して１だけインクリメントした値とする。ここで、現在のインデックスｓｅｇ＿ｉｎｄｅｘを１だけインクリメントした値を、新たなインデックスｓｅｇ＿ｉｎｄｅｘとするものとしていない理由は、ステップＳ６１で上述したように、必ずしも、第１判定部４１３により適切と判定された推定路面が開始セグメントに設定されているとは限らないためである。そして、ステップＳ６４へ移行する。
【０２０２】
＜ステップＳ６４＞
継続推定部４０５ｂは、継続推定処理を開始する。継続推定部４０５ｂは、継続推定処理において、ステップＳ５５における所定のセグメント数のうち開始セグメント以降の残りのセグメント数分だけ路面推定および成否判定等の処理（ステップＳ６５〜Ｓ６８）を繰り返す。例えば、開始セグメントが第３セグメントであり、かつ、第７セグメントまで探索する場合、残りのセグメントである第４セグメント〜第７セグメントまでを処理の対象とし、継続推定部４０５ｂは、これらのセグメントに対して継続推定処理を行う。そして、ステップＳ６５へ移行する。
【０２０３】
＜ステップＳ６５＞
継続推定部４０５ｂの第２標本点選択部４２１は、継続推定処理において、Ｖマップに投票された視差点のうち、開始セグメント以外の対象セグメントにおける各ｄｐ座標の位置から、少なくとも１以上の標本点を選択する。なお、このとき、各ｄｐ座標で選択される標本点は、１点に限定されるものではなく、複数の標本点が選択されるものとしてもよい。また、Ｖマップ上に視差点が垂直方向に存在しないｄｐ座標も存在することから、標本点を選択しないｄｐ座標が存在してもよい。そして、ステップＳ６６へ移行する。
【０２０４】
＜ステップＳ６６＞
継続推定部４０５ｂの第２形状推定部４２２は、継続推定処理において、第２標本点選択部４２１により選択された標本点群から路面形状の推定（路面推定）を行う。そして、ステップＳ６７へ移行する。
【０２０５】
＜ステップＳ６７＞
継続推定部４０５ｂの第２判定部４２３は、継続推定処理において、第２形状推定部４２２により推定された路面が、所定の成否判定条件を満たすか否かにより、路面推定が適切（成功）か否かを判定する。
【０２０６】
第２設定部４２５は、第２判定部４２３による成否判定の結果に基づいて、対象セグメントでの適切な路面を設定する。例えば、第２設定部４２５は、第２形状推定部４２２により推定された路面が適切であると判定した場合、その推定路面を対象セグメントでの適切な路面として設定する。また、第２設定部４２５は、第２形状推定部４２２により推定された路面が不適切であると判定した場合、その代わりとなる路面で補足する。そして、ステップＳ６８へ移行する。
【０２０７】
＜ステップＳ６８＞
継続推定部４０５ｂは、次のセグメントを対象セグメントとするために、インデックスｓｅｇ＿ｉｎｄｅｘを、１だけインクリメントする。そして、ステップＳ６９へ移行する。
【０２０８】
＜ステップＳ６９＞
継続推定部４０５ｂは、ステップＳ６５〜Ｓ６８の処理を開始セグメント以降の残りのセグメント数分だけ行ったか否かを判定する。残りのセグメント数すべてについて処理を行った場合、スムージング部４０６は、開始セグメント探索部４０４ｂおよび継続推定部４０５ｂにより推定された路面に対してスムージング処理を行う。そして、出力部４０７は、スムージング部４０６によりスムージング処理されたＶマップ上の推定路面の情報（路面情報）を、クラスタリング部４５０に出力して路面推定処理を終了する。一方、残りのセグメント数すべてについて処理を行っていない場合、ステップＳ６５へ戻る。なお、スムージング部４０６によるスムージング処理では、着目するセグメントの推定路面が求められた後、この推定路面と、着目するセグメントの１つ前のセグメントの推定路面とを逐次的にスムージングを行うものとしてもよい。
【０２０９】
以上のステップＳ５１〜Ｓ６９の処理により、路面推定部４００ｂによる路面推定処理が行われる。
【０２１０】
なお、図２５に示すフローにおいて、開始セグメント探索部４０４ｂによるステップＳ５６〜Ｓ５８の処理、および、継続推定部４０５ｂによるステップＳ６５〜Ｓ６７の処理は、それぞれ、セグメントごとに直列的に実行するものとしてもよく、各ステップの処理をセグメント全体で並列的に処理するものとしてもよい。
【０２１１】
以上のように、Ｖマップの各セグメントに対して路面推定を行った場合、路面推定の成否判定で成功と判定される路面が複数存在する場合、より近方に存在する推定路面を含むセグメントを開始セグメントとしている。これは、視差の精度については、近方の方が高く、そして、遠方になるほど分解能が低くなりやすく、かつ、信頼度が低下するため視差値が分散しやすいため、Ｖマップにおいて視差値が投票される視差点は、より近方に存在するものほど信頼度が高くなるからである。これによって、信頼度の高い視差点に基づく推定路面を含むセグメントを開始セグメントとするので、路面の開始位置を精度よく検出することができる。よって、路面を精度よく検出することができる。
【０２１２】
［第２の実施形態の変形例］
第２の実施形態の変形例に係る物体認識装置について、第２の実施形態に係る物体認識装置と相違する点を中心に説明する。第２の実施形態では、路面推定の成否判定で成功と判定される路面が複数存在する場合、Ｖマップにおいて視差値が投票される視差点は、より近方に存在するものほど信頼度が高くなる特性を鑑みて、より近方に存在する推定路面を含むセグメントを開始セグメントとする動作を説明した。本変形例では、路面推定の成否判定で成功と判定される路面が複数存在する場合、過去の履歴路面との差異が最小となる路面を含むセグメントを開始セグメントとする動作について説明する。
【０２１３】
なお、本変形例に係る物体認識装置のハードウェア構成および機能ブロック構成は、第２の実施形態で説明した構成と同様である。また、本変形例に係る視差値導出部３のブロックマッチング処理についても、第２の実施形態で説明した動作と同様である。
【０２１４】
（路面推定部の機能ブロック構成および動作）
図２６は、第２の実施形態の変形例に係る物体認識装置の路面推定部の機能ブロック構成の一例を示す図である。図２７は、路面推定が成功したセグメントが複数ある場合に誤ったセグメントを選択する動作の一例を示す図である。図２８は、履歴路面に近い路面を含むセグメントを開始セグメントに設定する動作を説明する図である。図２９は、ピッチングがない場合に路面の傾斜変化を説明する図である。図３０は、ピッチングにより車両が前に傾く場合に路面の傾斜変化を説明する図である。図３１は、ピッチングにより車両が後に傾く場合に路面の傾斜変化を説明する図である。図３２は、ピッチングがある場合に履歴路面を用いた開始セグメント探索処理を説明する図である。図２６〜図３２を参照しながら、路面推定部４００ｃの機能ブロックの具体的な構成および動作について説明する。
【０２１５】
図２６に示すように、本実施形態に係る物体認識装置の路面推定部４００ｃは、入力部４０１と、Ｖマップ生成部４０２（第２生成部）と、分割部４０３と、開始セグメント探索部４０４ｃと、継続推定部４０５ｃと、スムージング部４０６と、出力部４０７と、履歴記憶部４０８と、を有する。なお、入力部４０１、Ｖマップ生成部４０２、分割部４０３、スムージング部４０６および出力部４０７の機能は、第２の実施形態で説明した機能と同様である。また、継続推定部４０５ｃの機能は、第２の実施形態で説明した継続推定部４０５ｂの機能と同様である。
【０２１６】
開始セグメント探索部４０４ｃは、分割部４０３によって分割されたセグメントから、車両７０が走行している路面の開始位置を含む開始セグメントを探索する開始セグメント探索処理を行う機能部である。
【０２１７】
ここで、本変形例の開始セグメント探索処理の詳細について説明する。図２７では、視差画像Ｉｐ９（図２７（ａ）参照）から生成されたＶマップＶＭ９（図２７（ｂ）参照）が第１セグメント〜第７セグメントに分割され、複数のセグメント（第３セグメントおよび第５セグメント）で路面推定に成功し、最終的に得られた推定路面ＥＲ９とデフォルト路面ＤＲとを比較した例を示している。ただし、図２７では、ＶマップＶＭ９では、視差画像Ｉｐ９に写っている軽トラックの視差値が路面の視差値と誤って判定され、第３セグメントでは、実際の路面とは異なる路面が推定されてしまっている例を示している。ここで、例えば、第２の実施形態のように、路面推定に成功した複数のセグメントのうち、最も近方に存在する推定路面を含む第３セグメントを開始セグメントとしてしまうと、この第３セグメントを基準に、以降のセグメント（図２７の例では、第４セグメント〜第７セグメント）を順次推定していくため、路面推定に失敗するリスクが増加する。例えば、標本点の探索領域を前のセグメントの推定路面に決定していると標本点が好適に探索できなくなったり、前のセグメントの推定路面との角度差で成否判定を行っていると、正しい路面が推定できていたとしても失敗と誤判定されるリスクが増加する。さらに、開始セグメントよりも近方のセグメントについて、開始セグメントを延長して補間するものとすると、この延長された路面も不適切であるため、フレーム全体として推定路面の形状は不適切なものとなる。
【０２１８】
一方、図２７（ｂ）において、第５セグメントは、正しく路面の視差を捉えており、路面推定に成功しているものとすると、開始セグメントとしてはこの第５セグメントを採用する方が望ましい。しかし、一フレーム内では、どちらのセグメントが正しく路面位置を捉えられているかを判定することは困難である。そこで、過去のフレームで算出された履歴路面を用い、路面推定に成功した各セグメントの推定路面との差異が最も小さい推定路面を含むセグメントを、開始セグメントとして設定する。ここで、履歴路面として、直近の一フレームでの推定路面を用いてもよく、一フレーム以上前の任意のフレームでの推定路面を用いてもよく、または、所定数のフレーム分の履歴路面を平均して合成した路面を用いるものとしてもよい。このように、履歴路面を用いて開始セグメントを設定することによって、着目しているフレームの路面の推定結果の信頼度を予測することができ、信頼度の高い推定路面を含むセグメントを開始セグメントとするので、路面の開始位置を精度よく検出することができる。具体的な履歴路面と推定路面との差異の算出方法としては、後述する第１設定部４１４ｃの動作の説明の中で後述する。
【０２１９】
開始セグメント探索部４０４ｃは、図２６に示すように、第１標本点選択部４１１（第１選択部）と、第１形状推定部４１２（第２推定部）と、第１判定部４１３と、第１設定部４１４ｃと、を有する。なお、第１標本点選択部４１１、第１形状推定部４１２および第１判定部４１３の機能は、第２の実施形態で説明した機能と同様である。
【０２２０】
第１設定部４１４ｃは、第１判定部４１３による成否判定の結果に基づいて、開始セグメントを設定する機能部である。第１設定部４１４ｃは、第１判定部４１３により適切であると判定された推定路面が複数存在する場合、履歴記憶部４０８に記憶された過去のフレームで推定された推定路面に基づいて求めた履歴路面と、路面推定に成功した各セグメントの推定路面との差異が最も小さい推定路面（「所定の基準を満たす」推定路面の一例）を含むセグメントを、開始セグメントとして設定する。また、第１設定部４１４ｃは、第１判定部４１３により適切であると判定された推定路面が存在しない場合、所定のセグメントを開始セグメントに設定し、このセグメントに代わりとなる路面で補足する。路面を補足する方法としては、例えば、デフォルト路面または履歴路面を割り当てる方法等が挙げられる。
【０２２１】
ここで、図２８において、路面推定が成功した複数のセグメントのうち、履歴路面との差異が小さい推定路面を含むセグメントを開始セグメントに設定する方法の一例を示す。図２８に示すＶマップＶＭ１０は、第１セグメント〜第６セグメントに分割されており、第４セグメントおよび第５セグメントにおいて路面推定が成功しているものとする。また、第４セグメントの推定路面ＥＲ１０ａは、物体の視差値等の影響を受けて実際の路面よりも引き上がって推定された路面であるものとする。第１設定部４１４ｃは、図２８に示すように、履歴記憶部４０８から読み出した履歴路面ＲＲと、第４セグメントの推定路面ＥＲ１０ａおよび第５セグメントの推定路面ＥＲ１０ｂとの差を算出する。具体的には、例えば、第１設定部４１４ｃは、路面推定に成功した各セグメントの始点（右端）および終端（左端）における推定路面と履歴路面ＲＲとのｙ方向の差を算出し、その差の総和が最も小さい推定路面を含むセグメントを開始セグメントに設定する。図２８の例では、第４セグメントの推定路面ＥＲ１０ａと履歴路面ＲＲとの差の総和（α２＋β２）と、第５セグメントの推定路面ＥＲ１０ｂと履歴路面ＲＲとの差の総和（α１＋β１）とを比較した場合、総和（α１＋β１）の方が、総和（α２＋β２）よりも小さくなるので、第５セグメントを開始セグメントとして設定する。
【０２２２】
なお、履歴路面との差を算出する他の方法としては、例えば、セグメントの中心のｄｐ座標における各推定路面と履歴路面とのｙ方向の差を算出する方法、または、各推定路面の傾きと、履歴路面の傾きとの差を算出する方法等がある。つまり、履歴路面との差異を定量化できるものであれば、任意の尺度を使用することができる。
【０２２３】
以上のように、履歴路面と、路面推定に成功した各セグメントの推定路面との差異が最も小さい推定路面を含むセグメントを開始セグメントとして設定することによって、偶発的に物体の視差値またはノイズ等に引っ張られて引き上がった路面または引き下がった路面を含むセグメントを、誤って開始セグメントとして設定するリスクを低減することができるので、開始セグメントを精度よく設定することができ、路面推定の精度が向上する。
【０２２４】
次に、車両が段差等によってピッチングする場合を考える。車両がピッチングした場合、フレーム間（視差画像間）で出現する路面の視差画素は平行移動に近い移動となりやすい。これは、ピッチングすることによって、物体認識装置の撮像方向が変わった場合に同じ路面を見ると、物体認識装置からは路面の傾きが変わったように見えるためである。例えば、平坦な路面を走行中に、ピッチングにより物体認識装置の撮像方向が下方を向いたとすると、路面は相対的に上り坂になったように見える。
【０２２５】
ここで、図２９〜図３１に示すように、車両の目前に上り坂の路面が存在する場合を想定する。図２９に示す例では、図２９（ａ）に示すように、ピッチングがない状態を示しており、図２９（ｂ）のＶマップＶＭ１１ａに示すように、この路面についての推定路面ＥＲ１１ａは、デフォルト路面ＤＲに比べて高い位置に存在する。なお、ＶマップＶＭ１１ａに記載している推定路面ＥＲ１１ａおよびデフォルト路面ＤＲは、途中の距離からのものを示しているため、路面の始点は一致していないが、近方まで延長していくと、双方の路面の始点は一致する。これは後述する図３０（ｂ）および図３１（ｂ）においても同様である。
【０２２６】
次に、図３０（ａ）に示すように、車両に搭載された物体認識装置の撮像方向が下方向に傾くようにピッチングした場合を考える。この場合、物体認識装置の撮像方向と上り坂の路面との成す角度は急になり、図３０（ｂ）のＶマップＶＭ１１ｂに示すように、推定路面ＥＲ１１ｂは、図２９（ｂ）の推定路面ＥＲ１１ａよりも上方に位置することになる。
【０２２７】
さらに、図３１（ａ）に示すように、車両に搭載された物体認識装置の撮像方向が上方向に傾くようにピッチングした場合を考える。この場合、物体認識装置の撮像方向と上り坂の路面との成す角度は緩やかになり、図３１（ｂ）のＶマップＶＭ１１ｃに示すように、推定路面ＥＲ１１ｃは、図２９（ｂ）の推定路面ＥＲ１１ａよりも下方に位置し、デフォルト路面ＤＲに近くなる。
【０２２８】
このように、ピッチング時には、推定路面が上下に移動し、また、フレーム間においてその移動量は大きくならない場合が多い。ただし、推定路面の移動量はフレームレートに依存し、フレームレートが高いほど移動量が小さくなる。また、本変形例における履歴路面と推定路面との差を算出する方法では、ピッチングによって推定路面が上下に移動したとしても、図３２のＶマップＶＭ１２の推定路面ＥＲ１２ａ、ＥＲ１２ｂが示すように、各推定路面で算出した差の総和が大きくなるだけで、各推定路面で算出した差の総和同士の相対関係は変化しづらい。したがって、本変形例のように、履歴路面と、路面推定に成功した各セグメントの推定路面との差異が最も小さい推定路面を含むセグメントを開始セグメントとして設定する場合における路面推定の精度は、車両のピッチングの動作に対してロバストである。
【０２２９】
履歴記憶部４０８は、過去のフレームで算出された推定路面である履歴路面の情報を記憶する機能部である。履歴記憶部４０８は、例えば、図３に示すＲＡＭ５４によって実現される。
【０２３０】
図２６に示す入力部４０１、Ｖマップ生成部４０２、分割部４０３、開始セグメント探索部４０４ｃ、継続推定部４０５ｃ、スムージング部４０６および出力部４０７は、それぞれ図３に示すＦＰＧＡ５１によって実現される。なお、入力部４０１、Ｖマップ生成部４０２、分割部４０３、開始セグメント探索部４０４ｃ、継続推定部４０５ｃ、スムージング部４０６および出力部４０７の一部または全部は、ハードウェア回路であるＦＰＧＡ５１ではなく、ＲＯＭ５３に記憶されているプログラムがＣＰＵ５２によって実行されることによって実現されるものとしてもよい。
【０２３１】
なお、図２６に示す路面推定部４００ｃの入力部４０１、Ｖマップ生成部４０２、分割部４０３、開始セグメント探索部４０４ｃ、継続推定部４０５ｃ、スムージング部４０６、出力部４０７および履歴記憶部４０８は、機能を概念的に示したものであって、このような構成に限定されるものではない。例えば、図２６に示す路面推定部４００ｃで独立した機能部として図示した複数の機能部を、１つの機能部として構成してもよい。一方、図２６に示す路面推定部４００ｃで１つの機能部が有する機能を複数に分割し、複数の機能部として構成するものとしてもよい。
【０２３２】
（路面推定処理）
図３３は、第２の実施形態の変形例に係る路面推定部の路面推定処理の動作の一例を示すフローチャートである。図３３を参照しながら、認識処理部５の路面推定部４００ｃの路面推定処理の動作の流れについて説明する。
【０２３３】
＜ステップＳ７１〜Ｓ８０＞
ステップＳ７１〜Ｓ８０の動作は、それぞれ、第２の実施形態の図２５に示すステップＳ５１〜Ｓ６０の動作と同様である。そして、ステップＳ８１へ移行する。
【０２３４】
＜ステップＳ８１＞
路面推定部４００ｃの第１設定部４１４ｃは、第１判定部４１３により適切であると判定された推定路面が複数存在する場合、履歴記憶部４０８に記憶された過去のフレームで推定された推定路面に基づいて求めた履歴路面と、路面推定に成功した各セグメントの推定路面との差が最も小さい推定路面を含むセグメントを、開始セグメントとして設定する。また、第１設定部４１４ｃは、第１判定部４１３により適切であると判定された推定路面が存在しない場合、所定のセグメントを開始セグメントに設定し、このセグメントに代わりとなる路面で補足する。路面を補足する方法としては、例えば、所定のセグメント（例えば、第１セグメント）を開始セグメントに設定し、このセグメントにデフォルト路面または履歴路面等を設定する。なお、履歴路面と、路面推定に成功した各セグメントの推定路面との差の算出方法は、上述した通りである。そして、ステップＳ８２へ移行する。
【０２３５】
＜ステップＳ８２〜Ｓ８９＞
ステップＳ８２〜Ｓ８９の動作は、それぞれ、第２の実施形態の図２５に示すステップＳ６２〜Ｓ６９の動作と同様である。そして、ステップＳ９０へ移行する。
【０２３６】
＜ステップＳ９０＞
開始セグメント探索部４０４ｃおよび継続推定部４０５ｃは、Ｖマップ上において推定した全体の推定路面の情報を履歴記憶部４０８に記憶させる。なお、推定路面の情報の記憶方法としては、例えば、単純に履歴記憶部４０８に記憶されている最新の推定路面を上書きして記憶する方法でもよく、複数のバッファを有する場合は、新しい推定路面の情報として追加して記憶する方法でもよい。この場合、バッファの容量が限られている場合、ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）等の方式によって前のフレームの履歴路面の情報を削除するものとすればよい。また、複数のフレームでの推定路面を合成して履歴路面を生成する場合、所定のバッファに推定路面を記憶し、次回の路面推定時における履歴路面の生成に用いるものとすればよい。
【０２３７】
以上のステップＳ７１〜Ｓ９０の処理により、路面推定部４００ｃによる路面推定処理が行われる。
【０２３８】
なお、図３３に示すフローにおいて、開始セグメント探索部４０４ｃによるステップＳ７６〜Ｓ７８の処理、および、継続推定部４０５ｃによるＳ８５〜Ｓ８７の処理は、それぞれ、セグメントごとに直列的に実行するものとしてもよく、各ステップの処理をセグメント全体で並列的に処理するものとしてもよい。
【０２３９】
以上のように、Ｖマップの各セグメントに対して路面推定を行った場合、路面推定の成否判定で成功と判定される路面が複数存在する場合、履歴記憶部４０８に記憶された過去のフレームの履歴路面と、路面推定に成功した各セグメントの推定路面との差異が最も小さい推定路面を含むセグメントを、開始セグメントとして設定するものとしている。これによって、偶発的に物体の視差値またはノイズ等に引っ張られて引き上がった路面または引き下がった路面を含むセグメントを、誤って開始セグメントとして設定するリスクを低減することができるので、開始セグメントを精度よく設定することができ、路面推定の精度が向上する。
【０２４０】
また、上述の各実施形態および各変形例では、コスト値Ｃは非類似度を表す評価値としているが、類似度を表す評価値であってもよい。この場合、類似度であるコスト値Ｃが最大（極値）となるシフト量ｄが視差値ｄｐとなる。
【０２４１】
また、上述の各実施形態および各変形例では、車両７０としての自動車に搭載される物体認識装置について説明したが、これに限定されるものではない。例えば、他の車両の一例としてバイク、自転車、車椅子または農業用の耕運機等の車両に搭載されるものとしてもよい。また、移動体の一例としての車両だけでなく、ロボット等の移動体であってもよい。
【０２４２】
また、上述の各実施形態および各変形例において、物体認識装置の視差値導出部３および認識処理部５の各機能部の少なくともいずれかがプログラムの実行によって実現される場合、そのプログラムは、ＲＯＭ等に予め組み込まれて提供される。また、上述の各実施形態および各変形例に係る物体認識装置で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。また、上述の各実施形態および各変形例の物体認識装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述の各実施形態および各変形例の物体認識装置で実行されるプログラムを、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、上述の各実施形態および各変形例の物体認識装置で実行されるプログラムは、上述した各機能部のうち少なくともいずれかを含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ５２（ＣＰＵ３２）が上述のＲＯＭ５３（ＲＯＭ３３）からプログラムを読み出して実行することにより、上述の各機能部が主記憶装置（ＲＡＭ５４（ＲＡＭ３４）等）上にロードされて生成されるようになっている。
【符号の説明】
【０２４３】
１  物体認識装置
２  本体部
３  視差値導出部
４  通信線
５  認識処理部
６  車両制御装置
７  ステアリングホイール
８  ブレーキペダル
１０ａ、１０ｂ  撮像部
１１ａ、１１ｂ  撮像レンズ
１２ａ、１２ｂ  絞り
１３ａ、１３ｂ  画像センサ
２０ａ、２０ｂ  信号変換部
２１ａ、２１ｂ  ＣＤＳ
２２ａ、２２ｂ  ＡＧＣ
２３ａ、２３ｂ  ＡＤＣ
２４ａ、２４ｂ  フレームメモリ
３０  画像処理部
３１  ＦＰＧＡ
３２  ＣＰＵ
３３  ＲＯＭ
３４  ＲＡＭ
３５  Ｉ／Ｆ
３９  バスライン
５１  ＦＰＧＡ
５２  ＣＰＵ
５３  ＲＯＭ
５４  ＲＡＭ
５５  Ｉ／Ｆ
５８  ＣＡＮＩ／Ｆ
５９  バスライン
６０  機器制御システム
７０  車両
１００ａ、１００ｂ  画像取得部
２００ａ、２００ｂ  変換部
３００  視差値演算処理部
３０１  コスト算出部
３０２  決定部
３０３  生成部
４００、４００ａ〜４００ｃ  路面推定部
４０１  入力部
４０２  Ｖマップ生成部
４０３  分割部
４０４、４０４ａ〜４０４ｃ  開始セグメント探索部
４０５、４０５ｂ、４０５ｃ  継続推定部
４０６  スムージング部
４０７  出力部
４０８  履歴記憶部
４１１、４１１ａ  第１標本点選択部
４１２  第１形状推定部
４１３  第１判定部
４１４、４１４ｃ  第１設定部
４２１  第２標本点選択部
４２２  第２形状推定部
４２３  第２判定部
４２４  補間部
４２５  第２設定部
４５０  クラスタリング部
５００  棄却部
５５０  トラッキング判定部
６００  路面
６００ａ  推定路面
６０１  車
６０１ａ  車部
６１１  左ガードレール
６１１ａ  左ガードレール部
６１２  右ガードレール
６１２ａ  右ガードレール部
６１３  車
６１３ａ  車部
６１４  車
６１４ａ  車部
６２０  路面
６２１  車
６２１ａ  車部
６２２  視差未抽出領域
７０１〜７０３  投票領域
Ｂ  基線長
Ｃ  コスト値
ｄ  シフト量
ｄｐ  視差値
ＤＲ  デフォルト路面
Ｅ  物体
ＥＬ  エピポーラ線
ＥＲ１〜ＥＲ６、ＥＲ６ａ、ＥＲ７ａ、ＥＲ７ｂ、ＥＲ８ａ、ＥＲ８ｂ  推定路面
ＥＲ９、ＥＲ１０ａ、ＥＲ１０ｂ、ＥＲ１１ａ〜ＥＲ１１ｃ  推定路面
ＥＲ１２ａ、ＥＲ１２ｂ  推定路面
ｆ  焦点距離
Ｉａ  基準画像
Ｉｂ  比較画像
Ｉｐ、Ｉｐ１〜Ｉｐ３、Ｉｐ７、Ｉｐ９  視差画像
ｐ  基準画素
ｐｂ  基準領域
ｑ  候補画素
ｑｂ  候補領域
ＲＲ  履歴路面
Ｓ、Ｓａ、Ｓｂ  点
ＵＭ  Ｕマップ
ＶＭ、ＶＭ１〜ＶＭ１０、ＶＭ１１ａ〜ＶＭ１１ｃ、ＶＭ１２  Ｖマップ
Ｚ  距離
【先行技術文献】
【特許文献】
【０２４４】
【特許文献１】特開２０１１−１２８８４４号公報
【図１】
2018045680.tif 000004
【図２】
2018045680.tif 000005
【図３】
2018045680.tif 000006
【図４】
2018045680.tif 000007
【図５】
2018045680.tif 000008
【図６】
2018045680.tif 000009
【図７】
2018045680.tif 000010
【図８】
2018045680.tif 000011
【図９】
2018045680.tif 000012
【図１０】
2018045680.tif 000013
【図１１】
2018045680.tif 000014
【図１２】
2018045680.tif 000015
【図１３】
2018045680.tif 000016
【図１４】
2018045680.tif 000017
【図１５】
2018045680.tif 000018
【図１６】
2018045680.tif 000019
【図１７】
2018045680.tif 000020
【図１８】
2018045680.tif 000021
【図１９】
2018045680.tif 000022
【図２０】
2018045680.tif 000023
【図２１】
2018045680.tif 000024
【図２２】
2018045680.tif 000025
【図２３】
2018045680.tif 000026
【図２４】
2018045680.tif 000027
【図２５】
2018045680.tif 000028
【図２６】
2018045680.tif 000029
【図２７】
2018045680.tif 000030
【図２８】
2018045680.tif 000031
【図２９】
2018045680.tif 000032
【図３０】
2018045680.tif 000033
【図３１】
2018045680.tif 000034
【図３２】
2018045680.tif 000035
【図３３】
2018045680.tif 000036