【実施例1】
【0020】
(実施例1の物体検出装置の全体の構成)
図1は、本発明の実施例1における物体検出装置20の全体を示す概略の機能ブロック図である。
【0021】
物体検出装置20は、物体を撮影する左カメラ21L及び右カメラ21Rからなるステレオカメラ21を有している。このステレオカメラ21の出力側には、視差算出部22、3D距離画像生成部としての距離・3D情報算出部23、前方路面からのカメラ高さ・傾き推定部24、前方路面に合わせた傾き変換部25、OGM生成部としてのOGM算出部26、ノイズ除去部27、物体検出部28、検出物体情報の出力部29及び、グローバルマップ表示部30が、縦続接続(cascade connection)されている。これらの視差算出部22、距離・3D情報算出部23、前方路面からのカメラ高さ・傾き推定部24、前方路面に合わせた傾き変換部25、OGM算出部2626、ノイズ除去部27、物体検出部28、検出物体情報の出力部29及びグローバルマップ表示部30は、例えばコンピュータ等の情報処理装置によって構成されている。
【0022】
ステレオカメラ21は、左カメラ21Lによって左画像を取得し、右カメラ21Rによって右画像を取得する装置であり、この出力側に視差算出部22が接続されている。視差算出部22は、ステレオカメラ21から入力される左右画像から画素毎の視差を求めるものであり、この出力側に距離・3D情報算出部23が接続されている。
【0023】
距離・3D情報算出部23は、算出された視差から、物体までの距離と3D座標値を求めるものであり、この出力側に、前方路面からのカメラ高さ・傾き推定部24及び前方路面に合わせた傾き変換部25が接続されている。前方路面からのカメラ高さ・傾き推定部24及び前方路面に合わせた傾き変換部25は、高さ・ピッチ・ロール変換を行うものであり、前方の路面から平面の傾き(ピッチ、ロール)と平面に対するカメラ位置高さとを推定し、この推定した高さ・傾き情報から、3D座標値を路面に平行な3D座標系へと変換する機能を有し、この出力側に、OGM算出部26が接続されている。
【0024】
OGM算出部26は、第1OGMへの投票・閾値処理を行うものであり、変換された3D座標系において、ある条件を満たす3D点を路面に平行な2Dマップである第1OGM上に、予め決めた重みを掛けて投票し、得られた投票数から、第2占有グリッドマップ(Redundant Occupancy Grid Map、以下「ROGM」又は「第2OGM」という。)に対する投票値を求める。ROGMとは、従来のOGMを改良し、物体位置に関わらず、安定した物体検出を可能にする2次元マップであり、従来のOGMに対し、「冗長な」という意味のRedundantを加えた略語である。OGM算出部26では、更に、得られたROGMの投票値に対して、画像を2値化する機能を有している。このOGM算出部26の出力側には、ノイズ除去部27と物体検出部28が接続されている。
【0025】
ノイズ除去部27と物体検出部28は、算出された2値のマップであるROGMに対して適切な回数の収縮・膨張処理を行い、処理された2値のROGMに対してラベリング処理を行い、更に、予め決めた幅、高さ等の大きさを満たす物体のみを抽出する機能を有し、この出力側に、検出物体情報の出力部29が接続されている。ここで、収縮・膨張処理はノイズ除去部27により、ラベリング処理は、物体検出部28により行われる。
【0026】
検出物体情報の出力部29は、抽出された物体に識別子(ID)、幅、高さ等の情報を付与して出力するものであり、この出力側に、グローバルマップ表示部30が接続されている。グローバルマップ表示部30は、出力部29の出力結果を表示画面に表示するものである。
【0027】
(実施例1の物体検出方法の全体の処理)
図2Aは、
図1の物体検出装置20を用いた本実施例1の物体検出方法における全体の処理を示すフローチャートであり、
図2Bは、
図2AのステップS4の詳細を示すフローチャートである。
【0028】
本実施例1の物体検出方法では、
図1の物体検出装置20により、ステップS1〜S12の処理が行われる。
【0029】
物体検出の処理が開始されると、先ず、ステップS1において、ステレオカメラ21によって前方の物体が撮影され、撮影された左右の画像が、視差算出部22へ入力され、ステップS2へ進む。ステップS2において、視差算出部22は、入力された左右画像から画素毎に視差値を求め、ステップS3へ進む。ステップS3において、距離・3D情報算出部23は、求められた視差値から物体までの距離と3D座標値を求め、ステップS4,S5へ進む。
【0030】
ステップS4において、前方路面からのカメラ高さ・傾き推定部24及び前方路面に合わせた傾き変換部25は、前方の路面から平面の傾き(ピッチ、ロール)と平面に対するカメラ位置高さとを推定し、ステップS5へ進む。ステップS5において、傾き変換部24は、推定した高さ・傾き情報から、3D座標値を路面に平行な3D座標系へと変換し、ステップS6,S7,S8へ進む。
【0031】
ステップS4の詳細を
図2Bにより説明する。
ステップS4−1において、前方路面の指定された範囲の3D点座標のpi= (Xi, Yi, Zi)の個数を求めnとし、全てのpiに対する平均値を取り、重心qとし、ステップS4−2において、分散共分散行列Cを求める。
ステップS4−3において、ヤコビ法によりCの固有値と固有ベクトルを求め、最小固有値に対応する固有ベクトルを(u
X, u
Y, u
Z)とし、ステップS4−4において、全てのpiに対してh=u
XX+u
YY+u
ZZを求め、hの平均値ε、分散σを求める。
ステップS4−5において、ε−2σ<h<ε+2σを満たさないpiをサンプル点から除外する。
ステップS4−6において、残ったサンプル点に対して前方路面の指定された範囲の3D点座標のpi= (Xi, Yi, Zi)の個数を求めn とし、ステップS4−7において、全てのpiに対する平均値を取り、重心q=(Xa, Ya, Za)とし、分散共分散行列C=Σ(pi−q)(pi−q)
Tを求める。
ステップS4−8において、ヤコビ法により、Cの固有値と固有ベクトルを求め、最小固有値に対応する固有ベクトルを(uX, uY, uZ)とし、ステップS4−9において、ロール(θ
X), ピッチ(θ
Y), ヨー(θ
Z)を求め、ステップS4−10においてカメラの高さ、h(h=u
XXa+u
YYa+u
ZZa)を求める。
【0032】
上記のステップS4の各ステップによる、所謂平面当てはめ法によりカメラの高さの推定ができる。つまり、ステレオカメラ21で得られた前方路面のある範囲内の3次元点群データを用いて、前方路面を近似する平面の法線ベクトルを求め、その法線ベクトルからカメラ座標のロール、ピッチ、ヨーの3つの角度が求まり、その法線ベクトルから、その平面の高さのパラメータも求まり、カメラの路面に対する高さが求まる。従って、前方路面の傾き等を反映した路面座標(Xs,Ys,Zs)が得られる。本発明では、このように推定した路面座標を、路面座標系とも呼ぶ。
【0033】
ステップS4の処理をリアルタイムで実行することにより、リアルタイムでカメラの路面に対する傾き情報と高さ情報が得られる。これにより、後部重量物の搭載や急な加減速による車両の状態の変化による影響を避けることができる。車両に近い前方路面は、一般に平坦であると想定できる。アスファルト等の路面に対して、良好なステレオカメラキャリブレーションを施され、十分な広さのダイナミックレンジを持つカメラであれば、撮影されたカメラ画像は、ステレオマッチングのために十分なテクスチャを持つため、路面上の密な3D点群情報が得られる。これらの情報から、前方路面を近似するような前方路面の傾き等を反映した路面座標系(Xs,Ys,Zs)を得ることができる。これにより、上記課題5を解決することができる。
【0034】
ステップS6において、OGM算出部26は、変換された3D座標系において、ある条件を満たす3D点を、路面に平行な2次元マップであるOGM上に予め決めた重みを掛けて投票し、ステップS7へ進む。ステップS7において、OGM算出部26は、得られた投票数からROGMに対する投票値を求め、ステップS8へ進む。ステップS8において、OGM算出部26は、得られたROGMの投票値に対して、ある閾値以上のセルは、物体が存在する状態(1)とし、それ以外のセルには、物体が存在しない状態(0)として画像を2値化し、ステップS9,S10,S11へ進む。
【0035】
ステップS9において、ノイズ除去部27は、算出された2値のROGMに対して適切な回数の収縮処理及び膨張処理を行い、ステップS10へ進む。ステップS10において、物体検出部28は、処理された2値のROGMに対してラベリング処理を行い、ステップS11へ進む。ステップS11において、物体検出部28は、ラベリング処理結果から、予め決めた幅、高さ等の大きさを満たす物体のみを抽出し、ステップS12へ進む。
【0036】
ステップS12において、検出物体情報の出力部29は、抽出された物体にID、幅、高さ等の情報を付与する。付与された情報は、グローバルマップ表示部30によって表示され、物体検出処理が終了する。
【0037】
(
図2AのステップS1〜S3の詳細)
ステレオカメラ21による距離算出は、左カメラ21Lと右カメラ21Rとの視差の違いから、カメラ間距離等を用いて、三角測量の原理によって求められる。同じレンズとセンサを用いたカメラを左カメラ21L及び右カメラ21Rとして用い、レンズの焦点距離をf、カメラ間距離(ベースライン長)をw、センサの画素サイズ(一辺のサイズ)をu、そして視差をd(pix)とすると、ステレオカメラ21から物体までの距離Lは、次式(1)で表される。
L=fw/du・・・・(1)
【0038】
この式(1)から分かるように、距離Lは、視差dに反比例するため、視差dが小さいほど遠くなり、視差dが大きいほど近くになる。また、視差dの変化に対する距離Lの変化を考えると、式(1)から下記の式(2)が求まる。この式(2)は、ある視差dにおいて、視差dの微小な変化(視差誤差△d)に対して、距離Lがどれくらい変わるかを示している。ここで、△Lは、距離の変化(距離誤差)を示す。例えば、レンズ焦点距離f=6mm、カメラ間距離w=210mm、センサ画素サイズu=3.75μm(=0.00375mm)という値を実際に考えた場合の式が得られている。
【0039】
【数1】
【0040】
一般に、ステレオカメラ21を用いて視差dを求める際に、1画素未満の精度で求める手法が提案され、それによって、例えば、1/4〜1/10画素程度の精度が実現されている。実際にその精度が実現されるかどうかは、被写体となる物体上のテクスチャの濃さやエッジの強さによって影響される。
【0041】
仮に、物体が常にある程度のテクスチャがあると仮定でき、且つ、それによって視差誤差△dの大きさのサブピクセル(例えば、1/4pix)であるとすると、ある視差dに対して、式(2)で表されるような距離誤差△Lが得られる。
本実施例1では、その距離誤差△Lを基にしてOGMに対する投票を考え直している。
【0042】
即ち、ステレオ処理(左右画素間の対応づけ)を行って、ある画素に対して視差dが求まっている。そして、期待できるサブピクセル精度として、視差誤差△dを決めておく。その場合に、式(2)によって、視差dに対する距離Lの誤差ΔLを含んだ変動幅が得られる。その範囲を確率密度と考え、その範囲に含まれるセルに対して投票を行う。その際に、使用する情報処理装置の性能に応じて、性能が高ければ、ガウス分布のような分布に応じた投票とし、また、性能が低ければ、同じ確率密度を持つものとして、均等に投票する。これにより従来の課題4を解決している。
【0043】
(
図2AのステップS3〜S7の詳細)
図3Aは本発明の実施例1におけるROGM40の例を示す図であり、
図3Bは、第1OGMとしての従来のOGM10の例を示す図である。OGM10には、複数のセル11(=11−1,11−2)が配置されている。なお、各セル11は正方形として図示されているが、OGM10の設計によって、それは横長の長方形でも縦長の長方形でもなりうるが、ここでは説明の便宜上、正方形としている。
【0044】
図3Bに示すように、物体がたまたまOGM10の2つのセル11−1,11−2の境界位置にあったとき、物体を検知して投票した点群13aは、図示のようになる。
【0045】
OGM10の1つの効能として、センサであるステレオカメラ21のノイズの除去が挙げられる。本当の物体に対するステレオカメラ出力の点群13aの数に対して、ステレオカメラ21のノイズによる点群の数は、相対的に少ないと考えられる。そのため、セル11−1,11−2に投票された点群13aの数に対して適切な閾値を設定して、それ以上のものだけを物体として検出することにより、ノイズを除去できる。
【0046】
もし、その閾値を、物体検出のために必要な数に対してぎりぎりの値としていた場合、2つのセル11−1,11−2の境界位置に物体が存在していると、この物体を検出できないおそれがある。例えば、
図3Bの場合には、物体に対して10個の点群13aが投票されている。この場合、閾値をぎりぎりの10個としていると、実際の投票は、左側のセル11−1と右側のセル11−2に分かれているので、どちらのセル11−1,11−2も5個の投票となり、閾値の10個に届かず、その物体を検出できない。そこで、本実施例1では、そのような従来の課題1を解決するために、
図3Aに示すような第2OGMとしてのROGM40を用いている。
【0047】
図3Aに示すように、ROGM40には複数のセル31(例えば、2つのセル31−1,31−2)が配置され、これらの2つのセル31−1,31−2の中央に、新たに領域をオーバーラップさせた冗長なセル31−3が配置されている。中央の冗長なセル31−3にも、左右のセル31−1,31−2と同様に投票すると、その冗長なセル31−3に対する投票された点群33aの数が10個となり、閾値以上の投票となって従来のOGM10では検出できなかった物体を検出できる。
【0048】
つまり、従来のOGM10では、格子状のオーバーラップしないセル11−1,11−2を用いているが、本実施例1では、オーバーラップさせたセル31−3を冗長に配置することで、左右のセル31−1,31−2の境界付近に存在する物体(33a)の検出を可能にし、物体位置に関わらず安定した検出を可能にしている。
図4Aは、本発明の実施例1におけるROGM40の他の例を示す図であり、
図4Bは従来のOGM10の他の例を示す図である。
【0049】
図3Bの場合は、従来のOGM10において2つのセル11−1,11−2の境界付近に物体が存在した場合であったが、
図4Bのように、従来のOGM10において4つのセル11(=11−1〜11−4)の境界付近に物体が存在する場合もある。このような場合には、
図4Aに示すように、本実施例1のROGM40において4つのセル31(=31−1〜31−4)の中央に、冗長な1つのセル31−5を配置することによって、
図3Aの2つのセル31−1,31−2の場合と同様に、中央に追加したセル31−5では、投票された点群33aの数が10個となり、その物体が検出できるようになる。
【0050】
以上述べたことを、一般性をもって処理できるように、ROGM40のアルゴリズムを構成する。
【0051】
図5は、本発明の実施例1におけるROGM40の他の例を示す図である。本実施例1の
図3Aに示すROGM40では、1つのセル31−1に対して横方向に、セル31−1の幅の半分だけずらして、新たなセル31−3を配置する。同様に、本実施例1の
図5に示すROGM40では、縦方向に、セル31−1の高さの半分だけずらして、新たなセル31−5を配置する。そして、本実施例1の
図4Aに示すように、斜め方向に新たなセル31−5を配置する。
【0052】
図6A、
図6B及び
図6Cは、本実施例1のROGM40における複数のセル31の別の配置例を示す図であり、
図8Aは、従来のOGM10における複数のセル11の配置例を示す図である。
【0053】
前記の
図3A、
図3B、
図4A、
図4B、
図5の複数のセル31,11の配置例から、それらのセル31、11の中心を「×」で表すと、本実施例1のROGM40のセル31の配置は、
図6Aのようになり、従来のOGM10のセル11の配置は、
図6Dのようになる。従来のセル11の中心の数と元々のセル11の数に対して、密度として比較すると、本実施例1では、横方向で2倍、縦方向で2倍、縦横合計で4倍の数となっている。
【0054】
以上述べたことを、一般性をもって処理できるように、本実施例1のROGM40のアルゴリズムを以下のように構成していく。
【0055】
図6Aに示された「×」の点を格子点とするような新たなグリッドを構成する。このグリッドは、元のグリッドの半分(縦横共に)の大きさのセル31を持っている。但し、新しいセル31の中心は、「×」印ではなく、セル31の四隅の位置に「×」印が来るように配置する。その新しいグリッドとセル31は、
図6Bのようなものになる。
【0056】
これらのグリッドに対して、従来と同様に、ステレオカメラ21の出力を、位置に応じて新しい各セル31に対して投票する。投票が終わってから、縦横2×2の新しいセル31の全ての投票数を加算して、「×」印の位置の投票数として登録する。これを全ての「×」印に対して行い、その数を登録する。
【0057】
中央の「×」印に対して、投票される新たな小さなセル31の投票範囲を、
図8Cの灰色部分31gとして表した。また、元々のセル31の中央位置は、新しく求めた小さなセルの2×2の領域の中央位置と一致しているので、元のセル31との位置のずれはない。
【0058】
この処理によって、全ての「×」印の位置において、それに対する投票の範囲は、元のセル31と同じサイズのものとなり、それが、縦横が元のサイズの半分の割合で求まったことになる。これは、前記のように「×」印の点で、投票範囲がそれぞれ元のセルサイズの半分ずつオーバーラップした範囲の投票数が求まっていることになる。
【0059】
以上で、本実施例1におけるROGM40の投票処理が終了する。この投票処理により、従来に比して閾値を大きくしても物体の検出が可能となり、よりノイズに強い検出が可能になる。但し、得られた物体位置は、隣のセル31でも検出されやすくなるので、実際の物体範囲よりも大きめになり、膨らんで検出される。しかし、後で述べる収縮処理及び膨張処理によって、検出されたセル31を統合し、その統合された複数のセル31の中から、実際にステレオカメラ21が出力している部分だけを抽出することにより、膨らんでいない実体サイズに近い領域を検出することができる。従って、従来の課題1を解決できる。
【0060】
図7Aは、本発明の実施例1におけるROGM40のアルゴリズム1の処理例を示すフローチャートである。このアルゴリズム1では、
図2AのステップS3〜S7に対応する処理がステップS20〜S36により行われる。
【0061】
処理開始が開始されてステップS20に進むと、ステレオカメラ21にて取得される左右の画像中の画素(ix,iy)(但し、ix;左右のX軸方向の画素値、iy;前後のY軸方向の画素値)において、画素値iyを初期値(=0)に設定し、更に、次のステップS21において、画素値ixを初期値(=0)に設定し、ステップS22へ進む。
【0062】
ステップS22において、距離・3D情報算出部23は、画素(ix,iy)に対するカメラ座標系の3D座標(X,Y,Z)を求め、ステップS23へ進む。ステップS23において、前方路面からのカメラ高さ・傾き推定部24及び前方路面に合わせた傾き変換部25は、予め決めたステレオカメラ21に対するロール・ピッチ・高さ情報から、3D座標(X,Y,Z)を路面座標(Xs,Ys,Zs)に変換し、ステップS24へ進む。
【0063】
ステップS24において、OGM算出部26は、路面座標(Xs,Ys,Zs)がOGM10の範囲内にあるか否かを判定し、範囲外(No)のときにはステップS26へ進み、範囲内(Yes)のときにはステップS25へ進む。ステップS25において、OGM算出部26は、路面座標値Xs,Ysを整数化した座標値iXs,iYsに対応するOGM10に座標値Xsの2乗値を加算し、ステップS26へ進む。
【0064】
なお、座標(Xs,Ys)のセルに対する添え字(iXs,iYs)の密度は、ROGM40の添え字(iXs2,iYs2)の密度と同じになる。
ROGM40の一つのセルのサイズは、後述する式(3)により倍となるため、従来のOGM10に比べるとセルサイズは従来のOGM10の半分のサイズにしておくことが望ましい。
【0065】
ステップS26において、OGM算出部26は、座標値ixに1を加算し、この加算値ix+1が座標値nxより小さいか否か(ix<nx?)をステップS27で判定し、小さいときには(Yes)ステップS22へ戻り、大きいときには(No)ステップS28へ進む。ステップS28において、OGM算出部26は、座標値iyに1を加算し、この加算値iy+1が座標値nyより小さいか否か(iy<ny?)をステップS29で判定し、小さいときには(Yes)ステップS21へ戻り、大きいときには(No)ステップS30へ進む。
【0066】
ステップS30において、OGM算出部26は、座標値iYs2を初期値(=0)に設定し、更に、ステップS31において、座標値iXs2を初期値(=0)に設定し、ステップS32へ進む。
ステップS32において、OGM算出部26は、次式(3)の演算を行い、ROGM40に対する投票値ROGM(iXs2,iYs2)を求め、更に、ステップS33〜S36の処理を繰り返す。
ROGM(iXs2,iYs2)=OGM(iXs2,iYs2)+OGM(iXs2,iYs2+1)+OGM(iXs2+1,iYs2)+OGM(iXs2+1,iYs2+1) ・・・・(3)
【0067】
OGM算出部26は、ステップS33において、座標値iXs2に1を加算し、ステップS34において、その加算値iXs2+1が座標値nXsより小さいか否か(iXs2<nXs?)を判定し、小さいときには(Yes)ステップS32へ戻り、大きいときには(No)ステップS35へ進む。更に、OGM算出部26は、ステップS35において、座標値iYs2に1を加算し、ステップS36において、その加算値iYs2+1が座標値nYsより小さいか否か(iYs2<nYs?)を判定し、小さいときには(Yes)ステップS31へ戻り、大きいときには(No)アルゴリズム1の処理を終了する。
【0068】
図7Bは、本発明の実施例1におけるROGM40のアルゴリズム2の処理例を示すフローチャートである。このアルゴリズム2では、
図2AのステップS8に対応する処理がステップS40〜S45により行われる。
【0069】
ステップS40では、OGM算出部26により、ROGM40の各セル31に対する投票値ROGM(iXs2,iYs2)がアルゴリズム1で求められている。ステップS41において、OGM算出部26は、求められた投票値ROGM(iXs2,iYs2)が予め決めた閾値TH以上か否か(投票値ROGM(iXs2,iYs2)≧閾値TH?)を判定し、閾値TH以上のときには(Yes)ステップS42において、そのセル31に物体が存在し、閾値THより小さければ(No)、ステップS43において、そのセル31に物体が存在しないとする。OGM算出部26は、ステップS44において、セル31に対する物体の存在の状態値として、+1か0を与える。これにより、OGM算出部26は、ステップS45において、ROGM40の状態を2値の画像として表示することができる。
【0070】
(
図2AのステップS6の詳細)
図8は、課題3の解決方法を説明するための図である。
【0071】
例えば、ステレオカメラ21から見て前方に、横2m×縦2mのサイズ(前面投影面積)の物体があったとする。画素サイズが5μmのステレオカメラ21で、焦点距離が10mmのレンズを使ったレンズ・カメラ系があった場合、10mでは、2m×2mの物体は、次式(4)のような三角形の相似計算により、ステレオカメラ21上では、400×400画素の大きさになる。
2/10 = x/10・・・・(4)
x=2mm
2/0.005=400画素
【0072】
その物体が40m遠方にあった場合には、同様に、次式(5)のような三角形の相似計算により、ステレオカメラ21上では、100×100画素の大きさとなる。
2/40=x/10・・・・(5)
x=20/40=0.5mm
0.5/0.005=100画素
【0073】
OGM10では、画素1つに対して1つの投票を行うため、この状況では、10m先の場合には、400×400=160,000点の投票が行われる一方で、40m先では、100×100=10,000点の投票が行われる。OGM10の閾値として同じ値を使うとすると、10mの場合は、40mの場合に対して16倍も物体が取れやすくなることになる。これを是正するために、本実施例1では、距離に応じて投票に重みをつけることにする。つまり、同じ面積の物体に対して、画素数は距離の二乗に反比例して多くなる。これを補正するためには、物体までの距離の二乗を重みとして、投票数に乗じた値を投票するようにすればよい。これにより従来の課題3を解決できる。
【0074】
例えば、10m先の場合には10の二乗の100を、40m先の場合には40の二乗の1600を掛けた値を1画素毎に投票することにより、10m先の400×400画素の全ての画素による投票数は、160,000×100=16,000,000となり、40m先の100×100画素の全ての画素による投票数は、10,000×1600=16,000,000となり、同じ数となる。この重みは、あくまでも重みなので、実際の距離に対してスケールを掛けた値を用いてもよい。
【0075】
(
図2AのステップS9の詳細)
図9は、
図2AのステップS9における収縮処理を示す図である。さらに、
図10は、
図4のステップS9における膨張処理を示す図である。この
図9及び
図10を参照しつつ、従来の課題2の1の解決方法について説明する。
【0076】
図2AのステップS9において、ノイズ除去部27は、算出された2値のROGM40に対して、適切な回数の収縮処理及び膨張処理を行う。そのために、モルフォロジー演算で使われるオープニング(収縮と膨張)を用いて、複数のセルを一つの塊として抽出して、それを一つの物体として出力する。
【0077】
膨張処理及び収縮処理では、一般的に2値化された白黒の画像に対して処理が行われ、注目画素35の周辺に1画素でも白い画素があれば白に置き換える処理を膨張(Dilation)といい、逆に周辺に1画素でも黒い画素があれば黒に置き換える処理を収縮(Erosion)という。
【0078】
ノイズにより誤って検出されたセルは、本当の物体に対してサイズが小さいと考えられるので、最初に、
図9に示すような収縮処理を行うことで小さなセルが消去され、その後に、
図10に示すような膨張処理を行うことによって元のサイズが復元される。
【0079】
図2AのステップS10のラベリング処理を行う前に、オープニング(収縮処理をしてから膨張処理を行う処理)を行うことによって、ステレオカメラ21の小さなノイズが除去され、大きな構造が残る。OGM10のセル内の投票数の閾値処理によってノイズを除去できるが、更に、オープニングを行うことで、セルとして抽出されてしまったノイズをここで除去することができるので、従来の課題2の1を解決できる。
【0080】
(
図2AのステップS10の詳細)
図11A〜
図11Mは、従来の課題2の2を解決するための
図2AのステップS10のラベリング処理を示す図である。
【0081】
図11A〜
図11Mにおいて、
図11Aは対象とする2値化画像、
図11Bは4連結の場合、
図11Cは8連結の場合、
図11Dはラスタスキャンとルックアップテーブル50、
図11Eは白い画素に対するラベル番号の振り方、
図11Fは最初に番号を割り振った様子、
図11Gは更にラスタスキャンを続ける様子、
図11Hは新たな番号(2)を割り振った様子、
図11Iは更に新たな番号(3)を割り振った様子、
図11Jはルックアップテーブル50の書き換えの様子、
図11Kはラベリング処理において更にルックアップテーブル50の書き換えをした様子、
図11Lは全ての画素に対してラベル番号が割り振られた状態、及び、
図11Mはラベル番号が修正された状態、をそれぞれ示す図である。
【0082】
前記
図7A及び
図7Bに示すROGM40のアルゴリズム1,2では、投票数が閾値よりも大きな部分に物体が存在すると推定して、そのセルに対して状態1か0を与えて2値画像を生成し、更に、その2値画像に対して収縮処理及び膨張処理を行っている。その後、
図2AのステップS10では、収縮・膨張処理の結果に対して、ラベリング処理を行うことによって、大きな物体の場合には複数のセルの集合から成るものとして登録し、小さな物体の場合には、最小で1個のセルから成る物体として登録することにより、従来の課題2の2を解決している。
【0083】
以下、
図11A〜
図11Mを参照しつつ、ラベリング処理について説明する。2値化画像処理された画像において、白の部分(又は黒の部分)が連続した画素に同じ番号を割り振る処理をラベリング処理という。このラベリング処理は、通常、同じ番号毎の面積(画素数)や幅、高さ等の特徴量を求めて欠陥検査や分類処理等に用いられる。
【0084】
ラベリングには、
図11Aのような2値化された画像の縦、横方向に連続している部分を同じラベルにする
図11Bのような4連結の場合(即ち、4近傍の場合)と、縦、横、斜め方向に連続している部分を同じラベルにする
図11Cのような8連結の場合(即ち、8近傍の場合)と、の2種類の処理がある。
【0085】
以下、8連結の場合において、ラベリング処理のアルゴリズムを説明する。
先ず、
図11Dに示すように、画像全ての画素のラベル番号を0(ゼロ)で初期化しておき、ラベリングで番号を割り付けるためのラベリング番号のルックアップテーブル50を用意する。このルックアップテーブル50において、Srcは、後述のラスタスキャン時に最初に割り振る番号を示し、Dstは、その後の番号の割り振りの際に、新たに余分につけてしまった番号を、より小さな番号に振り直すための番号を書き込む欄である。そして、画像の左上から右方向へラスタスキャンを行い、画素36の色が白の位置を検索する。
【0086】
図11Eに示すように、白の画素36の左上、上、右上、左の画素37のラベル番号を参照し、全て0(ゼロ)の場合は、最後に割り振った番号+1のラベル番号を割り振る。もし、参照した画素37のラベル番号が複数存在した場合は、最小の番号を割り振る。
【0087】
図11Dのようにラスタスキャンを行って、最初に番号を割り振った様子が、
図11Fに示されている。同様に続行すると、
図11Gのようになる。さらにラスタスキャンを続けて、新たなラベル番号(2)を付けた様子が、
図11Hに示されている。そして、更にラスタスキャンを続けて新たなラベル番号(3)を振った様子が、
図11Iに示されている。
【0088】
図11Jに示すように、参照した画素のラベル番号が複数存在した場合、最小の番号を割り振る。この時、使用しなかったラベル番号(
図11Jの例では3)に対応するルックアップテーブル50のSrc(3)の右側のDstの欄の数字を、このとき割り振られた最小の番号(1)に書き換える。以後、同様にラスタスキャンを続けて、
図11Kに示すように、1を割り振る際に、右上の番号が「2」となっているため、最小の番号ではない値=2に対応するSrcの欄の右隣のDstに、実際に割り振った値=1を書き入れる。このようにして、
図13Lに示すように、全ての画素に対してラベル番号が割り振られる。
【0089】
次に、処理の途中でルックアップテーブル50の番号を変更した番号を、得られた画像に対する番号に対して、例えば、「2→1、3→1、6→5」のように変更すると、
図11Mに示すように、連続した領域は同じ番号になり、ラベリングが完了する。
【0090】
以上のようなラベリングを、ROGM40に適用することによって、大きな物体であっても小さな物体であっても、1つのラベル番号が与えられ、1つの物体として扱うことが可能になる。これにより従来の課題2を解決できる。
なお、以上の説明では、2値のマップに対してノイズを削除するために収縮処理及び膨張処理を行った後にラベリング処理をした。ここで、ノイズがないか又は非常に少ない場合には、収縮処理及び膨張処理を行わずに、2値のマップに対して直接、ラベリング処理を行ってもよい。
以下に、本発明の物体検出装置20の実施例を示す。
【実施例】
【0091】
実施例の物体検出装置20は、ステレオカメラ21とこのステレオカメラ21の出力側に接続されるコンピュータ(PCと呼ぶ)から構成した。PC、つまり情報処理装置は、
図1に示す視差算出部22、距離・3D情報算出部23、前方路面からのカメラ高さ・傾き推定部24、前方路面に合わせた傾き変換部25、OGM算出部26、ノイズ除去部27、物体検出部28、物体情報の出力部29及びグローバルマップ表示部30を構成する。ステレオカメラ21とコンピュータは、インターフェースとなるUSB3.0を介して接続した。
【0092】
ステレオカメラ21は、以下の構成を有している。
ステレオカメラ21:ZMP社製、RoboVision(登録商標)2 カメラモジュール
CMOSイメージセンサ:ソニー製、IMX224を2個使用
解像度:1280×960ピクセル(30fps(frame per second))
【0093】
OSとしてWindows 8.1(64ビット)を搭載したPCを用いた。このPCに第1占有グリッドマップ及び冗長な第2占有グリッドマップを生成するソフトウェアをインストールした。PCの主要な構成を以下に示す。
CPU:インテル製 Core
TMi7-5960X、8コア/3GHz
RAM:16GB
HDD:2TB
【0094】
(比較例)
実施例と比較するために、第1占有グリッド(OGM)マップを得る従来のソフトウェアをインストールした以外は、実施例1と同じステレオカメラ21とPCを用いた。
【0095】
(課題1に対する本発明の効果)
課題1に対する本発明の効果を評価するために、ターゲットを床面に固定した状態で、少しずつステレオカメラ21の位置を横にずらして行って、それぞれの位置でステレオ処理とOGM処理及びROGM処理を行った。ターゲットは、図示するようにロボットの絵が描かれた直方体の箱とした。
図12(a)〜(c)は、ステレオカメラ21の位置を横方向で変えたときの実施例の画像を示し、上段が画像であり、下段が距離情報を階調処理した距離画像である。ここで、上段ではステレオカメラ21の右カメラ21Rの画像のみを示し、左カメラ21Lの画像は省いている。
図12では、視差範囲を制限したために、正しい視差が求まっていない部分が手前側と奥側に存在している。グリッドサイズは、横方向及び奥行き方向で共に0.5mである。下段の距離画像には、手前と奥を示している。
【0096】
図13は、実施例のROGM40による箱の検出の投票数を示す図である。
図13では、ステレオカメラ21の横位置の変化(6通り)を、箱が常に同じ位置、即ち横方向位置が0の位置となるように補正した場合のROGM40の投票値を示す。これから横軸は補正後の横方向位置(m)であり、縦軸は投票数である。
図13に示すように、箱がグリッドの境界線の近くでもセルの中央付近であっても、投票値はそれほど変わりがないことがわかる。これにより、箱の位置が、ROGM40のどの位置にあっても、閾値を高くしていった際に安定して箱を検出できることがわかる。
【0097】
図14は、比較例のOGM10による箱の検出を示し、(a)は横方向の投票数を、(b)は横方向及び奥行き(距離)方向の投票数を示す図である。ステレオカメラ21の横位置の変化は、
図13と同じ6通りである。
図14(a)に示すように、少しずつ横位置をずらした場合に、OGM10のグリッドの境界上に箱がある場合、又はグリッドの間(セルのど真ん中)にある場合によって、投票数が変化することが分かる。
図14(b)に示すように、奥行き(距離)方向の投票数からは、箱に対応するセルの位置が分かるが、箱の位置がグリッド境界に近いほど、投票数が少ないことがわかる。これにより、比較例のOGM10では、実施例のROGM40とは異なり閾値を上げていくと、境界付近で物体を検出できなくなってしまうことが分かる。
【0098】
(課題2の1に対する本発明の効果)
本発明の課題2の1に対する効果を評価するために、ノイズが生じている距離画像において、収縮と膨張処理によるノイズ除去について説明する。
図15はノイズを調べるのに用いた画像を示し、(a)が右カメラ21Rの画像を、(b)が距離画像を示す図である。
図15(b)は、
図12の下段と同様に階調処理した距離画像である。
図15(a)に示すように、横断歩道に一人の歩行者と自転車に乗った人がおり、
図15(b)に示すように、距離画像の上側の空の部分にステレオの誤対応によるノイズが生じている。
【0099】
図16は、距離画像から得られる3D点群に対して、ROGM処理をした投票結果を示す図である。
図16の座標では、横方向及び奥行き(距離)方向に対して高さ方向に投票数を示している。
図16に示すように、投票数の多い歩行者と自転車に乗った人と共に、ノイズが生じていることが分かる。
【0100】
図17は、
図16のデータを閾値が10000として2値化した結果を示す図である。
図17の座標は、高さ方向が2値(0、1)を示す以外は、
図16と同じである。
図17に示すように、二つの山が歩行者と自転車に乗った人に対応すると共に、手前の山がノイズに対応していることが分かる。
【0101】
図18は、
図17のデータを収縮・膨張処理した結果を示す図である。
図18の座標は、
図17と同じである。収縮・膨張処理は、収縮と膨張をそれぞれ1回行った。
図18に示すように、収縮・膨張処理により
図17で生じたノイズによる山が除去されたことが分かる。
【0102】
(課題2の2に対する本発明の効果)
課題2の2に対する本発明の効果を評価するために、
図18に示すノイズを除去した2値データのラベリング処理を行った。
図18に示すように、この段階では、歩行者に対応する単に1の値のセルが並んでいる山が2つあり、この2つの山のそれぞれが、一つずつの塊として分けられていない。
【0103】
図19は、
図18の2値データをラベリング処理した結果を示す図である。
図19の座標は、高さ方向をラベルとした以外は
図18と同じである。
図19に示すように、ラベリング処理により、自転車に乗った人の塊を構成するすべてのセルに対しては、高さ方向の値、つまり1のラベルが与えられ、中央の歩行者の塊を構成するすべてのセルに対しては、高さ方向の値が2というラベルが割り振られていることが分かる。これにより、課題2の2の複数のセルから成る一つの塊に対して、ラベリング処理によって1つのラベリング値が与えられ、1つの物体として検出し取り扱うことが可能となる。
【0104】
(課題3に対する本発明の効果)
課題3に対する本発明の効果を評価するために、左右画像に対して3D値を求め、3D値から投票時に距離の自乗を加算した実施例のROGM40によるマップと従来のOGM10によるマップを求めた。
図20は、遠方の投票を調べるのに用いた画像を示し、(a)が左画像を、(b)が右画像を、(c)は距離画像である。
図20(c)は、
図12の下段と同様に階調処理した距離画像である。
図20に示すように、前方には
図12と同じロボットの絵が描かれた直方体の箱があり、この箱の位置を、前方2mから4.5m迄0.5m毎に変えたときのROGM40及びOGM10によるマップを求めた。
【0105】
図21は、実施例のROGM40によるマップである。
図21では、横方向及び奥行き(m)に対して高さ方向に投票数を示している。
図21に示すように、箱の位置を0.5m毎に変化させたとき、ある程度のバラツキはあるものの遠方の箱の投票数も多くなり、距離による投票数の変化が後述する従来のOGM10よりも明らかに改善されていることが判明した。
【0106】
図22は、比較例のOGM10によるマップである。
図22の座標は
図21と同じである。
図22に示すように、比較例のOGM10では距離に関係なく投票しているため、距離が遠くなると投票数も減っていることが分かる。
【0107】
(課題4に対する本発明の効果)
課題4に対する本発明の効果を評価するために、遠方に停車した車両に対して3D値を求め、3D値から実施例のROGM40によるマップと従来のOGM10によるマップを求めた。
図23は、遠方の車両を調べるのに用いた画像を示し、(a)が左画像を、(b)は距離画像を示す図である。
図23(b)は、
図12の下段と同様に階調処理した距離画像である。
図23に示すように、前方に停止した車両と道路の両側には樹木があることが分かる。
【0108】
図24は、実施例の3D値から求めたROGM40の結果を示す図である。
図24の座標は、
図22と同じである。
図22のROGM40は、投票時に距離の自乗を加算すると共に、視差誤差を考慮した式(2)に基づいて、奥行方向に投票するセルの範囲を広げる処理を行った。
図24に示すように、遠方の物体に投票数が多い物体が観測される。なお、手前にある山は、明るい空のテクスチャが殆どなかったため、誤対応によるノイズを拾ったものである。
【0109】
図25は、
図24のデータを2値化した結果を示す図である。
図25の座標は、高さ方向が2値(0、1)を示す以外は、
図24と同じである。
図25に示すように、遠方に停止した車両を含む物体と、手前にノイズが生じていることが分かる。
【0110】
図26は、
図25のデータを収縮・膨張処理した結果を示す図である。
図26の座標は、
図25と同じである。収縮・膨張処理は、収縮と膨張をそれぞれ1回行った。
図26に示すように、収縮・膨張処理により
図25で生じたノイズによる山が除去されたことが分かる。これにより、本発明の物体検出方法によれば、従来検出できなかった遠方の物体を検出することが可能となった。
【0111】
実施例のように遠方に停止した車両を、OGM10を使って検出しようとしたが、ラベリング後に検出できなかった。
【0112】
遠方に停止した車両を、実施例とは異なり、距離の自乗の加算と式(2)に基づいた処理をしないROGM40だけを使って検出しようとしたが、2値化後に収縮・膨張処理を行ったが何も検出されなかった。
【0113】
以上説明したように、上記実施例及び比較例によれば、課題1〜4を解決できることが判明した。
【0114】
本発明は、上記実施の形態に限定されるものではなく、特許請求の範囲に記載した発明の範囲内で種々の変形が可能であり、それらも本発明の範囲内に含まれることはいうまでもない。