[第1の実施の形態]
以下、図を用いて、本実施の形態の具体的な説明をする。ここでは、物体認識装置1が自動車に搭載される場合を例に説明する。
(物体認識装置を備えた車両の概略構成)
図1は、実施の形態に係る機器制御システムを車両に搭載した例を示す図である。図1を参照しながら、本実施の形態の機器制御システム60を搭載した車両70について説明する。図1のうち、図1(a)は、機器制御システム60を搭載した車両70の側面図であり、図1(b)は、車両70の正面図である。
図1に示すように、自動車である車両70は、機器制御システム60を搭載している。機器制御システム60は、車両70の居室空間である車室に設置された物体認識装置1と、車両制御装置6(制御装置)と、ステアリングホイール7と、ブレーキペダル8と、を備えている。
物体認識装置1は、車両70の進行方向を撮像する撮像機能を有し、例えば、車両70のフロントウィンドウ内側のバックミラー近傍に設置される。物体認識装置1は、構成および動作の詳細は後述するが、本体部2と、本体部2に固定された撮像部10aと、撮像部10bとを備えている。撮像部10a、10bは、車両70の進行方向の被写体を撮像できるように本体部2に固定されている。
車両制御装置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は、実施の形態に係る物体認識装置のハードウェア構成の一例を示す図である。図2を参照しながら、物体認識装置1のハードウェア構成について説明する。
図2に示すように、物体認識装置1は、本体部2内に視差値導出部3および認識処理部5を備えている。
視差値導出部3は、物体Eを撮像して得られた複数の画像から、物体Eに対する視差を示す視差値dpを導出し、各画素における視差値dpを示す視差画像(「検出対象物の縦方向の位置と、横方向の位置と、奥行方向の位置とが対応づけられた測定情報」の一例)を出力する。認識処理部5は、視差値導出部3から出力された視差画像に基づいて、撮像画像に写り込んでいる人および車等の物体に対する物体認識処理等を行い、物体認識処理の結果を示す情報である認識情報を、車両制御装置6に出力する。
図2に示すように、視差値導出部3は、撮像部10aと、撮像部10bと、信号変換部20aと、信号変換部20bと、画像処理部30と、を備えている。
撮像部10aは、前方の被写体を撮像してアナログの画像信号を生成する処理部である。撮像部10aは、撮像レンズ11aと、絞り12aと、画像センサ13aと、を備えている。
撮像レンズ11aは、入射する光を屈折させて物体の像を画像センサ13aに結像させるための光学素子である。絞り12aは、撮像レンズ11aを通過した光の一部を遮ることによって、画像センサ13aに入力する光の量を調整する部材である。画像センサ13aは、撮像レンズ11aに入射し、絞り12aを通過した光を電気的なアナログの画像信号に変換する半導体素子である。画像センサ13aは、例えば、CCD(Charge Coupled Devices)またはCMOS(Complementary Metal Oxide Semiconductor)等の固体撮像素子によって実現される。
撮像部10bは、前方の被写体を撮像してアナログの画像信号を生成する処理部である。撮像部10bは、撮像レンズ11bと、絞り12bと、画像センサ13bと、を備えている。なお、撮像レンズ11b、絞り12bおよび画像センサ13bの機能は、それぞれ上述した撮像レンズ11a、絞り12aおよび画像センサ13aの機能と同様である。また、撮像レンズ11aおよび撮像レンズ11bは、左右のカメラが同一の条件で撮像されるように、それぞれのレンズ面が互いに同一平面上にあるように設置されている。
信号変換部20aは、撮像部10aにより生成されたアナログの画像信号を、デジタル形式の画像データに変換する処理部である。信号変換部20aは、CDS(Correlated Double Sampling)21aと、AGC(Auto Gain Control)22aと、ADC(Analog Digital Converter)23aと、フレームメモリ24aと、を備えている。
CDS21aは、画像センサ13aにより生成されたアナログの画像信号に対して、相関二重サンプリング、横方向の微分フィルタ、または縦方向の平滑フィルタ等によりノイズを除去する。AGC22aは、CDS21aによってノイズが除去されたアナログの画像信号の強度を制御する利得制御を行う。ADC23aは、AGC22aによって利得制御されたアナログの画像信号をデジタル形式の画像データに変換する。フレームメモリ24aは、ADC23aによって変換された画像データを記憶する。
信号変換部20bは、撮像部10bにより生成されたアナログの画像信号を、デジタル形式の画像データに変換する処理部である。信号変換部20bは、CDS21bと、AGC22bと、ADC23bと、フレームメモリ24bと、を備えている。なお、CDS21b、AGC22b、ADC23bおよびフレームメモリ24bの機能は、それぞれ上述したCDS21a、AGC22a、ADC23aおよびフレームメモリ24aの機能と同様である。
画像処理部30は、信号変換部20aおよび信号変換部20bによって変換された画像データに対して画像処理をする装置である。画像処理部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と、バスライン39と、を備えている。
FPGA31は、集積回路であり、ここでは、画像データに基づく画像における視差値dpを導出する処理を行う。CPU32は、視差値導出部3の各機能を制御する。ROM33は、CPU32が視差値導出部3の各機能を制御するために実行する画像処理用プログラムを記憶している。RAM34は、CPU32のワークエリアとして使用される。I/F35は、認識処理部5におけるI/F55と、通信線4とを介して通信するためのインターフェースである。バスライン39は、図2に示すように、FPGA31、CPU32、ROM33、RAM34およびI/F35が互いに通信可能となるように接続するアドレスバスおよびデータバス等である。
なお、画像処理部30は、視差値dpを導出する集積回路としてFPGA31を備えるものとしているが、これに限定されるものではなく、ASIC(Application Specific Integrated Circuit)等の集積回路であってもよい。
図2に示すように、認識処理部5は、FPGA51と、CPU52と、ROM53と、RAM54と、I/F55と、CAN(Controller Area Network)I/F58と、バスライン59と、を備えている。
FPGA51は、集積回路であり、ここでは、画像処理部30から受信した視差画像に基づいて、物体に対する物体認識処理を行う。CPU52は、認識処理部5の各機能を制御する。ROM53は、CPU52が認識処理部5の物体認識処理を実行する物体認識処理用プログラムを記憶している。RAM54は、CPU52のワークエリアとして使用される。I/F55は、画像処理部30のI/F35と、通信線4とを介してデータ通信するためのインターフェースである。CANI/F58は、外部コントローラ(例えば、図2に示す車両制御装置6)と通信するためのインターフェースであり、例えば、自動車のCAN等に接続されるバスライン59は、図2に示すように、FPGA51、CPU52、ROM53、RAM54、I/F55およびCANI/F58が互いに通信可能となるように接続するアドレスバスおよびデータバス等である。
このような構成により、画像処理部30のI/F35から通信線4を介して認識処理部5に視差画像が送信されると、認識処理部5におけるCPU52の命令によって、FPGA51が、視差画像に基づいて、撮像画像に写り込んでいる人および車等の物体の物体認識処理等を実行する。
なお、上述の各プログラムは、インストール可能な形式または実行可能な形式のファイルで、コンピュータで読み取り可能な記録媒体に記録して流通させてもよい。この記録媒体は、CD-ROM(Compact Disc Read Only Memory)またはSD(Secure Digital)メモリカード等である。
<物体認識装置の機能ブロックの構成および動作>
図3は、実施の形態に係る物体認識装置の機能ブロック構成の一例を示す図である。まず、図3を参照しながら、物体認識装置1の機能ブロックの構成および動作について説明する。
図2でも上述したが、図3に示すように、物体認識装置1は、視差値導出部3と、認識処理部5と、を備えている。このうち、視差値導出部3は、画像取得部100a(第1撮像手段)と、画像取得部100b(第2撮像手段)と、変換部200a、200bと、視差値演算処理部(生成部)300と、を有する。
物体認識装置1の各機能部の少なくとも一部は、FPGA31やFPGA51により実現されてもよいし、プログラムがCPU32やCPU52によって実行されることによって実現されてもよい。
画像取得部100aおよび画像取得部100bは、それぞれ、右のカメラ(撮像部10a)および左のカメラ(撮像部10b)により撮像された画像から、輝度画像を得る機能部である。
変換部200aは、画像取得部100aにより得られた輝度画像の画像データに対して、ノイズを除去し、デジタル形式の画像データに変換して出力する機能部である。変換部200aは、図2に示す信号変換部20aによって実現されてもよい。
変換部200bは、画像取得部100bにより得られた輝度画像の画像データに対して、ノイズを除去し、デジタル形式の画像データに変換して出力する機能部である。変換部200bは、図2に示す信号変換部20bによって実現されてもよい。
ここで、変換部200a、200bが出力する2つの輝度画像の画像データ(以下、単に、輝度画像と称する)のうち、右のカメラ(撮像部10a)である画像取得部100aにより撮像された輝度画像を基準画像Iaの画像データ(以下、単に、基準画像Iaと称する)とし、左のカメラ(撮像部10b)である画像取得部100bにより撮像された輝度画像を比較画像Ibの画像データ(以下、単に、比較画像Ibと称する)とする。すなわち、変換部200a、200bは、画像取得部100a、100bそれぞれから出力された2つの輝度画像に基づいて、それぞれ基準画像Iaおよび比較画像Ibを出力する。
視差値演算処理部300は、変換部200a、200bそれぞれから受信した基準画像Iaおよび比較画像Ibに基づいて、基準画像Iaの各画素についての視差値を導出し、基準画像Iaの各画素に視差値を対応させた視差画像を生成する。
図4は、実施の形態に係る物体認識装置の認識処理部の機能ブロック構成の一例を示す図である。図4を参照しながら、認識処理部5の機能ブロックの構成および動作について説明する。
図4に示すように、認識処理部5は、第2生成部500と、クラスタリング処理部510と、トラッキング部530と、を有する。
≪第2生成部500≫
第2生成部500は、視差値演算処理部300から視差画像を入力し、視差値導出部3から基準画像Iaを入力し、V-Disparityマップ、U-Disparityマップ、およびReal U-Disparityマップ等を生成する機能部である。なお、V-Disparityマップは、「縦方向の位置と、奥行方向の位置とが対応づけられた情報」の一例である。U-Disparityマップ、およびReal U-Disparityマップは、「横方向の位置と、奥行方向の位置とが対応づけられた情報」の一例である。
図4に示すように、第2生成部500は、第3生成部(移動面推定部)501と、第4生成部502と、第5生成部503と、を有する。図4~7を参照しながら、認識処理部5の第2生成部500の構成および動作について説明する。
図5は、視差画像から生成されるVマップの例を示す図である。図6は、視差画像から生成されるUマップの例を示す図である。図7は、Uマップから生成されるリアルUマップの例を示す図である。
第3生成部501は、視差値演算処理部300から入力した視差画像から路面(移動面)を検出するために、図5(b)に示すV-DisparityマップであるVマップVMを生成する機能部である。ここで、V-Disparityマップとは、縦軸を基準画像Iaのy軸(縦方向)とし、横軸を視差画像の視差値dpまたは奥行方向の距離とした、視差値dpの頻度分布を示す二次元ヒストグラムである。図5(a)に示す基準画像Iaには、例えば、路面600と、電柱601と、車602とが写り込んでいる。この基準画像Iaの路面600は、VマップVMにおいては路面部600aに対応し、電柱601は、電柱部601aに対応し、車602は、車部602aに対応する。
第3生成部501は、生成したVマップVMから、路面と推定される位置を直線近似する。路面が平坦な場合は、1本の直線で近似可能であるが、勾配が変わる路面の場合は、VマップVMの区間を分割して精度よく直線近似する必要がある。直線近似としては、公知技術であるハフ変換または最小二乗法等が利用できる。VマップVMにおいて、検出された路面部600aより上方に位置する塊である電柱部601aおよび車部602aは、それぞれ路面600上の物体である電柱601および車602に相当する。後述する第4生成部502によりU-Disparityマップが生成される際に、ノイズ除去のため路面より上方の情報のみが用いられる。なお、路面が推定できると路面の高さがわかるため、物体の高さがわかる。これは、公知の方法により行われる。例えば、路面を表す直線式が得られているため、視差値dp=0のときの対応するy座標y0が決まり、この座標y0が路面の高さとなる。例えば視差値がdpでy座標がy’である場合、y’-y0が視差値dのときの路面からの高さを示す。上述の座標(dp,y’)の路面からの高さHは、H=(z×(y’-y0))/fという演算式で求めることができる。なお、この演算式における「z」は、視差値dpから計算される距離(z=BF/(d-offset))、「f」は撮像部10a、10bの焦点距離を(y’-y0)の単位と同じ単位に変換した値である。ここで、BFは、撮像部10a、10bの基線長Bと焦点距離fを乗じた値、offsetは無限遠のオブジェクトを撮影したときの視差である。
第4生成部502は、VマップVMで検出された路面より上方(「第1の高さ以上」の一例)に位置する情報のみを利用、すなわち、図6(a)に示す基準画像Iaでは左ガードレール611、右ガードレール612、車613および車614に対応する視差画像上の情報を利用して、物体を認識するために、図6(b)に示すU-DisparityマップであるUマップUM(第2頻度画像)を生成する機能部である。ここで、UマップUMは、横軸を基準画像Iaのx軸(横方向)とし、縦軸を視差画像の視差値dpまたは奥行方向の距離とした、視差値dpの頻度分布を示す二次元ヒストグラムである。図6(a)に示す基準画像Iaの左ガードレール611は、UマップUMにおいては左ガードレール部611aに対応し、右ガードレール612は、右ガードレール部612aに対応し、車613は、車部613aに対応し、車614は、車部614aに対応する。
また、第4生成部502は、VマップVMで検出された路面より上方に位置する情報のみを利用、すなわち、図6(a)に示す基準画像Iaでは左ガードレール611、右ガードレール612、車613および車614に対応する視差画像上の情報を利用して、図6(c)に示すU-Disparityマップの一例である高さUマップUM_Hを生成する。ここで、U-Disparityマップの一例である高さUマップUM_Hは、横軸を基準画像Iaのx軸とし、縦軸を視差画像の視差値dpとし、画素値を物体の高さとした画像である。なお、このときの物体の高さの値は、路面からの高さが最も高い値である。図6(a)に示す基準画像Iaの左ガードレール611は、高さUマップUM_Hにおいては左ガードレール部611bに対応し、右ガードレール612は、右ガードレール部612bに対応し、車613は、車部613bに対応し、車614は、車部614bに対応する。
第5生成部503は、第4生成部502により生成された高さUマップUM_Hから、横軸を実際の距離に変換した図7(A)に示すReal U-Disparityマップの一例であるリアル高さUマップRM_Hを生成する。
また、第5生成部503は、上記の処理と同様の処理によって、第4生成部502により生成されたUマップUMから、横軸を実際の距離に変換した図7(B)に示すReal U-Disparityマップの一例であるリアルUマップRMを生成する。
ここで、リアル高さUマップRM_H、およびリアルUマップRMは、横軸を、撮像部10b(左のカメラ)から撮像部10a(右のカメラ)へ向かう方向(水平方向)の実距離とし、縦軸を、視差画像の視差値dp(またはその視差値dpから変換した奥行き方向の距離)とした二次元ヒストグラムである。図7(A)に示す高さリアルUマップRM_Hの左ガードレール部611bは、リアルUマップRMにおいては左ガードレール部611cに対応し、右ガードレール部612bは、右ガードレール部612cに対応し、車部613bは、車部613cに対応し、車部614bは、車部614cに対応する。
具体的には、第5生成部503は、高さUマップUM_H、およびUマップUMでは、遠方(視差値dpが小さい)では物体が小さいため、視差情報が少なく、距離の分解能も小さいので間引きせず、近距離の場合は物体が大きく写るため、視差情報が多く、距離の分解能も大きいので画素を大きく間引くことによって、俯瞰図に相当するリアル高さUマップRM_H、およびリアルUマップRMを生成する。後述するように、リアル高さUマップRM_HまたはリアルUマップRMから画素値の塊(物体領域)を抽出することができる。この場合、塊を囲む矩形の幅は、抽出した物体の幅に相当し、高さは、抽出した物体の奥行きに相当する。なお、第5生成部503は、高さUマップUM_Hからリアル高さUマップRM_Hを生成することに限定されるものではなく、視差画像から、直接、リアル高さUマップRM_Hを生成することも可能である。
また、第2生成部500は、生成した高さUマップUM_Hまたはリアル高さUマップRM_Hから、物体の視差画像および基準画像Iaにおけるx軸方向の位置および幅(xmin,xmax)を特定できる。また、第2生成部500は、生成した高さUマップUM_Hまたはリアル高さUマップRM_Hでの物体の高さの情報(dmin,dmax)から物体の実際の奥行きを特定できる。また、第2生成部500は、生成したVマップVMから、物体の視差画像および基準画像Iaにおけるy軸方向の位置および高さ(ymin=「最大視差値の路面からの最大高さに相当するy座標」,ymax=「最大視差値から得られる路面の高さを示すy座標」)を特定できる。また、第2生成部500は、視差画像において特定した物体のx軸方向の幅(xmin,xmax)、y軸方向の高さ(ymin,ymax)およびそれぞれに対応する視差値dpから、物体の実際のx軸方向およびy軸方向のサイズが特定できる。以上のように、第2生成部500は、VマップVM、高さUマップUM_H、リアル高さUマップRM_Hを利用して、基準画像Iaでの物体の位置、ならびに実際の幅、高さおよび奥行きを特定することができる。また、第2生成部500は、基準画像Iaでの物体の位置が特定されるので、視差画像における位置も定まり、物体までの距離も特定できる。
図8は、物体の種別の分類方法について説明する図である。第2生成部500は、物体について特定した実際のサイズ(幅、高さ、奥行き)から、図8に示すようなテーブルを用いて、物体の種別(物体タイプ)を特定することができる。例えば、物体の幅が1300[mm]、高さが1800[mm]、奥行きが2000[mm]である場合、物体は「普通車」であると特定できる。なお、図8のような幅、高さおよび奥行きと、物体の種別(物体タイプ)とを関連付ける情報をテーブルとして、RAM54等に記憶させておくものとすればよい。
≪クラスタリング処理部510≫
図4に示すクラスタリング処理部510は、第2生成部500から入力された各マップに基づいて、車両等の物体を検出する機能部である。図4に示すように、クラスタリング処理部510は、基本検出部511、分離検出部512、統合検出部513、選択部514、枠作成部515、背景検出部516、および棄却部517を有する。
基本検出部511は、高解像マップとしてのReal U-Disparityマップに基づき、車両等の物体の奥行きや幅等を検出する基本検出処理を行う。なお、以下では、基本検出部511が、Real U-Disparityマップを用いて検出する例について説明するが、基本検出部511は、U-Disparityマップを用いて検出してもよい。この場合、例えばU-Disparityマップのx座標を横方向(水平方向)の実距離等に変換する処理を基本検出部511にて行えばよい。基本検出処理では、VマップVMに基づいて推定された路面が実際の路面より低い等の場合は、物体領域の検出精度が低下する。
分離検出部512は、Real U-Disparityマップに含まれる視差点のうち、路面からの高さが所定値(「第2の高さ」)以上である視差点を用いたマップを高位置マップの一例として用いて、車両等の物体の奥行きや幅等を検出する分離検出処理を行う。分離検出部512は、高さが比較的低い物体の場合、同一の物体を、複数の物体領域に分離して検出する場合がある。
統合検出部513は、Real U-Disparityマップを、例えば画素を間引くことにより縮小したスモールリアルUマップを低解像マップの一例として用いて、車両等の物体の奥行きや幅等を検出する統合検出処理を行う。スモールリアルUマップは、リアルUマップよりも画素数が少ないため、分解能が低いと言える。なお、統合検出部513は、U-Disparityマップを縮小したマップを用いて検出を行ってもよい。統合検出部513は、分解能が比較的低いスモールリアルUマップを用いるため、複数の物体を同一の物体として検出する場合がある。
このように、高解像マップを基本として物体検出に用い、より分離性能の高い高位置マップおよびより同一物体を統合的に検出可能な低解像マップをあわせて用いることで、物体の検出性能を高めることができる。
選択部514は、基本検出部511、分離検出部512、および統合検出部513により検出された物体のうち、棄却しない物体を選択する。ここで、棄却とは、その物体を後段の処理(追跡処理等)の対象外とする処理を示す。
枠作成部515は、選択部514により選択された物体の領域に対応する視差画像Ip(または基準画像Ia)における領域(認識領域)に枠(検出枠)を作成する。なお、ここでいう枠とは、物体の位置と大きさを示す情報としての物体を囲む矩形の情報であり、例えば当該矩形の角の座標と当該矩形の高さおよび幅の情報である。
背景検出部516は、枠作成部515により作成された検出枠内に、当該検出枠に対応する物体の背景を検出する。
棄却部517は、背景検出部516により、所定の条件を満たす背景が検出された検出枠に対応する物体を棄却する。なお、背景検出およびこれに基づく棄却は、行う方が好ましいが、必ずしも行う必要はない。
≪トラッキング部530≫
トラッキング部530は、クラスタリング処理部510により認識された物体に関する情報である認識領域情報に基づいて、その物体を追跡する処理であるトラッキング処理を実行する機能部である。ここで、認識領域情報とは、クラスタリング処理部510により認識された物体に関する情報を示し、例えば、認識した物体のV-Disparityマップ、U-Disparityマップ、およびReal U-Disparityマップ等における位置および大きさ、後述するラベリング処理の識別番号、ならびに、棄却フラグ等の情報を含む。
<処理>
次に、図9を参照し、クラスタリング処理部510の処理について説明する。図9は、クラスタリング処理部510の処理の一例を示すフローチャートである。
ステップS11において、クラスタリング処理部510の基本検出部511は、リアルUマップRMから物体の領域を検出する基本検出処理を行う。基本検出処理では、リアルUマップRM上の視差点の塊が検出される。
リアルUマップRMは、画素数が比較的多いため、距離の分解能が比較的高く、路面より上方に位置する物体の視差情報を利用している。そのため、基本検出処理では、比較的安定した精度で物体領域が検出される。しかしながら、VマップVMに基づいて推定された路面が、実際の路面より低い場合、または検出対象の物体による視差点の数が少ない等の場合は、物体領域の検出精度が低下する。なお、基本検出処理の詳細は後述する。
続いて、クラスタリング処理部510の分離検出部512は、リアルUマップRMに含まれる視差点のうち、路面からの高さが所定値以上である視差点を用いて、物体の領域を検出する分離検出処理を行う(ステップS12)。分離検出処理では、リアルUマップRMに含まれる視差点のうち、路面からの高さが所定値以上である視差点の塊が検出される。そのため、路面からの高さが比較的低い位置にある物体の部分の影響を受けないため、高さが比較的高い複数の物体が隣接している場合でも、当該複数の物体が正しく分離された物体領域を検出できる。しかしながら、高さが比較的低い物体の場合、同一の物体を、複数の物体領域に分離されて検出される場合がある。なお、分離検出処理の詳細は後述する。
続いて、クラスタリング処理部510の統合検出部513は、リアルUマップRMから画素を間引いた画像であるスモールリアルUマップを用いて、物体の領域を検出する統合検出処理を行う(ステップS13)。なお、リアルUマップRMから、1画素の幅が例えば10cm程度に対応するように画素を間引くことにより、スモールリアルUマップが作成されてもよい。また、画素を間引く際、単純にリアルUマップRMから画素を抽出してもよいし、リアルUマップRMから抽出する画素から所定範囲内の画素の値に基づいて、スモールリアルUマップにおける当該画素の値を決定してもよい。統合検出処理では、視差点数が少ない物体の場合に、同一の物体を、複数の物体領域に分離されて検出されることが比較的生じにくい。しかしながら、距離の分解能が比較的低いため、例えば複数の物体が隣接している場合に、同一の物体として検出される場合がある。なお、統合検出処理の詳細は後述する。
なお、上述した基本検出処理、分離検出処理、統合検出処理は、どのような順番で実行されてもよいし、並列に実行されてもよい。
続いて、クラスタリング処理部510の選択部514は、上述した「基本検出処理」、「分離検出処理」、「統合検出処理」により検出された物体領域のうち、枠作成部515に出力する物体領域を選択する(ステップS14)。なお、枠作成部515に出力する物体領域を選択する処理の詳細は後述する。
続いて、クラスタリング処理部510の枠作成部515は、選択部514により選択された物体領域に応じた検出枠を作成する(ステップS15)。図10は、検出枠を作成する処理を説明する図である。物体領域検出処理により検出され、路面領域棄却処理により棄却されていない物体領域を用いて、図10に示すように、視差画像Ip(または基準画像Ia)における物体領域に対応する領域(認識領域)に枠を作成する。
続いて、クラスタリング処理部510の背景検出部516は、作成された検出枠のうち、「統合検出処理」により検出された物体領域に対応する検出枠における背景を検出する(ステップS16)。なお、検出枠における背景を検出する処理の詳細は後述する。
続いて、クラスタリング処理部510の棄却部517は、棄却処理を行う(ステップS17)。なお、棄却処理の詳細は後述する。
≪基本検出処理≫
次に、図11を参照し、基本検出部511によるステップS11の基本検出処理について説明する。図11は、基本検出処理の一例を示すフローチャートである。
ステップS201において、基本検出部511は、リアルUマップRMにおいて、画素値(視差の頻度)が所定値以上である画素である視差点について、縦、横、または斜め方向に連続している画素に同一のIDを付与する8近傍ラベリング処理を行う。なお、ラベリング処理としては公知のものが利用できる。
続いて、基本検出部511は、同一のIDが付与された各画素群(各孤立領域)に外接する矩形をそれぞれ設定する(ステップS202)。
続いて、基本検出部511は、当該各矩形のサイズが所定値以下のものを棄却する(ステップS203)。矩形のサイズが所定値以下のものは、ノイズと判断できるためである。また、当該各矩形のエリアに対するリアルUマップRMのエリアにおける画素値(視差の頻度)の例えば平均値が所定値よりも小さい矩形についても棄却してもよい。
これにより、各孤立領域に外接する矩形が、物体領域として検出される。
なお、基本検出処理は、視差画像に基づいて物体を示す領域が検出できればよく、公知技術を用いて実行されてもよい。
≪分離検出処理≫
次に、分離検出部512によるステップS12の分離検出処理について説明する。分離検出処理は、リアルUマップRMに含まれる全ての視差点を用いる代わりに、リアルUマップRMに含まれる視差点のうち、路面からの高さが所定値以上である視差点を用いる点が、上述した「基本検出処理」と大きく異なる。その他の点は、上述した「基本検出処理」と同様でもよい。なお、「分離検出処理」において、ステップS201の8近傍ラベリング処理を行う際、リアルUマップRMにおける横方向の所定値(例えば1画素分)以下の視差点の途切れは、ノイズによるものである可能性があるため、連続しているとみなしてもよい。
≪統合検出処理≫
次に、図12を参照し、統合検出部513によるステップS13の統合検出処理について説明する。図12は、統合検出処理の一例を示すフローチャートである。
ステップS301において、統合検出部513は、スモールリアルUマップ上で、縦方向(奥行き方向)または横方向(水平方向)に連続している画素(視差点)に同一のIDを付与する4近傍ラベリング処理を行う。なお、上記処理では、8近傍ラベリング処理を用いてもよい。
続いて、統合検出部513は、同一のIDが付与された各画素群(各孤立領域)に外接する矩形をそれぞれ設定する(ステップS302)。
続いて、統合検出部513は、車両等の物体を抽出する(ステップS303)。統合検出部513は、各孤立領域の幅、奥行き、視差の頻度等に基づき、車両等の物体の領域を抽出する。これにより、各孤立領域に外接する矩形が、物体領域として検出される。
≪選択処理≫
次に、図13を参照し、選択部514によるステップS14の枠作成部515に出力する物体領域を選択する処理について説明する。図13は、出力する物体領域を選択する処理の一例を示すフローチャートである。
ステップS401において、選択部514は、統合検出処理により検出された物体領域のうち、自車両が走行している車線上に存在しない物体領域を棄却する。例えば、選択部514は、物体領域の位置が、自車両の前方方向から所定の範囲外である場合、当該物体領域を棄却する。これにより、自車両の進行を妨げる可能性がある物体については、統合検出処理により検出された物体領域が出力される。
なお、自車両からの距離が比較的遠い遠方においては、物体領域の位置を検出する精度が下がる。そのため、当該所定の範囲は、自車両からの距離に応じて、比較的広い範囲に設定されてもよい。
続いて、選択部514は、統合検出処理により検出された物体領域と、基本検出処理により検出された一の物体領域とが、リアルUマップRMにおいて一定程度重なっているか否かを判定する(ステップS402)。例えば、統合検出処理により検出された物体領域と、基本検出処理により検出された物体領域とが、リアルUマップRMにおいて重なっている領域の面積を、基本検出処理により検出された物体領域の面積で除算した値が、所定の閾値以上である場合に、一定程度重なっていると判定される。
一定程度重なっている場合(ステップS402でYES)、選択部514は、基本検出処理の結果の物体領域と比較して、統合検出処理の結果の物体領域の大きさが小さいか否かを判定する(ステップS403)。小さい場合(ステップS403でYES)、基本検出処理により検出された物体領域と、分離検出処理により検出された物体領域を枠作成部515に出力し(ステップS404)、処理を終了する。すなわち、同一物体を示す情報として互いに紐付けられた状態で、包括する検出結果として基本検出処理の結果を、部分的な検出結果として分離検出処理の結果を、それぞれ出力する。基本検出処理の結果の物体領域と比較して統合検出処理の結果の物体領域の大きさが小さい場合は、統合検出処理の結果が誤っている可能性が高いため、一の物体を示す情報としては基本検出処理の結果が、複数の物体を示す情報としては分離検出処理の結果が、それぞれ最も信頼がおけると考えられるからである。
小さくない場合(ステップS403でNO)、選択部514は、基本検出処理により検出された当該一の物体領域に、分離検出処理により検出された複数の物体領域が存在するか否かを判定する(ステップS405)。
複数存在する場合(ステップS405でYES)、選択部514は、統合検出処理により検出された物体領域と、分離検出処理により検出された当該複数の物体領域を枠作成部515に出力し(ステップS406)、処理を終了する。すなわち、同一物体を示す情報として互いに紐付けられた状態で、包括する検出結果として統合検出処理の結果を、部分的な検出結果として分離検出処理の結果を、それぞれ出力する。基本検出処理により検出された一の物体領域に、分離検出処理により検出された複数の物体領域が存在する場合は、一の物体を示す情報としては統合検出処理の結果が、複数の物体を示す情報としては分離検出処理の結果が、それぞれ最も信頼がおけると考えられるからである。
複数存在しない場合(ステップS405でNO)、選択部514は、統合検出処理により検出された物体領域と、基本検出処理により検出された当該一の物体領域を枠作成部515に出力し(ステップS407)、処理を終了する。すなわち、同一物体を示す情報として互いに紐付けられた状態で、包括する検出結果として統合検出処理の結果を、部分的な検出結果として基本検出処理の結果を、それぞれ出力する。基本検出処理により検出された一の物体領域に、分離検出処理により検出された複数の物体領域が存在しない場合は、基本検出処理の結果と分離検出処理の結果が同等に扱えることから、一の物体を示す情報としては統合検出処理の結果が、複数の物体を示す情報としては基本検出処理の結果が、それぞれ最も信頼がおけると考えられるからである。
一定程度重なっていない場合(ステップS402でNO)、選択部514は、統合検出処理により検出された物体領域のみを枠作成部515に出力し(ステップS408)、処理を終了する。すなわち、同一物体を示す情報として互いに紐付けられた状態で、包括する検出結果として統合検出処理の結果を、部分的な検出結果としては検出されなかったという結果を、それぞれ出力する。統合検出処理により検出された物体領域と、基本検出処理により検出された一の物体領域とが一定程度重なっていない場合には、ノイズの影響を受けづらい統合検出処理の結果が、物体のおよその位置を示す情報として最も信頼がおけると考えられるからである。
なお、ステップS402以降の処理は、統合検出処理により検出された各物体領域について実行される。
上述のように、互いの検出処理結果を簡単な比較により紐付けて出力するため、高精度な検出結果を比較的短時間で出力することができる。
≪検出枠における背景を検出する処理≫
次に、図14を参照し、ステップS16の検出枠における背景を検出する処理について説明する。図14は、出力する物体領域を選択する処理の一例を示すフローチャートである。
ステップS501において、背景検出部516は、視差画像Ipに作成された検出枠に対応するリアルUマップRM上の範囲を算出する。当該範囲は、当該検出枠が自車両の直進方向付近に位置する場合であれば、当該検出枠に対応する物体領域のリアルUマップRMにおける横方向の座標の左端、および当該物体領域の横方向の座標の右端との間の範囲としてもよい。または、当該範囲は、例えば、撮像部10aと撮像部10bの中心と、当該検出枠に対応するリアルUマップRM上の物体領域の視差点とを結ぶ2つの異なる直線であって、横方向に対する角度が最大となる第1の直線と、横方向に対する角度が最少となる第2の直線との間の範囲でもよい。
続いて、背景検出部516は、当該範囲における、当該検出枠に対応するリアルUマップRM上の物体領域の視差点の視差頻度の合計値を示すヒストグラム(以下で、「物体視差ヒストグラム」と称する。)を作成する(ステップS502)。
続いて、背景検出部516は、当該範囲における、当該検出枠に対応するリアルUマップRM上の物体領域よりも所定距離以上遠方の視差点の視差頻度の合計値を示すヒストグラム(以下で、「背景視差ヒストグラム」と称する。)を作成する(ステップS503)。
続いて、背景検出部516は、当該範囲において、物体視差ヒストグラムの値が第1の所定値以下であり、背景視差ヒストグラムの値が第2の所定値以上である部分が存在するか否かを判定する(ステップS504)。
当該部分が存在する場合(ステップS504でYES)、背景検出部516は、当該検出枠において背景が存在すると判定し(ステップS505)、処理を終了する。
当該部分が存在しない場合(ステップS504でNO)、背景検出部516は、当該検出枠において背景が存在しないと判定し(ステップS506)、処理を終了する。
図15は、車両等の物体領域に対する検出枠の場合の、背景検出処理について説明する図である。図15(A)における車両等の物体領域に対する検出枠701のうち、所定の高さの範囲702に存在するリアルUマップRM上の視差点のみを用いてもよい。この場合、物体視差ヒストグラム705は、図15(B)に示すように、車両等の両端703、704付近に対応する部分で視差頻度の合計値が大きくなる。また、この場合、車両等の物体に遮られて、当該車両等の物体よりも遠方の物体は撮影されないため、背景視差ヒストグラム706は、図15(C)に示すように、視差頻度の合計値の値がほぼ存在しない。この場合、ステップS506で、当該検出枠において背景が存在しないと判定される。
図16は、歩行者等の二つのグループが結合されている物体領域に対する検出枠の場合の、背景検出処理について説明する図である。図15の場合と同様に、図16(A)における物体領域に対する検出枠711のうち、所定の高さの範囲712に存在するリアルUマップRM上の視差点のみを用いてもよい。この場合、物体視差ヒストグラム717は、図16(B)に示すように、各歩行者713、714、715、716等の付近で視差頻度の合計値が大きくなる。また、この場合、各歩行者等の隙間から、当該歩行者等の物体よりも遠方の物体も撮影される。そのため、背景視差ヒストグラム718は、図16(C)に示すように、物体視差ヒストグラム717の値がほぼ存在しない部分719において、背景視差ヒストグラム718の値が所定値以上である部分720が存在する。この場合、ステップS505で、当該検出枠において背景が存在すると判定される。
≪棄却処理≫
次に、図17を参照し、ステップS17の棄却処理について説明する。図17は、棄却処理の一例を示すフローチャートである。なお、棄却処理では、ステップS14で選択された物体領域に対応する検出枠のうち、所定の条件を満たすものが棄却される。
以下では、上述したステップS16の検出枠における背景を検出する処理において、「統合検出処理」により検出された物体領域に対応する検出枠のうち、背景が存在すると判定された各検出枠が処理対象とされてもよい。
ステップS601において、棄却部517は、処理対象の検出枠内に、基本検出処理または分離検出処理により検出された複数の物体領域にそれぞれ対応する複数の検出枠が存在するか否かを判定する。
複数の検出枠が存在しない場合(ステップS601でNO)、処理を終了する。
複数の検出枠が存在する場合(ステップS601でYES)、棄却部517は、当該複数の検出枠の間の部分において、背景が存在するか否かを判定する(ステップS602)。ここで、上述した検出枠における背景を検出する処理と同様、当該部分において背景視差ヒストグラムの値が所定値以上の場合、背景が存在すると判定される。
背景が存在しない場合(ステップS602でNO)、処理を終了する。
背景が存在する場合(ステップS602でYES)、棄却部517は、処理対象の検出枠を棄却する(ステップS603)。
図18は、背景情報に基づく棄却処理について説明する図である。図18(A)の例では、処理対象の検出枠751の中に、基本検出処理により検出された一の物体領域に対応する検出枠752が存在する。図18(A)のように、処理対象の検出枠751の中に、複数の検出枠が存在しない場合、処理対象の検出枠751は棄却されない。
図18(B)の例では、処理対象の検出枠761の中に、基本検出処理または分離検出処理により検出された複数の物体領域にそれぞれ対応する複数の検出枠762、763が存在する。ここで、検出枠762、763の間の部分764において、上述した検出枠における背景を検出する処理と同様に、当該部分において、背景視差ヒストグラムの値が所定値以上の場合、背景が存在すると判定される。
図18(B)のように、基本検出処理によっても、ポール等の側物765と、車両767とが、同一の物体として検出されるような場合であっても、背景検出およびこれに基づく棄却処理によれば、検出枠762、763により、それぞれ別の物体として検出できる。
なお、棄却部517は、背景検出によらず、他の方法によって検出枠の棄却を行ってもよい。棄却部517は、ステップS14で選択された物体領域に対応する各検出枠について、例えば、図8に示す物体の種別の分類方法において、「その他」に分類された物体の領域に対応する検出枠を棄却してもよい。また、棄却部517は、ステップS14で選択された物体領域に対応する各検出枠について、他の検出枠と所定の割合以上、面積が重なっている検出枠を棄却してもよい。
<まとめ>
上述した実施の形態によれば、分離性能が比較的低い第1の検出結果と、分離性能が比較的高い第2の検出結果と、を生成し、これらを対応づける。これにより、後段の簡易な処理を行うことによって容易に物体を認識する性能を向上させることができる。また、互いに対応づけられた第1の検出結果と第2の検出結果について、所定の条件に基づいて、第1の検出結果および第2の検出結果のうちの一方を棄却する。それにより、複数の物体の各々を認識する性能を向上させることができる。
なお、距離の値(距離値)と視差値は等価に扱えることから、本実施の形態においては距離画像の一例として視差画像を用いて説明しているが、これに限られない。例えば、ステレオカメラを用いて生成した視差画像に対して、ミリ波レーダやレーザレーダ等の検出装置を用いて生成した距離情報を統合して、距離画像を生成してもよい。また、ステレオカメラと、ミリ波レーダやレーザレーダ等の検出装置を併用し、上述したステレオカメラによる物体の検出結果と組み合わせることにより、検出の精度をさらに高める構成としてもよい。
上述した実施の形態におけるシステム構成は一例であり、用途や目的に応じて様々なシステム構成例があることは言うまでもない。また、上述した各実施の形態の一部または全部を組み合わせることも可能である。
例えば、物体認識装置1の視差値演算処理部300、第2生成部500、クラスタリング処理部510、トラッキング部530等の各機能部の少なくとも一部の処理を行う機能部は、1以上のコンピュータにより構成されるクラウドコンピューティングにより実現されていてもよい。
また、上述の実施の形態では、物体認識装置1が車両70としての自動車に搭載される例について説明したが、これに限定されるものではない。例えば、他の車両の一例としてバイク、自転車、車椅子または農業用の耕運機等の車両に搭載されるものとしてもよい。また、移動体の一例としての車両だけでなく、ロボット等の移動体に搭載されるものとしてもよい。
また、上述の実施の形態において、物体認識装置1の視差値導出部3および認識処理部5の各機能部の少なくともいずれかがプログラムの実行によって実現される場合、そのプログラムは、ROM等に予め組み込まれて提供される。また、上述の実施の形態に係る物体認識装置1で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)、CD-R、DVD等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。また、上述の実施の形態の物体認識装置1で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述の実施の形態の物体認識装置1で実行されるプログラムを、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、上述の実施の形態の物体認識装置1で実行されるプログラムは、上述した各機能部のうち少なくともいずれかを含むモジュール構成となっており、実際のハードウェアとしてはCPU52(CPU32)が上述のROM53(ROM33)からプログラムを読み出して実行することにより、上述の各機能部が主記憶装置(RAM54(RAM34)等)上にロードされて生成されるようになっている。
[第2の実施の形態]
図19は、第2の実施の形態の機器制御システム1100の概略構成を示す模式図である。図19に示すように、機器制御システム1100は、機器(移動体)の一例である自動車等の車両1101に設けられる。機器制御システム1100は、撮像ユニット1102、解析ユニット1103、制御ユニット1104および表示部1105を有している。
撮像ユニット1102は、移動体の一例としての車両1101のフロントガラス1106のルームミラー付近に設けられ、車両1101の例えば進行方向等の画像を撮像する。撮像ユニット1102の撮像動作で得られる画像データを含む各種データは、解析ユニット1103に供給される。解析ユニット1103は、撮像ユニット1102から供給される各種データに基づいて、車両1101が走行中の路面、車両1101の前方車両、歩行者、障害物等の認識対象物を解析する。制御ユニット1104は、解析ユニット1103の解析結果に基づいて、表示部1105を介して、車両1101の運転者へ警告等を行う。また、制御ユニット1104は、解析結果に基づいて、各種車載機器の制御、車両1101のハンドル制御またはブレーキ制御等の走行支援を行う。なお、以下、機器の一例として車両について説明するが、本実施の形態の機器制御システムは、船舶、航空機、ロボット等にも適用可能である。
図20は、撮像ユニット1102および解析ユニット1103の概略的なブロック図である。この例では、解析ユニット1103は「情報処理装置」として機能し、撮像ユニット1102および解析ユニット1103の組は「撮像装置」として機能する。なお、上述の制御ユニット1104は、「制御部」として機能し、撮像装置の出力結果に基づいて機器(この例では車両1101)を制御する。撮像ユニット1102は、左目用となる第1のカメラ部1Aと、右目用となる第2のカメラ部1Bとの、2台のカメラ部が平行に組み付けられて構成されている。つまり、撮像ユニット1102は、ステレオ画像を撮像するステレオカメラとして構成されている。ステレオ画像とは、複数の視点ごとの撮像で得られる複数の撮像画像(複数の視点と1対1に対応する複数の撮像画像)を含む画像であり、撮像ユニット1102は、このステレオ画像を撮像するための装置である(「撮像部」として機能する)。各カメラ部1Aおよび1Bは、それぞれ撮像レンズ5A,5B、画像センサ6A,6B、センサコントローラ7A,7Bを備えている。画像センサ6A,6Bは、例えばCCDイメージセンサまたはCMOSイメージセンサとなっている。
解析ユニット1103は、データバスライン10、シリアルバスライン11、CPU15、FPGA16、ROM17、RAM18、シリアルIF19、およびデータIF20を有している。
上述の撮像ユニット1102は、データバスライン10およびシリアルバスライン11を介して解析ユニット1103と接続されている。CPU15は、解析ユニット1103全体の動作、画像処理、および画像認識処理を実行制御する。第1のカメラ部1Aおよび第2のカメラ部1Bの画像センサ6A,6Bで撮像された撮像画像の輝度画像データは、データバスライン10を介して解析ユニット1103のRAM18に書き込まれる。CPU15またはFPGA16からのセンサ露光値の変更制御データ、画像読み出しパラメータの変更制御データ、および各種設定データ等は、シリアルバスライン11を介して送受信される。
FPGA16は、RAM18に保存された画像データに対してリアルタイム性が要求される処理である。FPGA16は、第1のカメラ部1Aおよび第2のカメラ部1Bでそれぞれ撮像された輝度画像データ(撮像画像)のうち、一方を基準画像とすると共に他方を比較画像とする。そして、FPGA16は、撮像領域内の同一地点に対応する基準画像上の対応画像部分と比較画像上の対応画像部分との位置ズレ量を、対応画像部分の視差値(視差画像データ)として算出する。
図21に、XZ平面上における被写体40と、第1のカメラ部1Aの撮像レンズ5Aと、第2のカメラ部1Bの撮像レンズ5Bとの位置関係を示す。この図21において、各撮像レンズ5A、5Bの間の距離bおよび各撮像レンズ5A、5Bの焦点距離fは、それぞれ固定値である。また、被写体40の注視点Pに対する撮像レンズ5AのX座標のズレ量をΔ1とする。また、被写体40の注視点Pに対する撮像レンズ5BのX座標のズレ量をΔ2とする。この場合において、FPGA16は、被写体40の注視点Pに対する各撮像レンズ5A、5BのX座標の差である視差値dを、以下の式1で算出する。
解析ユニット1103のFPGA16は、撮像ユニット1102から供給される輝度画像データに対して、例えばガンマ補正処理および歪み補正処理(左右の撮像画像の平行化)等のリアルタイム性が要求される処理を施す。また、FPGA16は、このようなリアルタイム性が要求される処理を施した輝度画像データを用いて上述の式1の演算を行うことで、視差画像データを生成し、RAM18に書き込む。
図20に戻って説明を続ける。CPU15は、撮像ユニット1102の各センサコントローラ7A,7Bの制御、および解析ユニット1103の全体的な制御を行う。また、ROM17には、後述する状況認識、予測、立体物認識等を実行するための立体物認識プログラムが記憶されている。立体物認識プログラムは、画像処理プログラムの一例である。CPU15は、データIF20を介して、例えば自車両のCAN情報(車速、加速度、舵角、ヨーレート等)をパラメータとして取得する。そして、CPU15は、ROM17に記憶されている立体物認識プログラムに従って、RAM18に記憶されている輝度画像および視差画像を用いて、状況認識等の各種処理を実行制御することで、例えば先行車両等の認識対象の認識を行う。
認識対象の認識データは、シリアルIF19を介して、制御ユニット1104へ供給される。制御ユニット1104は、認識対象の認識データを用いて自車両のブレーキ制御や自車両の速度制御等の走行支援を行う。
図22は、解析ユニット1103が有する機能を概略的に説明するための図である。ステレオカメラを構成する撮像ユニット1102で撮像されるステレオ画像は解析ユニット1103へ供給される。例えば第1のカメラ部1Aおよび第2のカメラ部1Bがカラー仕様の場合、第1のカメラ部1Aおよび第2のカメラ部1Bの各々は、以下の式2の演算を行うことで、RGB(赤緑青)の各信号から輝度(y)信号を生成するカラー輝度変換処理を行う。第1のカメラ部1Aおよび第2のカメラ部1Bの各々は、カラー輝度変換処理により生成した輝度画像データ(撮像画像)を、解析ユニット1103が有する前処理部1111へ供給する。第1のカメラ部1Aで撮像された輝度画像データ(撮像画像)と、第2のカメラ部1Bで撮像された輝度画像データ(撮像画像)との組がステレオ画像であると考えることができる。この例では、前処理部1111は、FPGA16により実現される。
前処理部1111は、第1のカメラ部1Aおよび第2のカメラ部1Bから受け取った輝度画像データの前処理を行う。この例では、前処理としてガンマ補正処理を行う。そして、前処理部1111は、前処理を行った後の輝度画像データを平行化画像生成部1112へ供給する。
平行化画像生成部1112は、前処理部1111から供給された輝度画像データに対して、平行化処理(歪み補正処理)を施す。この平行化処理は、第1のカメラ部1A、第2のカメラ部1Bから出力される輝度画像データを、2つのピンホールカメラが平行に取り付けられたときに得られる理想的な平行化ステレオ画像に変換する処理である。具体的には、各画素の歪み量を、Δx=f(x、y)、Δy=g(x、y)という多項式を用いて計算した計算結果を用いて、第1のカメラ部1A、第2のカメラ部1Bから出力される輝度画像データの各画素を変換する。多項式は、例えば、x(画像の横方向位置)、y(画像の縦方向位置)に関する5次多項式に基づく。これにより、第1のカメラ部1A、第2のカメラ部1Bの光学系の歪みを補正した平行な輝度画像を得ることができる。この例では、平行化画像生成部1112は、FPGA16により実現される。
視差画像生成部1113は、「距離画像生成部」の一例であり、撮像ユニット1102により撮像されたステレオ画像から、画素毎に距離情報を備えた距離画像の一例である、画素毎に視差値を備えた視差画像を生成する。ここでは、視差画像生成部1113は、第1のカメラ部1Aの輝度画像データを基準画像データとし、第2のカメラ部1Bの輝度画像データを比較画像データとし、上述の式1に示す演算を行うことで、基準画像データと比較画像データの視差を示す視差画像データを生成する。具体的には、視差画像生成部1113は、基準画像データの所定の「行」について、一つの注目画素を中心とした複数画素(例えば16画素×1画素)からなるブロックを定義する。一方、比較画像データにおける同じ「行」において、定義した基準画像データのブロックと同じサイズのブロックを1画素ずつ横ライン方向(X方向)へズラす。そして、視差画像生成部1113は、基準画像データにおいて定義したブロックの画素値の特徴を示す特徴量と比較画像データにおける各ブロックの画素値の特徴を示す特徴量との相関を示す相関値を、それぞれ算出する。なお、ここでいう視差画像は、縦方向位置と横方向位置と奥行き方向位置(視差)とが対応づけられた情報を意味する。
また、視差画像生成部1113は、算出した相関値に基づき、比較画像データにおける各ブロックの中で最も基準画像データのブロックと相関があった比較画像データのブロックを選定するマッチング処理を行う。その後、基準画像データのブロックの注目画素と、マッチング処理で選定された比較画像データのブロックの対応画素との位置ズレ量を視差値dとして算出する。このような視差値dを算出する処理を基準画像データの全域または特定の一領域について行うことで、視差画像データを得る。なお、視差画像の生成方法としては、公知の様々な技術を利用可能である。要するに、視差画像生成部1113は、ステレオカメラで撮像されるステレオ画像から、画素毎に距離情報を有する距離画像(この例では視差画像)を算出(生成)していると考えることができる。
マッチング処理に用いるブロックの特徴量としては、例えばブロック内の各画素の値(輝度値)を用いることができる。また、相関値としては、例えば基準画像データのブロック内の各画素の値(輝度値)と、これらの画素にそれぞれ対応する比較画像データのブロック内の各画素の値(輝度値)との差分の絶対値の総和を用いることができる。この場合、当該総和が最も小さくなるブロックが、最も相関があるブロックとして検出される。
このような視差画像生成部1113のマッチング処理としては、例えばSSD(Sum of Squared Difference)、ZSSD(Zero-mean Sum of Squared Difference)、SAD(Sum of Absolute Difference)、または、ZSAD(Zero-mean Sum of Absolute Difference)等の手法を用いることができる。なお、マッチング処理において、1画素未満のサブピクセルレベルの視差値が必要な場合は、推定値を用いる。推定値の推定手法としては、例えば等角直線方式または二次曲線方式等を用いることができる。ただし、推定したサブピクセルレベルの視差値には誤差が発生する。このため、推定誤差を減少させるEEC(推定誤差補正)等の手法を用いてもよい。
この例では、視差画像生成部1113は、FPGA16により実現される。視差画像生成部1113により生成された視差画像は、物体検出処理部1114へ供給される。この例では、物体検出処理部1114の機能は、CPU15が立体物認識プログラムを実行することにより実現される。
図23は、物体検出処理部1114が有する機能の一例を示す図である。図23に示すように、物体検出処理部1114は、取得部1121、路面検出処理部1122、クラスタリング処理部1123、トラッキング処理部1124を有する。取得部1121は、視差画像生成部1113により生成された視差画像を取得する。取得部1121は、ステレオカメラで撮像されるステレオ画像から算出された、画素毎に距離情報を有する距離画像(この例では視差画像)を取得する機能を有していると考えることができる。取得部1121により取得された視差画像は路面検出処理部1122およびクラスタリング処理部1123へ入力される。
図24に示すように、路面検出処理部1122は、路面推定部1131と、第1の生成部1132と、第2の生成部1133と、第3の生成部1134と、を有する。路面推定部1131は、視差画像を用いて、画像の垂直方向(ステレオカメラの光軸と直交する上下方向)を示す縦方向の位置と、ステレオカメラの光軸の方向を示す奥行方向の位置とが対応付けられた対応情報を生成する。この例では、路面推定部1131は、視差画像の各画素(視差値)を、画像の垂直方向の座標(y)を縦軸、視差値dを横軸とするマップ(以下、「Vマップ(V-Disparityマップ)」と称する)に投票し、投票された視差点から所定の方法で標本点を選択し、選択された点群を直線近似(または、曲線近似)する形で路面形状を推定する。この路面推定の方法としては公知の様々な技術を利用可能である。Vマップとは、視差画像の(x座標値、y座標値、視差値d)の組のうち、X軸を視差値d、Y軸をy座標値、Z軸を頻度とした2次元ヒストグラムである。要するに、上記対応情報(この例ではVマップ)は、縦方向の位置と視差値d(奥行方向の位置に相当)との組み合わせごとに、視差の頻度値を記録した情報であると考えることもできる。路面推定部1131による推定結果(路面推定情報)は、第1の生成部1132、第2の生成部1133、第3の生成部1134、クラスタリング処理部1123へ入力される。なお、以下、第1の生成部1132、第2の生成部1133、第3の生成部1134、の3つの生成部を有するものとして説明するが、任意の2つを選択して実装してもよい。
第1の生成部1132は、視差画像のうち、路面(オブジェクトの高さの基準となる基準オブジェクトの一例)よりも高い第1の範囲内の所定値以上の高さの範囲を示す第2の範囲に対応する複数の画素に基づいて、ステレオカメラの光軸と直交する方向を示す横方向の位置と、ステレオカメラの光軸の方向を示す奥行方向の位置とが対応付けられた第1の情報を生成する。この例では、第1の情報は、横軸(X軸)を横方向の距離(実距離)、縦軸(Y軸)を視差画像の視差値d、奥行方向の軸を頻度とした2次元ヒストグラムである。第1の情報は、実距離と視差値dとの組み合わせごとに、視差の頻度値を記録した情報であると考えることもできる。以下の説明では、この第1の情報を「High Umap」と称する。視差画像の横方向の位置をx、縦方向の位置をy、画素ごとに設定される視差値をdとすると、第1の生成部1132は、視差画像のうち第2の範囲内に対応する点(x、y、d)を、(x、d)の値に基づいて投票することで、横軸を視差画像のx、縦軸を視差値d、奥行方向の軸を頻度とした2次元ヒストグラムを生成する。そして、この2次元ヒストグラムの横軸を実距離に変換して、High Umapを生成する。なお、High Umapの縦軸は、奥行き方向の位置を表すと考えてもよい(視差値dが小さいほど奥行き方向の距離は大きいことを表す)。
ここで、上述の路面推定部1131の路面推定により、路面を表す直線式が得られているため、視差値dが決まれば、対応するy座標y0が決まり、この座標y0が路面の高さとなる。例えば視差値がdでy座標がy’である場合、y’-y0が視差値dのときの路面からの高さを示す。上述の座標(d,y’)の路面からの高さHは、H=(z×(y’-y0))/fという演算式で求めることができる。なお、この演算式における「z」は、視差値dから計算される距離(z=BF/(d-offset))、「f」は撮像ユニット1102の焦点距離を(y’-y0)の単位と同じ単位に変換した値である。ここで、BFは、撮像ユニット1102の基線長Bと焦点距離fを乗じた値、offsetは無限遠のオブジェクトを撮影したときの視差である。
例えば図25に示す撮像画像においては、大人と子供を含む人グループG1と、大人同士の人グループG2と、ポールと、車両とが映り込んでいる。この例では、路面からの実高さが150cm~200cmの範囲が第2の範囲として設定され、該第2の範囲の視差値dが投票されたHigh Umapは図26のようになる。高さが150cm未満の子供の視差値dは投票されないためマップ上に現れないことになる。なお、縦軸は、距離に応じた間引き率を用いて視差値dを間引き処理した間引き視差となっている。第1の生成部1132により生成されたHigh Umapはクラスタリング処理部1123に入力される。
図24の説明を続ける。第2の生成部1133は、視差画像のうち第1の範囲に対応する複数の画素に基づいて、ステレオカメラの横方向の位置と、奥行方向とが対応付けられた第2の情報を生成する。以下の説明では、この第2の情報を「Standard Umap」と称する。視差画像の横方向の位置をx、縦方向の位置をy、画素ごとに設定される視差値をdとすると、第2の生成部1133は、視差画像のうち第1の範囲内に対応する点(x、y、d)を、(x、d)の値に基づいて投票することで、横軸を視差画像のx、縦軸を視差値d、奥行方向の軸を頻度とした2次元ヒストグラムを生成する。そして、この2次元ヒストグラムの横軸を実距離に変換して、Standard Umapを生成する。なお、Standard Umapの縦軸は、奥行き方向の位置を表すと考えてもよい。図25の例では、0cm~200cmの範囲(上述の第2の範囲を含んでいる)が第1の範囲として設定され、該第1の範囲の視差値dが投票されたStandard Umapは図27のようになる。また、第2の生成部1133は、Standard Umapと併せて、Standard Umapに投票される視差点(実距離と視差値dとの組)のうち、路面からの高さ(H)が最も高い視差点の高さを記録して、横軸を実距離(カメラの左右方向の距離)、縦軸を視差値dとし、対応する点ごとに高さが記録された高さ情報を生成する。高さ情報は、実距離と視差値dとの組み合わせごとに高さを記録した情報であると考えてもよい。第2の生成部1133により生成されたStandard Umapはクラスタリング処理部1123に入力される。
図24の説明を続ける。第3の生成部1134は、視差画像のうち、路面よりも高い範囲に存在し、かつ、第1の情報や第2の情報を作成する場合よりも少ない数の複数の画素を用いて、ステレオカメラの横方向の位置と、奥行方向の位置とが対応付けられた第3の情報を生成する。この例では、第3の情報は、横軸を横方向の距離(実距離)、縦軸を視差画像の視差値d、奥行き方向の軸を頻度とした2次元ヒストグラムである。第3の情報は、実距離と視差値dとの組み合わせごとに、視差の頻度値を記録した情報であると考えることもできる。以下の説明では、この第3の情報を「Small Umap」と称する。視差画像の横方向の位置をx、縦方向の位置をy、画素ごとに設定される視差値をdとすると、第3の生成部1134は、視差画像のうち第1の範囲内に対応する点(x、y、d)を、(x、d)の値に基づいて投票(Standard Umapを作成する場合よりも少ない数を投票)することで、横軸を視差画像のx、縦軸を視差値d、奥行方向の軸を頻度とした2次元ヒストグラムを生成する。そして、この2次元ヒストグラムの横軸を実距離に変換して、Small Umapを生成する。なお、Small Umapの縦軸は、奥行き方向の位置を表すと考えてもよい。Small Umapは、Standard Umapと比較して1画素の距離分解能が低い。また、第3の生成部1134は、Small Umapと併せて、Small Umapに投票される視差点(実距離と視差値dとの組)のうち、路面からの高さ(H)が最も高い視差点の高さを記録して、横軸を実距離(カメラの左右方向の距離)、縦軸を視差値dとし、対応する点ごとに高さが記録された高さ情報を生成する。高さ情報は、実距離と視差値dとの組み合わせごとに高さを記録した情報であると考えてもよい。第3の生成部1134により生成されたSmall Umapはクラスタリング処理部1123に入力される。
なお、以下の説明では、Standard Umap、High Umap、Small Umapを互いに区別しない場合は「リアルUマップ」と称する。リアルUマップは、横軸がステレオカメラの光軸に対して垂直方向(カメラの左右方向)、縦軸がステレオカメラの光軸方向の俯瞰マップ(俯瞰画像、鳥瞰画像)であると捉えることもできる。
図23に戻って説明を続ける。クラスタリング処理部1123は、路面検出処理部1122から受け取った各種の情報を用いて、取得部1121により取得された視差画像上の物体位置を検出する。図28は、クラスタリング処理部1123の詳細な機能の一例を示す図である。図28に示すように、クラスタリング処理部1123は、孤立領域検出処理部1140、視差画処理部1150、棄却処理部1160を有する。
孤立領域検出処理部1140は、路面検出処理部1122から受け取った各リアルUマップ(High Umap、Standard Umap、Small Umap)から、視差値dの塊の領域である孤立領域(集合領域)を検出する孤立領域検出処理を行う。孤立領域検出処理部1140の具体的な内容については後述する。
例えば図29に示す撮像画像の場合、左右にガードレール81、82があり、車両77および車両79がセンターラインを挟んで対面通行をしている。各走行車線には、それぞれ1台の車両77または車両79が走行している。車両79とガードレール82との間には2本のポール80A,80Bが存在している。図30は、図29に示す撮像画像に基づいて得られたリアルUマップであり、枠で囲まれた領域が孤立領域に相当する。
視差画処理部1150は、孤立領域検出処理部1140により検出されたリアルUマップ上の孤立領域に対応する視差画像上の領域や実空間での物体情報を検出する視差画処理を行う。図31は、図30に示す孤立領域に対応する視差画像上の領域(視差画処理部1150による処理の結果)を示す図であり、図31の領域91はガードレール81に対応する領域であり、領域92は車両77に対応する領域であり、領域93は車両79に対応する領域であり、領域94はポール80Aに対応する領域であり、領域95はポール80Bに対応する領域であり、領域96はガードレール82に対応する領域である。
棄却処理部1160は、視差画処理部1150により検出された視差画像上の領域や実空間での物体情報に基づき、出力すべきオブジェクトを選別する棄却処理を行う。棄却処理部1160は、物体のサイズに着目したサイズ棄却と、物体同士の位置関係に着目したオーバラップ棄却とを実行する。例えばサイズ棄却では、前述した図8に示す物体タイプごとに定められたサイズ範囲に当てはまらないサイズの検出結果を棄却する。図32の例では、領域91および領域96は棄却されている。また、オーバラップ棄却では、視差画処理により検出された、視差画像上の孤立領域(リアルUマップ上の検出結果)に対応する領域同士に対し、重なりを持つ結果の取捨選択を行う。
図33は、クラスタリング処理部1123による処理の一例を示すフローチャートである。この例では、Standard Umap、High Umap、Small Umap、視差画像、路面推定情報、高さ情報が入力情報として入力され、視差画像上の検出結果が出力情報として出力される。まず孤立領域検出処理部1140は孤立領域検出処理を行う(ステップS1001)。この孤立領域検出処理の具体的な内容については後述する。次に、視差画処理部1150は、視差画処理を行う(ステップS1002)。そして、棄却処理部1160は、ステップS1002の視差画処理の結果を用いて棄却処理を行い(ステップS1003)、最終的な視差画像上の検出結果を出力情報として出力する。
なお、クラスタリング処理部1123からの出力情報(検出結果)は図23に示すトラッキング処理部1124に入力される。トラッキング処理部1124は、クラスタリング処理部1123による検出結果(検出された物体)が複数のフレームにわたって連続して出現する場合に追跡対象であると判定し、追跡対象である場合には、その検出結果を物体検出結果として制御ユニット1104へ出力する。
次に、図28に示す孤立領域検出処理部1140の具体的な内容を説明する。図28に示すように、孤立領域検出処理部1140は、第1の検出部1141、第2の検出部1142、第3の検出部1143、最終判断処理部1144を含む。
第1の検出部1141は、High Umap(第1の情報)から、視差値d(距離情報の一例)の集合領域を検出する。以下の説明では、第1の検出部1141による検出処理を「分離検出処理」と称し、その処理結果を「分離検出結果(検出された集合領域を含む)」と称する。High Umapは、Standard Umapと比較して、高さの低い領域に存在する物体の影響を受けにくいため、分離性能に優れた検出である。ただし、路面から高い領域で視差が出ていない物体に対しては誤分離検出になり易い。具体的な処理内容については後述する。
第2の検出部1142は、Standard Umap(第2の情報)から集合領域を検出する。以下の説明では、第2の検出部1142による検出処理を「基本検出処理」と称し、その処理結果を「基本検出結果(検出された集合領域を含む)」と称する。上記分離検出結果は、基本検出結果に付随する(基本検出結果に含まれる)ことになる。Standard Umapは1画素の距離分解能が高いことや路面の低い位置から高い位置までを検出範囲とするので、検出範囲全体で安定した検出が期待できる。ただし、路面推定により実際の路面よりも推定路面が低く検出された場合や検出対象の視差が少なかったりすると、Standard Umapの特徴から誤検出が発生し易い。具体的な処理内容については後述する。
さらに、第3の検出部1143は、Small Umap(第3の情報)から集合領域を検出する。以下の説明では、第3の検出部1143による検出処理を「統合用検出処理」と称し、その処理結果を「統合検出結果(検出された集合領域を含む)」と称する。Small UmapはStandard Umapと比較して1画素の分解能が低いため、視差が出にくい物体に対しても誤分離となりにくいという特徴を持つ。ただし、分離性能(分解能)が低いため、Small Umapを用いた検出処理(統合用検出処理)では、物体同士が結合して検出されやすい。
最終判断処理部1144は、「基本検出結果」「分離検出結果」「統合検出結果」の3つを入力とし、出力すべき検出結果の選別、補正、検出結果同士の関係を明らかにする最終判断処理を行う。図28に示すように、最終判断処理部1144は、棄却判定処理部1145、マージ処理部1146および補正部1147を含む。棄却判定処理部1145は、統合検出結果を棄却すべきか否かを判定する棄却判定処理を行う。具体的な内容については後述する。マージ処理部1146は、「基本検出結果」およびそれに付随する「分離検出結果」と、「統合検出結果」とをマージする。具体的な内容については後述する。補正部1147は、マージ後の検出結果を補正して出力する。この補正の具体的な内容についても後述する。
図34は、孤立領域検出処理の一例を示すフローチャートである。この例では、Standard Umap、High Umap、Small Umap、高さ情報が入力情報として入力され、Standard Umap上の検出結果が出力情報として出力される。図34に示すように、第2の検出部1142は基本検出処理を行い(ステップS1011)、第1の検出部1141は分離検出処理を行い(ステップS1012)、第3の検出部1143は統合用検出処理を行う(ステップS1013)。なお、ステップS1011~ステップS1013の順序は任意であり、各ステップが並列に実行されてもよい。次に、最終判断処理部1144は最終判断処理を行う(ステップS1014)。
説明の便宜上、まず基本検出処理の具体的な内容を説明する。図35は、基本検出処理の一例を示すフローチャートである。この例では、Standard Umapが入力情報として入力される。出力情報については後述の説明で明らかになる。まず、第2の検出部1142は、Standard Umap内の視差の塊ごとにグルーピングしてIDを付与するラベリング処理を行う(ステップS1021)。具体的には、第2の検出部1142は、Standard Umapに含まれる複数の画素ごとに着目していき、着目画素、および、該着目画素の近傍に存在する画素(例えば、右方向、右斜め上方向、上方向、左斜め上方向、左方向、左斜め下方向、下方向、右斜め下方向の8つの方向と1対1に対応する8つの画素)のうち、頻度値を含む画素の画素値を「1」に設定し、頻度値を含まない画素の画素値を「0」に設定して2値化する。なお、2値化の方法はこれに限らず任意であり、例えば近傍に存在する上述の8つの画素のうち閾値以上の視差の頻度値を含む画素の画素値を「1」とし、それ以外の画素の画素値を「0」とする形態であってもよい。そして、画素値「1」の集合で形成される閉領域を視差の塊(1つのグループ)とし、該閉領域に含まれる各画素に対してIDを付与する。なお、IDは、各グループを識別可能な値に設定される。
図36は、2値化処理後の一例を示す図であり、領域2000に含まれる5つの画素の各々に対して、同一のIDが付与されることになる。
図35に戻って説明を続ける。ステップS1021の後、第2の検出部1142は、検出矩形作成処理を行う(ステップS1022)。具体的には、第2の検出部1142は、同一のIDが割り振られた画素の集合領域に外接する矩形を算出し、算出した外接矩形を検出矩形とする。次に、第2の検出部1142は、ステップS1022で作成した検出矩形のサイズをチェックするサイズチェックを行う(ステップS1023)。例えば第2の検出部1142は、ステップS1022で作成した検出矩形のサイズが、ノイズに相当するサイズとして予め定められた閾値以下の場合、該検出矩形を破棄する処理を行う(ステップS1024)。次に、第2の検出部1142は、ステップS1022で作成した検出矩形に含まれる各画素の頻度値(視差の頻度値)をチェックする頻度チェックを行う。例えば第2の検出部1142は、ステップS1022で作成した検出矩形に含まれる頻度値(視差の頻度値)の累積値が、物体を表すのに必要な数として予め定められた閾値以下の場合、該検出矩形を破棄する処理を行う。
以上の基本検出処理により、Standard Umap上の検出矩形を示す情報が出力情報として出力される。なお、Standard Umap上の検出矩形内のグルーピングされた各画素(検出された集合領域に含まれる各画素)に対しては、グループを識別するIDが割り当てられている。つまり、Standard Umap上でグルーピングされたIDのマップを示す情報(「Standard Umap上のID Umap」、他と区別しない場合は単に「ID Uマップ」と称する場合がある)が出力情報として出力されることにもなる。
次に、分離検出処理の具体的な内容を説明する。図37は、分離検出処理の一例を示すフローチャートである。この例では、Standard UmapおよびHigh Umapが入力情報として入力される。出力情報については後述の説明で明らかになる。上述したように、分離検出結果は基本検出結果に付随し、以下の処理は基本検出結果数分だけ繰り返される。第1の検出部1141は、着目した基本検出結果に付随する1以上の分離検出結果ごとに、該分離検出結果を含む関心領域を設定し、その設定した関心領域に対してラベリング処理を行う(ステップS1031)。このラベリング処理の具体的な内容は上述したとおりである。次に、第1の検出部1141は、ステップS1031のラベリング処理によって同一のIDが割り振られた画素の集合領域ごとに、該集合領域に外接する矩形を算出する検出矩形作成処理を行う(ステップS1032)。
次に、第1の検出部1141は、ステップS1032で作成した検出矩形ごとにサイズチェック処理を行う(ステップS1033)。サイズチェック処理の具体的な内容は上述したとおりである。次に、第1の検出部1141は、頻度チェック処理を行う(ステップS1034)。頻度チェック処理の具体的な内容は上述したとおりである。以上の処理が、全ての基本検出結果について完了していない場合(基本検出結果の数分のループ処理が終了していない場合)は、ステップS1031以降の処理が繰り返される。つまり、第1の検出部1141は、以上に説明した処理を基本検出結果の数だけ繰り返す。
以上の分離検出処理により、High Umap上の検出矩形(基本検出結果に紐付くHigh Umap上の検出結果)を示す情報が出力情報として出力される。なお、High Umap上の検出矩形内のグルーピングされた各画素に対しては、グループを識別するIDが割り当てられている。つまり、High Umap上でグルーピングされたIDのマップを示す情報(「High Umap上のID Umap」、他と区別しない場合は単に「ID Uマップ」と称する場合がある)が出力情報として出力されることにもなる。
次に、統合用検出処理の具体的な内容を説明する。統合用検出処理の基本的な内容は、基本検出処理と同様である。図38は、統合用検出処理の一例を示すフローチャートである。この例では、Small Umapおよび高さ情報が入力情報として入力される。出力情報については後述の説明で明らかになる。第3の検出部1143は、検出完了まで以下の処理を繰り返す。まず、第3の検出部1143は、Small Umap内の視差の塊ごとにグルーピングしてIDを付与するラベリング処理を行う(ステップS1041)。ラベリング処理の具体的な内容は上述したとおりである。ただし、第3の検出部1143は、Small Umapに含まれる複数の画素ごとに着目していき、着目画素、および、該着目画素の近傍に存在する画素(例えば上述の8つの画素)のうち、頻度値を含む画素の画素値を「1」に設定し、頻度値を含まない画素の画素値を「0」に設定して2値化する。なお、2値化の方法はこれに限らず任意であり、例えば近傍に存在する8つの画素のうち閾値以上の視差の頻度値を含む画素の画素値を「1」とし、それ以外の画素の画素値を「0」とする形態であってもよい。そして、画素値「1」の集合で形成される閉領域を視差の塊(1つのグループ)とし、該閉領域に含まれる各画素に対してIDを付与する。
ステップS1041の後、第3の検出部1143は、検出矩形作成処理を行う(ステップS1042)。この具体的な内容は上述したとおりである。次に、第3の検出部1143は、出力判定処理を行う(ステップS1043)。出力判定処理は、ステップS1042で作成された検出矩形(検出結果)に対して、サイズや視差の頻度値、奥行き長などの条件に合致するか否かを判断して、出力する検出結果を選別するための処理である。統合用検出処理は物体同士が結合して検出され易いので、ここでは車両と思われる特徴を持つ検出結果のみを出力することを前提とする。図39は上記条件の例を示す図表である。図39の(A)は、検出結果のサイズ(幅)に関する条件の一例を示す図表である。図39の(B)は、検出結果の奥行き長に関する条件の一例を示す図表である。図39の(B)における「最近点距離」については後述するが、予め定められた有効範囲(検出が有効な範囲)の中心から、検出結果(物体)のうち奥行き方向において該中心に最も近い点までの距離を指す。図39の(C)は、視差の頻度値に関する条件の一例を示す図表である。
以上の統合用検出処理により、Smal Umap上の検出矩形を示す情報が出力情報として出力される。なお、Small Umap上の検出矩形内のグルーピングされた各画素に対しては、グループを識別するIDが割り当てられている。つまり、Small Umap上でグルーピングされたIDのマップを示す情報(「Small Umap上のID Umap」、他と区別しない場合は単に「ID Uマップ」と称する場合がある)が出力情報として出力されることにもなる。
次に、最終判断処理部1144による最終判断処理について説明する。最終判断処理部1144は、基本検出結果、分離検出結果、統合検出結果の3つの結果を受け付け、検出結果同士の対応関係を算出し、包括枠と、該包括枠に付随する部分枠を設定する。そして、包括枠および部分枠を補正し、その中で出力対象を選択する。包括枠は、分離性能が低い処理で検出された結果が格納される。つまり、同一の物体に対してより大きいサイズを持つ枠を指す。ここでは、統合検出結果または基本検出結果が包括枠として設定される。部分枠とは、包括枠より分離性能が高い処理で検出された結果が格納される。部分枠は、包括枠と対応付けがされた検出枠(検出結果の外枠)であり、包括枠内を分離した結果となる。ここでは、基本検出結果または分離検出結果がこれに相当する。なお、ここでいう枠とは、物体の位置と大きさを示すものであり、例えば物体を囲む矩形の角の座標と高さおよび幅が対応づけられた情報である。
図40は、最終判断処理の一例を示すフローチャートである。この例では、Standard Umap、High Umap、高さ情報、基本検出結果(Standard Umap上の検出矩形)、基本検出結果に紐付く分離検出結果(High Umap上の検出矩形)、統合検出結果(Small Umap上の検出矩形)が入力情報として入力される。そして、Standard Umap上の検出結果、それに対応するID Uマップ、検出結果間の関係が記録されたIDテーブルが出力情報として出力される。
図40に示すステップS1051~ステップS1056までの処理は、統合検出結果の数だけ繰り返されることになる。まず、棄却判定処理部1145は、着目した統合検出結果の棄却判定処理を行う(ステップS1051)。以下、棄却判定処理の具体的な内容を説明する。棄却判定処理部1145は、自車線上に存在する車両サイズの条件を満たす統合検出結果のみを選択し、それ以外を棄却する棄却判定処理を行う。ここでは、Small Umap上の検出矩形(統合検出結果)を、Standard Umap上の検出矩形に変換する処理を行い、Standard Umap上に予め設定された有効範囲外の統合検出結果を棄却する。なお、これに限らず、例えば有効範囲はSmall Umap上に予め設定される形態であってもよく、Small Umap上に予め設定された有効範囲外の統合検出結果を棄却する形態であってもよい。
図41は、棄却の条件の一例を示す図である。例えば統合検出結果Aのように、有効範囲の中心と、統合検出結果のうち奥行き方向(カメラの光軸方向)において該中心に最も近い点との距離を示す「最近点距離」が閾値Z1よりも大きい場合は、有効範囲の中心と、統合検出結果の中心とのカメラ横方向(カメラの左右方向)の距離を示す「中心との距離」が、-Z2(負側の閾値)よりも大きく、かつ、Z2(正側の閾値)以下である場合に限って有効と判定され(出力候補となり)、そうでない場合は棄却される。また、例えば統合検出結果Bのように、最近点距離が閾値Z1以下である場合は、中心との距離が、-Z3(負側の閾値)よりも大きく、かつ、Z3(正側の閾値)以下である場合に限って有効と判定され、そうでない場合は棄却される。
以上の棄却判定処理により統合検出結果が有効であると判定されると、図40のステップS1052の結果は肯定となり、基本検出結果の数だけステップS1053~ステップS1056の処理が繰り返される。一方、ステップS1052の結果が否定の場合は、着目した統合検出結果に対する処理は終了となり、残りの統合検出結果の数分のループ処理を繰り返すことになる。
ステップS1053において、マージ処理部1146は、統合検出結果と基本検出結果とのマッチングを行う。以下、この具体的な内容を説明する。マージ処理部1146は、統合検出結果の検出枠と、基本検出結果の検出枠のLarge Umap上での重なりを検出し、その検出結果に基づいて対応関係を明らかにし、処理対象となる統合検出結果を選別する。
この例では、まずマージ処理部1146は、統合検出結果と基本検出結果との重なり率を算出する。基本検出結果のサイズの方が統合検出結果のサイズに比べて小さい場合、重なり率は、両者の重なり合う領域の面積を基本検出結果の面積で除算することで算出される。また、基本検出結果のサイズの方が統合検出結果のサイズに比べて大きい場合(統合検出結果のサイズの方が基本検出結果のサイズに比べて小さい場合)、重なり率は、両者の重なり合う領域の面積を統合検出結果の面積で除算することで算出される。この例では、マージ処理部1146は、重なり率が閾値(一例として0.5)を上回る場合、統合検出結果に重なる基本検出結果が存在すると判定する。そして、マージ処理部1146は、図42に示す条件に基づいて、包括枠と部分枠を設定する。
図42の例では、統合検出結果に重なる基本検出結果が存在し、かつ、基本検出結果と比較して統合検出結果のサイズが小さい場合、マージ処理部1146は、統合検出結果を棄却して基本検出結果を包括枠として設定し、該基本検出結果に紐付く分離検出結果を部分枠として設定する。また、統合検出結果に重なる基本検出結果が存在し、かつ、基本検出結果に紐付く分離検出結果が複数存在する場合、マージ処理部1146は、基本検出結果を棄却して統合検出結果を包括枠として設定し、基本検出結果に紐付く分離検出結果を部分枠として設定する。さらに、統合検出結果に重なる基本検出結果が存在し、かつ、基本検出結果と比較して統合検出結果のサイズが大きい、あるいは、基本検出結果に紐付く分離検出結果が1つのみ存在するなどの場合(基本検出結果と比較して統合検出結果のサイズが小さい、または、基本検出結果に紐付く分離検出結果が複数存在する以外の場合)、マージ処理部1146は、統合検出結果を包括枠として設定し、基本検出結果を部分枠として設定する。なお、統合検出結果に重なる基本検出結果が存在しない場合(統合検出結果に対応する基本検出結果が存在しない場合)、統合検出結果を包括枠として設定し、部分枠は無しに設定する。以上がマージ処理部1146によるマッチングの内容となる。
図40に戻って説明を続ける。ステップS1053のマッチングの結果、統合検出結果と基本検出結果とが重なる場合、ステップS1054の結果は肯定となる。ステップS1054の結果が肯定の場合、マージ処理部1146は、包括枠(統合検出結果)と部分枠(基本検出結果または分離検出結果)とをマージし(ステップS1055)、1つの「検出結果」を生成する。上述したように、この例におけるマージは図42に示す条件に基づいて実施される。
一方、ステップS1054の結果が否定の場合、マージ処理部1146は、統合検出結果のみを包括枠として設定する(ステップS1056)。対応する基本検出結果が存在しないため、部分枠も無しとなる。つまり、包括枠として統合検出結果が設定され、かつ、部分枠が無しに設定された1つの「検出結果」が生成される。
以上のようにして生成された「検出結果」の数だけステップS1057の補正処理が行われる。以下、補正部1147が実行する補正処理を説明する。補正部1147は、検出結果が統合検出結果を含む場合、統合補正処理を行う。統合補正処理の具体的な内容については後述する。一方、検出結果が統合検出結果を含まない場合、補正部1147は、部分枠として設定される分離検出結果に含まれる集合領域(第1の検出部1141により検出された集合領域(IDが付与された画素の集合)を示す第1の集合領域)の距離に応じた補正方法により第1の集合領域を補正する。第1の集合領域の距離は、ステレオカメラからの距離(奥行き方向の距離)を指し、該第1の集合領域に含まれる各画素の視差値dを用いて求めることができる。補正部1147は、第1の集合領域の距離が閾値未満の場合は、第1の集合領域に対して第1の補正処理を行い、第1の集合領域の距離が閾値以上の場合は、第1の集合領域に対して第2の補正処理を行う。ここでは、近距離では路面推定精度が高いため分離検出結果の誤分離が発生しにくい一方、遠距離では路面推定精度が低くなるため分離検出結果の誤分離が発生し易い。したがって、上記閾値としては、路面推定精度を担保可能な距離の値を設定することが好適である。この例では上記閾値は30mに設定されているが、これに限られるものではない。
上記第1の補正処理は、第1の集合領域の基準オブジェクト(路面)からの高さの相対的な基準を用いて、第1の集合領域を拡張する処理である。より具体的には、第1の補正処理は、第1の集合領域を含み、かつ、第2の検出部1142により検出された集合領域を示す第2の集合領域(分離検出結果に紐付く基本検出結果に含まれる集合領域)のうち、第1の集合領域から外側に向かう領域を示す関心領域が連続する方向において、関心領域の基準オブジェクトからの高さが、第1の集合領域の高さ(基準オブジェクトからの高さ)の平均値に応じて相対的な値を示す相対高さ閾値を下回る位置を境界として、第1の集合領域を該境界まで拡張する処理である。詳細な内容については後述する。以下の説明では第1の補正処理を「近距離用補正処理」と称する。
上記第2の補正処理は、第1の集合領域の基準オブジェクト(路面)からの高さの相対的な基準を用いて、2つの第1の集合領域を結合する処理である。より具体的には、第2の補正処理は、2以上の第1の集合領域を含む第2の集合領域のうち、2つの第1の集合領域同士の間の領域を示す関心領域の、一方の第1の集合領域から他方の第1の集合領域へ連続する方向にわたって、関心領域の基準オブジェクトからの高さが、第1の集合領域の高さ(基準オブジェクトからの高さ)の平均値に応じて相対的な値を示す相対高さ閾値以上である場合、一方の第1の集合領域と他方の第1の集合領域を結合する処理である。詳細な内容については後述する。以下の説明では第2の補正処理を「遠距離用補正処理」と称する。
図43は、図40のステップS1057の補正処理の一例を示すフローチャートである。この例では、包括枠のリスト、各包括枠に付随する部分枠、ID Umap、Standard Umap、高さ情報が入力情報として入力され、補正された包括枠のリスト、各包括枠に付随する部分枠、補正されたID Umap、検出結果間の関係が記録されたID テーブルが出力情報として出力される。
補正部1147は、ステップS1061~ステップS1067の処理を「検出結果」の数だけ繰り返す。まず、補正部1147は、IDテーブルを作成する(ステップS1061)。このIDテーブルは、包括枠と部分枠とをIDで紐付けたテーブル形式の情報である。次に、補正部1147は、着目した検出結果(包括枠と部分枠との組)に含まれる部分枠のうち、車両サイズに相当するサイズの部分枠の数をカウントする(ステップS1062)。次に、補正部1147は、検出結果が統合検出結果を含むか否かを判断する(ステップS1063)。つまり、補正部1147は、検出結果に含まれる包括枠が統合検出結果であるか否かを判断する。
ステップS1063の結果が肯定の場合(ステップS1063:Yes)、補正部1147は統合補正処理を行う(ステップS1064)。ステップS1063の結果が否定の場合(ステップS1063:No)、補正部1147は検出結果の距離が所定距離(例えば30m)未満であるか否かを判断する(ステップS1065)。ステップS1065の結果が肯定の場合(ステップS1065:Yes)、補正部1147は近距離用補正処理を行う(ステップS1066)。ステップS1065の結果が否定の場合(ステップS1065:No)、補正部1147は遠距離用補正処理を行う(ステップS1067)。
本実施の形態においては、検出結果に統合検出結果(分解能の低いマップであるSmall Umapを用いた検出の結果)が含まれている場合に、基本検出結果や分離検出結果に対して、距離差や横位置を考慮した統合補正処理を行う。これにより、誤分離を低減しつつ高い分離性能を持つ検出結果に補正することができる。また、本実施の形態においては、検出結果の距離に応じて、近距離用補正処理と遠距離用補正処理を使い分ける。これにより、路面の推定精度の高い近距離と路面の推定精度の低い遠距離の各々で適切な方法で補正することができる。
次に、統合補正処理の具体的な内容を説明する。統合検出結果は、分解能の荒いマップ(Small Umap)を用いて得られる。そのため、物体の誤分離を低減することができるが、逆に分離性能が落ちる。一方で基本検出結果や分離検出結果は分解能の高いマップを用いて得られるため、分離性能は高いが物体の誤分離が問題となる。統合検出用補正処理では、統合検出結果に紐付く部分枠(基本検出結果または分離検出結果)を全て同一のものとして結合(統合)するのではなく、距離差や横位置により結合判断をすることで、誤分離を低減しつつ高い分離性能を持つ検出結果に補正することを目的とする。
図44は、統合補正処理の一例を示すフローチャートである。まず補正部1147は、包括枠(統合検出結果)の補正処理を行う(ステップS1071)。次に、補正部1147は、包括枠に含まれる部分枠(基本検出結果または分離検出結果)の補正処理を行う(ステップS1072)。次に、補正部1147は、ステップS1072の補正後の部分枠同士の結合処理を行う(ステップS1073)。各ステップの具体的な内容については後述する。なお、包括枠の中に部分枠が1つしか含まれていない場合は、ステップS1073の結合処理は行われない。
まず包括枠の補正処理について説明する。図45に示すように、補正部1147は、包括枠内の視差を持つ画素の外接矩形を算出する。そして、外接矩形に含まれる画素のうちIDを持たずに視差の頻度値を持つ画素に対して、包括枠のIDを付与する。頻度値を持つがIDを持たない画素が存在する場合があり、そのような画素に対しても包括枠の一部としてIDを設定する処理が包括枠の補正処理となる。これにより、視差値があまり得られない物体に対しても、適切な包括枠が設定できる。なお、本処理は、必要に応じて割愛してもよい。
次に、部分枠の補正処理について説明する。図46は、部分枠の補正処理の流れを示すフローチャートである。補正部1147は、着目した包括枠に紐付く部分枠ごとに、ステップS1710およびステップS1720の処理を繰り返す。ステップS1710では、補正部1147は部分枠の拡張処理を行う。その後のステップS1720では、補正部1147は、拡張した領域内の画素のIDを、部分枠のIDに更新する処理を行う。拡張処理は、例えば、高さ情報に基づいて行う。すなわち、高さ情報に連結性があるが頻度値をもたない画素を有効とする。そして、有効となった画素にIDを設定する。これが部分枠の補正処理となる。これにより、視差値があまり得られない物体に対しても、適切な部分枠が設定できる。なお、本処理は、必要に応じて割愛してもよい。
次に、図44のステップS1073における部分枠同士の結合処理について説明する。補正部1147は、部分枠の全ての組み合わせのうち、カメラの光軸方向(奥行き方向)の部分枠間の距離差(中心距離差)とカメラの左右方向の部分枠間の距離差(中心横位置差)が近いもの同士を結合する。結合処理としては、結合対象の部分枠の外接矩形(結合すべき2つの部分枠の外接矩形)を計算し、外接矩形の領域を結合後の部分枠として設定する。結合後の部分枠に含まれる画素のIDは、一方の部分枠のIDが割り当てられてもよいし、新規のIDが割り当てられてもよい。ここでは、一方の部分枠に含まれる第1の集合領域と、他方の部分枠に含まれる第1の集合領域との間に存在する複数の画素の各々に対して、結合対象の部分枠と同一のIDが割り当てられることになる。図47は、結合処理の対象とするか否かの条件の一例を示す図表である。なお、中心距離差、および、中心横位置差のそれぞれの閾値は図47の例(2m、6m)に限られるものではなく、同一物体にも関わらず誤分離が発生している可能性がある範囲で任意に変更可能である。中心横位置差は、後述の枠間距離に相当する。また、中心距離差は、一方の部分枠に含まれる画素ごとの距離(視差値dから導かれる距離)の平均値と、他方の部分枠に含まれる画素ごとの距離の平均値との差分によって求められる。なお、カメラの光軸方向(奥行き方向)の部分枠間の距離差(中心距離差)とカメラの左右方向の部分枠間の距離差(中心横位置差)の少なくとも一方が近いもの同士を結合する構成としてもよい。
図47の条件では、中心距離差が2mよりも小さく、かつ、中心横位置差が6m以下の場合、対象となる2つの部分枠を結合処理の対象とする。また、上述したように、この例では、一方の部分枠に含まれる各画素の距離の平均値と、他方の部分枠に含まれる各画素の距離の平均値との差を中心距離差とし、その中心距離差と閾値とを比較して結合処理の対象とするか否かを判断しているが、例えば部分枠同士が縦長(奥行き方向に長い)の場合は、互いに重なり合うほど近接しているにも関わらず、中心距離差が閾値以上となることがある。そのため、結合処理の対象とすべきであるにも関わらず、結合処理の対象から除外されてしまうおそれがある。そこで、この例においては、中心距離差が閾値以上であっても、部分枠の奥行方向の重なり率が所定の割合(誤分離が発生している可能性があると判断可能な範囲内で任意に設定可能、例えば20%等)以上であるか否かを確認する。ここでの重なり率は、2つの部分枠の重なる領域の面積を、2つの部分枠の何れか一方(典型的にはサイズが小さい方の部分枠)の面積で除算して得られる。そして、重なり率が所定の割合以上の場合であり、かつ、中心横位置差が6m以下の場合は、対象となる2つの部分枠を結合処理の対象とする。以上の統合補正処理により、補正された包括枠のリスト、各包括枠に付随する補正後(拡張、結合後)の部分枠、補正されたID Uマップが出力情報として出力される。
次に、図43のステップS1066における近距離用補正処理の具体的な内容を説明する。前述したように、近距離では路面の推定精度が高いため、分離検出結果の誤分離が発生しにくい。また、分離検出処理は路面から高い領域の視差値のみを投票したHigh Umapを用いた検出処理であるため分離性能が高い。ただし、分離検出処理は路面から低い(路面に近い)領域で広がりを持つような物体は実際よりも枠が小さく検出されるおそれがある。以上を考慮して、近距離用補正処理は分離検出結果の検出枠を、該検出枠の路面からの高さの相対的な基準を用いて補正する。
図48は、近距離用補正処理の流れを示すフローチャートである。補正部1147は、着目した検出結果(この場合は基本検出結果)の包括枠の中に、車両サイズの部分枠(この場合は分離検出結果)が1以上存在するか否かを確認する(ステップS1091)。ステップS1091の結果が否定の場合(ステップS1091:No)、処理は終了する。ステップS1091の結果が肯定の場合(ステップS1091:Yes)、補正部1147は、部分枠の拡張処理を行う(ステップS1092)。この具体的な内容は、統合補正処理で説明した内容と同様である。次に、補正部1147は、画素IDの更新処理を行う(ステップS1093)。この内容も、統合補正処理で説明した内容と同様であるので、詳細な説明は省略する。次に、補正部1147は、包括枠を削除する(ステップS1094)。
次に、図43のステップS1067における遠距離用補正処理の具体的な内容を説明する。前述したように、遠距離での路面の推定精度は近距離に比べて低くなる。特に、路面の推定結果が実際の路面よりも低く推定された場合は、路面の視差が投票されて検出枠の結合や検出枠の拡大に繋がる。これは、路面から高い領域の検出結果である分離検出結果を採用することで改善できる。ただし、分離検出結果は分離性能が高く、逆に路面の推定結果が実際の路面より高く推定された場合や車高の低い車両に対しては、誤分離が発生し、実際の物体よりも小さく検出される可能性が高くなる。遠距離用補正処理では、以上を考慮した検出枠の結合処理と補正処理を行う。
図49は、遠距離用補正処理の流れを示すフローチャートである。補正部1147は、着目した検出結果(この場合は基本検出結果)の包括枠の中に、車両サイズの部分枠(この場合は分離検出結果)が1以上存在するか否かを確認する(ステップS1101)。ステップS1101の結果が肯定の場合(ステップS1101:Yes)、補正部1147は、車両サイズの部分枠と、その他の部分枠との組み合わせごとに、後述の結合判定処理を行う(ステップS1102)。一方、ステップS1101の結果が否定の場合(ステップS1101:No)、補正部1147は、全ての部分枠の組み合わせごとに(2つの部分枠の組み合わせごとに)、後述の結合判定処理を行う(ステップS1103)。
ここで、結合判定処理の具体的な内容を説明する。補正部1147は、図50に示すように、包括枠の領域に対応する高さ情報、該包括枠に紐付く部分枠の領域を特定しておく。そして、補正部1147は、着目した2つの部分枠同士のうち、X方向(カメラの左右方向)において向き合う部分間の距離(以下の説明では「枠間距離」と称する)を算出する。図50の例では、左側の部分枠の右側の境界の距離と、右側の部分枠の左側の境界の距離との差が枠間距離として算出される。補正部1147は、以上のようにして算出した枠間距離が、同一物体にも関わらず誤分離が発生している可能性がある範囲内で設定される所定の閾値未満の場合、2つの部分枠を結合対象とする。一方、枠間距離が所定の閾値以上の場合は、別々の物体である可能性が高いため、2つの部分枠の結合処理は行わない。ここでは所定の閾値として1.5mを採用しているが、これに限られるものではない。以下では、2つの部分枠を結合対象とした場合の処理を説明する。
図51に示すように、補正部1147は、着目した部分枠同士の間の領域(図51の例では左側(右側)の部分枠から右側(左側)の部分枠へ連続する領域)を関心領域として設定する。そして、補正部1147は、結合先の部分枠(例えば右側の部分枠でもよいし、左側の部分枠でもよい)の路面からの高さの平均値(高さマップ内の部分枠に含まれる各画素の高さの平均値)を求め、平均値に対して相対的な値を閾値(以下、「相対高さ閾値」と称する)として用いる。この例では、平均値の1/4を相対高さ閾値とする。ここでは、結合対象の2つの部分枠のうちの一方の部分枠の高さの平均値に対して相対的な値を相対高さ閾値としているが、これに限らず、例えば結合対象の2つの部分枠の高さの平均値に対して相対的な値を相対高さ閾値としてもよい。そして、補正部1147は、関心領域の連続する方向における最頻の高さの分布を示す高さプロファイルを作成する。例えば図52および図53に示すように、補正部1147は、関心領域の各列における最頻の高さを求めて高さプロファイルを作成する。そして、相対高さ閾値と、高さプロファイルとに基づいて、高さの連続性をチェックする。より具体的には、高さプロファイルが示す全ての最頻高さのうち、相対高さ閾値未満の最頻高さが存在するか否かを確認することで、高さの連続性をチェックし、高さの連続性を有する場合に限り、部分枠同士の結合処理を行うと判断する。例えば図52に示すように、高さプロファイルが示す全ての最頻高さが何れも相対高さ閾値以上の場合(関心領域の全ての列において、最頻高さが相対高さ閾値以上の場合)は高さの連続性を有すると判断し、2つの部分枠の結合処理を行うと判断する。一方、例えば図53に示すように、高さプロファイルが示す全ての最頻高さのうち、相対高さ閾値未満の最頻高さが存在する場合は高さの連続性を有していないと判断し、2つの部分枠の結合処理を行わないと判断する。
なお、例えば遠距離での物体の歪みの発生等を考慮し、関心領域を上下に分割し、分割した関心領域ごとに、高さの連続性をチェックして結合処理を行うか否かを判定する形態であってもよい。
図54は、以上に説明した結合判定処理の流れを示すフローチャートである。各ステップの具体的な内容は上述したとおりであるので適宜に説明を省略する。まず補正部1147は、枠間距離が閾値未満であるか否かを確認する(ステップS1111)。ステップS1111の結果が否定の場合(ステップS1111:No)、補正部1147は、着目した2つの部分枠同士の結合処理は行わないと判断し(ステップS1117)、処理を終了する。ステップS1111の結果が肯定の場合(ステップS1111:Yes)、補正部1147は関心領域を設定する(ステップS1112)。次に、補正部1147は相対高さ閾値を算出し(ステップS1113)、高さの連続性をチェックする(ステップS1114)。ステップS1112~ステップS1114の具体的な内容は上述したとおりである。ステップS1114の結果、高さの連続性を有すると判断された場合(ステップS1115:Yes)、結合処理を行うと判断し(ステップS1116)、処理を終了する。一方、ステップS1114の結果、高さの連続性を有しないと判断された場合(ステップS1115:No)、結合処理は行わないと判断し(ステップS1117)、処理を終了する。
図49のフローの説明を続ける。補正部1147は、部分枠の組み合わせのうち、以上の結合判定処理で結合処理を行うと判定された2つの部分枠については結合処理を行い、結合処理を行わないと判定された2つの部分枠については結合処理を行わない。つまり、図49に示すステップS1104の処理は部分枠の組み合わせごとに行われ、結合処理を行うと判定された場合(ステップS1104:Yes)、補正部1147は、着目した2つの部分枠同士の結合処理を行い(ステップS1105)、処理はステップS1106に移行する。結合処理としては、結合対象の部分枠の外接矩形を計算し、外接矩形の領域を結合後の部分枠として設定し、IDの更新処理を行う。一方、ステップS1104の結果が否定の場合(ステップS1104:No)、そのまま処理はステップS1106に移行する。
ステップS1106では、補正部1147は、部分枠の補正処理を行う。この補正処理は図44のステップS1072の補正処理と同じ内容であるので、詳細な説明は省略する。ステップS1106の処理は部分枠の数だけ繰り返し実行されることになる。
以上に説明したように、本実施の形態では、補正部1147は、分離検出処理により得られた第1の集合領域の距離に応じて補正方法を切り替えながら、該第1の集合領域を補正する。より具体的には、補正部1147は、第1の集合領域の距離が閾値未満の場合は、第1の集合領域に対して近距離用補正処理を行い、第1の集合領域の距離が閾値以上の場合は、第1の集合領域に対して遠距離用補正処理を行う。前述したように、近距離では路面の推定精度が高いため、分離検出結果の誤分離が発生しにくいものの、分離検出処理は路面から低い領域で広がりを持つような物体は実際よりも枠が小さく検出されるおそれがある。以上を考慮して、近距離用補正処理は、分離検出処理により得られる第1の集合領域の路面からの高さの相対的な基準を用いて、該第1の集合領域を拡張する処理である。なお、近距離では路面の推定精度が高いため、結合などの処理は不要になる。また、前述したように、遠距離での路面の推定精度は近距離に比べて低くなるので、分離検出結果の誤分離が発生し易くなる。以上を考慮して、遠距離用補正処理は、分離検出処理により得られる第1の集合領域の路面からの高さの相対的な基準を用いて、2つの第1の集合領域を結合する処理である。以上のように、分離検出処理により得られる第1の集合領域の距離に応じて、近距離用補正処理と遠距離用補正処理を切り替えて該第1の集合領域を補正することで、物体の検出精度を十分に確保することができる。
以上、本発明に係る実施の形態について説明したが、本発明は、上述の各実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上述の実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除してもよい。
また、上述した実施の形態の機器制御システム1100で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)、CD-R、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよいし、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、各種プログラムを、ROM等に予め組み込んで提供するように構成してもよい。