以下、添付図面を参照して、実施の形態の立体物認識装置10を詳細に説明する。図1は、実施の形態の立体物認識装置10を搭載した車両1の概略構成を示す模式図である。図1に示すように、立体物認識装置10は、移動体の一例である自動車等の車両1に設けられる。立体物認識装置10は、撮像ユニット2と解析ユニット3とを備える。なお、立体物認識装置10を撮像装置10aとして使用してもよい。また、車両1は、立体物認識装置10の出力に基づいて動作する、制御ユニット4と、表示部5と、を備える。
撮像ユニット2は、車両1のフロントガラス6のルームミラー付近に設けられ、車両1の、例えば進行方向等の画像を撮像する。撮像ユニット2の撮像動作で得られる画像データを含む各種データは、解析ユニット3に供給される。解析ユニット3は、撮像ユニット2から供給される各種データに基づいて、車両1が走行中の路面を検出するとともに、路面から高さを有する立体物である、車両1の先行車両、歩行者、障害物等の立体物(オブジェクト)を解析する。
制御ユニット4は、解析ユニット3の解析結果に基づいて、表示部5を介して、車両1の運転者へ警告等を行う。また、制御ユニット4は、解析結果に基づいて、各種車載機器の制御、車両1の操舵制御、加速制御、減速制御等の走行支援を行う。
(立体物認識装置のハードウェア構成の説明)
次に、図2を用いて、立体物認識装置10(撮像装置10a)のハードウェア構成について説明する。図2は、立体物認識装置10のハードウェアの構成の一例を示すハードウェアブロック図である。図2に示すように、撮像ユニット2は、例えば2つの撮像部10A、10Bを備えたステレオカメラ構成となっている。すなわち、2つの撮像部10A、10Bの光軸は、略平行になるように配置されている。なお、2つの撮像部10A、10Bは同じ構成を有している。具体的には、撮像部10A、10Bは、撮像レンズ11A、11Bと、受光素子が2次元配置された、例えばCCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)センサ等で構成された画像センサ12A、12Bと、画像センサ12A、12Bを撮像駆動するコントローラ13A、13Bとを有している。
解析ユニット3は、FPGA(Field-Programmable Gate Array)14と、RAM(Random Access Memory)15およびROM(Read Only Memory)16とを有している。また、解析ユニット3は、CPU(Central Processing Unit)17と、シリアルインタフェース(シリアルIF)18と、データインタフェース(データIF)19とを有している。FPGA14からデータIF19は、解析ユニット3の内部に設けられたデータバスライン21を介して、相互に接続されている。また、撮像ユニット2と解析ユニット3とは、データバスライン21およびシリアルバスライン20を介して、相互に接続されている。
RAM15には、撮像ユニット2から供給される輝度画像データに基づいて生成された視差画像等が記憶される。ROM16には、オペレーションシステムおよびオブジェクト検出プログラム等の各種プログラムが記憶されている。
FPGA14は、各撮像部10A、10Bでそれぞれ撮像された撮影画像のうち、一方を基準画像とすると共に他方を比較画像とする。そして、FPGA14は、撮像領域の中の同一地点に対応する基準画像上の対応画像部分と比較画像上の対応画像部分との位置ズレ量を、対応画像部分の視差値Dとして算出する。
ここで、図3を用いて、視差値Dの算出方法について説明する。図3は、被写体30と各撮像部10A、10Bの撮像レンズ11A、11Bとの位置関係の一例を示す図である。なお、各撮像部10A、10Bは、撮像レンズ11Aの中心から撮像レンズ11Bの中心に向かう方向をX軸として、各撮像部10A、10Bの光軸方向をZ軸とする、XYZ座標系に置かれているとする。また、各撮像レンズ11A、11Bの間の間隔b、および各撮像レンズ11A、11Bの焦点距離fは、ともに固定値であるとする。このとき、被写体30上の点Pの結像位置Paの撮像レンズ11Aの中心からのずれ量をΔ1とする。また、被写体30上の点Pの結像位置Pbの撮像レンズ11Bの中心からのずれ量をΔ2とする。この場合、FPGA14は、被写体30上の点Pに対する各撮像部10A、10Bの各撮像レンズ11A、11Bを通した結像位置の差である視差値Dを、式1によって算出する。
D=|Δ1−Δ2|・・・(式1)
FPGA14は、撮像ユニット2から供給される輝度画像データに対して、例えばガンマ補正処理および歪み補正処理(左右の撮影画像の平行化)等のリアルタイム性が要求される処理を施す。また、FPGA14は、このようなリアルタイム性が要求される処理を施した輝度画像データを用いて、式1の演算を行うことで、視差値Dを生成してRAM15に書き込む。
CPU17は、ROM16に記憶されているオペレーションシステムに基づいて動作し、各撮像部10A、10Bの撮像制御を行う。また、CPU17は、ROM16からオブジェクト検出プログラムをロードし、RAM15に書き込まれた視差値Dを用いて各種処理を実行する。具体的には、CPU17は、オブジェクト検出プログラムに基づいて、車両1に設けられた各センサから、データIF19を介して取得した車速、加速度、操舵角、ヨーレート等のCAN(Controller Area Network)情報を参照する。そして、CPU17は、路面、ガードレール、車両、人間等の認識対象物の認識処理、視差計算、認識対象物との間の距離の計算等を行う。なお、認識対象物の視差検出精度を向上させるために、視差検出中は車両1を停止させておいてもよい。
ここで、視差値Dは、図3に示す各撮像レンズ11A、11Bから被写体30までの距離をZoとして、以下の式2で算出できる。
D=(b×f)/Zo・・・(式2)
式2からわかるように、各撮像レンズ11A、11Bから被写体30までの距離Zoは、視差値Dを用いて、以下の式3で算出できる。
Zo=(b×f)/D・・・(式3)
CPU17は、撮像ユニット2から供給される前記の視差値Dを用いて、被写体30との間の距離Zoを算出する。
(立体物認識装置の機能構成の説明)
次に、図4を用いて、立体物認識装置10の機能構成について説明する。図4は、立体物認識装置10の機能構成の一例を示す機能ブロック図である。
立体物認識装置10は、背景データ処理と、学習モデル生成処理と、物体検出処理とを行う。背景データ処理は、撮像ユニット2で撮像したステレオ画像から視差画像D(x,y)(不図示)を生成するとともに、生成された視差画像D(x,y)の中から路面と物体(立体物、オブジェクト)とを識別して、識別された立体物を俯瞰画像にマッピングする処理である。学習モデル生成処理は、道路環境において、路面から高さを有する先行車両、歩行者、障害物等の立体物の学習モデルを生成する処理である。物体検出処理は、背景データ処理で生成した俯瞰画像と、学習モデル生成処理で生成したオブジェクトの学習モデルとに基づいて、撮像ユニット2で撮像したステレオ画像の中から、路面から高さを有する立体物を検出する処理である。
立体物認識装置10は、FPGA14と、RAM15と、ROM16とが協働することによって、前記した各処理を実行する。そして、立体物認識装置10は、前記した各処理に応じた機能構成を実現する。
(背景データ処理を実現する機能構成の説明)
図4(a)に示すように、背景データ処理は、ステレオ画像取得部40と、視差画像生成部41と、路面推定部42と、俯瞰画像群生成部43とで実現される。
ステレオ画像取得部40は、画素毎に距離情報を有する距離画像を時系列で取得する。より具体的には、ステレオ画像取得部40は、撮像ユニット2で撮像したステレオ画像を取得する。なお、ステレオ画像取得部40は、取得手段の一例である。
視差画像生成部41は、ステレオ画像取得部40が取得したステレオ画像から、画素毎に距離情報を備えた距離画像の一例である視差画像D(x,y)を生成する。視差画像D(x,y)は、画素毎に視差値Dを有する画像である。
すなわち、視差画像生成部41は、撮像部10Aの輝度画像データを基準画像データとし、撮像部10Bの輝度画像データを比較画像データとし、前記した式1に示す演算を行うことで、基準画像データと比較画像データの視差値Dを算出する。具体的には、視差画像生成部41は、基準画像データの所定の「行」について、一つの注目画素を中心とした複数画素(例えば16画素×1画素)からなるブロックを定義する。一方、比較画像データにおける同じ「行」において、定義した基準画像データのブロックと同じサイズのブロックを1画素ずつ横ライン方向(X方向)へずらす。そして、視差画像生成部41は、基準画像データにおいて定義したブロックの画素値(画素に格納された値、輝度値)の特徴を示す特徴量と比較画像データにおける各ブロックの画素値の特徴を示す特徴量との相関を示す相関値を、それぞれ算出する。
また、視差画像生成部41は、算出した相関値に基づき、比較画像データにおける各ブロックの中で最も基準画像データのブロックと相関があった比較画像データのブロックを選定するマッチング処理を行う。その後、基準画像データのブロックの注目画素と、マッチング処理で選定された比較画像データのブロックの対応画素との位置ズレ量を視差値Dとして算出する。このような視差値Dを算出する処理を基準画像データの全域、または特定の一領域について行うことで、視差画像D(x,y)を得る。
マッチング処理に用いるブロックの特徴量としては、例えばブロックの中の各画素の値(輝度値)を用いることができる。また、相関値としては、例えば基準画像データのブロックの中の各画素の値(輝度値)と、これらの画素にそれぞれ対応する比較画像データのブロックの中の各画素の値(輝度値)との差分の絶対値の総和を用いることができる。この場合、総和が最も小さくなるブロックが、最も相関があるブロックとして検出される。
視差画像生成部41が行うマッチング処理としては、例えば、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画素未満のサブピクセルレベルの視差値Dが必要な場合は、推定値を用いる。推定値の推定手法としては、例えば等角直線方式、または二次曲線方式等を用いることができる。ただし、推定したサブピクセルレベルの視差値Dには誤差が発生する。このため、推定誤差を減少させるEEC(推定誤差補正)等の手法を用いてもよい。
なお、本実施の形態においては、視差値Dと距離値が等価に扱えることから、距離画像の一例として視差画像D(x,y)を示すが、距離画像の形態はこれに限られない。例えば、ミリ波レーダやレーザレーダから得られる距離情報と、ステレオカメラで生成される視差値Dとを融合させて距離画像を生成しても良い。
路面推定部42は、取得手段が取得した視差画像D(x,y)(距離画像)から、横軸を視差値D、縦軸をy座標値として、画素値を頻度とする2次元ヒストグラムを作成する。以下、この2次元ヒストグラムを「V-Disparityマップ(Vマップ)」と呼ぶ。そして、路面推定部42は、2次元ヒストグラムの中から立体物を識別する。なお、路面推定部42は、識別手段および路面検出手段の一例である。
具体的には、路面推定部42は、例えば、撮像ユニット2が撮像した撮影画像P1(x,y)が、図5(a)に示すように、画面の奥に向かって延びる平坦な路面60上を走行する車両61の左側に電柱62が存在する景色である場合に、以下の処理を行う。すなわち、撮影画像P1(x,y)の中の、視差値Dおよびy座標値を有する画素(D,y)について、対応するVマップV(D,y)の画素(D,y)に、画素値を一つカウントアップした度数(頻度)を付与する。そして、路面推定部42は、横軸を視差値D、縦軸をy座標値、画素値を頻度とした2次元ヒストグラム上の各画素(D,y)に投票を行うことで、図5(b)に示すVマップV(D,y)を作成する。
作成されたVマップV(D,y)には、図5(b)に示すように、右下がりの直線として路面60を表す領域が投票される。そして、路面60を表す領域の上方に、車両61および電柱62を表す領域が投票される。路面推定部42は、このVマップV(D,y)における右下がりの直線状の画素群を特定することによって、路面60に相当する画素群を特定する。すなわち、図5(b)に示すVマップV(D,y)においては、路面60より下の部分の視差値Dは検出されない。このため、図5(b)に斜線で示す領域Aに相当する視差値Dはカウントされることはない。このように、路面推定部42は、ステレオ画像取得部40が取得した時系列のVマップV(D,y)の中から路面60を検出するとともに、路面60と路面60から高さを有する立体物とを識別する。
もしノイズ等により路面60より下の領域(路面60より低い部分)において視差値Dが検出されれば、これらの視差値Dは、以降のオブジェクト検出において利用しないようにすればよい。なお、オブジェクトの高さを検出するためには、路面60を正確に検出することが必要となる。そのため、立体物認識装置10を搭載した車両1が停止している状態において検出される路面60に相当する仮想直線(図5(b)における右下がりの直線)を用いて、当該仮想直線から所定距離内における画素(D,y)のみをマッピングしたVマップV(D,y)(制限Vマップ)、すなわち、路面から所定の高さ範囲を有する画素(D,y)のみを路面検出に利用してもよい。
次に、生成されたVマップV(D,y)を用いて路面形状を検出する路面推定部42の動作を説明する。路面推定部42は、各オブジェクトの高さの基準とする基準オブジェクトの一例である路面60を検出する。路面推定部42は、VマップV(D,y)上で路面60と推定される位置を直線近似する。路面60が平坦な場合は、一本の直線で近似する。また、途中で勾配が変わる路面60の場合、VマップV(D,y)上を複数の区間に分割して直線近似を行う。これにより、途中で勾配が変わる路面60の場合でも、精度よく直線近似を行うことができる。
具体的に説明すると、路面推定部42は、まず、VマップV(D,y)を用いて路面候補点を検出する。路面候補点の検出は、横軸を二つに分割し、それぞれの領域で候補点の検出方法を変える。具体的には、路面推定部42は、視差値Dの大きい近距離の領域においては、第1の候補点検出方法で路面候補点の検出を行う。また、路面推定部42は、視差値Dの小さい遠距離の領域においては、第2の候補点検出方法で路面候補点の検出を行う。
ここで、上記のように視差値Dの大きい近距離の領域と視差値Dの小さい遠距離の領域とで路面候補点の検出方法を変更する理由は、以下の通りである。すなわち、例えば、図5(a)に示す撮影画像P1(x,y)のように、近距離では路面60の面積が大きく、路面上の視差データがVマップV(D,y)に投票される頻度が大きいのに対し、遠距離では路面60の面積が小さくなり、路面60を表す座標の頻度が相対的に小さくなる。つまり、VマップV(D,y)で路面60として予測される点の頻度値は、遠距離では小さく、近距離では大きい。このため、同じ基準で路面候補点を検出すると、近距離では路面60の候補点は検出できるが、遠距離の路面候補点は検出困難となり、遠距離の路面検出精度が低下する。
このような欠点を解消するために、VマップV(D,y)を視差値Dの大きい領域と視差値Dの小さい領域とに分け、各領域で、路面候補点の検出の方法および基準を変更してもよい。これにより、近距離および遠距離の双方の路面検出精度を向上させることができる。
俯瞰画像群生成部43は、マッピング手段の一例であって、ステレオ画像取得部40が取得した時系列の距離画像の中から、路面推定部42が立体物として識別した領域を、ステレオ画像取得部40の設置位置とは異なる位置、例えば路面を真上から見下ろした時系列の俯瞰マップJ2(x,D)にマッピングする。より具体的には、俯瞰画像群生成部43は、横軸に実距離x、縦軸に視差値Dをとり、画素値として頻度dをプロットした俯瞰画像、すなわち2次元ヒストグラムを生成する。なお、2次元ヒストグラムの横軸は実距離xに限定されるものではなく、実際の画素の位置としてもよい。
俯瞰画像群生成部43は、VマップV(D,y)に投票された点のうち、路面60からの高さが所定の範囲、例えば20cmから3mの範囲にあることを示す画素(D,y)のみを選択する。そして、俯瞰画像群生成部43は、選択された画素(D,y)を俯瞰画像にマッピングする。なお、俯瞰画像群生成部43が生成した俯瞰画像は、後述する学習モデル生成部44と、非定常領域検出部45および孤立領域検出部46に対する入力データとする。
俯瞰画像群生成部43は、俯瞰画像と高さの俯瞰画像を同時に作成する。これは、横軸に実距離x、縦軸に視差値Dをとり、画素値にその画素(x,D)に投票された視差値Dの最大高さ(検出した路面60からのy方向の差分最大値)を記録したマップを作成することに相当する。画素(x,D)の分解能を、俯瞰画像と同じにすることによって、俯瞰画像の生成処理を簡便に行うことができる。作成された俯瞰画像は、後述する対応領域検出部47の入力データとする。なお、学習モデル生成時に、ノイズ等の影響を受けにくくするために、俯瞰画像生成時に平滑化等の処理を行ってもよい。
次に、図6を用いて、俯瞰画像群生成部43の作用を具体的に説明する。図6(a)は、撮像ユニット2で撮像された撮影画像P2(x,y)の一例を示す図である。図6(b)は、図6(a)の撮影画像P2(x,y)に対応する俯瞰画像J2(x,D)の一例を示す図である。なお、俯瞰画像J2(x,D)は、俯瞰マップの一例である。
図6(a)の撮影画像P2(x,y)は、左右に壁状のガードレール70a、70bが設けられた路面60に、3人の歩行者、すなわち、歩行者80a、80b、80cが立っている状態を示している。
俯瞰画像群生成部43が、撮影画像P2(x,y)から俯瞰画像J2(x,D)を生成する。俯瞰画像J2(x,D)の横軸は、実距離xとなっている。なお、俯瞰画像J2(x,D)の縦軸Dは、例えば、距離に応じた間引き率を用いて間引き処理した視差値Dとしてもよい。例えば、50m以上の遠距離の場合、俯瞰画像群生成部43は、間引き処理しない視差値Dを用いてもよい。また、例えば、20〜50m等の中距離の場合、俯瞰画像群生成部43は、1/2に間引き処理した視差値Dを用いてもよい。また、例えば10〜20m等の近距離の場合、俯瞰画像群生成部43は、1/3に間引き処理した視差値Dを用いてもよい。また、例えば0〜10m等の最近距離の場合、俯瞰画像群生成部43は、1/8に間引き処理した視差値Dを用いてもよい。
遠方では、認識すべき立体物が小さいため、視差情報が少ない。また、距離の分解能も大きいため、間引き処理は行わない。これに対して、近距離の場合は、立体物が大きく写るため、視差情報が多く距離の分解能も小さい。このため、大きな間引き処理を行うことが可能となる。図6(b)の俯瞰画像J2(x,D)からわかるように、ガードレール70a、70bは、道路に沿って縦方向(奥行方向)に延びる直線状に表される。また、歩行者80a、80b、80cは、実際の存在位置に応じた位置に射影される。
俯瞰画像群生成部43は、前記した俯瞰画像J2(x,D)の生成処理を、所定の時間間隔t0で周期的に実行する。これにより、俯瞰画像J2(x,D,t)、J2(x,D,t+t0)、J2(x,D,t+2t0)、…が生成される。なお、俯瞰画像J2(x,D,t)は、時刻tにおいて生成された俯瞰画像J2(x,D)を表す。以下、簡単のため、俯瞰画像J2(x,D,t)を、単にJ2(x,D)と表記する。生成された一連の俯瞰画像群51は、例えばRAM15、または図2に不図示のHDD(Hard Disk Drive)等の記憶装置に記憶される。この俯瞰画像群51は、後述する学習モデル生成処理で用いられる。
(学習モデル生成処理を実現する機能構成の説明)
再び図4に戻って、立体物認識装置10の機能構成の説明を続ける。図4(b)に示すように、立体物認識装置10が行う学習モデル生成処理は、学習モデル生成部44で実現される。すなわち、学習モデル生成部44は、路面推定部42によって、立体物として識別された領域について、当該立体物の学習モデル52を作成する。なお、学習モデル生成部44は、モデル作成手段の一例である。
次に、学習モデル生成部44の機能構成について、図7を用いて説明する。図7は、学習モデル生成部44の詳細構成を示す機能ブロック図である。
図7に示すように、学習モデル生成部44は、撮影画像取得部90と、生成手段の一例である生成部91と、学習部92と、非定常領域検出手段の一例である算出部93と、判別手段の一例である判別部94とを備える。
学習モデル生成処理は、立体物認識装置10が検出する立体物(オブジェクト)、具体的には路面60上に存在する、路面60から高さを有して、時刻とともにその位置が変化する先行車両、歩行者、障害物等のいわゆる非定常領域を、予め学習させる処理である。なお、学習モデル生成処理は、後述する物体検出処理とは独立して実行してもよいし(オフライン処理)、物体検出処理を実行しながら学習モデル生成処理を実行してもよい(オンライン処理)。すなわち、オブジェクトの学習を事前に行ってもよいし、オブジェクトの検出を行いながらオブジェクトの学習を行ってもよい。なお、オンライン処理によって学習モデル52を生成する場合には、立体物認識装置10は、学習モデル生成部44をモデル生成装置44aとして、学習モデル生成処理を、物体検出処理と同時に動作させる。
撮影画像取得部90は、撮像ユニット2から撮影画像P1(x,y)(図5(a)参照)を取得する。生成部91は、1枚の撮影画像P1(x,y)に対して、複数の異なる空間フィルタFi(i=1,2,…)を作用させて、図示しない複数のフィルタ画像Fi(x,y)を生成する。本実施の形態では、空間フィルタFiを作用させることによって、撮影画像P1(x,y)の中の、各空間フィルタFiに対応する方向を有するエッジ強度を表す複数のフィルタ画像Fi(x,y)を生成する。作用させる空間フィルタFiの数は、例えば12とするが、これに限るものではない。12個の空間フィルタFi(i=1〜12)を用いる場合は、例えば、3つのスケール×4つのエッジ方向(0度方向、45度方向、90度方向、135度方向)等とする。フィルタ係数としては、例えば、以下の式4〜式7で表される4つの係数の組を使用する。なお、式4〜式7に示す空間フィルタFi(i=1〜4)の各係数は、代表的なエッジ検出フィルタであるPrewittフィルタを構成しているが、他の形式のフィルタであってもよい。
また、スケールとしては、等倍のものに加えて、例えば、撮影画像P1(x,y)を1/4倍、1/8倍に縮小したものを用いる。そして、各スケールの画像に対して前記した空間フィルタFiを作用させて、空間フィルタFiを作用させた結果を等倍に戻すことで、合計12個のフィルタ画像Fi(x,y)が得られる。また、本実施の形態では、前記の空間フィルタFiを作用させない状態の撮影画像P1(x,y)(例外的に、フィルタ画像Fi(x,y)の一態様と考えてもよい)も加えて、合計13個のフィルタ画像Fi(x,y)を用いて学習モデル52の生成を行う。
学習部92は、予め用意された、オブジェクトの複数の画像を元に、当該オブジェクトを学習する。より具体的には、学習部92は、空間フィルタFi毎に、対象形状を表現するパラメータを有する1以上の学習モデル52を含むモデル群を学習する。すなわち、本実施の形態では、学習部92は、13個のフィルタ画像Fi(x,y)と1対1に対応する13個のモデル群を学習することになる。そして、本実施の形態では、パラメータとして、複数の撮影画像P1(x,y)の各画素値の平均(画素平均値)μ(x,y)と分散(画素分散値)σ2(x,y)とを採用する。ただし、パラメータの種類は、これに限られるものではない。
以下、学習部92が行うオブジェクトの学習方法について説明する。ここでは、任意の一の空間フィルタFiに対して、複数(K個)のモデルを含むモデル群である学習モデル52を学習する場合を例に挙げて説明する。モデルとしては、撮影画像P1(x,y)の画素値が正規分布を持つと仮定して、そのようなモデルが複数(K個)存在することを前提とする。そして、撮影画像P1(x,y)は、複数の学習モデル52のうちの何れかから生成された画像であるとする。ここで、学習モデル52のいずれから生成された画像が観測されたものかは不明であり、隠れ変数となっている。オブジェクトの学習(学習モデル52の推定)が完了すると、モデル毎の画素平均値μ(x,y)と画素分散値σ2(x,y)とが得られる。
隠れ変数とパラメータとは同時に決めることができないため、ここでは、隠れ変数を持つ場合のパラメータの推定に有効なEMアルゴリズムを用いて学習を行う。以下、EMアルゴリズムのEステップとMステップについて説明する。
オブジェクトの学習は、まずEステップからスタートする。学習部92は、入力画像(前記した一の空間フィルタFiに対応するn枚の画像(オブジェクトを含むフィルタ画像Fi(x,y)))の各画素(x,y)について、K個のモデル毎のZスコアZnk(x,y)を算出する。ここで、入力画像であるn番目のフィルタ画像Fi(x,y)を、入力画像In(x,y)とすると、入力画像In(x,y)の画素(x,y)のk番目のモデルであるモデルk(k=1,…,K)に対するZスコアZnk(x,y)は、以下の式8で表される。
式8において、μk(x,y)およびσ2 k(x,y)は、モデルkの画素(x,y)のパラメータである。より具体的には、μk(x,y)は、モデルkの画素(x,y)の画素平均値、σ2 k(x,y)は、モデルkの画素(x,y)の画素分散値である。なお、このZスコアZnk(x,y)は、ある値が分布の中でどのあたりに位置するかを、平均値0、標準偏差1の標準正規分布に置き換えて表した値である。なお、本実施の形態では、特徴量としてZスコアZnk(x,y)を用いるが、確率モデル的に画素値を用いて計算することができれば、特徴量はZスコアZnk(x,y)に限定されない。
次に、学習部92は、n番目の入力画像In(x,y)がモデルkに当てはまる確率enkを求める。確率enkは、以下の式9で表すことができる。式9において、記号Πは、総乗を示す記号である。本実施の形態では、学習部92は、ZスコアZnk(x,y)を平均0、分散1の標準正規分布の式に代入して、確率密度を画素(x,y)毎に求め、画素(x,y)毎または領域毎の確率密度の積を計算して同時確率を求める。なお、式9におけるX、Yは、それぞれ入力画像In(x,y)の横方向および縦方向の画素数である。ここでは、画素(x,y)毎ではなく入力画像In(x,y)全体に亘る画素値の分布から確率enkを求めている。このようにすることで、入力画像In(x,y)全体を見ながら、どの学習モデル52に該当するかを示す確率enkを適切に求めることができる。
次に、学習部92は、確率enkを使用して、入力画像In(x,y)が、それぞれどの学習モデル52から生成されたものかの期待値に相当する負担率γnkを求める。負担率γnkは、以下の式10により求めることができる。式10におけるNは、入力画像In(x,y)の総数、Kはモデル数を表す。以上がEステップの内容である。
Eステップ完了後、学習部92は、Mステップで各モデルkのパラメータを推定する。より具体的には、学習部92は、負担率γnkで重みを付けたモデルkの各画素(x,y)の画素平均値μk(x,y)を求める。本実施の形態の例では、画素平均値μk(x,y)は、以下の式11により求めることができる。
また、学習部92は、負担率γnkで重みを付けたモデルkの各画素(x,y)の画素分散値σ2 k(x,y)を求める。本実施の形態の例では、画素分散値σ2 k(x,y)は、以下の式12により求めることができる。
なお、式11、式12におけるNkは、以下の式13により求める。
Mステップが完了した後、学習部92は、前回からのパラメータの変動がしきい値以下になるまで(収束条件を満たすまで)、Eステップに戻って処理を繰り返す。Eステップの処理とMステップの処理とを繰り返すことにより、隠れ変数がある状態でモデルのパラメータを推定することができる。なお、初期値は一例として、μk(x,y)は乱数、σ2 k(x,y)は1であってもよいし、立体物認識装置10の操作者が入力画像In(x,y)を見ながら、種類を分類できるように、入力画像In(x,y)をどちらのモデルに判別すべきかが明確な場合には、モデルの初期値として、その入力画像In(x,y)の画素値をμk(x,y)としてもよい。このようにして、学習部92は、モデルk(k=1,…,K)のパラメータ(μk(x,y)、σ2 k(x,y))を学習する。
なお、前記したEステップとMステップとを備えたアルゴリズム(EMアルゴリズム)は、統計学において、確率モデルのパラメータを最尤推定する手法の一つであり、確率モデルが観測不可能な潜在変数に依存する場合に用いられる手法である。EMアルゴリズムは、反復法の一種であり、期待値(expectation、E)ステップと最大化(maximization、M)ステップとを交互に繰り返すことで計算が進行する。Mステップでは、Eステップで求められた尤度の期待値を最大化するようなパラメータを求める。Mステップで決まったパラメータは、次のEステップで使われる潜在変数の分布を決定するために用いられる。
図8は、学習部92が行う処理の流れの一例を示すフローチャートである。各ステップの具体的な内容は前記した通りであるので、適宜説明を省略する。なお、図8に示す各ステップの処理は、作用させる空間フィルタFiの個数分だけ実施されるが、ここでは、説明の便宜上、1つの空間フィルタFiに対応する処理を説明する。図8に示すように、学習部92は、対象となる空間フィルタFiに対応する入力画像In(x,y)に含まれる複数の画素(x,y)の各々について、K個のモデル毎のZスコアZnk(x,y)を算出する(ステップS11)。次に、学習モデル生成部44は、確率enkを求める(ステップS12)。次に、学習部92は、負担率γnkを求める(ステップS13)。次に、学習部92は、各モデルkのパラメータ(μk(x,y)、σ2 k(x,y))を算出する(ステップS14)。なお、ステップS11からステップS13の処理はEステップに該当し、ステップS14の処理はMステップに該当する。
次に、学習モデル生成部44は、前回からのパラメータ(μk(x,y)、σ2 k(x,y))の変動がしきい値以下であるか否かを判断する(ステップS15)。ステップS15の結果が否定の場合(ステップS15:No)、前記のステップS11以降の処理を繰り返す。ステップS15の結果が肯定の場合(ステップS15:Yes)、ステップS14で算出したパラメータ(μk(x,y)、σ2 k(x,y))を最終的なパラメータとして決定する(ステップS16)。以上のようにして決定されたパラメータ(μk(x,y)、σ2 k(x,y))は、学習モデル52(図4(b)参照)として、例えばRAM15、または図2に不図示のHDD等の記憶装置に記憶される。
図9は、学習部92が行う処理の前提となるモデル推定問題についての説明図である。なお、図9のサンプル画像は、「画像応用技術専門委員会 外観検査アルゴリズムコンテスト2014」(外観検査アルゴリズムコンテスト2014、主催:精密工学会 画像応用技術専門委員会)の課題画像から引用したものを加工して使用している。図9は、モデルkが2種類(何れかの空間フィルタFiに対応するモデル群に含まれるモデルが2種類)、すなわちモデル数Kが2の場合の例である。図9では、各画素(x,y)(の画素値)が正規分布を持つと仮定したモデルが2つあり、観測できる画像は何れかのモデルkから生成された画像であるとする。ここで、観測画像がどのモデルkから生成されたのかは不明であり、隠れ変数となっている。学習が完了、つまりモデルkの推定が完了すると、図9の左に示すモデル毎の画素平均画像と画素分散画像とが得られる。
前記したように、本実施の形態の学習処理では、負担率γnkを最適化させる画素平均値μk(x,y)および画素分散値σ2 k(x,y)が決定されて記憶される。図9(a)は、図8のステップS16で決定された画素平均値μk(x,y)および画素分散値σ2 k(x,y)を画素(x,y)毎にマッピングして可視化したものである。本実施の形態では、図9(a)に示す情報を使用して、確率enkおよび負担率γnkに基づいて、隠れ変数であるモデルを観測画像から推定する。
再び、学習モデル生成部44の機能の説明を続ける。算出部93は、生成された複数のフィルタ画像Fi(x,y)と、学習されたモデル群とに基づいて、全てのモデルを考慮したZスコアである統合スコアを算出する。
まず、算出部93は、複数のフィルタ画像Fi(x,y)と1対1に対応する複数のモデル群を用いて、複数のフィルタ画像Fi(x,y)の画素(x,y)毎に、対応するモデル群との差分に応じた値を示す(本実施の形態の例ではモデル群との差が大きいほど高い値を示す)スコアを算出する。算出部93は、複数のフィルタ画像Fi(x,y)の画素(x,y)毎に、該画素(x,y)の画素値と、対応するモデル群のパラメータとに基づいて、ZスコアZnk(x,y)を算出する。
以下、任意の一のフィルタ画像Fi(x,y)に対応するモデル群を用いて、該フィルタ画像Fi(x,y)に含まれる各画素(x,y)のZスコアZnk(x,y)を算出する方法を説明する。ここでは、任意の一のフィルタ画像Fi(x,y)に対応するモデル群にはK個のモデルが含まれている場合を例に挙げて説明するが、これに限らず、例えばモデル群には1個のモデルのみが含まれる形態であってもよい(モデル群に含まれるモデルの数は任意である)。
算出部93は、上記一のフィルタ画像Fi(x,y)に含まれる各画素(x,y)について、式8を用いて、モデル毎のZスコアZnk(x,y)を求める。また、算出部93は、式9を用いて、確率enkを求める。そして、算出部93は、上記一のフィルタ画像Fi(x,y)に含まれる各画素(x,y)について、以下の式14を用いて、モデルからのハズレ量、つまり乖離量Sn(x,y)を求める。モデル群が複数のモデルを含む多モデルでは、この乖離量Sn(x,y)が、学習したモデルの発生確率に基づくZスコアZnk(x,y)となる。本実施の形態の例では、算出部93は、上記一のフィルタ画像Fi(x,y)の各画素(x,y)の乖離量Sn(x,y)を最終的なZスコアZnk(x,y)として算出する。つまり、本実施の形態では、何れかのフィルタ画像Fi(x,y)に対応するモデル群が複数のモデルを含む場合、算出部93は、該フィルタ画像Fi(x,y)に含まれる複数の画素(x,y)の各々について、該画素(x,y)の各モデルとの差分に応じた値を示す単位スコア(本実施の形態の例ではK個のモデル毎のZスコアZnk(x,y))と、該フィルタ画像が各モデルに当てはまる確率enkと、に基づいて該画素(x,y)の最終的なZスコアZnk(x,y)を決定している。
算出部93は、以上のようにして、複数のフィルタ画像Fi(x,y)の各々に含まれる画素(x,y)毎にZスコアZnk(x,y)を算出する。なお、以下の説明では、m番目のフィルタ画像Fi(x,y)の画素(x,y)のZスコアをZm(x,y)と表記する場合がある。
なお、ここでは、各画素(x,y)の発生確率に正規分布を仮定しているので、このZスコアZnk(x,y)は、入力した画像の該当画素が学習したモデルを考えた時に、標準正規分布で何σ(σは標準偏差)の発生確率となるということを示している。なお、本実施の形態の例では多モデルを用いる場合について記載したが、もちろん単モデルを仮定して同じことを行ってもよく、その場合には、k=1として、学習時に式11および式12でモデルを求めて、検出時に式5によってZスコアZnk(x,y)を算出すればよい。また、ここでは各画素(x,y)は正規分布を持つと仮定したが、より精度を上げるには、上記多モデルで行ったのと同じように、EMアルゴリズムを用いて混合ガウス分布としてモデル化しても良い。なお、混合ガウス分布とは、複数のガウス分布の線形重ね合わせで表されるモデルである。
さらに算出部93は、複数のフィルタ画像Fi(x,y)に亘って互いに対応する複数の画素(x,y)の各々のZスコアZm(x,y)を統合した結果を示す統合スコアZtotal(x,y)を算出する。つまり、複数のフィルタ画像Fi(x,y)を統合した1枚の画像の各画素(x,y)の統合スコアZtotal(x,y)を算出すると考えてよい。本実施の形態の例では13個のフィルタ画像Fi(x,y)の画素数は同じであり、各画素(x,y)は互いに対応しているものとする。また、ここでは、ZスコアZm(x,y)は、標準正規分布における標準偏差であるので、算出部93は、複数のフィルタ画像Fi(x,y)に亘って互いに対応する画素(x,y)毎に、該複数の画素(x,y)の各々のZスコアZm(x,y)に対応する発生確率Pm(x,y)の同時確率に基づいて統合スコアZtotal(x,y)を算出する。より具体的には、算出部93は、以下の式15によりZスコアZm(x,y)に対応する発生確率Pm(x,y)を算出し、以下の式16により統合スコアZtotal(x,y)を算出する。
なお、ここでは統合スコアZtotal(x,y)を統合するために同時確率を使用したが、それ以外にも以下の式のように、ZスコアZm(x,y)の平均値、または合計値などを用いても良い。
なお、当然のことながら、学習時には、正常な画像(モデルとなる立体物の、途切れや階調異常のない画像)を用いることが望ましいが、正常な画像に対して、若干の異常が混入している場合であっても、本手法は異常が混入した画像の発生確率が若干低下するだけで適用が可能である。
前記した統合スコアZtotal(x,y)は、全てのモデル群を考慮した値である。この値は、全ての空間フィルタFi、つまり多様なスケールや多様なエッジ方向などの要素を全て統一的に、標準正規分布における標準偏差という根拠ある発生確率として示したものであり、いわゆる生産工程などで良く用いられる何σまで許容するかという値と一致する。そのため、この統合スコアZtotal(x,y)でしきい値を決めることで、空間フィルタFi毎に個別のしきい値を設定する必要がなくなる。
以上のように、学習モデル生成部44は、1枚の撮影画像P1(x,y)に複数の異なる空間フィルタFiを作用させて、複数のフィルタ画像Fi(x,y)を生成する。そして、学習部92は、生成した複数のフィルタ画像Fi(x,y)の各々に含まれる画素(x,y)毎に、対応するモデル群との差分に応じたZスコアZm(x,y)を算出する。そして、複数のフィルタ画像Fi(x,y)に亘って互いに対応する複数の画素(x,y)の各々のZスコアZm(x,y)を統合した統合スコアZtotal(x,y)を算出する。算出された統合スコアZtotal(x,y)は、学習モデル52として、例えばRAM15、または図2に不図示のHDD等の記憶装置等に記憶される。図10は、学習モデル生成部44が統合スコアZtotal(x,y)を算出するアルゴリズムの全体構成を示す模式図であり、前記した処理の流れを模式的に示した図である。
なお、学習モデル生成部44は、フィルタ群を一括して演算するWavelet変換を使用しても良い。その場合、学習モデル生成部44は、図11に示す処理を実行する。図11は、学習モデル生成部44が行う処理の変形例の流れを示す模式図である。
すなわち、学習モデル生成部44は、図11に示すように、まず入力画像In(x,y)をWavelet変換することで、多階層の画像(前記した複数の空間フィルタFiと1対1に対応する複数の階層と考えてもよい)を含む1枚の画像に変換する(ステップS20)。すなわち、入力画像In(x,y)は、Wavelet変換により、マルチスケールと縦横のエッジを抽出した1枚の画像となる。次に、その画像を、予め学習により得られた学習モデル52と比較し(ステップS21)、前記した実施の形態と同様に、各画素(x,y)のZスコアZm(x,y)を算出する(ステップS22)。なお、この場合の1つのモデルは、フィルタ画像Fi(x,y)毎のモデル(階層毎のモデル)を統合した1つのモデルであると考えることができる。見方を変えれば、この場合の1つのモデルは、複数のフィルタ画像Fi(x,y)と1対1に対応する複数のモデルを含むと考えることもできる。
その後、学習モデル52に当てはまるかを判別するしきい値処理を行う(ステップS23)。すなわち、ZスコアZm(x,y)が何σ以下であれば、学習モデル52に当てはまるかの判別基準となるしきい値を設定してしきい値処理を行う。そして、逆Wavelet変換により元の1枚の画像に戻す(ステップS24)ことで、画素(x,y)毎のZスコアZm(x,y)を統合した統合スコアZtotal(x,y)が得られる。結果として、前記した実施の形態と同様に、入力画像In(x,y)に含まれる各画素(x,y)の統合スコアZtotal(x,y)を得ることができる。この形態によれば、Wavelet変換を用いることで、フィルタ群を一括して演算するため、計算時間を減らすことができるというメリットがある。
なお、学習モデル生成部44は、1枚の撮影画像P1(x,y)の中に存在する複数種類のオブジェクトをそれぞれ学習するようにしてもよい。例えば、撮影画像P1(x,y)の中に、先行車両と歩行者とが同時に写っている場合である。また、学習モデル生成部44は、1枚の撮影画像P1(x,y)の中に存在する複数の状態を有する立体物をそれぞれ学習するようにしてもよい。例えば、撮影画像P1(x,y)の中に、異なるポーズの複数の歩行者が写っている場合等である。
(物体検出処理を実現する機能構成の説明)
再び図4に戻って、立体物認識装置10の機能構成の説明を続ける。立体物認識装置10が行う物体検出処理は、背景データ処理(図4(a)参照)で説明した各機能部に加えて、図4(c)に示す非定常領域検出部45と、孤立領域検出部46と、対応領域検出部47と、実空間情報算出部48と、棄却処理部49と、トラッキング処理部50とで実現される。
非定常領域検出部45は、撮像ユニット2で撮像したステレオ画像の中から、時間とともにその位置が変化する非定常領域であって、尚且つ路面から高さを有する先行車両、歩行者、障害物等の立体物を検出する。
孤立領域検出部46は、非定常領域を形成する画素群を一つのグループとして出力する孤立領域検出処理を行う。例えば、立体物認識装置10は、2人の隣接した歩行者が画像内に進入してきた場合等に、2人の歩行者を一つの非定常領域として出力する可能性がある。孤立領域検出部46は、そのような検出結果に対して俯瞰画像J2(x,D)上における画素の隣接状態をチェックすることにより、孤立領域毎にグルーピングし直して、立体物の分離性能を向上させる。
孤立領域検出処理は、非定常領域検出部45で得られる俯瞰画像J2(x,D)の中の検出矩形内を非定常領域としてその内部の視差に対して、隣接画素の連結から孤立領域毎にグルーピングする処理である。隣接画素を検出する手法としては、画像処理においてよく用いられているラベリング手法を用いる。本処理では8近傍の隣接関係を持つ画素に対して孤立領域を検出している。これは4近傍の隣接関係を持つ画素に対して実施しても良い。立体物が密接しているようなシーンでは、4近傍画素のラベリングを用いて分離性能を上げる等の処理を行ってもよい。
図12は、孤立領域検出部46が行うラベリング処理について説明する図であり、図12(a)は、仮の番号を付与した状態の一例を示す図である。図12(b)は、付与された仮の番号を付け替える処理の一例を示す図である。図12(c)は、ラベリング処理を完了した状態の一例を示す図である。ラベリング処理は、2値画像、すなわち、立体物を示す画素に、例えば「1」が格納されて、立体物を示さない画素に、例えば「0」が格納された画像に対して適用される。
ラベリング処理のアルゴリズムは種々提案されているが、一般には、2段階に亘る処理が行われる。まず、図12(a)に示すように、対象となる画像上をラスタースキャンすることによって、立体物を示す画素、すなわち「1」が格納された画素に、仮の番号を付与する。図12(a)の例では、該当する画素に、1から4までの仮の番号が付与される。ここで、着目画素Qは、現在着目している画素を表す。図12(a)の例では、画素Qが立体物を示す画素である場合、着目画素Qには「5」が格納される。
そして、対象となる画像全体に亘って、図12(a)に示す処理を行った後で、付与された仮の番号を付け替える処理を行う。このとき、立体物を示す着目画素Qに隣接する画素が存在する場合、隣接する画素に付与された最も小さい仮の番号を、画素Qに付与する。なお、本実施の形態では、着目画素Qに隣接する画素は、着目画素Qの上下左右、斜め上下の合計8画素とする(8隣接)。また、着目画素Qの上下左右の計4画素を隣接画素としてもよい(4隣接)。
すなわち、図12(b)の例では、着目画素Qに隣接する8画素には、「8、9」が付与されているため、着目画素Qには、図12(a)の処理で付与された仮の番号である「5」が、図12(c)に示すように、「8」に付け替えられる。以上の処理を画像全体に対して行うことによって、画像内にある立体物毎に、立体物の数を示す番号が付与される。
再び、図4に戻って説明を続ける。対応領域検出部47は、俯瞰画像J2(x,D)上で検出した立体物の位置と幅、最小視差に基づいて、視差画像D(x,y)の中から、検出するべき立体物の候補領域、すなわち、撮影画像P1(x,y)における立体物の水平範囲(xmin,xmax)(不図示)を決定する。
また、対応領域検出部47は、視差画像D(x,y)において、立体物の高さと位置を決定する。すなわち、視差画像D(x,y)において、立体物の最小視差値Dmin(不図示)を与える、撮影画像P1(x,y)における路面60からの高さに相当する縦方向位置ymin(不図示)と、視差画像D(x,y)において、立体物の最大視差値Dmax(不図示)を与える、撮影画像P1(x,y)における路面60からの高さに相当する縦方向位置ymax(不図示)と、を決定する。
そして、対応領域検出部47は、立体物の正確な位置を検出するために、設定した立体物の候補領域の内部を走査して、検出した矩形領域の奥行きが、最小視差値Dmin(不図示)と最大視差値Dmax(不図示)の範囲である視差値Dを有する画素を、立体物の候補画素として抽出する。
実空間情報算出部48は、対応領域検出部47の検出結果から、撮像ユニット2に対する相対的な横位置と距離、実空間上での幅、奥行き(サイズ情報)をそれぞれ決定する。
棄却処理部49は、実空間情報算出部48が算出したオブジェクトのサイズ情報に基づいて、オブジェクトを判別する「サイズ棄却処理」を行う。検出対象が明確に決まっている場合は、ステレオカメラで得られる視差画像D(x,y)を用いた立体物の3次元的な形状に基づいた棄却処理である「形状棄却処理」や、輝度画像の特徴を用いた「輝度特徴処理」を用いても良い。
棄却処理部49は、画像上のサイズ、立体物の実空間上のサイズに基づいて、出力すべき立体物を選別する棄却処理を行う。撮影画像P1(x,y)上のサイズを用いた棄却処理では、立体物までの距離により考え方が異なるため、下限しきい値のみを設ける。例えば、i番目の立体物の画像幅をOPWi(不図示)、画像高さをOPHi(不図示)とし、幅下限しきい値をTHW(不図示)、高さ下限しきい値をTHH(不図示)とすると、棄却処理部49は、OPWi<THW、またはOPHi<THHとなる立体物を、検出対象となる立体物ではないと判断して棄却する。実空間上のサイズを用いた棄却処理では、検出対象を分類する場合は、検出したい立体物以外のサイズを持つ立体物を棄却する。
例えば、形状棄却処理は、検出対象が人の場合はステレオカメラで得られる人が持つ山の形状特徴に基づいて棄却判断を行う処理としても良い。また検出対象が色で判別できる場合は、検出結果の中の色差に基づいて、棄却判断を行っても良い。
棄却処理部49は、対応領域検出部47の検出結果に基づき、出力すべき立体物を選別する棄却処理を行う。棄却処理部49は、立体物のサイズに着目したサイズ棄却と、立体物同士の位置関係に着目したオーバラップ棄却とを実行する。例えば、図13は、棄却処理で用いる設定値の一例を示す図である。
図13に示すオブジェクト情報は、RAM15等の記憶装置に記憶されている。図13に示すように、例えば、「幅1100mm未満、高さ2500mm未満、奥行き1000mmを超える」サイズのオブジェクトの種類は、自転車として規定されている。同様に、「幅1100mm未満、高さ2500mm未満、奥行き1000mm以下」のサイズのオブジェクトの種類は、歩行者として規定されている。同様に、「幅1100mm以下、高さ2500mm未満、奥行き5000mm未満」のサイズのオブジェクトの種類は、車両として規定されている。
棄却処理部49は、撮影画像P1(x,y)上の立体物のサイズと、図13に示すオブジェクト情報とを比較することによって、立体物の種類を特定する。そして、棄却処理部49は、図13に示すサイズ範囲に当てはまらないサイズの検出結果を棄却する。
トラッキング処理部50は、時系列で得られる俯瞰画像群51に対して、前回の物体検出結果を利用して、新たな俯瞰画像J2(x,D)に対する物体検出処理を行う。具体的には、過去の撮像フレームの画像検出処理で検出されたオブジェクト(立体物)を追跡する処理を実行する。
具体的には、過去の画像検出処理で検出されたオブジェクトの情報を示すオブジェクトデータリスト53が、例えばRAM15、または図2に不図示のHDD等の記憶装置に保存される。オブジェクトデータリスト53は、例えば、検出したオブジェクトデータの最新情報(最新の位置、大きさ、距離、相対速度、視差情報)に加え、オブジェクト予測データ(次の撮像フレームにおいて当該オブジェクトがどの位置にいるかを推測する情報)、非定常領域検出部45やトラッキング処理部50で利用するオブジェクト特徴量、当該オブジェクトが検出されたフレーム数、または連続して検出されなかったかを示す検出/未検出フレーム数、当該オブジェクトが追跡すべき対象かどうかを示す要追跡確度(安定フラグ)等を含む。
(物体検出処理の具体例の説明)
次に、図14を用いて、物体検出処理の具体例について説明する。図14は、物体検出処理の具体例を示す図であり、図14(a)は、撮像ユニット2で撮像された撮影画像P3(x,y)の一例を示す図である。図14(b)は、図14(a)の撮影画像P3(x,y)に対応する俯瞰画像J3(x,D)の一例を示す図である。図14(c)は、非定常領域の検出結果の一例を示す図である。図14(d)は、孤立領域の検出結果の一例を示す図である。
図14(a)に示す撮影画像P3(x,y)の中には、路面60の左右に設けられた壁状のガードレール70a、70bと、2人の歩行者80d、80eが写っている。俯瞰画像群生成部43(図4参照)は、撮影画像P3(x,y)から生成したVマップV(D,y)(図14に不図示)を俯瞰画像J3(x,D)にマッピングする。
次に、非定常領域検出部45(図4参照)は、俯瞰画像J3(x,D)の中から、非定常領域を検出する。図14(c)の例では、左のガードレール70aに対応する領域と、右のガードレール70bに対応する領域と、歩行者80fに対応する領域とが検出される。
孤立領域検出部46は、非定常領域の検出結果(図14(c))に対して、孤立領域検出処理を行う。その結果、図14(d)に示すように、歩行者80dと歩行者80eとを分離して検出することができる。
なお、本実施の形態の例では、立体物認識装置10は、CPU17が、各種処理をソフトウェアで実現することとしたが、一部または全部を、IC(Integrated Circuit)等のハードウェアで実現してもよい。また、オブジェクト検出プログラムは、インストール可能な形式、または実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD、ブルーレイディスク(登録商標)、半導体メモリ等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。DVDは、「Digital Versatile Disk」の略記である。また、オブジェクト検出プログラムは、インターネット等のネットワーク経由でインストールする形態で提供してもよい。また、オブジェクト検出プログラムは、機器内のROM等に予め組み込んで提供してもよい。
以上説明したように、本実施の形態に係る立体物認識装置10によれば、ステレオ画像取得部40(取得手段)が、画素毎に距離情報を有する視差画像D(x,y)(距離画像)を時系列で取得して、路面推定部42(識別手段)が、ステレオ画像取得部40が取得した時系列の視差画像D(x,y)の中から立体物(オブジェクト)を識別して、俯瞰画像群生成部43(マッピング手段)が、ステレオ画像取得部40が取得した視差画像D(x,y)の中から、路面推定部42によって立体物として識別された領域を、ステレオ画像取得部40の設置位置とは異なる位置から見た時系列の俯瞰マップJ2(x,D)にマッピングする。そして、学習モデル生成部44(モデル作成手段)が、ステレオ画像取得部40によって立体物として識別された領域について、当該立体物の学習モデル52(モデル)を予め作成するとともに、判別部94(判別手段)が、俯瞰画像群生成部43によってマッピングされた俯瞰マップJ2(x,D)と、学習モデル生成部44が予め作成した学習モデル52と、に基づいて、時系列の視差画像D(x,y)が含む立体物を判別する。したがって、複雑な環境においても高精度・高速に動体を検出することができる。特に、予め生成した立体物の学習モデル52を用いて物体検出処理を行う(オフライン処理)ことができる。なお、ステレオ画像取得部40は、前記した一連の処理を完了するまでの間、すなわち、距離画像の取得から立体物を検出するまでの間、同じ位置に留まっている必要がある。
また、本実施の形態に係る立体物認識装置10によれば、視差画像D(x,y)は、撮像ユニット2(ステレオカメラ)で撮像された画像情報に基づくものであるとともに、路面推定部42(識別手段)は、ステレオ画像取得部40(取得手段)が取得した時系列の視差画像D(x,y)の中から、路面60を検出する路面推定部42(路面検出手段)を更に備えて、俯瞰画像群生成部43(マッピング手段)は、路面推定部42が検出した路面60よりも高い位置に存在する立体物までの距離に対応する視差値Dを、俯瞰マップJ2(x,D)にマッピングする。したがって、路面60を検出した後、路面60から高さを有する領域のみに処理範囲を限定することによって、路面60の写り込みや路面60に引かれた白線等の影響を受けることなく、立体物を確実に検出することができる。
また、本実施の形態に係る立体物認識装置10によれば、俯瞰マップJ2(x,D)は、横軸を実距離x、縦軸を視差値Dとして、画素値に、当該画素の位置における視差値Dの発生頻度をマッピングした2次元ヒストグラムである。視差値Dは実距離に対応する量であるため、したがって、縦軸、横軸ともに実距離に相当するため、遠方の立体物も確実に検出することができる。
また、本実施の形態に係る立体物認識装置10によれば、判別部94(判別手段)は、生成部91(生成手段)が、一つの入力画像In(x,y)に対して、複数の異なる空間フィルタFiを作用させることによって生成した複数のフィルタ画像Fi(x,y)に対して、算出部93(非定常領域検出手段)が、フィルタ画像Fi(x,y)の各々に対して、予め立体物の形状を表現するパラメータを有する1以上の学習モデル52を含むモデル群を用いて、複数の空間フィルタFiに対応するモデル毎の、入力画像In(x,y)の各部分の発生確率Pm(x,y)を、対応する部分を一の画像に統合した結果に基づいて、非定常領域を検出する。したがって、検出対象の種類によらずに、統一的な方法で、学習モデル52に合致する立体物を検出することができる。
また、本実施の形態に係る立体物認識装置10によれば、算出部93(非定常領域検出手段)は、入力画像In(x,y)の各部分の発生確率Pm(x,y)の同時確率に基づく統合スコアZtotal(x,y)に基づいて、非定常領域を検出する。したがって、非定常領域を検出する際に、空間フィルタFi毎に個別のしきい値を設定する必要がなくなる。
また、本実施の形態に係る立体物認識装置10によれば、算出部93(非定常領域検出手段)は、入力画像In(x,y)の各部分の発生確率Pm(x,y)を、ある値が分布の中でどのあたりに位置するかを、平均値0、標準偏差1の標準正規分布に置き換えて表したZスコアZm(x,y)の平均値に基づいて、非定常領域を検出する。したがって、様々な入力画像In(x,y)に対して、統一的に一定の基準で、学習モデル52に合致する立体物を検出することができる。
また、本実施の形態に係る立体物認識装置10によれば、生成部91(生成手段)は、多重解像度を有するとともに、エッジ方向を算出する複数の空間フィルタFiを備える。したがって、路面60上に存在して、路面60との間に輝度差を有する立体物を、確実に検出することができる。
また、本実施の形態に係る立体物認識装置10によれば、算出部93(非定常領域検出手段)は、複数の立体物を表現する複数の学習モデル52毎に、学習モデル52の中の複数の領域の特徴量である画素平均値μk(x,y)および画素分散値σ2 k(x,y)を算出するとともに、入力画像In(x,y)が、複数の学習モデル52のいずれに当てはまるかを表す確率enkを計算して、算出した確率enkに基づいて特徴量を最適化した複数の学習モデル52を用いて、入力された入力画像In(x,y)を複数の学習モデル52と比較する。したがって、検出対象となる立体物の形状や姿勢に関する制約条件を緩和することができる。
また、本実施の形態に係る立体物認識装置10によれば、算出部93(非定常領域検出手段)は、入力画像In(x,y)の各部分の発生確率Pm(x,y)を、正規分布に基づくモデルを用いて算出する。したがって、算出された発生確率Pm(x,y)に基づいて算出される統合スコアZtotal(x,y)は、いわゆる生産工程などで良く用いられる何σまで許容するかという値と一致する。そのため、モデルに合致する立体物であるかを判別する際に、この統合スコアZtotal(x,y)でしきい値を決めることによって、空間フィルタFi毎に個別のしきい値を設定する必要がなくなる。
また、本実施の形態に係る立体物認識装置10によれば、ステレオ画像取得部40(取得手段)が、画素毎に距離情報を有する視差画像D(x,y)(距離画像)を時系列で取得して、路面推定部42(識別手段)が、ステレオ画像取得部40が取得した時系列の視差画像D(x,y)の中から立体物を識別して、俯瞰画像群生成部43(マッピング手段)が、ステレオ画像取得部40が取得した時系列の視差画像D(x,y)の中から、路面推定部42によって立体物として識別された領域を、ステレオ画像取得部40の設置位置とは異なる位置から見た時系列の俯瞰マップJ2(x,D)にマッピングする。そして、学習モデル生成部44(モデル作成手段)が、ステレオ画像取得部40によって立体物として識別された領域について、当該立体物の学習モデル52を作成するとともに、判別部94(判別手段)が、ステレオ画像取得部40が時系列で取得した視差画像D(x,y)に基づき学習モデル生成部44が随時作成した立体物の学習モデル52を用いて、視差画像D(x,y)が含む立体物を判別する。したがって、撮影画像P1(x,y)を撮像しながら、学習モデル生成処理と物体検出処理を同時に実行する(オンライン処理)ことができる。
また、本実施の形態に係る撮像装置10aは、撮像ユニット2(撮像手段)が、ステレオ画像を撮像して、ステレオ画像取得部40(取得手段)が、撮像ユニット2により撮像されてから、画素毎に距離情報を有する視差画像D(x,y)(距離画像)を時系列で取得して、路面推定部42(識別手段)が、ステレオ画像取得部40が取得した時系列の視差画像D(x,y)の中から立体物を識別して、俯瞰画像群生成部43(マッピング手段)が、ステレオ画像取得部40が取得した時系列の視差画像D(x,y)の中から、路面推定部42によって立体物として識別された領域を、ステレオ画像取得部40の設置位置とは異なる位置から見た時系列の俯瞰マップJ2(x,D)にマッピングする。そして、学習モデル生成部44(モデル作成手段)が、ステレオ画像取得部40によって立体物として識別された領域について、当該立体物の学習モデル52を予め作成するとともに、判別部94(判別手段)が、俯瞰画像群生成部43によってマッピングされた俯瞰マップJ2(x,D)と、学習モデル生成部44が予め作成した学習モデル52と、に基づいて、時系列の視差画像D(x,y)が含む立体物を判別する。したがって、複雑な環境においても高精度・高速に立体物を検出することができる。
また、本実施の形態に係る車両1は、立体物認識装置10または撮像装置10aを備える。したがって、走行中に路面60上の立体物を高精度・高速に検出することができる。特に、視差検出中は車両1を停止させておくことによって、立体物の視差検出精度を向上させることができる。なお、前記した一連の処理をリアルタイム(例えば、略ビデオレート)で実行することができれば、車両1が走行中であっても、立体物の検出を行うことができる。
以上、本発明の実施の形態について説明したが、前記した実施の形態は、例として提示したものであり、本発明の範囲を限定することは意図していない。この新規な実施の形態は、その他の様々な形態で実施されることが可能である。また、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。また、この実施の形態は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。