(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、本開示を適用した画像処理装置の実施形態について、図面を参照して説明する。
【0012】
図1に示すように、本開示の第1の実施形態に係る画像処理装置10を含む撮像装置11は、移動体1に搭載され、移動体1の周辺および移動体1内部の撮像画像から対象物の状態を検出し、検出した対象物の状態に応じて、移動体1に実行させる挙動を決定するものである。
【0013】
移動体1は、例えば自動運転機能を備える車両、船舶、および航空機等を含んでよい。車両は、例えば自動車、産業車両、鉄道車両、生活車両、および滑走路を走行する固定翼機等を含んでよい。自動車は、例えば乗用車、トラック、バス、二輪車、およびトロリーバス等を含んでよい。産業車両は、例えば農業および建設向けの産業車両等を含んでよい。産業車両は、例えばフォークリフトおよびゴルフカート等を含んでよい。農業向けの産業車両は、例えばトラクター、耕耘機、移植機、バインダー、コンバイン、および芝刈り機等を含んでよい。建設向けの産業車両は、例えばブルドーザー、スクレーバー、ショベルカー、クレーン車、ダンプカー、およびロードローラ等を含んでよい。車両は、人力で走行するものを含んでよい。車両の分類は、上述した例に限られない。例えば、自動車は、道路を走行可能な産業車両を含んでよい。複数の分類に同じ車両が含まれてよい。船舶は、例えばマリンジェット、ボート、およびタンカー等を含んでよい。航空機は、例えば固定翼機および回転翼機等を含んでよい。
【0014】
対象物は、例えは、人、他の移動体、動物などを含んでよい。また、対象物としての人は、歩行者、自転車に乗っている人などを含んでよい。
【0015】
自動運転は、車両を運転するユーザ操作の一部または全部を自動化することを含んでよい。例えば、自動運転は、SAE(Society of Automotive Engineers)において定義されるレベル1ないし5を含んでよい。以下では、移動体1は、SAEで定義されるレベル4以上の全自動運転機能を備えるものとして説明する。
【0016】
撮像装置11は、撮像部12および画像処理装置10を含んで構成される。
【0017】
撮像部12は、例えば、移動体1に搭載された車載カメラである。撮像部12は、移動体1の周辺および内部の少なくとも一方を撮像した撮像画像を取得し、画像処理装置10に出力する。単一または複数の撮像部12が、撮像装置11には含まれる。例えば、撮像部12は、移動体1の前方、後方、左側方、および右側方、ならびに移動体1の車内に設けられ、それぞれ移動体1の前方、後方、左側方、および右側方の周辺、ならびに移動体1の車内を撮像する。
【0018】
撮像部12は、撮像光学系および撮像素子を含んで構成される。撮像光学系は、例えば、1個以上のレンズおよび絞りなどの光学部材を含む。撮像光学系が備えるレンズは、例えば、魚眼レンズなどの画角の広いレンズである。撮像光学系は、被写体像を撮像素子の受光面に結像させる。撮像素子は、例えば、CCD(Charge Coupled Device)イメージセンサまたはCMOS(Complementary Metal−Oxide Semiconductor)イメージセンサなどを含む。撮像素子は、受光面上に結像された被写体像を撮像して撮像画像を生成する。
【0019】
画像処理装置10は、記憶部13、コントローラ14、および出力部15を含んで構成される。
【0020】
記憶部13は、例えば、RAM(Random Access Memory)およびROM(Read Only Memory)など、任意の記憶デバイスを含む。記憶部13は、コントローラ14を機能させる多様なプログラム、およびコントローラ14が用いる多様な情報を記憶する。
【0021】
記憶部13は、例えば、後述する、コントローラ14が検出する対象物の状態の履歴を対象物毎に記憶する。なお、対象物の状態の履歴とは、例えば、異なる検出時期における同一の対象物の状態を時系列に並べた情報である。
【0022】
コントローラ14は、1以上のプロセッサおよびメモリを含む。プロセッサは、特定のプログラムを読み込ませて特定の機能を実行する汎用のプロセッサ、および特定の処理に特化した専用のプロセッサを含んでよい。専用のプロセッサは、特定用途向けIC(ASIC;Application Specific Integrated Circuit)を含んでよい。プロセッサは、プログラマブルロジックデバイス(PLD;Programmable Logic Device)を含んでよい。PLDは、FPGA(Field−Programmable Gate Array)を含んでよい。コントローラ14は、1つまたは複数のプロセッサが協働するSoC(System−on−a−Chip)、およびSiP(System In a Package)のいずれかであってもよい。
【0023】
コントローラ14は、撮像部12から撮像画像を取得する。コントローラ14は、撮像画像から対象物の像を検出する。なお、コントローラ14は、パターンマッチングなどの従来公知の方法によって対象物の像を検出してよい。コントローラ14は、撮像画像から対象物の像を検出したとき、当該対象物の状態を検出する。なお、コントローラ14は、パターンマッチングなどの従来公知の方法によって対象物の状態を検出する。
【0024】
コントローラ14は、対象物の状態を検出すると、当該状態を記憶部13に記憶させる。コントローラ14は、任意の時期に撮像された撮像画像から検出された対象物が、新規に検出された対象物であるとき、当該対象物に対する状態の履歴中の最初の状態として、記憶部13に記憶させる。コントローラ14は、以前の撮像画像中に検出された対象物の状態を検出するとき、新たに検出した当該対象物の状態を、当該対象物に対する状態の履歴に含めるように、記憶部13に記憶させる。
【0025】
状態の履歴内への記憶は、多様な条件に応じて行ってよい。例えば、コントローラ14は、1秒毎などの一定時間毎に、新たに検出した対象物の状態を、状態の履歴に含めるように記憶部13に記憶させてよい。また、例えば、コントローラ14は、対象物の状態に変化があるか否かを判別し、変化があるときに、新たに検出した対象物の状態を、状態の履歴に含めるように記憶部13に記憶させてよい。
【0026】
コントローラ14は、状態の履歴への記憶とともに、当該履歴に関連付けて、自身の移動体1(以下の説明において、「自身」と呼ぶ。)の挙動を検出し記憶部13に移動体1の挙動の履歴として含めるように記憶させてよい。なお、コントローラ14は、移動体1の各種制御系にアクセスし、移動体1の挙動を検出する。コントローラ14は、移動体1の挙動として、例えば、前進、後退、停止、減速、進路変更、照明点灯、パッシング、ウィンカ点滅、クラクション鳴動、外部表示および現状維持などを検出する。
【0027】
コントローラ14は、記憶部13に記憶されていた状態の履歴に基づいて、移動体1に実行させる挙動を決定する。コントローラ14は、多様な方法により、状態の履歴に基づいて、挙動を決定してよい。
【0028】
例えば、コントローラ14は、
図2に示すような、テーブルと、状態の履歴を比較することにより、移動体1の挙動を決定する。テーブルは、あらかじめ想定した多様な対象物の状態の多様な履歴毎に移動体1の取るべき挙動を予め対応づけした対応関係を示す。なお、テーブルの「状態の履歴」におけるt(0)は、現在の状態を示す。また、t(−1)は、t(0)より過去の状態であり、t(0)に対して特定の時間間隔が定められていなくてよい。また、t(−2)は、t(−1)より過去の状態であり、t(−1)に対して特定の時間間隔が定められていなくてよい。
【0029】
コントローラ14は、例えば、自身が車両であって、走行中である場合、前方の複数の児童を検出すると、当該児童を対象物として、履歴の作成のために状態を蓄積する。コントローラ14は、最新の状態において複数の児童が道路の両側に分かれている場合であっても、児童の状態の履歴に応じて、異なる挙動を決定する。例えば、元々道路の片側にいた複数の児童(符号“t(−2)”参照)の一部が他方に移動(符号“t(−1)”参照)して、道路の両側に分かれた(符号“t(0)”参照)という状態の履歴である場合、コントローラ14は、他の児童も道路を横断する可能性が高いと仮定として、減速を挙動として決定する。また、例えば、元々児童が道路の両側に分かれてい続ける(符号“t(−2)”、“t(−1)”、“t(0)”参照)場合、コントローラ14は、元々別々のグループに属していた児童達であると仮定して、走行の維持を挙動として決定する。
【0030】
また、コントローラ14は、例えば、自身が車両であって、駐車場内で駐車場所を探索中である場合、周囲の車両および人を対象物として、履歴の作成のために状態を蓄積する。コントローラ14は、最新の状態において周囲の人が乗車状態であっても、周囲の人および車両の状態の履歴に応じて、異なる挙動を決定する。例えば、歩行中の周囲の人が(符号“t(−2)”参照)が、車両に乗込み(符号“t(−1)”参照)、乗車状態(符号“t(0)”参照)に移行するという履歴である場合、コントローラ14は、当該人が出庫する可能性が高いと仮定して、待機を挙動として決定する。また、例えば、走行中の周囲の車両(符号“t(−2)”参照)が、駐車場所に停車(符号“t(−1)”参照)し、車内に人が乗車状態(符号“t(0)”参照)に移行するという履歴である場合、コントローラ14は、駐車直後であると仮定して、当該場所からの通過を挙動として決定する。
【0031】
また、コントローラ14は、例えば、自身が車両であって、駐車状態から出庫待機中である場合、周囲の車両を対象物として、履歴の作成のために状態を蓄積する。コントローラ14は、最新の状態において周囲の車両が近辺で一時停止状態であっても、周囲の車両の状態の履歴に応じて、異なる挙動を決定する。例えば、出庫中の周囲の車両(符号“t(−2)”参照)が、走行を開始して(符号“t(−1)”参照)、自身の近辺で一時停止状態(符号“t(0)”参照)に移行するという履歴である場合、コントローラ14は、当該車両が走行車両であると仮定して、待機を挙動として決定する。また、例えば、走行中の周囲の車両(符号“t(−2)”参照)が、自身の近辺に接近して(符号“t(−1)”参照)、近辺で一時停止状態(符号“t(0)”参照)に移行するという履歴である場合、コントローラ14は、当該車両が自身の現在の駐車場所への駐車を望んでいると仮定して、出庫を挙動として決定する。
【0032】
また、コントローラ14は、例えば、自身がタクシーであって、空車状態で走行中である場合、前方の人を対象物として、履歴の作成のために状態を蓄積する。コントローラ14は、最新の状態において前方の人が自身に接近していても、前方の人の状態の履歴に応じて、異なる挙動を決定する。例えば、最新の状態において前方の人が自身に接近中であっても、前方の人の状態の履歴に応じて、異なる挙動を決定する。例えば、挙手または自身の方を向く前方の人(符号“t(−2)”参照)が、自身に接近し続けいている(符号“t(−1)”、“t(0)”参照)という履歴である場合、コントローラ14は、乗車希望であると仮定して、当該人の手前までの前進を挙動として決定する。また、例えば、挙手もせず且つ自身の方を向かない前方の人(符号“t(−2)”参照)が、自身に接近し続けいている(符号“t(−1)”、“t(0)”参照)という履歴である場合、コントローラ14は、自身に関係ない行動をしていると仮定して、通過を挙動として決定する。
【0033】
また、コントローラ14は、例えば、自身がタクシーであって、空車状態で走行中である場合、前方の人を対象物として、履歴の作成のために状態を蓄積する。コントローラ14は、最新の状態において前方の人が自身に接近していない場合であっても、前方の人の状態の履歴に応じて、異なる挙動を決定する。例えば、挙手または自身の方を向く前方の人(符号“t(−2)”参照)が、自身に接近していない(符号“t(−1)”、“t(0)”参照)という履歴である場合、コントローラ14は、乗車希望であると仮定して、当該人の手前への前進を挙動として決定する。また、例えば、挙手もせず且つ自身の方を向かない前方の人(符号“t(−2)”参照)が、自身に接近していない(符号“t(−1)”、“t(0)”参照)という履歴である場合、コントローラ14は、自身に関係ない行動をしていると仮定して、通過を挙動として決定する。
【0034】
また、コントローラ14は、例えば、自身がバスであって、停留所で停車中である場合、周囲の人を対象物として、履歴の作成のために状態を蓄積する。コントローラ14は、最新の状態において周囲の人が走行中であっても、周囲の人の状態の履歴に応じて、異なる挙動を決定する。例えば、自身の遠くにいる人(符号“t(−2)”参照)が自身を注視(符号“t(−1)”参照)して、走行(符号“t(0)”参照)するという履歴である場合、コントローラ14は、自身への乗車を要望していると仮定して、ドアの開放を挙動として決定する。また、例えば、自身の遠くにいる人(符号“t(−2)”参照)が自身を注視せず(符号“t(−1)”参照)に、走行(符号“t(0)”参照)するという履歴である場合、コントローラ14は、自身の周囲をジョギング中であると仮定して、出発を挙動として決定する。
【0035】
また、コントローラ14は、例えば、自身がバスであって、停留所で停車中である場合、車内の人を対象物として、履歴の作成のために状態を蓄積する。コントローラ14は、最新の状態において車内の人が降車口から少し離れた場所にいるとしても、車内の人の状態の履歴に応じて、異なる挙動を決定する。たとえば、座席を立った車内の人(符号“t(−2)”参照)が降車口に近づき(符号“t(−1)”参照)ながらも、降車口から離れた場所に位置(符号“t(0)”参照)するという履歴である場合、コントローラ14は、降車の意思があると仮定して、ドアの開放待機を挙動として決定する。また、例えば、車内の人が降車口から少し離れた場所にい続けている(符号“t(−2)”、“t(−1)”、“t(0)”参照)と言う履歴である場合、コントローラ14は、降車の意思が無いと仮定して、出発を挙動として決定する。
【0036】
コントローラ14は、記憶部13に記憶された状態の履歴とともに、移動体1の挙動の履歴にも基づいて、移動体1に実行させる挙動を決定してよい。コントローラ14は、多様な方法により、状態および挙動の履歴に基づいて、これから実行すべき挙動を決定してよい。例えば、コントローラ14は、
図3に示すような、テーブルと、状態および挙動の履歴を比較することにより、移動体1の挙動を決定する。
【0037】
コントローラ14は、例えば、自身が車両であって、走行中である場合、前方の横断歩道脇の人を検出すると、当該人を対象物として、履歴の作成のために状態および過去の自身の挙動を蓄積する。コントローラ14は、最新の状態において横断歩道脇の人が横断停止中であっても、当該人の状態の履歴および自身の挙動の履歴に応じて、異なる挙動を決定する。例えば、横断歩道脇の人が、以前から横断を停止しており(符号“t(−2)”、“t(−1)”、“t(0)”参照)、かつ以前の自身の挙動において、前方の歩行者に対する呼びかけの挙動として予め定められている全挙動を実行済みである場合、コントローラ14は、対象物の意図が不明と判別して、自動運転解除を挙動として決定する。なお、呼びかけの挙動として予め定められている挙動とは、例えば、パッシング、クラクション、およびハザードなどである。また、例えば、横断歩道脇の人が、以前から横断を停止しており(符号“t(−2)”、“t(−1)”、“t(0)”参照)、かつ以前の自身の挙動において、前方の歩行者に対する呼びかけの挙動として予め定められている全挙動を実行していない場合、コントローラ14は、未実行の呼びかけを挙動として決定する。また、例えば、横断歩道脇の人が、横断停止後、一旦横断後に再び横断停止しており(符号“t(−2)”、“t(−1)”、“t(0)”参照)、かつ前方の歩行者に対する呼びかけの挙動として予め定められている全挙動を実行済みである場合、コントローラ14は、対象物に横断の意図が少しあると仮定して、実行済みの呼びかけのいずれかを、挙動として決定する。また、例えば、横断歩道脇の人が、横断停止後、一旦横断後に再び横断停止しており(符号“t(−2)”、“t(−1)”、“t(0)”参照)、かつ以前の自身の挙動において、前方の歩行者に対する呼びかけの挙動として予め定められている全挙動を実行していない場合、コントローラ14は、未実行の呼びかけを挙動として決定する。
【0038】
コントローラ14は、決定した自身の挙動を指示する情報の出力後に、新たに取得した撮像画像において、対象物の新たな状態に基づいて、テーブルを更新してよい。コントローラ14は、対象物の新たな状態に対して自身が取るべき最適な挙動が、テーブルに記憶されている実行させる挙動と異なる場合に、実行させる挙動を当該最適な挙動に更新してよい。
【0039】
出力部15は、コントローラ14が決定した、自身の挙動を指示する情報を、移動体1に出力する。なお、当該情報は、移動体1の各挙動を実行する各制御系に取得され、当該情報が示す挙動が実行される。
【0040】
次に、本実施形態においてコントローラ14が実行する、状態の履歴に基づく挙動決定処理について、
図4のフローチャートを用いて説明する。挙動決定処理は、周期的に開始する。
【0041】
ステップS100において、コントローラ14は、撮像部12から取得した最新の撮像画像の中に、現在の自身の状況に対して検出すべき対象物が存在するか否かを判別する。検出すべき対象物が存在しない場合、挙動決定処理は終了する。検出すべき対象物が存在する場合、プロセスはステップS101に進む。
【0042】
ステップS101では、コントローラ14は、ステップS100において存在すると判別された対象物の状態を検出する。状態を検出すると、プロセスはステップS102に進む。
【0043】
ステップS102では、コントローラ14は、ステップS101において検出した状態を、記憶部13に記憶させ、状態の履歴に蓄積させる。状態を蓄積すると、プロセスはステップS103に進む。
【0044】
ステップS103では、コントローラ14は、記憶部13から、状態の履歴、および挙動の履歴を読出す。履歴を読出すと、プロセスはステップS104に進む。
【0045】
ステップS104では、コントローラ14は、ステップS103で読出した状態の履歴および挙動の履歴と、記憶部13に記憶されたテーブルを比較する。テーブルの比較を開始すると、プロセスはステップS105に進む。
【0046】
ステップS105では、コントローラ14は、ステップS103で読出した状態の履歴および挙動の履歴と同じ履歴が、テーブルに存在するか否かを判別する。テーブルに同一の履歴が無い場合、挙動決定処理は終了する。テーブルに同一の履歴がある場合、プロセスはステップS106に進む。
【0047】
ステップS106では、コントローラ14は、ステップS105において判別した同一の履歴に対して対応づけられた挙動を、実行すべき挙動として決定する。また、コントローラ14は、決定した挙動を出力部15を介して、移動体1に出力させる。移動体1への出力後、プロセスはステップS107に進む。
【0048】
ステップS107では、コントローラ14は、ステップS106で決定した挙動を、記憶部13に記憶させ、挙動の履歴に蓄積させる。挙動を蓄積させると、挙動決定処理は終了する。
【0049】
次に、本実施形態においてコントローラ14が実行する、挙動更新処理について、
図5のフローチャートを用いて説明する。挙動更新処理は、挙動決定処理において挙動を決定した次の挙動決定処理の実行時に、当該挙動決定処理と並行するように、開始する。
【0050】
ステップS200において、コントローラ14は、撮像部12から取得した最新の撮像画像において、最新の挙動決定処理のステップS100において検出した対象物の状態を検出する。状態を検出すると、プロセスはステップS201に進む。
【0051】
ステップS201では、コントローラ14は、最新の挙動決定処理のステップS106において挙動の決定に用いた履歴が次に起きると仮定した状態と、ステップS200において検出した状態とを比較する。比較を開始すると、プロセスはステップS202に進む。
【0052】
ステップS202では、コントローラ14は、ステップS201の比較において、仮定した状態と、新たに検出した状態が不一致であるか否かを判別する。不一致でない、すなわち一致する場合、挙動更新処理は終了する。不一致である場合、プロセスはステップS203に進む。
【0053】
ステップS203では、コントローラ14は、テーブル内で履歴に対応づけられた実行させる挙動を、最新の挙動決定処理のステップS106において挙動の決定に用いた履歴が次に起きると仮定した状態に対して取るべき挙動に書換えさせることにより、挙動を更新する。挙動を更新すると、挙動更新処理は終了する。
【0054】
以上のような構成の本実施形態の画像処理装置10では、移動体1の挙動の決定を、対象物の履歴に基づかせている。このような構成により、画像処理装置10は、任意の一時点における対象物の状態では一意に特定できなかった対象物の未来の状態の推定精度を向上し得る。したがって、画像処理装置10は、より適切な判断材料を用いて移動体1の挙動を決定するので、より適切に全自動運転を行わせしめ、交通の利便性を向上させる。
【0055】
また、本実施形態の画像処理装置10は、一定時間毎に、新たに検出した対象物の状態を状態の履歴に含める。したがって、画像処理装置10は、対象物の状態の記憶を、撮像した全撮像画像に行わないので、低容量の記憶部13の適用を許容する。
【0056】
また、本実施形態の画像処理装置10は、対象物の状態に変化があったときに、新たに検出した対象物の状態を状態の履歴に含める。したがって、画像処理装置10は、対象物の状態の記憶を撮像した全撮像画像に行わず、かつ一定時間毎に必ずしも一定時間毎に記憶するわけでもないので、さらに低容量の記憶部13の適用を許容する。
【0057】
また、本実施形態の画像処理装置10は、移動体1の挙動の決定に、挙動の履歴にも基づかせている。このような構成により、画像処理装置10は、対象物の未来の状態の推定精度をさらに向上し得る。したがって、画像処理装置10は、いっそう適切な判断材料を用いて移動体1の挙動を決定するので、いっそう適切に全自動運転を行わせしめ、交通の利便性を向上させる。
【0058】
また、本実施形態の画像処理装置10では、移動体1の挙動を指示する情報の出力後に、新たに検出した該対象物の状態に基づいて、前記テーブルを更新可能である。記憶部13に記憶させているテーブルでは、状態の履歴に基づいて今後の対象物の状態を特定の状態であると仮定し、当該特定の状態に適した挙動が予め対応づけられている。しかし、今後の対象物の状態は、走行地域におけるローカルルールなどにより、仮定された状態とは異なることも生じ得る。このような事象に対して、上述の構成の画像処理装置10は、テーブルを更新可能なので、履歴に対応づけるべき挙動の最適化を図り得る。
【0059】
本発明を諸図面や実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形や修正を行うことが容易であることに注意されたい。従って、これらの変形や修正は本発明の範囲に含まれることに留意されたい。