(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-24
(45)【発行日】2022-02-01
(54)【発明の名称】物体検出装置及び物体検出方法
(51)【国際特許分類】
G06T 7/593 20170101AFI20220125BHJP
G01C 3/06 20060101ALI20220125BHJP
G01B 11/00 20060101ALI20220125BHJP
【FI】
G06T7/593
G01C3/06 110V
G01C3/06 140
G01B11/00 H
(21)【出願番号】P 2018188290
(22)【出願日】2018-10-03
【審査請求日】2021-01-20
(73)【特許権者】
【識別番号】000003218
【氏名又は名称】株式会社豊田自動織機
(74)【代理人】
【識別番号】100105957
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】石▲崎▼ 将崇
【審査官】松浦 功
(56)【参考文献】
【文献】特開2009-176090(JP,A)
【文献】特開2008-064628(JP,A)
【文献】特開2015-005807(JP,A)
【文献】特開2015-023376(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00 - 7/90
G01C 3/06 - 3/08
G01B 11/00
G06T 1/00
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ステレオカメラと、
前記ステレオカメラの画像から各画素に視差が対応付けられた視差画像を取得する視差画像取得部と、
前記視差画像を、縦方向に区切られており横方向に並ぶ複数の分割領域に分割する分割部と、
前記複数の分割領域毎に、前記分割領域に含まれる各画素に対応付けられた視差のヒストグラムを生成するヒストグラム生成部と、
前記ヒストグラムから頻度が閾値以上の視差を抽出する抽出部と、
前記抽出部により抽出された視差のうち最も値の大きい視差である最大視差と、最も頻度の多い最大頻度視差とが隣接しているか否かを判定する判定部と、
前記最大視差と前記最大頻度視差とが隣接している場合には前記最大頻度視差を注目視差とし、前記最大視差と前記最大頻度視差とが隣接していない場合には前記最大視差を注目視差とする注目視差設定部と、
前記注目視差に1を加算した視差を加算視差とした場合、以下の(1)式に基づき、小数点以下桁数が1以上である採用視差を算出する採用視差算出部と、
【数1】
前記採用視差を用いて、前記複数の分割領域毎に物体の位置を演算する演算部と、を備える物体検出装置。
【請求項2】
予め演算された路面の視差を前記視差画像から除去する路面視差除去部を備える請求項1に記載の物体検出装置。
【請求項3】
前記演算部は、前記分割領域のうち横方向の座標が異なる複数点について物体の位置を演算する請求項1又は請求項2に記載の物体検出装置。
【請求項4】
ステレオカメラの画像から各画素に視差が対応付けられた視差画像を取得し、
前記視差画像を、縦方向に区切られており横方向に並ぶ複数の分割領域に分割し、
前記複数の分割領域毎に、前記分割領域に含まれる各画素に対応付けられた視差のヒストグラムを生成し、
前記ヒストグラムから頻度が閾値以上の視差を抽出し、
抽出された前記閾値以上の視差のうち最も値の大きい視差である最大視差と、最も頻度の多い最大頻度視差とが隣接しているか否かを判定し、
前記最大視差と前記最大頻度視差とが隣接している場合には前記最大頻度視差を注目視差とし、前記最大視差と前記最大頻度視差とが隣接していない場合には前記最大視差を注目視差とし、
前記注目視差に1を加算した視差を加算視差とした場合、以下の(1)式に基づき、小数点以下桁数が1以上である採用視差を算出し、
【数2】
前記採用視差を用いて、前記複数の分割領域毎に物体の位置を演算する物体検出方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、物体検出装置及び物体検出方法に関する。
【背景技術】
【0002】
車両などの移動体には物体を検出するための物体検出装置が搭載されている。特許文献1に記載の物体検出装置は、ステレオカメラによって得られた視差画像からステレオカメラによって撮像された物体の位置を検出している。物体検出装置は、視差画像を複数の区分に分割し、区分毎に視差のヒストグラムを生成する。物体検出装置は、ヒストグラムにより得られた視差の分布から閾値以上の頻度の視差に注目して、この視差を用いて物体の位置を演算している。閾値以上の頻度の視差に注目することで、視差画像を分割した区分内に複数の物体が重なって存在している場合に物体毎に位置を検出することができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1では、区分毎に視差のヒストグラムを生成し、視差の頻度を求めているが、物体の位置は閾値以上の視差のうちのいずれかを用いて演算されている。物体の位置の検出精度は1つの視差に依存しており、検出精度が十分に高いとはいえない。
【0005】
本発明の目的は、物体の位置の検出精度を向上させることができる物体検出装置及び物体検出方法を提供することにある。
【課題を解決するための手段】
【0006】
上記課題を解決する物体検出装置は、ステレオカメラと、前記ステレオカメラの画像から各画素に視差が対応付けられた視差画像を取得する視差画像取得部と、前記視差画像を、縦方向に区切られており横方向に並ぶ複数の分割領域に分割する分割部と、前記複数の分割領域毎に、前記分割領域に含まれる各画素に対応付けられた視差のヒストグラムを生成するヒストグラム生成部と、前記ヒストグラムから頻度が閾値以上の視差を抽出する抽出部と、前記抽出部により抽出された視差のうち最も値の大きい視差である最大視差と、最も頻度の多い最大頻度視差とが隣接しているか否かを判定する判定部と、前記最大視差と前記最大頻度視差とが隣接している場合には前記最大頻度視差を注目視差とし、前記最大視差と前記最大頻度視差とが隣接していない場合には前記最大視差を注目視差とする注目視差設定部と、前記注目視差に1を加算した視差を加算視差とした場合、以下の(1)式に基づき、小数点以下桁数が1以上である採用視差を算出する採用視差算出部と、
【0007】
【数1】
前記採用視差を用いて、前記複数の分割領域毎に物体の位置を演算する演算部と、を備える。
【0008】
これによれば、採用視差を用いて物体の位置は演算される。仮に、視差を小数点以下桁数が1以上である値で表現できたとすると、分割領域内の物体のうちステレオカメラに最も近い物体により生じる視差は、注目視差と加算視差との間の値となる。そして、注目視差の頻度と加算視差の頻度の比率は、視差の小数点以下の値に応じたものとなる。例えば、視差の小数点以下の値が注目視差寄りであれば注目視差の頻度のほうが加算視差の頻度よりも多くなり、視差の小数点以下の値が加算視差寄りであれば加算視差の頻度のほうが注目視差の頻度よりも多くなる。従って、注目視差の頻度と加算視差の頻度との比率から演算された採用視差は、分割領域内の物体のうちステレオカメラに最も近い物体により生じた視差を小数点以下桁数1以上で表現したものと捉えることができる。採用視差は、小数点以下桁数が1以上であるため、整数である視差を用いて物体の位置を演算する場合に比べて、物体の位置の分解能を小さくすることができる。従って、物体の位置の検出精度を向上させることができる。
【0009】
上記物体検出装置について、予め演算された路面の視差を前記視差画像から除去する路面視差除去部を備えていてもよい。
これによれば、路面の視差の影響により、物体の位置の検出精度が低下することを抑制できる。
【0010】
上記物体検出装置について、前記演算部は、前記分割領域のうち横方向の座標が異なる複数点について物体の位置を演算してもよい。
分割領域は、横方向の画素を複数含んでいる。横方向の座標が異なる複数点について物体の位置を演算することで、実空間上で物体が占有する幅を認識しやすい。
【0011】
上記課題を解決する物体検出方法は、ステレオカメラの画像から各画素に視差が対応付けられた視差画像を取得し、前記視差画像を、縦方向に区切られており横方向に並ぶ複数の分割領域に分割し、前記複数の分割領域毎に、前記分割領域に含まれる各画素に対応付けられた視差のヒストグラムを生成し、前記ヒストグラムから頻度が閾値以上の視差を抽出し、抽出された前記閾値以上の視差のうち最も値の大きい視差である最大視差と、最も頻度の多い最大頻度視差とが隣接しているか否かを判定し、前記最大視差と前記最大頻度視差とが隣接している場合には前記最大頻度視差を注目視差とし、前記最大視差と前記最大頻度視差とが隣接していない場合には前記最大視差を注目視差とし、前記注目視差に1を加算した視差を加算視差とした場合、以下の(1)式に基づき、小数点以下桁数が1以上である採用視差を算出し、
【0012】
【数2】
前記採用視差を用いて、前記複数の分割領域毎に物体の位置を演算する。
【0013】
これによれば、物体の位置の検出精度を向上させることができる。
【発明の効果】
【0014】
本発明によれば、物体の位置の検出精度を向上させることができる。
【図面の簡単な説明】
【0015】
【
図1】物体検出装置が搭載されるフォークリフトの側面図。
【
図2】フォークリフト、及び、物体検出装置の概略構成図。
【
図3】フォークリフトが用いられる環境の一例を示す図。
【
図8】分割領域の1つから得られた視差のヒストグラムを示す図。
【
図9】複数の物体が重なった状態でステレオカメラによる撮像が行われた場合の視差のヒストグラムを示す図。
【
図10】物体が重なっていない状態でステレオカメラによる撮像が行われた場合の視差のヒストグラムを示す図。
【
図11】物体検出処理によって得られた物体の位置をプロットした図。
【発明を実施するための形態】
【0016】
以下、物体検出装置及び物体検出方法の一実施形態について説明する。
図1に示すように、フォークリフト10は、車体11と、車体11に設けられた荷役装置12と、を備える。なお、フォークリフト10は、自動で走行動作及び荷役動作が行われるものであってもよいし、搭乗者による操作によって走行動作及び荷役動作が行われるものであってもよい。
【0017】
図2に示すように、フォークリフト10は、メインコントローラ20と、走行用モータM1と、走行用モータM1を制御する走行制御装置23と、車速センサ24と、を備える。メインコントローラ20は、走行動作及び荷役動作に関する制御を行う。メインコントローラ20は、CPU21と、種々の制御を行うためのプログラムなどが記憶されたメモリ22と、を備える。
【0018】
メインコントローラ20のCPU21は、フォークリフト10の車速が目標速度となるように走行制御装置23に走行用モータM1の回転数の指令を与える。本実施形態の走行制御装置23は、モータドライバである。本実施形態の車速センサ24は、走行用モータM1の回転数を検出する回転数センサである。車速センサ24は、走行用モータM1の回転数を走行制御装置23に出力する。走行制御装置23は、メインコントローラ20からの指令に基づき、走行用モータM1の回転数が指令と一致するように走行用モータM1を制御する。
【0019】
フォークリフト10には、物体検出装置30が搭載されている。物体検出装置30は、ステレオカメラ31と、ステレオカメラ31によって撮像された画像の画像処理を行う画像処理部41と、を備える。
図1に示すように、ステレオカメラ31は、例えば、車体11の上部などフォークリフト10の上方からフォークリフト10の走行する路面を鳥瞰できるように配置されている。なお、車体11とは、座席や走行に関する部材を備える基台や、座席の上部に設けられるヘッドガードを含む。本実施形態のステレオカメラ31は、フォークリフト10の後方を撮像する。従って、物体検出装置30で検出される物体は、フォークリフト10の後方の物体となる。
【0020】
なお、フォークリフト10の前方を撮像するステレオカメラを用いてフォークリフト10の前方の物体を検出するようにしてもよい。また、フォークリフト10の前方及び後方を撮像する個別のステレオカメラを用いてフォークリフト10の前方及び後方の両側の物体を検出するようにしてもよい。即ち、ステレオカメラの配置を変更することで、任意の方向の物体を検出することが可能である。フォークリフト10の前方を撮像するステレオカメラを設ける場合、例えば、車体11の上部や荷役装置12の上部などにステレオカメラは設けられる。
【0021】
図2に示すように、ステレオカメラ31は、2つのカメラ32,33を備える。カメラ32,33としては、例えば、CCDイメージセンサや、CMOSイメージセンサが用いられる。各カメラ32,33は、互いの光軸が平行となるように配置されている。本実施形態において、2つのカメラ32,33は、水平方向に並んで配置されている。2つのカメラ32,33のうち、一方を第1カメラ32、他方を第2カメラ33とする。第1カメラ32によって撮像された画像を第1画像、第2カメラ33によって撮像された画像を第2画像とすると、第1画像と第2画像では同一の物体が横方向にずれて写ることになる。詳細にいえば、同一の物体を撮像した場合、第1画像に写る物体と、第2画像に写る物体では、横方向の画素[px]にカメラ32,33間の距離に応じたずれが生じることになる。第1画像及び第2画像は、画素数が同じであり、例えば、640×480[px]=VGAの画像が用いられる。第1画像及び第2画像は、RGB形式の画像である。
【0022】
画像処理部41は、CPU42と、RAM及びROM等からなる記憶部43と、を備える。記憶部43には、ステレオカメラ31によって撮像された画像から物体を検出するための種々のプログラムが記憶されている。画像処理部41は、各種処理のうち少なくとも一部の処理を実行する専用のハードウェア、例えば、特定用途向け集積回路:ASICを備えていてもよい。画像処理部41は、コンピュータプログラムに従って動作する1つ以上のプロセッサ、ASIC等の1つ以上の専用のハードウェア回路、あるいは、それらの組み合わせを含む回路として構成し得る。プロセッサは、CPU、並びに、RAM及びROM等のメモリを含む。メモリは、処理をCPUに実行させるように構成されたプログラムコードまたは指令を格納している。メモリ、即ち、コンピュータ可読媒体は、汎用または専用のコンピュータでアクセスできるあらゆるものを含む。
【0023】
以下、画像処理部41により行われる物体検出処理について物体検出方法とともに説明する。物体検出処理は、フォークリフト10が起動状態のときに行われる。起動状態とは、フォークリフト10に走行動作及び荷役動作を行わせることが可能な状態である。以下の説明では、
図3に示す環境をステレオカメラ31によって撮像した場合の物体検出処理を一例として説明を行う。
図3に示す環境では、フォークリフト10の進行の妨げとなる障害物OB1,OB2,OB3が路面に配置されており、路面の側方には壁Wが存在している。画像処理部41は、障害物OB1,OB2,OB3や壁Wなどの物体の位置を検出する。
【0024】
図4及び
図5に示すように、ステップS1において、画像処理部41は、視差画像dpを取得する。視差画像dpは、画素に対して視差[px]を対応付けた画像である。視差は、第1画像と、第2画像とを比較し、各画像に写る同一特徴点について第1画像と第2画像の画素数の差を算出することで得られる。なお、特徴点とは、物体のエッジなど、境目として認識可能な部分である。特徴点は、輝度情報などから検出することができる。
【0025】
画像処理部41は、ステレオカメラ31によって撮像されている映像から同一フレームの第1画像及び第2画像を取得する。画像処理部41は、各画像を一時的に格納するRAMを用いて、RGBからYCrCbへの変換を行う。なお、画像処理部41は、歪み補正、エッジ強調処理などを行ってもよい。画像処理部41は、第1画像の各画素と第2画像の各画素との類似度を比較して視差を算出するステレオ処理を行う。なお、ステレオ処理としては、画素毎に視差を算出する手法を用いてもよいし、各画像を複数の画素を含むブロックに分割してブロック毎の視差を算出するブロックマッチング法を用いてもよい。各画素の類似度の比較には、例えば、SAD:Sum of Absolute Difference、SSD:Sum of Squared Differenceなどが用いられる。画像処理部41は、第1画像を基準画像、第2画像を比較画像として視差画像dpを取得する。画像処理部41は、第1画像の画素毎に、最も類似する第2画像の画素を抽出し、第1画像の画素と、当該画素に最も類似する画素の横方向の画素数の差を視差として算出する。これにより、基準画像である第1画像の各画素に視差が対応付けられた視差画像dpを取得することができる。なお、視差画像dpとは、必ずしも表示を要するものではなく、視差画像dpにおける各画素に視差が対応付けられたデータのことを示す。本実施形態では、画像処理部41が、視差画像取得部として機能しているといえる。
【0026】
図5には、第1画像と第2画像から得られた視差画像dpを示す。
図5に示す視差画像dpでは、視差の大小を濃淡で表現している。視差は、ステレオカメラ31に近い位置ほど大きくなり、ステレオカメラ31から離れるほど小さくなる。以下、視差画像dpの横方向の座標をX座標とし、視差画像dpの縦方向の座標をY座標とする。X座標は横方向の画素位置を示し、Y座標は縦方向の画素位置を示す。例えば、視差画像dpが640×480[px]であれば、視差画像dpの中心座標Oは、X座標320,Y座標240と表すことができる。中心座標OのX座標は、フォークリフト10の幅方向の中央に対応している。
【0027】
図4及び
図6に示すように、ステップS2において、画像処理部41は、視差画像dpから路面の視差を除去する。路面とは、フォークリフト10が存在している面である。路面の視差は、以下の(2)式によって予め求められる。
【0028】
【数3】
M
0(y)は路面により生じる視差である。yは、視差画像dpにおけるY座標である。Bは第1カメラ32と第2カメラ33との離間距離=基線長であり、詳細にいえば、第1カメラ32の光軸と第2カメラ33の光軸との離間距離である。Hはステレオカメラ31の設置高さであり、詳細にいえば、路面からステレオカメラ31までの距離である。θは、ステレオカメラ31の設置角度であり、ステレオカメラ31の光軸が水平方向に延びている場合を0°とした場合の角度である。Fは焦点距離である。(2)式によって求められた路面の視差は、記憶部43に記憶されている。
【0029】
図6に示すように、画像処理部41は、視差画像dpから路面の視差を除去することで、路面の視差が除去された視差画像dpを取得することができる。即ち、路面よりも高い位置に存在する物体により生じる視差を抽出した視差画像dpを得ることができる。本実施形態では、画像処理部41が路面視差除去部として機能している。
【0030】
図4及び
図7に示すように、ステップS3において、画像処理部41は、視差画像dpを複数の分割領域A1に分割する。本実施形態では、視差画像dpのうち物体の検出を行う検出範囲Aが定められており、この検出範囲Aの分割が行われる。検出範囲Aは、横方向の画素数が視差画像dpの横方向の画素数と同一であり、縦方向の画素数が視差画像dpの縦方向の画素数よりも少ない範囲である。視差画像dpには、検出範囲A外の領域が含まれることになり、検出範囲A外の領域については物体の検出が行われない。検出範囲A外の領域は、ステレオカメラ31から過剰に近い位置と、ステレオカメラ31から過剰に離れた領域である。検出範囲Aは、フォークリフト10の進行に際して、物体の検出を行うべき範囲である。
【0031】
分割領域A1とは、視差画像dpを縦方向に区切った領域である。各分割領域A1は、複数の画素を含んだ領域であり、各画素に対応付けられた複数の視差を含んだ領域であるといえる。分割領域A1同士は、横方向に隣り合っている。本実施形態では、画像処理部41が分割部として機能している。
【0032】
図4に示すように、ステップS4において、画像処理部41は、複数の分割領域A1のうち物体の位置の検出を行った分割領域A1が最後の分割領域A1か否かを判定する。画像処理部41は、ステップS5以降の処理で、分割領域A1毎に物体の位置の検出を行う。ステップS5以降の処理で物体の位置の検出を行った後にステップS4の処理を行い、ステップS4の判定結果が否定となると、画像処理部41は物体の検出を終えていない分割領域A1について、ステップS5以降の処理を行う。即ち、各分割領域A1について、順次、物体の位置の検出が行われていくことになる。全ての分割領域A1について、物体の位置の検出が行われるまで、ステップS4の判定結果は否定となる。ステップS4の判定結果が肯定の場合、画像処理部41は、ステップS1の処理を行う。これにより、物体の検出は、所定のフレーム毎に繰り返し行われることになる。
【0033】
ステップS5において、画像処理部41は、分割領域A1に含まれる画素に対応付けられた視差のヒストグラムを生成する。例えば、
図8に示すように、分割領域A1の1つについて視差のヒストグラムを生成すると、視差毎の頻度=視差の出現頻度の分布を得ることができる。第1画像における分割領域A1に対応する部分に物体が存在する場合、物体により視差が生じる。同一物体で生じる視差は、物体までの距離、物体の大きさ、物体の形状、視差の算出精度などに起因して若干のばらつきが生じるものの、略同一の値となる。従って、第1画像における分割領域A1に対応する部分に物体が写っている場合、当該物体により生じる視差の頻度が多くなる。本実施形態では、画像処理部41がヒストグラム生成部として機能している。
【0034】
図4に示すように、ステップS6において、画像処理部41は、ヒストグラムから頻度が閾値以上である視差を抽出する。
図8に示す例では、視差6[px]、視差7[px]が閾値以上の視差となる。なお、閾値としては、視差により物体が存在していると判断できる値に設定される。物体が存在していない場合であってもステレオ処理の精度などにより視差が現れたり、僅かな大きさの物体により視差が現れる場合がある。このような場合、視差は存在するものの、フォークリフト10の走行の妨げになる物体は存在しないとみなせるように閾値を設定している。本実施形態では、画像処理部41が抽出部として機能している。
【0035】
ステップS7において、画像処理部41は、頻度が閾値以上の視差のうち値の最も大きい最大視差を抽出する。
図8に示す例では、7[px]が最大視差として抽出されることになる。
【0036】
ステップS8において、画像処理部41は、頻度が閾値以上の視差のうち頻度の最も多い最大頻度視差を抽出する。
図8に示す例では、6[px]が最大頻度視差として抽出される。
【0037】
画像処理部41は、ステップS9において、最大視差と最大頻度視差が隣接しているか否かの判定を行う。視差は整数として算出されるため、画像処理部41は、最大視差から最大頻度視差を減算した値の絶対値が1の場合、最大視差と最大頻度視差は隣接していると判断することができる。本実施形態において、画像処理部41が判定部として機能している。
【0038】
前述したように、視差はステレオカメラ31に近いほど大きくなるため、最大視差は分割領域A1内の物体のうちステレオカメラ31に最も近い物体によって生じた視差といえる。
【0039】
図9に示すように、最大視差と最大頻度視差とが隣接していない場合、最大視差と最大頻度視差とは異なる物体により生じた視差であると判断できる。各カメラ32,33によって撮像された画像に、奥行き方向に重なる複数の物体が写っている場合、ステレオカメラ31から各物体までの距離差に起因して、ヒストグラムには複数の極大値が生じ得る。ヒストグラムに複数の極大値が生じると、最大視差と最大頻度視差とが隣接しなくなる。
【0040】
図10に示すように、最大視差と最大頻度視差とが隣接している場合、最大視差と最大頻度視差とは同一の物体により生じた視差であるとみなすことができる。仮に、最大視差を生じさせた物体と、最大頻度視差を生じさせた物体とが異なっていた場合であっても、最大視差と最大頻度視差が隣接していれば、両物体は近接して配置されているといえる。従って、両物体を同一の物体とみなしたとしても実用上の支障は生じないと考えられる。
【0041】
図4に示すように、ステップS9の判定結果が肯定の場合、画像処理部41は、ステップS10において、注目視差として最大頻度視差を設定する。注目視差とは、ステレオカメラ31に最も近い物体により生じた視差のうちの代表的な視差である。ステップS9の判定結果が肯定の場合、最大視差と最大頻度視差とは、ステレオカメラ31に最も近い物体により生じた視差と判断できる。このため、ステレオカメラ31に最も近い物体により生じた視差のうち支配的である最大頻度視差を注目視差とする。
【0042】
ステップS9の判定結果が否定の場合、画像処理部41は、ステップS11において、注目視差として最大視差を設定する。ステップS9の判定結果が否定の場合、分割領域A1内には複数の物体により生じた視差が含まれていると判断できる。この場合、フォークリフト10の進行の妨げになるのはステレオカメラ31に最も近い物体である。このため、ステップS9の判定結果が否定の場合には、最大視差を注目視差とすることで、ステレオカメラ31に最も近い物体の位置の検出を行う。本実施形態において、画像処理部41は、注目視差設定部として機能している。
【0043】
ステップS12において、画像処理部41は、注目視差+1の視差である加算視差の頻度を抽出する。
図8の例では、加算視差は、7[px]となる。
ステップS13において、画像処理部41は、以下の(1)式から採用視差[px]を算出する。なお、採用視差とは、物体の位置の演算に用いられる視差である。採用視差の小数点以下桁数は1以上である。なお、本実施形態では、採用視差の小数点以下桁数を1としている。
【0044】
【数4】
図8に示す例では、注目視差=6[px]、加算視差=7[px]、注目視差の頻度=100、加算視差の頻度=80である。算出される採用視差は、6.444≒6.4となる。本実施形態において、画像処理部41は、採用視差算出部として機能している。
【0045】
ステップS14において、画像処理部41は、採用視差を用いて、ステレオカメラ31から物体までの距離、即ち、物体の位置を演算する。なお、採用視差は、ステレオカメラ31に最も近い物体により生じた視差を用いて求められたものであり、採用視差を用いて演算される物体の位置とは、各分割領域A1内の物体のうちステレオカメラ31に最も近い物体とステレオカメラ31との相対位置となる。採用視差を用いて演算される物体の位置は、各分割領域A1を1つの画素とみなした場合に、当該画素に写る物体の位置ともいえる。画像処理部41は、以下の(3)式から、水平方向のうち光軸の延びる方向に対する物体の位置Ywを演算する。本実施形態では、水平方向のうち光軸の延びる方向はフォークリフト10の後方向となる。
【0046】
【数5】
焦点距離は、ステレオカメラ31の固有の値であり、記憶部43に記憶されている。なお、位置Ywは、視差画像dp中のY座標を実空間上の座標=ワールド座標に変換した値ともいえる。
【0047】
画像処理部41は、以下の(4)式から水平方向のうち光軸に直交する方向に対する物体の位置Xwを演算する。本実施形態では、水平方向のうち光軸に直交する方向はフォークリフト10の左右方向となる。なお、左右とは、ステレオカメラ31が向いている方向を前とした場合の左右である。
【0048】
【数6】
uは視差画像dp中における分割領域A1のX座標=横方向の画素位置である。u0は視差画像dpにおける中心座標OのX座標である。なお、位置Xwは、視差画像dp中のX座標を実空間上の座標=ワールド座標に変換した値ともいえる。分割領域A1には、複数の横方向の画素が含まれているため、uの取り得る範囲は、分割領域A1の横方向の画素数と同一となる。uは分割領域A1に含まれるX座標から任意の値とすることができるが、uを1つのみとした場合、フォークリフト10の左右方向に対する物体の位置がuの値によって変化する。詳細にいえば、分割領域A1は、横方向の画素を複数含んでいるため、分割領域A1に含まれる物体は、最大で横方向の画素数に対応する幅を実空間上で占有する。しかしながら、uを1つのみとした場合、分割領域A1のX座標のうち1点のみしか位置の演算が行われず、分割領域A1の全てのX座標について位置の演算を行う場合に比べて、実空間上で物体が占有する幅を認識しにくい。これは、ステレオカメラ31から離れるほど、即ち、採用視差が小さくなるほど顕著となる。
【0049】
本実施形態では、uを複数とし、複数点について物体の位置の演算を行う。詳細にいえば、
図8に示すように、分割領域A1に含まれるX座標のうち中心のX座標をum、分割領域A1の両端のX座標のうち右端のX座標をur、左端のX座標をulとする。そして、(4)式のu=um、ur、ulとした以下の(5)式、(6)式及び(7)式から物体の位置を演算する。
【0050】
【0051】
【0052】
【数9】
位置Xwmは、分割領域A1内の物体の左右方向での中心部分の実空間上の位置Xwである。位置Xwrは、分割領域A1内の物体の右端部分の実空間上の位置Xwである。位置Xwlは、分割領域A1内の物体の左端部分の実空間上の位置Xwである。位置Xwrは分割領域A1の右端、位置Xwlは分割領域A1の左端であるため、位置Xwmと位置Xwlは、物体が実空間上で占有する最大の幅を再現していると捉えることができる。位置Xwm,Xwr,Xwlが負の値の場合、位置Xwはフォークリフト10の幅方向の中心よりも左側に位置しているといえる。位置Xwm,Xwr,Xwlが正の値の場合、物体の位置はフォークリフト10の幅方向の中心よりも右側に位置しているといえる。本実施形態において、画像処理部41は、演算部として機能している。上記したように、画像処理部41で実現される視差画像取得部、路面視差除去部、分割部、ヒストグラム生成部、抽出部、判定部、注目視差設定部、採用視差算出部及び演算部は、画像処理部41のCPU42が所定のプログラムを実行することで実現されているといえる。
【0053】
図11に示すように、視差画像dpの各分割領域A1について、位置Ywと位置Xwを求めた結果をプロットすると、鳥瞰プロットが得られる。
図11は、原点をフォークリフト10の現在位置、縦軸をフォークリフト10の後方向に対する距離[m]、横軸をフォークリフト10の左右方向に対する距離[m]とする座標系である。図中の丸はXwl、四角はXwm、菱形はXwrを示す。分割領域A1毎に3つの点がプロットされるため、プロットされる点の数は、分割領域A1の数×3である。なお、説明の便宜上、
図7では分割領域A1の数を過少に表現したが、
図11は、分割領域A1の数を
図7に示す分割領域A1よりも多くした場合に得られる鳥瞰プロットを示している。
【0054】
図11から把握できるように、フォークリフト10の3[m]後方付近には障害物OB1、フォークリフト10の5[m]後方であり3[m]左方付近には障害物OB2、フォークリフトの11[m]後方であり3[m]左方付近には障害物OB3が存在することを検出できる。また、フォークリフト10の右方には、後方に向けて延びる壁Wが存在していることを検出できる。
【0055】
物体検出処理により物体の位置が検出されると、画像処理部41は、物体の位置の検出結果、即ち、物体の座標をメインコントローラ20に送信する。メインコントローラ20は、物体の座標を把握しながら、フォークリフト10と物体との距離に応じて、フォークリフト10の減速処理を行う。減速処理としては、フォークリフト10を停止させる処理、フォークリフト10の速度を現在速度から段階的に低下させる処理、フォークリフト10の速度に制限を課し、制限速度を上回る速度での走行を規制する処理など、様々な処理が挙げられる。
【0056】
本実施形態の作用について説明する。
物体検出装置30は、各分割領域A1に含まれる物体のうちフォークリフト10に最も近い物体の位置を検出する。視差は、フォークリフト10に近いほど大きくなるため、頻度が閾値以上の視差のうち最大視差を利用することで、フォークリフト10に最も近い物体の位置を検出できる。
【0057】
ここで、フォークリフト10に最も近い物体の位置を検出するために、最大視差のみを用いて物体の位置を演算する場合、(3)式及び(4)式の分母である採用視差を最大視差に置き換えた式で物体の位置が演算される。視差は、整数として算出されるため、整数である最大視差を用いて物体の位置が演算されることになる。仮に、実空間上で物体が視差6.5相当の位置に存在しているとすると、最大視差は6[px]あるいは7[px]となり、この最大視差を用いて物体の位置が演算されることになる。(3)式及び(4)式から把握できるように、視差が物体の位置の検出精度に与える影響は大きく、整数である視差を用いる場合には、物体の位置=物体までの距離の分解能が大きく、物体の位置の検出精度が低い。
【0058】
仮に、視差を小数点以下桁数が1以上である値で表現できたとすると、分割領域A1内の物体のうちステレオカメラ31に最も近い物体の視差は、注目視差と加算視差との間の値となる。そして、注目視差の頻度と加算視差の頻度の比率は、視差の小数点以下の値に応じたものとなる。例えば、視差の小数点以下の値が注目視差寄りであれば注目視差の頻度のほうが加算視差の頻度よりも多くなり、視差の小数点以下の値が加算視差寄りであれば加算視差の頻度のほうが注目視差の頻度よりも多くなる。実空間上での物体の位置が視差6.5相当であれば、視差6[px]の頻度と、視差7[px]の頻度とは5:5に近似すると考えられる。同様に、物体の位置が視差6.3相当であれば、視差6[px]の頻度と、視差7[px]の頻度とは7:3に近似すると考えられる。即ち、視差の小数点以下の値が、隣接する視差の頻度の比率となって現れると考えられる。
【0059】
従って、注目視差の頻度と加算視差の頻度との比率から演算された採用視差は、分割領域A1内の物体のうち最もステレオカメラ31に近い物体により生じた視差を小数点以下桁数1以上で表現したものと捉えることができる。
【0060】
本実施形態の効果について説明する。
(1)採用視差は、小数点以下桁数が1以上であるため、整数である視差を用いて物体の位置を演算する場合に比べて、物体の位置の分解能を小さくすることができる。従って、物体の位置の検出精度を向上させることができる。
【0061】
なお、視差画像dpの各画素を細分化するサブピクセル化処理を行うことで、物体の位置を検出することも考えられる。しかしながら、サブピクセル化処理は、物体検出装置30にかかる負荷が大きくなる。本実施形態のように、視差のヒストグラムから演算された採用視差を用いることで、物体検出装置30の負荷が増大することを抑制しつつ、物体の位置の検出精度を向上させることができる。
【0062】
(2)視差画像dpから路面の視差を除去して、路面の視差を除去した後の視差画像dpを用いて視差のヒストグラムを生成している。路面の視差を含んだ視差画像dpからヒストグラムを生成した場合、路面の視差の頻度が支配的となるおそれがあり、物体により生じる視差が注目視差とならないおそれがある。これに対して、路面の視差を除去した後の視差画像dpを用いることで、適切に注目視差を設定することができる。
【0063】
(3)分割領域A1のうちX座標が異なる3点を用いて物体の位置を演算している。仮に、分割領域A1のうち1点についてのみ物体の位置を演算すると、実空間上で物体が占有する幅を認識しにくくなる。分割領域A1毎に3点について物体の位置を演算することで、実空間上で物体が占有する幅を認識しやすい。
【0064】
実施形態は、以下のように変更して実施することができる。実施形態及び以下の変形例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
○分割領域A1の1つのX座標のみについて物体の位置を演算してもよい。この場合、分割領域A1内の物体の位置が1点のみ演算されるため、物体の左右位置はX座標に依存することになり、実空間上で物体が占有する幅を認識しにくくなるおそれがある。このため、演算された物体の位置から所定範囲については物体が存在すると判断するなど、物体の幅を考慮することが好ましい。例えば、X座標としてumを用いて分割領域A1の物体の位置を演算した場合、演算された物体の座標の左右両側の所定範囲に亘って物体が存在していると判断することが好ましい。
【0065】
○画像処理部41は、路面の視差が除去されていない視差画像dpからヒストグラムを生成してもよい。路面は、平坦であるため、路面の視差はステレオカメラ31から離れるにつれて徐々に小さくなっていく。従って、路面の視差の頻度は予め予測することができる。これを考慮して、視差の頻度の閾値を設定することで、路面の視差が除去されていない視差画像dpから物体の位置を演算することができる。
【0066】
○画像処理部41は、検出範囲Aを定めず、視差画像dpの全体を複数の分割領域A1に分割してもよい。即ち、画像処理部41は、視差画像dpの全体に亘って物体の位置の検出を行ってもよい。
【0067】
○視差画像取得部、路面視差除去部、分割部、ヒストグラム生成部、抽出部、判定部、注目視差設定部、採用視差算出部及び演算部は、それぞれ、個別の制御装置によって構成されていてもよい。
【0068】
○第1カメラ32と第2カメラ33は、鉛直方向に並んで配置されていてもよい。
○第1画像の画素数と第2画像の画素数とは異なっていてもよい。例えば、比較画像である第2画像の画素数を視差画像の画素数と同一とし、基準画像である第1画像の画素数を第2画像の画素数よりも多くしてもよい。
【0069】
○ステレオカメラ31は、3つ以上のカメラを備えていてもよい。
○フォークリフト10は、エンジンの駆動によって走行するものでもよい。この場合、走行制御装置は、エンジンへの燃料噴射量などを制御する装置となる。
【0070】
○物体検出装置30は、建設機械、自動搬送車、トラックなどフォークリフト10以外の産業車両や乗用車などの移動体に搭載されていてもよい。物体検出装置30が乗用車に搭載される場合、物体検出装置30は、検出された物体の位置を、例えば、アクティブ・サスペンションシステム、自動ブレーキシステムなどを制御する制御装置に送信するようにしてもよい。物体検出装置30が自動搬送車に搭載される場合、物体検出装置30は、検出された物体の位置を、例えば、マッピングを行う制御装置や、走行経路を生成する制御装置に送信してもよい。このように、物体検出装置30によって検出された物体の位置は、様々な処理に用いることができる。
【符号の説明】
【0071】
30…物体検出装置、31…ステレオカメラ、41…画像処理部(視差画像取得部、路面視差除去部、分割部、ヒストグラム生成部、抽出部、判定部、注目視差設定部、採用視差算出部及び演算部)。