(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-30
(45)【発行日】2022-06-07
(54)【発明の名称】物体検出装置
(51)【国際特許分類】
G08G 1/16 20060101AFI20220531BHJP
G06T 7/00 20170101ALI20220531BHJP
【FI】
G08G1/16 C
G06T7/00 650A
(21)【出願番号】P 2019030462
(22)【出願日】2019-02-22
【審査請求日】2021-05-20
(73)【特許権者】
【識別番号】000003218
【氏名又は名称】株式会社豊田自動織機
(74)【代理人】
【識別番号】100105957
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】石▲崎▼ 将崇
【審査官】佐田 宏史
(56)【参考文献】
【文献】特開2017-083326(JP,A)
【文献】特表2015-520433(JP,A)
【文献】特開2008-033750(JP,A)
【文献】特開2005-215908(JP,A)
【文献】特開2014-127208(JP,A)
【文献】特開2014-081871(JP,A)
【文献】特開2008-033819(JP,A)
【文献】特開2001-351193(JP,A)
【文献】笹谷 聡、外3名,“監視向けステレオカメラを用いた高精度かつ遮蔽ロバストな人物追跡”,SSII2015 第21回 画像センシングシンポジウム 講演論文集,日本,画像センシング技術研究会,2015年06月10日,pp.1-4
(58)【調査した分野】(Int.Cl.,DB名)
G08G 1/16
G06T 1/00,7/00-7/90
H04N 7/18
G01B 11/00-11/30
(57)【特許請求の範囲】
【請求項1】
ステレオカメラと、
前記ステレオカメラによる撮像が行われた画像から各画素に視差が対応付けられた視差画像を取得する視差画像取得部と、
前記視差が取得された特徴点について、実空間上での位置を表す三次元座標系での座標を算出する座標算出部と、
前記三次元座標系の水平面を表す座表面を複数に分割した各エリアに含まれる前記特徴点を、前記特徴点の高さの範囲で分けた複数の区分毎に計数する計数部と、
各エリアのうち前記特徴点の総和が閾値を超えたエリアには、物体が存在していると判定する物体判定部と、
前記物体が存在していると判定された前記エリア毎に、前記特徴点が存在する区分のうち最も高い区分を前記物体の高さとして設定する物体高設定部と、
同一の高さの前記物体のうち隣接したエリアに存在している物体を同一物体であると判定する同一物体判定部と、
前記同一物体判定部により判定が行われた後の前記物体毎に、前記物体が占有するエリアの大きさを算出する算出部と、
前記算出部により算出された前記エリアの大きさが所定値以下の前記物体を人候補であると判定する人候補判定部と、を備える物体検出装置。
【請求項2】
前記人候補の実空間上での座標から、前記人候補の前記画像上での座標を算出する人候補座標算出部と、
前記人候補の前記画像上での座標に対して人検出処理を行い、前記人候補が人か否かを判定する人判定部と、を備える請求項1に記載の物体検出装置。
【請求項3】
前記区分のうち前記特徴点の高さの範囲が最も低い区分を最低区分とすると、
前記物体高設定部は、前記特徴点が前記最低区分を含む複数の区分に存在する場合、
前記最低区分から連続して前記区分に前記特徴点が存在する場合、前記最低区分に連続して前記特徴点が存在する区分のうち最も高い区分を前記物体の高さとして設定し、
前記最低区分に連続した前記区分に前記特徴点が存在しない場合、前記最低区分を前記物体の高さとして設定する請求項1又は請求項2に記載の物体検出装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、物体検出装置に関する。
【背景技術】
【0002】
車両などの移動体には人や、障害物などの物体を検出するための物体検出装置が搭載されている。特許文献1に記載の物体検出装置は、ステレオカメラによって撮像された画像から得られた視差画像に基づきステレオカメラによって撮像された物体の位置を検出している。物体検出装置は、視差画像を左右方向に分割して得られる各領域について視差の頻度分布を算出する。物体検出装置は、視差画像のX軸方向の位置と、間引き視差との関係から画像に写る環境を俯瞰したマップを得ることができる。間引き視差とは、視差を距離に応じた間引き率で変換したものである。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、検出した物体が人候補か否かに応じて異なる処理が行われる場合など、物体検出装置には、検出した物体が人候補か否かを判定することが望まれる場合がある。
本発明の目的は、検出した物体が人候補か否かを判定することができる物体検出装置を提供することにある。
【課題を解決するための手段】
【0005】
上記課題を解決する物体検出装置は、ステレオカメラと、前記ステレオカメラによる撮像が行われた画像から各画素に視差が対応付けられた視差画像を取得する視差画像取得部と、前記視差が取得された特徴点について、実空間上での位置を表す三次元座標系での座標を算出する座標算出部と、前記三次元座標系の水平面を表す座表面を複数に分割した各エリアに含まれる前記特徴点を、前記特徴点の高さの範囲で分けた複数の区分毎に計数する計数部と、各エリアのうち前記特徴点の総和が閾値を超えたエリアには、物体が存在していると判定する物体判定部と、前記物体が存在していると判定された前記エリア毎に、前記特徴点が存在する区分のうち最も高い区分を前記物体の高さとして設定する物体高設定部と、同一の高さの前記物体のうち隣接したエリアに存在している物体を同一物体であると判定する同一物体判定部と、前記同一物体判定部により判定が行われた後の前記物体毎に、前記物体が占有するエリアの大きさを算出する算出部と、前記算出部により算出された前記エリアの大きさが所定値以下の前記物体を人候補であると判定する人候補判定部と、を備える。
【0006】
ステレオカメラによって撮像された画像に物体が写ると、物体の縁などが特徴点となり視差が算出される。従って、三次元座標系での水平面を複数に分割したエリア毎に特徴点を計数すると、物体が存在しているエリアに含まれる特徴点の数は多くなる。エリア毎に特徴点を計数し、閾値との比較を行うことで、各エリアから物体が存在しているエリアを抽出することができる。所定値を画像に人が写ったときに人によって占有されるエリアの大きさに基づいた値とすることで、いずれの物体が人候補であるかを判定することができる。これにより、物体が人候補か否かを判定することができる。
【0007】
上記物体検出装置について、前記人候補の実空間上での座標から、前記人候補の前記画像上での座標を算出する人候補座標算出部と、前記人候補の前記画像上での座標に対して人検出処理を行い、前記人候補が人か否かを判定する人判定部と、を備えていてもよい。
【0008】
人判定部は、人候補と判定された物体に対して人検出処理を行う。このため、画像の全体に対して人検出処理を行う場合に比べて、短時間で人を検出することができる。
上記物体検出装置について、前記区分のうち前記特徴点の高さの範囲が最も低い区分を最低区分とすると、前記物体高設定部は、前記特徴点が前記最低区分を含む複数の区分に存在する場合、前記最低区分から連続して前記区分に前記特徴点が存在する場合、前記最低区分に連続して前記特徴点が存在する区分のうち最も高い区分を前記物体の高さとして設定し、前記最低区分に連続した前記区分に前記特徴点が存在しない場合、前記最低区分を前記物体の高さとして設定してもよい。
【0009】
これによれば、浮いている物体を除いた物体を検出することができる。
【発明の効果】
【0010】
本発明によれば、検出した物体が人候補か否かを判定することができる。
【図面の簡単な説明】
【0011】
【
図1】物体検出装置が搭載されるフォークリフトの側面図。
【
図2】フォークリフト及び物体検出装置の概略構成図。
【
図4】物体検出装置が行う処理を示すフローチャート。
【
図6】特徴点がプロットされたプロットエリアを示す図。
【
図7】プロットエリアのうち物体が存在するエリアを示す図。
【
図8】物体が存在するエリアに区分毎に個別のラベルを付与したプロットエリアを示す図。
【
図9】物体が存在するエリアに同一物体毎に個別のラベルを付与したプロットエリアを示す図。
【発明を実施するための形態】
【0012】
以下、物体検出装置の一実施形態について説明する。
図1に示すように、フォークリフト10は、車体11と、車体11に設けられた荷役装置12と、を備える。なお、フォークリフト10は、自動で走行動作及び荷役動作が行われるものであってもよいし、搭乗者による操作によって走行動作及び荷役動作が行われるものであってもよい。
【0013】
図2に示すように、フォークリフト10は、メインコントローラ20と、走行用モータM1と、走行用モータM1を制御する走行制御装置23と、車速センサ24と、を備える。メインコントローラ20は、走行動作及び荷役動作に関する制御を行う。メインコントローラ20は、CPU21と、種々の制御を行うためのプログラムなどが記憶されたメモリ22と、を備える。
【0014】
メインコントローラ20のCPU21は、フォークリフト10の車速が目標速度となるように走行制御装置23に走行用モータM1の回転数の指令を与える。本実施形態の走行制御装置23は、モータドライバである。本実施形態の車速センサ24は、走行用モータM1の回転数を検出する回転数センサである。車速センサ24は、走行用モータM1の回転数を走行制御装置23に出力する。走行制御装置23は、メインコントローラ20からの指令に基づき、走行用モータM1の回転数が指令と一致するように走行用モータM1を制御する。
【0015】
フォークリフト10には、物体検出装置30が搭載されている。物体検出装置30は、ステレオカメラ31と、ステレオカメラ31によって撮像された画像の画像処理を行う画像処理部41と、を備える。
図1に示すように、ステレオカメラ31は、例えば、車体11の上部などフォークリフト10の上方からフォークリフト10の走行する路面を鳥瞰できるように配置されている。なお、車体11とは、座席や走行に関する部材を備える基台や、座席の上部に設けられるヘッドガードを含む。本実施形態のステレオカメラ31は、フォークリフト10の後方を撮像する。従って、物体検出装置30で検出される物体は、フォークリフト10の後方の物体となる。
【0016】
なお、フォークリフト10の前方を撮像するステレオカメラを用いてフォークリフト10の前方の物体を検出するようにしてもよい。また、フォークリフト10の前方及び後方を撮像する個別のステレオカメラを用いてフォークリフト10の前方及び後方の両側の物体を検出するようにしてもよい。即ち、ステレオカメラの配置を変更することで、任意の方向の物体を検出することが可能である。フォークリフト10の前方を撮像するステレオカメラを設ける場合、例えば、車体11の上部や荷役装置12の上部などにステレオカメラは設けられる。
【0017】
図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形式の画像である。
【0018】
画像処理部41は、CPU42と、RAM及びROM等からなる記憶部43と、を備える。記憶部43には、ステレオカメラ31によって撮像された画像から物体を検出するための種々のプログラムが記憶されている。画像処理部41は、各種処理のうち少なくとも一部の処理を実行する専用のハードウェア、例えば、特定用途向け集積回路:ASICを備えていてもよい。画像処理部41は、コンピュータプログラムに従って動作する1つ以上のプロセッサ、ASIC等の1つ以上の専用のハードウェア回路、あるいは、それらの組み合わせを含む回路として構成し得る。プロセッサは、CPU、並びに、RAM及びROM等のメモリを含む。メモリは、処理をCPUに実行させるように構成されたプログラムコードまたは指令を格納している。メモリ、即ち、コンピュータ可読媒体は、汎用または専用のコンピュータでアクセスできるあらゆるものを含む。
【0019】
以下、画像処理部41により行われる物体検出処理について説明する。物体検出処理は、フォークリフト10が起動状態のときに繰り返し行われる。起動状態とは、フォークリフト10に走行動作及び荷役動作を行わせることが可能な状態である。以下の説明では、一例として、
図3に示す環境をステレオカメラ31によって撮像した場合の物体検出処理について説明する。
図3は、フォークリフト10の周辺を撮像することで得られた第1画像I1である。第1画像I1から把握できるように、フォークリフト10の周辺には、人や、人以外の物体が存在している。人以外の物体とは、フォークリフト10の進行の妨げとなる障害物である。
【0020】
図4及び
図5に示すように、ステップS1において、画像処理部41は、視差画像dpを取得する。視差画像dpは、画素に対して視差[px]を対応付けた画像である。視差は、第1画像I1と、第2画像とを比較し、各画像に写る同一特徴点について第1画像I1と第2画像の画素数の差を算出することで得られる。なお、特徴点とは、物体のエッジなど、境目として認識可能な部分である。特徴点は、輝度情報などから検出することができる。
【0021】
画像処理部41は、ステレオカメラ31によって撮像されている映像から同一フレームの第1画像I1及び第2画像を取得する。画像処理部41は、各画像を一時的に格納するRAMを用いて、RGBからYCrCbへの変換を行う。なお、画像処理部41は、歪み補正、エッジ強調処理などを行ってもよい。画像処理部41は、第1画像I1の各画素と第2画像の各画素との類似度を比較して視差を算出するステレオ処理を行う。なお、ステレオ処理としては、画素毎に視差を算出する手法を用いてもよいし、各画像を複数の画素を含むブロックに分割してブロック毎の視差を算出するブロックマッチング法を用いてもよい。各画素の類似度の比較には、例えば、SAD:Sum of Absolute Difference、SSD:Sum of Squared Differenceなどが用いられる。画像処理部41は、第1画像I1を基準画像、第2画像を比較画像として視差画像dpを取得する。画像処理部41は、第1画像I1の画素毎に、最も類似する第2画像の画素を抽出し、第1画像I1の画素と、当該画素に最も類似する画素の横方向の画素数の差を視差として算出する。これにより、基準画像である第1画像I1の各画素に視差が対応付けられた視差画像dpを取得することができる。なお、視差画像dpとは、必ずしも表示を要するものではなく、視差画像dpにおける各画素に視差が対応付けられたデータのことを示す。ステップS1の処理を行うことで、画像処理部41は、視差画像取得部として機能する。
【0022】
図5には、第1画像I1と第2画像から得られた視差画像dpを示す。
図5に示す視差画像dpでは、視差の大小を濃淡で表現している。視差は、ステレオカメラ31に近い位置ほど大きくなり、ステレオカメラ31から離れるほど小さくなる。以下、視差画像dpの横方向=X軸方向の座標をX座標Xiとし、視差画像dpの縦方向=Y軸方向の座標をY座標Yiとする。なお、視差画像dpは第1画像I1を基準画像として取得された画像であるため、X座標Xi及びY座標Yiは第1画像I1の座標ともいえる。X座標Xiは横方向の画素位置を示し、Y座標Yiは縦方向の画素位置を示す。例えば、視差画像dpが640×480[px]であれば、視差画像dpの中心座標は、(Xi:320,Yi:240)と表すことができる。
【0023】
図4に示すように、ステップS2において、画像処理部41は、視差画像dpから路面の視差を除去する。路面とは、フォークリフト10が存在している面である。路面の視差は、以下の(1)式によって予め求められる。
【0024】
【数1】
(1)式におけるM
0(y)は路面により生じる視差である。yは、視差画像dpにおけるY座標Yiである。Bは第1カメラ32と第2カメラ33との離間距離=基線長[mm]であり、詳細にいえば、第1カメラ32の光軸と第2カメラ33の光軸との離間距離である。Hはステレオカメラ31の設置高さ[mm]であり、詳細にいえば、路面からステレオカメラ31までの距離である。θは、ステレオカメラ31の設置角度であり、ステレオカメラ31の光軸が水平方向に延びている場合を0°とした場合の角度である。Fは焦点距離[mm]である。(1)式によって求められた路面の視差は、記憶部43に記憶されている。画像処理部41は、視差画像dpから路面の視差を除去することで、路面の視差が除去された視差画像dpを取得することができる。即ち、路面よりも高い位置に存在する物体により生じる視差を抽出した視差画像dpを得ることができる。
【0025】
ステップS3において、画像処理部41は、ワールド座標系における特徴点の座標を算出する。まず、画像処理部41は、カメラ座標系における特徴点の座標を算出する。カメラ座標系は、光軸をZ軸とし、光軸に直交する2つの軸のそれぞれをX軸、Y軸とする3軸直交座標系である。カメラ座標系における特徴点の座標は、カメラ座標系におけるZ座標Zc、X座標Xc及びY座標Ycで表わすことができる。Z座標Zc、X座標Xc及びY座標Ycは、それぞれ、以下の(2)式~(4)式を用いて算出することができる。
【0026】
【0027】
【0028】
【数4】
(2)式~(4)式におけるBは基線長[mm]、fは焦点距離[mm]、dは視差[px]である。xpは視差画像dp中の任意のX座標Xiであり、x’は視差画像dpの中心座標のX座標Xiである。ypは視差画像dp中の任意のY座標Yiであり、y’は視差画像dpの中心座標のY座標Yiである。
【0029】
xpを視差画像dp中の特徴点のX座標Xiとし、ypを視差画像dp中の特徴点のY座標Yiとし、dを特徴点の座標に対応付けられた視差とすることで、カメラ座標系における特徴点の座標が算出される。
【0030】
ここで、フォークリフト10の進行方向に延びる軸をY軸、鉛直方向に延びる軸をZ軸、Y軸及びZ軸に直交する軸をX軸とする3軸直交座標系での座標を実空間上での三次元座標系であるワールド座標系とする。ワールド座標系での特徴点の座標は、ワールド座標系におけるX座標Xw、Y座標Yw、Z座標Zwで表わすことができる。
【0031】
画像処理部41は、以下の(5)式を用いてカメラ座標系をワールド座標系に変換するワールド座標変換を行う。
【0032】
【数5】
ここで、(5)式におけるHはワールド座標系におけるステレオカメラ31の設置高さ[mm]であり、θはカメラ32,33の光軸と、水平面とがなす角+90°の角度である。
【0033】
ワールド座標変換で得られたワールド座標のうちX座標Xwは、フォークリフト10の左右方向に対するフォークリフト10から特徴点までの距離を示す。なお、左右とは、ステレオカメラ31が向いている方向を前とした場合の左右である。Y座標Ywは、フォークリフト10の進行方向に対するフォークリフト10から特徴点までの距離を示す。Z座標Zwは、路面から特徴点までの高さを示す。ステップS3の処理を行うことで、画像処理部41は、座標算出部として機能する。
【0034】
次に、
図4及び
図6に示すように、ステップS4において、画像処理部41は、ワールド座標系における水平面を表す座表面であるXY平面を複数のエリアA1に分割して、プロットエリアA2とする。プロットエリアA2は、横方向をX軸方向、縦方向をY軸方向とし、1つのエリアA1を1つの画素とみなした画像と捉えることができる。プロットエリアA2のうちY座標Ywが最小であり、X座標XwがプロットエリアA2の中心である座標をプロットエリアA2の原点Oとする。原点Oは、フォークリフト10の位置、詳細にいえば、ステレオカメラ31の位置といえる。原点OからX軸方向に離れるほど、左右方向に対してフォークリフト10から離れており、原点OからY軸方向に離れるほど、前後方向に対してフォークリフト10から離れている。原点Oを(Xw:0,Yw:0)とし、原点Oより左側のX座標Xwは-の値とし、原点Oより右側のX座標Xwは+の値とする。即ち、X座標Xwの-と+は、フォークリフト10に対して左右いずれの方向かを示すものである。プロットエリアA2は、特徴点をプロットしたワールド座標系を俯瞰した俯瞰図である。言い換えれば、プロットエリアA2は、ステレオカメラ31によって撮像された環境を俯瞰した俯瞰図といえる。
【0035】
各エリアA1は、同一の大きさであり、例えば、一辺を500[mm]とする正方形である。本実施形態では、直立した人を俯瞰した場合に、人の水平方向への寸法の取り得る最大値を考慮してエリアA1の大きさは設定される。直立した人の水平方向への寸法の取り得る最大値とは、例えば、人の肩幅である。人の肩幅としては、例えば、成人の平均値を採用することができる。
【0036】
次に、ステップS5において、画像処理部41は、エリアA1毎に含まれる特徴点を計数する。画像処理部41は、各特徴点のX座標Xw及びY座標Ywから各特徴点がいずれのエリアA1に位置しているかを判定し、エリアA1毎に特徴点を計数する。プロットエリアA2はXY平面であるため、特徴点の座標からは特徴点の高さ情報であるZ座標Zwが失われる。画像処理部41は、特徴点の計数を行う際に、特徴点の高さの範囲で分けた区分毎に特徴点を計数する。なお、X座標Xw及びY座標Ywが同一であり、Z座標Zwのみが異なる複数の特徴点が存在する場合、プロットエリアA2では、同一座標に複数の特徴点が存在することになる。この場合、同一座標に存在する複数の特徴点毎に個別に計数を行う。
【0037】
特徴点の高さの範囲で分けた区分とは、隣接した物体同士を区別できるように設定されている。好ましくは、ステレオカメラ31の撮像範囲に人と、当該人に隣り合う物体とが存在する場合、人と物体とを別々の物体と区別できるように区分が設定される。本実施形態では、特徴点の高さの範囲は、500[mm]以上1000[mm]未満、1000[mm]以上1500[mm]未満、1500[mm]以上2000[mm]未満、2000[mm]以上の4つの区分に分けられている。以下、500[mm]以上1000[mm]未満の範囲を第1区分、1000[mm]以上1500[mm]未満の範囲を第2区分、1500[mm]以上2000[mm]未満の範囲を第3区分、2000[mm]以上の範囲を第4区分として説明を行う。第1区分は、特徴点の高さの範囲が最も低い最低区分である。画像処理部41は、ステップS4及びステップS5の処理を行うことで、計数部として機能する。
【0038】
次に、
図4及び
図7に示すように、ステップS6において、画像処理部41は、物体が存在しているエリアA1を検出する。画像処理部41は、ステップS5での計数によって、特徴点の総和が閾値を越えたエリアA1には、物体が存在していると判定する。なお、特徴点の総和とは、区分毎に計数された特徴点の数の合計である。閾値としては、ステレオ処理の精度等を原因として生じる僅かな特徴点が存在するエリアA1に、物体が存在していると判定されないような値に設定される。即ち、物体が存在していないにも関わらず、物体が存在していると判定されないように閾値は設定されている。
図7には、物体が存在していると判定されたエリアA1をプロットしている。
【0039】
なお、ステレオカメラ31から離れた位置ほど視差が小さくなるため、視差が1変化したときに算出される特徴点の座標はY座標Ywが大きくなるほど、即ち、原点Oから離れるほど大きく変化する。結果として、Y座標Ywが大きくなるほど特徴点は離散的になり、Y座標Ywが大きいエリアA1ほど、物体が存在していると判定されにくくなる。しかしながら、Y座標Ywが大きいエリアA1ほどフォークリフト10から離れたエリアA1であり、フォークリフト10に近いエリアA1に比べて、フォークリフト10から離れたエリアA1の物体を検出する必要性は低い。また、物体検出処理は繰り返し行われるため、フォークリフト10の進行に伴い物体とフォークリフト10が近付けば、距離を原因として検出されなかった物体も検出されるようになる。このため、Y座標Ywが大きいエリアA1ほど物体が存在していると判定されにくい場合であっても、実用上の支障は来さないと考えられる。ステップS6の処理を行うことで、画像処理部41は、物体判定部として機能する。
【0040】
次に、ステップS7において、画像処理部41は、各エリアA1に存在する物体の高さを設定する。物体の高さとは、特徴点の高さの範囲を表す各区分のいずれかである。画像処理部41は、最低区分である第1区分を含む複数の区分に特徴点が存在している場合であり、かつ、第1区分から連続して区分に特徴点が存在する場合、第1区分から連続して特徴点が存在する区分のうち最も高い区分を物体の高さとして設定する。例えば、第1区分、第2区分及び第4区分のそれぞれに特徴点が存在しており、第3区分に特徴点が存在していないエリアA1であれば、第1区分から連続して特徴点が存在する区分は第2区分までとなるため、物体の高さは第2区分になる。なお、特徴点が存在する区分とは、ステップS5での特徴点の計数によって、特徴点が計数された区分である。画像処理部41は、計数された特徴点の数に計数閾値を設定し、計数された特徴点の数が計数閾値を超えた区分には特徴点が存在していると判定してもよい。即ち、特徴点の数が計数閾値に満たない区分には、特徴点が存在していないと判定してもよい。
【0041】
画像処理部41は、第1区分を含む複数の区分に特徴点が存在している場合で、かつ、第1区分に連続した区分に特徴点が存在しない場合には第1区分を物体の高さとして設定する。例えば、第1区分及び第3区分に特徴点が存在し、第2区分に特徴点が存在しない場合、物体の高さとして第1区分が設定される。
【0042】
画像処理部41は、第1区分を除く複数の区分に特徴点が存在している場合には、複数の区分のうち最も高い区分を物体の高さとして設定する。例えば、第2区分及び第3区分に特徴点が存在しており、第1区分及び第4区分に特徴点が存在していない場合、物体の高さとして第3区分が設定される。画像処理部41は、いずれか1つの区分に特徴点が存在している場合、当該区分を物体の高さとして設定する。例えば、第2区分にのみ特徴点が存在している場合、物体の高さとして第2区分が設定される。
図7では、物体が存在するエリアA1の濃淡によって、物体の高さを表している。
【0043】
物体が路面上に位置している場合、特徴点は、第1区分のみ、あるいは、第1区分から連続する区分に存在することになる。従って、第1区分に特徴点が存在しているにも関わらず、特徴点が存在しない区分よりも高い区分に特徴点が存在しているエリアA1には、飛行体など路面から浮いた物体が存在していると推測できる。この場合には、路面から浮いている物体は存在しないとみなし、路面から浮いている物体の下方に存在する物体のみを物体として認識する。従って、特徴点が存在する区分のうち最も高い区分とは、路面上に位置している物体によって生じた特徴点のみを考慮した区分であってもよい。ステップS7の処理を行うことで、画像処理部41は、物体高設定部として機能する。
【0044】
次に、
図4及び
図8に示すように、ステップS8において、画像処理部41は、物体が存在していると判定されたエリアA1にラベルを付与するラベリング処理を行う。ラベルは、固有の識別子であり、本実施形態では、1~4の番号をラベルとしている。画像処理部41は、エリアA1に存在する物体の高さに応じたラベルを付与する。第1区分は番号1、第2区分は番号2、第3区分は番号3、第4区分は番号4に対応している。なお、
図8には、物体が存在していないと判定されたエリアA1には、番号0を付与している。
【0045】
次に、
図4及び
図9に示すように、ステップS9において、画像処理部41は、エリアA1毎に検出された物体から同一物体を検出する。画像処理部41は、複数のエリアA1に跨がって存在する同一高さの物体を同一物体と判定する。詳細にいえば、画像処理部41は、同一の高さの物体のうち隣接したエリアA1に存在している物体を同一物体であると判定する。なお、互いに隣接したエリアA1とは、Y軸方向及びX軸方向に隣り合う4つのエリアA1に加えて、斜めに隣り合う4つのエリアA1を含むものである。即ち、各エリアA1と、当該エリアA1を囲む八方のエリアA1は、互いに隣接したエリアA1といえる。画像処理部41は、同一物体が存在すると判定されたエリアA1毎に、ラベルを付与するラベリング処理を行う。即ち、ステップS8で高さ毎に個別に付与されたラベルを、同一物体毎に個別に付与されるラベルに変更する。ラベルは、固有の識別子であり、本実施形態では、同一物体毎に付与される番号である。
図9に示す例では、同一物体毎に1~15までの番号が付与されていることがわかる。
図9に示す例では、画像処理部41は、15個の物体がプロットエリアA2に存在していると判定している。ステップS9の処理を行うことで、画像処理部41は、同一物体判定部として機能する。なお、
図8及び
図9では、説明の便宜上、プロットエリアA2に0~27の列番号と、0~27の行番号とを付している。列番号及び行番号は、原点OからY軸方向に対して最も離れており、原点OからX軸方向に対して最も左方に離れたエリアA1を0としている。
【0046】
次に、ステップS10において、画像処理部41は、同一物体毎に、物体によって占有されるエリアA1の大きさを算出する。即ち、ステップS9で区別された15個の物体毎に、占有するエリアA1の大きさを算出する。以下、同一物体によって占有されているエリアA1をエリアブロックA3として説明する。物体が複数のエリアA1に跨がっていればエリアブロックA3は複数のエリアA1で構成され、物体が複数のエリアA1に跨がっていなければエリアブロックA3は単数のエリアA1で構成される。
【0047】
画像処理部41は、エリアブロックA3のX軸方向に対するエリアA1の最大数と、Y軸方向に対するエリアA1の最大数からエリアブロックA3の大きさを算出する。一例として、
図9で番号8が付与されたエリアブロックA3の大きさを算出する場合について説明する。エリアブロックA3は、行番号の最大が11で、行番号の最小が9であるため、X軸方向に対するエリアA1の最大数は3である。エリアブロックA3は、列番号の最大が24で、列番号の最小が22であるため、Y軸方向に対するエリアA1の最大数は3である。従って、エリアブロックA3の大きさは、プロットエリアA2において3×3の領域A4と算出することができる。ステップS10の処理を行うことで、画像処理部41は、算出部として機能する。
【0048】
次に、ステップS11において、画像処理部41は、番号1~15までの各物体が人候補か否かを判定する。画像処理部41は、大きさが所定値以下のエリアブロックA3に存在する物体は、人候補であると判定する。所定値は、例えば、直立した人を人候補として抽出できるように設定されている。直立した人を俯瞰した場合に、人によって占有されるエリアA1の数は、1又は2と推測される。本実施形態では、マージンを加味して、X軸方向のエリア数×Y軸方向のエリア数=3×3を所定値として設定している。画像処理部41は、X軸方向が1500[mm]以下であり、かつ、Y軸方向が1500[mm]以下の物体は、人候補であると判定するといえる。番号8のエリアブロックA3には、人候補が存在しているといえる。
【0049】
なお、所定値は、どのような姿勢の人を検出したいかによって変更してもよい。例えば、同一人物が直立している状態と、着座している状態や腕を拡げている状態とを比較すると、着座している状態や腕を拡げている状態のほうが水平方向の寸法が大きくなる。従って、直立している状態の人のみを検出する場合に比べて、着座している状態や腕を拡げている状態の人を検出する場合のほうが所定値を大きくするようにしてもよい。なお、所定値を大きくした場合、種々の姿勢の人を検出可能になる一方で、人とは異なる物体も人候補として検出されやすくなる。従って、所定値の大きさは、画像処理部41の処理負荷を加味して設定されてもよい。ステップS11の処理を行うことで、画像処理部41は人候補判定部として機能する。
【0050】
次に、ステップS12において、画像処理部41は、ステレオカメラ31によって撮像された画像上での人候補の座標を算出する。本実施形態では、画像として、第1画像I1上での人候補の座標を算出する。まず、画像処理部41は、原点Oと、エリアブロックA3との位置関係からワールド座標系での人候補の座標を算出する。人候補のワールド座標系での座標としては、例えば、X座標XwはエリアブロックA3の中心座標、Y座標YwはエリアブロックA3のうち原点Oに最も近い座標を採用する。画像処理部41は、X軸方向に対して原点OからエリアブロックA3における最も近いエリアA1までのX軸方向への距離と、X軸方向に対して原点OからエリアブロックA3における最も遠いエリアA1までの距離と、を加算した値を二分した距離を人候補のX座標Xwとする。画像処理部41は、Y軸方向に対する原点OからエリアブロックA3までの最短距離を人候補のY座標Ywとする。一例として、
図9で、番号8が付与されたエリアブロックA3に存在する人候補の座標を算出する場合について説明する。X軸方向に対して原点OからエリアブロックA3における最も近いエリアA1までのX軸方向への距離は、3エリア分の距離である1500[mm]である。X軸方向に対して原点OからエリアブロックA3における最も遠いエリアA1までの距離は、5エリア分の距離である2500[mm]である。従って、エリアブロックA3に存在する人候補のX座標Xwは、以下の(6)式から算出することができる。
【0051】
【数6】
Y軸方向に対する原点OからエリアブロックA3までの最短距離は、3エリア分の距離である1500[mm]である。従って、人候補のY座標Yw=1500[mm]となる。人候補のZ座標Zwについては、人の足下=地面を指定するようにしているため0として扱う。番号8のエリアブロックA3に存在する人候補のワールド座標は、(Xw:-2000,Yw:1500,Zw:0)と算出することができる。
【0052】
次に、画像処理部41は、人候補のワールド座標をカメラ座標に変換する。ワールド座標からカメラ座標への変換は、以下の(7)式を用いて行うことができる。
【0053】
【数7】
(7)式のX座標Xw、Y座標Yw、Z座標Zwを人候補のワールド座標とすることで、人候補のカメラ座標を算出することができる。
【0054】
次に、画像処理部41は、以下の(8)式及び(9)式を用いて、カメラ座標から第1画像I1上の人候補の座標を算出する。
【0055】
【0056】
【数9】
(8)式及び(9)式のX座標Xc、Y座標Yc、Z座標Zcを人候補のカメラ座標とすることで、人候補の第1画像I1上の座標を算出することができる。詳細にいえば、(7)式及び(8)式を用いることで、第1画像I1上での人候補の足下の座標の中心座標を算出することができる。ステップS12の処理を行うことで、画像処理部41は、人候補座標算出部として機能する。
【0057】
次に、
図3及び
図4に示すように、ステップS13において、画像処理部41は、第1画像I1において人候補が存在していると判定された座標P1に対して人検出処理を行う。詳細にいえば、人候補が存在していると判定された座標P1は人候補の足下の座標であるため、人候補の足下の座標P1からY座標Yiが大きくなる方向に拡がる領域A5に対して人検出処理を行う。人検出処理は、第1画像I1から特徴量を抽出する特徴量抽出法により行われ、例えば、HOG:Histograms of Oriented Gradientsや、SIFT:Scale Invariant Feature Transformを用いて行われる。これにより、画像処理部41は、ステップS11で検出された人候補が人か人以外の物体かを判定することができる。なお、フォークリフト10と人との位置関係は、ステップS12で算出しているため、画像処理部41は、フォークリフト10と人との位置関係を把握することができる。ステップS13の処理を行うことで、画像処理部41は、人判定部として機能する。
【0058】
本実施形態の作用について説明する。
ステレオカメラ31によって撮像された画像に物体が写ると、物体の縁などが特徴点となり視差が算出される。ワールド座標系のXY平面を複数に分割したエリアA1毎に特徴点を計数すると、物体が存在しているエリアA1に含まれる特徴点の数は多くなる。エリアA1毎に特徴点を計数し、閾値との比較を行うことで、各エリアA1から物体が存在しているエリアA1を抽出することができる。人を俯瞰した場合に、人によって占有されるエリアA1の大きさは推測することができる。このため、同一物体によって占有されるエリアA1の大きさから、物体が人候補か否かを判定することができる。
【0059】
画像処理部41は、検出した物体が人候補の場合、人候補が人か否かの判定を行う。一方で、画像処理部41は、検出した物体が人候補とは異なる場合には人か否かの判定を行わない。即ち、物体が人候補か否かに応じて、画像処理部41が行う処理が異なることになる。予め人候補である物体を抽出してから、当該物体に対して人か否かの判定を行うことで、第1画像I1の全体に対して人検出処理を行う場合に比べて、人の検出に要する時間が短縮化される。
【0060】
フォークリフト10では、検出した物体が人の場合、物体が人以外の場合とは異なる処理が行われる場合がある。例えば、搭乗者の操作により動作するフォークリフト10の場合、物体検出装置30によって人が検出されると、メインコントローラ20は搭乗者に対して近くに人がいる旨の報知を行う。報知は、表示によって報知を行う表示器や、音によって報知を行うブザー等を用いて行われる。また、メインコントローラ20は、フォークリフト10の周辺の人に対して、フォークリフト10が近くにいることを認識させるための報知を行ってもよい。自動で動作するフォークリフト10の場合、物体が人の場合と、物体が人以外の場合とで、走行経路や車速を変更する場合がある。例えば、メインコントローラ20は、物体の回避を行う場合、物体が人以外の場合に比べて、物体が人の場合のほうが回避距離を大きくしたり、物体が人の場合の方が近くを走行するときの車速を低くする。
【0061】
本実施形態の効果について説明する。
(1)画像処理部41は、ステレオカメラ31によって撮像された画像を俯瞰したプロットエリアA2から物体を検出する。そして、画像処理部41は、物体により占有されるエリアA1の大きさから物体が人候補か否かを判定することができる。
【0062】
(2)画像処理部41は、第1画像I1上で人候補が存在する座標に人検出処理を行う。人候補と判定された物体に対して人検出処理が行なわれるため、第1画像I1の全体に対して人検出処理を行う場合に比べて人の検出に要する時間を短縮化できる。
【0063】
(3)画像処理部41は、特徴点が第1区分を含む複数の区分に存在する場合であり、かつ、第1区分から連続して区分に特徴点が存在する場合、第1区分に連続して特徴点が存在する区分のうち最も高い区分を物体の高さとして設定する。画像処理部41は、特徴点が第1区分を含む複数の区分に存在する場合であり、かつ、第1区分に連続した区分に特徴点が存在しない場合、第1区分を物体の高さとして設定する。これにより、浮いている物体を除いた物体を検出することができる。
【0064】
実施形態は、以下のように変更して実施することができる。実施形態及び以下の変形例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
○画像処理部41は、特徴点が存在する区分同士の間に、特徴点が存在しない区分が存在するか否かに関わらず、特徴点が存在する区分のうち最も高い区分を物体の高さとして設定してもよい。即ち、画像処理部41は、路面から浮いている物体が存在すると推測される場合、路面から浮いている物体によって生じた特徴点を考慮して物体の高さを設定してもよい。
【0065】
○画像処理部41は、第1区分を除く複数の区分に特徴点が存在している場合であり、かつ、特徴点が存在する区分同士の間に特徴点が存在しない区分が介在している場合、低い方の区分を物体の高さとして設定してもよい。例えば、第2区分及び第4区分に特徴点が存在しており、第3区分に特徴点が存在していない場合、物体の高さとして第2区分を設定してもよい。第2区分及び第4区分に特徴点が存在しており、第3区分に特徴点が存在していない場合、上下に向かい合う2つの物体が同一エリアA1に存在しているといえる。この場合、特徴点が存在する区分のうち最も高い区分とは、上下に向かい合う2つの物体のうち下方の物体によって生じた特徴点のみを考慮した区分である。
【0066】
○画像処理部41は、人候補が人か否かを判定しなくてもよい。この場合であっても、物体が人の場合と同様な制御を行うことができる。例えば、人候補となる物体が検出された場合には搭乗者や、人候補に対して報知を行ってもよい。また、物体が人候補か否かに応じて、走行経路や車速を変更してもよい。
【0067】
○特徴点の高さの区分は、4つ以上に分けられていてもよい。例えば、実施形態の区分に加えて、0[mm]以上500[mm]未満の区分を第5区分として追加してもよい。
○画像処理部41は、人候補のワールド座標系での座標を算出する際に、X座標XwをエリアブロックA3の任意座標、Y座標YwはエリアブロックA3の任意座標としてもよい。例えば、画像処理部41は、X座標XwをエリアブロックA3のうち最も原点Oに近い座標、Y座標YwをエリアブロックA3の中心座標としてもよい。画像処理部41は、エリアブロックA3のうちのいずれの位置を第1画像I1での人候補の座標としているかを把握できていれば、人候補の存在する領域A5が第1画像I1のいずれの方向に拡がっているかを判別できる。従って、人候補のワールド座標系での位置を算出する際に、X座標XwをエリアブロックA3の任意座標、Y座標YwはエリアブロックA3の任意座標としても実施形態と同様の効果が得られる。
【0068】
○画像処理部41は、ステップS12において、原点OからエリアブロックA3までのX軸方向への最短距離と、原点OからエリアブロックA3におけるX軸方向に対して原点Oから最も離間した部分までのX軸方向への距離と、を加算した値を二分した距離を人候補のX座標Xwとしてもよい。例えば、
図9で番号8が付与されたエリアブロックA3に存在する人候補のX座標Xwを算出する場合、原点OからエリアブロックA3までのX軸方向への最短距離は、2エリア分の距離である1000[mm]になる。原点OからエリアブロックA3におけるX軸方向に対して原点Oから最も離間した部分までのX軸方向への距離は、5エリア分の距離である2500[mm]になる。すると、エリアブロックA3に存在する人候補のX座標Xwは、-1750になる。なお、X座標XwをエリアブロックA3の中心座標とする場合、中心座標とは、エリアブロックA3のX軸方向に対するエリアA1のうち中央のエリアA1の範囲内の座標であればよい。
【0069】
○画像処理部41は、人候補のワールド座標系での座標を算出する際に、領域A4の複数箇所の座標を算出してもよい。例えば、領域A4の対角となる2つの角の座標を算出してもよい。この場合、第1画像I1の領域A5の大きさを適切に算出することができる。
【0070】
○画像処理部41は、エリアA1に物体が存在しているか否かを判定する際の閾値をプロットエリアのY座標Ywに応じて変更してもよい。画像処理部41は、Y軸方向に対して原点Oから離れたエリアA1ほど、閾値を低くする。これにより、Y軸方向に対して原点Oから離れたエリアA1ほど、特徴点の総和が低くても物体が存在していると判定されることになる。実施形態に記載したように、Y座標Ywが大きくなるほど特徴点は離散的になる。このため、Y軸方向に対して原点Oから離れたエリアA1ほど、閾値を低くすることで、特徴点が離散しやすいエリアA1でも物体の検出を行うことができる。即ち、フォークリフト10から離れている物体であっても検出が可能になる。
【0071】
○画像処理部41は、特徴点の計数を行う際に、X座標Xw及びY座標Ywが同一であり、Z座標Zwのみが異なる複数の特徴点が存在する場合、Z座標Zwが最も大きい特徴点のみを計数してもよい。
【0072】
○物体が人か否かの判定は、教師有り学習モデルによる機械学習を行った人判定部に対して第1画像I1を入力することで行われてもよい。詳細にいえば、学習済みの人判定部に対して、第1画像I1のうち物体が写っている領域A5を入力することで、物体が人か否かを判定させてもよい。人判定部としては、例えば、サポートベクタマシン、ニューラルネットワーク、ナイーブベイズ、決定木等の教師有り学習器を採用することが可能である。機械学習に用いる教師データとしては、画像から抽出された人の形状要素や、外観要素などの画像固有成分が用いられる。形状要素として、例えば、人の大きさや輪郭などが挙げられる。外観要素としては、例えば、光源情報、テクスチャ情報、カメラ情報などが挙げられる。光源情報には、反射率や、陰影等に関する情報が含まれる。テクスチャ情報には、カラー情報等が含まれる。カメラ情報には、画質、解像度、画角等に関する情報が含まれる。
【0073】
○三次元座標系は、直交座標系に限られず、極座標系としてもよい。この場合、極座標系のうち水平面を表す座表面は、座標面の原点を中心として扇状のエリアA1に分割される。
【0074】
○ステレオカメラ31によって撮像された画像のうち第2画像から人を検出するようにしてもよい。この場合、画像処理部41は、プロットエリアA2の原点OとエリアブロックA3との位置関係から第2画像上での人候補の座標を算出するが、第2画像は比較画像であるため、基線長に応じたずれが生じる。このため、画像処理部41は、基線長に応じて第2画像上での人候補の座標を補正し、補正した座標に対して人検出処理を行う。
【0075】
○画像処理部41は、視差画像dpから路面の視差を除去する際に、ハフ変換などの直線抽出法を用いて路面を検出してもよい。路面は、平坦であるため、路面の視差はステレオカメラ31から離れるにつれて徐々に小さくなっていく。従って、視差画像dpのY座標Yiと、視差との二次元座標系に視差をプロットすると、路面の視差が直線状になって現れる。画像処理部41は、この直線の視差を路面の視差として除去する。
【0076】
○画像処理部41は、路面の視差を除去しなくてもよい。路面は、高さが低いため、視差画像dpから路面の視差を除去しない場合であっても、第1区分には含まれず、実施形態と同様の効果が得られる。
【0077】
○視差画像取得部、座標算出部、計数部、物体判定部、物体高設定部、同一物体判定部、算出部、人候補判定部、人候補座標算出部及び人判定部は、それぞれ、個別の制御装置によって構成されていてもよい。
【0078】
○カメラ座標からワールド座標への変換はテーブルデータによって行われてもよい。テーブルデータは、Y座標YcとZ座標Zcの組み合わせにY座標Ywを対応させたテーブルデータと、Y座標YcとZ座標Zcとの組み合わせにZ座標Zwを対応させたテーブルデータである。これらのテーブルデータを画像処理部41のROMなどに記憶しておくことで、カメラ座標系におけるY座標YcとZ座標Zcから、ワールド座標系におけるY座標Yw及びZ座標Zwを求めることができる。同様に、ワールド座標からカメラ座標への変換についてもテーブルデータによって行われてもよい。
【0079】
○第1カメラ32と第2カメラ33は、鉛直方向に並んで配置されていてもよい。
○第1画像I1の画素数と第2画像の画素数とは異なっていてもよい。例えば、比較画像である第2画像の画素数を視差画像の画素数と同一とし、基準画像である第1画像I1の画素数を第2画像の画素数よりも多くしてもよい。
【0080】
○ステレオカメラ31は、3つ以上のカメラを備えていてもよい。
○フォークリフト10は、エンジンの駆動によって走行するものでもよい。この場合、走行制御装置は、エンジンへの燃料噴射量などを制御する装置となる。
【0081】
○物体検出装置30は、建設機械、自動搬送車、トラックなどフォークリフト10以外の産業車両や乗用車などの移動体に搭載されていてもよい。
【符号の説明】
【0082】
30…物体検出装置、31…ステレオカメラ、41…視差画像取得部、座標算出部、計数部、物体判定部、物体高設定部、同一物体判定部、算出部、人候補判定部、人候補座標算出部及び人判定部として機能する画像処理部。