以下、図を用いて、本実施の形態の具体的な説明をする。ここでは、物体認識装置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を示す視差画像(「縦方向の位置と、横方向の位置と、奥行方向の位置とが対応づけられた第1の情報」の一例)を出力する。認識処理部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と、を有する。
物体認識装置の各機能部の少なくとも一部は、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マップが生成される際に、ノイズ除去のため路面より上方の情報のみが用いられる。なお、路面の推定により路面の高さが求められるため、当該路面上の物体の高さを求めることができる。これは、公知の方法により算出できる。例えば、推定した路面を表す直線式を求め、視差値d=0のときの対応するy座標y0を路面の高さとする。そして、例えば、視差値がdでy座標がy'である場合、y'-y0が視差値dのときの路面からの高さを示す。上述の座標(d,y')の路面からの高さHは、H=(z×(y'-y0))/fという演算式で求めることができる。なお、この演算式における「z」は、視差値dから計算される距離(z=BF/(d-offset))、「f」は撮像部10a、10bの焦点距離を(y'-y0)の単位と同じ単位に変換した値である。ここで、BFは、撮像部10a、10bの基線長Bと焦点距離fを乗じた値、offsetは無限遠のオブジェクトを撮影したときの視差である。
第4生成部502は、VマップVMで検出された路面より上方に位置する情報のみを利用、すなわち、図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から、横軸を実際の距離に変換したReal U-Disparityマップの一例であるリアルUマップRMを生成する。なお、本処理は物体を検出しやすくするために俯瞰的なマップ(鳥瞰画像、俯瞰画像)を生成するものであるため、横軸は実距離でなくとも実距離に相当するものであればよい。
ここで、リアル高さUマップRM_H、及びリアルUマップRMは、横軸を、撮像部10b(左のカメラ)から撮像部10a(右のカメラ)へ向かう方向(水平方向)の実距離とし、縦軸を、視差画像の視差値dp(またはその視差値dpから変換した奥行き方向の距離)とした二次元ヒストグラムである。図7(A)に示す高さUマップUM_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を有する。
推定部511は、U-Disparityマップ、またはReal U-Disparityマップから、路面による視差が存在する領域を推定する。なお、推定部511による推定を行うのは、第3生成部501によりVマップVMに基づく路面の検出精度が十分でない場合があるためである。なお、以下では、推定部511が、Real U-Disparityマップを、例えば画素を間引くことにより縮小したスモールリアルUマップを用いて推定する例について説明するが、推定部511は、Real U-Disparityマップを用いて推定してもよい。
また、Real U-Disparityマップは、U-Disparityマップのx座標を、横方向(水平方向)の実距離等に変換したものであるため、推定部511は、U-Disparityマップを用いて推定することもできる。この場合、例えばU-Disparityマップのx座標を横方向(水平方向)の実距離等に変換する処理を推定部511が行えばよい。
物体領域検出部512は、U-Disparityマップ、またはReal U-Disparityマップに基づき、第3生成部501によりVマップVMに基づいて検出された路面より上方に位置する車両等の物体の奥行きや幅等を検出する。なお、以下では、物体領域検出部512が、Real U-Disparityマップを用いて検出する例について説明するが、物体領域検出部512は、U-Disparityマップを用いて検出してもよい。この場合、例えばU-Disparityマップのx座標を横方向(水平方向)の実距離等に変換する処理を物体領域検出部512が行えばよい。
判定部513は、推定部511による推定結果を用いて、物体領域検出部512により検出された物体のうち、路面である物体を判定する。そして、判定部513は、物体領域検出部512により検出された物体のうち、路面であると判定した物体を棄却する。ここで、棄却とは、その物体を後段の処理(追跡処理等)の対象外とする処理を示す。
枠作成部514は、物体領域検出部512により検出された物体領域のうち、判定部513により路面を示す領域であると判定されていない領域に対応する視差画像Ip(または基準画像Ia)における領域(認識領域)に枠を作成する。なお、ここでいう枠とは、認識された物体の位置と大きさを示すものであり、例えば当該物体を囲む矩形の角の座標と高さおよび幅が対応づけられた情報である。
≪トラッキング部530≫ トラッキング部530は、クラスタリング処理部510により認識された物体に関する情報である認識領域情報に基づいて、その物体を追跡する処理であるトラッキング処理を実行する機能部である。ここで、認識領域情報とは、クラスタリング処理部510により認識された物体に関する情報を示し、例えば、認識した物体のV-Disparityマップ、U-Disparityマップ、およびReal U-Disparityマップ等における位置および大きさ、後述するラベリング処理の識別番号、ならびに、上述の棄却フラグ等の情報を含む。
<処理>
次に、図9を参照し、クラスタリング処理部510の処理について説明する。図9は、クラスタリング処理部510の処理の一例を示すフローチャートである。
ステップS11において、クラスタリング処理部510の推定部511は、路面領域推定処理を行う。なお、路面領域推定処理の詳細は後述する。
続いて、クラスタリング処理部510の物体領域検出部512は、物体領域検出処理を行う(ステップS12)。なお、「路面領域推定処理」と「物体領域検出処理」は、並行して実行されてもよいし、いずれを先に実行されてもよい。なお、物体領域検出処理の詳細は後述する。
続いて、クラスタリング処理部510の判定部513は、路面領域棄却処理を行う(ステップS13)。なお、路面領域棄却処理の詳細は後述する。
続いて、クラスタリング処理部510の枠作成部514は、検出枠を作成する(ステップS14)。図10は、検出枠を作成する処理を説明する図である。物体領域検出処理により検出され、路面領域棄却処理により棄却されていない物体領域を用いて、図10に示すように、視差画像Ip(または基準画像Ia)における物体領域に対応する領域(認識領域)に枠を作成する。
続いて、クラスタリング処理部510の判定部513は、棄却処理を行う(ステップS15)。例えば、図8に示す物体の種別の分類方法において、「その他」に分類された物体の検出結果を棄却してもよい。
≪路面領域推定処理≫ 次に、図11を参照し、推定部511によるステップS11の路面領域推定処理について説明する。図11は、路面領域推定処理の一例を示すフローチャートである。
ステップS101において、推定部511は、第5生成部503により生成されたリアルUマップRMから、画素を間引いた画像であるスモールリアルUマップを生成する。なお、スモールリアルUマップは、第5生成部503により生成されてもよい。
図12を参照し、スモールリアルUマップについて説明する。図12は、ラベリング処理について説明する図である。図12(A)は、基準画像Iaの一例を示す図である。図12(B)は、基準画像Iaが図12(A)の場合のスモールリアルUマップの一例を示す図である。リアルUマップRMから、1画素の幅が例えば10cm程度に対応するように画素を間引くことにより、スモールリアルUマップが作成されてもよい。リアルUマップRMよりも画素数が少ないスモールリアルUマップを用いることにより、自車両の前方の物体を比較的大まかに捉える処理を高速に実行することができる。
続いて、推定部511は、スモールリアルUマップにおいて、画素値(視差の頻度)が所定値(例えば1)以上である画素である視差点について、当該マップにおける縦方向(奥行き方向)または横方向(水平方向)に連続している視差点に同一のIDを付与する4近傍ラベリング処理を行う(ステップS102)。ラベリング処理としては公知のものが利用できる。図12(C)は、スモールリアルUマップ上の視差点にIDが付与された例を説明する図である。図12(C)では、図12(B)のスモールリアルUマップにおいて縦または横方向に連続している視差点に同一のID(「1」、「2」)が付与されている。なお、同一のIDが付与された視差点群の各画素が位置するエリアを、「孤立領域(物体候補)」とも称する。
続いて、推定部511は、今回撮影された画像が、カーブの環境下であるか否かを判定する(ステップS103)。例えば、推定部511は、スモールリアルUマップ上で、ステップS102の処理により同一のIDが付与された各視差点群(各孤立領域)について、左右の端、および左右の端の中点を各行ごとに検出し、近方と遠方で中点の平均位置の差が閾値以上であり、かつ左端と右端の変化方向が同一である場合、カーブの環境下であると判定してもよい。または、今回撮影された画像から、車線の白線等を画像認識し、車線の白線の曲がり具合が所定の閾値以上の場合に、カーブの環境下であると判定してもよい。または、ECUから取得したハンドルの操舵角に基づいて、カーブの環境下であるか否か判定してもよい。
カーブの環境下であれば(ステップS103でYES)、処理を終了する。これは、カーブの環境下では後述する処理が不適当となる場合があるためである。
カーブの環境下でなければ(ステップS103でNO)、推定部511は、同一のIDが付与された各視差点群のうち、視差点群の幅、及び奥行きに基づき、処理対象とする1以上の視差点群を抽出する(ステップS104)。なお、ステップS104乃至ステップS110の処理は、各孤立領域について行われる。図13は、処理対象とするか否かの閾値の一例を示す図である。図13のように、例えば幅(横方向の長さ)が1車線分(例えば3m)以上であり、奥行きが所定値(例えば10m)以上である視差点群が処理対象とされる。なお、この処理対象となった視差点群は、後述する処理により、路面の視差であるか否かを判定する処理の対象とされる。これは、幅が例えば3m以上であり、奥行きが例えば10m以上である視差点群は、車両等の物体としては大きすぎるため、車両等の物体による視差点群ではなく、路面等による視差点群であると推定できるためである。これは、例えば奥行きが10m以上ある車両等が自車両の前方に存在している場合であっても、車両等は路面に対して垂直に近い背面や側面を有しており、当該背面や側面よりも奥側は撮影されないため、スモールリアルUマップ等の視差情報に基づく俯瞰画像において、そのような奥行きが検出される可能性が低いためである。
続いて、推定部511は、今回撮影された画像が、狭路の環境下であるか否かを判定する(ステップS105)。例えば、推定部511は、同一のIDが付与された各視差点群について、各視差点群に外接する矩形内を、当該矩形における左右の中心で分割し、分割された2つの領域における奥行きが共に所定値以上である場合に、狭路の環境下であると判定してもよい。これは、狭路の場合、自車両の両脇にある例えば植物等の側物による視差点と、自車両の前方で自車両に対して上向きに傾斜している路面による視差点が、スモールリアルUマップ等の俯瞰画像上で結合される(同一のIDが付与される)場合が実際に多いことを利用している。すなわち、ここでいう狭路のように前方の路面を路面以外の障害物等の物体として誤検出しやすい場面においては、スモールリアルUマップ等の俯瞰画像において図12(B)に示すような馬蹄形状(U字形状)が現れる。そこで、このような馬蹄形状(U字形状)を検出するために、前述のように各視差点群に外接する矩形における左右の中心で分割し、分割された2つの領域における奥行きの長さを判定に用いるのが有効となる。なお、ここでいう「狭路」とはあくまで一例であり、車両が通行する幅が狭くかつ側物に囲まれているような環境等を広く対象とする。
続いて、推定部511は、各視差点群が路面候補であるか(路面候補が存在するか)否かを判定する。具体的には、同一のIDが付与された各視差点群において、横方向に連続する長さ(連続している領域の幅)が所定値以上である視差点群の幅を算出し、当該幅が大きい視差点群を路面候補と判定する(ステップS106)。なぜならば、路面による視差がリアルUマップ上に存在する場合は、一定程度の幅をもつ領域が奥行き方向に連続している、または、幅が異常に広い領域として現れると考えられるからである。そのため、ステップS106の処理により、横方向に一定程度連続する視差点群(奥行方向に長い形状)のみを抽出し、これを路面候補の判定基準として用いる。
図14は、左右に分離された視差点群の幅を算出する処理について説明する図である。例えば、まず、推定部511は、図14(A)のように、スモールリアルUマップ上の各視差点群について、各行において横方向に最も長く連続する視差点群を抽出する。なお、この際、所定値(例えば1画素分)以下の視差点の途切れは、ノイズによるものである可能性があるため、連続していると見なしてもよい。
続いて、推定部511は、図14(B)のように、各行において抽出された視差点群のうち、幅(横方向の長さ)が所定値以下(例えば2画素分)の視差点群を除外し、除外されていない視差点群について、他の視差点群と縦方向に連続している場合は、各視差点群を連結する。続いて、各視差点群701、702、703に同一のIDを付与する。続いて、各視差点群701、702、703で、幅の平均値を算出する。
続いて、推定部511は、狭路の環境下であるか否か、路面候補が存在するか否かの判定結果に基づいて、処理種別を決定する(ステップS107)。このように、物体候補として検出された孤立領域の形状に基づいた棄却処理を行うため、路面を路面以外の物体として誤検出することを防ぐことができる。
なお、ステップS107にいう判定結果に基づく処理種別の決定は、処理種別を決定するための閾値の決定(ステップS107A)、決定した閾値に基づく各孤立領域における処理種別の決定(ステップS107B)からなる。図15は、処理種別を決定するための閾値の一例を示す図である。狭路の環境下の場合、及び路面候補が存在すると判定された場合、比較的緩い奥行きの閾値(「第1の種別の閾値」。例えば、第1閾値(以下で「第1の閾値」とも称する。)として10m、第2閾値(以下で「第2の閾値」とも称する。)として5m)を設定する。それ以外の場合、比較的厳しい(比較的路面であると判定されにくい)奥行きの閾値(「第2の種別の閾値」。例えば、第1閾値として20m、第2閾値として10m)を設定する。
狭路の環境下の場合、及び路面候補が存在する場合は、路面による視差がリアルUマップ上に存在する可能性が高いため、比較的緩い奥行きの閾値を用いることにより、「物体領域検出処理」の処理結果が棄却され易い処理種別とされる。
このように、奥行方向に凸となるU字形状が存在する場合は、狭路であるとして比較的緩い(小さい)閾値を用いるため、路面が誤って抽出されるケースを発見して棄却することができる。
また、一定以上の幅が連続する形状が存在する場合は、路面が誤って物体として検出された可能性が高いことから比較的緩い(小さい)閾値を用いるため、路面が誤って抽出されるケースを発見して棄却することができる。
一方、上記以外の場合は、検出された物体が路面でない可能性が高いことから、比較的厳しい(大きい)閾値を用いることとしているため、奥行方向に比較的長く連続する物体のみを路面であると推定して誤った判定を防ぐことができる。
なお、本実施形態においては、路面が誤って検出されやすいケースの判断に狭路と路面候補の両方の判定基準を用いたが、いずれか一方のみを判定基準として用いてもよい。
続いて、推定部511は、決定した閾値に基づいて、各孤立領域における処理種別を決定する(ステップS107B)。図16は、処理種別を決定する方法の一例を示す図である。推定部511は、図16に示すように、ステップS103で同一のIDが付与された視差点群の奥行きが、上述した第1の閾値よりも大きい場合、奥行方向に非常に長いものが検出されており路面である可能性が高いので、当該視差点群のエリアにおいては後述する「物体領域検出処理」の処理結果を、チェックなしに棄却する処理(以下「処理A」と称する。)種別と決定する。チェックなしに棄却処理を行うことにより高速で処理を行うことができる。同様に、推定部511は、当該奥行きが、上述した第2の閾値よりも大きいが第1の閾値以下である場合、奥行方向にある程度長いが路面でないものが検出されている可能性があるので、当該視差点群のエリアにおいて、後述する「物体領域検出処理」の処理結果をチェックする処理(以下「処理B」と称する。)種別と決定する。処理Aよりは処理速度がかかるものの、精度の高い棄却処理を行うことができる。
このように第1、第2の2つの閾値を用いて処理を違えることにより、路面が検出されている可能性に応じて適切な処理を選択することができる。なお、処理A、及び処理Bを選択的に行うことが望ましいが、目的に応じて、処理A、及び処理Bのいずれか一方のみを行うようにしてもよい。
≪物体領域検出処理≫
次に、図18を参照し、物体領域検出部512によるステップS12の物体領域検出処理について説明する。図18は、物体領域検出処理の一例を示すフローチャートである。なお、以下では、リアル高さUマップRM_Hから物体領域を抽出する例について説明するが、以下と同様の処理により、リアルUマップRMから物体領域を抽出してもよい。この場合、リアルUマップRMに含まれる視差点のうち、路面からの高さが所定値以上である視差点を用いて、物体領域を抽出してもよい。また、横方向位置と奥行方向位置が対応づけられた情報(俯瞰画像)であれば、同様の処理が可能である。
ステップS201において、物体領域検出部512は、リアル高さUマップRM_Hにおいて、画素値が所定値以上である画素について、縦、横、または斜め方向に連続している画素に同一のIDを付与する8近傍ラベリング処理を行う。このラベリング処理としては公知のものを用いることができる。
続いて、物体領域検出部512は、同一のIDが付与された各画素群(各孤立領域)に外接する矩形をそれぞれ設定する(ステップS202)。
続いて、物体領域検出部512は、当該各矩形のサイズが所定値以下のものを棄却する(ステップS203)。矩形のサイズが所定値以下のものは、ノイズと判断できるためである。また、当該各矩形のエリアに対するリアルUマップRMのエリアにおける画素値(視差の頻度)の例えば平均値が所定値よりも小さい矩形についても棄却してもよい。
なお、物体領域検出処理は、視差画像に基づいて物体を示す領域が検出できればよく、公知技術を用いて実行されてもよい。
≪路面領域棄却処理≫
次に、図19を参照し、判定部513によるステップS13の路面領域棄却処理について説明する。図19は、路面領域棄却処理の一例を示すフローチャートである。なお、以下の処理は、「物体領域検出処理」で検出された各孤立領域について実行される。以下で、当該各孤立領域のうち、処理対象の孤立領域を「対象領域」と称する。
ステップS301において、判定部513は、対象領域に外接する矩形と、「路面領域推定処理」で検出されたスモールリアルUマップ上の各孤立領域に対応するリアルUマップRM上の各領域に外接する各矩形(以下で「各路面推定領域」とも称する。)とが重なる面積(オーバーラップ面積)を算出する。
図20は、矩形が重なる面積の算出方法について説明する図である。判定部513は、図20に示すように、対象領域に外接する矩形711と、「路面領域推定処理」で検出されたスモールリアルUマップ上の各孤立領域に対応するリアルUマップRM上の各領域に外接する各矩形712が重なる画素数を算出する。例えば、重なる領域713の横方向の画素数714と、縦方向の画素数715とを乗算することにより、重なる面積が算出される。当該各矩形712のうち、最もオーバーラップ面積が大きい値が、対象領域に対するオーバーラップ面積として算出される。
続いて、判定部513は、「路面領域推定処理」で検出された各孤立領域のうち、最もオーバーラップ面積が大きい孤立領域に対応付けられた処理種別を判定する(ステップS302)。
処理種別が「処理A」の場合(ステップS302で「処理A」)、判定部513は、対象領域の面積と、オーバーラップ面積が、所定の条件を満たすか否かを判定する(ステップS303)。例えば、オーバーラップ面積が、対象領域の面積の所定の割合以上であるか否かを判定する。
対象領域の面積と、オーバーラップ面積が、所定の条件を満たす場合(例えば、オーバーラップ面積が対象領域の面積の所定の割合以上である場合)(ステップS303でYES)、判定部513は、対象領域を棄却し(ステップS304)、処理を終了する。
対象領域の面積と、オーバーラップ面積が、所定の条件を満たさない場合(例えば、オーバーラップ面積が対象領域の面積の所定の割合未満である場合)(ステップS303でNO)、処理を終了する。
なお、処理Aの場合は、対象領域の面積とオーバーラップ面積との関係による棄却判断を行わなくともよい。いずれにしても、処理Bのように、「物体領域検出処理」の処理結果をチェックする(例えば、車両等の所定の種別の物体に該当しないか判定する)処理(棄却判定処理)を行わずに棄却処理することが要点となる。
なお、上述のように対象領域の面積とオーバーラップ面積との関係による棄却判断を行うことで、より精度のよい棄却処理が実現できる。
処理種別が「処理B」の場合(ステップS302で「処理B」)、判定部513は、まず、対象領域が車両等でないか否かをチェックする。具体的には、対象領域のサイズ、及び対象領域の周辺の視差点の分布が、所定の条件を満たすか否かを判定する(ステップS305)。例えば、対象領域のサイズが車両等のサイズと同等でない場合、所定の条件を満たすと判定されてもよい。また、対象領域の自車両から近方の周辺の各行において横方向に所定長以上連続する視差点群の数が当該周辺の各行の総数に対し所定の割合以下である場合、所定の条件を満たすと判定されてもよい。また、対象領域の自車両から近方の周辺の所定範囲及び遠方の周辺の所定範囲の各々で、視差点の数が、所定範囲の画素数の総数に対し所定の割合以下である場合に、所定の条件を満たすと判定されてもよい。
対象領域のサイズ、及び対象領域の周辺の視差点の分布が、所定の条件を満たす場合(ステップS305でYES)、ステップS304の処理に進む。
対象領域のサイズ、及び対象領域の周辺の視差点の分布が、所定の条件を満たさない場合(ステップS305でNO)、処理を終了する。
図21は、路面領域棄却処理の結果について説明する図である。図21では、図12(A)のような基準画像Iaの場合に、枠作成部514により、物体領域検出部512により検出された物体領域に対応する視差画像Ip(または基準画像Ia)における領域(認識領域)に枠721、722が作成された例が示されている。本実施形態によれば、物体領域検出部512により検出された物体領域のうち、判定部513により路面を示す領域であると判定された領域に対応する枠721は作成されない。これにより、前方の路面の視差による枠721についての認識領域情報は、トラッキング部530に出力されないため、物体を追跡する処理であるトラッキング処理の対象とされない。
<まとめ>
例えば、自車両が現在走行している位置が急な下り坂で、前方に平坦な路面がある場合や、自車両が現在走行している位置が平坦な路面で、前方に急な上り坂がある場合等であるとする。この場合、第3生成部501が、VマップVMから直線近似等により路面の高さを推定した結果の誤りにより、UマップUM上に路面による視差点が存在する場合がある。
上述した実施形態によれば、スモールリアルUマップ等の俯瞰画像のような分布データ上で、物体を示す領域の奥行きが第1の閾値以上の場合、当該物体を路面と判定する。これにより、路面を路面以外の物体として誤検出することを防ぐことができる。
なお、距離の値(距離値)と視差値は等価に扱えることから、本実施形態においては距離画像の一例として視差画像を用いて説明しているが、これに限られない。例えば、ステレオカメラを用いて生成した視差画像に対して、ミリ波レーダやレーザレーダ等の検出装置を用いて生成した距離情報を統合して、距離画像を生成してもよい。また、ステレオカメラと、ミリ波レーダやレーザレーダ等の検出装置を併用し、上述したステレオカメラによる物体の検出結果と組み合わせることにより、検出の精度をさらに高める構成としてもよい。
上述した実施形態におけるシステム構成は一例であり、用途や目的に応じて様々なシステム構成例があることは言うまでもない。また、上述した各実施形態の一部又は全部を組み合わせることも可能である。
例えば、物体認識装置1の視差値演算処理部300、第2生成部500、クラスタリング処理部510、トラッキング部530等の各機能部の少なくとも一部の処理を行う機能部は、1以上のコンピュータにより構成されるクラウドコンピューティングにより実現されていてもよい。
また、上述の実施の形態では、物体認識装置が車両70としての自動車に搭載される例について説明したが、これに限定されるものではない。例えば、他の車両の一例としてバイク、自転車、車椅子または農業用の耕運機等の車両に搭載されるものとしてもよい。また、移動体の一例としての車両だけでなく、ロボット等の移動体に搭載されるものとしてもよい。
また、上述の実施の形態において、物体認識装置1の視差値導出部3および認識処理部5の各機能部の少なくともいずれかがプログラムの実行によって実現される場合、そのプログラムは、ROM等に予め組み込まれて提供される。また、上述の実施の形態に係る物体認識装置1で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)、CD-R、DVD等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。また、上述の実施の形態の物体認識装置1で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述の実施の形態の物体認識装置1で実行されるプログラムを、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、上述の実施の形態の物体認識装置1で実行されるプログラムは、上述した各機能部のうち少なくともいずれかを含むモジュール構成となっており、実際のハードウェアとしてはCPU52(CPU32)が上述のROM53(ROM33)からプログラムを読み出して実行することにより、上述の各機能部が主記憶装置(RAM54(RAM34)等)上にロードされて生成されるようになっている。