(57)【要約】      （修正有）【課題】撮像画像においてテクスチャが比較的に低い領域に含まれる画素についても視差を算出しながら、各画素の視差を精度よく算出する。【解決手段】視差算出装置は、基準画像を基準として、ＳＧＭ法を用いて基準画像中の全ての画素について第１視差を算出する第１視差算出手段と、基準画像を基準として、ＢＭ法を用いて基準画像中の画素のうち少なくとも一部の画素について第２視差を算出する第２視差算出手段と、第１視差と第２視差とに基づいて、基準画像中の各画素の最終的な視差である最終視差を算出する最終視差算出手段とを備える。最終視差算出手段は、第１視差しか算出されていない画素については当該第１視差を最終視差として算出し、第１視差及び第２視差が算出された画素については、当該画素の第１視差の小数部分を第２視差の小数部分に置き換えた視差を最終視差として算出する。【選択図】図６
2019066308.tif 000002
【特許請求の範囲】
【請求項１】
ステレオカメラを用いて所定時間が経過する毎に領域を撮像する撮像手段と、
前記撮像手段によって同じ演算タイミングで撮像された複数の撮像画像のうちの基準となる撮像画像である基準画像を基準として、セミグローバルマッチング法を用いて、前記複数の撮像画像において対応する画素同士の視差である第１視差を、前記基準画像中の全ての画素について算出する第１視差算出手段と、
前記基準画像を基準として、ブロックマッチング法を用いて、前記複数の撮像画像において対応する画素同士の視差である第２視差を、前記基準画像中の画素のうち少なくとも一部の画素について算出する第２視差算出手段と、
前記第１視差と前記第２視差と、に基づいて、前記基準画像中の各画素の最終的な視差である最終視差を算出する最終視差算出手段と、を備え、
前記最終視差算出手段は、
前記第１視差しか算出されていない画素については当該第１視差を前記最終視差として算出し、
前記第１視差及び前記第２視差が算出された画素については、当該画素の前記第１視差の小数部分を前記第２視差の小数部分に置き換えた視差を前記最終視差として算出する、
ように構成された、
視差算出装置。
【請求項２】
請求項１に記載の視差算出装置であって、
更に、前記第１視差に基づいて前記基準画像中の画素のうち立体物候補に対応する画素を抽出する画素抽出手段を備え、
前記第２視差算出手段は、前記抽出された画素についてのみ前記第２視差を算出するように構成された、
視差算出装置。
【請求項３】
請求項２に記載の視差算出装置であって、
前記第２視差算出手段は、前記抽出された画素の前記第１視差の平均値である平均視差を前記立体物候補毎に算出し、前記平均視差が所定の視差閾値以下の前記立体物候補に対応する画素についてのみ前記第２視差を算出するように構成された、
視差算出装置。
【請求項４】
請求項２に記載の視差算出装置であって、
前記第２視差算出手段は、前記抽出された画素について、明暗の差の大きさを示す尺度である明暗指標値を算出し、当該明暗指標値が所定の指標値閾値より大きい画素についてのみ前記第２視差を算出するように構成された、
視差算出装置。
【請求項５】
請求項２に記載の視差算出装置であって、
前記第２視差算出手段は、
前記抽出された画素の前記第１視差の平均値である平均視差を前記立体物候補毎に算出し、
前記平均視差が所定の視差閾値以下の前記立体物候補に対応する画素について、明暗の差の大きさを示す尺度である明暗指標値を算出し、
当該明暗指標値が所定の指標値閾値より大きい画素についてのみ前記第２視差を算出するように構成された、
視差算出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ステレオカメラを用いて撮像された撮像画像に基づいて視差を算出する視差算出装置に関する。
【背景技術】
【０００２】
従来から、ステレオカメラを用いて撮像された撮像画像に基づいて画素毎に視差を算出し、算出された視差に基づいて距離（即ち、ステレオカメラから、当該視差を有する画素に対応する領域までの距離）を算出する技術が知られている。視差の算出精度が低いと距離の算出精度が低下するため、視差を精度よく算出するための様々な装置が開発されている。
【０００３】
例えば、特許文献１には、「一対の撮像画像のうち一方の撮像画像において視差算出の対象とされた画素（注目画素）」に対する「他方の撮像画像の所定範囲内の各画素」の類似度を表す指標値に基づいて当該注目画素の視差を算出する視差算出装置が開示されている。
【０００４】
視差を算出する方法の１つとして、セミグローバルマッチング法（ＳＧＭ：Semi Global Matching法）が挙げられる。ＳＧＭ法は、撮像画像においてテクスチャが比較的に低い領域（明暗の差が小さい領域）に含まれる画素についても視差の算出が可能になる点で他の視差算出方法（例えば、ブロックマッチング（ＢＭ：Block Matching）法）よりも優れている。しかしながら、その一方で、パラボラフィッティングによる放物線の傾きが急峻になるため、ピクセルロッキングが発生し易い。ここで、ピクセルロッキングとは、視差が整数値に近い値（例えば、整数値の±０．１ピクセルの値）として算出される現象である。このため、ＳＧＭ法により算出される視差の小数部分の精度はそれほど高いとは言えない。
【０００５】
そこで、ＳＧＭ法におけるピクセルロッキングの発生を抑制する方法として、非特許文献１には、視差の小数部分の推定に用いる補間関数を調整する方法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−１６４３５１号公報
【非特許文献】
【０００７】
【非特許文献１】ハラー・イストバンら（Haller, Istvan, et al.）、「改善されたサブピクセル精度を用いたリアルタイムセミグローバルデンスステレオ法」 （Real-time semi-global dense stereo solution with improved sub-pixel accuracy）、インテリジェント自動車シンポジウム（ＩＶ），２０１０  ＩＥＥＥ（Intelligent Vehicles Symposium (IV), 2010 IEEE）、（米国)、 ２０１０、ｐ．３６９−３７６
【発明の概要】
【０００８】
しかしながら、この補間関数は、模様のある路面領域の視差分布（路面視差分布）がピクセルロッキングのない均一な分布となるように適合的に導出された関数であるため、模様のある路面領域の視差分布とは異なる視差分布を有する領域についてはピクセルロッキングの発生を抑制できない可能性が高い。即ち、非特許文献１に提案される補間関数は汎用性が低いため、領域の種類（属性）に限られずにピクセルロッキングの発生を抑制する技術の開発が望まれている。
【０００９】
本発明は、上述した問題に対処するためになされたものである。即ち、本発明の目的の一つは、撮像画像においてテクスチャが比較的に低い領域に含まれる画素についても視差を算出しながら、各画素の視差を精度よく算出することが可能な視差算出装置を提供することにある。
【００１０】
本発明による視差算出装置（以下、「本発明装置」と称する。）は、
ステレオカメラを用いて所定時間が経過する毎に領域を撮像する撮像手段（１１、ステップ６０２）と、
前記撮像手段（１１）によって同じ演算タイミングで撮像された複数の撮像画像のうちの基準となる撮像画像である基準画像を基準として、セミグローバルマッチング法を用いて、前記複数の撮像画像において対応する画素同士の視差である第１視差（ｄ１）を、前記基準画像中の全ての画素について算出する第１視差算出手段(ステップ６０４)と、
前記基準画像を基準として、ブロックマッチング法を用いて、前記複数の撮像画像において対応する画素同士の視差である第２視差（ｄ２）を、前記基準画像中の画素のうち少なくとも一部の画素について算出する第２視差算出手段（ステップ６１８）と、
前記第１視差（ｄ１）と前記第２視差（ｄ２）と、に基づいて、前記基準画像中の各画素の最終的な視差である最終視差（ｄｆ）を算出する最終視差算出手段と、を備え、
前記最終視差算出手段は、
前記第１視差（ｄ１）しか算出されていない画素については当該第１視差（ｄ１）を前記最終視差（ｄｆ）として算出し、
前記第１視差（ｄ１）及び前記第２視差（ｄ２）が算出された画素については、当該画素の前記第１視差（ｄ１）の小数部分を前記第２視差（ｄ２）の小数部分に置き換えた視差を前記最終視差（ｄｆ）として算出する、
ように構成されている。
【００１１】
セミグローバルマッチング法（ＳＧＭ法）は、基準画像においてテクスチャが比較的に低い領域（以下、「低テクスチャ領域」とも称する。）に含まれる画素についても視差を算出することができる反面、ピクセルロッキングが発生し易いため、視差の小数部分の算出精度においてはブロックマッチング法（ＢＭ法）に劣る。一方、ＢＭ法は、低テクスチャ領域に含まれる画素の視差の算出精度においてはＳＧＭ法に劣るものの、ピクセルロッキングが発生し難いため、テクスチャがそれほど低くない領域に含まれる画素については視差の小数部分を高い精度で算出できる。
【００１２】
そこで、本発明装置は、基準画像中の全ての画素についてＳＧＭ法により第１視差を算出し、基準画像中の画素のうち少なくとも一部の画素については、ＢＭ法により更に第２視差を算出する。そして、第１視差しか算出されていない画素については第１視差を最終視差として算出し、第１視差及び第２視差が算出された画素については第１視差の小数部分を第２視差の小数部分で置き換えた視差を最終視差として算出する。この構成によれば、基準画像中の全ての画素について最終視差として第１視差が算出されるため、低テクスチャ領域に含まれる画素についても視差を算出することができる。加えて、基準画像中の上記少なくとも一部の画素については第１視差の小数部分が第２視差の小数部分で置き換えられた視差が最終視差として算出されるため、当該最終視差についてはピクセルロッキングの発生を抑制することができ、視差の精度が格段に向上する。この結果、撮像画像中の低テクスチャ領域に含まれる画素についても視差を算出しながら、各画素の視差を精度よく算出することが可能となる。なお、「第１視差を基準画像中の全ての画素について算出する」とは、基準画像において「第１視差を算出可能な全ての画素」について第１視差を算出することを意味するものであり、基準画像を構成する全ての画素について第１視差を算出することを常に意味するものではない。
【００１３】
加えて、本発明装置の一側面は、
更に、前記第１視差（ｄ１）に基づいて前記基準画像中の画素のうち立体物候補に対応する画素を抽出する画素抽出手段を備え（ステップ６０８）、
前記第２視差算出手段は、前記抽出された画素についてのみ前記第２視差（ｄ２）を算出するように構成されている。
【００１４】
一般に、基準画像を構成する画素は、立体物候補、路面、又は、立体物候補及び路面の何れにも該当しない不明領域、の何れかに対応している。ここで、立体物候補は、所定のサイズを有し、立体物の基本単位を表す。立体物が比較的に小さい場合（例えば、歩行者）、立体物候補は立体物そのものに対応する。一方、立体物が比較的に大きい場合（例えば、側壁及び建造物等）、当該立体物は１つの立体物候補にのみ対応するのではなく、複数の立体物候補に対応する。この場合、立体物候補は、立体物の一部に対応する。
【００１５】
路面に対応する画素群のテクスチャは比較的に低いため、当該画素群についてＢＭ法により第２視差の算出を試みても適切な値を得られない可能性が高い。加えて、不明領域に対応する画素群についてはテクスチャの傾向が不明であるため、当該画素群についてＢＭ法により第２視差の算出を試みても適切な値を得られるか否か不明である。一方、立体物候補に対応する画素群のテクスチャは比較的に高いため、当該画素群についてはＢＭ法により第２視差を適切に算出できる可能性が高い。そこで、本発明装置は、立体物候補に対応する画素を抽出し、抽出された画素についてのみ第２視差を算出して最終視差を求める。この構成によれば、第２視差を適切に算出できる可能性が高い領域に含まれる画素についてのみ選択的に第２視差を算出するため、視差の算出精度が低下することを抑制しながら、処理効率を向上させることができる。
【００１６】
更に、本発明装置の一側面では、
前記第２視差算出手段は、前記抽出された画素の前記第１視差（ｄ１）の平均値である平均視差（ｄ１ａｖｅ）を前記立体物候補毎に算出し、前記平均視差（ｄ１ａｖｅ）が所定の視差閾値（ｄ１ｔｈ）以下の前記立体物候補に対応する画素についてのみ前記第２視差（ｄ２）を算出する。
【００１７】
ピクセルロッキングによる視差の算出精度の低下は、視差が小さくなるほど顕著になる。そこで、本発明装置は、立体物候補毎に平均視差を算出し、当該平均視差が視差閾値以下の立体物候補に対応する画素についてのみ（即ち、ピクセルロッキングによる視差の算出精度の低下が顕著な画素に対してのみ）選択的に第２視差を算出して最終視差を求める。即ち、視差が比較的に大きいためにピクセルロッキングにより視差の算出精度がそれほど低下しない画素については第２視差を算出しない。この構成によれば、視差の算出精度が低下することを抑制しながら、処理効率を更に向上させることができる。
【００１８】
更に、本発明装置の一側面では、
前記第２視差算出手段は、前記抽出された画素について、明暗の差の大きさを示す尺度である明暗指標値を算出し、当該明暗指標値が所定の指標値閾値より大きい画素についてのみ前記第２視差を算出するように構成されている。
【００１９】
上述したように、ＢＭ法では低テクスチャ領域に含まれる画素については視差を適切に算出できない。上記の構成によれば、テクスチャが比較的に高い領域に含まれる画素についてのみ選択的に第２視差を算出して最終視差を求める。このため、ＢＭ法により第２視差を適切に算出できない可能性がある画素についてまで第２視差の算出を試みてしまう可能性を大幅に低減でき、結果として、視差の算出精度が低下することを抑制しながら、処理効率を更に向上させることができる。
【００２０】
更に、本発明装置の一側面では、
前記第２視差算出手段は、
前記抽出された画素の前記第１視差の平均値である平均視差を前記立体物候補毎に算出し、
前記平均視差が所定の視差閾値以下の前記立体物候補に対応する画素について、明暗の差の大きさを示す尺度である明暗指標値を算出し、
当該明暗指標値が所定の指標値閾値より大きい画素についてのみ前記第２視差を算出するように構成されている。
【００２１】
上記の構成によれば、立体物候補の平均視差が視差閾値以下の立体物候補に対応する画素のうち、明暗指標値が指標値閾値より大きい画素についてのみ選択的に第２視差を算出して最終視差を求める。このため、ピクセルロッキングによる視差の算出精度の低下が顕著であり、且つ、ＢＭ法により第２視差を適切に算出できる可能性が高い画素についてのみ第２視差の算出を行うようにすることができるため、視差の算出精度が低下することを抑制しながら、処理効率をより一層向上させることができる。
【００２２】
尚、上記説明においては、発明の理解を助けるために、実施形態に対応する発明の構成に対して、実施形態で用いた符号を括弧書きで添えているが、発明の各構成要件は前記符号によって規定される実施形態に限定されるものではない。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１実施形態に係る視差算出装置（以下、「第１実施装置」と称する。）及び第１実施装置に接続された立体物表示制御装置の概略構成図である。
【図２】ＳＧＭ法を用いてマッチングコストを算出する方法を説明するために用いる図である。
【図３Ａ】視差投票マップの平面図である。
【図３Ｂ】視差投票マップの斜視図である。
【図４】各ブロックに立体物の属性又は立体物以外の属性が設定された視差投票マップを示す図である。
【図５Ａ】ｓｏｂｅｌフィルタのオペレータを示す図である。
【図５Ｂ】ｓｏｂｅｌフィルタが適用される９つの画素を示す図である。
【図６】第１実施装置の視差算出ＥＣＵのＣＰＵが実行するルーチンを示すフローチャートである。
【図７Ａ】静止している立体物に自車両が一定速度で接近する場合における、演算タイミングと、従来の視差算出方法に基づいて算出された当該立体物までの奥行き方向の距離と、の関係を規定したグラフである。
【図７Ｂ】静止している立体物に自車両が一定速度で接近する場合における、演算タイミングと、第１実施装置の視差算出方法に基づいて算出された当該立体物までの奥行き方向の距離と、の関係を規定したグラフである。
【図８】第２実施装置の視差算出ＥＣＵのＣＰＵが実行するルーチンを示すフローチャートである。
【発明を実施するための形態】
【００２４】
（第１実施形態）
図１は、本発明の第１実施形態に係る視差算出装置（以下、「第１実施装置」とも称する。）と、第１実施装置に接続された立体物表示制御装置の概略システム構成図である。本実施形態では、第１実施装置及び立体物表示制御装置は車両に搭載される。以下では、これらの装置が搭載された車両を「自車両」と称して他車両と区別する。
【００２５】
第１実施装置は、視差算出ＥＣＵ１０と、視差算出ＥＣＵ１０に接続されたカメラセンサ１１と、を備える。立体物表示制御装置は、立体物検出ＥＣＵ２０と、立体物検出ＥＣＵ２０に接続された表示装置２１と、を備える。なお視差算出ＥＣＵ１０は、立体物検出ＥＣＵ２０と、通信・センサ系ＣＡＮ（Controller Area Network）を介してデータ交換可能（通信可能）に接続されている。ＥＣＵは、「Ｅｌｅｃｔｉｒｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ」の略であり、マイクロコンピュータを主要部として備える。マイクロコンピュータは、ＣＰＵとＲＯＭ及びＲＡＭ等の記憶装置とを含む。ＣＰＵはＲＯＭに格納されたインストラクション（プログラム、ルーチン）を実行することによって、各種機能を実現する。以下、視差算出ＥＣＵ１０は、単に「ＥＣＵ１０」と称し、立体物検出ＥＣＵ２０は、単に「ＥＣＵ２０」と称する。なお、単一の、車両周辺監視ＥＣＵが、ＥＣＵ１０の機能とＥＣＵ２０の機能とを備えることも可能である。更に、車両周辺ＥＣＵの機能は、自車両の走行を支援する制御を行ったり衝突回避制御を実施する制御を行ったりする運転支援ＥＣＵにより実現されてもよい。
【００２６】
カメラセンサ１１は、自車両前方を撮像する車載ステレオカメラ装置（図示省略）を備える。車載ステレオカメラ装置は、自車両のルーフ前端部の車幅方向中央付近に設けられ、車両前後軸より左側に配置される左カメラと、車両前後軸より右側に配置される右カメラと、を有する。左カメラは所定時間が経過する毎に主として自車両の前方左側の領域を撮像し、撮像した左画像を表す左画像信号をＥＣＵ１０に出力する。同様に、右カメラは所定時間が経過する毎に主として自車両の前方右側の領域を撮像し、撮像した右画像を表す右画像信号をＥＣＵ１０に出力する。なお、左画像及び右画像が、「複数の撮像画像」の一例に相当する。
【００２７】
ＥＣＵ１０は、カメラセンサ１１から出力された左右の画像信号によって表される左右一対の画像（左画像及び右画像）のうち、右画像を基準として、右画像を構成する各画素の視差を、「右画像中の領域の種類」、「自車両から当該領域までの自車両の進行方向（奥行き方向）における距離」、及び、「視差算出の対象となっている画素を含む所定範囲の画素群の明暗の差の大きさ」等に基づいて互いに異なる２種類の手法で算出し、２種類の最終視差を算出する。以下では、右画像を「基準画像」とも称する。ＥＣＵ１０は、最終視差に、基準画像中の画素の座標と、当該画素に対応する領域の種類と、を関連付けた情報を画素情報としてＥＣＵ２０に送信する。
【００２８】
ＥＣＵ２０は、ＥＣＵ１０から送信される画素情報のうち、領域の種類が「立体物候補」に対応する画素の画素情報を抽出する。そして、抽出された画素情報に含まれる最終視差に基づいて、自車両から、画素（当該抽出された画素情報が対応付けられている画素）に対応する領域までの自車両の進行方向（奥行き方向）における距離を算出する。ＥＣＵ２０は、複数の立体物候補の中に、互いに隣接する立体物候補が存在する場合、これらの立体物候補同士が１つの連続した立体物であるのか個別の立体物であるのかを当該距離に基づいて判定し、１つの連続した立体物であると判定した場合、隣接する立体物候補同士を結合する。これにより、ＥＣＵ２０は、基準画像中の立体物を検出する。ＥＣＵ２０は、立体物の検出結果の表示を指令する信号（表示指令信号）を表示装置２１に送信する。
【００２９】
表示装置２１は、自車両の運転席から視認可能な位置に設けられたディスプレイ装置である。表示装置２１は、ＥＣＵ２０から表示指令信号を受信すると、立体物の検出結果（即ち、各立体物の位置、形状及び自車両からの距離等）を表示する。
【００３０】
（作動の詳細）
次に、第１実施装置の作動の詳細について説明する。
＜ＳＧＭ法による第１視差ｄ１の算出＞
第１実施装置のＥＣＵ１０は、自車両の図示しないエンジンスイッチ（イグニッション・キー・スイッチ）がオン状態へと変更されてからオフ状態へと変更されるまでの期間（以下、「エンジンオン期間」とも称する。）、所定時間（演算周期）が経過する毎に、以下のようにして第１視差ｄ１を算出する。即ち、ＥＣＵ１０は、カメラセンサ１１から出力された左右の画像信号によって表される左右一対の画像のうち右画像（基準画像）を基準として、ＳＧＭ（セミグローバルマッチング）法を用いて、左右一対の画像において対応する画素同士の視差を算出する。以下では、ＳＧＭ法によって算出される視差を「第１視差ｄ１」と称する。ＥＣＵ１０は、基準画像中の全ての画素について第１視差ｄ１を算出する。なお、「全ての画素」とは、基準画像において第１視差ｄ１が算出可能な画素の全てを意味しており、基準画像を構成する全ての画素を常に意味するものではない。
【００３１】
ＳＧＭ法は複数の撮像画像から視差を算出する際に用いられる周知の手法であり、低テクスチャ領域（明暗の差が比較的に小さい領域）においても視差を算出できる点で他の視差算出手法（例えば、ＢＭ（ブロックマッチング）法）と異なっている。以下、ＳＧＭ法の概要について説明する。
【００３２】
図２に示すように、ＥＣＵ１０は、基準画像において第１視差ｄ１の算出対象である画素４０（以下、「注目画素４０」と称する。）を中心として３ピクセル×３ピクセルのウィンドウＷを生成する。そして、ウィンドウＷを左画像内の探索範囲Ｒ１内で水平方向に走査しながら、１ピクセル移動する毎にマッチングコストとしてのＺＳＳＤ（Zero-mean Sum of Squared Difference）を算出する。探索範囲Ｒ１は、右画像中の注目画素４０の座標（ｕ，ｖ）と同一のｖ座標を有し、横方向に所定の長さを有する範囲に設定される。なお、ｕ及びｖはそれぞれ撮像画像の横方向及び縦方向の成分を表す。図２の例において、ＥＣＵ１０がウィンドウＷを水平方向に走査しながら６４ピクセル分だけ移動したとすると、注目画素４０について６５個のマッチングコストが算出される。以下では、画素のｕ座標のずれ量がｋピクセル（ｋ：０〜６４）のときのマッチングコストを「ｋ番目のマッチングコストＣｍｋ」と称する。なお、ウィンドウＷのサイズはこれに限定されず、例えば５ピクセル×５ピクセルのサイズであってもよい。
【００３３】
ＥＣＵ１０は、図２に示すように、画像端から注目画素４０の上下左右斜めの隣接画素４１〜４８を経由して注目画素４０に至るパスｒ１〜ｒ８について以下の式（１）に示す漸化式に則ってコストＬｋ，ｒｎ（ｎ＝１〜８）を算出する。
Lk,rn（注目画素４０）=Cmk+min{Lk,rn(隣接画素4n), Lk-1,rn(隣接画素4n)+α, Lk+1,rn(隣接画素4n)+α, min_i(Li,rn(隣接画素4n))+β}-min_i(Li,rn(隣接画素4n)) …(1)
ここで、αは第１ペナルティ値であり、ベータは第２ペナルティ値であり、両者の間にはβ＞αの関係が成立する。加えて、min_i(Xi)は、ｉ＝１〜ｋ−２，ｋ＋２〜６４の範囲におけるXiの最小値を表す。更に、画像端においては、上記式（１）の右辺の２項目及び３項目の値は０となる。式（１）に則って算出される注目画素４０に対するパスｒ１〜ｒ８についての８個のコストＬｋ，ｒｎ（ｎ＝１〜８）は、注目画素４０についてｋ番目の最終コストＣｆｋ（後述）を算出するために使用される。
【００３４】
ＥＣＵ１０は、８個のｋ番目のコストＬｋ，ｒ１〜Ｌｋ，ｒ８を積算することにより、注目画素４０のｋ番目の最終コストＣｆｋを算出する。ＥＣＵ１０は、上記の手順でｋ＝０〜６４のときの注目画素４０の最終コストＣｆｋを６５個算出する。そして、画素のずれ量ｋ（横軸）と最終コストＣｆｋ（縦軸）との関係を規定したグラフにこれら６５個の最終コストＣｆｋをプロットし、パラボラフィッティングにより最終コストＣｆｋの最小値に対応する画素のずれ量を算出する。この画素のずれ量が第１視差ｄ１に相当する。パラボラフィッティングを行うことにより、第１視差ｄ１は小数点以下の値まで算出される。
【００３５】
以上がＳＧＭ法の概要である。ＳＧＭ法は、画像端から注目画素に至るパスについてコストを足し合わせていき、最終的に複数方向のパスのコストを積算することにより最終コストＣｆを算出することを特徴としている。これにより、低テクスチャ領域においても視差を算出できるという上述した特性がもたらされている。なお、上記の概要は最終コストＣｆの算出方法の一例を示すものであり、他の方法を用いて最終コストＣｆが算出されてもよい。ＳＧＭ法についてのより詳細な説明は、以下の文献、ハラー・イストバンら（Haller, Istvan, et al.）、「改善されたサブピクセル精度を用いたリアルタイムセミグローバルデンスステレオ法」 （Real-time semi-global dense stereo solution with improved sub-pixel accuracy）、インテリジェント自動車シンポジウム（ＩＶ），２０１０  ＩＥＥＥ（Intelligent Vehicles Symposium (IV), 2010 IEEE）、（米国)、 2010を参照されたい。但し、上記文献においては、マッチングコストはＺＺＳＤではなくＣｅｎｓｕｓ変換を用いて算出されている。なお、マッチングコストは、ＺＳＳＤの代わりにＳＳＤ（Sum of Squared Difference）又はＳＡＤ（Sum of Absolute Difference）等を用いて算出されてもよい。ＥＣＵ１０は、第１視差ｄ１を、基準画像中の各画素の座標と関連付けてＥＣＵ１０のＲＡＭに格納する。
【００３６】
＜視差画像の生成＞
ＥＣＵ１０は、エンジンオン期間中、所定時間が経過する毎に、第１視差ｄ１に基づいて視差画像を生成する。視差画像は、基準画像のうちの第１視差ｄ１が求められた画素からなる画像であり、視差画像を構成する各画素には第１視差ｄ１が対応付けられている。このため、以下では、視差画像中の各画素を「視差点」とも称する。ＥＣＵ１０は、視差画像をそのＲＡＭに格納し、所定時間が経過する毎に更新する。
【００３７】
＜立体物ブロックの検出＞
本実施形態では、ＥＣＵ１０は、基準画像中の立体物に対応する画素のうち、後述する所定の条件を満たした画素については、後述するＢＭ法を用いて視差の再算出を行う。そこで、ＥＣＵ１０は、まず、立体物又は立体物の一部（後述）に対応する視差点を推定する。
【００３８】
図３Ａは視差投票マップ３０の平面図を示し、図３Ｂは視差投票マップ３０の斜視図を示す。視差投票マップ３０は、ＥＣＵ１０のＲＡＭに予め設けられている。図３Ａ及び図３Ｂに示すように、視差投票マップ３０は、横方向の辺が視差画像の横方向（車幅方向）の位置に対応し、縦方向の辺が視差画像の縦方向の位置に対応し、奥行き方向の辺が第１視差ｄ１の大きさに対応するように配列された複数の直方体形状のブロック３２を備える。ＥＣＵ１０は、視差画像に基づいて、視差投票マップ３０の各ブロック３２に立体物又は立体物以外（例えば、路面）の属性を設定する。属性の設定方法は周知であるため、以下では簡単に説明する（詳細については、特開２０１３−１６１４３４号公報を参照）。
【００３９】
ＥＣＵ１０は、視差画像中の各視差点を、視差点の位置（横方向の位置及び縦方向の位置）と第１視差ｄ１の大きさとに基づいて、視差投票マップ３０の対応するブロック３２に投票（分類）する。そして、ＥＣＵ１０は、視差投票マップ３０の各ブロック３２について、第１視差ｄ１の平均値、第１視差ｄ１の偏差、視差画像の縦方向における視差点の座標の平均値及び視差画像の縦方向における視差点の座標の偏差を算出する。ＥＣＵ１０は、これらの値をＥＣＵ１０のＲＡＭに格納する。以下では、第１視差ｄ１の平均値を、「平均視差ｄ１ａｖｅ」と称する。
【００４０】
ＥＣＵ１０は、視差投票マップ３０のブロック３２内に、同程度の視差（距離）を有する視差点が、視差画像の縦方向において広い範囲に分布している場合、当該視差点の集合は立体物を示していると判定する。具体的には、視差点の縦方向における分布が所定の第１閾値以上であるという条件、及び、視差点の視差方向の分布が所定の第２閾値未満であるという条件を満たしている場合、図４に示すように、ＥＣＵ１０は、当該視差点が分類されているブロック３２に立体物の属性を設定する。以下では、立体物の属性に設定されたブロック３２を「立体物ブロック３２ａ」とも称する。一方、視差点の分布が上記条件を満たさないブロック３２には立体物以外の属性を設定する。図４のブロック３２のうち立体物ブロック３２ａ以外のブロックには立体物以外の属性（例えば、路面、並びに、立体物及び路面の何れにも該当しない不明領域）が設定される。ＥＣＵ１０は、視差投票マップ３０の各ブロックに立体物又は立体物以外の属性を設定することにより、立体物ブロック３２ａを検出する。
【００４１】
ＥＣＵ１０は、立体物ブロック３２ａに分類された視差点を立体物視差点として推定し、立体物ブロック３２ａ以外のブロック３２に分類された視差点を立体物視差点以外の視差点として推定する。ＥＣＵ１０は、視差画像中における立体物視差点の座標を立体物ブロック３２ａ毎にグルーピングした座標群をそのＲＡＭに格納する。
【００４２】
＜立体物視差点判定＞
ＥＣＵ１０は、エンジンオン期間中、所定時間が経過する毎に、基準画像において最終視差ｄｆ（後述）の算出対象とされた画素に対応する視差点（以下、「注目視差点」と称する。）が立体物視差点であるか否かを判定する立体物視差点判定を行う。別言すれば、ＥＣＵ１０は、立体物視差点判定において、注目視差点が立体物ブロック３２ａに分類されている視差点であるか否かを判定する。これは、注目視差点の座標が、ＲＡＭに格納されている立体物視差点の座標の何れかと一致するか否かに基づいて判定される。
【００４３】
注目視差点が立体物視差点であると判定した場合、ＥＣＵ１０は、当該注目視差点は立体物ブロック３２ａに分類されている視差点であると判定する。この場合、ＥＣＵ１０は、当該注目視差点に対応する画素（即ち、基準画像を構成する画素）はＢＭ法による視差の再算出の対象となり得るか否かを判定するために、後述する２種類の判定、即ち、平均視差判定と、明暗指標値判定と、を行う。一方、注目視差点が立体物視差点ではないと判定した場合、ＥＣＵ１０は、当該注目視差点は立体物ブロック３２ａ以外のブロック３２に分類されている視差点であると判定する。この場合、ＥＣＵ１０は、既に算出されている第１視差ｄ１を、当該注目視差点の最終視差ｄｆとしてＥＣＵ２０に送信する。ＥＣＵ１０は、視差画像中の全ての画素を注目視差点としてこの判定を行う。ここで、「全ての画素」とは、視差画像において、後述するＢＭ法による視差が算出可能な画素の全てを意味する。
【００４４】
＜平均視差判定＞
ＥＣＵ１０は、エンジンオン期間中、所定時間が経過する毎に、上記の立体物視差点判定において立体物ブロック３２ａに分類されていると判定された注目視差点について、当該注目視差点が分類されている立体物ブロック３２ａ（以下、「注目立体物ブロック３２ａ」とも称する。）の平均視差ｄ１ａｖｅ（第１視差ｄ１の平均値）が、所定の視差閾値ｄ１ｔｈ以下であるか否かを判定する平均視差判定を行う。なお、立体物ブロック３２ａの平均視差ｄ１ａｖｅは、視差投票マップ３０から立体物ブロック３２ａを検出する際に既に算出されている。
【００４５】
周知のように、視差は自車両（左右カメラ）からの奥行き方向の距離に相関しており、その値は距離が長くなるほど小さくなる。このため、上記平均視差判定は、「自車両から注目立体物ブロック３２ａに対応する立体物までの奥行き方向の距離」が所定の距離閾値以上であるか否かの判定ということもできる。このため、注目立体物ブロック３２ａの平均視差ｄ１ａｖｅが視差閾値ｄ１ｔｈ以下である（ｄ１ａｖｅ≦ｄ１ｔｈ）と判定した場合、ＥＣＵ１０は、注目立体物ブロック３２ａに対応する立体物は、自車両から距離閾値以上離間した位置に位置していると判定する。この場合、ＥＣＵ１０は、以下に述べる明暗指標値判定を行う。一方、注目立体物ブロック３２ａの平均視差ｄ１ａｖｅが視差閾値ｄ１ｔｈより大きい（ｄ１ａｖｅ＞ｄ１ｔｈ）と判定した場合、ＥＣＵ１０は、注目立体物ブロック３２ａに対応する立体物は自車両から距離閾値未満の位置に位置していると判定する。この場合、ＥＣＵ１０は、既に算出されている第１視差ｄ１を、当該注目視差点の最終視差ｄｆとしてＥＣＵ２０に送信する。ＥＣＵ１０は、立体物ブロック３２ａに分類されている全ての立体物視差点を注目視差点としてこの判定を行う。
【００４６】
なお、立体物が比較的に大きい場合（例えば、側壁及び建造物等）、当該立体物は１つの立体物ブロック３２ａにのみ対応するのではなく、複数の隣接する立体物ブロック３２ａに対応する。注目立体物ブロック３２ａがこれら複数の隣接する立体物ブロック３２ａの１つに含まれる場合、「注目立体物ブロック３２ａに対応する立体物」とは、厳密には立体物の一部のみを表す。この場合、立体物検出ＥＣＵ２０において立体物ブロック３２ａの結合処理が行われる。この点については後述する。
【００４７】
＜明暗指標値判定＞
ＥＣＵ１０は、エンジンオン期間中、所定時間が経過する毎に、上記の平均視差判定においてｄ１ａｖｅ≦ｄ１ｔｈが成立すると判定された立体物ブロック３２ａに分類されている注目視差点に対応する基準画像中の画素（以下、「注目画素」と称する。）について、当該画素を含む所定の範囲内に含まれる画素群の明暗の差の大きさを示す尺度である明暗指標値Ｔを算出する。本実施形態では、明暗指標値Ｔの算出には、エッジ検出フィルタの一種である公知のｓｏｂｅｌフィルタが用いられる。ｓｏｂｅｌフィルタでは、図５Ａに示すオペレータ５２が有する９つの係数のそれぞれを、図５Ｂに示す注目画素５０を中心とする上下左右斜めの９つの画素のうち対応する位置に位置する画素の輝度値にそれぞれ乗算し、その積の和の絶対値を明暗指標値Ｔとして算出する。なお、図５Ｂの各画素の濃淡は輝度の度合いを表す。明暗指標値Ｔは、注目画素を中心とする上記９つの画素の明暗の差が大きいほど（即ち、高テクスチャである）ほど大きな値となり、明暗の差が小さい（即ち、低テクスチャである）ほど小さな値となる。ＣＰＵは、注目画素の明暗指標値ＴをＥＣＵ１０のＲＡＭに格納する。
【００４８】
ＥＣＵ１０は、このようにして算出された明暗指標値Ｔを用いて、注目画素の明暗指標値Ｔが所定の指標値閾値Ｔｔｈより大きいか否かを判定する明暗指標値判定を行う。別言すれば、ＣＰＵは、注目画素を中心とする上下左右斜めの９つの画素のテクスチャが所定のテクスチャ閾値より高いか否かを判定する。明暗指標値Ｔが指標値閾値Ｔｔｈよりも大きい（Ｔ＞Ｔｔｈ）と判定した場合、ＥＣＵ１０は、当該９つの画素のテクスチャがテクスチャ閾値より高いと判定する。この場合、ＥＣＵ１０は、当該注目画素は、ＢＭ法による視差の再算出の対象であると判定する。一方、明暗指標値Ｔが指標値閾値Ｔｔｈ以下である（Ｔ≦Ｔｔｈ）と判定した場合、ＥＣＵ１０は、当該９つの画素のテクスチャがテクスチャ閾値以下であると判定する。この場合、ＥＣＵ１０は、当該注目画素についてＢＭ法による視差の再算出は不要であると判定し、既に算出されている第１視差ｄ１を、当該注目画素の最終視差ｄｆとしてＥＣＵ２０に送信する。
【００４９】
ＥＣＵ１０は、平均視差判定においてｄ１ａｖｅ≦ｄ１ｔｈが成立すると判定された立体物ブロック３２ａに分類されている全ての立体物視差点に対応する基準画像中の画素を注目画素としてこの判定を行う。このため、判定結果によっては、立体物ブロック３２ａにおいて、Ｔ＞Ｔｔｈと判定された注目画素に対応する立体物視差点と、Ｔ≦Ｔｔｈと判定された注目画素に対応する立体物視差点と、が混在する場合がある。別言すれば、立体物ブロック３２ａにおいて、ＢＭ法による視差の再算出が行われる立体物視差点と、当該再算出が行われない立体物視差点とが混在する場合がある。
【００５０】
＜ＢＭ法による第２視差ｄ２の算出＞
ＥＣＵ１０は、エンジンオン期間中、所定時間が経過する毎に、上記の明暗指標値判定においてＴ＞Ｔｔｈが成立すると判定された注目画素について、基準画像を基準として、ＢＭ法を用いて、左右一対の画像において対応する画素同士の視差を算出する。以下では、ＢＭ法によって算出される視差を「第２視差ｄ２」と称する。ＢＭ法は周知であるため、以下、簡単に説明する。
【００５１】
ＢＭ法では、ＥＣＵ１０は、注目画素を中心とした３ピクセル×３ピクセルのウィンドウを左画像内の探索範囲Ｒ２内で水平方向に走査しながら、１ピクセル移動する毎にマッチングコストとしてのＺＳＳＤを算出する。探索範囲Ｒ２は以下のように設定される。即ち、注目画素の座標を（ｕ，ｖ）と規定し、当該注目画素に対応する立体物視差点が分類(投票)されている立体物ブロック３２ａの平均視差ｄ１ａｖｅの整数部分をｄｉと規定し、左画像の座標を（ｕ’，ｖ’）と規定すると、探索範囲Ｒ２は、横方向においては、ｕ’＝ｕ＋ｄｉ−１からｕ’＝ｕ＋ｄｉ＋２まで、縦方向においてはｖ’＝ｖを満たす範囲に設定される。
【００５２】
そして、ＥＣＵ１０は、画素のずれ量（画素のｕ座標の変位に相当するピクセル数）（横軸）とマッチングコスト（縦軸）との関係を規定したグラフにマッチングコストをプロットし、パラボラフィッティングによりマッチングコストの最小値に対応する画素のずれ量を算出する。この画素のずれ量が第２視差ｄ２に相当する。パラボラフィッティングを行うことにより、第２視差ｄ２は小数点以下の値まで算出される。ＥＣＵ１０は、注目画素について算出された第２視差ｄ２を、当該注目画素の座標に関連付けてそのＲＡＭに格納する。ＥＣＵ１０は、明暗指標値判定においてＴ＞Ｔｔｈが成立すると判定された全ての注目画素について第２視差ｄ２を算出する。
【００５３】
＜最終視差ｄｆの算出＞
ＥＣＵ１０は、上述した３つの判定結果に基づいて、２種類の最終視差ｄｆを算出する。具体的には、「立体物視差点判定において注目視差点が立体物視差点ではないと判定した場合」、「注目視差点が立体物視差点であるものの、平均視差判定においてｄ１ａｖｅ≦ｄ１ｔｈが成立しないと判定した場合」、及び、「平均視差判定においてｄ１ａｖｅ≦ｄ１ｔｈが成立すると判定したものの、明暗指標値判定においてＴ＞Ｔｔｈが成立しないと判定した場合」においては、ＥＣＵ１０は、注目視差点に対応する注目画素について算出された第１視差ｄ１を、当該注目画素の最終視差ｄｆとして算出する。一方、立体物視差点判定において注目視差点が立体物視差点であると判定し、且つ、平均視差判定においてｄ１ａｖｅ≦ｄ１ｔｈが成立すると判定し、且つ、明暗指標値判定においてＴ＞Ｔｔｈと判定した場合においては、ＥＣＵ１０は、注目視差点に対応する注目画素について算出された第１視差ｄ１の小数部分を、当該注目画素において算出された第２視差ｄ２の小数部分に置き換えた視差を、当該注目画素の最終視差ｄｆとして算出する。
【００５４】
（実際の作動）
次に、ＥＣＵ１０の実際の作動について説明する。ＥＣＵ１０のＣＰＵは、エンジンオン期間中、図６にフローチャートにより示したルーチンを所定時間（演算周期）が経過する毎に実行するようになっている。
【００５５】
ＣＰＵは、エンジンスイッチがオン状態へと変更されると、図６のステップ６００から処理を開始してステップ６０２乃至ステップ６０８の処理を順に行う。
ステップ６０２：ＣＰＵは、カメラセンサ１１から左画像信号及び右画像信号を受信する。即ち、左画像及び右画像（基準画像）を含む撮像画像を取得する。
ステップ６０４：ＣＰＵは、基準画像を基準として、ＳＧＭ法を用いて、左右一対の画像において対応する画素同士の視差を第１視差ｄ１として算出する。ＣＰＵは、基準画像中の全ての画素について第１視差ｄ１を算出する。
ステップ６０６：ＣＰＵは、第１視差ｄ１に基づいて視差画像を生成する。
ステップ６０８：ＣＰＵは、視差画像に基づいて視差投票マップ３０から立体物ブロック３２ａを検出する。
【００５６】
ステップ６０８の処理を終了すると、ＣＰＵはステップ６１０に進む。ステップ６１０では、ＣＰＵは、基準画像中の１つの画素に対応する注目視差点が、立体物視差点であるか否かを判定する（立体物視差点判定）。当該注目視差点が立体物視差点ではないと判定した場合、ＣＰＵは、ステップ６１０にて「Ｎｏ」と判定し、後述するステップ６２２の処理を行う。一方、当該注目視差点が立体物視差点であると判定した場合、ＣＰＵは、ステップ６１０にて「Ｙｅｓ」と判定し、以下のステップ６１２に進む。
【００５７】
ステップ６１２では、ＣＰＵは、注目視差点が分類されている立体物ブロック３２ａ（注目立体物ブロック３２ａ）の平均視差ｄ１ａｖｅが、視差閾値ｄ１ｔｈ以下（ｄ１ａｖｅ≦ｄ１ｔｈ）であるか否かを判定する（平均視差判定）。ｄ１ａｖｅ≦ｄ１ｔｈが成立しないと判定した場合、ＣＰＵは、ステップ６１２にて「Ｎｏ」と判定し、後述するステップ６２２の処理を行う。一方、ｄ１ａｖｅ≦ｄ１ｔｈが成立すると判定した場合、ＣＰＵは、ステップ６１２にて「Ｙｅｓ」と判定し、以下のステップ６１４の処理を行う。
【００５８】
ステップ６１４：ＣＰＵは、注目視差点に対応する注目画素の明暗指標値Ｔを算出する。ステップ６１４の処理を終了すると、ＣＰＵは、ステップ６１６に進む。
【００５９】
ステップ６１６では、ＣＰＵは、注目画素の明暗指標値Ｔが指標値閾値Ｔｔｈより大きいか否かを判定する（明暗指標値判定）。Ｔ＞Ｔｔｈが成立しないと判定した場合、ＣＰＵは、ステップ６１６にて「Ｎｏ」と判定し、後述するステップ６２２の処理を行う。一方、Ｔ＞Ｔｔｈが成立すると判定した場合、ＣＰＵは、ステップ６１６にて「Ｙｅｓ」と判定し、以下のステップ６１８及びステップ６２０の処理を順に行う。
【００６０】
ステップ６１８：ＣＰＵは、注目画素について、基準画像を基準として、ＢＭ法を用いて、左右一対の画像において対応する画素同士の視差を第２視差ｄ２として算出する。
ステップ６２０：ＣＰＵは、注目画素についてステップ６０４で算出された第１視差ｄ１の小数部分を、ステップ６１８で算出された第２視差ｄ２の小数部分で置き換えた視差を当該注目画素の最終視差ｄｆとして算出する。
【００６１】
これに対し、ステップ６１０、ステップ６１２及びステップ６１６の何れか１つにおいて「Ｎｏ」と判定した場合、ＣＰＵは、以下のステップ６２２の処理を行う。
【００６２】
ステップ６２２：ＣＰＵは、注目画素についてステップ６０４で算出された第１視差ｄ１を、当該注目画素の最終視差ｄｆとして算出する。
【００６３】
ステップ６２０又はステップ６２２を終了すると、ＣＰＵは、ステップ６２４に進む。ステップ６２４では、ＣＰＵは、ステップ６１０以降の処理が、基準画像中の全ての画素について実施されたか否かを判定する。上記処理が全ての画素についてはまだ実施されていないと判定した場合、ＣＰＵは、ステップ６２４にて「Ｎｏ」と判定してステップ６１０に戻り、基準画像中の残りの画素に対してステップ６１０以降の処理を繰り返す。一方、上記処理が基準画像中の全ての画素について実施されたと判定した場合、ＣＰＵは、ステップ６２４にて「Ｙｅｓ」と判定し、ステップ６２６に進み本ルーチンを一旦終了する。
【００６４】
（立体物表示制御装置の作動の詳細）
次に、立体物表示制御装置の作動の詳細について説明する。立体物表示制御装置のＥＣＵ２０は、ＥＣＵ１０から基準画像中の全ての画素の最終視差ｄｆを含む画素情報を取得すると、立体物視差点に対応する画素を抽出する。抽出された画素には、ＢＭ法による視差の再算出が行われた画素とそうでない画素がある。ＥＣＵ２０は、立体物ブロック３２ａ内の立体物視差点の中に、ＢＭ法による視差の再算出（以下、単に「視差の再算出」とも称する。）が行われた画素に対応する立体物視差点が含まれている場合、当該立体物ブロック３２ａ内の立体物視差点に対応する画素から、視差の再算出が行われた画素を全て抽出する。そして、抽出された複数の画素の最終視差ｄｆの中央値を、当該立体物ブロック３２ａの代表視差として算出する。一方、立体物ブロック３２ａ内の立体物視差点の中に、視差の再算出が行われた画素に対応する立体物視差点が含まれていない場合、ＥＣＵ２０は、平均視差ｄ１ａｖｅを当該立体物ブロック３２ａの代表視差として算出する。即ち、視差投票マップ３０内の各立体物ブロック３２ａは、最終視差ｄｆの中央値としての代表視差又は平均視差ｄ１ａｖｅとしての代表視差の何れかを有する。
【００６５】
ＥＣＵ２０は、これらの代表視差に基づいて、立体物ブロック３２ａの結合処理を行う。具体的には、ＥＣＵ２０は、これらの代表視差を３次元座標変換して自車両から立体物ブロック３２ａ（厳密には、立体物ブロック３２ａに対応する立体物又は立体物の一部）までの奥行き方向の距離（奥行き距離）を算出する。そして、２つの立体物ブロック３２ａが視差投票マップ３０内において奥行き方向に隣接している場合、ＥＣＵ２０は、各立体物ブロック３２ａの奥行き距離の差が所定の奥行き距離閾値以下であるか否かを判定する。
【００６６】
奥行き距離の差が奥行き距離閾値以下であると判定した場合、ＥＣＵ２０は、これら２つの立体物ブロック３２ａは１つの連続した立体物に対応していると判定し、これらの立体物ブロック３２ａを結合する。以下では、結合された立体物ブロック３２ａを「結合立体物ブロック３２ａ」と称する。一方、奥行き距離の差が奥行き距離閾値を超えていると判定した場合、ＥＣＵ２０は、これら２つの立体物ブロック３２ａは個別の立体物にそれぞれ対応していると判定し、これらの立体物ブロック３２ａを結合しない。ＥＣＵ２０は、視差投票マップ３０内で奥行き方向に隣接している全ての立体物ブロック３２ａについて上記の処理を行い、立体物ブロック３２ａを結合する。
【００６７】
なお、立体物ブロック３２ａの結合処理は、横方向（車幅方向）において行われてもよい。この場合、ＥＣＵ２０は、立体物ブロック３２ａの代表視差だけではなく、当該ブロック３２ａ内の全ての立体物視差点を３次元座標変換し、横方向に隣接している２つの立体物ブロック３２ａの横方向の距離（横距離）の最小値を算出する。そして、ＥＣＵ２０は、当該最小値が所定の横距離閾値以下であると判定した場合、これら２つの立体物ブロック３２ａを結合し、結合立体物ブロック３２ａとする。一方、ＥＣＵ２０は、当該最小値が横距離閾値を超えていると判定した場合、これら２つの立体物ブロック３２ａを結合しない。ＥＣＵ２０は、視差投票マップ３０内で横方向に隣接している全ての立体物ブロック３２ａについて上記の処理を行い、立体物ブロック３２ａを結合する。
【００６８】
立体物ブロック３２ａの結合処理を終了した後の立体物ブロック３２ａ内の立体物視差点の集合、及び、結合立体物ブロック３２ａ内の立体物視差点の集合が、基準画像における立体物に対応する。即ち、ＥＣＵ２０は、立体物ブロック３２ａの結合処理を行うことにより、基準画像中の立体物を検出する。ＥＣＵ２０は、立体物の検出結果（即ち、各立体物の位置、形状及び自車両からの距離等）を表示装置２１に表示させる。
【００６９】
第１実施装置の作用効果について説明する。第１実施装置の構成によれば、基準画像中の全ての画素について最終視差として第１視差ｄ１が算出されるため、低テクスチャ領域に含まれる画素についても視差を算出することができる。加えて、基準画像中の画素のうち立体物に対応する画素の一部については、第１視差ｄ１の小数部分が第２視差ｄ２の小数部分で置き換えられた視差が最終視差ｄｆとして算出されるため、当該最終視差についてはピクセルロッキングの発生を抑制することができ、当該最終視差ｄｆの小数部分の精度が格段に向上する。この結果、撮像画像中の低テクスチャ領域に含まれる画素についても視差を算出しながら、各画素の視差を精度よく算出することが可能となる。
【００７０】
特に、第１実施装置では、立体物ブロック３２ａに分類される画素群、即ち、比較的テクスチャが高い傾向にある画素群について第２視差ｄ２が算出され、立体物ブロック３２ａ以外のブロック３２に分類される画素群、即ち、比較的テクスチャが低い傾向にある画素群、又は、テクスチャの傾向が不明である画素群については第２視差ｄ２が算出されない。この構成によれば、第２視差を適切に算出できる可能性が高い領域に含まれる画素について選択的に第２視差を算出するため、視差の算出精度が低下することを抑制しながら、処理効率を向上させることができる。
【００７１】
加えて、ピクセルロッキングによる視差の算出精度の低下は、視差が小さくなるほど顕著になる。そこで、第１実施装置は、立体物ブロック３２ａ毎に平均視差ｄ１ａｖｅを算出し、当該平均視差ｄ１ａｖｅが視差閾値ｄ１ｔｈ以下の立体物候補に対応する画素についてのみ（即ち、ピクセルロッキングによる視差の算出精度の低下が顕著な画素に対してのみ）選択的に第２視差ｄ２を算出して最終視差を求める。即ち、視差が比較的に大きいためにピクセルロッキングにより視差の算出精度がそれほど低下しない画素については第２視差ｄ２を算出しない。この構成によれば、視差の算出精度が低下することを抑制しながら、処理効率を更に向上させることができる。
【００７２】
更に、第１実施装置では、明暗指標値Ｔが指標値閾値Ｔｔｈより大きい画素についてのみ（即ち、テクスチャが比較的に高い領域に含まれる画素についてのみ）選択的に第２視差ｄ２を算出して最終視差ｄｆを求める。この構成によれば、ＢＭ法により第２視差を適切に算出できない可能性がある画素（即ち、低テクスチャ領域に含まれる画素）についてまで第２視差の算出を試みてしまう可能性を大幅に低減でき、結果として、視差の算出精度が低下することを抑制しながら、処理効率をより一層向上させることができる。
【００７３】
ここで、第１実施装置により出力される最終視差に基づいて立体物を検出した場合における、自車両から当該立体物までの奥行き方向の距離（以下、単に「距離」とも称する。）の経時的な推移について、図７Ａ及び図７Ｂを参照して説明する。図７Ａ及び図７Ｂは、何れも静止している立体物に自車両が一定速度で接近している場面を表す。図７Ａは、演算タイミングと、従来の視差算出方法に基づいて算出された距離（以下、単に「算出距離」とも称する。）との関係を規定したグラフであり、図７Ｂは、演算タイミングと、第１実施装置の視差算出方法に基づいて算出された距離との関係を規定したグラフである。何れのグラフにおいても、実線が立体物までの実際の距離の推移を表し、破線が算出距離の推移を表す。
【００７４】
図７Ａのグラフによると、自車両が立体物に接近して距離が短くなったときの算出距離の推移は実際の距離の推移とほぼ一致しているものの、立体物までの距離が長くなるほど算出距離が実際の距離から乖離している。加えて、算出距離が急激に変化するいわゆる「距離飛び」が定期的に発生している。これは、距離が長いところほど視差が小さく、ピクセルロッキングの影響が反映され易いことに起因していると考えられる。一方、図７Ｂのグラフによると、算出距離の推移は滑らかであり、実際の距離の推移とほぼ一致している。加えて、距離が長い地点における算出距離の誤差も僅かである。これは、第１実施装置の構成によりピクセルロッキングの発生が抑制できていることを示している。
【００７５】
（第２実施形態）
次に、図８を参照して、本発明の第２実施形態に係る視差算出装置（以下、「第２実施装置」とも称する。）について説明する。第２実施装置は、ＢＭ法による第２視差ｄ２の算出を基準画像中の全ての画素（即ち、第１視差ｄ１が算出される全ての画素）について行う点で、第１実施装置と異なっている。第２実施装置のＥＣＵ１０のＣＰＵは、エンジンオン期間中、図８にフローチャートにより示したルーチンを所定時間（演算周期）が経過する毎に実行するようになっている。
【００７６】
ＣＰＵは、エンジンスイッチがオン状態へと変更されると、図８のステップ８００から処理を開始してステップ８０２乃至ステップ８０８の処理を順に行う。
ステップ８０２：ＣＰＵは、カメラセンサ１１から左画像及び右画像（基準画像）を含む撮像画像を取得する。
ステップ８０４：ＣＰＵは、基準画像を基準として、ＳＧＭ法を用いて、左右一対の画像において対応する画素同士の視差を第１視差ｄ１として算出する。ＣＰＵは、基準画像中の全ての画素について第１視差ｄ１を算出する。
ステップ８０６：ＣＰＵは、基準画像を基準として、ＢＭ法を用いて、左右一対の画像において対応する画素同士の視差を第２視差ｄ２として算出する。ＣＰＵは、基準画像中の全ての画素について第２視差ｄ２を算出する。
ステップ８０８：ＣＰＵは、注目画素についてステップ８０４で算出された第１視差ｄ１の小数部分を、ステップ８０６で算出された第２視差ｄ２の小数部分で置き換えた視差を当該注目画素の最終視差ｄｆとして算出する。
【００７７】
ステップ８０８の処理を終了すると、ＣＰＵは、ステップ８１０に進み本ルーチンを一旦終了する。
【００７８】
第２実施装置の作用効果について説明する。この構成によれば、基準画像中の全ての画素について最終視差として第１視差が算出されるため、低テクスチャ領域に含まれる画素についても視差を算出することができる。加えて、基準画像中の全ての画素について、第１視差の小数部分が第２視差の小数部分で置き換えられた視差が最終視差として算出されるため、ピクセルロッキングの発生を基準画像におけるより広い範囲で抑制することができ、視差の精度が格段に向上する。この結果、撮像画像中の低テクスチャ領域に含まれる画素についても視差を算出しながら、各画素の視差を精度よく算出することが可能となる。
【００７９】
以上、本発明の実施形態に係る車両制御装置について説明したが、本発明はこれらに限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
【００８０】
例えば、上記第１実施形態では、立体物視差点に対応する画素のうち、ｄ１ａｖｅ≦ｄ１ｔｈ、且つ、Ｔ＞Ｔｔｈが成立する画素についてのみ第２視差ｄ２を算出する。しかしながら、この構成に限られない。例えば、立体物視差点に対応する全ての画素について第２視差ｄ２を算出してもよい。ｄ１ａｖｅ≦ｄｔｈが成立しない画素であっても（即ち、自車両から当該画素に対応する領域までの距離が距離閾値未満であっても）ピクセルロッキングの影響は完全には排除されていない。このため、このような画素についても第２視差を算出して最終視差を求めることにより、視差をより精度よく算出できる。
【００８１】
或いは、立体物視差点に対応する画素のうち、ｄ１ａｖｅ≦ｄ１ｔｈが成立する画素についてのみ第２視差ｄ２を算出する構成であってもよいし、立体物視差点に対応する画素のうち、Ｔ＞Ｔｔｈが成立する画素についてのみ第２視差ｄ２を算出する構成であってもよい。
【００８２】
加えて、左画像が基準画像に設定されてもよい。
【符号の説明】
【００８３】
１０：視差算出ＥＣＵ、１１：カメラセンサ、２０：立体物検出ＥＣＵ、２１：表示装置、３０：視差投票マップ、３２：ブロック、３２ａ：立体物ブロック、４０：注目画素、４２：ウィンドウ、５０：注目画素、５２：オペレータ
【図１】
2019066308.tif 000003
【図２】
2019066308.tif 000004
【図３Ａ】
2019066308.tif 000005
【図３Ｂ】
2019066308.tif 000006
【図４】
2019066308.tif 000007
【図５Ａ】
2019066308.tif 000008
【図５Ｂ】
2019066308.tif 000009
【図６】
2019066308.tif 000010
【図７Ａ】
2019066308.tif 000011
【図７Ｂ】
2019066308.tif 000012
【図８】
2019066308.tif 000013