【実施例1】
【0025】
以下、図面を参照して本発明の実施例1を説明する。本発明における車両の実施形態として、自動走行するゴルフカートを挙げる。車両はゴルフカートに限られず、工場や果樹園で走行する無人搬送車も含まれる。また、車両は4輪車に限られず、3輪車でもよいし、モノレール型でもよい。なお、以下の説明で、前後および左右とは車両1の前進する方向を基準としている。
【0026】
1.車両の概略構成
図1および
図2を参照する。
図1は、実施例に係る車両1の前面図であり、
図2は車両1の構成を示す機能ブロック図である。車両1はゴルフ場内を自動または手動走行するゴルフカートである。車両1は、走路に埋め込まれた誘導線から発せられる電磁波に誘導されて自動走行することができる。車両1の前面中央部にステレオカメラ3が設けられている。
【0027】
また、車両1には、車両1の前方の対象物を検出する対象物検出装置5と、車両1が誘導線に沿って自動走行するのを制御する自動走行制御部7と、対象物検出装置5が対象物を検出すると運転者および周囲に警告を発生する警告出力部8と、対象物の検出により減速または停止の制御をする車速制御部9と、車輪を駆動し、車速制御部9により回転数が制御される駆動モータ11とが設けられている。本実施例において、車両1は駆動モータ11で駆動されるがこれに限らず、エンジンにより駆動されてもよい。
【0028】
2.対象物検出装置の構成
次に
図3を参照して車両1に備えられた対象物検出装置5の構成を説明する。
図3は、対象物検出装置の構成を示すブロック図である。
【0029】
対象物検出装置5は、対象物領域推定装置13と対象物を検出する対象物検出部15とを備える。対象物領域推定装置13は、撮影した画像に対して対象物が存在すると推定される領域を検出する。これにより、対象物の検出のためのスキャン領域を制限することができる。対象物検出部15は、画像中の制限された領域をスキャンして対象物を検出する。
【0030】
対象物領域推定装置13は、車両1の前方の画像を撮影するステレオカメラ3と、ステレオカメラ3により撮影された画像を一時的に保管する画像バッファ17と、ステレオカメラ3により撮影された画像を基に視差画像を作成する視差画像作成部19と、作成された視差画像から各画素の距離情報を抽出する距離情報抽出部21と、抽出された距離情報を保管する距離情報バッファ23と、抽出された距離情報を基に視差画像における画素をクラスタ分割するクラスタ分割部25と、分割された各クラスタを基に、対象物が存在する領域を判定する対象物領域判定部27と、対象物が存在すると判定された領域をスキャン領域として設定するスキャン領域設定部29とを備える。視差画像作成部19、距離情報抽出部21、クラスタ分割部25、対象物領域判定部27、スキャン領域設定部29、および、対象物検出部15はマイクロプロセッサまたはFPGA(Field Programmable Gate Array;再構成可能なゲートアレイ)で構成される。次にそれぞれの構成部について順に説明する。
【0031】
ステレオカメラ3は、2個の画像センサ3a、3bで構成される。なお、ステレオカメラ3は、2個以上の画像センサで構成されてもよい。左画像センサ3aおよび右画像センサ3bはCCDやCMOSなど一般的な可視光センサである。左画像センサ3a、右画像センサ3bは予め定められた幾何条件の下で設置されている。実施例1では、左画像センサ3a、右画像センサ3bは水平方向に一定距離を保たれて設置されている。すなわち、左画像センサ3aおよび右画像センサ3bはそれぞれ平行ステレオの位置関係で配置されている。左画像センサ3a、右画像センサ3bは、それぞれ撮影された画像の各行の位置が一致するように、すなわち、エピポーラ線が一致するように、予めカメラキャリブレーションが実施されている。左画像センサ3aで撮影された画像を左眼画像とし、右画像センサ3bで撮影された画像を右眼画像とする。実施例1では左画像センサ3aを基準カメラとし、左眼画像を基準画像とする。なお、右眼画像を基準画像としてもよい。
【0032】
画像バッファ17は、ステレオカメラ3から送られる画像、すなわち、画像センサ3a、3bから送られる各画像を一時的に保管する。画像センサ3a、3bの保管された各画像は順に視差画像作成部19へ出力される。画像バッファ17は、メモリ、フラッシュメモリ、ハードディスク(HDD)などを用いる。
【0033】
視差画像作成部19は、入力される各画像から視差画像を作成する。実施例1では、画像バッファ17に保管されている左眼画像および右眼画像を基に視差画像を作成する。視差画像は例えば、ステレオマッチングにより作成することができる。ステレオマッチングとして面積相関法を用いる。面積相関法は、注目画素を中心に一定の大きさのウィンドウ単位で各画像の一致度を計算し、最も一致度が高くなるようにステレオマッチングする。さらに、一致度が最も高い状態における注目画素の視差を算出する。ここでの視差は複数画像間の画素のズレ量を示す。実施例1において、視差は、左眼画像に対する右眼画像の横方向の画素のズレ量である。ステレオマッチングの方法は、他にも、SAD(Sum of absolute differences)や、Census transformが挙げられる。なお、視差画像上のX座標およびY座標は基準画像上のX座標およびY座標と同じである。
【0034】
距離情報抽出部21は、視差画像を基に、予め設定された横ライン上の各画素が表示する被写体までの実空間上の距離を抽出する。視差画像から距離を抽出する方法は、従来から利用されている平行ステレオ法を用いる。すなわち、2台の画像センサ3a、3b間の距離(ステレオカメラ3の基線長)T、および、2台の画像センサ3a、3bの焦点距離fと視差画像を用いることで、視差画像および基準画像の各画素に対応した距離情報を算出することができる。
【0035】
視差画像上の座標(X
C、Y
C)に対する距離情報は以下の式にて求めることができる。
d=np ・・・(1)
Z
D=fT/d ・・・(2)
X
D=Z
D(X
C−np)f ・・・(3)
Y
D=Z
D・Y
C/f ・・・(4)
ここで、(X
C、Y
C)は視差画像の中央を原点とした視差画像における座標であり、(X
D,Y
D,Z
D)は、視差画像の座標(X
C、Y
C)に対応する距離情報である。また、dは視差距離であり、nは視差画素数であり、pは画像センサ3a、3bの画素ピッチである。ステレオカメラ3と距離情報(X
D,Y
D,Z
D)の方向が
図4に図示されている。ステレオカメラ3の横方向にX
D軸が設けられ、ステレオカメラ3の縦方向にY
D軸が設けられ、ステレオカメラ3の前方向(奥行き方向)にZ
D軸が設けられている。演算された各距離情報は視差画像および基準画像の各画素に対応して距離情報バッファ23に保管される。
【0036】
図5を参照して説明する。
図5は視差画像と予め設定されたラインとの関係を示す説明図である。ラインL1は視差画像上においてY
CL1のY座標を有し、ラインL2は視差画像上においてY
CL2のY座標を有し、ラインL3は視差画像上においてY
CL3のY座標を有する。このように、各ラインL1〜L3のY座標は予め設定されている。距離情報抽出部21はこれら各ラインL1〜L3上の画素に対応する距離情報を抽出する。すなわち、視差画像において、Y座標がY
CL1、Y
CL2、Y
CL3の画素に対応する距離情報を抽出する。例えば、ラインL1上の抽出された奥行き方向の可視化された距離情報が
図6に示されている。なお、実施例1ではラインを3本設定しているが、ラインは1本でもよいし、その他複数本設定してもよい。なお、距離情報抽出部21は、各ラインL1〜L3上の画素の距離情報を優先的に抽出し、その後で視差画像における他の画素の距離情報を抽出する。
【0037】
クラスタ分割部25は、視差画像において予め定められた横方向のライン上の画素と対応する距離情報を基に、ライン上の各画素を設定された個数のクラスタ(塊)に分割する。クラスタ分割の方法は従来からあるウォード(Ward)法を採用する。ウォード法以外の方法を用いてクラスタ分割してもよい。実施例1では、奥行き方向(Z
D軸)の距離情報および横方向(X
D軸)の距離情報を基に、4個のクラスタに分割する。しかしながら、分割するクラスタの個数は4個に限らず適切に設定してもよい。これにより、ライン上の各画素が奥行き距離および横向き距離に応じてクラスタ分割されるので、互いの距離が近い画素群が1個のクラスタとしてグループ化される。
【0038】
図7には、クラスタ分割された奥行き方向の距離情報のグラフが示されている。ラインL1上の各画素がCL1〜CL4の4個のクラスタに分割されている。なお、実施例1では、車両1に最も近いクラスタにクラスタ番号CL1が設定され、距離が離れるにつれ、クラスタ番号CL
NOが順に振り分けられている。分割されたクラスタに対応するクラスタ番号CL
NO(CL1〜CL4)は、各画素のX座標と関連づけて距離情報バッファ23に格納される。
【0039】
距離情報バッファ23は、視差画像および基準画像の画素と対応付けられた各距離情報を保管する。
図8には、予め定めらた各ラインL1〜L3のX座標と各距離情報との関連が示されている。すなわち、各ラインL1〜L3における、基準画像(視差画像)上のX座標値、Y座標値、および、横方向距離X
D、縦方向距離Y
D、奥行き方向距離Z
D、および、クラスタ番号CL
NOとが関連付けられて保管されている。距離情報バッファ23として、例えば、メモリ、フラッシュメモリ、ハードディスク(HDD)などが挙げられる。
【0040】
対象物領域判定部27は、奥行き距離が最も小さいクラスタから順に各クラスタが対象物であるかどうかを判定する。各クラスタのクラスタ幅が予め定められた閾値の範囲内であれば対象物であると判定する。ここで、クラスタ幅とは、分割された各クラスタが有する実際の横方向の距離情報における最小値と最大値との幅である。例えば、
図7のクラスタCL1における最小値はX
D1であり最大値はX
D2であるので、クラスタCL1の幅は(X
D2−X
D1)である。このように、対象物領域判定部27は、各クラスタのクラスタ幅を算出し、各クラスタ幅が予め定められた設定範囲内かどうかを判定する。対象物として人を検出する場合、例えば、設定範囲を1m以下に設定すればよい。
【0041】
スキャン領域設定部29は、対象物であると判定されたクラスタの横方向の視差画像(基準画像)上の最大値座標および最小値座標をスキャン領域の最大値座標および最小値座標に設定する。これにより、対象物を検出する横方向のスキャン領域が制限される。
【0042】
対象物検出部15は、画像バッファ17から基準画像を取得し、スキャン領域設定部からスキャン領域座標を取得する。対象物検出部15は、設定されたスキャン領域において、基準画像内を複数の大きさの検出窓をラスタスキャンさせて、対象物を検出する。対象物は、障害物であってもよいし、人であってもよい。人を検出する場合、HOG特徴を用いて検出することができる。HOG特徴を用いる場合、スキャン領域のみ距離情報を抽出すればよいので、画像全体の距離情報を抽出するのに比べて大幅に演算量を低減することができる。
【0043】
次に、実施例1における対象物検出の動作を
図9を用いて説明する。
図9は対象物検出の処理手順を示すフローチャートである。
【0044】
車両1の前面に設けられたステレオカメラ3により前方の画像を撮影する(ステップS01)。撮影された左眼画像および右眼画像は画像バッファ17に格納する。次に、画像バッファ17に格納されている画像を基に、視差画像作成部19が視差画像を作成する(ステップS02)。次に、距離情報抽出部21は、作成された視差画像において予め定められた高さ(Y
CL1、Y
CL2、Y
CL3座標)のラインL1、L2、L3上の画素における横(X
D)方向、縦(Y
D)方向、および、奥行き(Z
D)方向の距離情報を抽出する(ステップS03)。
【0045】
抽出された距離情報は距離情報バッファ23へ格納される。また、抽出された距離情報を基に、クラスタ分割部25は各ラインL1〜L3上の画素をクラスタ分割する(ステップS04)。クラスタ分割されて振り分けられたクラスタ番号CL
NOは、対応する視差画像上の画素のX座標およびその他の距離情報と関連付けて距離情報バッファ23に格納される。
【0046】
次に、対象物領域判定部27は、分割された各クラスタの横方向の実距離であるクラスタ幅を算出する。(ステップS05)。さらに、対象物領域判定部27は、予め設定された範囲内の幅のクラスタが有るかどうかを判定する(ステップS06)。設定範囲内の幅のクラスタが無い場合(ステップS06のNo)、この撮影フレームでの処理を終えて、次の撮影フレームの処理に移る。
【0047】
予め設定された範囲内の幅のクラスタが有る場合(ステップS06のYes)、スキャン領域設定部29は、この設定範囲内の幅であるクラスタの視差画像におけるX座標の最小値および最大値をそれぞれ、横方向スキャン領域の最小値および最大値として設定する(ステップS07)。すなわち、設定範囲内の幅であるクラスタが対象物の存在する領域であると推定することができる。なお、複数のクラスタにおいてクラスタ幅が設定範囲内であると判定された場合、これら複数のクラスタの中で、ステレオカメラ3に最も近いクラスタの最小値および最大値を横方向スキャン領域の最小値および最大値として設定する。
【0048】
次に、対象物検出部15は、横方向に制限されたスキャン領域Ar1内(
図10参照)で対象物をHOG特徴量などを用いて対象物を検出する(ステップS08)。HOG特徴量を用いる場合、横方向に制限されたスキャン領域Ar1内のみ距離情報抽出部21にて距離情報を抽出して対象物を検出する。なお、対象物が検出されると、スピーカ等で構成される警告出力部8から操縦者および周囲に対して警報を発する。また、対象物が検出されると、車速制御部9が減速の制御およびブレーキ制動を実施し、駆動モータ11および車輪の回転が制動され、車両1が減速または停止する。
【0049】
このように、実施例1によれば、対象物の存在領域を簡易に推定することができる。対象物の存在領域の推定は、距離情報抽出部21により抽出された実際の距離情報を基に推定されるので、推定精度を向上させることができる。また、予め設定されたライン上だけ距離情報の抽出をすれば対象物の存在領域の有無を判定することができるので、対象物の領域推定を高速にすることができる。
【0050】
また、対象物を検出するスキャン領域が制限されるので、対象物を検出する時間を短縮することができる。これにより、対象物を検出するフレームレートを上げることができ、より短い時間間隔で対象物を検出することができる。
【実施例2】
【0051】
次に、
図11を参照して実施例2に係る対象物検出装置について説明する。
図11は実施例2における対象物検出装置の構成を示すブロック図である。実施例2において、実施例1に示した符号と同一の符号で示した部分は、実施例1と同様の構成であるのでここでの説明は省略する。また、以下に記載した以外の車両および対象物検出装置の構成は実施例1と同様である。
【0052】
実施例2の特徴は、対象物の存在領域の推定を縦方向においても実施する点である。実施例1では対象物の存在領域の推定を横方向にのみ限定していたが、実施例2では横方向に加えて縦方向にも推定する。これにより、縦方向にもスキャン領域を制限することができる。
【0053】
実施例2における対象物領域推定装置13’は、実施例1における対象物領域推定装置13’に縦方向対象物領域判定部28が追加された構成である。なお、実施例2における横方向対象物領域判定部27’は実施例1における対象物領域判定部27と同じ構成であり、同じ機能を有する。また、実施例2においては、視差画像上で距離情報が抽出される予め決められたラインは2本以上設定されている。
【0054】
縦方向対象物領域判定部28は、設定範囲内の幅のクラスタを有さないラインのY座標をスキャン領域の最大Y座標値または最小Y座標値の候補として判定する。初期設定では、スキャン領域の最大Y座標値は視差画像(基準画像)の最大Y座標であるY
Cmaxに設定されている。また、スキャン領域の最小Y座標値は視差画像(基準画像)の最小Y座標であるY
Cminに設定されている。
【0055】
設定範囲内の幅のクラスタを有さないラインのY座標値が、設定範囲内の幅のクラスタを有するラインのY座標値よりも大きい場合、設定範囲内の幅のクラスタを有さないラインのY座標値をスキャン領域の最大Y座標値として更新する。また、設定範囲内の幅のクラスタを有さないラインのY座標値が、設定範囲内の幅のクラスタを有するラインのY座標値よりも小さい場合、設定範囲内の幅のクラスタを有さないラインのY座標値をスキャン領域の最小Y座標値として更新する。
【0056】
図12、13を参照して、縦方向の対象物の領域判定をさらに説明する。
図12は、1本のライン上で設定範囲の幅のクラスタが検出された場合であり、
図13は複数本のラインで設定範囲の幅のクラスタが検出された場合である。視差画像上にラインL1〜L3の3本のラインが設定されている。
図12では、横方向対象物領域判定部27により、ラインL1上のクラスタCL1の幅が設定範囲内であると判定され、他のクラスタは設定範囲内では無いと判定される。この場合、対象物Ob1は、設定範囲の幅のクラスタが検出されたラインL1の1本上に位置するラインL2と、ラインL1の1本下に位置するラインL3の間に存在すると推定することができる。そこで、縦方向のスキャン領域の最大値をラインL2のY座標であるY
CL2と更新し、縦方向のスキャン領域の最小値をラインL3のY座標であるY
CL3と更新することで、縦方向のスキャン領域を制限することができる。
【0057】
図13では、横方向対象物領域判定部27により、ラインL1上のクラスタCL5およびラインL2上のクラスタCL6の幅が設定範囲内であると判定され、他のクラスタは設定範囲内では無いと判定される。この場合、ラインL2よりも上方に別のラインは位置していないので、視差画像の上縁の座標であるY
CmaxからラインL1の1本下に位置するラインL3の間に対象物Ob2が存在すると推定することができる。そこで、縦方向のスキャン領域の最大値は初期設定値であるY
Cmaxとし、縦方向のスキャン領域の最小値をラインL3のY座標であるY
CL3と更新することで、縦方向のスキャン領域を制限することができる。
【0058】
なお、ラインL1およびラインL3上に設定範囲内の幅のクラスタが検出された場合、縦方向のスキャン領域の最大値をラインL2のY座標であるY
CL2と設定し、縦方向のスキャン領域の最小値を初期設定値であるY
Cminとすることで、縦方向のスキャン領域を制限することができる。
【0059】
スキャン領域設定部29’は、実施例1と同様にスキャン領域を横方向に制限するのに加えて、縦方向にも制限して設定する。すなわち、クラスタの幅に基づいて横方向の制限が行われ、各ラインのY座標、基準画像(視差画像)の最大Y座標Y
Cmaxおよび最小Y座標Y
Cminに基づいて縦方向の制限が行われる。なお、縦方向対象物領域判定部28により、縦方向の対象物領域が判定されなかった場合は、初期設定値通り、基準画像の最大Y座標Y
Cmaxおよび最小Y座標Y
Cminをスキャン領域の最大Y座標値および最小Y座標値とする。
【0060】
次に、実施例2における対象物検出の動作を
図14を用いて説明する。
図14は対象物検出の処理手順を示すフローチャートである。
【0061】
ステップS01〜ステップS07まで実施例1と同様であるので、説明を省略する。ステップS07の次に、縦方向対象物領域判定部28は、全てのラインが設定範囲内の幅のクラスタを有するか否かの判定をする(ステップS09)。全てのラインが設定範囲内の幅のクラスタを有する場合(ステップS09のYes)、縦方向のスキャン領域の設定は、基準画像の予め設定されている最大Y座標Y
Cmaxと最小Y座標Y
Cminを設定する(ステップS10)。すなわち、縦方向のスキャン領域に関して、実質的には制限をかけていない。
【0062】
また、ステップS09にて、全てのラインが設定範囲内の幅のクラスタを有さない場合(ステップS09のNo)、設定範囲内の幅のクラスタを有さないラインのY座標が設定範囲内の幅のクラスタを有するラインのY座標よりも大きいか判定する(ステップS11)。
【0063】
設定範囲内の幅のクラスタを有するラインのY座標よりも、設定範囲内の幅のクラスタを有さないラインのY座標が大きい場合(ステップS11のYes)、さらに、設定範囲内の幅のクラスタの無いラインのY座標がスキャン領域のY最大値よりも小さいか判定する(ステップS12)。設定範囲内の幅のクラスタの無いラインのY座標がスキャン領域のY最大値よりも小さい場合(ステップS12のYes)、このラインのY座標値をスキャン領域のY最大値座標として更新する(ステップS13)。設定範囲内のクラスタの無いラインのY座標がスキャン領域のY最大値以上の場合(ステップS12のNo)、何も処理をすることなく次の処理に移る。
【0064】
設定範囲内の幅のクラスタを有さないラインのY座標が、設定範囲内のクラスタを有するラインのY座標よりも小さい場合(ステップS11のNo)、さらに、設定範囲内の幅のクラスタを有さないラインのY座標がスキャン領域のY最小値よりも大きいか判定する(ステップS14)。設定範囲内の幅のクラスタを有さないラインのY座標がスキャン領域のY最小値よりも大きい場合(ステップS14のYes)、このラインのY座標値をスキャン領域のY最小値座標として更新する(ステップS15)。
【0065】
設定範囲内の幅のクラスタを有さないラインのY座標が、スキャン領域のY最小値以下の場合(ステップS14のNo)、何も処理をすることなく次の処理に移る。このようにして設定されたスキャン領域のY最大値座標およびY最小値座標を用いて、スキャン領域設定部29が縦方向のスキャン領域を設定する(ステップS10)。これら、横方向および縦方向において制限されたスキャン領域内で、実施例1と同様に対象物検出部15が対象物を検出する(ステップS08)。なお、次の撮影フレームの処理に移る際に、スキャン領域のY最大値座標およびY最小値座標が初期値に戻される。
【0066】
このように、実施例2によれば、視差画像上において横方向に加えて縦方向にも対象物領域を推定する。これにより、
図15に示すように、対象物検出のスキャン領域を縦方向にも制限することができ、対象物検出の時間をより短縮することができる。
【0067】
本発明は、上記実施例のものに限らず、次のように変形実施することができる。
【0068】
(1)上記実施例において、クラスタ分割するラインL1〜L3は横方向のラインであった。これに限られず、横方向のラインに加えて、
図16に示すように、縦方向のラインを有し、縦方向のラインにおいてもクラスタ分割して対象物領域の推定をしてもよい。この場合、クラスタ分割部25は、視差画像上に予め設定された縦方向のライン上の画素を、各画素の距離情報を基に複数個のクラスタに分割する。対象物領域判定部27は、分割されたクラスタの中から横ライン上のクラスタの幅と、縦ライン上のクラスタの高さとを基に対象物の存在領域を判定する。例えば、
図16においては、クラスタCL7の実空間での高さが予め設定された縦方向の設定範囲内であれば対象物領域と判定し、設定範囲内でなければ対象物領域ではないと判定する。対象物領域と判定すると、クラスタCL7の最大値座標および最小値座標をそれぞれ、スキャン領域のY最大値座標およびY最小値座標として設定する。これにより、スキャン領域を縦方向にも制限することができる。
【0069】
(2)上記実施例において、対象物の領域を推定するのに、クラスタ幅を基準としていた。これに限られず、クラスタ幅に加えて、クラスタの奥行き方向の長さも基準として対象物の領域を推定してもよい。
【0070】
(3)上記実施例において、ステレオカメラ3を採用して視差画像を作成し、ステレオマッチングを実施することで距離情報を取得していた。これに限られず、距離情報を、例えば、レーダースキャナにより取得してもよい。この場合、単眼の画像センサにより取得された画像とレーダースキャナにより取得された距離情報とを予め対応づけされている必要がある。
【0071】
(4)上記実施例において、対象物検出装置は車両に備えられていたがこれに限られない。他にも、例えば、自律走行するロボット用のビジョンシステムや視覚障害者の支援システムなどに採用してもよい。