以下、本開示の実施の形態について、図面を参照して説明する。なお、以下の説明で用いられる図は模式的なものである。図面上の寸法、比率等は現実のものとは必ずしも一致していない。カメラによる撮像画像及び視差画像等を表す図は、説明のために作成されたものを含む。これらの画像は、実際に撮像され又は処理された画像とは異なる。また、以下の説明において、「被写体」はカメラに撮像される対象である。「被写体」は、物体、路面、空等を含む。「物体」は、空間内で具体的な位置及び大きさを有するものである。「物体」は、「立体物」ともいう。
図1に示すように、物体検出システム1は、ステレオカメラ10と物体検出装置20とを含む。ステレオカメラ10と物体検出装置20とは、有線又は無線通信により通信可能である。ステレオカメラ10と物体検出装置20とは、ネットワークを介して通信してよい。ネットワークは、例えば、有線又は無線のLAN(Local Area Network)、又はCAN(Controller Area Network)等を含んでよい。ステレオカメラ10と物体検出装置20とは、同一の筺体内に収納され一体的に構成されてよい。ステレオカメラ10及び物体検出装置20は、後述する移動体30内に位置し、移動体30内のECU(Electronic Control Unit)と通信可能に構成されてよい。
「ステレオカメラ」とは、互いに視差を有し、互いに協働する複数のカメラである。ステレオカメラは、少なくとも2つ以上のカメラを含む。ステレオカメラでは、複数のカメラを協働させて、複数の方向から対象を撮像することが可能である。ステレオカメラは、1つの筐体に複数のカメラが含まれる機器であってよい。ステレオカメラは互いに独立し、且つ互いに離れて位置する2台以上のカメラを含む機器であってよい。ステレオカメラは、互いに独立した複数のカメラに限られない。本開示では、例えば、離れた2箇所に入射される光を1つの受光素子に導く光学機構を有するカメラをステレオカメラとして採用できる。本開示では、同じ被写体を異なる視点から撮像した複数の画像を「ステレオ画像」と呼ぶことがある。
ステレオカメラ10は、第1カメラ11と第2カメラ12とを備える。第1カメラ11及び第2カメラ12は、それぞれ光軸OXを規定する光学系と撮像素子とを備える。第1カメラ11及び第2カメラ12はそれぞれ異なる光軸OXを有する。本明細書の説明では単一の符号OXのみで、第1カメラ11及び第2カメラ12双方の光軸OXをまとめて表す。撮像素子は、CCDイメージセンサ(Charge-Coupled Device Image Sensor)、及びCMOSイメージセンサ(Complementary MOS Image Sensor)を含む。第1カメラ11及び第2カメラ12がそれぞれ備える撮像素子は、それぞれのカメラの光軸OXに垂直な同一面内に存在してよい。第1カメラ11及び第2カメラ12は、撮像素子で結像された画像を表す画像信号を生成する。また、第1カメラ11及び第2カメラ12は、撮像した画像について、歪み補正、明度調整、コントラスト調整、ガンマ補正等の任意の処理を行ってよい。
第1カメラ11及び第2カメラ12の光軸OXは、互いに同じ被写体を撮像可能な方向を向いている。第1カメラ11及び第2カメラ12は、撮像した画像に少なくとも同じ被写体が含まれるように、光軸OX及び位置が定められる。複数の実施形態の一つにおいて、第1カメラ11及び第2カメラ12の光軸OXは、互いに平行になるように向けられる。この平行は、厳密な平行に限られず、組み立てのずれ、取付けのずれ、及びこれらの経時によるずれを許容する。複数の実施形態の他の一つにおいて、第1カメラ11及び第2カメラ12の光軸OXは、平行に限られず、互いに異なる方向を向いてよい。第1カメラ11及び第2カメラ12の光軸OX互いに平行でない場合でも、ステレオカメラ10又は物体検出装置20内で、画像を変換することによりステレオ画像が生成されうる。ステレオカメラ10の第1カメラ11と第2カメラ12の光学中心の距離を基線長とよぶ。基線長は、第1カメラ11と第2カメラ12との間のレンズの中心の距離に相当する。ステレオカメラ10の第1カメラ11と第2カメラ12の光学中心を結ぶ方向を基線長方向とよぶ。
第1カメラ11及び第2カメラ12は、光軸OXに交わる方向において離れて位置している。複数の実施形態のうちの1つにおいて、第1カメラ11及び第2カメラ12は、左右方向に沿って位置している。第1カメラ11は、前方を向いたときに第2カメラ12の左側に位置する。第2カメラ12は、前方を向いたときに第1カメラ11の右側に位置する。第1カメラ11と第2カメラ12との位置の違いにより、各カメラで撮像した2つの画像において、互いに対応する被写体の位置は、異なる。第1カメラ11から出力される第1画像と、第2カメラ12から出力される第2画像とは、異なる視点から撮像したステレオ画像となる。第1カメラ11及び第2カメラ12は、所定のフレームレート(例えば30fps)で被写体を撮像する。
図2及び図3に示すように、図1の物体検出システム1は、移動体30に搭載される。図2の側面図に示すように、第1カメラ11及び第2カメラ12は、移動体30の前方を撮像するように設置される。第1カメラ11及び第2カメラ12は、路面を含む画像を撮像するように設置される。すなわち、ステレオカメラ10は、路面を含む画像を撮像するように設置される。複数の実施形態の一つにおいて、第1カメラ11及び第2カメラ12の各光学系の光軸OXが移動体30の前方と略平行となるように配置される。
本願において、移動体30の直進時の進行方向は、前方又はz方向とよばれる。前方の反対方向は後方とよばれる。移動体30の前方を向いた状態を基準として、左方向及び右方向が定義される。z方向に直交し、且つ、左方向から右方向へ向かう方向は、x方向とよばれる。x方向は、基線長方向に一致してよい。移動体30の近傍の路面に垂直で上向きの方向は、高さ方向又はy方向とよばれる。y方向は、x方向及びz方向に対して直交してよい。x方向は、水平方向とも称する。y方向は、鉛直方向とも称する。z方向は、奥行き方向とも称する。
本開示における「移動体」は、例えば車両、航空機を含んでよい。車両は、例えば自動車、産業車両、鉄道車両、生活車両、及び滑走路を走行する固定翼機等を含んでよい。自動車は、例えば乗用車、トラック、バス、二輪車、及びトロリーバス等を含んでよい。産業車両は、例えば農業及び建設向けの産業車両等を含んでよい。産業車両は、例えばフォークリフト及びゴルフカート等を含んでよい。農業向けの産業車両は、例えばトラクター、耕耘機、移植機、バインダー、コンバイン、及び芝刈り機等を含んでよい。建設向けの産業車両は、例えばブルドーザー、スクレーバー、ショベルカー、クレーン車、ダンプカー、及びロードローラ等を含んでよい。車両は、人力で走行するものを含んでよい。車両の分類は、上述した例に限られない。例えば、自動車は、道路を走行可能な産業車両を含んでよい。複数の分類に同じ車両が含まれてよい。航空機は、例えば固定翼機及び回転翼機等を含んでよい。
本開示の移動体30は、道路又は滑走路等を含む走行路の上を走行する。移動体30が走行する走行路の表面を路面とよぶ。
第1カメラ11及び第2カメラ12は、移動体30の種々の場所に搭載しうる。複数の実施形態のうちの1つにおいて、第1カメラ11及び第2カメラ12は、車両である移動体30の内部に搭載され、ウインドシールドを介して移動体30の外部を撮像できる。例えば、第1カメラ11及び第2カメラ12は、ルームミラーの前方、又はダッシュボード上に配置される。複数の実施形態の1つにおいて、第1カメラ11及び第2カメラ12は、車両のフロントバンパー、フェンダーグリル、サイドフェンダー、ライトモジュール、及びボンネットのいずれかに固定されていてよい。
物体検出装置20は、取得部21と、画像処理部22(プロセッサ)と、メモリ23と、出力部24とを備える。物体検出装置20は、移動体30内において任意の位置に配置できる。例えば、物体検出装置20は、移動体30のダッシュボード内に配置できる。
取得部21は、ステレオカメラ10及び他の装置から情報の入力を受ける、物体検出装置20の入力インタフェースである。取得部21は、物理コネクタ、及び無線通信機が採用できる。物理コネクタは、電気信号による伝送に対応した電気コネクタ、光信号による伝送に対応した光コネクタ、及び電磁波による伝送に対応した電磁コネクタが含まれる。電気コネクタには、IEC60603に準拠するコネクタ、USB規格に準拠するコネクタ、RCA端子に対応するコネクタ、EIAJ CP-1211Aに規定されるS端子に対応するコネクタ、EIAJ RC-5237に規定されるD端子に対応するコネクタ、HDMI(登録商標)規格に準拠するコネクタ、及びBNCを含む同軸ケーブルに対応するコネクタを含む。光コネクタは、IEC 61754に準拠する種々のコネクタを含む。無線通信機は、Bluetooth(登録商標)、及びIEEE802.11を含む各規格に準拠する無線通信機を含む。無線通信機は、少なくとも1つのアンテナを含む。
取得部21には、第1カメラ11及び第2カメラ12の各々が撮像した画像の画像データが入力されうる。取得部21は入力された画像データを画像処理部22に引き渡す。取得部21は、ステレオカメラ10の撮像信号の伝送方式に対応してよい。取得部21は、ネットワークを介してステレオカメラ10の出力インタフェースに接続されてよい。
画像処理部22は、一つ又は複数のプロセッサを含む。プロセッサには、特定のプログラムを読み込ませて特定の機能を実行する汎用のプロセッサ、及び、特定の処理に特化した専用のプロセッサが含まれる。専用のプロセッサには、特定用途向けIC(ASIC;Application Specific Integrated Circuit)が含まれる。プロセッサには、プログラマブルロジックデバイス(PLD;Programmable Logic Device)が含まれる。PLDには、FPGA(Field-Programmable Gate Array)が含まれる。画像処理部22は、一つ又は複数のプロセッサが協働するSoC(System-on-a-Chip)、及びSiP(System In a Package)のいずれかであってよい。画像処理部22の実行する処理は、プロセッサが実行する処理と言い換えることができる。
画像処理部22は、視差画像生成部25、路面検出部26、不要視差除去部27、クラスタリング部28、及び、グルーピング部29の各機能ブロックを含む。視差画像生成部25は、ステレオカメラ10から出力された第1画像及び第2画像に基づいて、第1視差画像を生成する。第1視差画像は、ステレオカメラ10の撮像画像の水平方向に対応する横方向と、横方向に交差する縦方向とから成る2次元平面上に視差を表す画素が配置された画像である。横方向は、第1方向である。縦方向は第2方向である。横方向と縦方向とは互いに直交してよい。横方向は、路面の幅方向に対応する。横方向は、ステレオカメラ10の撮像する画像が水平線を含むとき、水平線に平行な方向である。縦方向は、実空間における重力の加わる方向に対応する方向としうる。路面検出部26、不要視差除去部27、クラスタリング部28、及び、グルーピング部29は、第1視差画像に基づいて物体を検出する一連の処理を実行する。
画像処理部22内の情報処理において、第1視差画像は、横方向と縦方向とから成る2次元座標に、ステレオカメラ10の出力から得られる視差の情報が対応付けられた第1視差マップとして、種々の操作を受ける。種々の操作は、演算処理及びメモリ23への書き込み、読み出し等を含む。第1視差画像は、第1視差マップと言い換えることができる。以下の説明において、第1視差画像に対する処理は、第1視差マップに対する処理と言い換えることができる。
画像処理部22の各機能ブロックは、ハードウエアモジュールであってよく、ソフトウエアモジュールであってよい。各機能ブロックが行う処理は、画像処理部22により実行されるものと言い換えてよい。画像処理部22は、各機能ブロックの全ての動作を実行してよい。画像処理部22が各機能ブロックのいずれかを使役して行う処理は、画像処理部22が自ら実行するものとしてよい。
メモリ23は、種々の処理のためのプログラム及び演算中の情報を記憶する。メモリ23は、揮発性メモリ及び不揮発性メモリが含まれる。メモリ23は、プロセッサと独立しているメモリ、及びプロセッサの内蔵メモリが含まれる。
出力部24は、物体検出装置20の処理結果を、移動体30内の他の装置又は他車両及び路側機等の移動体30外の装置に出力しうる、物体検出装置20の出力インタフェースである。物体検出装置20から受信した情報を適宜使用しうる他の装置は、オートクルーズコントロール等の走行支援装置、及び、自動ブレーキ装置等の安全装置を含む。出力部24は、取得部21と同様に、有線及び無線の通信に対応した種々のインタフェースを含む。例えば、出力部24は、CANのインタフェースを有し、移動体30内の他の装置と通信を行う。
物体検出装置20は、以下に説明する画像処理部22が行う処理を、非一時的なコンピュータ可読媒体に記録されたプログラムを読み込んで実装するように構成されてよい。非一時的なコンピュータ可読媒体は、磁気記憶媒体、光学記憶媒体、光磁気記憶媒体、半導体記憶媒体を含むがこれらに限られない。磁気記憶媒体は、磁気ディスク、ハードディスク、磁気テープを含む。光学記憶媒体は、CD(Compact Disc)、DVD、ブルーレイディスク(Blu-ray(登録商標) Disc)等の光ディスクを含む。半導体記憶媒体は、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、フラッシュメモリを含む。
図4に示すように、本開示の他の実施形態に係る物体検出システム1Aにおいて、視差画像生成部25は、物体検出装置20とは別体のハードウェア上に搭載されてよい。図4では図1と同一又は類似の構成要素に、図1と同一の符号を付している。図4の視差画像生成部25は、視差画像生成装置と言い換えることができる。図4の視差画像生成部25は、プロセッサを有する。図4の視差画像生成部25に含まれるプロセッサは、ステレオカメラ10の第1カメラ11及び第2カメラ12からそれぞれ出力された第1画像及び第2画像に基づいて、第1視差画像を生成する。図4の物体検出装置20に含まれる取得部21は、視差画像生成部25から、第1視差画像を取得する。図4の物体検出装置20と視差画像生成部25とは、纏めて1つの物体検出装置20とみなされうる。図4のように構成される物体検出装置20において、画像処理部22の路面検出部26、不要視差除去部27、クラスタリング部28、及び、グルーピング部29は、図1の対応する機能ブロックと同じに機能する。
以下に、図5のフローチャートを参照して、画像処理部22の各機能ブロックが実行する処理をさらに説明する。図5は、物体検出装置20が実行する物体検出方法の処理の全体を説明するフローチャートである。
まず、図5のフローチャートの各ステップで行う処理の詳細な説明に先立ち、各ステップの処理の概要と目的が簡単に説明される。
ステップS101は、後述する第1処理の前段において、物体検出の対象となる第1視差画像を取得又は生成するステップである。ステップS101は、取得部21又は視差画像生成部25が行う。
ステップS102は、路面の位置を推定するステップである。ステップS102で行う処理は、第1処理(路面検出処理)ともよばれる。ステップS102は路面検出部26が行う。路面位置を推定することにより、第1視差画像上で、縦方向の座標に対する路面を表す視差が分かる。路面位置は、以下の処理において不要視差を除去し、及び/又は、実空間上での路面の高さ位置を知るために必要となる。
ステップS103は、不要な視差を除去した第2視差画像を生成するステップである。ステップS103で行う処理は、第2処理(不要視差除去処理)ともよばれる。第2処理は、不要視差除去部27が行う。不要視差は、実空間における路面からの高さが所定の範囲に含まれる被写体に対応する画素が表す視差である。例えば、不要視差は、第1視差画像に含まれる路面の視差及び空中部分に含まれる構造物の視差等を含む。第1視差画像から不要視差を除くことによって、路面の白線及び道路上空に存在する構造物等を路面上の物体であると誤検出する可能性が低減される。これにより、物体検出の精度が向上する。ステップS103は、省略し得る。ステップS103を省略する場合には、画像処理部22は不要視差除去部27を備えなくてよい。以下の説明においても同様である。
画像処理部22内での情報処理において、第2視差画像は、第1視差マップに含まれる視差の情報から、不要な視差の情報を除去した第2視差マップとして、種々の操作を受ける。第2視差画像は、第2視差マップと言い換えることができる。以下の説明において、第2視差画像に対する処理は、第2視差マップに対する処理と言い換えることができる。
ステップS104は、第2視差画像に対して横方向の各座標について物体視差を決定するステップである。ステップS104は、クラスタリング部28が実行する。物体視差とは、所定の条件に基づいて、実空間の物体とみなせる領域の視差であると判定される視差である。ステップS103を省略する場合には、ステップS104は第2視差画像ではなく第1視差画像を用い、第1視差画像に対して横方向の各座標について物体視差を決定する。以下の説明においても同様である。
ステップS105は、第2視差画像上の物体視差の分布と、ステップS102で推定した路面の位置とに基づいて、物体視差に関連付けられる高さ情報を算出するステップである。ステップS105はクラスタリング部28が実行する。ステップS104とS105とで行う処理は、第3処理(物体視差決定処理)ともよばれる。高さ情報を必要としない場合、ステップS105は省略しうる。
ステップS106は、物体視差の情報を実空間の座標上に変換して、物体視差の纏まり(グループ)を抽出することにより、物体を検出するステップである。ステップS106で行う処理は、第4処理(物体検出処理)ともよばれる。第4処理は、グルーピング部29が行う。
ステップS107は、検出された物体の情報を出力部24から出力するステップである。ステップS106の結果から、検出された物体の位置、及び、ステレオカメラ10側からみた幅の情報が得られる。ステップS105により得られた情報は、検出された物体の高さの情報を含む。これらの情報は、移動体30内の他の装置に提供されうる。
次に、各ステップの詳細について説明する。
まず、画像処理部22は第1視差画像を取得又は生成する(ステップS101)。図1に示した物体検出システム1では、画像処理部22は、取得部21で取得した第1画像及び第2画像に基づいて、第1視差画像を生成する。第1視差画像の生成は、視差画像生成部25が行う。図4に示した物体検出システム1Aでは、画像処理部22は、視差画像生成部25により生成された第1視差画像を、取得部21を介して取得する。画像処理部22は、以降の処理のため、第1視差画像をメモリ23に格納してよい。
視差画像生成部25は、第1カメラ11から取得した第1画像及び第2カメラ12から取得した第2画像の視差の分布を算出し、第1視差画像を生成する。第1視差画像の生成方法は、公知であるから、以下に簡単にのみ説明する。
視差画像生成部25は、第1画像及び第2画像の一方の画像(例えば、第1画像)を多数の小領域に分割する。小領域は、縦横方向に複数の画素が配列された矩形の領域としうる。例えば、小領域は、縦方向3画素、横方向3画素で構成されうる。小領域の縦横方向に含まれる画素の数は、3に限られない。小領域の縦方向と横方向とに含まれる画素の数は、異なってよい。視差画像生成部25は、分割した複数の小領域の各々の画像と他方の画像(例えば、第2画像)とを、水平方向にずらしながらマッチングさせる。画像のマッチングには、SAD(Sum of Absolute Difference)関数を用いる方法が知られている。これは、小領域内の輝度値の差の絶対値の総和を表すものである。SAD関数が最小となるとき、両画像は最も類似すると判断される。ステレオ画像のマッチングは、SAD関数を用いる方法に限られず、他の方法を採用しうる。
視差画像生成部25は、第1画像と第2画像とでマッチングした2つの領域の横方向における画素の位置の違いに基づいて、当該小領域ごとの視差を算出する。視差の大きさは、画素の横方向の幅を単位として表すことができる。補間処理をすることにより、視差の大きさは、1画素より小さい精度で算出することができる。視差の大きさはステレオカメラ10により撮像された被写体の、実空間におけるステレオカメラ10との間の距離に対応する。視差が大きければ距離が近く、視差が小さければ距離が遠いことを意味する。視差画像生成部25は、算出した視差の分布を示す第1視差画像を生成する。以下において、第1視差画像を構成する視差を表す画素を視差画素とよぶ。視差画像生成部25は、元の第1画像及び第2画像の画素と同じ精細度で視差画像を生成することができる。
図6は、第1視差画像を説明する図である。図6において、移動体30の前方の路面41上には、他車両42が走行している。
図6に示すように、第1視差画像には、ステレオカメラ10の横方向(第1方向)と横方向に直交する縦方向(第2方向)から成る2次元平面上に、視差を表す画素が位置している。横方向の位置を示す座標をu座標とよぶ。縦方向の位置を示す座標をv座標とよぶ。u座標及びv座標を画像座標とよぶ。本開示の画像を表す各図において、u座標は左から右に向かう座標とする。v座標は、上から下に向かう座標とする。u-v座標空間の原点は、第1視差画像の左上端とすることができる。u座標及びv座標は、画素を単位として表記することができる。
視差画像生成部25は、視差の違いを画素の輝度又は色等の違いに置き換えて表示することができる。図6では、説明のため、視差を異なる網掛けにより表現している。図6では、網掛けが濃いほど視差が小さく、網掛けが薄いほど視差が大きい。図6において等しい網掛けの領域は、それぞれ所定の視差の範囲内に位置することを表す。実際の第1視差画像では、u-v座標空間上で視差が取得し易い部分と取得し難い部分がある。例えば、車両の窓等の空間的に均一な被写体の部分、太陽光の反射による白とびが発生している部分は、視差が取得し難い。第1視差画像では、物体及び構造物がある場合、それらはより遠くに位置する背景の視差と異なる輝度又は色で表示される。
視差画像生成部25は、視差を算出した後に第1視差画像を画像として表示しなくてよい。視差画像生成部25は、第1視差画像の情報を画像処理部22の内部で第1視差マップとして生成して保持し、必要な処理を行えばよい。
ステップS101の後、画像処理部22は、第1視差画像から路面41の位置を推定する第1処理を行う(ステップS102)。第1処理は、路面検出部26により行われる。以下において、路面検出部26が行う路面位置の推定処理を、図7、図8及び図14のフローチャートを用いて説明する。まず、路面検出部26は、第1視差画像から路面候補視差dcを抽出する(ステップS201)。路面候補視差dcは、第1視差画像から収集される路面視差drに該当する可能性が高い視差である。路面視差drは、路面41領域の視差を意味する。路面視差drは、路面41上の物体の視差を含まない。路面視差drは、路面上の対応する箇所迄の距離を表す。路面視差drは、同じv座標を有する位置で近い値を有するものとして収集される。
路面候補視差dcの抽出処理の詳細は、図8のフローチャートに示される。図8に示すように、路面検出部26は、ステレオカメラ10の設置位置に基づいて、路面候補視差算出用の視差の初期値である路面候補視差初期値d0を計算する(ステップS301)。路面候補視差初期値d0は、ステレオカメラ10から最も近い路面候補視差の抽出位置での路面候補視差の初期値である。ステレオカメラ10から最も近い路面候補視差の抽出位置は、例えば、ステレオカメラ10から、1mから10mの範囲から設定することができる。
図9に示すように、ステレオカメラ10において、路面高さYは、撮像される路面41からのステレオカメラ10の鉛直方向の高さである。また、路面高さY0は、ステレオカメラ10の設置位置における路面41からの高さである。道路の起伏により、路面高さYはステレオカメラ10からの距離により変化することがある。したがって、ステレオカメラ10から離れた位置での路面高さYは、ステレオカメラ10の設置位置での路面高さY0に一致しない。複数の実施形態の一つにおいて、ステレオカメラ10の第1カメラ11及び第2カメラ12は、光軸OXを互いに平行に前方に向けて設置されていると仮定される。図9においてZは特定の路面位置までの水平方向の距離を示す。ステレオカメラ10の基線長をB、縦方向の画像サイズをTOTALvとする。この場合、ある縦方向の座標(v座標)において撮像された路面41の路面視差dsと路面高さYとの関係は、水平方向の距離Zに依らず、次の数式で与えられる。
ds=B/Y×(v-TOTALv/2) (1)
数式(1)により算出された路面視差dsは、「幾何推定路面視差」ともよばれる。以下において、幾何推定路面視差を符号dsで表記することがある。
路面候補視差初期値d0は、路面41が、ステレオカメラ10とステレオカメラ10の位置から最も近い路面候補視差dcの抽出位置との間で、第1カメラ11及び第2カメラ12の光軸OXに平行且つ平坦であるものと仮定して算出される。その場合、ステレオカメラ10の位置から最も近い路面候補視差の抽出位置の、第1視差画像上のv座標が特定の座標v0に定まる。座標v0は、路面候補視差を抽出するv座標の初期値である。座標v0は、TOTALv/2とTOTALvとの間に位置する。座標v0は、視差算出が可能な画像座標の範囲内で最も下側(v座標の大きい側)に位置する。座標v0は、第1視差画像の最も下の行に対応するTOTALvとしてよい。路面候補視差初期値d0は、数式(1)のvにv0を代入し、YにY0を代入することにより決定することができる。
路面検出部26は、路面候補視差初期値d0に基づいて、縦方向のv座標がv0である最初の行の視差収集閾値を計算する(ステップS302)。行は、第1視差画像上で同じv座標を有する横方向に並ぶ画素の配列を意味する。視差収集閾値は、視差を収集する上限の閾値である上限閾値と、視差を収集する下限の閾値である下限閾値とを含む。視差収集閾値は、路面候補視差初期値d0を含むように路面候補視差初期値d0の上下に所定の規則に基づいて設定される。具体的には、路面候補視差初期値d0を算出した状態から、予め定めた路面高さ変化量ΔYだけ路面高さYが上下に変化した場合の路面視差が、視差収集閾値の上限閾値及び下限閾値として定められる。すなわち、視差収集閾値の下限閾値は、路面候補視差初期値d0から路面高さ変化量ΔY分の視差を引いて得られる。視差収集閾値の上限閾値は、路面候補視差初期値d0から路面高さ変化量ΔY分の視差を加えて得られる。具体的な視差収集閾値の下限閾値及び上限閾値は、数式(1)のYの値を変更することにより求められる。
以下において、路面検出部26は、ステップS303とステップS307との間の処理を繰り返す。まず、路面検出部26は、第1視差画像の最も下側に位置するv座標がv0である行についての処理を行う(ステップS303)。
路面検出部26は、視差収集閾値を用いて視差を収集する(ステップS304)。路面検出部26は、第1視差画像に含まれるv座標がv0の横方向に並んで位置する各視差画素について、視差収集閾値の下限閾値と上限閾値との間の視差を有する視差画素を路面候補視差dcとして収集する。すなわち、路面検出部26は、数式(1)を用いて算出された路面候補視差初期値d0を基準とする所定のマージンの範囲に入る視差を有する視差画素を、路面41の正しい視差を表す視差画素の候補であると判定する。路面検出部26は、路面41の正しい視差を表す視差画素の候補であると判定された視差画素の視差を路面候補視差dcとする。このようにすることによって、路面検出部26は、路面41上の物体及び構造物等の路面41以外の視差を路面41の視差として誤判定する可能性を低減できる。これにより、路面41検出の精度が向上する。
ステップS304で、v座標がv0の全ての視差画素の判定が終了すると、路面検出部26は、収集した路面候補視差dcを平均化して路面候補視差dcの平均値である平均路面候補視差davを算出する(ステップS305)。路面検出部26は、それぞれの路面候補視差dc及びそのu-v座標、並びに、v座標がv0における平均路面候補視差davを、メモリ23に記憶してよい。
ステップS305の後、路面検出部26は、ステップS305で算出したv座標がv0の平均路面候補視差davから、1行上の行、すなわち、v座標がv=v0-1の行の各視差画素について、視差収集閾値を算出する(ステップS306)。路面検出部26は、ステップS304で算出したv座標がv0のときの平均路面候補視差davに対して、数式(1)が成立するように路面高さYを変更する。路面検出部26は、路面高さYを変更した数式(1)のv0に代えて、v0-1を代入することにより、v座標がv0-1のときの幾何推定路面視差dsを算出する。路面検出部26は、ステップS302と類似に、幾何推定路面視差dsから所定の路面高さ変化量ΔY分の視差を引いた視差を視差収集閾値の下限閾値とすることができる。路面検出部26は、幾何推定路面視差dsに所定の路面高さ変化量ΔY分の視差を加えた視差を視差収集閾値の上限閾値とすることができる。
ステップS306の後、路面検出部26は、数式(1)により算出された幾何推定路面視差dsが所定値より大きいか否かを判定する。所定値は、例えば、1画素である。路面検出部26は、幾何推定路面視差dsが1よりも大きいとき、ステップS303の処理に戻る(ステップS307)。ステップS303において、路面検出部26は、路面候補視差dcの抽出の対象を、1画素上の行に移動させる。すなわち、路面候補視差dcの抽出の対象が、v座標がv0の行であったとき、路面検出部26は、路面検出の対象の行のv座標を、v0-1に変更する。また、図10に示すように、路面候補視差dcの算出の対象が、n番目の行であったとき、路面検出部26は、路面検出の対象の行を、n+1番目の行に変更する。図10は、説明のため各行の縦方向の幅を広くしている。実際の各行は、1画素の高さである。この場合、n+1番目の行v座標は、n番目の行のv座標よりも1小さい。
それぞれ、n+1番目の行を対象とするステップS304~S306の処理は、v座標がv0の行の処理と同様に行われる。ステップS304において、路面検出部26は、n番目の行に対するステップS306において算出した視差収集閾値を用いて、路面候補視差dcを収集する。ステップS305において、路面検出部26は、収集した路面候補視差dcを平均化して平均路面候補視差davを算出する。ステップS306において、路面検出部26は、平均路面候補視差davを用いて、数式(1)の路面高さYを変更する。路面検出部26は、路面高さYを変更した数式(1)を用いて、幾何推定路面視差dsを算出する。さらに路面検出部26は、n+2番目の行の路面候補視差dcの抽出のために、幾何推定路面視差dsに路面高さ変化量ΔYを考慮して、視差収集閾値を算出する。
路面検出部26は、路面候補視差dcの抽出対象を、ステレオカメラ10から最も近い路面候補視差dcの抽出位置に対応する行から、順次上方向(v座標の負の方向)にシフトさせながら、当該v座標に対応する路面候補視差dcを抽出する。路面検出部26は、抽出した路面候補視差dcを、対応するu座標及びv座標及びv座標に対応する平均路面候補視差davと共にメモリ23に格納してよい。
路面検出部26は、ステップS307において、数式(1)により算出された幾何推定路面視差dsが上述の所定の値以下となったとき、路面候補視差dcの抽出処理を終了して、図7のフローチャートのステップS201に戻る。所定の値は、例えば、1画素とすることができる。
このように、図8のフローチャートでは、路面候補視差dcを抽出するv座標の初期値をステレオカメラ10から見て近距離側の位置に対応するv0に設定し、順次遠距離側の路面候補視差dcを抽出する。ステレオカメラ10は、一般的に遠距離側よりも近距離側の方が、視差の検出精度が高い。このため、近距離側から遠距離側に順次路面候補視差dcを抽出することにより、検出される路面候補視差dcの精度を高めることができる。
上記路面候補視差dcを抽出する図8のフローチャートでは、縦方向の1つの座標ごとに路面候補視差dcを算出した。言い換えると、上記路面候補視差dcを抽出するフローチャートでは、縦方向に1画素の行ごとに路面候補視差dcを算出した。路面候補視差の算出の単位は、これに限られない。縦方向に複数の座標を纏めて路面候補視差dcを算出することも可能である。
ステップS301~S307の路面候補視差dcの抽出処理に続いて、路面検出部26は、図7のフローチャートのステップS202に進む。路面検出部26は、近距離側から遠距離側へ順次路面視差drを推定する際に、路面視差drに順次カルマンフィルタを適用する。そのため、始めに、路面検出部26は、カルマンフィルタの初期化を行う(ステップS202)。カルマンフィルタの初期値として、ステップS305で算出した、路面視差drの推定を行う行のうち最も下の行(v座標の値がv0の行)に対応する平均路面候補視差davの値を利用することができる。
路面検出部26は、以下のステップS203~S210の処理を、路面41の近距離側から遠距離側へ対象とする行を変えながら順次実行する(ステップS203)。
まず、路面検出部26は、第1視差画像内の対象とする行について、実空間における一定幅の範囲内に位置する路面候補視差dcから、路面視差drの値ごとの頻度を表すヒストグラムを生成する(ステップS204)。実空間における一定幅の範囲とは、道路の走行車線の幅を考慮した範囲である。一定幅は、例えば、2.5m又は3.5m等の値に設定できる。視差を取得する範囲は、例えば、図11において実線の枠線50により囲まれた範囲に初期設定される。一定幅は、予め物体検出装置20のメモリ23等に記憶される。視差を取得する範囲を、この範囲に限定することにより、路面検出部26が路面41以外の物体又は防音壁等の構造物を路面41と誤認して抽出する可能性が低減される。これにより、路面検出の精度を向上することができる。図11に実線で示した視差を取得する範囲は、後述するように、前方の道路上の状況に応じて初期設定された枠線50から順次変更されうる。
路面検出部26は、カルマンフィルタによる路面視差drの予測値に基づいて、対象とする行について路面視差drの取得範囲を設定する。路面視差drの取得範囲は、カルマンフィルタが次の行の路面視差drを予測する際に算出する信頼度に基づいて決定される範囲である。信頼度は、ガウス分布の分散σ2(σは路面視差drの標準偏差)で表現される。路面検出部26は、予測値±2σ等により路面視差drの取得範囲を求めることができる。路面検出部26は、ステップS204で生成した路面候補視差dcのヒストグラムから、カルマンフィルタに基づいて設定された路面視差drの取得範囲内で、頻度が最大となる路面視差drを抽出する。路面検出部26は、抽出した路面視差drを、対象とする行の路面視差drの観測値とする(ステップS205)。
次に、路面検出部26は、ステップS205で決定した路面視差drが、物体の視差等を含まず、正しい路面視差drであることを確認する(ステップS206)。路面検出部26は、現在処理中の行までの各行で検出された全ての路面視差drについて、路面視差drとv座標とを座標軸とするd-v座標空間上にマップしたd-v相関図を生成する。正しく路面41が検出されている場合、d-v相関図は、図12に破線で示すようにv座標の値が小さくなるにつれて、路面視差drも直線的に小さくなる。
一方、物体の視差を路面41として誤認識している場合、図13に示すように、d-v相関図は、物体を表す視差の部分で、縦方向の座標(v座標)の変化に関わらず視差dが略一定となる。一般に、物体は、路面41に対して垂直な部分を含むので、第1視差画像上では等距離の視差を多く含むように表示される。図13において、第1部分R1は、v座標の値の変化とともに視差dが減少している。第1部分R1は、路面41を正しく検出している部分である。第2部分R2は、v座標が変化しても視差dは一定である。第2部分R2は、物体を誤検出した部分と考えられる。路面検出部26は、視差dが略等しい値の行が所定数続いたとき、物体を誤認識していると判断することができる。
ステップS206で視差が正しい路面視差drではないと判断されると(ステップS206:No)、路面検出部26は、物体が誤検出されたと判断される行から、路面視差drを再探索する(ステップS207)。ステップS207において、路面検出部26は、v座標の値が変化しても視差dが変化しない行の領域で、路面視差ヒストグラムを再探索する。この領域で、ステップS205で決定された視差dよりも小さい視差の部分に、頻度が高い視差がある場合、路面検出部26は、この視差を正しい路面視差drの観測値であると判断することができる。
ステップS206において路面視差drが正しいと判断されたとき(ステップS206:Yes)、及び、ステップS207において、路面視差drの再探索が終了したとき、路面検出部26は、ステップS208に進む。ステップS208において、路面検出部26は、縦方向に1画素ずらした次の行のヒストグラムを生成する対象となる第1視差画像上の路面41の横方向の範囲を決定する。例えば、図11に示すように、路面41上に他車両42がある場合、路面検出部26は、他車両と重複する部分の路面41の正しい路面視差drを取得できない。路面視差drを取得できる路面41の範囲が狭くなると、路面検出部26は、正確な路面視差drを取得し難くなる。このため、路面検出部26は、図11に破線で示したように路面候補視差dcを取得する範囲を順次横方向に変化させる。具体的には、路面検出部26は、ステップS206で物体が含まれていると判断した場合、物体の横方向の何れの側に正しい路面視差drを表す路面候補視差dcが多いか検出する。次の行において、横方向のより多くの正しい路面視差drを表す路面候補視差dc含まれる側(図11において右側)に視差を取得する範囲を順次ずらす。
次に、路面検出部26は、ステップS205又はS207で決定した現在の行の路面視差drを用いて、カルマンフィルタを更新する(ステップS209)。すなわち、カルマンフィルタは、現在の行の路面視差drの観測値に基づいて、路面視差drの推定値を算出する。現在の行の推定値が算出されると、路面検出部26は、現在の行の路面視差drの推定値を過去のデータの一部として加え、次の行の路面視差drの推定値を算出する処理に用いる。路面41の高さは、ステレオカメラ10からの水平方向の距離Zに対して、急に上下に変化しないと考えられる。このため、本実施形態のカルマンフィルタを用いる推定では、現在の行の路面視差drの近くに次の行の路面視差drが存在すると推定される。このように、路面検出部26が現在の行の路面視差drの近くに次の行のヒストグラムを生成する視差の範囲を限定することにより、路面41以外の物体を誤検出する可能性が低減される。また、路面検出部26が実行する演算の量を減らして、処理を高速化することができる 。
ステップS209でカルマンフィルタにより推定された路面視差drが所定値より大きい場合、路面検出部26は、ステップS203に戻り、ステップS203~S209の処理を繰り返す。カルマンフィルタにより推定された路面視差drが所定値以下の場合(ステップS210)、路面検出部26は、次の処理(ステップS211)に進む。所定値は、例えば、1画素とすることができる。
ステップS211において、路面検出部26は、d-v相関図上で、縦方向の画像座標vと推定された路面視差drとの関係を、2本の直線で近似する。路面視差drは、ステレオカメラ10からの距離Zに関係する。v座標の値は、ステレオカメラ10からの距離Z及び路面高さYに関連する。したがって、v座標と路面視差drとの関係を2本の直線で近似することは、ステレオカメラ10からの距離と路面41の高さとの関係を、2本の直線で近似したものということができる。ステップS211の処理は、図14のフローチャートに詳しく説明される。
まず、図7のステップS210までの処理により、路面視差drとv座標との相関関係が得られる。例えば、v座標と路面視差drとの相関関係は、図15の破線のグラフ51のようにd-v座標空間で示される。実空間において、路面41が平坦で傾斜変化が無い場合、グラフ51は直線になる。しかしながら、現実の路面41は上り下り等の起伏の変化により、路面41の傾斜が変化しうる。路面41の傾斜が変化する場合、d-v座標空間のグラフ51は、直線で表現できない。路面41の傾斜の変化を3本以上の直線又は曲線で近似しようとすると、物体検出装置20の処理負荷が大きくなる。そこで、本願では2本の直線によりグラフ51を近似する。
図15に示すように、路面検出部26は、d-v座標空間における下側(近距離側)の推定された路面視差drを、第1直線52により最小二乗法により近似する(ステップS401)。第1直線52による近似は、物体検出装置20が物体検出の対象とする距離範囲の中で、所定の距離に対応する路面視差drまでの範囲で行うことができる。所定の距離は、物体検出装置20が物体検出の対象とする距離範囲の半分の距離とすることができる。例えば、物体検出装置20が、100m先までの物体を検出するように設計される場合、第1直線52はステレオカメラ10が測定可能な最も近い距離から50m先までの範囲で、最小二乗法によりグラフ51に最も近づくように決定されてよい。
次に、路面検出部26は、ステップS401で近似した第1直線52の表す路面41の傾斜が、路面41としてあり得る傾斜か否かを判定する(ステップS402)。第1直線52の傾斜角度は、実空間に変換すると平面になる。第1直線52の傾斜は、ステレオカメラ10の設置位置の路面高さY0及び基線長B等の条件に応じて定まる路面41のyz平面内の傾斜角度に対応する。路面検出部26は、第1直線52に対応する実空間の路面41の傾斜が、実空間における水平面を基準とする所定角度の範囲内にあるとき、あり得る傾斜であると判定することができる。路面検出部26は、第1直線52に対応する実空間の路面41の傾斜が、実空間における水平面を基準とする所定角度の範囲外にあるとき、あり得ない傾斜であると判定することができる。所定角度は、移動体30の走行環境を考慮して適宜設定することができる。
ステップS402において、第1直線52の傾斜が路面41としてあり得ない傾斜であると判定した場合(ステップS402:No)、路面検出部26は、路面41が平坦であることを仮定した理論路面に基づき第1直線52を決定する(ステップS403)。理論路面は、ステレオカメラ10の設置位置の路面高さY0、設置角度、及び基線長B等の設置条件に基づいて算出することができる。路面検出部26は、画像から算出した路面視差drが信用できないとき、理論路面の路面視差を採用する。例えば、路面検出部26は、路面41以外の物体又は構造物の視差を誤って路面視差drとして抽出した場合、路面41を非現実的な傾斜を有するものと判断して、誤りを排除できることがある。これにより、路面41以外の物体又は構造物の視差を路面視差drであると誤判定する可能性を低減することができる。
ステップS402において、路面検出部26が、第1直線52の傾斜が路面41としてあり得る傾斜であると判定した場合(ステップS402:Yes)、及び、ステップ403の後、路面検出部26はステップS404の処理に進む。ステップS404において、路面検出部26は、第2直線55の近似を開始する近似開始点53を決定する。路面検出部26は、第1直線52のv座標の最も小さい側(遠距離側)から大きい側(近距離側)へ、グラフ51との近似誤差を算出し、近似誤差が連続して所定値より小さくなる第1直線52上の座標を、近似開始点53とすることができる。あるいは、近似開始点53は、第1直線52のv座標の最も大きい側(近距離画側)から小さい側(遠距離側)へ、グラフ51との近似誤差を算出し、近似誤差が所定値より大きくなったときの第1直線52上の座標として決定してよい。近似開始点53のv座標は特定の値に固定されない。近似開始点53は、第1直線52上で物体検出装置20が物体検出の対象とする距離範囲の半分の距離よりも、ステレオカメラ10側に近い位置に相当するv座標の位置に設定されてよい。例えば、第1直線52が、測定可能な最も近い距離から50m先までの範囲で路面41を近似した場合、近似開始点53は、50mよりも手前の40mに相当するv座標の位置に設定されてよい。
ステップS404の後、路面検出部26は、ステップS405~S407を繰り返し実行する。図16に示すように、路面検出部26は、第1直線52との角度差を所定の角度範囲から選択された角度として、近似開始点53を起点とする第2直線55の候補である候補直線54を順次選択する(ステップS405)。所定の角度範囲は、測定対象の距離範囲内で道路の勾配が変化しうる角度として設定される。所定の角度範囲は、例えば±3度とすることができる。例えば、路面検出部26は、候補直線54の角度を、第1直線52の角度-3度から開始して、第1直線52の角度+3度まで、順次、0.001度ずつ加えた角度に変えることができる。
選択した候補直線54について、路面検出部26は、d-v座標空間においてグラフ51の近似開始点53よりも上側(遠距離側)の部分との誤差を計算する(ステップS406)。誤差の計算は、v座標に対する視差dの平均二乗誤差により計算できる。路面検出部26は、候補直線54ごとに計算した誤差を、メモリ23に格納してよい。
路面検出部26は、角度範囲の全ての候補直線54について誤差の計算が終了すると(ステップS407)、メモリ23に格納された誤差の中から最小の誤差を探索する。図17に示すように、路面検出部26は、最小の誤差を有する候補直線54を第2直線55として選択する(ステップS408)。
ステップS408で第2直線55が決定されると、路面検出部26は、第2直線55のグラフ51との誤差が所定値以内か否かを判定する(ステップS409)。所定値は、所望の路面推定の精度を得るために、適宜設定される。
ステップS409で、誤差が所定値以内の場合(ステップS409:Yes)、路面視差drは、第1直線52及び第2直線55を用いて近似される。
ステップS409で、誤差が所定値を超える場合(ステップS409:No)、路面検出部26は、第1直線52を上側(遠距離側)に延長して、近似結果を上書きする(ステップS410)。以上のようにして、路面視差drが2本の直線により近似される。
v座標に対する路面視差drが、2本の直線で近似されることにより、路面位置が、2本の直線で近似される。これによって、路面位置を曲線又は3本以上の直線で近似する場合に比べて、以降の計算に係る負荷が低減され、且つ、物体検出の処理が高速化される。また、路面を1本の直線で近似する場合に比べて、実際の路面との誤差が小さい。さらに、第2直線55の近似開始点53のv座標を所定の座標に固定しないことにより、近似開始点53の座標を予め固定した場合と比較して、実際の路面との近似の精度を向上することができる。
ステップS409で、誤差が所定値以内の場合(ステップS409:Yes)及びステップS410の後、路面視差drを直線近似する処理は終了し、図7のステップS212に戻る。
ステップS212において、第1視差画像から除去する路面視差drの閾値が決定される(ステップS212)。第1視差画像から除去する路面視差drの閾値は、後述する第1高さに相当する。第1高さは、次のステップS103の処理で路面視差drが除去されるように算出されうる。
次に、画像処理部22の処理は、図5のフローチャートに戻る。画像処理部22の不要視差除去部27は、路面検出部26から、d-v座標空間におけるv座標と路面視差drとの関係を2本の直線で近似した近似式を取得する。d-v座標空間におけるv座標と路面視差drとの関係を表す近似式から、実空間におけるステレオカメラ10の前方の距離Zと路面高さYとの関係が得られる。不要視差除去部27は、近似式に基づいて、(第2処理)を実行する(ステップS103)。第2処理は、実空間における路面41からの高さが第1高さ以下の被写体に対応する視差画素と、路面41からの高さが第2高さ以上の被写体に対応する視差画素とを第1視差画像から除去する処理である。これにより、不要視差除去部27は、図6に示した第1視差画像から、図18に示すような第2視差画像を生成する。図18は説明のために作図された図である。ステレオカメラ10から取得した画像に基づく実際の第2視差画像は、例えば、図19のようになる。図19では、黒白の濃淡により視差の大きさを表現している。
第1高さは、例えば15cmより大きく50cmよりも小さい値に設定しうる。第1高さを、15cmより小さい値に設定すると、不要視差除去部27は、路面41上の凹凸及び/又は近似式の誤差等に起因する、道路上の物体以外の被写体を検出し易くなる。その結果、検出誤り又は検出速度の低下が生じうる。また、第1高さを50cmよりも大きくすると、不要視差除去部27は、路面41上の子供及び/又は大きな障害物等を検出し損なう虞がある。
第2高さは、道路上を走行可能な車両の高さの上限値に基づいて設定されうる。道路上を走行可能な車両の高さは、交通法規等により規定される。例えば、日本の道路交通法では、トラックの高さは原則3.8m以下である。第2高さは、例えば、4mとしうる。第2高さを4m以上とすると、信号機及び情報表示板等を含む空中の構造物等の検出不要な物体を検出することがある。
不要視差を除去することにより、以下の物体を検出する物体検出処理(第3処理及び第4処理)に先立ち、不要視差除去部27は、路面41及び道路上の物体以外の被写体の視差を予め除去できる。これによって、物体を検出する精度が高くなる。また、不要な視差が除去されるので、道路上の物体に関連しない視差に関する演算量を低減できるので、処理速度を高速化することができる。したがって、本開示の物体検出装置20は、物体を検出する処理の性能を向上させることができる。
不要視差除去部27は、第2視差画像をクラスタリング部28に引き渡す。クラスタリング部28は、第2視差画像及び路面検出部26により算出された路面41の位置の近似式に基づいて、横方向の各u座標又はu座標の範囲について、物体に関連する物体視差を決定する処理(第3処理)を行う(ステップS104)。具体的には、クラスタリング部28は、第2視差画像の横方向のu座標の範囲ごとに、それぞれの視差に対する画素の数を表すヒストグラムを生成する。u座標の範囲は、横方向の画素の1つ又は複数を含む範囲である。
図20に示すように、クラスタリング部28は、第2視差画像から1つ又は複数の横方向の画素の幅Δuを有する縦長の領域を抽出する。縦長の領域は、その領域に物体に関連する物体視差が存在するか否かを判定し、且つ、物体視差に対応する距離情報を取得するために使用される。したがって、縦長の領域の横方向の幅Δuを細かくすれば、横方向の物体を検出する分解能が高くなる。図20では、説明のためにΔuの幅を広く表示しているが、Δuは1画素から数画素の幅とすることができる。縦長の領域を、第2視差画像の横方向の一方の端から他方の端に向けて順次取得して、以下で述べる処理を行うことにより、第2視差画像の横方向全体に渡り、物体視差の検出が行われる。
図21は、ヒストグラムの一例を示す図である。図21の横軸は、画素を単位として表される視差dである。視差dは、横軸の左側が大きく、右側に行くに従い小さくなる。視差dの最小値は、例えば1画素、又は、1画素より小さい値であってよい。視差が大きいほど、距離の分解能が細かく、視差が小さいほど距離の分解能が粗くなる。このため、図21のヒストグラムの横軸は、視差が大きい側で、より多くの視差dを纏めている。図21のヒストグラムの縦軸は、横軸の視差dを有する視差画素の出現数を表している。
図21には、さらに、各視差dが物体視差であるか否かを判定するための閾値を表す閾値曲線が示されている。視差dは、幅を有する視差の区間の代表値とすることができる。各視差dの画素の出現数が、閾値曲線を上回る場合、幅Δuの縦長の領域内に、同じ距離を表す視差画素が閾値曲線で規定される所定数以上含まれていることを意味する。図21において、斜線が付されたビン(柱状部)は、閾値曲線を上回っている。閾値曲線は、各視差dに対して、実空間におけるy方向の所定の高さに相当する出現数(画素数)に設定することができる。例えば、所定の高さは、50cmとすることができる。遠距離にあり視差が小さいとき、画像上で表示される物体は近距離にある物体に比べて小さく表示される。このため閾値曲線の縦軸の出現数の値は、視差dが小さいほど小さくなっている。クラスタリング部28は、出現数が視差dに応じた所定の閾値を上回る場合、当該画素に対応する視差dを物体視差deとして決定する。
次に、クラスタリング部28は、第2視差画像上の物体視差deの分布と、ステップS102で推定した路面41の位置に基づいて、物体視差deに関連付けられる高さ情報を算出する(ステップS105)。ステップS105の処理は、第3処理に含まれてよい。
具体的には、第1カメラ11又は第2カメラ12で取得される画像が図22のような部分を含む場合を想定する。第2視差画像中の他車両42の枠線61で囲まれた部分に対応する部分が図23に拡大して示される。
クラスタリング部28は、物体視差deが存在するu座標について、物体視差deの有する距離情報と、ステップS102で推定された路面位置とに基づいて、物体視差deが表す物体の距離に対応する路面推定位置を算出する。路面41上に物体が存在する場合、第2視差画像上でこの路面推定位置の上側に、物体視差deを有する視差画素が並ぶ。クラスタリング部28は、第2視差画像の視差画素をu座標の路面位置から、上方向に走査して、物体視差deを有する視差画素の縦方向(v座標方向)の分布を検出する。クラスタリング部28は、同じ物体視差deの視差画素が並んでいる数又は分布に基づいて、第2視差画像上の高さ情報を決定する。クラスタリング部28は、物体視差deの視差画素が縦方向において部分的に途切れている場合も、所定の判定基準に従い高さ情報を判定することができる。
クラスタリング部28は、1つ又は複数の座標を含む横方向の座標(u座標)の範囲ごとに、物体視差de及び高さ情報を関連付けて、メモリ23に記憶することができる。クラスタリング部28は、図24に一例を示すように、メモリ23に記憶された複数の物体視差deを、u座標及び視差dをそれぞれ横軸及び縦軸とする2次元空間(u-d座標空間)上の点群の分布として表現しうる。クラスタリング部28は、u座標ごとの物体視差deの情報を、グルーピング部29に引き渡す。
グルーピング部29は、u-d座標空間の物体視差deの情報をワールド座標系のx-z座標空間(実空間)上の点群に変換し、点群の纏まり(グループ)を抽出することにより、物体を検出する処理(第4処理)を実行する(ステップS106)。グルーピング部29は、所定の条件に従い近接する複数の点を纏めて点群の纏まりとして抽出する。図25から図32を用いて、グルーピング部29が実行する処理の一例を説明する。
図25は、道路の路面41上を走行する物体検出システム1を搭載した移動体30と、他車両42,43,44と、側壁45と、道路照明灯46とを含む。図25において、移動体30は、車両である。
図26は、グルーピング部29の動作を示すフローチャートである。ステップS501では、移動体30に搭載された物体検出装置20のグルーピング部29は、図24に示すようなu-d座標空間の複数の物体視差deを、図27に示すような実空間(x-z座標空間)の点群に変換する。図27では、x-z座標空間上の各点は物体の有無を示している。すなわち、点有りが物体有りを意味し、点無しが物体無しを意味する。図27は図25に対応しており、他車両42,43,44と、側壁45と、道路照明灯46とが点群として示されている。グルーピング部29は、点ごとに、クラスタリング部28で求めた物体視差deの情報及び高さの情報を紐付けて記憶する。ワールド座標系のx方向は移動体30の進行方向に垂直な方向である。ワールド座標系のz方向は、移動体30の進行方向に水平な方向である。
ステップS502では、グルーピング部29は、x-z座標空間上の点群から、z方向に連続して並ぶ点群を抽出する。例えば、グルーピング部29は、z方向の点が所定の数以上(実空間で所定の長さ以上)連続する場合に、該点群を抽出する。そして、グルーピング部29は、抽出した点群をx-z座標空間上の点群から削除する。図28は、グルーピング部29により抽出された、z方向に連続して並ぶ点群71及び点群72の一例を示している。図29は、グルーピング部29がx-z座標空間からz方向に連続して並ぶ点群71及び点群72を削除した後の、x-z座標空間上の点群の一例を示している。
z方向に連続して並ぶ点群は、移動体30の進行方向に平行と推測される物体の存在を示している。移動体30の進行方向に平行な物体とは、ガードレール及び側壁等の道路端の構造物、並びに他車両の車体の側面等である。図28の点群71は、図25における他車両44の車体の側面を示している。図28の点群72は、図25における側壁45の一部を示している。グルーピング部29は、ステップS502の処理を行うことにより、進行方向に平行な物体の検出率を低くすることができる。
ステップS503では、グルーピング部29は、x-z座標空間上の点群から、x方向に連続して並ぶ点群を抽出し、結合する。例えば、グルーピング部29は、x方向の点が所定の数以上(実空間で所定の長さ以上)連続する場合に、x方向に連続する点群を抽出する。そして、グルーピング部29は、x方向に連続する点群をz方向に結合し、一纏まりの点群を含む四角形の領域(結合領域)を決定する。図30は、グルーピング部29により決定された結合領域の一例を示している。なお、グルーピング部29は、結合領域のx方向の幅が閾値を超える場合には、結合領域を分割してよい。
結合領域は、移動体30の進行方向に垂直と推測される物体の存在を示している。移動体30の進行方向に垂直な物体とは、道路照明灯等の道路上の構造物、及び他車両の車体の後面等である。図30の結合領域73-1~73-4は、図25における側壁45の一部を示している。図30の結合領域74は、図25における他車両42の車体の後面を示している。図30の結合領域75は、図25における他車両43の車体の後面を示している。ただし、結合領域75は、移動体30から見て、他車両43の車体の後面のうち、他車両42によって隠されていない部分のみを示している。図30の結合領域76は、図25における他車両44の車体の後面を示している。図30の結合領域77は、図25における道路照明灯46を示している。このように、グルーピング部29は、ステップS501からS503の処理により、物体を検出することができる。
なお、z方向に連続して並ぶ点群の抽出及びx方向に連続して並ぶ点群の抽出は、任意の方法で行うことができる。図31を参照して、z方向に連続して並ぶ点群の抽出の一例を説明する。図中の1マスはx-z座標空間の量子化の単位である。ここでは、x方向のウインドウサイズを3マスとする。グルーピング部29は、ウインドウサイズ内に点が存在したらカウントを開始し、例えば図31Aに示すように連続してiマス以上点が存在す場合に、z方向に連続して並ぶ点群であると判定する。また、グルーピング部29は、図31Bに示すように、カウント開始後に点の存在しないウインドウがあっても、点の存在しないウインドウがz方向に連続してjマス以内であれば、点は連続しているものとみなしてよい。この場合には、グルーピング部29は、例えばz方向に連続してkマス以上点が連続しているとみなした場合に、z方向に連続して並ぶ点群であると判定する。
ステップS504では、グルーピング部29は、x-z座標空間上の各点に紐付けられた物体視差deに基づいて、移動体30に搭載されたステレオカメラ10から、移動体30の進行方向に垂直な物体(ステップS501からS503の処理により検出された物体)までの距離を決定する。例えばグルーピング部29は、ステレオカメラ10から、結合領域に含まれる一纏まりの点群のうちのx方向に最も長く連続する点群の各点までの距離の平均値を、移動体30の進行方向に垂直な物体までの距離として算出する。
また、ステップS504では、グルーピング部29は、x-z座標空間上の各点に紐付けられた高さ情報に基づいて、移動体30の進行方向に垂直な物体の高さを決定する。x-z座標空間上の点群のうち、高さ情報の示す高さが高い点は、空中物体等を示している可能性、又はノイズである可能性がある。そこで、グルーピング部29は、x-z座標空間上の点群のうち、高さ情報の示す高さが高い点を、物体の高さ判定に用いないようにしてよい。例えばグルーピング部29は、結合領域に含まれる一纏まりの点群の各点の高さを高さ順に並び替えて、所定番目の高さを移動体30の進行方向に垂直な物体の高さとしてよい。これにより、グルーピング部29は、移動体よりも高い空中物体等の物体を除いて、物体の高さを決定することができる。また、ノイズの影響を低減し、物体の高さを精度良く求めることができる。
また、グルーピング部29は、点群の纏まりのx方向の分布に基づいて、物体の横幅を決定してよい。すなわち、グルーピング部29は、結合領域のx方向の幅に基づいて、物体の横幅を決定してよい。したがって、グルーピング部29は、認識した物体のx-z座標空間上での位置、横幅、及び高さを認識することができる。
ステップS503で決定した結合領域が示す物体には、移動体と、該移動体よりも高い側壁等の静止物体とが含まれる場合がある。例えば図32に示すように、他車両47が高速道路を走行している場合には、他車両47と高速道路の防音壁48の双方が1つの結合領域として示される可能性がある。1つの結合領域が他車両47と高速道路の防音壁48の双方を示している場合には、x-z座標空間上の結合領域のx方向両端に対応する高さを比較すると、一方は他車両47の高さとなり、他方は防音壁48の高さとなる。そこで、ステップS504において、グルーピング部29は、結合領域のx方向両端からそれぞれ所定の割合(例えば、30%)に含まれる点群に紐付けられた高さの平均値を算出し、両端の高さの平均値の差が閾値(例えば、数m)を超える場合には、低いほうの値を物体の高さと決定してよい。すなわち、グルーピング部29は、検出した物体の両端の高さの差が閾値を超える場合には、低いほうを物体の高さと決定してよい。これにより、グルーピング部29は、移動体と、該移動体よりも高い静止物体とを、纏めて1つの物体として検出した場合であっても、移動体の高さを決定することができる。
画像処理部22は、グルーピング部29で認識した物体の位置、横幅及び高さの情報を、出力部24を介して、移動体30内の他の装置に出力することができる(ステップS107)。例えば、画像処理部22は、移動体30内の表示装置にこれらの情報を出力することができる。移動体30内の表示装置は、図33に示すように、第1カメラ11又は第2カメラ12の画像に、物体検出装置20から取得した情報に基づいて、他の車両42の画像を囲む枠線を表示してよい。図33において、枠線は、検出された物体の位置及び画像内に占める範囲を示す。
以上のように、本開示の物体検出装置20は、速い処理速度と高い精度の物体検出を可能にする。すなわち、本開示の物体検出装置20は、物体を検出する性能を向上することができる。また、物体検出装置20は、検出する対象の物体を特定の種類の物体に限定しない。物体検出装置20は、路面上に存在するあらゆる物体を検出することができる。物体検出装置20の画像処理部22は、第1処理、第2処理、第3処理及び第4処理を、第1視差画像以外の前記ステレオカメラ10により撮像された画像の情報を用いずに実行することができる。このため、物体検出装置20は、第1視差画像及び第2視差画像の処理に加えて、撮像した画像から別途物体を認識する処理を行わなくてよい。したがって、本開示の物体検出装置20は、物体認識に係る画像処理部22の処理負荷を低減することができる。このことは、本開示の物体検出装置20が、第1カメラ11又は第2カメラ12から直接得られた画像に対する画像処理と組み合わせることを排除しない。物体検出装置20は、テンプレートマッチング等の画像処理技術と組み合わせることも可能である。
上述の画像処理部22の実行する処理の説明において、本開示の理解を助けるため、種々の画像を用いた判定及び操作等を含む処理が説明された。これらの画像を用いた処理は、実際に画像を描画する処理を含まなくてよい。これらの画像を用いた処理と実質的に同じ内容の処理が、画像処理部22の内部の情報処理で実行される。
本開示に係る実施形態について、諸図面及び実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形又は修正を行うことが容易であることに注意されたい。したがって、これらの変形又は修正は本開示の範囲に含まれることに留意されたい。例えば、各構成部又は各ステップ等に含まれる機能等は論理的に矛盾しないように再配置可能であり、複数の構成部又はステップ等を1つに組み合わせたり、あるいは分割したりすることが可能である。本開示に係る実施形態について装置を中心に説明してきたが、本開示に係る実施形態は装置の各構成部が実行するステップを含む方法としても実現し得るものである。本開示に係る実施形態は装置が備えるプロセッサにより実行される方法、プログラム、又はプログラムを記録した記憶媒体としても実現し得るものである。本開示の範囲にはこれらも包含されるものと理解されたい。
本開示において「第1」及び「第2」等の記載は、当該構成を区別するための識別子である。本開示における「第1」及び「第2」等の記載で区別された構成は、当該構成における番号を交換することができる。例えば、第1レンズは、第2レンズと識別子である「第1」と「第2」とを交換することができる。識別子の交換は同時に行われる。識別子の交換後も当該構成は区別される。識別子は削除してよい。識別子を削除した構成は、符号で区別される。本開示における「第1」及び「第2」等の識別子の記載のみに基づいて、当該構成の順序の解釈、小さい番号の識別子が存在することの根拠に利用してはならない。
本開示において、x方向、y方向、及び、z方向は、説明の便宜上設けられたものであり、互いに入れ替えられてよい。本開示に係る構成は、x方向、y方向、及び、z方向を各軸方向とする直交座標系を用いて説明されてきた。本開示に係る各構成の位置関係は、直交関係にあると限定されるものではない。画像の座標を示すu座標及びv座標は、説明の便宜上設けられたものであり、互いに入れ替えられてよい。u座標及びv座標の原点及び方向は、本開示のものに限定されない。
上記実施形態において、ステレオカメラ10の第1カメラ11及び第2カメラ12は、
x方向に並んで位置していた。第1カメラ11及び第2カメラ12の配置はこれに限られない。第1カメラ11及び第2カメラ12は、路面に垂直な方向(y方向)又は路面41に対して傾いた方向に並んで位置してよい。ステレオカメラ10を構成するカメラの数は2つに限られない。ステレオカメラ10は、3つ以上のカメラを含んでよい。例えば、路面に水平方向に並ぶ2台のカメラ及び垂直方向に並ぶ2台のカメラの合計4台のカメラを用いて、より精度の高い距離情報を得ることも可能である。
上記実施形態において、ステレオカメラ10及び物体検出装置20は、移動体30に搭載されていた。ステレオカメラ10及び物体検出装置20は、移動体30に搭載されるものに限られない。例えば、ステレオカメラ10及び物体検出装置20は、交差点等に設置される路側機に搭載され路面を含む画像を撮像するように配置されてよい。例えば、路側機は、交差点で交差する道路の一方から接近する第1の車両を検出し、他方の道路上を走行して接近する第2の車両に対して第1の車両の接近を知らせる情報提供をすることができる。